diff --git a/bazaar/Scatter/Chart.iml b/bazaar/Scatter/Chart.iml index 58644c3c4..94edf9411 100644 --- a/bazaar/Scatter/Chart.iml +++ b/bazaar/Scatter/Chart.iml @@ -1,3 +1,4 @@ +PREMULTIPLIED IMAGE_ID(cursor1) IMAGE_BEGIN_DATA diff --git a/bazaar/Scatter/Scatter.cpp b/bazaar/Scatter/Scatter.cpp index f3fb2c4a5..7b2204d52 100644 --- a/bazaar/Scatter/Scatter.cpp +++ b/bazaar/Scatter/Scatter.cpp @@ -1,1083 +1,1200 @@ -#include "Scatter.h" - -#define IMAGECLASS ChartImg -#define IMAGEFILE -#include - - -Scatter& Scatter::SetColor(const class::Color& _color) -{ - graphColor=_color; - return *this; -} - -Scatter& Scatter::SetTitle(const String& _title) -{ - title=_title; - return *this; -} -Scatter& Scatter::SetTitleFont(const Font& fontTitle) -{ - titleFont=fontTitle; - return *this; -} -Scatter& Scatter::SetTitleColor(const class::Color& colorTitle) -{ - titleColor=colorTitle; - return *this; -} -void Scatter::SetLabels(const WString& _xLabel, const WString& _yLabel, const WString& _yLabel2) -{ - xLabel=_xLabel; - yLabel=_yLabel; - yLabel2=_yLabel2; -} -Scatter& Scatter::SetLabelX(const WString& _xLabel) -{ - xLabel=_xLabel; - return *this; -} -Scatter& Scatter::SetLabelY(const WString& _yLabel) -{ - yLabel=_yLabel; - return *this; -} -Scatter& Scatter::SetLabelY2(const WString& _yLabel) -{ - yLabel2=_yLabel; - return *this; -} -Scatter& Scatter::SetLabelsFont(const Font& fontLabels) -{ - labelsFont=fontLabels; - return *this; -} -Scatter& Scatter::SetLabelsColor(const class::Color& colorLabels) -{ - labelsColor=colorLabels; - return *this; -} -Scatter& Scatter::SetPlotAreaPoz(const int& poz_x, const int& poz_y) -{ - px=poz_x; - py=poz_y; - return *this; -} -Scatter& Scatter::H_Border(const int& poz_x) -{ - if(poz_x>=0) px=poz_x; - return *this; -} -Scatter& Scatter::V_Border(const int& poz_y) -{ - if(poz_y>=0) py=poz_y; - return *this; -} - -Scatter& Scatter::SetPlotAreaColor(const class::Color& p_a_color) -{ - plotAreaColor=p_a_color; - return *this; -} -Scatter& Scatter::SetAxisColor(const class::Color& axis_color) -{ - axisColor=axis_color; - return *this; -} -Scatter& Scatter::SetAxisWidth(const int& axis_width) -{ - axisWidth=axis_width; - return *this; -} -Scatter& Scatter::SetGridColor(const class::Color& grid_color) -{ - gridColor=grid_color; - return *this; -} -Scatter& Scatter::SetGridWidth(const int& grid_width) -{ - gridWidth=grid_width; - return *this; -} -Scatter& Scatter::ShowHGrid(const bool& show) -{ - drawHGrid=show; - return *this; -} -Scatter& Scatter::ShowVGrid(const bool& show) -{ - drawVGrid=show; - return *this; -} -Scatter& Scatter::ShowLegend(const bool& show) -{ - showLegend=show; - return *this; -} -Scatter& Scatter::SetLegendWeight(const int& weight) -{ - legendWeight=weight; - return *this; -} -Scatter& Scatter::SetAntialiasing(const bool& aa) -{ - antialiasing=aa; - return *this; -} -void Scatter::SetDrawXReticle(bool set) -{ - drawXReticle = set; -} -void Scatter::SetDrawYReticle(bool set) -{ - drawYReticle = set; -} -void Scatter::SetDrawY2Reticle(bool set) -{ - drawY2Reticle = set; -} -void Scatter::DrawLegend(Draw& w,const int& scale) const -{ - Vector L; - L.Append(vLegend); - L.Append(vFLegend); - Vector Thick; - Thick.Append(vPThickness); - Thick.Append(vFThickness); - Vector LC; - LC.Append(vPColors); - LC.Append(vFColors); - Vector LW; - LW.Append(vPWidth); - Vector MS; - MS.Append(vMarkStyles); - Vector MC; - MC.Append(vMarkColors); - - int NMR=int((GetSize().cx-2*px)/legendWeight);//max number of labels per row - if (NMR>0) - { - int N=L.GetCount();//number of labels - int Nc;//number of complete rows - int LCR;//number of labels on complete row - int R;//number of remaining labels on incomplete row - if(NMR>N) {Nc=0; LCR=0; R=N;} - else if (NMR==N) {Nc=1; LCR=N; R=0;} - else {Nc=N/NMR; LCR=NMR; R=N%NMR;} - for(int j=0;j<=Nc;j++) - { - int start=N-(j+1)*LCR; - int end=N-j*LCR; - if (j==Nc) {start=0; end=R;} - for(int i=start;i & points,const String& legend,const bool& join, const class::Color& pcolor, const int& width, const int& thickness) -{ - vPointsData.AddPick(points); - vJoin.Add(join); - vSmooth.Add(false); - vPColors.Add(pcolor); - vPWidth.Add(width); - vPThickness.Add(thickness); - vLegend.Add(legend); - vMarkColors.Add(pcolor); - vShowMark.Add(true); - vMarkStyles.Add(CIRCLE); - vPPrimaryY.Add(true); - - Refresh(); -} - -void Scatter::AddPoint(const int& j, const XY & point, const bool& refresh) -{ - if(IsValid(j)) - { - vPointsData[j].Add(point); - if(refresh) Refresh(); - } -} -void Scatter::InsertPoint(const int& j, const int& i, const XY & point) -{ - if(IsValid(j)) - { - if(i>=0 && vPointsData[j].GetCount()>=i) - { - vPointsData[j].Insert(i,point); - Refresh(); - } - } -} -void Scatter::RemovePoint(const int& j, const int& i) -{ - if(IsValid(j)) - { - if(i>=0 && vPointsData[j].GetCount()>i) - { - vPointsData[j].Remove(i); - Refresh(); - } - } -} -void Scatter::SetData(const int& j, const int& i, const XY & point) -{ - if(IsValid(j)) - { - if(i>=0 && vPointsData[j].GetCount()>i) - { - vPointsData[j][i]=point; - Refresh(); - } - } -} - -void Scatter::SetData(const int& j, Vector & points) -{ - if(IsValid(j)) - { - vPointsData[j]<<=points; - Refresh(); - } -} -void Scatter::SetDataColor(const int& j, const class::Color& pcolor) -{ - if(IsValid(j)) - { - vPColors[j]=pcolor; - Refresh(); - } -} -void Scatter::SetFunctColor(const int& j, const class::Color& fcolor) -{ - if(IsValid(j)) - { - vFColors[j]=fcolor; - Refresh(); - } -} -Acolor Scatter::GetDataColor(const int& j) const -{ - if(IsValid(j)) - { - return vPColors[j]; - } - Exclamation("Invalid series index!"); - return Null; -} - -Acolor Scatter::GetFunctColor(const int& j) const -{ - if(IsValid(j)) - { - return vFColors[j]; - } - Exclamation("Invalid function index!"); - return Null; -} - -void Scatter::SetDataThickness(const int& j, const int& thick_dots) -{ - if(IsValid(j)) - { - vPThickness[j]=thick_dots; - Refresh(); - } -} - -void Scatter::SetFunctThickness(const int& j, const int& thick_dots) -{ - if(IsValid(j)) - { - vFThickness[j]=thick_dots; - Refresh(); - } -} -int Scatter::GetDataThickness(const int& j) const -{ - if(IsValid(j)) - { - return vPThickness[j]; - } - Exclamation("Invalid series index!"); - return -1; -} - -int Scatter::GetFunctThickness(const int& j) const -{ - if(IsValid(j)) - { - return vFThickness[j]; - } - Exclamation("Invalid series index!"); - return -1; -} - -void Scatter::SetMarkWidth(const int& j, const int& width_dots) -{ - if(IsValid(j)) - { - vPWidth[j]=width_dots; - Refresh(); - } -} - -int Scatter::GetMarkWidth(const int& j) const -{ - if(IsValid(j)) - { - return vPWidth[j]; - } - Exclamation("Invalid series index!"); - return -1; -} - -void Scatter::SetMarkStyle(const int& j, MarkStyle noStyle) -{ - if(IsValid(j)) - { - vMarkStyles[j]=noStyle; - Refresh(); - } -} - -int Scatter::GetMarkStyle(const int& j) const -{ - if(IsValid(j)) - { - return vMarkStyles[j]; - } - Exclamation("Invalid series index!"); - return -1; -} - -void Scatter::SetMarkColor(const int& j, const Acolor& mcolor) -{ - if(IsValid(j)) - { - vMarkColors[j]=mcolor; - Refresh(); - } -} - -Acolor Scatter::GetMarkColor(const int& j) const -{ - if(IsValid(j)) - { - return vMarkColors[j]; - } - Exclamation("Invalid series index!"); - return Null; -} - -void Scatter::SetShowMark(const int& j, const bool& show) -{ - if(IsValid(j)) - { - vShowMark[j]=show; - Refresh(); - } -} - -bool Scatter::IsMarkShow(const int& j) const throw (Exc) -{ - if(!IsValid(j)) throw (Exc("Invalid series index!")); - return vShowMark[j]; -} - -void Scatter::SetJoin(const int& j, const bool& join) -{ - if(IsValid(j)) - { - vJoin[j]=join; - Refresh(); - } -} - -bool Scatter::IsJoined(const int& j) const throw (Exc) -{ - if(!IsValid(j)) throw (Exc("Invalid series index!")); - - return vJoin[j]; -} - -void Scatter::SetSmooth(const int& j, const bool& smooth) -{ - if(IsValid(j)) - { - vSmooth[j]=smooth; - Refresh(); - } -} - -bool Scatter::IsSmooth(const int& j) const throw (Exc) -{ - if(!IsValid(j)) throw (Exc("Invalid series index!")); - - return vSmooth[j]; -} - -void Scatter::SetDataPrimaryY(const int& j, const bool& primary) -{ - if(IsValid(j)) - { - vPPrimaryY[j]=primary; - Refresh(); - } -} - -bool Scatter::IsDataPrimaryY(const int& j) const throw (Exc) -{ - if(!IsValid(j)) throw (Exc("Invalid series index!")); - - return vPPrimaryY[j]; -} - -void Scatter::SetFunctPrimaryY(const int& j, const bool& primary) -{ - if(IsValid(j)) - { - vFPrimaryY[j]=primary; - Refresh(); - } -} - -bool Scatter::IsFunctPrimaryY(const int& j) const throw (Exc) -{ - if(!IsValid(j)) throw (Exc("Invalid series index!")); - - return vFPrimaryY[j]; -} - -void Scatter::RemoveSeries(const int& j) -{ - if (IsValid(j)) - { - vPointsData.Remove(j); - vJoin.Remove(j); - vSmooth.Remove(j); - vPColors.Remove(j); - vPWidth.Remove(j); - vPThickness.Remove(j); - vLegend.Remove(j); - vMarkColors.Remove(j); - vShowMark.Remove(j); - vMarkStyles.Remove(j); - vPPrimaryY.Remove(j); - - Refresh(); - } -} - -void Scatter::RemoveAllSeries() -{ - vPointsData.Clear(); - vJoin.Clear(); - vSmooth.Clear(); - vPColors.Clear(); - vPWidth.Clear(); - vPThickness.Clear(); - vLegend.Clear(); - vMarkColors.Clear(); - vShowMark.Clear(); - vMarkStyles.Clear(); - vPPrimaryY.Clear(); - - Refresh(); -} - - -void Scatter::PlotFunction(double (*f)(double), const String& legend, const class::Color& fcolor, const int& weight) -{ - Vector series; - vFunctionData.AddPick(series); - - vAdress.Add(f); - - vFColors.Add(fcolor); - vFThickness.Add(weight); - vFLegend.Add(legend); - vFPrimaryY.Add(true); - Refresh(); -} -void Scatter::PlotParaFunction(XY (*pf)(double), const String& legend, const class::Color& fcolor, const int& weight,const int& Np) -{ - double t;//t must be choosed between [0,1] - Vector series; - for (int i=0; i<=Np;i++) - { - t=(double)i/Np; - series<j) - { - if(vFunctionData[j].IsEmpty()) - { - int nf=-1; - for(int i=0; i<=j; i++) - { - if (vFunctionData[i].IsEmpty()) nf++; - } - vAdress.Remove(nf); - } - - vFunctionData.Remove(j); - vFColors.Remove(j); - vFThickness.Remove(j); - vFLegend.Remove(j); - vFPrimaryY.Remove(j); - - Refresh(); - } -} - -void Scatter::RemoveAllFSeries() -{ - vAdress.Clear(); - vFunctionData.Clear(); - vFColors.Clear(); - vFThickness.Clear(); - vFLegend.Clear(); - vFPrimaryY.Clear(); - - Refresh(); -} - -Drawing Scatter::GetDrawing() const -{ - DrawingDraw ddw(6*GetSize()); - SetDrawing (ddw, 6); - return ddw; -} - -Image Scatter::GetImage(const int& scale) -{ - bool aa=antialiasing; - antialiasing=false; - ImageDraw idraw(scale*GetSize()); - SetDrawing (idraw,scale); - antialiasing=aa; - return idraw; -} - -#ifdef PLATFORM_WIN32 - -void Scatter::SaveAsMetafile(const char* file) const -{ - WinMetaFileDraw wmfd; - wmfd.Create(6*GetSize().cx,6*GetSize().cy,"Scatter","chart",file); - SetDrawing (wmfd, 6); - wmfd.Close(); -} - -void Scatter::SaveToClipboard() -{ - WinMetaFileDraw wmfd; - wmfd.Create(6*GetSize().cx,6*GetSize().cy,"Scatter","chart"); - SetDrawing (wmfd, 6); - WinMetaFile wmf = wmfd.Close(); - wmf.WriteClipboard(); -} -#else - -void Scatter::SaveToClipboard() -{ - Image img = GetImage(3); - WriteClipboardImage(img); -} - -#endif - - - -void Scatter::Paint(Draw& w) -{ - SetDrawing(w,1); -} - -void Scatter::ShowInfo(bool show) -{ - paintInfo=show; -} - -void Scatter::LeftDown(Point pt, dword) -{ - if(paintInfo && px <=pt.x && pt.x<= GetSize().cx-px && (py + titleFont.GetHeight())<=pt.y && pt.y<= GetSize().cy-py) - { - double x=(pt.x-px)*xRange/(GetSize().cx-2*px-1)+xMin; - double y=(GetSize().cy-py-pt.y-1)*yRange/(GetSize().cy-2*py-titleFont.GetHeight()-1)+yMin; - double y2=(GetSize().cy-py-pt.y-1)*yRange2/(GetSize().cy-2*py-titleFont.GetHeight()-1)+yMin2; - if(logX) x=pow(10.0, x); - if(logY) y=pow(10.0, y); - if(logY2) y2=pow(10.0, y2); - String sx="x: "+VariableFormat(x); - String sy="y: "+VariableFormat(y); - String sy2="ysec: "+VariableFormat(y2); - - const Point p2=pt+offset; - popText.SetText(sx+'\n'+sy+'\n'+sy2).Appear(this,p2.x,p2.y); - } -} -void Scatter::LeftUp(Point, dword) -{ - if(paintInfo) popText.Close(); -} -Image Scatter::CursorImage(Point p, dword keyflags) -{ - return ChartImg::cursor1(); -} - -void Scatter::Circle(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const -{ - w.DrawLine(cp,cp,int(scale*size/6),markColor); -} - -void Scatter::Square(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const -{ - Vector p; - p< p; - p< p; - p<0.05 ? int(d1*1.001) : int(d1*1.001)-1); - int nMajorY=(d2-int(d2*1.001)>0.05 ? int(d2*1.001) : int(d2*1.001)-1); - int nMajorY2=(d22-int(d22*1.001)>0.05 ? int(d22*1.001) : int(d22*1.001)-1); - w.DrawRect(1,1,l-2,h-2,plotAreaColor); //grosimea liniei nu este scalata - int gW=int(gridWidth*scale/6); - if(gridWidth<0) gW=gridWidth; - if (drawVGrid) - for(int i=1; i<=nMajorX;i++){ - w.DrawLine(int(i*(l-1)/d1), - 0, - int(i*(l-1)/d1), - h, - gW,gridColor); - } - - if (drawHGrid) - for(int i=1; i<=nMajorY;i++){ - w.DrawLine(0, - h-int(i*(h-1)/d2)-1, - l, - h-int(i*(h-1)/d2)-1, - gW,gridColor); - } - - w.Clip(Rect(0,0,l,h)); - int ix;//int x points coordinates - int iy;//int y points coordinates - if (!vPointsData.IsEmpty()){ - for (int j=0; j p1; - for (int i=0; i2) - { - Vector p2; - Vector v(Cubic(vPointsData[j])); - for (int i=0; i p1; - for (int i=0; i p1; - for(int i=0; i Scatter::Cubic(const Vector& DataSet, const int& fineness,double tension) const -{ - Vector OutSet; - if(DataSet.GetCount()>2){ - OutSet<(OutSet); - -} -void Scatter::SetDrawing(Draw& w, const int& scale) const -{ - w.DrawRect(scale*GetSize(),graphColor); - - Size sz; - sz.cx=0; - sz.cy=0; - if(!title.IsEmpty()) - { - Font FontTitle6; - FontTitle6=titleFont; - FontTitle6.Height(scale*titleFont.GetHeight()); - FontTitle6.Width(scale*titleFont.GetWidth()); - sz= GetTextSize(title, FontTitle6); - w.DrawText((scale*GetSize().cx-sz.cx)/2,scale*2,title,FontTitle6,titleColor); - } - - w.Offset(Point(scale*px,scale*py+scale*titleFont.GetHeight())); - if(showLegend) DrawLegend(w,scale); - int l=scale*GetSize().cx-2*scale*px; - int h=scale*GetSize().cy-2*scale*py-scale*titleFont.GetHeight(); - w.DrawRect(0,0,l,h,Gray); - Font FontLabel6; - FontLabel6=labelsFont; - FontLabel6.Height(scale*labelsFont.GetHeight()); - - Size lx=GetTextSize(xLabel,FontLabel6); - Size ly=GetTextSize(yLabel,FontLabel6); - Size ly2=GetTextSize(yLabel2,FontLabel6); - w.DrawText(int((l-lx.cx)/2),h+scale*py-lx.cy-scale*2,xLabel,FontLabel6,labelsColor); - w.DrawText(scale*2-scale*px,int((h+ly.cx)/2),900,yLabel,FontLabel6,labelsColor); - w.DrawText(int(l+scale*px-ly2.cy-2*scale),int((h+ly2.cx)/2),900,yLabel2,FontLabel6,labelsColor); - - int nMajorX=int(1.001*xRange/xMajorUnit); - int nMajorY=int(1.001*yRange/yMajorUnit); - int nrX=int(l/nMajorX); - int nrY=int(h/nMajorY); - - if (drawXReticle) - for(int i=0; i<=nMajorX;i++){ - w.DrawLine(int(i*(l-1)/(xRange/xMajorUnit)), - h, - int(i*(l-1)/(xRange/xMajorUnit)), - h+scale*4, - int(scale/2), - axisColor); - Font Standard6; - Standard6.Height(scale*StdFont().GetHeight()); - double gridX=i*xMajorUnit+xMin; - String gridLabelX=AsString(gridX); - cbModifFormatX(gridLabelX, i, gridX); - int dx=scale*int(GetTextSize(gridLabelX,StdFont()).cx/2); - w.DrawText(int(i*l/(xRange/xMajorUnit))-dx,h+scale*4,gridLabelX,Standard6,axisColor); - //w.DrawText(int x int y int angle const WString& text Font font = StdFont() Color ink = DefaultInk const int *dx = NULL) - //w.DrawText(int(i*l/(xRange/xMajorUnit))-dx,h+scale*4, 450, gridLabelX,Standard6,axisColor); - } - if (drawYReticle) - for(int i=0; i<=nMajorY;i++){ - w.DrawLine(-(scale*4), - h-int(i*(h-1)/(yRange/yMajorUnit))-1, - 0, - h-int(i*(h-1)/(yRange/yMajorUnit))-1, - int(scale/2), - axisColor); - double gridY=i*yMajorUnit+yMin; - String gridLabelY=AsString(gridY); - cbModifFormatY(gridLabelY, i, gridY); - int dx=scale*GetTextSize(gridLabelY,StdFont()).cx; - Font Standard6; - Standard6.Height(scale*StdFont().GetHeight()); - w.DrawText(-dx-scale*6,h-scale*6-int(i*h/(yRange/yMajorUnit))-1,gridLabelY,Standard6,axisColor); - } - if (drawY2Reticle) - for(int i=0; i<=nMajorY;i++){ - w.DrawLine(l+(scale*4), - h-int(i*(h-1)/(yRange/yMajorUnit))-1, - l-1, - h-int(i*(h-1)/(yRange/yMajorUnit))-1, - int(scale/2), - axisColor); - double gridY=i*yMajorUnit2+yMin2; - String gridLabelY=AsString(gridY); - cbModifFormatY(gridLabelY, i, gridY); - //int dx=scale*GetTextSize(gridLabelY,StdFont()).cx; - Font Standard6; - Standard6.Height(scale*StdFont().GetHeight()); - w.DrawText(l+scale*10,h-int(i*(h-1)/(yRange/yMajorUnit))-scale*8,gridLabelY,Standard6,axisColor); - } - - if(antialiasing && w.IsGui()) - { - ImageDraw imdraw(3*l,3*h); - Plot (imdraw,3,3*l,3*h); - w.DrawImage(0,0,l,h,imdraw); - } - else Plot(w,scale,l,h); - - w.DrawRect(0,h-int(axisWidth*scale/6),l,int(axisWidth*scale/6),axisColor); - w.DrawRect(0,0,int(axisWidth*scale/6),h,axisColor); - w.End(); -} - -Scatter::Scatter(): - title (""), - titleColor(Black), - graphColor(White), - titleFont(Roman(20)), - xLabel(""),yLabel(""), - labelsFont(StdFont()), - labelsColor(Black), - plotAreaColor(Color::Color(245,245,248)), - axisColor(Black), - axisWidth(6), - px(30), - py(30), - xRange(100.0), - yRange(100.0), - yRange2(100.0), - xMajorUnit(xRange/10), - yMajorUnit(yRange/5), - xMin(0.0), - yMin(0.0), - yMin2(0.0), - logX(false), logY(false), - cbModifFormatX(NULL),cbModifFormatY(NULL), - gridColor(Color::Color(102,102,102)), - gridWidth(-4), - paintInfo(false), - drawXReticle(true), drawYReticle(true), drawY2Reticle(false), - drawVGrid(true), drawHGrid(true), - showLegend(true),legendWeight(80), - antialiasing(false), - offset(-10,12) -{ - Color(graphColor); - BackPaint(); - popText.SetColor(::Color(200,220,255)); -} - -Scatter::~Scatter() -{ -} - +#include "Scatter.h" + +#include + +#define IMAGECLASS ChartImg +#define IMAGEFILE +#include + + +Scatter& Scatter::SetColor(const class::Color& _color) +{ + graphColor=_color; + return *this; +} + +Scatter& Scatter::SetTitle(const String& _title) +{ + title=_title; + return *this; +} +Scatter& Scatter::SetTitleFont(const Font& fontTitle) +{ + titleFont=fontTitle; + return *this; +} +Scatter& Scatter::SetTitleColor(const class::Color& colorTitle) +{ + titleColor=colorTitle; + return *this; +} +void Scatter::SetLabels(const WString& _xLabel, const WString& _yLabel, const WString& _yLabel2) +{ + xLabel=_xLabel; + yLabel=_yLabel; + yLabel2=_yLabel2; +} +Scatter& Scatter::SetLabelX(const WString& _xLabel) +{ + xLabel=_xLabel; + return *this; +} +Scatter& Scatter::SetLabelY(const WString& _yLabel) +{ + yLabel=_yLabel; + return *this; +} +Scatter& Scatter::SetLabelY2(const WString& _yLabel) +{ + yLabel2=_yLabel; + return *this; +} +Scatter& Scatter::SetLabelsFont(const Font& fontLabels) +{ + labelsFont=fontLabels; + return *this; +} +Scatter& Scatter::SetLabelsColor(const class::Color& colorLabels) +{ + labelsColor=colorLabels; + return *this; +} +Scatter& Scatter::SetPlotAreaPoz(const int& poz_x, const int& poz_y) +{ + px=poz_x; + py=poz_y; + return *this; +} +Scatter& Scatter::H_Border(const int& poz_x) +{ + if(poz_x>=0) px=poz_x; + return *this; +} +Scatter& Scatter::V_Border(const int& poz_y) +{ + if(poz_y>=0) py=poz_y; + return *this; +} + +Scatter& Scatter::SetPlotAreaColor(const class::Color& p_a_color) +{ + plotAreaColor=p_a_color; + return *this; +} +Scatter& Scatter::SetAxisColor(const class::Color& axis_color) +{ + axisColor=axis_color; + return *this; +} +Scatter& Scatter::SetAxisWidth(const int& axis_width) +{ + axisWidth=axis_width; + return *this; +} +Scatter& Scatter::SetGridColor(const class::Color& grid_color) +{ + gridColor=grid_color; + return *this; +} +Scatter& Scatter::SetGridWidth(const int& grid_width) +{ + gridWidth=grid_width; + return *this; +} +Scatter& Scatter::ShowHGrid(const bool& show) +{ + drawHGrid=show; + return *this; +} +Scatter& Scatter::ShowVGrid(const bool& show) +{ + drawVGrid=show; + return *this; +} +Scatter& Scatter::ShowLegend(const bool& show) +{ + showLegend=show; + return *this; +} +Scatter& Scatter::SetLegendWeight(const int& weight) +{ + legendWeight=weight; + return *this; +} +Scatter& Scatter::SetAntialiasing(const bool& aa) +{ + antialiasing=aa; + return *this; +} +void Scatter::SetDrawXReticle(bool set) +{ + drawXReticle = set; +} +void Scatter::SetDrawYReticle(bool set) +{ + drawYReticle = set; +} +void Scatter::SetDrawY2Reticle(bool set) +{ + drawY2Reticle = set; +} +void Scatter::DrawLegend(Draw& w,const int& scale) const +{ + Vector L; + L.Append(vLegend); + L.Append(vFLegend); + Vector Thick; + Thick.Append(vPThickness); + Thick.Append(vFThickness); + Vector LC; + LC.Append(vPColors); + LC.Append(vFColors); + Vector LW; + LW.Append(vPWidth); + Vector MS; + MS.Append(vMarkStyles); + Vector MC; + MC.Append(vMarkColors); + + int NMR=int((GetSize().cx-2*px)/legendWeight);//max number of labels per row + if (NMR>0) + { + int N=L.GetCount();//number of labels + int Nc;//number of complete rows + int LCR;//number of labels on complete row + int R;//number of remaining labels on incomplete row + if(NMR>N) {Nc=0; LCR=0; R=N;} + else if (NMR==N) {Nc=1; LCR=N; R=0;} + else {Nc=N/NMR; LCR=NMR; R=N%NMR;} + for(int j=0;j<=Nc;j++) + { + int start=N-(j+1)*LCR; + int end=N-j*LCR; + if (j==Nc) {start=0; end=R;} + for(int i=start;i xRange) throw (Exc(t_("Invalid X major units!"))); + if (uy > yRange) throw (Exc(t_("Invalid Y major units!"))); + xMajorUnit=ux; + yMajorUnit=uy; + yMajorUnit2=yRange2*yMajorUnit/yRange; +} +void Scatter::SetMinUnits(double ux, double uy) +{ + xMinUnit=ux; + yMinUnit=uy; + yMinUnit2=yRange2*yMinUnit/yRange; +} +void Scatter::SetXYMin(double xmin, double ymin, double ymin2) +{ + xMin=xmin; + yMin=ymin; + yMin2=ymin2; +} +void Scatter::Graduation_FormatX(Formats fi) +{ + switch (fi) + { + case EXP: cbModifFormatX=THISBACK(ExpFormat); break; + case MON: cbModifFormatX=THISBACK(MonFormat); break; + case DY: cbModifFormatX=THISBACK(DyFormat); break; + default:break; + } +} + +void Scatter::Graduation_FormatY(Formats fi) +{ + switch (fi) + { + case EXP: cbModifFormatY=THISBACK(ExpFormat); break; + case MON: cbModifFormatY=THISBACK(MonFormat); break; + case DY: cbModifFormatY=THISBACK(DyFormat); break; + default:break; + } +} + +void Scatter::Graduation_FormatY2(Formats fi) +{ + switch (fi) + { + case EXP: cbModifFormatY2=THISBACK(ExpFormat); break; + case MON: cbModifFormatY2=THISBACK(MonFormat); break; + case DY: cbModifFormatY2=THISBACK(DyFormat); break; + default:break; + } +} + +void Scatter::AddSeries(Vector & points,const String& legend,const bool& join, const class::Color& pcolor, const int& width, const int& thickness) +{ + vPointsData.AddPick(points); + vJoin.Add(join); + vSmooth.Add(false); + vPColors.Add(pcolor); + vPWidth.Add(width); + vPThickness.Add(thickness); + vLegend.Add(legend); + vMarkColors.Add(pcolor); + vShowMark.Add(true); + vMarkStyles.Add(CIRCLE); + vPPrimaryY.Add(true); + + Refresh(); +} + +void Scatter::AddPoint(const int& j, const XY & point, const bool& refresh) +{ + if(IsValid(j)) + { + vPointsData[j].Add(point); + if(refresh) Refresh(); + } +} +void Scatter::InsertPoint(const int& j, const int& i, const XY & point) +{ + if(IsValid(j)) + { + if(i>=0 && vPointsData[j].GetCount()>=i) + { + vPointsData[j].Insert(i,point); + Refresh(); + } + } +} +void Scatter::RemovePoint(const int& j, const int& i) +{ + if(IsValid(j)) + { + if(i>=0 && vPointsData[j].GetCount()>i) + { + vPointsData[j].Remove(i); + Refresh(); + } + } +} +void Scatter::SetData(const int& j, const int& i, const XY & point) +{ + if(IsValid(j)) + { + if(i>=0 && vPointsData[j].GetCount()>i) + { + vPointsData[j][i]=point; + Refresh(); + } + } +} + +void Scatter::SetData(const int& j, Vector & points) +{ + if(IsValid(j)) + { + vPointsData[j]<<=points; + Refresh(); + } +} +void Scatter::SetDataColor(const int& j, const class::Color& pcolor) +{ + if(IsValid(j)) + { + vPColors[j]=pcolor; + Refresh(); + } +} +void Scatter::SetFunctColor(const int& j, const class::Color& fcolor) +{ + if(IsValid(j)) + { + vFColors[j]=fcolor; + Refresh(); + } +} +Acolor Scatter::GetDataColor(const int& j) const +{ + if(IsValid(j)) + { + return vPColors[j]; + } + throw (Exc(t_("Invalid series index!"))); +} + +Acolor Scatter::GetFunctColor(const int& j) const +{ + if(IsValid(j)) + { + return vFColors[j]; + } + throw (Exc(t_("Invalid function index!"))); +} + +void Scatter::SetDataThickness(const int& j, const int& thick_dots) +{ + if(IsValid(j)) + { + vPThickness[j]=thick_dots; + Refresh(); + } +} + +void Scatter::SetFunctThickness(const int& j, const int& thick_dots) +{ + if(IsValid(j)) + { + vFThickness[j]=thick_dots; + Refresh(); + } +} +int Scatter::GetDataThickness(const int& j) const +{ + if(IsValid(j)) + { + return vPThickness[j]; + } + throw (Exc(t_("Invalid series index!"))); +} + +int Scatter::GetFunctThickness(const int& j) const +{ + if(IsValid(j)) + { + return vFThickness[j]; + } + throw (Exc(t_("Invalid series index!"))); +} + +void Scatter::SetMarkWidth(const int& j, const int& width_dots) +{ + if(IsValid(j)) + { + vPWidth[j]=width_dots; + Refresh(); + } +} + +int Scatter::GetMarkWidth(const int& j) const +{ + if(IsValid(j)) + { + return vPWidth[j]; + } + throw (Exc(t_("Invalid series index!"))); +} + +void Scatter::SetMarkStyle(const int& j, MarkStyle noStyle) +{ + if(IsValid(j)) + { + vMarkStyles[j]=noStyle; + Refresh(); + } +} + +int Scatter::GetMarkStyle(const int& j) const +{ + if(IsValid(j)) + { + return vMarkStyles[j]; + } + throw (Exc(t_("Invalid series index!"))); +} + +void Scatter::SetMarkColor(const int& j, const Acolor& mcolor) +{ + if(IsValid(j)) + { + vMarkColors[j]=mcolor; + Refresh(); + } +} + +Acolor Scatter::GetMarkColor(const int& j) const +{ + if(IsValid(j)) + { + return vMarkColors[j]; + } + throw (Exc(t_("Invalid series index!"))); +} + +void Scatter::SetShowMark(const int& j, const bool& show) +{ + if(IsValid(j)) + { + vShowMark[j]=show; + Refresh(); + } +} + +bool Scatter::IsMarkShow(const int& j) const throw (Exc) +{ + if(!IsValid(j)) throw (Exc(t_("Invalid series index!"))); + return vShowMark[j]; +} + +void Scatter::SetJoin(const int& j, const bool& join) +{ + if(IsValid(j)) + { + vJoin[j]=join; + Refresh(); + } +} + +bool Scatter::IsJoined(const int& j) const throw (Exc) +{ + if(!IsValid(j)) throw (Exc(t_("Invalid series index!"))); + + return vJoin[j]; +} + +void Scatter::SetSmooth(const int& j, const bool& smooth) +{ + if(IsValid(j)) + { + vSmooth[j]=smooth; + Refresh(); + } +} + +bool Scatter::IsSmooth(const int& j) const throw (Exc) +{ + if(!IsValid(j)) throw (Exc(t_("Invalid series index!"))); + + return vSmooth[j]; +} + +void Scatter::SetDataPrimaryY(const int& j, const bool& primary) +{ + if(IsValid(j)) + { + vPPrimaryY[j]=primary; + Refresh(); + } +} + +bool Scatter::IsDataPrimaryY(const int& j) const throw (Exc) +{ + if(!IsValid(j)) throw (Exc(t_("Invalid series index!"))); + + return vPPrimaryY[j]; +} + +void Scatter::SetFunctPrimaryY(const int& j, const bool& primary) +{ + if(IsValid(j)) + { + vFPrimaryY[j]=primary; + Refresh(); + } +} + +bool Scatter::IsFunctPrimaryY(const int& j) const throw (Exc) +{ + if(!IsValid(j)) throw (Exc(t_("Invalid series index!"))); + + return vFPrimaryY[j]; +} + +void Scatter::RemoveSeries(const int& j) +{ + if (IsValid(j)) + { + vPointsData.Remove(j); + vJoin.Remove(j); + vSmooth.Remove(j); + vPColors.Remove(j); + vPWidth.Remove(j); + vPThickness.Remove(j); + vLegend.Remove(j); + vMarkColors.Remove(j); + vShowMark.Remove(j); + vMarkStyles.Remove(j); + vPPrimaryY.Remove(j); + + Refresh(); + } +} + +void Scatter::RemoveAllSeries() +{ + vPointsData.Clear(); + vJoin.Clear(); + vSmooth.Clear(); + vPColors.Clear(); + vPWidth.Clear(); + vPThickness.Clear(); + vLegend.Clear(); + vMarkColors.Clear(); + vShowMark.Clear(); + vMarkStyles.Clear(); + vPPrimaryY.Clear(); + + Refresh(); +} + + +void Scatter::PlotFunction(double (*f)(double), const String& legend, const class::Color& fcolor, const int& weight) +{ + Vector series; + vFunctionData.AddPick(series); + + vAdress.Add(f); + + vFColors.Add(fcolor); + vFThickness.Add(weight); + vFLegend.Add(legend); + vFPrimaryY.Add(true); + Refresh(); +} +void Scatter::PlotParaFunction(XY (*pf)(double), const String& legend, const class::Color& fcolor, const int& weight,const int& Np) +{ + double t;//t must be choosed between [0,1] + Vector series; + for (int i=0; i<=Np;i++) + { + t=(double)i/Np; + series<j) + { + if(vFunctionData[j].IsEmpty()) + { + int nf=-1; + for(int i=0; i<=j; i++) + { + if (vFunctionData[i].IsEmpty()) nf++; + } + vAdress.Remove(nf); + } + + vFunctionData.Remove(j); + vFColors.Remove(j); + vFThickness.Remove(j); + vFLegend.Remove(j); + vFPrimaryY.Remove(j); + + Refresh(); + } +} + +void Scatter::RemoveAllFSeries() +{ + vAdress.Clear(); + vFunctionData.Clear(); + vFColors.Clear(); + vFThickness.Clear(); + vFLegend.Clear(); + vFPrimaryY.Clear(); + + Refresh(); +} + +Drawing Scatter::GetDrawing() const +{ + DrawingDraw ddw(6*GetSize()); + SetDrawing (ddw, 6); + return ddw; +} + +Image Scatter::GetImage(const int& scale) +{ + bool aa=antialiasing; + antialiasing=false; + ImageDraw idraw(scale*GetSize()); + SetDrawing (idraw,scale); + antialiasing=aa; + return idraw; +} + +#ifdef PLATFORM_WIN32 + +void Scatter::SaveAsMetafile(const char* file) const +{ + WinMetaFileDraw wmfd; + wmfd.Create(6*GetSize().cx,6*GetSize().cy,"Scatter","chart",file); + SetDrawing (wmfd, 6); + wmfd.Close(); +} + +void Scatter::SaveToClipboard() +{ + WinMetaFileDraw wmfd; + wmfd.Create(6*GetSize().cx,6*GetSize().cy,"Scatter","chart"); + SetDrawing (wmfd, 6); + WinMetaFile wmf = wmfd.Close(); + wmf.WriteClipboard(); +} +#else + +void Scatter::SaveToClipboard() +{ + Image img = GetImage(3); + WriteClipboardImage(img); +} + +#endif + + + +void Scatter::Paint(Draw& w) +{ + SetDrawing(w,1); +} + +void Scatter::ShowInfo(bool show) +{ + paintInfo=show; +} + +void Scatter::LeftDown(Point pt, dword) +{ + if(paintInfo && px <=pt.x && pt.x<= GetSize().cx-px && (py + titleFont.GetHeight())<=pt.y && pt.y<= GetSize().cy-py) + { + double x=(pt.x-px)*xRange/(GetSize().cx-2*px-1)+xMin; + double y=(GetSize().cy-py-pt.y-1)*yRange/(GetSize().cy-2*py-titleFont.GetHeight()-1)+yMin; + double y2=(GetSize().cy-py-pt.y-1)*yRange2/(GetSize().cy-2*py-titleFont.GetHeight()-1)+yMin2; + if(logX) x=pow(10.0, x); + if(logY) y=pow(10.0, y); + if(logY2) y2=pow(10.0, y2); + String strx, stry; + if (cbModifFormatX) + cbModifFormatX(strx, 0, x); + else + strx = VariableFormatX(x); + if (cbModifFormatY) + cbModifFormatY(stry, 0, y); + else + stry = VariableFormatY(y); + String str="x: "+strx+"\ny: "+stry; + if (drawY2Reticle) { + String stry2; + if (cbModifFormatY2) + cbModifFormatY2(stry2, 0, y2); + else + stry2 = VariableFormatY2(y2); + str << "\ny2: "+stry2; + } + const Point p2=pt+offset; + popText.SetText(str).Appear(this,p2.x,p2.y); + } +} +void Scatter::LeftUp(Point, dword) +{ + if(paintInfo) popText.Close(); +} + +void Scatter::MiddleDown(Point pt, dword) +{ + if((mouseHandlingX || mouseHandlingY) && px <=pt.x && pt.x<= GetSize().cx-px && (py + titleFont.GetHeight())<=pt.y && pt.y<= GetSize().cy-py) + { + butDownX = pt.x; + butDownY = pt.y; + isButDown = true; + } +} +void Scatter::MouseMove(Point pt, dword) +{ + if (isButDown) { + int shiftX = pt.x - butDownX; + if (mouseHandlingX && shiftX != 0) { + double deltaX = shiftX*xRange/(GetSize().cx - 2*px - 1); + xMin -= deltaX; + xMinUnit += deltaX; + while (xMinUnit < 0) + xMinUnit += xMajorUnit; + while (xMinUnit > xMajorUnit) + xMinUnit -= xMajorUnit; + Refresh(); + WhenZoomScroll(); + butDownX = pt.x; + } + int shiftY = pt.y - butDownY; + if (mouseHandlingY && shiftY != 0) { + double deltaY = -shiftY*yRange/(GetSize().cy - 2*py - 1); + yMin -= deltaY; + yMinUnit += deltaY; + while (yMinUnit < 0) + yMinUnit += yMajorUnit; + while (yMinUnit > yMajorUnit) + yMinUnit -= yMajorUnit; + if (drawY2Reticle) { + double deltaY2 = -shiftY*yRange2/(GetSize().cy - 2*py - 1); + yMin2 -= deltaY2; + yMinUnit2 += deltaY2; + while (yMinUnit2 < 0) + yMinUnit2 += yMajorUnit2; + while (yMinUnit2 > yMajorUnit2) + yMinUnit2 -= yMajorUnit2; + } + butDownY = pt.y; + } + if ((mouseHandlingX && shiftX != 0) || (mouseHandlingY && shiftY != 0)) { + Refresh(); + WhenZoomScroll(); + } + } +} +void Scatter::MiddleUp(Point pt, dword d) +{ + if (isButDown) { + MouseMove(pt, d); + isButDown = false; + } +} + +void Scatter::MouseWheel(Point, int zdelta, dword) { + double scale = zdelta > 0 ? zdelta/100. : -100./zdelta; + if (mouseHandlingX) { + xMin += xRange*(1-scale)/2.; + xRange *= scale; + } + if (mouseHandlingY) { + yRange *= scale; + yRange2 *= scale; + } + if (mouseHandlingX || mouseHandlingY) { + Refresh(); + WhenZoomScroll(); + } +} + +Image Scatter::CursorImage(Point p, dword keyflags) +{ + return ChartImg::cursor1(); +} + +void Scatter::Circle(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const +{ + w.DrawLine(cp,cp,int(scale*size/6),markColor); +} + +void Scatter::Square(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const +{ + Vector p; + p< p; + p< p; + p<0.05 ? int(d1*1.001) : int(d1*1.001)-1); + int nMajorY=(d2-int(d2*1.001)>0.05 ? int(d2*1.001) : int(d2*1.001)-1); + int nMajorY2=(d22-int(d22*1.001)>0.05 ? int(d22*1.001) : int(d22*1.001)-1); + w.DrawRect(1,1,l-2,h-2,plotAreaColor); //grosimea liniei nu este scalata + int gW=int(gridWidth*scale/6); + if(gridWidth<0) gW=gridWidth; + if (drawVGrid) + for(int i=0; xMinUnit+i*xMajorUnit < xRange;i++){ + w.DrawLine(int(scale*l*xMinUnit/xRange+i*l/d1), + 0, + int(scale*l*xMinUnit/xRange+i*l/d1), + h, + gW,gridColor); + } + + if (drawHGrid) + for(int i=0; yMinUnit+i*yMajorUnit < yRange;i++){ + w.DrawLine(0, + int(-scale*h*yMinUnit/yRange + h-i*(h-1)/d2)-1, + l, + int(-scale*h*yMinUnit/yRange + h-i*(h-1)/d2)-1, + gW,gridColor); + } + + w.Clip(Rect(0,0,l,h)); + int ix;//int x points coordinates + int iy;//int y points coordinates + if (!vPointsData.IsEmpty()){ + for (int j=0; j p1; + for (int i=0; i2) + { + Vector p2; + Vector v(Cubic(vPointsData[j])); + for (int i=0; i p1; + for (int i=0; i p1; + for(int i=0; i Scatter::Cubic(const Vector& DataSet, const int& fineness,double tension) const +{ + Vector OutSet; + if(DataSet.GetCount()>2){ + OutSet<(OutSet); + +} +void Scatter::SetDrawing(Draw& w, const int& scale) const +{ + w.DrawRect(scale*GetSize(),graphColor); + + Size sz; + sz.cx=0; + sz.cy=0; + if(!title.IsEmpty()) + { + Font FontTitle6; + FontTitle6=titleFont; + FontTitle6.Height(scale*titleFont.GetHeight()); + FontTitle6.Width(scale*titleFont.GetWidth()); + sz= GetTextSize(title, FontTitle6); + w.DrawText((scale*GetSize().cx-sz.cx)/2,scale*2,title,FontTitle6,titleColor); + } + + w.Offset(Point(scale*px,scale*py+scale*titleFont.GetHeight())); + if(showLegend) DrawLegend(w,scale); + int l=scale*GetSize().cx-2*scale*px; + int h=scale*GetSize().cy-2*scale*py-scale*titleFont.GetHeight(); + w.DrawRect(0,0,l,h,Gray); + Font FontLabel6; + FontLabel6=labelsFont; + FontLabel6.Height(scale*labelsFont.GetHeight()); + + Size lx=GetTextSize(xLabel,FontLabel6); + Size ly=GetTextSize(yLabel,FontLabel6); + Size ly2=GetTextSize(yLabel2,FontLabel6); + w.DrawText(int((l-lx.cx)/2),h+scale*py-lx.cy-scale*2,xLabel,FontLabel6,labelsColor); + w.DrawText(scale*2-scale*px,int((h+ly.cx)/2),900,yLabel,FontLabel6,labelsColor); + w.DrawText(int(l+scale*px-ly2.cy-2*scale),int((h+ly2.cx)/2),900,yLabel2,FontLabel6,labelsColor); + + //int nMajorX=int(1.001*xRange/xMajorUnit); + //int nMajorY=int(1.001*yRange/yMajorUnit); + //int nrX=int(l/nMajorX); + //int nrY=int(h/nMajorY); + + if (drawXReticle) + for(int i=0; xMinUnit+i*xMajorUnit<=xRange;i++){ + w.DrawLine(int(scale*l*xMinUnit/xRange+i*(l-1)/(xRange/xMajorUnit)), + h, + int(scale*l*xMinUnit/xRange+i*(l-1)/(xRange/xMajorUnit)), + h+scale*4, + int(scale/2), + axisColor); + Font Standard6; + Standard6.Height(scale*StdFont().GetHeight()); + double gridX=xMinUnit+i*xMajorUnit+xMin; + String gridLabelX; + if (cbModifFormatX) + cbModifFormatX(gridLabelX, i, gridX); + else + gridLabelX = VariableFormatX(gridX); + int dx=scale*int(GetTextSize(gridLabelX,StdFont()).cx/2); + w.DrawText(int(scale*l*xMinUnit/xRange+i*l/(xRange/xMajorUnit))-dx, h+scale*4, gridLabelX, Standard6, axisColor); + //w.DrawText(int x int y int angle const WString& text Font font = StdFont() Color ink = DefaultInk const int *dx = NULL) + //w.DrawText(int(i*l/(xRange/xMajorUnit))-dx,h+scale*4, 450, gridLabelX,Standard6,axisColor); + } + if (drawYReticle) + for(int i=0; yMinUnit+i*yMajorUnit<=yRange;i++){ + w.DrawLine(-(scale*4), + int(-scale*h*yMinUnit/yRange+h-i*(h-1)/(yRange/yMajorUnit))-1, + 0, + int(-scale*h*yMinUnit/yRange+h-i*(h-1)/(yRange/yMajorUnit))-1, + int(scale/2), + axisColor); + double gridY=yMinUnit+i*yMajorUnit+yMin; + String gridLabelY; + if (cbModifFormatY) + cbModifFormatY(gridLabelY, i, gridY); + else + gridLabelY = VariableFormatY(gridY); + int dx=scale*GetTextSize(gridLabelY,StdFont()).cx; + Font Standard6; + Standard6.Height(scale*StdFont().GetHeight()); + w.DrawText(-dx-scale*6, int(-scale*h*yMinUnit/yRange+h-i*(h-1)/(yRange/yMajorUnit))-scale*8, gridLabelY, Standard6, axisColor); + } + if (drawY2Reticle) + for(int i=0; yMinUnit+i*yMajorUnit<=yRange;i++){ + w.DrawLine(l+(scale*4), + int(-scale*h*yMinUnit2/yRange2+h-i*(h-1)/(yRange/yMajorUnit))-1, + l-1, + int(-scale*h*yMinUnit2/yRange2+h-i*(h-1)/(yRange/yMajorUnit))-1, + int(scale/2), + axisColor); + double gridY2=yMinUnit2+i*yMajorUnit2+yMin2; + String gridLabelY2; + if (cbModifFormatY2) + cbModifFormatY2(gridLabelY2, i, gridY2); + else + gridLabelY2 = VariableFormatY2(gridY2); + //int dx=scale*GetTextSize(gridLabelY,StdFont()).cx; + Font Standard6; + Standard6.Height(scale*StdFont().GetHeight()); + w.DrawText(l+scale*10,int(-scale*h*yMinUnit2/yRange2+h-i*(h-1)/(yRange/yMajorUnit))-scale*8,gridLabelY2,Standard6,axisColor); + } + + if(antialiasing && w.IsGui()) + { + ImageDraw imdraw(3*l,3*h); + Plot (imdraw,3,3*l,3*h); + w.DrawImage(0,0,l,h,imdraw); + } + else Plot(w,scale,l,h); + + w.DrawRect(0,h-int(axisWidth*scale/6),l,int(axisWidth*scale/6),axisColor); + w.DrawRect(0,0,int(axisWidth*scale/6),h,axisColor); + w.End(); +} + +Scatter::Scatter(): + title (""), + titleColor(Black), + graphColor(White), + titleFont(Roman(20)), + xLabel(""),yLabel(""), + labelsFont(StdFont()), + labelsColor(Black), + plotAreaColor(Color::Color(245,245,248)), + axisColor(Black), + axisWidth(6), + px(30), + py(30), + xRange(100.0), + yRange(100.0), + yRange2(100.0), + xMajorUnit(xRange/10), + yMajorUnit(yRange/5), + xMin(0.0), yMin(0.0), yMin2(0.0), + xMinUnit(0.0), yMinUnit(0.0), yMinUnit2(0.0), + logX(false), logY(false), logY2(false), + cbModifFormatX(NULL),cbModifFormatY(NULL),cbModifFormatY2(NULL), + gridColor(Color::Color(102,102,102)), + gridWidth(-4), + paintInfo(false), + mouseHandlingX(false), mouseHandlingY(false), isButDown(false), + drawXReticle(true), drawYReticle(true), drawY2Reticle(false), + drawVGrid(true), drawHGrid(true), + showLegend(true),legendWeight(80), + antialiasing(false), + offset(-10,12) +{ + Color(graphColor); + BackPaint(); + popText.SetColor(::Color(200,220,255)); +} + +Scatter::~Scatter() +{ +} + diff --git a/bazaar/Scatter/Scatter.h b/bazaar/Scatter/Scatter.h index 044883f35..a86fee6fa 100644 --- a/bazaar/Scatter/Scatter.h +++ b/bazaar/Scatter/Scatter.h @@ -1,260 +1,278 @@ -/* -ScatterChart Control -V0.6, Sept. 2007 -Copyright (C) 2006-2007, Andrei-Catalin -*/ -#ifndef _Scatter_Scatter_h -#define _Scatter_Scatter_h - -#include "PopUpText.h" - -using namespace Upp; - - -typedef Pointf XY; -typedef class::Color Acolor; - -class Scatter : public StaticRect { -public: - - enum MarkStyle - { - CIRCLE, - RECTANGLE, - SQUARE, - TRIANGLE, - CROSS, - X, - RHOMB - }; - enum Formats - { - EXP, - MON, - DY, - CUSTOM - }; - - Callback3 cbModifFormatX, cbModifFormatY; - - virtual void Paint(Draw& w); - virtual void LeftDown(Point, dword); - virtual void LeftUp(Point, dword); - - Scatter& SetColor(const class::Color& _color); - Scatter& SetTitle(const String& _title); - Scatter& SetTitleFont(const Font& fontTitle); - Scatter& SetTitleColor(const class::Color& colorTitle); - - void SetLabels(const WString& _xLabel, const WString& _yLabel, const WString& _yLabel2 = ""); - Scatter& SetLabelX(const WString& _xLabel); - Scatter& SetLabelY(const WString& _yLabel); - Scatter& SetLabelY2(const WString& _yLabel); - Scatter& SetLabelsFont(const Font& fontLabels); - Scatter& SetLabelsColor(const class::Color& colorLabels); - - Scatter& SetPlotAreaPoz(const int& poz_x,const int& poz_y); - Scatter& H_Border(const int& poz_x); - Scatter& V_Border(const int& poz_y); - Scatter& SetPlotAreaColor(const class::Color& p_a_color); - - Scatter& SetAxisColor(const class::Color& axis_color); - Scatter& SetAxisWidth(const int& axis_width); - - Scatter& SetGridColor(const class::Color& grid_color); - Scatter& SetGridWidth(const int& grid_width); - Scatter& ShowVGrid(const bool& show); - Scatter& ShowHGrid(const bool& show); - - Scatter& ShowLegend(const bool& show=true); - Scatter& SetLegendWeight(const int& weight); - - Scatter& SetAntialiasing(const bool& aa=true); - - void SetRange(double rx, double ry, double ry2 = -1); - double GetXRange()const {return xRange;} - double GetYRange()const {return yRange;} - double GetYRange2()const {return yRange2;} - void SetMajorUnits(double ux, double uy); - void SetXYMin(double xmin,double ymin,double ymin2 = 0); - double GetXMin () const {return xMin;} - double GetYMin () const {return yMin;} - double GetYMin2 () const {return yMin2;} - void Graduation_FormatX(Formats fi); - void Graduation_FormatY(Formats fi); - - void AddSeries (Vector & points,const String& legend="", const bool& join=false,const class::Color& pcolor=LtBlue,const int& width=30,const int& thickness=6); - - inline bool IsValid(const int& j) const {return (j>=0 && j & points); - const Vector > & GetPData() const {return vPointsData;} - const Vector > & GetFData() const {return vFunctionData;} - - const Vector & GetPLegend() const {return vLegend;} - const Vector & GetFLegend() const {return vFLegend;} - - void PlotFunction(double (*f)(double),const String& legend="", const class::Color& fcolor=Green,const int& weight=6); - void PlotParaFunction(XY (*pf)(double),const String& legend="", const class::Color& fcolor=Green,const int& weight=6,const int& Np=100); - void RemoveFSeries(const int& j); - void RemoveAllFSeries(); - - void ShowInfo(bool show=true); - - Drawing GetDrawing()const; - Image GetImage(const int& scale=1); - - #ifdef PLATFORM_WIN32 - void SaveAsMetafile(const char* file)const; - #endif - - void SaveToClipboard(); - - Scatter& LogX(const bool& logx=true) {logX=logx; return *this;} - Scatter& LogY(const bool& logy=true) {logY=logy; return *this;} - Scatter& LogY2(const bool& logy=true) {logY2=logy; return *this;} - -private: - class ::Color graphColor; - String title; - Font titleFont; - class::Color titleColor; - - WString xLabel, yLabel, yLabel2; - Font labelsFont; - class::Color labelsColor; - - int px, py; - class ::Color plotAreaColor; - - bool paintInfo; - Point clickPoint; - PopUpInfo popText; - const Point offset; - - class::Color axisColor; - int axisWidth; - - double xRange,yRange,yRange2; - double xMin,yMin,yMin2; - double xMajorUnit,yMajorUnit,yMajorUnit2; - bool drawXReticle, drawYReticle, drawY2Reticle; - - class::Color gridColor; - int gridWidth; - bool drawVGrid, drawHGrid; - - bool logX, logY, logY2; - - Vector > vPointsData,vFunctionData; - Vector vFPrimaryY, vPPrimaryY; - typedef double (*fAdress)(double); - Vector vAdress; - Vector vPColors,vFColors; - Vector vFThickness,vPThickness; - Vector vPWidth; - Vector vJoin; - Vector vSmooth; - Vector vMarkColors; - Vector vShowMark; - Vector vMarkStyles; - - Vector vLegend; - Vector vFLegend; - bool showLegend; - int legendWeight; - bool antialiasing; - - Vector Cubic (const Vector& DataSet, const int& fineness=10, double tension=0.4)const; - void DrawLegend(Draw& w,const int& scale) const; - - void SetDrawing(Draw& w, const int& scale)const; - void Circle(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; - void Square(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; - void Rectangle(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; - void Triangle(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; - void Cross(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; - void XFunct(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; - void Rhomb(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; - inline void DrawMark(const int& style, Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; - - virtual Image CursorImage(Point p, dword keyflags); - - void ExpFormat(String& s, int i, double d) - { - s=FormatDoubleExp(d,1); - } - void MonFormat(String& s, int i, double d) - { - s=Format("%Mon",int(d)); - } - void DyFormat(String& s, int i, double d) - { - s=Format("%Dy",int(d)); - } - - String VariableFormat(const double& d) - { - double dabs=d>0 ? d: -d; - - if (0.001<=dabs && dabs<0.01) return FormatDouble(d,5); - else if (0.01<=dabs && dabs<0.1) return FormatDouble(d,4); - else if (0.1<=dabs && dabs<1) return FormatDouble(d,3); - else if (1<=dabs && dabs<10) return FormatDouble(d,2); - else if (10<=dabs && dabs<100) return FormatDouble(d,1); - else if (100<=dabs && dabs<10000) return FormatDouble(d,0); - else return FormatDoubleExp(d,2); - - } - - void Plot(Draw& w, const int& scale,const int& l,const int& h) const; - -public: - typedef Scatter CLASSNAME; - Scatter(); - ~Scatter(); -}; - - -#endif - +/* +ScatterChart Control +V0.6, Sept. 2007 +Copyright (C) 2006-2007, Andrei-Catalin +*/ +#ifndef _Scatter_Scatter_h +#define _Scatter_Scatter_h + +#include "PopUpText.h" + +using namespace Upp; + + +typedef Pointf XY; +typedef class::Color Acolor; + +class Scatter : public StaticRect { +public: + + enum MarkStyle + { + CIRCLE, + RECTANGLE, + SQUARE, + TRIANGLE, + CROSS, + X, + RHOMB + }; + enum Formats + { + EXP, + MON, + DY, + CUSTOM + }; + + Callback3 cbModifFormatX, cbModifFormatY, cbModifFormatY2; + + virtual void Paint(Draw& w); + virtual void LeftDown(Point, dword); + virtual void LeftUp(Point, dword); + virtual void MiddleDown(Point, dword); + virtual void MouseMove(Point, dword); + virtual void MiddleUp(Point, dword); + virtual void MouseWheel(Point, int zdelta, dword); + + Callback WhenZoomScroll; + + Scatter& SetColor(const class::Color& _color); + Scatter& SetTitle(const String& _title); + Scatter& SetTitleFont(const Font& fontTitle); + Scatter& SetTitleColor(const class::Color& colorTitle); + + void SetLabels(const WString& _xLabel, const WString& _yLabel, const WString& _yLabel2 = ""); + Scatter& SetLabelX(const WString& _xLabel); + Scatter& SetLabelY(const WString& _yLabel); + Scatter& SetLabelY2(const WString& _yLabel); + Scatter& SetLabelsFont(const Font& fontLabels); + Scatter& SetLabelsColor(const class::Color& colorLabels); + + Scatter& SetPlotAreaPoz(const int& poz_x,const int& poz_y); + Scatter& H_Border(const int& poz_x); + Scatter& V_Border(const int& poz_y); + Scatter& SetPlotAreaColor(const class::Color& p_a_color); + + Scatter& SetAxisColor(const class::Color& axis_color); + Scatter& SetAxisWidth(const int& axis_width); + + Scatter& SetGridColor(const class::Color& grid_color); + Scatter& SetGridWidth(const int& grid_width); + Scatter& ShowVGrid(const bool& show); + Scatter& ShowHGrid(const bool& show); + + Scatter& ShowLegend(const bool& show=true); + Scatter& SetLegendWeight(const int& weight); + + Scatter& SetAntialiasing(const bool& aa=true); + + void SetRange(double rx, double ry, double ry2 = -1); + double GetXRange()const {return xRange;} + double GetYRange()const {return yRange;} + double GetYRange2()const {return yRange2;} + void SetMajorUnits(double ux, double uy); + void SetMinUnits(double ux, double uy); + void SetXYMin(double xmin,double ymin,double ymin2 = 0); + double GetXMin () const {return xMin;} + double GetYMin () const {return yMin;} + double GetYMin2 () const {return yMin2;} + void Graduation_FormatX(Formats fi); + void Graduation_FormatY(Formats fi); + void Graduation_FormatY2(Formats fi); + + void SetMouseHandling(bool valx = true, bool valy = false); + + void AddSeries (Vector & points,const String& legend="", const bool& join=false,const class::Color& pcolor=LtBlue,const int& width=30,const int& thickness=6); + + inline bool IsValid(const int& j) const {return (j>=0 && j & points); + const Vector > & GetPData() const {return vPointsData;} + const Vector > & GetFData() const {return vFunctionData;} + + const Vector & GetPLegend() const {return vLegend;} + const Vector & GetFLegend() const {return vFLegend;} + + void PlotFunction(double (*f)(double),const String& legend="", const class::Color& fcolor=Green,const int& weight=6); + void PlotParaFunction(XY (*pf)(double),const String& legend="", const class::Color& fcolor=Green,const int& weight=6,const int& Np=100); + void RemoveFSeries(const int& j); + void RemoveAllFSeries(); + + void ShowInfo(bool show=true); + + Drawing GetDrawing()const; + Image GetImage(const int& scale=1); + + #ifdef PLATFORM_WIN32 + void SaveAsMetafile(const char* file)const; + #endif + + void SaveToClipboard(); + + Scatter& LogX(const bool& logx=true) {logX=logx; return *this;} + Scatter& LogY(const bool& logy=true) {logY=logy; return *this;} + Scatter& LogY2(const bool& logy=true) {logY2=logy; return *this;} + +private: + class ::Color graphColor; + String title; + Font titleFont; + class::Color titleColor; + + WString xLabel, yLabel, yLabel2; + Font labelsFont; + class::Color labelsColor; + + int px, py; + class ::Color plotAreaColor; + + bool paintInfo; + Point clickPoint; + PopUpInfo popText; + const Point offset; + + class::Color axisColor; + int axisWidth; + + double xRange,yRange,yRange2; + double xMin,yMin,yMin2; + double xMajorUnit,yMajorUnit,yMajorUnit2; + double xMinUnit,yMinUnit, yMinUnit2; + bool drawXReticle, drawYReticle, drawY2Reticle; + + class::Color gridColor; + int gridWidth; + bool drawVGrid, drawHGrid; + + bool logX, logY, logY2; + + int butDownX, butDownY; + bool isButDown; + + Vector > vPointsData,vFunctionData; + Vector vFPrimaryY, vPPrimaryY; + typedef double (*fAdress)(double); + Vector vAdress; + Vector vPColors,vFColors; + Vector vFThickness,vPThickness; + Vector vPWidth; + Vector vJoin; + Vector vSmooth; + Vector vMarkColors; + Vector vShowMark; + Vector vMarkStyles; + + Vector vLegend; + Vector vFLegend; + bool showLegend; + int legendWeight; + bool antialiasing; + bool mouseHandlingX, mouseHandlingY; + + Vector Cubic (const Vector& DataSet, const int& fineness=10, double tension=0.4)const; + void DrawLegend(Draw& w,const int& scale) const; + + void SetDrawing(Draw& w, const int& scale)const; + void Circle(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; + void Square(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; + void Rectangle(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; + void Triangle(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; + void Cross(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; + void XFunct(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; + void Rhomb(Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; + inline void DrawMark(const int& style, Draw& w, const int& scale, const Point& cp, const int& size, const class::Color& markColor)const; + + virtual Image CursorImage(Point p, dword keyflags); + + void ExpFormat(String& s, int i, double d) + { + s=FormatDoubleExp(d,1); + } + void MonFormat(String& s, int i, double d) + { + s=Format("%Mon",int(d)); + } + void DyFormat(String& s, int i, double d) + { + s=Format("%Dy",int(d)); + } + + static String VariableFormat(double range, double d) + { + if (fabs(d) <= 1e-15) + d = 0; + if (0.001<=range && range<0.01) return FormatDouble(d,5); + else if (0.01<=range && range<0.1) return FormatDouble(d,4); + else if (0.1<=range && range<1) return FormatDouble(d,3); + else if (1<=range && range<10) return FormatDouble(d,2); + else if (10<=range && range<100) return FormatDouble(d,1); + else if (100<=range && range<100000) return FormatDouble(d,0); + else return FormatDoubleExp(d,2); + + } + String VariableFormatX(const double& d) const {return VariableFormat(xRange, d);} + String VariableFormatY(const double& d) const {return VariableFormat(yRange, d);} + String VariableFormatY2(const double& d) const {return VariableFormat(yRange2, d);} + + void Plot(Draw& w, const int& scale,const int& l,const int& h) const; + +public: + typedef Scatter CLASSNAME; + Scatter(); + ~Scatter(); +}; + + +#endif + diff --git a/bazaar/Scatter/Scatter.t b/bazaar/Scatter/Scatter.t new file mode 100644 index 000000000..f15a8b14c --- /dev/null +++ b/bazaar/Scatter/Scatter.t @@ -0,0 +1,20 @@ +#ifdef _MSC_VER +#pragma setlocale("C") +#endif +// Scatter.cpp + +T_("Invalid X major units!") +caES("\302\241Eix X amb dist\303\240ncia entre valors incorrecte!") +esES("\302\241Eje X con distancia entre valores incorrecto!") + +T_("Invalid Y major units!") +caES("\302\241Eix Y amb dist\303\240ncia entre valors incorrecte!") +esES("\302\241Eje Y con distancia entre valores incorrecto!") + +T_("Invalid series index!") +caES("\302\241S\303\250rie amb \303\255ndex incorrecte!") +esES("\302\241Serie con \303\255ndice incorrecto!") + +T_("Invalid function index!") +caES("\302\241Funci\303\263 amb \303\255ndex incorrecte!") +esES("\302\241Funci\303\263n con \303\255ndice incorrecto!") diff --git a/bazaar/Scatter/Scatter.upp b/bazaar/Scatter/Scatter.upp index 5a9dbeb64..252981061 100644 --- a/bazaar/Scatter/Scatter.upp +++ b/bazaar/Scatter/Scatter.upp @@ -5,6 +5,7 @@ uses file Scatter.h, + Scatter.t, Scatter.cpp, PopUpText.h, PopUpText.cpp, diff --git a/bazaar/Scatter/srcdoc.tpp/Scatter$en-us.tpp b/bazaar/Scatter/srcdoc.tpp/Scatter$en-us.tpp index f2f8bfb47..67b35411b 100644 --- a/bazaar/Scatter/srcdoc.tpp/Scatter$en-us.tpp +++ b/bazaar/Scatter/srcdoc.tpp/Scatter$en-us.tpp @@ -1172,4 +1172,4 @@ topic "Scatter"; [s0; &] [s0; [^topic`:`/`/Scatter`/srcdoc`/TestScatter2`$en`-us^2 TestScatter2][2 package does a visual review of class features.]&] -[s0;2 ] \ No newline at end of file +[s0; ] \ No newline at end of file diff --git a/bazaar/Scatter/srcdoc.tpp/TestScatter2$en-us.tpp b/bazaar/Scatter/srcdoc.tpp/TestScatter2$en-us.tpp index 0c529e366..e886a381c 100644 --- a/bazaar/Scatter/srcdoc.tpp/TestScatter2$en-us.tpp +++ b/bazaar/Scatter/srcdoc.tpp/TestScatter2$en-us.tpp @@ -1635,558 +1635,120 @@ point.]&] [s0;2%- &] [ {{4548:5452f0;g0;^ [s0; [2 Scatter lets to insert X and Y labels, XY scaling and range, point format and size and standard or user defined axis labels -formating.]] +formating.]&] +[s0;2 &] +[s0; [2 In addition SetMouseHandling(true) lets to use the mouse to +zoom and move the graphs in X axis.]] ::= [s0;= [*R2 -@@image:2068&1234 -Ӝ݇ʼnݕĄ±ᙰʶ -紹릦׬ڒ -𠐰ܹƌǎܴϞ㧟®֬ٓ号 -ƛ‰寐ݤԠر¯ٓӲƮס -䄂ѴΗ㻼ڴإ࢐śˉ˖ -իЪիϙ駟ɧÚ̵裫䑿ᶁ -ƋǀǼςرذʶ͙݌λᰧүǶ۶㹼̳ -흻ͷݤɯ̙ᘑ勗ϖ婢޼΂פ -јȏޞ矟ň컳ϾǎաÇٲ -㋊݋ԭϩΕб܈Д„ۿÆ -°慁؅ذǀǨ猖ߔյձӖ鳀ʦҤɔ -͵݆⯿߷򈷓̣܉ሳݠĬܸ -ޒ勃΀謹ޏɉǃ瑳͒ۏ޽ -ݼLjֈÇϞ֭ίڕ -̎ėȇ̟̜ӕßܫۋӇƛĎج燉 -޿⋯И̀ÍȞŦ෎◯ΣݺήߟٳѲ -ؑ減畞ňؿҏɢ͛̙£υԫ֭ -Ljۂ՜€׿տ˥ݜ -ܹLj۠úݺñí -˭đڶɎ۳捗¨٢ϿߌѶԫ -׏ԲŨڶؿ؆̍܀嬉ϠԪޜƠ¥Б -Ŝϧ͛ͷ̘ŋ쥅⋜ŀ᱂┷〖Γ -ұ미Ӱͼސ͍ިĶ͚ -呭ڵȱʫ䟧Μȷ믁ᇟןψҤ -ܸǗߦڣчӻҟ̐ёկݻDZ -ޅрׄ޽Ν敾 -Ն̝ܡ٧Ν믿ƹழ͛ŕ§ -ƹӈعš񡢆Ǒۇߔʒ -̈́ǎՕΖ܆忼ǎ竂ܓՁß֬ -ΣϞܞܬСĭ۶ԖㅗʊǕ -ȑ嘘碀Бڵɳʫ˗ʓŤ -ȼѕӚ͜↞ߺ߈¤֭۷殪۴衢 -짩Ϛذ̉楃Ë⛁߀֢ఎԩӼ -죏IJžݳݻŁױߊǼڡǩ゙ -ݶǎʩʒɝ映ɳ΍…҇҅ތƣ -瓑⡆޶ĔٙЯ߿χ鄂Çߜǃ -ϕŃ饗옱ګɡʔ炒ࣿ -ǞÎ𨹲رߊ͛Ν߾Ž -ŗʀ֗ƃӋߜΥ߹Ք늆 -ڨߖ̃ǟߧɥҏϚ욢Ӗŀȸ -Ǫʓ͂Ҭ˛Ǒǧƍ᪝ָƋĘկ« -صꕒڴ֩߀ذԌà̘ܝӧ -ˇ̟ᅬɈ᧔ķ̞䈑֮с҄ -ɔϟԷéؐ§☽сݾăϛߧ -߅ܕʀȂϔ런ņ쐎ݎ퉇Ǐ֭ۡ -ᄍăȔ㣖ؼܐֻ3ʠוɟ׮ -춣ŨѣƏܴ̚ĉ⎀Π۶߹ͦ -λᄚɸ༰ʕ -萈͛ʅȠ -ЈؿފꃆܿņǚէԝФǤƄȟ -ުǺǜϽڻهʻ߀ךܚÌߌ݈ӛ -׺Ԏ砐섂Յ⇟ѫnj얤ӹ -ڶĉ߄モ͓ޝߐѿȯ槞ؙ̪֨꤉ -ĩզ֕Сל〛䳅֛ -ߺմ󝦳槟򲔞Ҥڵ刄ՁذǓմ -̈ӧ͚ʩ񄂁񼢶߯ډݮ㑥̏ㆿ -摃Ą҈ԩ߳ʝ碋ͤ -ǎ믌܅챧ϼ̶̶ؙLJǣ¸ -򎝤ߔ眾΁¾ -ĄޒҩͣťА²ڵɝ -Ͽզɟľ헮ޖۭѿ⛲˖ĉҋ -ױ›͢ȁÆވ -ӃϽ๹뀥⋩ۧޟͳ禀̳ޘͪ -ݯÀٕΚÙӎ܇ƥ̊恋˽™ -ʳߣ̨ͷ˗ן矹ӫűϳ -Çגԋղߟɺ⊪朼Κәꕹ̡竈ђ۶ -йʫ̏冾ϒɜʋؒƉԇ˒ -Κ֝ۀ͠¤˿ƍҥ -̆Ř쾧Ԍգǟׯŷʙ -ҵֆާų֧ٜĆ۪ۛԏШ֭ڪᵚ뮑⹉ -ߎś˂ٳ͉Ŭ̽РҬ֭۳ϼ -׮ĝÀāŠڂǎ͵̘▯ެǫ -ѣ̙׮ܠ۠蹜ũ٣ȹ׼Ԍכ뉓 -կ󋑴Ŭ֐㹄ꗮ’ź -۷޽Ժ굥ꈨ糎‹ -瞩߿󍊯͚񄨜Ԭ歃Ωʽ񥕫ֆ -׮ꔊǽچϕΜ獗ܜø -ٹпߜԌۿۋΝƒ͌ͷ怾ϛ -ɓڝ׮ʘ۵ᘿ֭۬㭷؜ -ܟ픟ɦ٤Ǒ杙̊ӳ -ԋۉϚ׮ƛʟզܕ҆虢 -ë蕧ݍױݺȑқƁѵ -ࠆ֫ɪΕܣф͞ѕגɀųǪ誄ţ -舕גȐŧ蚇𞭁ܣع崙—ƣſ -ϧ踕ѳ槥ũĕچʼn׸ -ڪ֜ٱΌĕԩѱёƁ -ѵѮגۆْԈǹӕѭتlj׺ -ˋʓ剉ʼnƄ蚇фנծ -ڒ褢Šĕݧ氽֜ևˇͺفݣČ񸕧ך -ѬՖߋꏮǼŞ׆ħ紷핦̿ -ٓјұщɝרدŶציʷڬԋЙ -ߢڂ΢襑ֆ啽㕝ظ榯೯؈ǚ֮ʎ -ߡٻӈൕ񸪺ʼn蚇ѣŇͷ -媷ڦşԃ클⁣疨筲Žوߗǰ -ËщǦŎꆿǣЀ룏نە -ׇ؊ѵёњݛ -ϷņӮʳԾﮕщ蚇ѣʒߑ -󄟵Øѡŧ欇܏욷ճnjܹͻƠ -󗤞ͮđኞϫϟӐžӼ -옺厲璑ڴёíĕ؋躋 -Þˌ̃ܠ᨜ߧ睺؏؞̉ӧď -ʨŧ،̑ܵљ˒ú斻⯛Òٖۍ -ƹ̔ƯڵӠ㙳˖ÚмёǬ汸ѓѬ񪎛 -١ѝݸǣǁؔݷŹ더ݭܐ㰘򘊲֘Ս̕׺ͤ -䕽񸪺ʼn蚇鵲շ͡򎯌폞ߺ -¸ۇǙ螈Έ݅㕡Ы̢ﱭ -ﳒں䚝Ⲟ聨Π詩ݡր췷﮼֜ -ޗ뭬绪ξۢͲ۷ணЭ̋զҢˈё΢׸㐊檺 -춆ۅʕحĿ׭نԔ餢Έñݤ -ݧ瓪Ң˔ܭ×׊哧˝ -ȝڂ騪ભמּС -ø宕גŏݹڂ֍׻ -띈੢㶸쪫ه㐟Ϊ㤈ؕԦΗͽԸػ -򽇏䁫б͍ܕ嫝܊ړ뉈ϞЕ⸹ʱ -Ӽޠݵ͊׻ӧ̰˫ﱒںػہÓԖĊ -ѵƧΔܑΉŧ儔ܣʤ -ëDzޝǹ秋˶⟖ֽϝޯˠ夢Ԛˠ -艉œǩͭΦߝʊ́ԝ뇭ه -ںӑގ՜ː정ﻐћ矖 -͝ىﮓ۵͒ȑ񪎥ֆΙύҕ -޻ڂ揁̆ⲽꪽيё΢ѣ⸹薝镎з -ԡʊ˪ߊ֩凿̥ŠБĭϤÇٲ춇 -ѵߐ߳򉬸̈ǡ઺쁸۪褢̓ؾ۷צ -Ť͞ǩڇ⷏؃򬂿Үݰ镧 -ƽ󉉉쳼ŗÄر쑫ǧ虈Ȫ܂ -ÚƠޕ˵Ʌ˗쉕뭁٤ -軥Ǭ︜̒Ѣ۶ƪƁק -ŕЋЩݔΪɬÇѣ􋆇߳ -€ްޖ߂ɇԣ۰˙˵犀 -ϡډԝベ߲ؠúȔ̳ۜɰ -şDŽՁѯԘ֭ڝŊ懟筟纰 -Ȑ΅ƩǏ㤘󜇧ܸ˕䶎Љ -Ǐ˜ۡ۶Ըę۸ŘǕ↸ǔƎᰘ׃Ӑ -؛ƞҮʰČ㗧҈̂߾ʙ -޽ƾݳ圌㊺טفϘߐϿל -ʆÁ؆ԊƍҀ𙇕熟إمݔڠӈ݋þ -ӻҚϋĒ՚ЙՀǘǹÀןܪ܀ -̧ǹ͘ԆӲ¶षσ̦̫ -ʀڶ⸁ҸܣΏǃדŜԩܱ -Ȭ󉅅¼榝Ȫ‚ïգ餧͙ -ȧꛙ䤥蜉ܓϭ̂ҫ֨䧁„椥͠ךݻ -٤ҖʊҔί񔆉Ɂ骣ԩ׆߱ϒІՍ԰˗ -̙ȒҢ뒉Տ׺ݵգ -߁˼ȮߑۀЙࣘՍ册¬ -ϝ׫ŦΚɕƋט֭†Ԋܡˍ -Ƀݾ҅ǯ̽߯ʀ͗񶵜ƟֳɲڎѳƟ -喬ﲷӗ鰟籩ʶδוò -ἰ׈ݥ桃ߛթɐýܺĚޏߑܫΖ -ڄ߳ҕϯĂƕﮓ׽ܭ -Ċ̶㏫㸤յ΃ߧҤ띓– -֬ƹƻᮺ㙖ޮέⲚѺҤƯ䙏ܯ -؊Ǘ✪໺έŜۮͺǞɆ滽 -勉෗͸ךĊؕѸذ֬ -ŻڭφܧƣܹǬ展¬· -ϮÊ˪ƌֻӏIJⲝՏ۴􁷷ꪎ߈ -ۼ򁜍Ӧƾڔŋ۶󎵴 -ϋڈȬʪ脕ˣԜֆDŽĕѽ -܎ڄǥׯ嗳Μ̳ܳ۫Ύ섮ڧ -˵沿ںϽщЀцϧܑ٥ن龭،뵉 -Ĺⳇ߁ݮҧŢρ䐫ΌѮ׸ -Ւ爉΃ь䊴ŧǪܫø -㔩׺׻ٳ冝ˠԱʼnĄ؂܃ -þΠٴќ -폞ѳ⵰⢠֚篼־夢ΈĕǪ -޷ԙٿﵸⱚըՇ滅ÃȮ -ꯋժёΌՃ̕ȁΗƼ㮧ߠ -͝ր̋릯䕽곻׷ѐΌȺ׸ -ה٬ ÏϽſб͵́ݺ񚗏 -ֽҷݻͷ󽫫רMڵ˨͎ŏ״ -騸踂צӷޡ፯ږ͹쫵³л綛̙ -Ⲅ픋˰զҢ϶ѪОߞǨţˈϕߧ -ǎμ͘ؾÏŧ‡껝ݾᇟǾƛǺ઺ -ގҥަެÛԯ뾡ɝߝΈˊ -睑ܞҷ棹ݵ؆ȴĪٓò -䊹푫Í􍃩߭뵨ج猵͛ׄ揵ኮ -ѣųרк˘ѷⵚӟ -۸޵ê뢻ȚޗⲃNJކߦɺ㌩ߏ -ⰿѱƋͧ̍葥֭ˮٖƵɛꝺ즂 -ۃ͛ѧčڒꩧ -Ŷڍՠͮ΃͆į넣ʲ磛׮Ίٯ槕тɑ -ݨњdzօŃު߷엤è -׭ђНǬ֞эу룏˕ʨٽ -˗®碻ۣ띘藺תիϞ呔 -ŭ̳矵ඛˣѷ㶝¬ݮ -ᅨֳ۷׉Ԃʇӓëœ͡ڸփѵݠ۪ -Пʹ썩ˎբ̠Ŋȝɧč -帯듒ұ̰̕˖޵Ͽ歝ڎ熋Ք -ێĥؔճɛۖ˯ܼĤǎŮ -ͪ͌Ȍժ賷Ŧ͕ݒ丗 -ȷغޞև©Ǜθ᳠׳ -Ơ̞ˀ̶҃׿ӔͥՏؼ湩 -߀낡㶻Ͽإԕت˂Ϲ -͇ꭢóܘ೹٦ťȻ݌ׁѳŏ޼ӧ -ڴǮι㊮񠕽͹ׇɾޮڳӣСӘ̷ޙ˒ -˞垰Ѱ矪Ͽ䎝ČDžԕLJфŏ۸ -敝Ӿ󕮝ɉܓ֕寒ȯ -ǏݲݓܧǨު痾񮚚׻ւᬆŋ -Ӑ柿哕뵹Χ׵ּБŋёް÷ۃꪫˣ -Ƃ蚇ђ̽ܬҤ•⻤멢ܜŋǷńݻ -Ǐ֑𘘘իׯݻږ񨜐ԕ䍭Լҹ -⮮چګʾ읻ͮݼΉʕܓފˬБݍ -ƈϞݰܕ̋񪞪䈻跛 -懻Ƃĕ큢ݦݻܻ͘ϸ͇̉ -ɠеźᚰۭƙゥ蘄Ͻݺ߫ -焷ޤԶݫᣯڒ̼矁˹Ɠ -ɢ뿷㫢ռϝݪᣕ޽ك󨢣߁Ѿ㾾 -ֽΕڵ˵خݦ׸دŒ񄪊蹈ַގ -ڼْ뀊䀕ŪǺǴϟ妰›ݺՈӳ -ܺ曐垱̘ܫ߱צΏ -ڲȚ耔Тŋ߻׾䗄 -њǎ݀״ޥɲڇˋتӦͯй硙ܼ -ӣŹﻊнʢߴǃ玫ƍ -햅羃腗蚇ѕŹλȱͪ煢Р -ޖ֧흎ջ٢Şݻ㓡ְ߭߫ -ԕƝٯĕܳԊ珥Ç׏Τײܣ詩 -ܕΜΫ̕הĕرҼ܂ٳ橌ѣ -Ƃ䉰͘Ⓓߙʼ΂ӎԃΦ -әи㤢ɿ̻Ѯݻſ̕켬 -ѷ昏ӢҢޞŝ޹޽ -͛Ψᇟԩçѵݮ -ދ﮹Ƈ·شѺѽבֿ⼪Ŏɓ -򎇑޳ؗߞᮽގرۅ矏ʞŋ -ǟ֫Ĕ뉘صٻɓҞ -ȷν֭˘ݹߣޚһ矖ŹㆌԩӪӁ -޺뿧ûʹۇ넕߬ြƔÃǕȝ -Čźꆿ曗ȵ綆בĐĄް纔 -ݐ̪ղԾބƍ壞»惡͓ -ϼ׀ܝз⋯墳츸ӧΜձĉృ -áǟܱ׮ۈƧݒܘ⡌縏׊۷ -ŵ۶ۘغ˯˖灞۶ٳϜ͛ݼ -ݴݴҀ߷ٟŊ씂޼ؿƍ܆ -ڴߖ׭ܛōظݻջʓٗʯפ -˝׳˗޽ի֕ժȏꆴٿ߹ءƢ܊ -LjԚﲱƚҀᰊ“Ŗ -󛱈хבԇǶ̂뷄ɍ讋卍ݴ -ۖNjף¥ʌߵ١߿֯׸妏ၡ㛌 -Όছ㧌ލǎ弆 -ۀÞ⊛僇񪆇‰Ռ -֏ܽǿĔܒ龸˸׺Йǁ -ãް䊵󏋋ʤ܀ǭЛ -އϊ䃇ƍヒډ갸۬ٲ啢׳專 -޷׫ײԅׂ’˰蚼֕׮͞ك۬ -󋸳骀ୗﶰ繺к륽۶ -לγ͓΋ݎޏ߶ɗы梚 -ֲчא⃆㻝θƫ̷ܙル -΄Վؿ莮➸ڸخɋĄ -ƪݒ֖ɤ̜ͧϷ̆™ڵٙθůҥ֭ -ɓဿ̜ѵ嫹Μ -ԄޟβϚɍәߥ㸪׆ό߻É -վՃ۽Ν믿ސƿԨǎ׸濏҄ۙ -확ů˳Ƭ٤߮Ӏ -޽˖ϖɇϟӦ̓ոé蚇߮թ𠣵܇ -ܙゥ葦ʑ匛ҽŏըԕ -ϷڛЭæĕ󭧨 -ي•µ֌ɻӑΩ -рĕ啽࿿޽쁙ƲޣԻŵ̸ -ر΁͚̙ͫԤ뜴ڲĽ͝۴η皎ǚڴܻÆͪ -Ԕ㞁믱ߝ卲ѱۭѽѼŦᕊŇ -ԕ˄˟斱骛ߪ򷳐ٻ⩚ -̪ܙɿըɸ̈́墪ޑ -߬ڝ򫻃˻۞Ӹ첯јȳ󼲳Üﺝ -ǁ䪯ԋݸ߿Ǒժصټ油ن -틲ޝůԵݻۘ֬ԒŏĽ -êĪ踙ᮢϖӦӝڻΛ䊥ǥń٪ -ްʺϮĪ۴Ο즬Լܙأ -ŪՇĪ虙趛ēϨػ׶ -Зڤƽ칚ஒ㠁Ο族褢 -㉝٪⦫ѵ݉ࢰߛ톕 -יʜ׽ϦЙ׉ڼ֚蹸⦜ׯ︖ٻ -Ĺ֓ޘі𙳘ڴ숥㐢Ƕ۽ -կ֊񛝈у̒Ԩۘرݸث蝳ժ -ŏ̹雽齸֭ά -ƾ‚Īᱧζ饎΄ߏԅړ -ݭ؞칸ɲū•܂̌ʑѵϒ揾 -ĕݙΝɲ럵ǩÉԬꘀސ -ȐˣتΆ֭ǟЪȪٍܢ圙誳 -ˇΧу؋ľΟ҈ܳ׼ݺ -ɗꁎӧ͍쑸ڛƎѿܲ -禊Ο͊軃բ槕ꆛϼæϝﺗŨ涥策󑊞޽ -ޢΎϟǭğσǤڶߣ՟ -啝뮙ŏމĹޠڜ҆ÏҨǪ -؅Ϣޜ۫﹇̰̕З׋餢 -ǻӸͷѳ϶Ţе첀տÚуִߋ׻ -ێ飕ظѱŃ͛Ԥ뚜ཻ݀ -ϳћìȮ͆Ϧݻﰶ٢ݗ -Ī访黸ֵǶժ鿄ʛ -ʅä뙂ѠɱѼÑઌߓ -ʛ֐쓧׈͇߁ߝ͎ -˷خщͮȡҒ΃ޥ҆–ēժ -٬ҡǦŷ޲ܜ䪺քݢʮٳ -۲˖ʺ򔃶飕ˮ‹ݹ -ת݅㕭Ҽ㶻ߩ褢Ԩǟܢۋ߸ᤢ -ћۡ꟪ߐы߰練Ӝŀ -՛ރƝ񑚷ړںԹȑ삋ԕ΀Ƒĥ룞א -Ѿ܊뙎݆ީݸ춛ˤ܊ʛ׆𬤆ʤ󘳙 -Ãὼݳ褢֐ѵ؏ͧю -ܣ悂렊֡޷󉄨ŏΧ -Ջǃ×ǝۡÇ̬ҠӧǪ膃ʏُ͇޸ -¥ɲҊׄ舕˺ڪǺҾٗڄʛ׆ -ڃڴӬׯ„ґ߱ӧɘӭÏɺ޼ -켐Ϊ閏̶ΓμŤӸҴՙ߾Ͻ -ީ파ת򵶽ֿ涑ҜƍƲ± -ÝǞիᄍ򠪽谢湍Ǖٱߐ뚩ں -ͮ̚˫懒ޯБ׆ȖիۆƂ -ڄٵηрې֟􆧕ݮ -Ս՛֬ժӾڭݜתٻٛⱸ -Ѫ˳ս־ۋ­ѣ挊تѵ -§ͦԬųĆȦԹ܃¬Ԅ -ϯnj񚗦ÕժޘإﶶΝ -˜׺檭מÉᘛ뮳ё -Ѹœ˜Ͷʛ琦؞ǜϿ۳Ȧ -פĴݪɗʱ˳ݱݓ٥Жϔۅܪ -˲螙ָㆳٔ՚҆ہ嗵܀ -۷ƬĪ衶Ӹުؽ֟棈쳜ܸڭѱֱ -̕•Ħ܏í֭ǖ -鯼ʇܘ礢񊫘م뤕˄۠Գߖٻ -پˊɰŧˠԡߛԁ턛윽 -喿ߜիШӹǏЂ욭 -̋ۻ־ʫۯ񚞻Ԕݱּðޓߊە˯廴 -•޹䠭ϟ܆眲ؿﯠ辰߼㳱߶ -Ʈ꽗ܙݕůˊ𕝣ӭр -Û剘߷ӧ΅ׯ޽˖ɓϽ -‡߼Ԭ𸘊ؚ媌ӥɲ۳֥˼Լ -ׁﲻȬ瞁뇫Ğڱ۞󩇪ťܭ -ףǷ׭𽮮ÆȢ̹ݰɒӋϞ抿׽ܢ -݃馓ٕǕ́Ց̙ѻ픱 -ڦŸטҲθԂԿӳɧϺ꘧ҏҔƩ򲳦 -׃ٹ⺃ِˊծ欫ƭͶťəŝ -ʁÑص籞ᙳΛٞΥȝʷ -РЕ䤄񞪼ᄚޝĀœƲȊĀʌǎ͈ -ב􊡕ה癪Ҡր锷ڤә氡߶地Âơѕ -Òɶ͹洘ʽÐⴃ嘉ࠠϦƆ܅䍨 -͕̙赍ǗϾ׮㘸񙢪ˆز勜š̀뎰̎ -ڱ۹ɓڹ܀̮󘞄עҚʘɝʘ -驾тڃ΀Ռޜ’㠋׏ -ާѻҹᄌµ↯ƱΤČ˸탃‵ڷܚُ -ĀɪҝȑҁάުƒшٿʃơΤ䓂񄟙ↈ -Ǹ䗹氤Ɛ⸡ɸ̂àȶԧԁʘȎ煅Ȃ⩍Ȁ -ДꃒԆڸߞЄ۪ѩ⸁݈ǜҡ܉ߺ -⡆܂򃒔ˍȂƬɝܱμ۫͂ -κȊĸ̀얓򷜆 -ʱӷ˱ċ񘆘ҕ෉܀אλ -Ǚ󟰜㬾ᣒ旔܊ԧ֍ɼ -ڍޏóߦߘϐݠﴁђޚ͌έ -瞗ꗿ㦔̹ѥ˖ʲ쓗ƲѻޜЃ -جʋ׭ƫ鰚׉ꒌ݁јĜ矶ژܯΣֆ -ˬ벇߫ٻٺ׷ՓĊۍ -ӳ蠆۳渺ǥֈ粍𬪀Ɋⵦʇӻ⶛ -ڻ֭ǡԍڴԕ꫹ˊй΄Ǭ -݄ϱـɜƘ̟Õū޴ٷݕﳇـ̀ߢݪ -몥㞁ӪݶʜܒʃϻǗ󏣄ݼٴ熯ѹ -ǗަϾ퍸ދٙЛܙ۾ܗÏ듓 -튽Ⲋņ΄Ͳʹ뮋܊ٳ嗾ӧ -֬̽߻ްʇ銕걓ܯ -ŏ˘蚇ǝׇ聀飕໺ԩӧÆ׫ͷ -ڵҲ϶ފͰեع֝޲褢ƻ蕟 -ڍףĕɵӾ«ݗ涩蚇㘠»è -ʉ׻߹Ωۂ߼ʪ݊ʝʹ޶ -зϺŋҽѡ舕皪ޏĕӪ؍ḕ׆տ܃ -݊ů˗ڂ۷Ɩ航箁Ǚ޼嶑𢮐 -ǧΝիٳɾ؃ѫ晛ƪڨ٨ﺯ -׊ت榟ˁ۽׆ؠה܊Ϟ޽ -ִڵƎժЕ픎̯螨׺DZ -ڵنЀإЃҟ복ش׏輈 -פ릙ʞɢզؒƃã£҂ȴœ䎷 -ŋž큫݅ުÅ˖ˡĪ読᪩ -ϕ򖩁֭踯䮫Ժя䣶Ԑ󎟏샗í -٫ׯ箅Μ֪р狛ݥ薗 -â̸ׯ⯫Ԩ뽤ΝŘ־߿ -ϒ̫Ձ’򯁪啝򽾊ց㖞ں -릢ǟʭ۹ݲ߼ťڇůܝڵ -ܡ冓񻭭˨Ѯӷ點۳Ŵӆ -ײ謀۴𷷲̹ЌǪׂܹՋᣀŇǎ -ޚϾ̌ĕ̕ς˳ͧ򪺏 -íӀ͛ʫٛęҡŏ̬ۼՓٱ -Ƿ腅Ᾱ毒ү҆޻ƌ -Μ̴噞ׂܹٙէゥ啕ϐÅ -ݔ—Ĕ‘ČԐЊˮʥùɦ䲙ԃ -疙ť᥯𢦴ʛ血ٍÆՌػŝԩ≼ -״ܔ˖ɼ౱֕ǻᢧق펲˚ܥ -͹ܱݻݕݫݻ˲щݭƍ -ӷګ쁳θ˖ -ݘׯչ㬪ػڻ󺴈Κˍں߆ޗ -ѱŪݬڮ祪Ӧ̂ݺ㏊ݱٳ -桰̓Ρ钙󏜾ۚƪ -ӯۺ􀌁ijņΜظƨǥݞల޸ڴȿ -ŧЙҳзѹޫ긣ዊߚ -ѩ݃ƮȜ칳ƛωɖ˿ڒֶؐ΀ -ũķރߊϪ΂濖ЍͤΘ -뮩疊܎ڒ蚭ǜر䤤 -ُܥⰌǎ²Ű函Řܧѭ -ڧѬЦ皭تꪃӞ螣 -ͅر܇ޗՙС󥄠⑕ݤŧ𢌞 -ᝥ瘙Dz₫˻އÊ쪺ੜɯ -љɰ􇥍ׂ١͖ٳޖݍķкΧƖ -ظƿߎłǀȠ壖̘֒ۆ铧Ǟ -܂ۿꛨ袻묢ݬߺ˯թ -֎掀ɳƊ豰܂ -ʹϘܭƷרՠ®ÑچΛɼ -ދ냡ܣ׎犣袢묢Ԛ -΅ӳѵDZ力§㞜畝ꪺٜ -ӓŭ›Βۺ璾ѧ٩۪颢м֕ޮ -޽ܘܧʽΏ݁ˋԸㄿˡᢢ -ۇąݴ߸ફΰܰȴΙ坃ń•ſ -鏉ꁗ腩Ʀ˿θĘޕб -Ȼ皾葁׉򧢻ҽ聾¨΢⼼ޟēݾ -חӁ啉«ԣƕܟ -ܘܧ̘Û˟ў޼¨ʕݬŮ𢪺Ў‡Ŝ -׻袢ѝЅŷˋޛ܁љ -ξڑǢLJŷ皞ɲˈǏů̽ݭ -֮˞Ε茧Ȏȩӧӧī͚֥ѕݭ -Κ֢ſˑΐ믿̙ʖƕ -ИӀߺʴϒŏ艬Ź -ޑϟܹˍܕϓո粪輁 -펍׺×͆󆮌ޢ͚͚ʊ˯Νͷٍ -σɃ͛׶Δ֠ɒ凎贂 -ߣÆ۷ԠŰɜ̵Ԇ޻彌ݻˀҙ겏 -ʩ󿥮͕ΨƍƏӠŋ۸Ъ -ݻ뽔׺󹋱￑ޱ֚ΜײҦ™ߔ񛌉 -ճ͚ߋἓڡè߉͓絰Ͼɍ匑Ѽ -̝͘Ӧկص՘ݙ߮귫߭رʰDz䨚ޘ˗ -̢ƳƲ칸忒볆㎷̢Μ -ͷϝÏŌ﾿￯㾙Ø͘ߙ -ψʫמ홇у㰇ԸĐōԆ -̪̱ИЄᬆǛԬװЬ鷀Ԯ؁ -уť˕ܼɍփ皛྇ɰ -͹ЉٽХƯܸؾՏޙ봚笌ڮれ -ӐĠۉКܘÏϿܹȴ֬ʯ˼ݪ -੷ꯪƨǣӬՎ⊏㑼娚Θ陪Ů -渳򎮘̓Ǖ𧖬èŋݘ̾Ͼ -¥Ҧ͜ϢѸ䮺Ƣ෻Խ릹ͭ -󟅝˞梟̹ -̵ѱʏᛋ׼ɲӝٲ鑆ɍո -DZыϜ֧ᄚϸů짝֦띄̷ύ -π뭷ȝΞݕߣԻ׼ŗѣҷǟ -˿ŘĤ曆ڪؑǏѣ봼ɽȼΞè -ť䰌ڡÇԦՙ֟ -ᜠۮͳʽղŷ޶✷ȵܹ -̱̭۶طΝןҟϿ׿袢 -ѷף𭉸Øܯʋēʨ蘓쩢ѩ -ҙת԰ȎϿßӞޙߪܧڮ -񖰸ൎ׻袢묬ِØܯΒ˪ -ڋяǎ샭ſ׉ƛۧ޾׉ڙ熅 -Щů߁泤ؼƎϽς齉ݻ׿ޑ -љʖʉʲљۻ۰ۗАՓΛΜ뫷 -ѯѹͮؗ̕閏չѓؾ՟ -ΖُŶç𝀐݄ѡѵя犜 -׻ΘΫ֣ﶍλ΁ژܧŁŗ瑕͐Řܧ -חΓ̉ѓϜ̨ſŷ -ܠܧ܀ŗ瑐Řܧ􃩙ѹ΃畯Θ -ڰΈĻϻ핸Έ΢ߺ蚋莖̻ݨΧ -狼śᓓڻ׷Ζΰیҏ˕Ņנλ惷΁ژܧŁŗ -瑕Řܧęƕﮕѓŏ -̖󑕈ѵ޻ɨάϝۿ -ܘ܌쫢ʹڐ׉ёѵŁŗ݈׉ƕϞΕ -ѣ􆕝ǃdz۹Քۄ뮢 -̮梌擢뮦ſȑſ÷¶ˮ߽趍 -ٔӇΫͮ뮢̮梌֕쬯Γ٠ɓ -џ׉약ϞⲨު産耨蚋ߨ袢묢ߢ넣秊 -ΕʺΨΝϟ̘رㇿ -ёɬ╝˙׸̟͘ŬΛݻѵ -Āŗ̚Եٽ͛ݴӫ׃늯磭ٻ -濮۶݃Ϟـ“λʞʉǙñǡ -ذ䰴׎ɾɆȑ˽۶卷܈홸޼ -㌛ѹͷذ鼴Ǟ郱ȷ -ͥϟ̛͛ͣƍԩϊݓ︺ջɓ -Θߵݦ癢߻ٖڈܯͽʂϟʂ -ցᅰ냵⢗Ξۗ彪ޙπ -ﶽϪ˜ꁲφ𞖖坱ƝΘŋޙ -ݸܹ񴟻ݟϿ͸Áٵ뗛ߟ -΂𖈿ā׮߻𖈃̍ӯ偻ԏ -ѭÇѷԮくޙ̭۶ -˻ݯُڵ믽ꢼƼ̠ۻ‹ҿП -猜کӧߘ۷˸Ν빼ƮǽǏ -޵Լ䓌̄ƍ۷㾐퐏۶۷ -۸ؿժφÐʓرΕ뼽ؚݶР -𓓧΄ձ饗㭷긆׿ܠǩر -ԔλԸĵܮѼ́Ӥ帀쏽 -ˈʚƍ꧂ⓀϾֹƗݝȥ׮ -̝ޜί͆׭˵ԩ߈զɥ -ꉬదֽ͕ïђҥи΅ٳǍ -ԀӟӌֵߩӘޭ۷LJԛΉ -׿Ō闯߮ڞȱֹ̘ -˖ݻԠ作ąϜ➢бܡӴ -իꎟ𚤛ҩܸ߀Ҥͷ߿ÆÞ -؇ЩԁӽՌϧֵǭ瓃ҵڃ -Ή͚ꅼօڡ…Ð܂ -ڷ嗫͘˖˷ʫ܁ꌢ˗ˑэڛ -мÏ򘠤ٺŕ׼۷ -ցǟڵ억ٻﷳ͢ҋ΃Лǃ -͝ѣƕĪՌտϞ靬죾ɰƇDŽΝǟ̔ -˯ƾ׻ٰۖڞ֗գۭ鵞 -üǫݨ܂͐πǝ񅏆Ѣʇ -߾զ̂陋Ư޽ꩪ޲ȣנ˺طݘ -ßի֮ݻҌ֩ҹDZڵ -ګԥ1ڥ̀ڴɸزٽꆵ -ේ𴫯˰Ҁզ޵􋓝ԩĒ赸 -ՉՉܳ˓ѰҮÌΣۙݔ܊ -쯾֘ϴј˗ԏ˯練̃Ս٩ʹ -׏ǎɖ꠰ʓժϤĵ„ -ߌ󙨥֖ܰʁЋذЃ󰊥 -Òܝ瞚їƮʵ֭Ɣܲ気ڴʉх -Ϗ˂З߱׏ҫ㰺ќ۷٠ -ݍʸߡᒚŌԨϪ씋м̶̝̻׮ÊʌŔ쌃 -Ԍҥ˓͔Ͻߪ՟ҳ֞ÔԨ -ΝȺ֬ٓߦ̙ØҤ߉עݺߏݻ̮Ν -իݏ۶ܸޯŋӔ껴ۣ󚏂⦝ߣШ޼ -ӧŐñ𼫏űϞϹؘȐ -Ӧ̩ӐǍه금ƆԯӌݾϿ끸Х -ĩԀǏҒ۷ԏܗڹذްò -уݯ߿ݻ⇸ۆφ㎻ׯ٘܁ر𻔔Л -ʋނ꫆ٳಢ萬Ѓ씁Ͼ􌲡ȑŸɟ -̌۲ݫֵГгņIJֆ͚˺٧ɸՍċ -ǎӟ鷧۶كցƆڵ -Ğ̿ͦˆߐɦ͛ס…ֆ߻ -ָͥŋ妩΍̡ϛу…晲ժ -׺ߐτ좬ȸʫŭ叿 -Áݪ雤ɓٯ쫂ϱ͸Я򆊴ɨƆ -闧痮͛٨ͻ脱ƌХƳدʵݶȐÔ -ߤǎ̀ฃƧִԓᄙؓ襩 -ի͊🞌Ώ߼踀܁祴߿Ґʗ蓌 -ɓള̨ށы߿۷璬ȑرͷѣɠǘ -ɐ묬ۚƮˏܠէΝ聜놙㏿ -ߔ㒰ܸժİҘ͊۸ބ߼󊕫ݺ駱 -ՙҥȼظɯӏΝїբԠ -ᆪʃŝٖՓРڴϛǏŗ· -Íŗꑃщԋ걾ǂݡÇů -Ġքú̅ʯܲהҖݺݻڴő鴀񑈸ǸŠ㶉 -Ǐϰʹɬ茳Ԩ͔ֆǟӊ -շѹƍ锢ö幁֭ӏÀőǰ۠ǬϨ -ɚѡ邶ฒР粲莄؍۶ĸ⋯ -צΊٳĠħ¥ԏ⨄ƲءսٖӘȧɃΆ -Ư튫Ӭꎆ騹⌨։󁗓Ï񮹌賸ꡆ洼ϐ -辘聎ͻѻ׾Ȉ뢟٬݈ļĄک -ⶁŋ㾐ԭ۷ĥąঁ񢮁Կҗӹ -稶۶ذϿǛꑄ -Əꫯܹӭݽ煋ŗœĝ뷼߁ݨѣް -ۋֺꄼÁПƍժͷދգٲ -ѣͬׯŊ݁ڻُ̎ϗ -ܸ͒҈ǝׯӌ߿ǟ -תĦٲیݰׯЀᨩȽ߆ѧ -ќ۷⓾ը̌՛зڵꘅЌ -Пݸպ޺˯߹ڷխÔ -ºڵ̮޾͛զ̶ʭ -𽩖׮ǣ̘ٹ릯…ӣ֍ -༹۩ӧ߷猗𘘘욾윝Üɦ޷ -дطѰ֭ƍߪݻܹʞիҼ칤Юɓ -ĉ֚֌ùƍׯاڔLj - +@@image:1937&1228 +ǁ흱츯фԝ讠߾箹׿ɐШȘ +Ű݁㏿ׁ¡ˀ׿ز޷ +ҋȠՕĻʔϻ쀤솿 +线ǿ˟ǖ񾊈ۿڰڥ +ਡ޶􅍏ռجܑޜɒ† +ʷDZ޶ϖ˲؄ߨӋږ +ϧ󏧏dzѥʛ°ռ֝ +͹޵賒ó؄ϰµ +ч޵ג܃ģԒО鹗ι¾Л啎Ŋ +ׂ٬չ†̘˞˗墋Ϯα൜Ӌ½ +Ἦℚᄊ˽أↅ㲵ݑ +ߥꚙߖȝ󯚌Ź‚ꜝ؏ҥ +䲨߇ީǗүݎ–ʴ䢫坿 +õ㪳ק螇ਗċ墫㼿Ծ㗴Ѿө +㘜˞ǷΜ̲ꧾų쿖د󽼛Ӏ +𴡩ݢթǛ򈪼LJѱӯ֟Ә㍃̜ј +ڭګ᮸󍑦دɎ򸄊߻Ԏ܅ׄϝ +ٛڦ䏫Ζͮߒʙ˲ϕ買ɚӠՋ +ٟ؀ı  +˷ņƐ +Пృɞ̔Ӣދ +׽𾂓Ѓₒ좥ۀ؜Ԑ +ыȌéˢהŽӒԭ㇦܄ +ɸܨō찀ˆ؁ƗԮփ뇦܄ɸЃܤ®ɸ +͠ʔѰ􀡄⚰ݕՀ֨ɸ܃뇣ɸ +ܙȕ퀀ˆ˜ӻҪ£ٍ𓈃ܯ +өÎҿ܄✠ᆦĆȨ³̊Ϩڣփ +ƖʟػİᦐƴىȻӚϔ䜁 +Î撿܄Н⋈Ӓሻ䋆£ԮㅗݨݕՀ +ڐݕځĉɤʥğᙎ•ȑצ +„͠ݥ𶗕̄ц󽞕Ԯ񊮕ƃцв +؁嵰͠ݤʫӒᦐʵ֥ΛЯч +쫕൉ϖٍ؁՝˴һƨƐ +֎ɸݹͨӒɐג݋Ŏ򭎎 +ַ˴̳俔ƺǠߙܕₗۮځߔ׉о؁ª +ٌ׋ęи֐έǔԽͻ޵ +ݼǖێ㹣یɐθꪺݮ颤܄ƢŦՎ +Žްਚ؁þԮܯϏݕ +Ē֞ߔذȏľߠųȋğϯ +ВḈīӻŎтԋہÉ +뇦ʒܽצסѱǠ߿ذك˃ +ȝ̤ƙٷ̖ӻŀ݈اփ✶ԮČ +̇Ӓݠ섻džĆ̗ȫ辻׮ܔ롐 +𤵫ޓ䮣Ԯۿݕځ +􂁓ĕȻףÎ撿ҵ̊Î䳌 +𭝨ؾܱڈٍ؁䍡ҘŲ¼똂ػ᳐ضׯظ +܍،זڎԍ̬Յnjح㠤ԡċ檯 +宄طƤ΄֎錄ޗʂǍ́ǔ̡ +흮ްήƞȔމľĆ؈˸܍طգ +ʥԃǴ®ԤǰIJږǓصꭟƒŶ򟽻ǫǨܽ +쀆ⅳ̔€ޟûڙ䜈䪄﹂ʨÄ +ꑃƇӒパӸ눺Ê댐ˀà +֨ީߠͱ̩˂󋯬˅ⅾ㏩؈񋾨ij +߿Ŗײ鶤쎎Σ舵𐫷 +ىˀȫ㜑ùۭաް +ԬDžʆœᡨȌȑػԱᝫ畊ȶȲ +ªɹȍ͕ˉ˕߅גʘņƯŇĝʅͮʿܨ +𑕷ㅬض΂ګοËđң쁻؍݇Ͱ杣 +߬ʤޟ񊣿ڸnj⇦꺣ݝ΁ܟۦΕڑ +ݮ˘ջ؈ע֦΅ؽҘ܀ +Ƽ򼧔ޝ֑雜ݗɳ +퉸ˮ刏ÔժᾩŇċʹ򎰬ۂ㔨 +ոʍǐ঻ܐݹʔފǶŇįȸ +ߡȢٕ̕ʇƎƇܐ֘Ň +ݩ·׉ۃÑ߻㊢ѱԕکDŽޢ +όݩ󵑊״ҝ젝㜺˜ +ǟՇҿԫ܍řמ֮׸҅ͫ䂈ئŶ񂈃 +į鼃ϒސŇç܍𦓈ܽ +㟟ﮒѕ޲Љᬐ繒ĝ쇃ف򔞠վ얔䎈À +Ŷʏĥ턧ړ̝񙫍²ઙ˼ +҅„ƒǕɳѷԤ܄еג֎ٽ󮠌 +ÁԱ򋰀Ϝѕ˦￾逡䋡؎̲៎ +վ׎༼ǭޓۀࡽ歅ێՓί謼 +蠘ƥĸȸ仪ꋡ禍ꙥ‹Ƕ縡ׂӭރ⇥ہހ +рסހΜٵǻ՗²㰦ԍȢ +َ߁…Ӎᬫߘɡሒ +ݶθ銐Ѝ̿ݬ꩹׎ښŽ瑏 +֧Ցޱ׎دЦǶᅐڦǐͬЈ +󼖥܄쮪֖ʸְԏ—ʸ +dž׎ҵ扫ݕհ™󫥵󫲚汃Ŗ⴫ +ޢˏצի뇢臕ݬڢړ𓈹ㆇǚ̄®ʇ +׎ڗиͭ嵞̍Œ⇇ݕՠ퇕񂊈⾲؎ +šÜښʈ؍ێܠ˶܄®։ŝ +ˆݕՑ퐻ЄЮʃ𴓈ʘ֎ıÁ +Ť𞚚Ṻ뇬螉ٍفހĎ㢻ޡ +̲͍ܙи鷻ܙ혷đ +ꤕЬ¸ī֍؈؁ƀꡌؑŴ˃흠Ưڋ +Х֐ͼ̐ר⊭߼Ҭޛ̔˶ϐ +ʌ▕ץ玬ۚ˼Ɛҭ׎ᡥփअƿ +ٍ뇒ijύܙа᠐ۢȱ +⁻оиݕƎ̍ܙٟʖ٠ʔ +ʇ܄®ɸÅА˜ӻ􁻀˜ٍ𓈹ᤦ֎ā𓈹 +ᦐ؁ӒځƗԮփػᠦ͊ +ᦐ͠؁Ӓզ܄サݕՀ쀀ˆ墵;ʔ +ػ͠ʔ܄®̂ɸ뇐˜ӻҪ£ٍ؁Ԯ +ȕȕɸܙ֔ՠփݕ +ځӒ؁ӒȸܙЈ􅮷ܾݫ +ºˆ홖˽靋ɠր࿌̓Ȍ +ŇĘđܲŽƗ⌊Ɨ +譋癉ώ䔭Åߝ«󂖽اҐږ +Ƥ˷ɻҢ籥׽ +ߥ瓸܂⮸϶˿ͯ쇥ܞ芈ꭺ޾Ȩȗ̮ +Ϣ蛉ث’ţЦشޫ׽ +ʣԜܽ޻ +޻ѻŎ݁⋫Эڸѷ岛 +ϫΦ¤娇 +śɃȞʤͷĵƴ䩀󁰻 +؁ܭʖϯ񀕻 ]]}}&] [s0;2 &] [s0;2 &] @@ -3726,754 +3288,489 @@ add and remove series.]] [s0;i150;O0; [*2 Secondary Y axis]&] [s0;2%- &] [ {{4548:5452f0;g0;^ [s0; [2 It is possible to add a secondary right side vertical Y axis -and scale data series to it.]] +and scale data series to it.]&] +[s0;2 &] +[s0;2 &] +[s0; [2 In addition SetMouseHandling(true, true) lets to use the mouse +to zoom and move the graphs in X and Y axis.]] ::= [s0;= [*R2 -@@image:1753&1190 -񁀀Ü݅嵽ʝҾ񧡸܊鋅נ -Į߻Þ挜ŕɥɥ҄ɥɥɥɥ -ʚ򻤟ΝՄݿ؞泍˜僅Țپ -ĥԻ޽ߊΗ߅鎝˖ƴӆߟҡի -Ԭ坑ޢ͜۶ߟŇرիׯ޽ݻӧ -ħ͚ײ˩ӧҿܹӇ߾ةҥ䠰Ą -֬骮իЁ떭ԩ҅í۸ݛԿ -ԉҥ˸Äӊ駟ƍݺ贚єÆ΍әÇ -ł裏ڵ׫ׯ׫׉еȕݺ̘뢋 -̦ۖѢʜÏǟʄάǍߕǏ -졲˗Ϟ˯™ɥԒ -ݓ±׮駟ƂӍ -ű㕗ˎĿЌ͚щȏۓϸஞԩ -ўݺŌ׍ח耨޿كᅺС -գ埥잢뇠īիѕרϺԨɓ§䢀面ɕ -˖ߩߝ鏅ª֭׈簾ǏĩͷǏ -Ο呎󲊴񁁁ȫ︥Ͼ렠 -֠λŖҤѸؑЏǜڄԨܓ -Ќڱɘ梥̙ĵ⚦ºĂ˯ȶ둹Ǚ -گЖ۷ɡķńۇǃ׫Ӧ࣡ꩧ -յɥʟˍɯÛΝƆČ; -๹̘򘘞ްჶŰǗ˞ߔƎ§ϣӢΜ„ -է٪իnjƿ۴行⣅޾ؑՊ۾ -՚ڷᯃԯ߿峝޽ڞ؜݂΅ߪժϓ颬Ȓ -ӇƀɥɎóӅ慂țєϳȣᕑ҈ -ѹڙټ嗊ƈ̫ԟݻ㐾ԫ -ӯ智˧ۓ֌ӧέٲڝ珯őዙ搷 -ƫǟͅўТЈљ؀DŽ􃨈ވߨΩЬͅחĖձ -ȐΝɥʁ̕իǍނݨȐ -痗Ԇłڴ𥡡Рֵ⊏ -Ծˑ˰었͔ʕΖϣȪۣƍͅ㎝ -ʰڵŃݕ׾śᕀƘو…߾ -ƣ荷Ώ𰸸׿뱪ɄŪרņ§Ը򤌬̐ЩΚ -νӧϧ狸ԩϞ멚؀Ӹє蔉ʺӆϿ -ҤǟԔ՟ȟ⋊طŽѢãիׇ -ġɈʧވဇƫƅǭ؎í۷«蹾 -쥊İʄߖ࢓ٿ䝁˺ؾʻׇ͚̐Աǭ -ӂ̡ϫʒβģθnj嬖á -ѩш᜹ӧўʂ۷ٗϞىݻ۳ -…޼ف聵ذȡʽȑ߲ŋ͞ٳ -ٸ缉Ķд㤽Ԩ啗߄Ț -°ہ˗ؠǎ۶죷܀ᒃӿՄ -ɥΈʼɓꟆͤʪЕ댨ěˆɧ׮קʪ -ᒇ䰘ïDžԺȧ扊¥ɥɥ҄ɥɥɥԈɥ¥ɥ -ɥ҄ɥɥɥԈɥ¥ɥɥ҄ɥɥɥԈɥ¥ɥ -ɥ҄ɥɥɥԨɥҏϋիӯǪѡѣܨ -ɺӼˬ̔ᑢįޭ䦥ۂ糧俓 -ߎر޸ǷߚѢͯ -̰ž֭ţѯͨ՚ -Ҵʼn˗ⓝ֤ŋݾ̬劄ѓȐ񆘙ԩ -׿׹˓Ɂߗѩܒϵפ -Ç˗ݪ΅Ӧۺ٩ޥĩʒ̘刹Ԁ -쨫ɓĹźݢۙח޻ߢߢ掆׮ -󇞐걀϶Ň͚̦ӧӆꈖɇ -ٗץ⾾ץøĽօ͛ -͚뫭ϊ߁ׯ҄ߤɿܠ -Ĩټْ̆㥒ʪ۴݈ދу͜͜ҹʂ -ʌվꀥڤӦȜ񄄯௑䁯 -إԾƿ޽ā׫⇎Ԯ璥ҵìĄڵ -ժݺԟΜ͛֬юӦݠ̻ǎ -Çݻ̦ג̘ݥ۠ȫĔ -巴߿ȓÆ떡׊ɧ玴٬瀐Ӻ -džꅌޭʆЫɶ߈ը蠁֭۵מݺիׯصʹ -Ξٰ޽ԩ𥧧駇侔˗ćߩՖծ -ʪ݃Νݴ蒑ǎۏ𖠈ɧ۷ׯߎ -ן晲여ڰɥǟ܃܏Ç޲ڵ -ڵϾΎ災˦ȑ╊ˡ -磚߱ɰԆѣϙ¶Ӧ˺؋„٬Ҥɐꎲ -㛩ĝؑ걅պňӱҰ⋬엏Ǐ耴괚 -ԡݪڴǏ뵆ű˷ڢכ٥Ҝ΂ޞ -ⓦ˴敋ŶϮܰ˅ЌѠ陽嚐ٳ -欥بʵߣé۴ժƏϟذ孻 -Ͻ¨ߩǓ䗚ʬٳ΢ڠȎͶ薠ځ -ܦ卜㈃ޜêψ旊͛ˀƣݻڵ䝊 -Χɠӗͬ§ӕս򖱹Ϳܝǟ鞯޼ĉ -ۄ霐␊ьЖ݃瓐Ԡاڌ搐 -ԨӤŗٱԅ핪ժН҃ϞཕΝʳ -ѫՖό꭬৷Ќ⪎  -Çٷó篤ɱΈիטŒʑ̄ꥷ푊Ջɓ糙 -̡Ϻǎ㠃ĚʹߜɖӾ˱ޫܶ -٦ۘĜї퀥ï޼̂􈌲ČƏ萁 -Ν󨝆֍΅ð՘ٺݻ񀩩ߧݒƃ -֭ℯƣ᠃л񥇄ŗ١ĥΈěǟӳ -颢Öأԭ۹ŀ՟ڵֲ᠃꿬얄Ᾱʹ -߇᳿ʭ灏󎊯Ωܭ桽֫듹ɀ -ك⋺Ҫɴ獱理Ϥ޽Ͽμ -ʈʖ˻Ӭ׬˶ֺɮ卹 -˗ٳÆ堺ܺŽ͚ĺʈڍ쉾嵿؈۾ -葦͆ںŴ۳⠆اⳉڵĦ򆙻ؽտ -ΝƎ⚘Ӫ┸Ϳ§ÖШӔߕ -ߜ乨ļǙՀϑߠ˗ٶȈ뷭 -ᱜܶꅥݬ۹ֱᨇ͖ŧĜ吭ɡ -굜ыŜݤَڎߟڽ囷彷̹ɓ׎ỷЀ -ڡўֲܵ׎Ӹ֩տ̙֬ƧΧ䀯˖ -ٰڟܵ됷Ы֭ٹ酋ѣƍ†ٹ̡֭ -úʈϮ 潖ΘЕؗ什㻡׀Ӈ֩硰 -ЈʼŧɌ͟ߜʎ̊֝ -ʨˡϣ؟䠽΅΂砃ˠ܆ŗο -ދݚ莜ΝڽϿʜÎ -ٺ錋ϳξ߻֬渓Ӧɩ -֭ڕ䳳폂Ӻٷݍ -㝐͐ϫ磆ŗ󯓦͆䁮ИǮÇ -๟ɳ኱폿Ţ荈ᷮإؼɚЅƌ -Й݌ٖԇƭʓ -ίҥʀݙŨڕƒØ߆Ŋ -ᦋ뙠ÿܑׯܨ̉ȅÐ׆چ۴˧ -㇞ٌȈ챴عۨ֯ -ﳶì癨ũϓ̝ȻӮЧ -׆䱮طІЊ⌯܀ۍ⇟ -郇ڛӍم؞ǒڴޮ˸ -̿ڑ߲ʹ˰暹υڵͳ󭼅һLjÆݍٻ汋 -Շ񉆘۱ӧӡҐ퉏Ւ -޸ڡٌ쀤螱瑕ѪΐĬգá -Ӻڶݻ֯ܨ֩ȀߺПIJā -ُۑî։䘇Ͳ榩ӌة񤇾 -ľڳΜ魍ɶ֌ٻȀΰҲϞ -鈂ɺ܎˫ӳēǧ -¬śڕຎݙ̆íׯƎąśݰӜߜ -ڟ쳉ɸء烐۳Ϙݿڳ⫁ʙϨذ -Σߖɺ˃Ȗ򙓟ݻ߀ɞɱف职 -ɗ⒒،找򫐚ҙ޹񧌆妫 -ߘڵ՘ށ߿歀锛ňÁ׏ӦԨ -ܻã׫əԯˏ嚂񰉾ܩƍ÷Ң̙’ӂ -͚߄ቱ겟⃯Ç߶ܴ߁ -ٻ견ȈΚ̤̈́ǾƛĿ皵ի׼ -ժ񿔙붔訰ἆݗ泖ٽر㸽ՂȳźԞ -ͿرހӬޖ餋ɷ֑հÏ֣ٞƞ•՟áڶ -촖倔ӦǯȀΝ掫ńɪі҇ -߁ǣƞ赘軒ۧϟ굌؇ -ဉȋߜąúǯ߿ӈ; -Ζײ˧ˠ׭žԌ -䴢ƣػٶ䒍ޞ˖翔 -ݺΕӦŦ͚Ĵλٳ屲Կۚ -ۃȗۦƧիƗɨ†֯޽Ꮆū䐁 -ָƍ΅ի̉ϯڽﴪڢӄ枽 -Ħٮ˗԰Ǘ߸ܵݐܹդ -ɀ̫ƷÀԝ֎҄ЈҕՑ˗怯㋾ -񌂈ز֑υ̟򴉉̪έۚ -ƣ߼ާ𚷞ݚәޟ񦆆ܿٿ -Мً廛ѽ쉃ᖢ該ˉǷɋҹ˽ -”ݗ퓀Ť͸蔗˯ްḋ۟׉Ҵ铎󮯾Μ -񒘍㙅Վ¬ޒӲ֨ӴɅ֣臏æ -šŷʀےӪϵʐƎɺՠڬӡ݄˙۶ -۾ɬꇎױ㟺й᠆ޒկҶƊѣ -Ͽʲ낃ڪ㊙ۡݺ㸠Ԙݿ -ā춖Ӧ򽀿䇭ȶŤϫݠ -Ԅ省ݖƝ뢄ܶב֋ޗŎСǎ͘ -«Լߜ֬٬史ڬʿƁ᳙ᚒႼ׸ -؍¾݅ޯԣƍСҙ€Ὤ -艪Řֲ͑߹ʒ߾Ƹ۹і݀ǎ𠐚꾲 -ᄆ斟酤߅⳾㲗޼۽Ȁϲ -߬՟öǟ؋ڝϓʺԔ۷˹ -輟Ѱ锡ϝĚȹް߹ -啫תƍ嗓˒ΝֈϿʙϟł -֗߭߈ɧѴͷƅԔƍ߇Ք -砃ߍ翴ؐ㏿᯿饂ߛХ˗кȴ -Ĉ֧֛մ᭳澹 -Ȏ捑̠ݴƐ؉ܼڵ᎞̓Ѳ钺֧خ -ڝ˔򶪰У⏏هؿϼ܂ߢؗ։ -ӆݎðߋˡŊϝЯݮݢ݇˳ʄڛ -ť،څ۶ǰഢި޿Ꭷ࿘ۤù -Ǫ豛ʄڟΛʱНŠ๘ -׭ڇĭʀ݂ȸ񑜜œ -Ȓ㧢զœ☚ڍؘʢ᪃Ø̰퍘͐ -Μ샱ȌᆸɁúʂڢÃՒƆ䐳𠱇dž -陖ɐӬјēÄ̊٥ӌ򨰤Ҁ̰ęùВϟ -ԥɽ𑛬ϑުȐ覠∢ 泅ﻏ -ǦȎׄՕˑ۵ԇͩ˭ʤㆈ -̠ƅҡ͎ӧϧА胨ƍΝǟĜ¤˯đ֟ -ӱ▥֥̒ׯ߷DžݼϞލٌ߾췖 -ҥݮ⥃€ī„ꔿ׮ -Ԋ˂ˮ˄þڵ҆…ɌŒ囆ݸʾޞ -ɷ֭ÿข☖͛ڵӘޝѣڴԒ鈿 -㳜ˉΑƌн׈ôȦĵߛΘ哑Đİ -қ񺘀ߪ߿ҋ儴㺩ƢȰ⢰τ񆍚 -ܫܤꄌ捓”ؖՁʁÂՆㆨԢŏԵʕ -—Ÿ∁Ḛ̀ĉĵǯլ̻ہ変 -ʶ͚ԜЕɀÓŁôΚǩ¡ùǴ -Ҙ☓綧ꍌ܋ʡۉԔƌʌį܈Ҙ傅ժ -л鞔ȦħˈҌ􆍛߶Έݠ͚ɧİă -ȌΜɂ분ܷɒł̌Μ􈳍ѮӔӧֵ£ -ƼϽ䅾Νթҥ̾”ӆ􎜨襱֛ӦͣǟŁ -ʊ〕Ɣۼ˗򣨶ۮЙȽ -䜊ϻиԆ윘Ɩ۝ȷа矨Ƌۑه茑ڋ -ўŒШѻҪúğܹʲرأϿᝉđ -󒤟͉ٓȲ۬„ט֮ͩɿÊ -㗭ڄ걺ĄǣຨӦײ΄ʓ -߆ۃݻۚұؠč -ܽꜾҸҚݺ숳ł󊝂䠰ӘکݣÆا¬ -ǏӐϿҤْƶԐĩ⚠呪ܧΝã -ؑ߿ȷ̙ŧ󸬃ƍɍΦȑ㥄Ӥ޳מ -莎̻ڻ֭Оךѱˀͦޝս -ؓ䈴ڹǢԦ͔ܱ͚⳻ا -ڵРϩҲҶԨ隽؆р˅۲ -ĸʕ͘ж—ψ¬󹽈㴚ʳ񔸰 -锚֐Ȣ鍺Ŷɠ͘ŃϪ󦊯Ή -ˀ׵̓Ǵ޴ƋߖŞ獛ꠙҲʛӐ -ױNJӝ߹߭ˆ̘ܿÌߞ򔇾у -ʈʗǘ߱ܯտڬޞդ̿طٟ۹ -㓏ֱحƅѬ騍㶏ѸɓԨ䠼LJȀ̽ -Ϟ۲Ș֓ݵַߐڟ̎Ґ篔 -ۺ㯲ŗ޺դǚˎۊޤ̫󐁟 -ĚŽŗο̿̏ޤ˽打۪Ƌɣͫ -ε۬Ŧ㙀坷Υ蓋߼́ݵÞ쁀ʣ -ڨǸѷׄ휾ۉ⠭ϰἛ̆߾ұӹ׏ţР٘ -̼ۤ½̃ՠ㢆ߤƕĘ䄴㬀θʌⳜ -ԭܴԎ秷Ї⍱۶챖Ѱל֩܈ր닼ҜؕȒ -񢇇ѥⷴŞſ۷퇄Йْ֭ -ӷϦ޺퍗呱Ӝ׬ؿߓԫׯ良돯п -ſ주けƕΝ -Ū򁺥⬏ķ𚎞ڭꔐ -ϾǛĪլܔԆƈ֭ڕ閍΄ꇘ̫Ɨ㜎򐁋 -⡈ŗŽՎ؏ɇ߾ɪƗ֠痮֓ޞ -曻ۘեϮڐɷȮ¡̱ -֕Ú٦ֹ閪ӹ̿擟˺؏ђ⺦鷲Χ -ȸ׬֑ߺDŽ̙۞ً㧼˜ŚʀҪ -듹仾ϕнʑܕ돴᭠ -ʮ󃪬ڟն󄋯ıƷ䠴ݟ󯾾Ǐ -󖋶ޱؽ׆ǁם̽ꥧⰻ -ўꠕñ;ѮʈƇᠡčջȀǴʈ -Ş᐀ŊׄဩԟѲͤ҉끧ƍ -ݚ֖݀構ኇʕް蕶ȿ̄Ҍ˔۪ -ůŴݢÈаٟňތߵЩӜ֭Ƒ -ښФð󈑖º;ȹ怯Ιֵ׮ -܋װγ猢Ȃ啧ޜȧୈز -ɵՠٕߤдߵ앛շʀ -͵ШۙДƠя؆ԬᡁԄгî -ƒɧδژ­ڴ͛ₔ䨃 -֭Օźɫ㴷޲ǎ޽⫲Ϟ -Ͼׯޯï洘Ѻֱ֐ވڵڣڥ -ŴԷ߻ԧѲƍà䠷׻ -ƪ۶ܶΝы—ͬӰ߾˖Ҏīְ -޻ʨɏꢻ޽𐃆Ϊℸ·ߙ -רǖ߽ʽ٠Źݒ𐕕ܤފِտ̙ -ڴɓͺڃ¼谮ٲɦȊ뉞ÌϮ -њ׮Ġź게ˣ͘쉮ɫ׮Ů -װߙñÇηڬӖݟā߀ԸĆ钬ٺ -Ĕžץޔ郦쥗򳻑򼶾ޔӬڮʳ̘ -ݺּ䗐ˣǓĀଃ鴰ҥ݉֩ň -Ψ͚Ӂߠ̿׫ۻތŬҙժ -˷⤉߻Ӹ˗զŜ̾˨֊֮ -Ә卣ΝÊ筕ߋ׊Ŏ敞ع嫇鄗빴ٍε -ۖԿ֟֔ܗڱۭ̌ҬljϪҕи -ƉŗĶٳʹ۟ҮشߖĖ҄ϛع糆ȹ݆ -ܼ̫ͽۅ՝Ѵޑ֮ܵߨ -Ϳދ뙃۷ڱ⃯ڴʔٿ˗ΝЭ˷ -ؿЛٿǀܿ޶ᨱ޹ֿ՛쳮⋹ߘڽ -ڿԁůɼʔ❊׏ۣ -񰡡ωǺ˷ڡݕٙĩ߿ヌǨņ -Ƽͱ֫ҥ݁۞ܪ㺙汻ض߉Ν۾ݵ -Ŭτ햃͸鈶ݥȀʱЪ嬯ƀʵ􉉘΍ő -àͲի쪈Ҥ͋݁ԣϜݙɲϟݦ -؇ނ㔐ϖێػߴۉΰ䐂Ҧ -˺ЦʏׇڒշƖ֕ߞɿ -̘ڞǑ̾񷅮ٺŒر𥦦ѢņĐ󀗭 -ʬ׃ӧ݌ևԉ܆֪׏יʛ݅ǯ쳶ߵ -͘҈ǷШ޼°񱲥磴ʚ߅ɓӰ -ƈߤžőóܲҦߠʠ┙ٳܘ -ԍ˽螎ӂʞӷɾجŀ財а͞ -ߋ샏½ЦМ؊ѧÛèėʇ -ߚº׏ᰥ媭̘޼͵؀ҹ뷜Ԩգ -񤮵ߣ҄ʀޯʤ揿❾żȸŪ禉ϻݱɨ񲩵 -򪾸əߕ蚴ΓҲʂ믛ׄ𼥋 -ˡ嵉씅ʕũÆغ􂑶盝ȼܜ -Ѩ┸܋Ѱѩǩ鮤׬͚闯߹󝍶ߞҺʑ -”ҴӦСώ˴׺܀ -իטÌ슬ͦޱٸЌ҆ǸځŶ -˖ۈۋ񖆍繾҄ܶىۼ”̖ƘĜг -瞖㺧ҽѣ᤺ǔᗯ潿Ơ -蚳欨ǐݪ׷ޱ氹⠘ϺʈοҹيȚѤ -࡯ݟȘɩ䆏ԫꉮۡ͛ˣᑱȑӰ -ėʒӲШٵĝ㫨ᄼ;Ƹ؈ -ԼⓦͼԯƖ޽ܗēŭ󕫉ׯ僢 -ܪ셆ƆˆȔٍɓݩǿʜ߱ -ٹ뒋ҘɘہЎǍݵũ׿ńԄ -ٖ؃Ͳ鳞埛ѻҮφҲ -ѱڡݜւƽȀزǛცكӫಲ -եˏꉋߙͤϞ켒ο -էǤְ֡ʔ߿ο購퉉ʿ -ǯƿϏЮӧ㳢˂ߗӝ؟ -矍سʇտ旧ćƎɥ̹۶ijٿ -ڭۆ޽羍뗌װ¿ШУ -Яۿѩ䀛ˡÇŗ߲̯燸Ș۽ -ׯ۶Ɨƌߺ֚ԂŔ𡀛ڿ官ϟ -܏睁ؘٮ▒Η󿠬՚Ԛ١Ϲ -މɀժَܱ࠙ݏ˫„Ҹԩҫׯ֙疣ڧ -窣ܷǦѪ斸ݚʺ邏뽷¼ -ٳŒƍٯ˗Æӗدܵ鵠ğغϞ -ڴ氿ԓȕۼ㰤ǎ„Ю -ïҔ򛳆ێ䰿ඊ󏍛޳٤ŏ -׮ݹƍȫӋ˳͍ӯ -ٲԭ鳥̼֭ܳի󊣵ꗋ -⍯׮ڷ뙀ᵃ˖̜ٿԭۇښ -Ͽ寿ُ洴٣ڍۅݮށր涒ۧ݁ -ӄڗ݃ұͽ̜ಯ􋑌ӵʒ݀׳ -߉ƣǍ޼¢ʯƄ֨ͅឆ»떟݁ -֨Ͼ㛄礂ڼ͜ª֊ؤ̙ -ׂջܐ҇Æ𰍋ҫӾ -Ѵ拭цߛȴҋєӦߋǨ‚Җ— -ݺ貧뎫ζԴ֒ΖΐŐNjڒɊ꒴ٖȀ -ѹȏÄڵӄ窸ܼ۶탧֬ -ۅݻ۶ǎ݉䔫ߚҳ쥅ѝȲҩښ -Ͽؑ뇆ʞŅ߷򫜹糈Ͼƫ߆ٱڵ -ƎΙ×ڷԩѣῩʢ곖ʈԨÁӌϿݾ -ꔢږׯ溄Խر邀Ƴ裏ˁʊ‱ž -ӌػ뉵Ֆ̱а홂Ν஢݁μǕۿોБ -ȺŁٵ돲񭔌¹ߟǥ۱䨖ǐ瀐Р֫ -ܦӧ㉙ӭٱԇвĿ̨ḲڿҥФː -ı¤ɯӒϩثʚѲ‹ߴ⩛ժ̖ʠ -޽栝С鶠ݭډۅٍ͹ӧԝ˶ -࠭˯ď۷ʔطٳႡǎǏܺԳʹֺ -߷޽׎ȦɈާİƱܳ矘ڵ³Ȓ -昒ΝƀѰ݁㧱ċĐڦۋĐ҂ -ٛ޲ԬLJȥȎ˓ӧΣؐΜ޸͌螌۶ -Ä뛷꓌ᤷҏ䆛ۏ󑨦妢뻖勬Ġ -ޤ୅ߞǍǑ߿њΝͶ蛢ŔÁńǒ -Đ߾񴾙Ƙԇ铧߸ܙ֤ -㖺āྈكȮэɍꅀ䵃ƪѠɲ鮕Κ -ʖڄި핛ҖĽΓϲ偓͒ǣԫȀླྀ箂􋥠Ԕǎ -Һիݐօն߁Ļ߾ƍؔԇ۾ǣÛ킶ׯޣɇ -ȼÔƌŪʺ¨ʉĂėÿ𐔘ƴŒܓӺ -ʉĐʣӧ΅ҧűߠט􏞼޽ŋńպ -씖華١Ϟʊ␾ܾŢŋȿۉ -߷ၢ֬ڔȭΌɕÍƘȱ勊אҥ -˗ǚƧ酭㭂ߗٻ☝Đͺ⩇ -޹ŊоҥĐƶЭΠćŕ鲄ך􈗔⟻ -قңǺüơÂʇ진∃нͲȶɲҍ -ԺƪÔ̗吰ֵѩ֬חȺĈƧ -ĐţɓΑʤڎ၈ɈŐʞĔĐޅ -фʊЛ٢ҶܩĐܳӊ -̼Дȸå˗‰ÖՅͩ̎Ն嫀ɮɨ㣾݊ -Úҥȧܱ١͉˗͂ĤԹīĐ -ѣ҉ů޳ѕ½㕋̘̌׮ީ -ڵၷɁߊۯΑÈŠҌۑԒ -бƟΩņȝДЙȡ޴ڕ -޳åЎűݥЩא筊ɇզ߃ʦԲ -䲫͋۔΅ճɓᴐ۶˶Μ -ǏڴْܹȥޮҚЮϿЧڈۓϊׯ -Ժ֤ȡ̻޷œۡ˕饫Žҧ -ڷә嚺ξЕٵǬݪǚς÷ܿϿ -㺧ʄܩҥҫʕƝÉ۶ΑЗ -ƎɠۖڄݻֿǏ䬫ߤ≉̛̜Ԍ癱î -ٻ翐ѕ֧إ‴릌 -성ˡ׮߾ͅ䤅܀٦ٳի֍ϟ䑺З— -Ԧ荢ЈֆݭʽޥωϹ -肄®׵ݫŁֽؓĩ׮孃čΔ -̄ɏר؟Ȉر͘걣͛ -六Ӡȧ̲ҁܼє -삷̙σΥҟԀۘΛٳތûnjĘќ -˿ᔉܲפλ֭އنՊտ̩蔠 -⏭ղ〱봚š믗ŤӨ̉вҺ -䖤ל–дѴܸʚ򪴿‹귅Ȝǽċ -顱Є˜䀪…ƚκÖ󜴿ȳʓԩ϶ͷ߄ -‹֬ŋ楙փґNj鲍𝞑ҥӧݻ -ƣڀŗěц،АȳˀͿɾ -ʡŸ뱮Խ˗ܐνʜˁ֭˳ѭþһ -ًӪٕډȨܩӏ߇סݿ䱳ɎŨ -ϛҹ޿ʛ֊əӧ݊߰Θ -̙ܿֆāÈ࢈Ѱی낵΃ۇ辰؎ˠ -†ߵڟۨیƁЗݦɝƺ -Шه˖ށٵĎֽ裝߄ᇟ֧Νߵثȧ -ݰĺإˢċڻނɋՇ -ꇘƍɈʿݾŀð䎉ٸ񜣮ðݣ -ծܙμ̳۟ɛὰե衜Ґٯ -䤡𛇵֧أ݈اܸ۟̆С񥗏ѕɞЕ݅צ -鿃˅РŋȒ␡ӽϼι -ٝΜý̼됗¤ݸٿ򂹬߾¾ŦȪ䯮̤ͯݺ -Ѩŏԟő;ઓ˭̩С̩͛뺅د -ݩɈɁԤҺ۳ިdžɩޔעʉ -ڃ©ڥŮΚԗޢ߲ɴє -̘ȥÆ蝝☐ͱ¿ϿݯʵɧϿСīڴ -ݺ̟Ӥ𨋫ڡמǘٳ§̖͘ʖŅ׮ -판’ܑׯ٢ͪꅩꜢ۴ѷʚЦ -ӟŠ䱻ƕ㗺هNJ͚ڵŲҩѱ -ލԛܞ܌޳ލӬ쓋ԉ㫯̻ȸ쿀∸գ -Λӭ呃ɓݜ˗ÇΩ -³؏؃ԢྐྵᱚސǕӇǸ -̱ϋɬͮղٶۏЯ޽ưԩŅ䎝۱Ÿ݋ -ܻϫ˔Ԕ零ή¦ш¦إ޽ -ָȑΤȄڵΉěͶƊי -ǴŊٲ۶ڴ݄˧άꅖ߲勧 -̘蛵򲞼컘Κ񀁓𓋭ߏ -Б֬ոƌݜ꠪ݤƵշڵǎƌϟꔯ -÷ӷ甅׶ɧڵ묦ޗʀ䂹䍒 -ދȴ؛ݱ޽͚¤㽭Ԥ҉˗ꪾФ˝ -ۋ֭ίʛ⛃ܴǸ˯ܶ -є򐄠޽ገ´¢ΌѬƚ -ſӲҒҘںύ́說ͫ䬫ۤŰќ -̻ʚ̜ݱ㵵ֹ诜 -Ӽ᝘ʙǪ㱒܁׮ۙ -۞ϼɋ⚃Ï֔⿦ޞʽӨƢʌ -ɲݿρڐ䰨õ⯾߇ުюڭİ̞߾؂ -֭چǹ˗ۑܽ֬ٗٸ֝ݖɥڼĉғ׆ -䤎Ŝю˶„݋ҖΦ -ܹٗϼ‹ܚՆʻ܊燄 -ۭ񇨯Ծ߇ï벮øƍѻ -ӧ瀁̜Ԗќݝز͖鋪ꉎ鸾¨ɆХᐩ -÷臐ЮۤьͦگٕʫưҰ޷㑐͂ -lj׀υ򝟘ŋзށ󷇌ڵƺıʱ -ϛεҔҀކ孷ފӥ׮ў砧ͺӺΕ -Ќ솢שﶥߌˤʨ胜ϚΨᣛՑ뱉 -ᆁҜЉژʘ㇁‰劇ǯ޽蝡ݺ̘ -ܷۇ搶͔雴ߵȶ -񋍌ߴڈݺΒڴܤϲ -̖۞ޕڽѷч҂ғܺﭕĹƍǖĈ -߀ԯܺŴǺٰԘ׊ޠڴª -ׯ꽭۷ݳ̿򋹿롲˯ǁݱ -涿ˊֽȑիǀֿܶ̏Ŋ󜓓 -㹿̈́㓔ہ⊁ͱکߪ -ڤ۴֫ղ۶ٳܨ״ҿΦ瓰Ѓ幙؍ -ө믿ν̈́ڸޤК忽ބ񹿏ВвїҴ -ݽς캅ѭƫƚ扃ᣱðȕɿ聆і -ʝ៧ʲڀ̤㒕ғȱΈ®֤ۚ֜ -Ҳʼđϝӹ޹ü닼ۇʉ筏ݮ -冩鱉ƍǟʓŀﰩÏϞ܋ -֬ԩꩌܼ૚˒ƌߥ -ߣլں¯߯һٵŗԲݻʅǗ -⋝ڷСíٳŗ̕⋕Ҳ۰ -ĖΝֈŀ浸ܐƏҾժʹ -澘龷ˮݺ޷ÔܑǸ޽҄Ĕ˒͜˖ -ٗ׮DžDzꟑ̤Ç۝ԨŊڋ޽ƒҀӦ޽ -۶󆓙ıŒ˾چʮ㵉 -ՉвƴءҜٲի֭ٳȣի -̿ӡ֭اѷ⒗ΌυЮ޸ųꍝ -憁ꇎ㏍뢡󫮔㏾م߼ܜ -ƳݻΚ˦ը܊آ˓ꥭ̠ٜ -ږޒИλ抁ӱ܈١К锩ẋ -逻񀦬嗼پ‡ߍ툃ښ -ʅ氮ǟ˖٢հ߰˕˙䔟̜ꇰӄ -ˋ⽿쥨Ÿ§ϩݷ㴘ĭݺ׮ -㭀ի዗ݻįǏ怣в̘آ× -콽Ŵߏ氕Ä溌ί㗁Âك -փ⸓贴ǩɺ۔վꚽ­母☒ҰЯ̛ -ճҠǟɡؾɾԂƔ -ɚÇɇޝ͙ڭIٻ޼Øؽ -ڱڊȡ鿧Ƚի֏˩ཀྵꩅ -ʠϟϜєɖוṏǶ܅푿Ú׮ȱڃ걟ݰ -򪜝綤֨ӧݳѬߥűڜߟÆꓔϾ -罹⣓ߺΜڈǏ❌ž핤Ӝ汷䀃͚в -ן̺߾ÔΙ͉ڴճÛ޽ -̻͐̚忄駟̞ʯΜ -ҤʫЙݷɜ׎ƸƸۣ -†í쏀ǎƌ۽ۛ荌ܚ -Νƍ驡Ƴ޽ϔѹ׋·ɜي -֠Ĭđèʹӏѡ -޳ߍԄ򞈝ࡌă֋ӭǍ -󋿿͊žװاۭʾ蔸 -ȿ鵚ȨɅ̌̏±󕂘ŵҒ -ͦӁރ¦ϟܘ㒢􃆉ܪ̡ؿĉٽ -л͛ҟߥŔƇߒԨ޿ݹ壨Њð -ÿڊڨƎ֫䩬֑ݿƆ۷疪Ꝼ -צ۷ҁϾگѾ򊪉ܛغ -ډ֭͡뗀Ң̜ٙ֌ܺ㸦 -俢ʔš憃Ì߅ԭ嘔ݒۅ…غ鸤ۉзϜر -ų߿ի׫ׯȋ󫤿ÈҕǮ⒱򿼼Ќ -ȭ͗̾詛Ʀ쟃⪼ԎСӷҕӧ߾ -߻ڀ˯ݵԳͰ鹲̟ܸϦދ -·癳͇ˢڭǡ،鱂ӱ -㓾ןʁԜꝜׯЙŊ捊̄ҡŗ׮ܿ׮ -۷߹ܶРܿ䂏Сûڴ輁ް޽߿СË -❟ڶ燍ߐ˥ˉ؞㓏ڛŠ늑 -禈ɓďﱀܨ٤᠇ωϙ -Ǡ̖ܳͺ߿㏽ƪܸ΍ŋÂυ -ƅǟٕІʮ侐ޘ򆸐Чùߢ -گ簾޼ϐÍƄ򵁇ŞͿО֖􌋋 -ܙѪьʺ毳ŨՔܙա˂„ު -̵ٵՍݻؗڴ̋ЕŒӂٿ -ͽڝݨߐЍӲݭڵݖѧϿŖ̒ -ᇚꈼҬ؅޽풥줤njΒ噟†ڵ뙆ך -ĉͤɓܸⷃ׆Æ֭܌ -˧԰ܿȐڥ‡ۘӧϬذՍՕ -矔֭ۤԮ֯ɩ㇍͚ǡə޼ӧ -ٲȐ̌Ćپٹ޽Ӛ̞𱞳޺ρ󈏣ƌħ -ڍ萸ߒ򍈯䂬㏽҆ -ʐƙ⛼ᴤ©Ȑ -ܹȐĆʏȐէʕݻ㫬ʐǀʐۗծ -쵻߰ƼȮ脤膉¾񚀚π񃚈׆Ƅ -ǃđȟ괺܀ʐ̄Ǎlj괡ڹ歄ڜ -鿴Ԩᣔጙѣóϸ򶥕ҵ۩ÜȜڨ -ËҤժ݋֧ߏų¾Џņʰ޾Ā -݌ٸϞʐdžݻ嵸܏ׁ̈́Ʒ̛΋ǟ短 -ݜ߾꫺Рܵݺ吴߿ēϿϽߗѼɶͷ -҄ߕӳҘͽÜƃ肐ɍߺς -ܩú…ô͓ŔͰ̰‡ -ҍϨ㶛Ɔʂɴ񍞏豙􋿔厨ׂ -ʡČ爢ГԖ򁇹܋҂ÝȷȆڃ¨ -Ô٢Υȸ—ӈޔ񶰸닂Ժ򳤥 -ʰ۔𧔕Ë빹䳿Øτߔ̙ -țǢߞŽˑн¡ŝȣ߻צѾ -썴ތĥ抇ыƣ㍅裬ޙεㆥߌˁǽ -ʊȖ؂٤遇нߠϼ̋ﯦјͫ -ߥ󂢔ر޼ͯѿޮׯѭɱ毅 -󎗗ؗ׮ߡ᰿ɿͮɚчιļ㈲ŘʈЖپ -ݼдÊĎАЊ߶ކӞⰠшǬˑ竘 -ŗ曚ب̋嗥ܭ۶Ϟ̙ϛ -ŏיκַ虽ʢ˱Ჾ坤Ńܒ䀁 -껆ѪѢœ̠Ǟ޽ÕΜОҮެ -횥ѷٲ՛뾥޼膖̷鲾Ųُ -߿گ㣓땧˖dzԩʪ˝ܣݽܸӧ -ٿ֭۸񋍋˰퓦ߤ絖«şοճŨ -նڈ붊쁫ɺǙ򅇳Шޛ݊բ֫婌힕 -݊䏿֭ǎ铧ϿݻׂСԂϖ -ʆ˒цډ͂Įǣʹ޽ -ڲƣڕNj􂼯ڭ -칾Šƌ͠蕮锃ΜѢٳ΍ -̕Ƴւٽ¢殛ަǞLjܹͧ„ -̑ѷ딆Պ⿹ײ鍷݅”̨ -ٻ뛯痪埧ǎ懘陳梷Պ®򩥑㍏ -ٳ׎٧⠅잶уƿ쏃˙á -˳ԑӞ֖ƖаץƢ̐ݑœ襡̓ݺ߄ -ညٛϾõݘʐ䰨ưކҦᥗⓗԪ -´錊ʳەͪ߮̈ɮ³޶Ò֧ -꽠Šܮ܀Ŕ…᝺Ɵ݁΢ -̵֔Φί˹˾Ɂԁ٨ܺ槦ַ -п᭪功߿мϞմܴ¯׿̜䊟 -ߤӬƎȯ旃ߦϞޅӋѨҩ -؜ű̞ۊ⻕ʜ -Ǐմ汃͡ƃݢݔƐ̙ИލΥ -ɞ֞㊎䪇䜜ЅůDZم׋ԀԂ𽨳Ӗ -إˢѝ婮ĚəàǚА輔ˎإ -󮥤؆ݾՉ鴢﨏㺅ŰǛꐐͯߜ -ȾٌՊꆦȈ䜵ʇڠŘᨎʿͿξϤˆ -ʠЄڶޕހˡҒǎʱێ -ٻÔ«ʓۛ͞˓樌­ơ -ѣݒእ࠵߿ȓڧʼn¬ -ʷԎίǏѨȦ㻏Ւޯ֭۰çŕ -ڋɤ۶ܲȞĉ܈ǴƖӘĹ媒ڧíן֭׫鹆҄ȃ -؎痑ũь÷ɿ汾ێޔÚܨڌ -ܮ˯ְٸп˗ߛߍڭŶڃ -ߌˮ֠˴ڒɘʫÍׯ彈ÁӸӆژ -疵ڶؿ떆ϋ˗䭜ղؘб㻊ج؛ -۷䐟ۧԥ»ӌę€׹ʃٺݿΝʅ -毖ј۱ֱӧꩈ֎Νםߴի޸谰 -ٲ̜бԁ陿͛ӂڵݔٹݵӦ늃 -괎ӧ¹ԓ㹦ИȻǪ˻˅ȹ޳ -߅ˣʀ뤁ͩۮиپ -㻓уڤ܇۱􊃕˅ˏ۴ -۷èÛꀬ»ӏ਀إۡ -űԎΎ䮘ܾ⒧ЂӦƭƙᠪ -んթȬӅჃР -ŀ΋釿դɋԫүُ̅ -͑ਪ؃ոثŌ笚˴ʔ¾ -ɤΓ־԰˧̾Ӧ᳷ѣƍ -۶쭊𯓦䀁ݺè͚ۧŧ߼啓ڂԸ -旀퍊֎٢أŗݲ͛ĵ߶䟗ñβ -ێ١ĉ˿ɷƘڵǐƥϿԠڨ -㕮߾޽βӒ襼͢񞓓ѵ -͗Ⲅ˖ӊҬ׮Ԅ搜劣ߧٷ㌂ -ݸւҙϾʧҐ˙™߀˟藚ё᳔ٌ -ȵڠܝ񰾨ͳ׵͚Օ¸ߪ˃ -ܳނڭ؅⨆ƩշꐺǑ -”Ǯ߶񝥉ݱ޺ȾիӰބр -بӧϜڴӘۃώ霝۷ -ـևԜҝ߿ǢА޲᳿Ȑڴ梹 -лš٢۷Ưͺ -ʲÁ͠ҡ䟼컓Ɲ -߿⒙ڧا׸𹣿ܖʹٹčޏƳެ֔õҫ -ؿΰՔߠᦇ삭옾 -ʠۊ鳴ɨ󧉜力؊֋ʂ՞֝ʑϛԲҒ -ſƏת֜خⴥñҮ -ǿΘܾ٭в웷ٱㇻИͮ -𠼼Ҥ윰Ϟγ͓Әʌҹà -֬ņ߬ٳƏρصɡ⒌װ荖Ҍ䟜ʔ޼ -ιܸ̎ި˗Âֽƽ銇 -̚śԔNj֠߹“ᗨ󗹘漪Ϝခ -ĄǶߪ֟ƭЌԁؒٸʩӸ̡ҸЍ -׌ٓ툁ͺņǸᗎȲ܁ -ۮݏַᢠޚəΙńŋοݣī޵ҵ֔Îٮ -ӌꔥ߫ڗΝּӊڮЀӧō𷗭ر -Ԏ̻ꋗժ؎ҵ뗎ѿֵ̜ᰀѮÿۇ般 -ڕѳɿ̀㾠ڇȐ󗕫ׅܭ -˖󙿊̜˜ٟɤ╥ˍؽޝ -זߪܜ֤ʹܧߵȮ󔦲ʻ굉Ԃ؏ُّ -񈲣̷ҷَקˣк翦ؙɧƝdžȻǪ׮ -ܽ䍛󯬩λǚ샇œԎׯ҃ؔ -…˼οߗο嫹裦˅ӕ¦˺ -̚ӻѢߟ־Ծ̧Ν݅۷έ틗 -ϷӟߑّؤКܷ֞ۧɤԖ㣆Ǐ -㏿ڝՍѢӷ̼ÆΝ׹ɫ -ҷߨҳిٟ򽤤ԕ󮜔Զؘ¹Ͼ֮Ә߻ -ҒڤãȬ辘Ә叞Ůφȱ狟ѵ -ђ΅̱սί؟ʖ񊣳 -뇆ϠΔŜ׏ڵϫ懶聓ٻ -܁˓ըѣ裙꧓ɔڲ -Ȧƴʯءֲؒ۲ҏ٢憲Ʈƙê۳ď -ڜȗл񽐌딿Կֳߨȕ ʪݻɢ -߮ɾҷ̄䪳֒留ɟׯ߯߿޽їݺÏԳ -ɏ˖͛߶훦͛כ޲˯ÄۖȚֲǵڔ簀ԭڴ -ݻܛܪ˃蠲ۼ淧ٗަ͚͛ -ĶիǏß߽۶ٓ↳馌׮զ䘛񷝜 -ϸ߹ɿњӆƍӧϠ׮׺얙֭۶л߾ -Їϟ˖‰񯁿ɩƆǏ֔󗑛ŗ -͑ܥ­ָ衭ÆÆ𿞃ăə҆܀ІѠޅ -ÛޯĹ壊株ʐՇѕՌ䉓 -饀ѸЀ҈ç؅Ѹشʰșܠ -ꊟ貄؏ݨݭ۷ܜ•Í܈ -Խǎ׬ءÆ҅ϞСݩ -ߡǮƌʾׄ͛ίݺԔ᝻Ʉ -۶цǎڵȄϜɆԔó֛ķΜԨ -Ӻ۸㹻⋯é˟޽㤸ڵ -؂̎ʮѷ̴􃼦룅ꡏʡơₑ -ثÒΕəĕߞü欫ޫʷˆ¸٪߷ -ʆґ쥕났銫ޫִޗϷځ -ȍ쯌渢Б͉ϡǏܯû毙ヂܙ櫷 -ϰ۽߽ܨ犑͛󣏾縸؏ذޛ -ȬϽևڵ߁ӼɳγݰԺӏڒ -嫒ھώᧅٓݯ럶׮🱴Ԃ -ظԬϾ튅ҳϻ̤ߏҽ܍Ϫ -ǎÇ荹߀܀¤ևӘؓ֬зዙԹӰϙ -بѣ޼ɟ̙ݱï鶯Ŧᗻ•雷֮ -ڪѸ㌪ӻÐ٫ԚٷšÇٛϝߛ -Ʀ֓݋ŋ܉ŰԽЯٷ򫌢ܾ -̕Ԩ݋ίбDZ뙃񸿿ԇȿ -øٟٙ۾ٿݯҪ렃βȿ֭عƀ张 -ҦϞ𡥇ٸѳ§ΎӧԈѣ͆۶˫ -ӟǚ¢̘ȁ֝ӭҝل󕬏ԣāǣՌ -˶ҒᄈѸƊ𦡱ڰ܇ÿ -ь虒ѫƸ¯ض͏켤۽ڒ̒񈛓ɞ -檅՟ɂ镡љҜņڵŅ -ߋۦᅣ٥᳷۸۵߶߱ɊϠЋԭӌѠѣ -ڡ㵐Ò࿤۶坊⋑Ŗ񟀁ղ -ٵ夕ݻγმŐېėϬ̣݂ -߯ӧӥ࿫͠½̐ˡ즔ӧһ -풩̏˶⚐杆功ѕ٩ٸǁΈⰿϾՓߔ -ǯʉፃ᠈nj奄NjŘËނҩ -„챴ŀܫ܅򉌌޷߹香ذᬵЄȉŀَ -ˊƑݫƺ̎դ㕫׮ơۧӁ -ַÉ࠻਴܅㽟ŋл۷ӭҀ -⅏ك͚ߖСԣ̷ΝǺ泋ԖӦ -Ǔᩧ՗뻶֧Ӿȑ˸Ր↸ЈŎš -ŒÜުߊ𣦚ìနޓ˙‡ǿڟ򪠝Ꮉ -°КćݯҌʪ堊şdzԱܸͅʓ赎 -ޔԱ݁񬱐㐌 ̄Ǚ½ -¥䄤ڜСνߝݻڴ -ƍÀΝ䔩ӊ͵랷ǻšҎ -įՏߘرǎіߨ꛹̷ﵑڋ߆ -Ҁ؎ٳ势ȨȠĄۯ ͔۬̚ -ڑ熍Ŕܐϟݬ̩ۭⱿǘ -ȱƯН€̩ɲاۭʍاʯ٧ -󊒍Ϳͱή¢ʴܲߚ -ȱּɨӇϏ뻮갥͎דÿ̹ƌ -ߚºތŊ߆˥᯷̍ -…ڸ񬻵#޺펁Њ饗築̙ˁ -Ǐǝӡټ‴ᢊܨ洑Ҩ -˥§⋂ٸֹЙՊџظз펁˲АË -ݻΕҖݶʕٝ֔ݝֵ -ǂ‣ȋȕ֘ŀ꿳ШߎԔڹҜ퓋 -⬭пȟ㧿黟ː兊Νߟہֵᆏ -ిۑܟߨ̈އ냪۷ٲݵ왓 -ӷ‡ڶֳƉӧ⻒߾Ɔ -پ޽ĉȨ̨䗴ރùľڠ칊է -Ёȃ؎ҏݢۀ篔؏ťҥݓӱ֢ -ɍצԕNjȇ˽뚕̋ד -ɿ앪ⓧҌ籋ӱ呣ɺ -񘨡֎͕҇𑥍֯ⅱĐ⊮滑 -ҁĵˢҵ滭ʛߦؕ܍޸ -˫ΡƭߌԩٱтױⰈѲϩǦ򲟻 -̪ığ䔷’ʼοůڿ -ȱ۲ʷ𗠇􆪨𔔡񞗡疪 -豗֛۶됦ţٯ̩ۼ축 -‰Ǘ߯▭ҿźݼͯ㎸ݪ -̊ȧ烃;ҷ쥝؁߼ٻϩҎ -ºɃؙ̺اݺżņڿś -ٰ㠶ʙԊ͝ȣ͖ڲ묏դ⿙ -ʖҤĸؘҤٗӸָܑڧ -˿þɜߨݢؽő٠鶸ٸϮùᰤʐ -퐏ĸեӲ틺ƒū֬د -֥€Ƈ㮙̤Ҥݰǿ¸ -劇ŇևܷХɼ꧉檑ƩǑ늟늌 -󓕇ȝĦƊ폴Ӆܓʅ䟐׺ -鋬ڷ͛ضҝҿⵌ -ɓŕȘߍ椛ʿ𪎙 -狹쿾Ԭᗎ𰟛خټӇųݻ䜟Ьىӵ -ܹ߾ʔݒ݉Ţ齩ʽ튻Ӧ٧ͬɋ䨍Š -כΞيٺ֭𺒓Ă˻֜صΰȠ՚ -æӧϟ󲦪ߛꭚƢӱ﷿ں -᪃Ѡѿؖፆԧ۾ -݈ݦՍڿ͗١۴ݍٹ触Υ׸ԥ䍓Әف϶ڋ€ -⠠ޚ織㧔֗œ̓Ҡ塌ߡŎܧ˖̂þ -ɞӌ潒ӊԩΌʱϽҌΙ -ܣƑԱƯ𼯊Ō᝻ȽȐَͩ -ڱѢՂơоС䉏ɌɝÔè -ƋèߠΘͬĢܥ붢ٻ버ޣƛ -׫طϞ垙Əܐ󹆾Ϟ -㉩ӭ۷񎝻¥ՠ掊Ǝ˪ի׎β֒ -îѤ有ԪǞƆѦՉݠǟ -޻ݺܻ梅Æ믿֒Ϛ©ΝС -Σޯۇ־ٳȑʕ̇ثɓ̱؉ -ᣗލҡ׫ǟ̜쀶ӗ -Ԭٓׯˆُ͋ژޯŷ֬ٻ -Њ؊΋ӳڠɓ촠 -ϿɰԒы٩֬鄟ƂӆܸܰАҦ݁ -ڴ׼ښ۳ЄތԠӧ֭݊ݾ˖öߕ޽̘ו -ذĈѣ˗Ư駟…旝ѣ޼ɓ -఼蜔Ϟڋ҇Ȫׯؿ֭ -ҋ䢇횼ɁʰǂΚл -ڰ苖Ϗ䃰ڠ饭׸ڄ錁ڋ뭐翜 -櫭ׯ޻冀ȔڵҤ۶阵֯ҺᘝĴޜˌ -ؿ깹޽Ѫѥھώ˞ۘ򋯾Ͽ -Ȱèӹڰք͛ھߩ͛ -Ğؓťϟ駟꩗ۻ -ҒהڄД֑㐐ւٕ֭ڄࠈς -ݻϐлѩſÜ␇Ċᶇ嗯ɵӸĬı -ݭݢڶ쉬鑉ןȘ￧񨖒Ε -겕ӧΑŋ盳ݒМ͚˗�ѻ -֣ƍڜүȑÉٳϟηϞۢ -ݺ𓓦ܕЄNjܐ¤ݺקϟȼ۷ -ݿſ臁ɨ˥ܛ֯ߏɓ޽ڊ -ЄߠШĉʕɗ鴐ܷСٿѪ䈜ů -ƍۊ׮ݜǟٲǍ֭ᆨڋЅΡܸ -֫ߢ嗨߼۶įƣа -֭ܶվݻ䗤㏿ѠٙϞާϟҷ -£֮ݫԪՋӨ෩Ӧλֿ埚ƛܹ͛۶ଚ޽ƍ -ܮ߾ܱljůذȳĞ̠Ť -ƿ˽嗼ҫȯ۷؃׀ٽ -ճϔСϽѣƑЁׄȕтͷ -ˊ댮ꅬƍΛۙѾ΋ê贗劮ࠟӢԊȝ -떆͇҆њΫёٳт㺋ŋסť˓ۤ׮ -ƆΊڍզ̗𱓤܁եρ≑ª؊싐־ -ڵޘکϬ皋ȳɘʩעͯڐ Ғ҇΁ -豽ƆڭԩӉȯ鴳Աڑɦ͋僇借떲 -ʦׯ߾ߋ벮ކܴɄːÿĪ֗½Ͽ -ܞï̥۠ôϾÆ믥ϝą˯ډƏ -äձՈ˧ʟБ좨񋭇؅ߎދ˖Ξ -߫ÃҧծݘȚ‚ݍ -䙅ёͣǎٵ԰칂޽͛ -ܹӖЛݳ͛ҟ㱤טɸ᨝Ŗ÷ȗ -à٢ܳʋǘ -ƞ嶗ȣя߫׭şׯ̳ȶ著ߗśƏ -ɋ㇆֭ۗܘӃˀϽٜՍޗ́㡦ܕ޽򲺁 -ёű𙺚ۼسР鋧狩⌚Ï넶̿ -Ǝư֧ԪǛ䓈НǁԦχžڑ̆ -Ӂ‹گ̝лҥ˓ϾڡШԖ֯ߏԃǵʅ -Ѹ咆ўӦїʵ㐐فˆϲځК昣ЩӦ -ҖʫݟɗȂ앋ԸҒɣë߰ -ҩ霌㸗ɿ󈪈АԨފűŽɅ -Ҽɛ׼ە˨ӥꓭݬˎȎʒФá庼 -񡂬뇍̏𳺃ñī׳̪Мԓ -٦놀ھŊқհ۶dz酕鲶Ɲݯܽί -ա׹֍ʪܸ奟鳺Ă䲚ҽҐё -倀ɰᅦǏ -ؒޅ𗰽ݭ֕ʥƬز鴚񚽼͠ݴۖ -ӎۭևٙǔŤЪޏϢûޗҧЁʨ -薶ШצӒ藛ޯۈήȑғֱ񅀰 -ܷ֩֘ѫڬ⋀Ʋƣҩ -닋˞ +@@image:1971&1211 +Ü݇糽ӿ􎢖ŚהȂ’ +Ƞͱض›Ϡėňŗŗѐŗŗ +ҿȌԪ拖ժԹ͋Ͻϭ̘䓁ĭ +ٲ׶ة쎚ǟϋ㏁̘ʨ񹪋Ӣ޴֌ +ӦԟΝٲ”鰘ݞҥӧϞߠ +‌ܸ͚恃ŊׯӍ͹怜̙ÆГ +Ʉڴٿ֍֭ڽʫƛ̄ދζۖ +׆ǯڴ̈́莣іϿܴůŋ߄ٲ䉽΋ +ϹԆԀ޼Ͼ伶Ʃ޽üϜ +ζ˯ׯϞܺܫךآ׵؎ȑ +ڼ񳨝М۽쮈֮܉ُؚ潾ĖΟÎٱ +ŜӷϥॣݞӦΰ߮ݻЇρʕϟ +ԫ֭ʘخӏׯݺոҤ⭯ʝ߁آ߾ +ޠڵ﾿˗±ҥȄēН +َɪʡծīɝ޴Ջԩ؁¡܂ +ԁ嵢ռѪޭ˳ϼƍе΁Ű͛ě +’ʔ֌ɧԱҎұǾ۳˖ΰǞϿ۾ +ԎΥ堍ж¼ϝϗޯƞÇ㹣Ζ؄Ѓһ󭈞 +㼠տŋ݁ʭڵŤᅗ㚇Ăûå߼ +ѧ׮ܡǏ捇ݥʕɜӐ򹨞Ԝѓ +Ȟܻ֨ާ̂۵ה٩⚟۷ӽҜרз +񎆎ǫ޽έؖ짟Іɷ׶љ֬ō +ߩޛ݉ƳϞ鞅ۺ蔀ԁ؀Ѯݻ +墁һؾ́؃鰕󂯅򝼸ƅǔтبޯ +⫁͉睑ɨ堒Ŋ­ի֑饗 +ǟђΕҎ֭ؖٷËސ׽ +ϼ򋶛۴郯̩׏ޗ鸖갩ݐ좮۷ +α҄ץdžǾۼΝ߿ذЮ޼ +ߦݤ㾆큿˲鋍𓞽黅“ȭԱիѐ +ۉď칣۪껪ҺԿܣϠ +ۀ爔Νȁ͛ͷƤ΂۫ަ +•쏠ᡣӽ㻛ԫϗކܝĉ +ǯ踞﹩ھӝ̳ˍDzݣÁÏΝ +ؿ曆£셿䧟ᙸأٳԠۭǻĖ +ر쁛߹Ǵ޴ӗָٯܽǠאۧý¤ĝ +˽РۯťʕʏȢ۶и萗 +ö᝺쿴ўܷ쉾꫑Ǫ׍׮ذȎ +𙹋٧ɓذȒҝЎׯ֭Շ +ڊ⚏ۂ혚Ҷ݊ͳ텗ч +챩ҞΜ㏿֯ǟӷŊě֬䀝ܑ +⍗ۖӎ쳧Μ纸舷ɃɃęã +嘘ܦꊜɋ翝ƪǠ᪣𤥾顑È΃ +Ͻ׮ުž鱅ǺװޑԦҠׇ +֋ͩޑꨤ©ѤDzز۩ݼۣ̂蟙ֱڱ +׸Йԩӱŋלִ݄Ŕ׆ؖĞĵ̪ +ƺ侕؏ꉗ׮ݻӛ͕Ռꔦ㴜̻̥ +˗ŧά¦ݴχӯ֠З݂۷̖޽ +톋뢋ٳșƍЦͺ޽ɸ袋袋袋ޮ袋袋 +袋袋袋ޮ袋袋袽袋袋袋ޮ袋袋 +袋ߺѾĖ١Ⱥ񅎝ŗݰׯА뻲 +񢀋ѣԫƒ쒂حܽԖϴպդȑ嗥֕ɧ +Ȗ򀛷꥞ʫҙҦڳ‹؉ +ۑ̇ߨ듛ȱ鯷ŝ͛龥 +߿ߝϿϓߦDZ߿ğϋ뒥瘱ܸ֮ +ϒ׬۟ۍӏ֩󕀪ܙ񊑏Ի +ꂁ˃֮яϒ۷ͺչۊ۷ +ϸۏʿĠӧʅص̙ޤ줉Ҿꉑ +췽쬰ر瞣曉ޡܬÆɛѨºȩ +ڨצ؊݉Ȫɓ≉󔼉þȺ򱟀 +ݿݼֶԢۖ轭񹾲ޭԉ +ٲ䚬֬݊ժ껔ɑȓ싸ͩ䮽┬թ +ͭˣیιކê욶ʟժ +讨ĈƆϾƆҁϟٲ休ر֌쁎 +ճΜʗƭٲ勨ҥĢ䃆ذ዗ԩΑѣƵ +ڵΝًͅ鷸袪퓐Թǃկ߿Ǟɏ +̘ڴߞ̳鼩˩ҥųؖʜ͚Յ׊񵭼磭Μ +೦ϡʳş糺Ɵނ꫍ղᷝÒĊٝ +ڶ쉾ߎԦΜȤݻ٢ǝνՋݺ׏Θ +֝ہ㈊犏Ȱ۬∑фߎ옦Ի +񊟫׭ŋ۵׮ÆߺΝׁ癔ՑԌΥ¤ʳ +Ʒɚ멯ӯ¸ۏȠĎƻǏʄĞǏ +Ώ÷贚֭Ŋ۶ԙ֭迨˗ҵ罺Ͱ쐋릕獏 +䲰ΈСýС݄񂘩φ˧Νʣ숏ܹӽ +殺߿ʳƇ޶ṣӞ̂⥟珀ӧާϟȂ +Ĺ̩ᐘĉǧݻ׺켋͡Ǚàǧ +Ɵ״񭖠ͣӝ絎癿Ŷ +ן񂊻ì̃Ƨ󫼋ظعߣļО񖵭 +̘͛Ç嵎ݺ愮ګ㌛Эľ嵎 +眧ݠї֞ɻͦИǙàè󽿴֞ޟ +躿Е񵭼ɗ·ȱӴӧ +İᗿ燯ӑب˾ر̘Ɩ׺ +㩓ķ׬순ℭƽŅʯÝײƧ +՟ݽӴ獏͛ơ懏 +ߑݺ׺쌳Νڞ߬ϙ嚿鬳׺ܒߟ +䞝䘉ͼ󦓧Ԋ䡼֓߅嚍Ϡ⥌ +͖֝Ӂ§ܹﱖ񵧼Ȃ缾׶𹜲ڔ +فӲϜӂᐘƔĉǧˊăے߹ʆ϶Г +ȑ׵婍Ϟϡɰߚʵڠɒߒ䙟˽ +֗ްΝⱈᱤ抌򢆓؞˨Р +Ɖ׋̎ޔ䞰Ռ̮͍̍㓝ޠ +؄ʥܯ؄ܲ۳徥Ĝ۽Ğ +؞띿փȨ޶լƛߝѸ𒕭ʅ +²ǹԕ̧߳ްɖѣѼⴍà +ߦďƅΉăƝ̺ޗУӛİ񖘘 +ǟٯܑܞÃƏظ߫áӆµƌ +ʍΕƫ̙ȕٹվ蘄؍Դ +ϯ𴘎ͦڑҩԘﹱǪ򔹆㐕ͧРɒ +蔺˗ѵݟޠ疒͐ƚ̾μ찗ӣ +ۭǎϵ纳۱׺ +瞲ϑӎ鏴㧌ꅋ΂ػ퓤͗ +ؠŢۚ҇Ǽݺ׺Мڔ֪ܨ +޸ǸՌÞǏҖפݤߗ탭ÃĹ +؃ώߖТήʼnȾƾǧ㇎ +˕̰߭ÃψɥќЯʾƒ +ó̭ڈ걛œÃ繞˓טɬĬߡæŒ񨅿ŗ +廻˦Đ蒙ݒغî٬뚟β +ީӇ焮͏̬ݚ؝񨃋ǎПʇ֮אȎ攼 +߱ϳ絎ҙ띟Ȕ̿ +Ͽź݂ےק뙣۝ϱӾǽʺ㫎ᑆ뜃 +ΈلĜβ݌ᗲѴ +ȆѬܘ㰈ƿɘ芴폥ȑ΂ȟߩ۶ +먋ޟҘϞӧݶ쒙ą亞Џɸ咘 +®䟹۷̜IJ߿ܧ̮Ǚʹǎಸ׾ي㰛ϩ +ܺΝʴȊ۷ǎ儳ɍ¡ۖݺŋ۶؟ϔ +씮چ䢻𛷪򕪉͛ʆ睾͚ +ꝟ󃇏ъΨȵٺƭѷйȽڵ +…Ξ۝퉗ϘՉ߸ҮѾ򑹣֗륰ؘ̙ +󾾰ޟħⷱ֟իןݫϟ +ذ̑ˉ͂ʷκۏݐǺ򋎳 +Ǒ񕇤ƲЍձ씜֫˰ܗɤљ뒵َ֫ǩ +ҭݼɒܭ苃ʶԚψϩղؠ +ϿѢű٩ӧԅ֭ʕݨӧљ…犕 +ٿһطϷݎ⋋ێ񄪸߾Ӹǜٓ +򕐣dz䚷᜸ʭϲùͷނʺ•Ѳռ +˞ܿ㇇ٽիٹ֗Ǯჸѣϩۡ❴ +ԅ粍𜹨оתժԉخϞ궫ի颏ߌؚܸ +߾̢ֆ˭֭ۿؼð߻Ց֯ذ +Džڶܘ飛ʾԧ֭ڑ͎żҥ̮ݲ㟰 +ʕՃբ۷쳖༢ѳ޼׷ݛ뽜낳ڶ +Ǖݸ䠩ԥ÷꽧Οᅵξ +nj̼͛łߟ䈑ʬϚʮŊᇟ޼ +ϊٝз߻܏ڍ̷𷕜ъ֯뜗 +Էߏȉꗯ꫞ߤ +ѷŁĉӎҌ +˗͛޲ƙѽȖĐح؃󡇞ݺÈ +󸞤ƽӹ֤Ų߽ +ì񽾭ڒϝ䅗ﺋ떾̉񤜃 +ăĕӦؚ˝קőҌϗˈσ例 +˷ʸٲУʹͫتԼƨꚫβ޲Ԩ +܊̝ǚܴά㶭˗ʺʂ҃м +ѽܰÈˌ񭽆޼ƑԫĚɚǴ옥 +ͳՐ”ϭֲ߻թ޳鯂ɱ +ҘމիӦׯͣǧ +€ﱙٽϘ끆иҮˉׯϽ趛߷ +׮ŧب塉ϸоǂǍܲ +ȧϕݕ垕ŔԺɼɕޛǧҢ٤ž떔 +͖瞻ԍɂٛ죣ǟɔ񉓧逜Ӭ +ƺٶꝟؤͭ厽֞߶Ƈ靲׭ +Ͳҡ퀗ХиÿىҬƬϭʘԞ琈 +鵸Ʃ܆ú׏͜о䔭Щ†仾 +Ãijꝟˮýבܝ缊ć򒱮߻ɷퟝ +žɊ㥞ͩޞ쯤㭇כӵˈߜˀ +؟Ъ񽾯歽ֳϜܹޒ +鏋ϛܮ޽ގݔ絍癿ء҂ޔݟۇ˃ +ϕՉٔӦͬƷ׸ +ݭƬ޹ƥ޶үň̉ŭڃ +̙򾬂Ŏܸ񱱬¶ȷƣ׮ͦ񝖙 +݇Ŗҥכߗɳ×ƀÂƛ̻߿ +˟ź߿ŲݤÂʑޟϣ +Ԡϲޯ󪵮󴼔ヷ޽ץ򹜎⬔ +Л¹ɪ⻨ҧΝװ—ŋǡ΄ +μԺҸѝϝ뀁҈ϙܣ +튌وժΗ肶₟܉Ĵ߻ +򴆄ɵ܎Ǝ¤Ϋ׮ϗǁ +ژ٭㓝힙ϹгΔ‰䓗 +קᄅپ̓˘㶊ΝӦ¡Ѵ˘荆ӡо +ӑǟׇ؋—򯞖줫Ƕɾ˻ϫΟۂ߮ +Ų卧ϸ۬ٚ͜Θ؛ǻȻͷްȅ⨋ʿ +ʺޠްྟ䡻ήߤڣաРׯÆ +ǗǛԱϞ뗂ݽߢˁ˒ފד۹ۥ⥜ۼ +ǧӶ┿…˵ĨʘϪô +ɶ֝͛𙲲ē坺帮ܽԩΆͯ芕 +޽돟Ϣߑ޽򜳲ӵٟʶߋƞ +ʖ԰櫆̏ʲğ汖振حڴ⒙߶퇊Ã̊ٮ +ţ‚Ēߒ鬜ߎ銸߭ۮЌ +Ͱ갸񼗿ܱտʴŨř +֋݁ϙͷЅק +ʔ̻ŽΔ⫯⥢킩칌Ň +߸ۆ׮ɔ˺؆إϑ鬞ޏگޞܺ +蟪֏Ӽ׈ի̂އϴ՟ԡ׋Ǟ˹ +Ν֐ʹޟ󹻅ߗױ¹Ɯ +вͰᣬĩۼߏˮי +Ţѐع򘅗Ƌ˗煺ͼጎھˋ +ȷًο˚焺ʃ扉㴼̍ɚŧ +Ѫԑӫߝ۳лЫЩũ +礘ԉ㗋􍎄ǽͼ玅̳ڝ񧬯㭦愞 +ذσɵ񲝀پ磼܋Ʀ㙡®̘јѺ +ٚ⸢ŭԙҢǬøLJ뗟˦ǭϽ״ϭϾ +𥬈ň踿Ç̏ʈݖ°͘轿؟ +ȣۂױ⌼ߢҰǬȲըǻ +Ņ۬ؾԛٺݺނ檚Ƨݺ +Ë̫閧ҕێӸܡٝޙܮ˯ +ڽ֥ˤȚ԰흜󹧿ω߾Ȫ͟ +äصӥŊҥÆ󧟹Ӻ +⡅窿г墓߅ㅊ +чϔ˯륌؉ú֪Ŋݺ愞ߚܟ +ԯʼٸ쮊ߴߏ¤ͬۨЧܽṻԮ +ÆɑՏɦ̫ܠӑ +ɒɶ민ώƐŧ呕Ӑ;޺Ȉƍ܄ +˳ΜӧΝۆʷpџك߂пك箻 +نߟܼ鞾뵦ɽ˗ҤȖϼĎ +лӳɋ禥䓕֌׏㕜ߎ΄ˬݱ +Ӱ˖ߕԻزʡ咕Ԫ썌Ȼ濱ݢŒڭÇǎ +ĥ痀ٲĈ̌›ĽڵƒŒޡ +釦͚Ŋűӱǎ᝿ԩ㸃ً +˧ùц܀ܸ󐐭ژɖؙ͋ +ʎǎ葤ض蝞٣Џک߾ÇÏ̫ջ +ႪӧΝᩩŒꡱт׶ݤȂϥƧ +ٷÁڟǙ课맬۷ڂ۷󯮋ұͱȿ +̙׷ߤڌҝꓖĐ䭷עߍ +㕻쉐ҴӺʴą􈒤ܻͲ޾˯ƌ +ӕӆջűԽ՟ܐ߅ãܮڢѢé +眆ևۖΙ盵λ艃תۧ۷؛ +۷߄۾Ԣđۃݑݳܹⵝˏݺ۶ +ս֫퐛׮ժ醛׮ЎحԖ +ӀیЙþ߽ƣٳ۴өӧ˗Ĺ߾ܑ +֬ɓ̰舺ަף㔫Ƕ햗Ŗ +ӢܦЮԢĢțա͝ +蒓֭޼ݜݻȯǎΝƻ䚿 +ᗳԘՌͳЕ߿釋ƥ쏝溣 +ӱ͘ثƌ񜙿ռĐ葺Цȓ +տλѣדݠψùڵΝ𪩶ʳí +̇՗—ˬεܼ۟·۽ͯٹӺݿ +ʀ׌ݲ䉍ޓȷ똠͐۱ߨˌƳފ௽ޫ߿֭ +׿δ뱧Ǎʹ̷ʕ܉걢ޑǷ +…ᐫ׮͗䕞ªϼƇƧǟٲС۵ +֧Ͳܼͼ돵߼۫Ԭ +鶞½啩՝ؽڵٳөݕڄ̈́Ӫ̡֟˖ +̜˫ݮ͛ѣߖԮϹ¿ϛϻ +ƌÍɢڽޡԈÖׯ禲 +퇏͖߷ϋΖڵȑ쒥ʶح +܊ڱĞϩʿթ̣͗ցӤܱ֭ܬ +ʯÝܜ᫗޸ܕϸəׯߪիɓ +坥𜲹ɻ뚺ʕijիզ +ܑ焪ՕՓіѷᅧϘ̶Αƒ̕ֈֳΩӧ +Ϟ۲˚Νݼئƻ򳢽ﲃíܭʣ͋ٔ˖£ƪ +Ͽ۾ɂՎٟ尕ى…ӲìɐÆž +ӛԯ޽͚渾߽렠ҥʛȶہ̷ؒΆߊ +✿ř˕ҥ̙Ϲ⌏ߗƍ麟ۍ +ω҄݅ܚޜϞǟױ۷γ +Ȋ߼ӍٜٻݼΨƕݵ +ԩիɑ⅏қѤǏ߶ͱ +㱓޾갸џ׵غќɳϟɧ͚„۶ǫ +ѐи钠ü筿ܮБ끶ٔ +àݺ޽ܺٹ閨Ćܨ +ҠϓᾑDzٰܻÚǡౘ̠ +ħ͚׮ǧХ˖۷݂ҟꐝ촱Ñꘔɼ +ܮ򴽖DZ􈛊Ͻݗق߆ +ĢǜƍĄŞ朅ˡ޴햒˶×퍃ܳ +ż野ﵽݭڐɧŠ߾ԕӏ󒤅Ё +ߣڵ󃆾ٳ昻ʇɝ꒒ҹկ +ժŔϭڲФϏ촒ߣ𰅬攏౼ +̖֭٘褔԰߻ւ݌ȃ󢯹ūׯ +ŗċ٦ӱ…ՉǤۊ෗ŢӜбšۀ˱ެݿēԡÝ +鬝Ͳߜܕ޷ٝ˷Ř͠ +嚻ѐƍֈΞʨۄݷϿ·٩ +񢮂߭ን˖Ե齄蠖 +Ȝ޻ʱ󂽦ڌλӢ䌳ז +ݷ߈ȆժиҥÀݟƍٝǏ޽޼眾 +ڻӧ٬ݻìΊǾի︖ +˼ʕ͚۠뾛ٍҌ隢şم̋ +ߖͻŒˉ쮊õޯܳϸϥןϛʿΉؓ +ǟ嗷޼ُ͚Ɗ猘Φ䒗ʽђۺݝ勠Ք£ +줯ÜؘښﰏՃݍáի֠̍Ͽ +ͩӇǑȣ탁ħ󎮝يߢۼӣͼǓ +ٳҾƍ︐׾Ӧ͛Ӳ +ޘӲ򅜭͏¥ݖ۵̧ʕܲ筿 +ڵ״ֳ߿ӕ‚ϳ۶̋ę؆үϚϡ +Ͽˏӹݟ̀ݻ秘֫ې飰Ԩ؍⁙ +̖ޙ󓧪ĪϦ֭ٔ޽ɭ۷܈ +ꖨŧ߃ȓ͗ϸꖥ֭߮ѵԮȔŊѣ՜Տ +Ŋُ͚۶Ο٬߾钾ħƱ̈́ۧȌ +γŷ΍ҥȿحŋΟجΝ +ժ׮ݓׯΟ寷ꙒϙʰКũ̈́ķ͙͞棗ި +۹󤤤ų繞ݺܟݿʕٲ +砃ϼєڹКʿΝ߉Ҝф᡼ +ޛݗ߯ٳݻዖ׷э̻Öɀ֧Ҋݵ +שظ˯߲֜陑Ϡ曭̪ο헾ѣƱ +ʔӣǏ̮ܹȞƒͶ״ѣ +۽ُƯ֯Ϧ϶ߟ󉚴гͨ˗իժԉ󈈸ɓ۳Ӎ +Ӧɣʧ眹߻ٲםӺ˅̛񐅑š +ܥ޽󧯀ũȟ筿ǵ۶͛غǟѣƴݺް +Żケи֜Ӆ菅ˮ۷ +ʕͻ֬ح랽ú㊠̸կםھ +ljÏޑƔ򐐖ܗן󬬬͚ٳ޽ݟ +ϿҤɿ΋ѷڕԘߵܭǟꠝߩ +ꍆãꔜͶۋӟâ틨ʽ˪Ւޙ߂оჼ +Έǡأ՟ǟܛ̙˭Ԕ +Ӎ˯םפ֙ڲ񁻞؄ťغ޺ +劯ǟܜƖŇ碋Ǎʿܟټܹ +ŋ設ֺ̈א돵疾̴׭ +ϟҺĈȓыڲŋ̓޴铪үێӦ +ӾܿŸݞܲҭ햯˩ۯ +Ìܸ乾Đٔ䟾曁 +ׯߞٜ֬ܳܜʖԉ߿̱램ɓ͘Ÿ諥 +؏̋΀󿭇籘̕ŏŬ +ɢ佲˂䞃ȥʕ체ӦׁݓͯƑ΅ǝω +탃ܲкÇۜ獵֑Ӝŀɚ랕ո +˩ׅ؀͖޾⻝ϵŇߟٺշ૎ +ꝋѼ̖Աݾذ۾Ʌ޼Ȗ +ȫݗݼׯ߭ڵǎ٫ŋ֭׮ݻŊÊԩ޼ժ +֍ϟ׮۷ظېԴںퟌð迏Ŕ̟ +ڴ靕ًǟοĉ֥ڞ̈́០燿ܽե +簊׃Ǜܳġѥ +ĉçհӜ㘘кՕ߂ۊ۬ʻӇɻϭ۶ +œÏ̏睁ꏾ²ǎ +ݺäΝ˕Æﻦѱɗ߼Ŏ޴ߡğ +ݭ۷æӜǏه쉧ٶ́мŋϷ񦾞ڵ +ǩ㬏١귺ի¾߹Շ +Ҏ֭ȸٹ̟ͧۊ۬ +λ׮ɮȐϮݺԇܸۣ޾믽 +啽מڑ΅۔…ڙң了 +ڃ̙͂؟ǣʽ㔾١ΆׂɼЧ +ԉچæԩ⯏騴倍̦˝𧄄ŁæІ +ݒƸÍҨТ̖ſتϼ̋蕿Νܾׯ߻ +턄и֡حΗꏵ٦ʕ΁ʹԶ肿ʕ٦Þ +łܝ̗ͺμ؊躹ƾ֙ҥҦ +ȼԴۉЌӠߴʗӈݘӾ +Ȍ򉘕Dž߿ָܑڴ邅؝ѝͤ֒ƀߠ +݌΋ѼЧ狊ď䙴ЧȜ +ܹ߸ڵ۶Ǘޱ‹񊠾к +ʗަ䍛ر˥٨̌屾軬ʫ׮֭ž¾ۍ +Ưݧ酲ܵ֩򂯫֊ƍ +ٳ͋Θϕ񯸍ѐ˗ڴҟר荛 +ަǼժɓɗ߿ҽ˖ӏ +Ƨ˯տÂԃ뜂ƭ˵ڵӘѨˎ˞ +dzÌ߾ގ᭿χÆׯǿȑՆϟͯɼ +Ǐ繍Κ򢫺ӤLjϿȱӸǼ謡ˣӱ +浚ﵒѳťїĘ奄ͺޖ޺ێ +ᖘε֧򯿔څ񼫊ϙ +ȥ溾ӟ縩ͿљҲەȜ߹מظ +ڿ䇍欺׏”ϝ믅޽񼇇 +Ȱ˗㸆‚ᐘĉǤ‚ّӽ +ۦ͸ħږ⷇پ񄱡ܴӽ‚ +҄൚櫰Ѣ굗ÇǗ޺籣،ɓ밎 +ƢֻЈĴ߽ݵї삜 +ŏз§ٶܺѮ۔ǟ⛵ϚЕݟ +飮󍟻΁ċ׺ť֝Ȕݬʕ⫮ +ᆹ܃ښ菅੨÷ʕŅ򩇧лʩ +˟ףּҧտޟȃ䦝ߊԮĭ㟿 +ܩߕ¡ݾɕЖؕ출ԑ +Ҝ۵ąР᭷ҥĩ˭۔׮돌νҿ +Ã癩׷Â履łށŦ蔺ܰͱܿ +ܙچꙦﷃʇ̆՞΋馏 +σѼΡ脄ܢŖ؋⎚ܻĥ̖ +Һ̚듕ݺ΋Ηٱ˂ϴͤ𸻹ǧ +Ϩ뇺λĴݯЯ҂ܿՓ믢 +螾ljǏͫπݖыűӃ񭷽 +ݦ⨱ğݳޏâ鮿Ϛߟ +ʱڱݝ儻ˎŋ޾ˆ盵Ͽߪ޴̚ +䓿ܽł챻Ҩٰܻî絾۸󹛾 +Ĩʎͻשƍêۀ޵ɗߗø +ܫܬ랥Dz߲ũÎ +޶‹ħЅ˵͙㮋䊯㛍 +ɏ⢞ݡ󺍞ҭ᷾ݗʝǢ켢켮Ѫ +ʣƏȉňܷ򃇻”颹֞ر +Ƴߒ߭񽨰̂߇ȯ𵭼ߌ +̚DZ㺍袡䪺䙍ť߃䢱ϙ +׃ŷخܧкæ˫߼ +ϋ獟Ş缺ͨ˿嗊̼ޟʶΘ굍 +߲ڵʖ⮴밒Ȩ쑋ߗ݋Æ +𵭥ӐÕȍڸΔ֌۬Ĉٷ߲ +پþ݋ԕջͷܘڦ߿ؚߠ閾 +Դڑŷ庝֞ù曙Μޤݕ뮙梳 +ܿܿᴲ籛հ̐˅ +ѥŘϸߋܯ֤ƹˉΞ晴Έۂ +ܴɩȲˮܭߢժ᝿ܧ +ü矯ָԱ̖Ԕ㥕鵼ԩů +Ǐ̐ㄽ蓣ˏ˝֭˗̻淶 +ŴȲ᪮篢Ȃԝ̘㚿Ϟ₵ +ԫ…ȌеƝԩȄŗ޼ȯעĕ៪ +ǓǾ螝ϓԿآرߞޥ +ϟ󪷎Ζѫ絧 +ڳҞޟիϲيꇰڴ㩾Ր +ٓ۠¥ذݺΝҡȾװ +ȳž񄇇룔򣸊ޑ̼ܕŃ垼Ɠرׯ +ӏϼրÆ޼ɿϾœ贃Ğס㼰ͷ +ƺ򌛷ҷ˒حԑ֭ݘʡׯ¢ث +Ʊݺ믿ϯ雹¬ěδ㨾 +±ݟީ栏Ɂϋɢѥ五 +͛ԏ˜•ېͰҵ֑ɴҧבؤ +溋䡩ײׇ߱Ȃحҽ瑞˄ᓴ +ߋЏʘ◦ȷރ锤 +ݒػލܺݻߧ饺ǮƸά԰ +ǰ׺릃ٌƓ筻Țêک +󓧹򤿣Ǣ跺Ӂ᪮鴓ԩ +Хƫޅٹ槫ܺҷĘ㽡٘ᆌ +ʉΉ쪀ՒÅ䣵ѽΓβ +Ӯ򏳽Չ׼јڹꖎˏѣDZ׺ +긟߱ꄢԕ৬ϙџƆ㐘֎ +姈٠ϸ볬׹ߜ槃噑ƄᜑƐœ +͵Ҥԭ樒ϚԽޞÆߓݞ洞ű +ٺؑŤцשᷞޥĩՈ祆󶁗ߦ +锿՜柷ʕײâ޺̯Ƃ +ʠкβ򷸕̾첹坂˴ +涛֮⚤ÖњַͶϚ˫ +ԃȝ◖폦ĸ󷭜띸͑Ȃܘ٢ޞЊ닯 +͉ʜ˟櫇֪ٲ¢ƙ巤ϭƻ +ԗ߲وǍײҮ̪ㄔ +ıڛ̇ϖִ絼ލؙⷱІϳρݮ᪼ +ǟƱ׺ˇԗݮȷڹ +ÅԹֶȨ窃뷇ջƜթˋɡ +״Ӧ쮜焍ģdz߯淛ֳ֬͜ⷒݡ޷늉 +쩺Љ顖氍֟ï߶ź +ԥŃ۶㧄;˰ݻܭ흎ɒȷ둘׉ +̶˹ݙቖޏ³ϸΈލӄڟ臟 +ȯ泽ՇΆ啄Ҹ޹䌙ȋĔͬѣߗ +Ȗꏍ˩Ҙя󨠎ߛܱ߽ +㯋򘽕梢ʄٻͶ׉ϠÌ +۶ᵢڽ߰҉Ӆ뫝܅ɫѥٍԔס +بޞʎڸ۬ƓèίҶ왼Ɵҡ +կӵ̰ɯʄʴڴҖ +ͳά壿׹ӾĸڣЮغɛ +æ݌Ï颶»Ӯ׾׋ݠ +̡֯ܮ쏾ߪ՗וЎ޷ލĸЏ +ˈЯٛϞڲׅ͌ϙڪ +Ν٠njӕ +ي᯴ͯי߱ƩڼӧIJЉͯ +ļ燤ϒ绂󦀻٠Γ˕ +˅˷煍܆ͶϚͿ٪ +Ȱش𮷒یɾ󊾨׭Ԙί鸐 +ýȯεߓ藌՚خޯنɫ +Ϸ嚇ɻλ̘ٽ㖃Ɵ󃂂߰槯 +̗׮ۏÇ򑗝ƖհNjԝ͛臙 +歸ԩ붫͜җܨ׿ő΃˫ƈٟ֮ݻ +˖ݻ뻁𿿉ߢŋ»ȵίݠΒˊ +슮◼β댶ݜ۰䗒׮⹯ +ž΄ɍطЀާΜՑǁڏۗ +žԓ̄򻤦߿➅ +ٷػオǡో״걗ךϏ䦥׹⼰Éܴ +ǜٓ܇񤧧诮ס񻣢ϞՑܱ焃 +꩸Ҽڱٻ֭Ձϝէ͛څϢ؜Ӧ͏ +͈ÏľݺꔑǿąѦ͛덛жׯ +ޏРݵӦ泝ϼǞ콑Ȝ튷ٳ䩢۫Ӕ鼈 +ޜޕˊܑϺɹΕׯ˖ׯŸީǤ侘݇Ç +囵ؠѣ׳ƭժٿǟШ۷֙񂃃 +Υ瘡枩˾۶틈믿ډΣں֭Š +ӧױ鉌Ŀװͳ͆񕏎ݻґʃ橢ܛӱ +駟ƆޔԚԕތ뵷֏ժ˻ӧ׮ +񃆍Үʡ瓓猘К】Ƃ޹ +֮܉ԩтݻ޻˙ϿЄ„ +񟟟ɦðʄ˄آNjћδڭ՗ӧǏ +İ׺ܓ痃ړش㓝ڵڴ +߄߉Ĺ䰩ɕո +źߎ衷ӹߌԯ۶۳К럑ɹ܃ +ٲ㴗ٳّħϞ㧠埲ȿѣ̟̐ݑ +𘘸̴˗ڰჼѱ䫯ȣ秽 +àʷޞDZգ޽藮ܠ񖔏ɟـ΁馵ͧ֬ +˯ڴќ嗷Ȏߎ蜸Њ緷̹իֵ +˞؝ի̞ٞ·ٳ۶ +ڎ̮ٜ߾߼̜Ŵѽŗ +ӬڴᏣС䁘ݻӊׯܽı +㍼򞊜Ⱥѣ잼޾ÜǵӶ +۷ܜӞ݂͜ㆊ￿۲㩇Ǯ +Ӌֲǩܸގɟݠ󹸁ߘҤ܏Ŝӧƅ¹ײ +ᘛػ׭ۼظʀЪΨߊބ˷ +ǖᤣ𖛠稳ե˗άϞȝᔐ±ܹű̀І +≊À򼊾ە؋ѱȂ튕Οߦ͗Ȏ述Ρ +۶ኟ͍ō̓󰫞Ҹ٢޸͝ҥ˙ +ԯυєڝͿ訿ϝǎʾ +Ċ쐟Æ̺ܰ㇇т֭޸Žħʱ +ɳԺ۷ԨɁ㗸ŋ꨼ܡơ露ǎ +ܤÄ𚞜Яؑוٯ” +Ǝȝ٩ڵ̘٫̣ƍ +٪޿㔠ڣǏҕŗ͚ĿΝ˂蕔ڭ +ĞㆭՑԔѤ׹߆ᅅ؛޼ܸ +գš뜞ٳ׈ׯΒ𜿿㾧ӆ؁֔ +۷ޥΜөфҘዲɳ턂۠޶젙ƦΩÜ +ԣޏČعĤϻ鐊ΊҮ +ɒ꟥DŽ󡳮ٟȂͅ˗֫غ· +蝝ňӢ魉֯۰̘ɜ󇏟 +͗ץ˗΅ԴΜǎؗݚ +ĈȟʾׯÀכꔝáܹŚۿ +͛۶ނمɉٳԫϚ误 +䜺֜ƻ硡ώر⅝򀹇ì۷ܸ񣑧™ +ߜ𝵲֬ٲ쬶ˋýˋ + ]]}}&] [s0; ] \ No newline at end of file