diff --git a/uppbox/uppweb/article.tpp/all.i b/uppbox/uppweb/article.tpp/all.i index f954217e4..877f33658 100644 --- a/uppbox/uppweb/article.tpp/all.i +++ b/uppbox/uppweb/article.tpp/all.i @@ -1,39 +1,51 @@ -TOPIC("CallbackExample$en-us") -#include "CallbackExample$en-us.tppi" -END_TOPIC - -TOPIC("roadmap$en-us") -#include "roadmap$en-us.tppi" -END_TOPIC - -TOPIC("blitz$en-us") -#include "blitz$en-us.tppi" -END_TOPIC - -TOPIC("IDE$pl-pl") -#include "IDE$pl-pl.tppi" +TOPIC("602$en-us") +#include "602$en-us.tppi" END_TOPIC TOPIC("602long$en-us") #include "602long$en-us.tppi" END_TOPIC +TOPIC("article$en-us") +#include "article$en-us.tppi" +END_TOPIC + +TOPIC("article2$en-us") +#include "article2$en-us.tppi" +END_TOPIC + +TOPIC("blitz$en-us") +#include "blitz$en-us.tppi" +END_TOPIC + +TOPIC("CallbackExample$en-us") +#include "CallbackExample$en-us.tppi" +END_TOPIC + TOPIC("daniel$en-us") #include "daniel$en-us.tppi" END_TOPIC -TOPIC("uppheap$en-us") -#include "uppheap$en-us.tppi" +TOPIC("IDE$en-us") +#include "IDE$en-us.tppi" END_TOPIC -TOPIC("uppp$en-us") -#include "uppp$en-us.tppi" +TOPIC("IDE$pl-pl") +#include "IDE$pl-pl.tppi" +END_TOPIC + +TOPIC("IDEoverview$en-us") +#include "IDEoverview$en-us.tppi" END_TOPIC TOPIC("Menu$en-us") #include "Menu$en-us.tppi" END_TOPIC +TOPIC("roadmap$en-us") +#include "roadmap$en-us.tppi" +END_TOPIC + TOPIC("trc_commentary$en-us") #include "trc_commentary$en-us.tppi" END_TOPIC @@ -42,23 +54,11 @@ TOPIC("upp$en-us") #include "upp$en-us.tppi" END_TOPIC -TOPIC("article$en-us") -#include "article$en-us.tppi" +TOPIC("uppheap$en-us") +#include "uppheap$en-us.tppi" END_TOPIC -TOPIC("IDEoverview$en-us") -#include "IDEoverview$en-us.tppi" -END_TOPIC - -TOPIC("article2$en-us") -#include "article2$en-us.tppi" -END_TOPIC - -TOPIC("602$en-us") -#include "602$en-us.tppi" -END_TOPIC - -TOPIC("IDE$en-us") -#include "IDE$en-us.tppi" +TOPIC("uppp$en-us") +#include "uppp$en-us.tppi" END_TOPIC diff --git a/uppbox/uppweb/examples.tpp/all.i b/uppbox/uppweb/examples.tpp/all.i index d50aacc01..5d31825de 100644 --- a/uppbox/uppweb/examples.tpp/all.i +++ b/uppbox/uppweb/examples.tpp/all.i @@ -1,5 +1,5 @@ -TOPIC("ImageView$en-us") -#include "ImageView$en-us.tppi" +TOPIC("AddressBook$en-us") +#include "AddressBook$en-us.tppi" END_TOPIC TOPIC("AddressBook$ru-ru") @@ -10,83 +10,83 @@ TOPIC("AnimatedHello$en-us") #include "AnimatedHello$en-us.tppi" END_TOPIC -TOPIC("CodeMetric$en-us") -#include "CodeMetric$en-us.tppi" -END_TOPIC - -TOPIC("UWord$en-us") -#include "UWord$en-us.tppi" -END_TOPIC - -TOPIC("HomeBudget$en-us") -#include "HomeBudget$en-us.tppi" -END_TOPIC - -TOPIC("SQLApp$en-us") -#include "SQLApp$en-us.tppi" -END_TOPIC - -TOPIC("CompDir$en-us") -#include "CompDir$en-us.tppi" -END_TOPIC - -TOPIC("Converter$ru-ru") -#include "Converter$ru-ru.tppi" -END_TOPIC - -TOPIC("HelloWorld$en-us") -#include "HelloWorld$en-us.tppi" -END_TOPIC - -TOPIC("Color$en-us") -#include "Color$en-us.tppi" -END_TOPIC - -TOPIC("Button$en-us") -#include "Button$en-us.tppi" -END_TOPIC - -TOPIC("Puzzle$en-us") -#include "Puzzle$en-us.tppi" -END_TOPIC - -TOPIC("Days$en-us") -#include "Days$en-us.tppi" +TOPIC("AnimatedHello$ru-ru") +#include "AnimatedHello$ru-ru.tppi" END_TOPIC TOPIC("Bombs$en-us") #include "Bombs$en-us.tppi" END_TOPIC -TOPIC("HelloWorld$ru-ru") -#include "HelloWorld$ru-ru.tppi" -END_TOPIC - -TOPIC("AnimatedHello$ru-ru") -#include "AnimatedHello$ru-ru.tppi" +TOPIC("Button$en-us") +#include "Button$en-us.tppi" END_TOPIC TOPIC("clock$en-us") #include "clock$en-us.tppi" END_TOPIC -TOPIC("Scribble$en-us") -#include "Scribble$en-us.tppi" +TOPIC("CodeMetric$en-us") +#include "CodeMetric$en-us.tppi" END_TOPIC -TOPIC("EyeCare$en-us") -#include "EyeCare$en-us.tppi" +TOPIC("Color$en-us") +#include "Color$en-us.tppi" END_TOPIC -TOPIC("AddressBook$en-us") -#include "AddressBook$en-us.tppi" -END_TOPIC - -TOPIC("XmlView$en-us") -#include "XmlView$en-us.tppi" +TOPIC("CompDir$en-us") +#include "CompDir$en-us.tppi" END_TOPIC TOPIC("Converter$en-us") #include "Converter$en-us.tppi" END_TOPIC +TOPIC("Converter$ru-ru") +#include "Converter$ru-ru.tppi" +END_TOPIC + +TOPIC("Days$en-us") +#include "Days$en-us.tppi" +END_TOPIC + +TOPIC("EyeCare$en-us") +#include "EyeCare$en-us.tppi" +END_TOPIC + +TOPIC("HelloWorld$en-us") +#include "HelloWorld$en-us.tppi" +END_TOPIC + +TOPIC("HelloWorld$ru-ru") +#include "HelloWorld$ru-ru.tppi" +END_TOPIC + +TOPIC("HomeBudget$en-us") +#include "HomeBudget$en-us.tppi" +END_TOPIC + +TOPIC("ImageView$en-us") +#include "ImageView$en-us.tppi" +END_TOPIC + +TOPIC("Puzzle$en-us") +#include "Puzzle$en-us.tppi" +END_TOPIC + +TOPIC("Scribble$en-us") +#include "Scribble$en-us.tppi" +END_TOPIC + +TOPIC("SQLApp$en-us") +#include "SQLApp$en-us.tppi" +END_TOPIC + +TOPIC("UWord$en-us") +#include "UWord$en-us.tppi" +END_TOPIC + +TOPIC("XmlView$en-us") +#include "XmlView$en-us.tppi" +END_TOPIC + diff --git a/uppbox/uppweb/reference.tpp/all.i b/uppbox/uppweb/reference.tpp/all.i index f7604eeb3..92964a670 100644 --- a/uppbox/uppweb/reference.tpp/all.i +++ b/uppbox/uppweb/reference.tpp/all.i @@ -1,139 +1,191 @@ -TOPIC("DynamicDlg$en-us") -#include "DynamicDlg$en-us.tppi" +TOPIC("AK$en-us") +#include "AK$en-us.tppi" END_TOPIC -TOPIC("Serialize$en-us") -#include "Serialize$en-us.tppi" -END_TOPIC - -TOPIC("Timing$en-us") -#include "Timing$en-us.tppi" -END_TOPIC - -TOPIC("Ptr$en-us") -#include "Ptr$en-us.tppi" -END_TOPIC - -TOPIC("CtrlRetriever$en-us") -#include "CtrlRetriever$en-us.tppi" +TOPIC("AnimatedClip$ca-es") +#include "AnimatedClip$ca-es.tppi" END_TOPIC TOPIC("AnimatedClip$en-us") #include "AnimatedClip$en-us.tppi" END_TOPIC -TOPIC("Splitter$en-us") -#include "Splitter$en-us.tppi" -END_TOPIC - -TOPIC("Slider$en-us") -#include "Slider$en-us.tppi" -END_TOPIC - -TOPIC("RegExp$en-us") -#include "RegExp$en-us.tppi" -END_TOPIC - -TOPIC("StatusBar$en-us") -#include "StatusBar$en-us.tppi" -END_TOPIC - -TOPIC("events$en-us") -#include "events$en-us.tppi" -END_TOPIC - -TOPIC("VirtualArray$en-us") -#include "VirtualArray$en-us.tppi" -END_TOPIC - -TOPIC("image$en-us") -#include "image$en-us.tppi" -END_TOPIC - -TOPIC("ScrollBar$en-us") -#include "ScrollBar$en-us.tppi" -END_TOPIC - -TOPIC("display$en-us") -#include "display$en-us.tppi" -END_TOPIC - -TOPIC("ctrlpos$en-us") -#include "ctrlpos$en-us.tppi" -END_TOPIC - -TOPIC("SQL_Sqlite3$en-us") -#include "SQL_Sqlite3$en-us.tppi" -END_TOPIC - -TOPIC("CallbackArgTarget$en-us") -#include "CallbackArgTarget$en-us.tppi" -END_TOPIC - -TOPIC("cparser$en-us") -#include "cparser$en-us.tppi" -END_TOPIC - -TOPIC("ArrayCtrlEdits$en-us") -#include "ArrayCtrlEdits$en-us.tppi" -END_TOPIC - -TOPIC("log$en-us") -#include "log$en-us.tppi" +TOPIC("AnimatedClip$es-es") +#include "AnimatedClip$es-es.tppi" END_TOPIC TOPIC("ArrayCtrl$en-us") #include "ArrayCtrl$en-us.tppi" END_TOPIC -TOPIC("ColumnList$en-us") -#include "ColumnList$en-us.tppi" -END_TOPIC - -TOPIC("SqlArray$en-us") -#include "SqlArray$en-us.tppi" -END_TOPIC - -TOPIC("draw$en-us") -#include "draw$en-us.tppi" -END_TOPIC - -TOPIC("SliderProgressInd$en-us") -#include "SliderProgressInd$en-us.tppi" -END_TOPIC - -TOPIC("Reports$en-us") -#include "Reports$en-us.tppi" -END_TOPIC - -TOPIC("Format$en-us") -#include "Format$en-us.tppi" -END_TOPIC - -TOPIC("SplitterFrame$en-us") -#include "SplitterFrame$en-us.tppi" -END_TOPIC - -TOPIC("GuiMT$en-us") -#include "GuiMT$en-us.tppi" -END_TOPIC - -TOPIC("Chameleon$en-us") -#include "Chameleon$en-us.tppi" -END_TOPIC - -TOPIC("ImageDraw$en-us") -#include "ImageDraw$en-us.tppi" +TOPIC("ArrayCtrlEdits$en-us") +#include "ArrayCtrlEdits$en-us.tppi" END_TOPIC TOPIC("callback$en-us") #include "callback$en-us.tppi" END_TOPIC +TOPIC("CallbackArgTarget$en-us") +#include "CallbackArgTarget$en-us.tppi" +END_TOPIC + +TOPIC("Chameleon$en-us") +#include "Chameleon$en-us.tppi" +END_TOPIC + +TOPIC("ColumnList$en-us") +#include "ColumnList$en-us.tppi" +END_TOPIC + +TOPIC("convert$en-us") +#include "convert$en-us.tppi" +END_TOPIC + +TOPIC("cparser$en-us") +#include "cparser$en-us.tppi" +END_TOPIC + +TOPIC("ctrlpos$en-us") +#include "ctrlpos$en-us.tppi" +END_TOPIC + +TOPIC("CtrlRetriever$en-us") +#include "CtrlRetriever$en-us.tppi" +END_TOPIC + +TOPIC("display$en-us") +#include "display$en-us.tppi" +END_TOPIC + +TOPIC("draw$en-us") +#include "draw$en-us.tppi" +END_TOPIC + +TOPIC("drawing$en-us") +#include "drawing$en-us.tppi" +END_TOPIC + +TOPIC("DynamicDlg$en-us") +#include "DynamicDlg$en-us.tppi" +END_TOPIC + +TOPIC("events$en-us") +#include "events$en-us.tppi" +END_TOPIC + +TOPIC("Format$en-us") +#include "Format$en-us.tppi" +END_TOPIC + +TOPIC("Frame$en-us") +#include "Frame$en-us.tppi" +END_TOPIC + +TOPIC("GuiMT$en-us") +#include "GuiMT$en-us.tppi" +END_TOPIC + +TOPIC("image$en-us") +#include "image$en-us.tppi" +END_TOPIC + +TOPIC("ImageDraw$en-us") +#include "ImageDraw$en-us.tppi" +END_TOPIC + +TOPIC("log$en-us") +#include "log$en-us.tppi" +END_TOPIC + +TOPIC("menu$en-us") +#include "menu$en-us.tppi" +END_TOPIC + +TOPIC("OpenGL$en-us") +#include "OpenGL$en-us.tppi" +END_TOPIC + +TOPIC("Paint$en-us") +#include "Paint$en-us.tppi" +END_TOPIC + +TOPIC("Ptr$en-us") +#include "Ptr$en-us.tppi" +END_TOPIC + +TOPIC("Qtf$en-us") +#include "Qtf$en-us.tppi" +END_TOPIC + +TOPIC("QtfDrawing$en-us") +#include "QtfDrawing$en-us.tppi" +END_TOPIC + +TOPIC("RectTracker$en-us") +#include "RectTracker$en-us.tppi" +END_TOPIC + +TOPIC("RegExp$en-us") +#include "RegExp$en-us.tppi" +END_TOPIC + +TOPIC("Reports$en-us") +#include "Reports$en-us.tppi" +END_TOPIC + +TOPIC("RichTextObject$en-us") +#include "RichTextObject$en-us.tppi" +END_TOPIC + +TOPIC("ScrollBar$en-us") +#include "ScrollBar$en-us.tppi" +END_TOPIC + TOPIC("ScrollView$en-us") #include "ScrollView$en-us.tppi" END_TOPIC +TOPIC("Serialize$en-us") +#include "Serialize$en-us.tppi" +END_TOPIC + +TOPIC("Slider$en-us") +#include "Slider$en-us.tppi" +END_TOPIC + +TOPIC("SliderProgressInd$en-us") +#include "SliderProgressInd$en-us.tppi" +END_TOPIC + +TOPIC("Splitter$en-us") +#include "Splitter$en-us.tppi" +END_TOPIC + +TOPIC("SplitterFrame$en-us") +#include "SplitterFrame$en-us.tppi" +END_TOPIC + +TOPIC("SqlArray$en-us") +#include "SqlArray$en-us.tppi" +END_TOPIC + +TOPIC("SQL_Sqlite3$en-us") +#include "SQL_Sqlite3$en-us.tppi" +END_TOPIC + +TOPIC("StatusBar$en-us") +#include "StatusBar$en-us.tppi" +END_TOPIC + +TOPIC("TabDlg$en-us") +#include "TabDlg$en-us.tppi" +END_TOPIC + +TOPIC("Timing$en-us") +#include "Timing$en-us.tppi" +END_TOPIC + TOPIC("Topic$en-us") #include "Topic$en-us.tppi" END_TOPIC @@ -142,71 +194,19 @@ TOPIC("TreeCtrl$en-us") #include "TreeCtrl$en-us.tppi" END_TOPIC -TOPIC("Qtf$en-us") -#include "Qtf$en-us.tppi" -END_TOPIC - -TOPIC("XML$en-us") -#include "XML$en-us.tppi" -END_TOPIC - -TOPIC("QtfDrawing$en-us") -#include "QtfDrawing$en-us.tppi" +TOPIC("uscctrl$en-us") +#include "uscctrl$en-us.tppi" END_TOPIC TOPIC("value$en-us") #include "value$en-us.tppi" END_TOPIC -TOPIC("drawing$en-us") -#include "drawing$en-us.tppi" +TOPIC("VirtualArray$en-us") +#include "VirtualArray$en-us.tppi" END_TOPIC -TOPIC("RichTextObject$en-us") -#include "RichTextObject$en-us.tppi" -END_TOPIC - -TOPIC("menu$en-us") -#include "menu$en-us.tppi" -END_TOPIC - -TOPIC("Frame$en-us") -#include "Frame$en-us.tppi" -END_TOPIC - -TOPIC("AnimatedClip$ca-es") -#include "AnimatedClip$ca-es.tppi" -END_TOPIC - -TOPIC("TabDlg$en-us") -#include "TabDlg$en-us.tppi" -END_TOPIC - -TOPIC("Paint$en-us") -#include "Paint$en-us.tppi" -END_TOPIC - -TOPIC("AK$en-us") -#include "AK$en-us.tppi" -END_TOPIC - -TOPIC("OpenGL$en-us") -#include "OpenGL$en-us.tppi" -END_TOPIC - -TOPIC("AnimatedClip$es-es") -#include "AnimatedClip$es-es.tppi" -END_TOPIC - -TOPIC("convert$en-us") -#include "convert$en-us.tppi" -END_TOPIC - -TOPIC("RectTracker$en-us") -#include "RectTracker$en-us.tppi" -END_TOPIC - -TOPIC("uscctrl$en-us") -#include "uscctrl$en-us.tppi" +TOPIC("XML$en-us") +#include "XML$en-us.tppi" END_TOPIC diff --git a/uppbox/uppweb/www.tpp/codestyle$en-us.tpp b/uppbox/uppweb/www.tpp/codestyle$en-us.tpp index 0e0c7b84f..27a5bbdf9 100644 --- a/uppbox/uppweb/www.tpp/codestyle$en-us.tpp +++ b/uppbox/uppweb/www.tpp/codestyle$en-us.tpp @@ -16,13 +16,13 @@ topic "How to contribute. Web page"; [s0; [*+117 Introduction]&] [s0; &] [s0; Code style has always been subject to a lot of discussions, -some of them beeing really passionate and emotional. Those of +some of them being really passionate and emotional. Those of you already having seen the intimate details of Ultimate`+`+ in uppsrc and maybe bazaar surely have percepted a certain degree of order, functionality and maybe, like I did,even a certain beauty (yes, I am married in real world :), all hard to describe. -For me the code felt usefull, well structured and quite easy -to read and thus esier to understand. And this is maybe the essence +For me the code felt useful, well structured and quite easy to +read and thus easier to understand. And this is maybe the essence of good code style. All the things mentioned below are tiny little details that can help to achieve this overall perception in U`+`+ code. Don`'t hesitate to look at the code in uppsrc to learn. @@ -32,7 +32,7 @@ while and feel some comfort with it. But this document should shorten the time.&] [s0; &] [s0; If you like to contribute code or major fixes, you are encouraged -to pay attention to these things. It makes life esier for the +to pay attention to these things. It makes life easier for the community, which usually keeps an eye on the changes made to the code base. It enables us (the community, of which you are about to be part of) to spot bugs fast and provide fast fixes. @@ -50,17 +50,17 @@ code&] [s0;i150;O0; [* Use Topic`+`+] (.tpp files) to comment your class usage, this is the prefered method of code commenting. Use separate files for API and implementation documentation. TheIDE can generate -the apropriate files for you. Click on the little cyan rectangles +the appropriate files for you. Click on the little cyan rectangles next to functions, variables or classes. `'[/ New reference topic]`" adds to `'src.tpp`', `'[/ New implementation topic]`' adds to `'srcimp.tpp`'. [* Provide also the `"Big picture`"] design aspects of your package / class, briefly outlined in the src.tpp as a header (see U`+`+ -class documentation as an example). This reliefes a lot of headache +class documentation as an example). This relieves a lot of headache when studying the code.&] [s0; &] [s0;i150;O0; [* Be familiar with U`+`+, use its facilities] This is a general prerequisite anyway, but it means to have studied the -exsisting code and its possibilities a bit. It might happen that +existing code and its possibilities a bit. It might happen that you have invented things that U`+`+ already provides for you and you could have saved your time. It also means to know, understand, and thus stick to the design pattern, i.e. when implementing @@ -87,9 +87,9 @@ field, adding the absolute path to Bazaar at the end.&] like [C #include ] instead of [C #include `"/folderA/folderB/Scatt er.h`"]&] [s0; &] -[s0;i150;O0; [* Use the package idea] of U`+`+. A package compunds -one or more classes and its files, becuase they logicaly belong -together and should all be available when usig the package inside +[s0;i150;O0; [* Use the package idea] of U`+`+. A package compounds +one or more classes and its files, because they logically belong +together and should all be available when using the package inside another package. A package should have an overall name and a .h with same name (which then can [C #include] the other class headers if any). Example: [C #include ]. This is the @@ -97,32 +97,32 @@ way you also should use other packages inside yours. (See `'Overview`' for more info on packages) &] [s0; &] [s0;i150;O0; Provide a [* Test / Demo package] for your package. Generally -it is a good idea to have a `'MyPackge`' and `'MyPackageTest`' +it is a good idea to have a `'MyPackage`' and `'MyPackageTest`' package shipped together, where functionality and Testing / Presenting is separated. Others won`'t need to trouble with the code too much if the can simply [C #include ]. a -package whoose usage they have observed in the Test package.&] +package whose usage they have observed in the Test package.&] [s0; &] [s0;i150;O0; [* Avoid usage of new / delete] as hell. [* Use U`+`+ NTL -containers] for your data or capsulate the allocation or deallocation +containers] for your data or encapsulate the allocation or deallocation of objects. Memory leaks can cause serious brain damage :). of course, don`'t mix new/delete with malloc/free. Pointers should only be used to really point to things and NOT to maintain the -last reference to a dynamicly allocated object (this should be -done in containers, Array<>, Vector<>, One<>, Any<>, etc. [* everything -belongs somewhere]...).&] +last reference to a dynamically allocated object (this should +be done in containers, Array<>, Vector<>, One<>, Any<>, etc. +[* everything belongs somewhere]...).&] [s0;* &] [s0;i150;O0; [* Avoid usage of ][*C #define constants], use compile time safe constants inside your class where possible. Example: [C static const int MaxSize `= 100;]&] [s0; &] -[s0;i150;O0; Dont forget the [*C virtual `~Destructor()], As soon as -your class is meant to be a base class (i.e. has any other virtual -function) it should have a virtual destructor, even if it`'s -empty.&] +[s0;i150;O0; Do not forget the [*C virtual `~Destructor()], As soon +as your class is meant to be a base class (i.e. has any other +virtual function) it should have a virtual destructor, even if +it`'s empty.&] [s0; &] [s0;i150;O0; Pay attention to implicit conversion. Some bugs come -from defaultly parametrised constructors, which are used then +from constructors parametrized by default, which are used then as implicit conversion constructors. (you may protect with the `'explicit`' keyword)&] [s0; &] @@ -130,7 +130,7 @@ as implicit conversion constructors. (you may protect with the doors to many bugs and makes the usage of your class difficult in classes that maintain it.&] [s0; &] -[s0;i150;O0; [* Use integer counter access.] Dont use iterators on +[s0;i150;O0; [* Use integer counter access.] Do not use iterators on the Containers. Example: [C for(int i `= 0; i < vec.GetCount(); i`+`+) vec`[i`] `= 0;]&] [s0; &] @@ -146,23 +146,23 @@ Example:&] little things like that.&] [s0; &] [s0;i150;O0; [* Implement small functions in class definition itself]. -Many functions only have 1 or 2 syntactically importnat statements +Many functions only have 1 or 2 syntactically important statements (return `*this doesn`'t count) and are maybe important to understand -class function. A developper will first look in header file. -Rule of thumb: >3 statements should go into own implementation -in .cpp file. Example: [C String Right(int count) const `{ return -Mid(GetLength() `- count); `}]&] +class function. A developer will first look in header file. Rule +of thumb: >3 statements should go into own implementation in .cpp +file. Example: [C String Right(int count) const `{ return Mid(GetLength() +`- count); `}]&] [s0; &] [s0;i150;O0; Provide for Methods chaining in your class by returning -`*this, where logically usefull. This makes it possible to [C myControl.HSizePos(). -VSizePos().Enable().]&] +`*this, where logically useful. This makes it possible to [C myControl.HSizePos().V +SizePos().Enable().]&] [s0; &] [s0;i150;O0; Provide a [C String ToString() const; ]Users will thank you if they can inspect an object in a preformatted way with [C LOG(objectInstance);] without having to setup own functions to show content during debug. Maybe it should be virtual to allow -derived classes to extend it. This is hevily used in object design -orientated languages like C#.&] +derived classes to extend it. This is heavily used in object +design orientated languages like C#.&] [s0; &] [s0;i150;O0; Think of providing a [C unsigned GetHashValue() const; ]If it is logical, such a function can enable your object to @@ -171,7 +171,7 @@ directly be used as a Key in Upp containers like Index.&] [s0; [*+117 Class layout]&] [s0; &] [s0; A class is made for someone to use it and should expose most -important info first. So keep the class cpmponents`' order as +important info first. So keep the class components`' order as following: (unneeded or unused parts can be left out)&] [s0; &] [s0; [C@(28.42.150) class tempc ]&] @@ -244,7 +244,7 @@ are own helper classes and functions]&] [s0;C@(28.42.150) &] [s0; [C@(28.42.150) -|/`*]&] [s0; [C@(28.42.150) -|`* Here follows the private data, which only the -class itself takes care of and noone should ever know about.]&] +class itself takes care of and none should ever know about.]&] [s0; [C@(28.42.150) -|`* in case of wrapper class this is mostly the objects that are wrapped]&] [s0; [C@(28.42.150) -|`*/]&] @@ -262,20 +262,21 @@ anywhere else], especially in class members`' names. [* Don`'t use Hungarian] style (Linus: `"Brain damage`") or things like `'[C m`_myMember, `_anotherMember, yetAnotherMember]`'. Example: [C Font font; Size textsize; ]Assist`+`+ makes life so easy, that -we dont need this to figure out if its a class member (Hit Ctrl`+Space)&] +we do not need this to figure out if its a class member (Hit +Ctrl`+Space)&] [s0; &] [s0;i150;O0; Stick to[* implicit variable names semantic] inside function -bodies if possible and usefull. i,j,k,m,n,q, u mostly are integer -counters or indices in arrays, p is probably a pointer, a,b,c +bodies if possible and useful. i,j,k,m,n,q, u mostly are integer +counters or indexes in arrays, p is probably a pointer, a,b,c are typically bool, d is double, f is a float. v is a Vector or a Value, s is a String etc.. this makes code less typographic and focuses more on the algorithm used. But don`'t use such variables exclusively, please. a1 a2 and a3 are quite the same at first look :)&] [s0; &] -[s0;i150;O0; Tend to [* avoid comments] in general, except for nesseccary +[s0;i150;O0; Tend to [* avoid comments] in general, except for necessary hints on important sections, critical for understanding. instead, -[* focus and persue a good design structure] in your package / +[* focus and pursue a good design structure] in your package / class, which makes most comments disposable.&] [s0; &] [s0;i150;O0; [* Use Tabs to intend] code, except in the header of a diff --git a/uppbox/uppweb/www.tpp/codestyle$en-us.tppi b/uppbox/uppweb/www.tpp/codestyle$en-us.tppi index 6f8dfd8d4..47f2e7cd9 100644 --- a/uppbox/uppweb/www.tpp/codestyle$en-us.tppi +++ b/uppbox/uppweb/www.tpp/codestyle$en-us.tppi @@ -1,25 +1,25 @@ TITLE("How to contribute. Web page") COMPRESSED -120,156,197,91,11,115,219,70,146,254,43,83,241,222,154,82,16,136,79,61,168,156,107,101,89,142,85,235,87,89,114,238,174,84,172,112,8,12,200,137,64,128,11,12,36,115,243,248,237,251,117,247,0,4,101,211,142,175,82,187,41,151,72,2,243,232,119,127,221,51,185,233,171,191,252,165,27,116,31,117,191,240,223,248,153,73,116,149,186,201,141,29,14,143,79,117,127,116,122,251,247,55,39,167,52,191,135,249,131,163,222,224,120,52,232,13,251,135,248,211,27,244,250,163,254,96,216,59,238,159,12,143,7,131,227,238,56,74,117,89,78,110,210,254,241,49,79,234,7,253,71,253,163,81,191,119,52,60,30,30,247,6,71,199,125,204,237,119,187,253,238,81,127,212,27,14,142,251,163,113,108,202,104,114,211,197,240,1,246,56,57,28,156,116,123,221,238,81,175,215,29,244,143,186,131,209,176,215,27,244,177,68,255,168,223,235,142,198,38,139,39,55,47,14,79,105,194,144,152,26,29,130,244,67,172,54,28,118,177,58,77,27,14,122,131,110,127,48,234,157,140,14,199,51,51,183, -217,167,88,26,125,145,165,163,238,216,58,179,244,28,233,225,233,254,223,70,167,61,76,61,12,14,31,29,97,219,225,8,155,157,16,71,3,76,235,247,15,71,39,189,209,16,36,13,187,253,113,97,254,81,217,194,44,77,230,252,10,182,215,235,247,78,103,189,163,83,144,240,251,239,191,135,189,97,87,36,117,4,90,122,93,208,221,239,225,25,248,56,234,141,78,186,39,163,227,222,113,119,112,52,236,143,142,192,250,74,23,122,233,57,153,13,251,167,158,143,227,224,248,209,97,239,16,18,237,30,131,254,209,9,22,232,130,9,124,66,144,35,252,27,28,143,157,159,76,243,104,210,73,112,242,8,66,26,140,186,71,39,221,163,225,209,104,8,78,250,189,195,30,4,217,37,254,161,134,113,150,23,75,157,98,82,15,36,239,127,139,191,100,9,100,74,253,163,225,232,104,56,32,81,129,218,94,23,2,28,14,160,136,209,241,241,97,159,152,63,215,43,103,115,200,253,151,159,126,251,175,139,215,223,189,191,82,55,101,247,84,221,236,191,59,84,239,83,103,151,218,153,233,183,211,111, -85,148,199,70,149,110,157,154,201,95,39,52,102,95,201,39,198,242,150,151,153,43,242,184,138,120,61,255,202,127,156,55,115,213,66,151,74,167,247,122,93,170,153,49,153,42,171,217,207,38,114,202,229,74,171,52,119,42,79,84,108,203,168,42,75,172,83,6,170,204,151,134,30,186,133,89,210,20,155,205,85,97,116,154,174,213,74,243,32,80,168,116,22,43,179,204,105,111,157,134,234,122,145,151,60,107,157,87,216,14,227,227,53,182,190,163,201,37,109,139,213,148,205,132,61,21,27,167,109,90,210,248,45,150,109,166,170,213,170,44,34,94,126,169,215,51,163,102,250,159,90,23,32,187,48,41,47,105,212,202,20,145,89,57,19,131,131,200,20,88,43,195,146,243,194,48,5,121,17,155,34,80,73,149,69,66,157,117,235,205,122,129,74,237,173,81,151,224,57,14,204,29,40,219,172,49,51,186,194,216,206,218,64,12,151,74,47,49,165,40,44,246,193,75,18,129,186,207,139,52,86,227,189,0,60,166,32,166,136,73,142,228,169,133,157,153,80,61,207,11,5,233,17,179,172,190, -196,164,78,85,165,73,170,52,13,212,189,193,164,210,21,80,25,184,137,153,40,184,2,4,98,116,185,166,149,72,110,252,216,45,170,82,153,210,154,130,30,87,25,88,42,29,94,132,234,140,223,218,82,225,159,72,136,118,51,101,105,178,136,249,159,231,121,220,50,30,204,192,174,52,6,179,178,57,38,193,239,32,23,236,63,51,105,126,175,116,129,87,54,91,67,48,206,165,27,229,184,133,118,42,210,153,90,152,116,197,230,18,45,44,36,38,187,231,119,166,32,25,120,93,96,65,18,210,251,198,114,67,245,44,207,166,143,29,102,151,214,145,210,177,66,154,231,183,10,171,54,242,217,40,156,222,26,93,100,33,9,62,94,90,23,8,1,120,62,125,204,111,166,143,253,242,98,215,182,228,229,99,112,66,203,104,21,235,53,56,138,52,196,173,172,171,223,107,149,216,15,224,53,213,247,161,122,131,177,153,49,113,73,203,178,41,65,161,183,120,123,111,221,130,38,37,208,159,86,247,11,155,138,133,39,198,164,226,16,81,190,196,75,87,143,12,213,211,202,137,36,226,60,170,72,166, -170,92,228,21,172,3,31,133,243,22,15,219,54,225,182,107,94,138,143,176,21,130,138,40,135,23,219,89,229,188,68,200,128,244,207,248,75,100,195,12,217,159,160,33,104,55,175,10,61,55,108,113,43,240,170,157,19,77,210,3,108,86,214,26,134,8,29,22,185,53,37,118,73,140,55,35,98,77,228,190,92,86,25,124,34,32,62,163,5,204,179,98,231,190,53,102,133,80,145,41,179,6,25,66,127,180,208,217,220,144,161,197,198,111,35,100,206,116,105,120,31,147,233,89,138,17,48,215,206,131,229,97,139,178,67,205,131,158,229,21,107,20,70,139,176,75,161,103,143,126,150,43,132,161,89,5,219,76,116,233,88,240,171,34,191,179,228,64,244,128,69,17,170,23,18,78,254,151,40,224,184,66,118,0,218,88,191,46,159,27,236,95,136,45,96,58,7,57,168,231,231,138,150,148,157,23,172,240,146,204,154,200,71,208,170,230,11,111,85,24,90,174,82,50,156,12,196,69,183,154,248,102,59,194,70,22,150,14,77,149,32,137,28,151,108,174,4,9,176,18,191,83,168,174,160,21, -216,41,180,64,162,231,120,197,140,215,211,188,138,106,191,153,231,58,45,199,219,166,225,227,250,51,40,108,94,71,116,126,34,95,109,111,212,61,125,131,113,111,57,236,67,214,216,47,11,224,31,8,172,8,35,246,206,192,71,72,122,80,2,88,112,172,170,128,232,33,113,221,236,67,73,224,74,77,56,218,32,45,112,60,194,39,69,29,26,209,161,185,160,149,205,97,19,115,240,106,175,209,252,22,197,13,69,88,251,61,152,187,206,87,54,34,105,78,84,39,116,171,21,52,7,13,237,137,157,47,217,73,32,146,66,49,30,18,106,130,38,152,209,14,171,194,36,44,225,37,148,137,48,6,19,98,115,243,179,65,73,200,27,149,134,210,54,124,134,55,96,219,62,123,123,201,188,219,37,212,64,131,53,251,70,237,157,252,139,84,110,46,159,93,112,88,155,155,204,240,26,180,177,134,30,87,133,221,94,18,180,134,234,60,181,209,109,237,15,62,68,70,107,77,9,33,130,116,230,52,56,51,31,216,174,235,156,3,191,189,211,88,141,61,35,247,252,146,9,79,31,223,28,168,215,230, -94,9,159,20,177,29,201,108,50,253,6,81,79,226,210,244,49,226,33,73,111,250,56,216,76,120,192,150,159,245,120,123,22,6,201,196,144,52,242,214,251,16,12,77,60,119,250,205,83,59,87,152,72,233,103,250,205,132,18,23,44,13,38,176,2,47,165,79,223,69,109,254,234,64,8,15,212,12,73,48,129,77,192,137,82,155,73,62,164,5,61,161,100,67,26,129,94,147,153,119,144,238,235,60,192,106,222,210,0,15,69,136,249,160,137,159,61,82,136,37,3,76,177,129,41,55,136,132,22,67,190,129,191,46,8,179,184,42,94,147,133,214,86,24,238,52,195,167,20,51,150,54,181,192,12,28,171,153,148,64,73,86,160,8,19,225,165,179,166,156,200,222,150,118,21,91,72,201,254,24,157,150,150,33,206,26,176,9,220,35,116,32,16,44,225,108,155,196,65,36,17,50,224,228,251,161,180,37,25,167,24,43,91,33,182,90,229,64,75,51,191,27,54,153,81,218,160,208,108,231,11,228,69,189,90,113,150,208,236,20,178,170,205,128,72,28,47,203,185,154,223,138,48,107,80,229, -35,99,99,161,188,157,4,26,202,62,66,28,254,196,162,75,206,64,180,43,91,65,195,195,109,150,223,7,45,31,15,54,168,3,156,192,224,125,176,247,22,178,162,100,83,32,214,216,16,171,177,78,26,131,36,190,51,88,232,185,43,82,88,161,7,88,180,129,104,76,242,125,97,68,210,55,231,234,206,22,14,41,71,189,95,197,240,183,184,179,167,38,181,227,248,228,64,65,178,176,113,108,50,1,69,145,78,163,42,173,125,213,111,4,66,233,73,158,165,148,202,160,106,10,241,5,2,3,162,161,176,131,13,49,51,173,243,59,182,230,169,227,177,236,76,27,115,182,240,218,183,255,164,192,163,51,252,32,152,149,115,58,241,150,90,7,168,115,172,55,131,123,112,152,84,62,165,190,190,126,9,196,157,17,134,132,56,119,216,230,5,204,153,12,84,156,130,80,249,60,119,108,39,249,125,166,194,5,81,140,176,41,144,110,137,106,211,146,131,208,140,48,90,173,240,6,155,133,11,138,169,180,171,1,81,96,1,64,212,124,32,252,197,79,125,152,17,153,11,172,35,75,107,82,163,71, -241,81,10,172,158,10,38,38,8,72,90,242,67,118,208,126,153,69,105,21,155,38,48,72,136,172,40,5,34,168,32,66,93,102,37,48,116,243,62,182,20,28,243,98,205,35,41,184,45,33,27,210,147,205,74,71,24,23,46,254,241,116,56,92,61,1,88,141,232,185,183,112,91,78,92,134,130,132,166,28,39,248,231,83,27,145,153,46,224,215,173,77,244,172,204,83,2,87,252,106,23,123,2,201,104,19,173,158,74,189,225,119,32,138,133,119,203,17,158,125,234,12,82,94,206,32,193,56,23,19,183,229,88,24,121,78,84,60,81,87,198,169,87,84,81,188,149,85,192,80,32,3,234,169,28,240,161,143,64,21,172,35,196,24,151,103,126,208,69,140,205,180,31,25,134,33,13,206,25,99,251,1,126,89,184,93,233,202,49,189,78,172,73,201,137,227,184,14,147,91,156,19,233,158,49,15,191,13,106,137,157,65,180,214,119,35,242,207,8,22,92,194,177,30,121,49,77,106,255,111,61,83,223,95,69,28,63,14,252,103,184,120,178,181,86,123,236,244,155,131,36,79,17,150,206,252, -231,211,205,44,164,172,207,194,15,70,16,94,52,228,159,19,46,48,41,122,194,159,155,55,4,142,16,248,74,70,113,4,183,243,194,52,174,83,199,110,182,240,128,234,137,74,203,202,168,143,242,185,69,60,89,63,116,26,158,228,193,63,65,59,248,175,190,67,9,69,233,95,98,37,76,125,190,77,29,99,66,76,148,32,227,31,183,169,244,235,113,56,71,194,172,97,99,166,151,146,96,52,133,12,14,107,37,61,226,231,29,129,219,142,182,36,132,211,214,11,111,47,187,249,8,196,233,26,249,47,33,191,67,38,190,144,72,55,222,86,221,57,164,115,64,127,72,105,97,147,50,25,74,163,8,145,114,31,153,197,211,75,62,180,197,83,89,243,74,158,3,4,212,185,2,60,152,62,126,3,126,238,172,185,7,130,73,106,29,216,44,201,9,104,213,51,247,212,167,181,221,224,26,210,251,53,92,0,64,229,153,89,54,81,97,82,167,198,150,96,127,144,16,15,229,9,164,215,82,38,115,20,175,83,186,6,93,175,214,228,91,243,26,72,215,15,176,6,109,132,167,27,253,88,228,239, -77,221,65,213,20,37,185,143,219,14,52,145,156,18,110,91,160,2,144,132,73,85,133,199,176,177,143,117,192,227,82,49,83,133,202,249,183,200,43,54,33,210,114,83,121,185,28,105,188,130,154,109,34,15,161,232,146,146,241,122,91,113,13,225,7,205,55,81,161,110,120,184,95,228,212,181,145,170,128,77,156,229,144,207,16,141,239,54,40,143,69,92,75,114,167,3,158,221,229,54,246,107,193,237,8,17,28,0,62,164,198,65,33,154,236,45,77,195,218,83,5,210,80,222,140,154,188,217,82,27,178,51,39,215,72,175,202,77,222,135,250,242,72,80,36,222,113,153,210,252,78,64,53,213,97,176,176,87,48,5,36,4,212,70,183,37,75,71,90,2,224,201,230,128,55,179,130,219,69,122,73,132,142,97,247,92,99,192,54,17,235,99,81,0,42,74,162,255,64,168,23,249,47,121,183,131,164,48,176,166,183,136,251,142,52,230,173,158,48,8,185,61,246,137,125,27,135,219,101,52,76,144,20,163,57,178,134,215,111,174,233,9,229,67,238,57,113,85,65,69,110,187,34,160,110,198, -26,46,109,35,74,211,194,38,149,157,210,185,235,112,197,228,183,198,174,117,11,100,35,202,64,157,21,133,94,127,255,36,80,63,114,126,164,111,111,50,67,31,103,25,63,55,46,98,109,24,56,226,154,233,243,97,173,228,126,7,27,243,4,185,103,47,220,110,62,126,70,229,106,114,179,15,11,140,77,2,34,184,238,5,178,116,229,68,192,55,133,93,202,142,4,72,17,179,146,214,136,118,136,240,209,73,156,73,16,52,245,176,218,193,137,112,159,141,100,58,245,20,145,106,63,92,1,188,169,233,127,171,94,183,123,186,35,73,60,131,120,200,196,224,175,44,117,34,182,134,162,211,223,81,116,115,99,46,47,58,123,160,248,140,196,32,229,74,139,42,106,185,1,65,215,61,12,205,109,16,255,174,195,208,152,187,173,128,49,18,3,235,229,235,160,176,71,209,103,43,178,55,67,226,102,255,64,113,91,18,238,109,29,193,92,64,61,183,222,225,119,111,31,246,129,40,16,216,200,82,233,143,82,162,40,185,232,189,162,6,22,247,87,34,250,150,20,249,18,251,241,145,6,55,117,11, -36,15,87,88,50,94,22,170,208,81,214,13,34,66,146,98,217,148,88,192,224,39,54,217,154,136,40,79,121,1,80,150,170,21,71,54,219,196,176,233,99,243,65,102,35,152,222,154,245,125,94,196,123,159,102,238,85,219,71,8,57,179,194,163,188,32,204,7,232,131,125,38,207,145,103,25,241,228,112,3,168,12,56,201,100,84,115,130,12,241,51,40,131,89,151,14,240,173,145,220,213,24,109,75,187,177,77,18,139,58,131,91,64,91,88,186,241,86,84,112,159,69,32,20,22,230,148,98,243,138,2,132,210,81,68,116,78,196,248,164,6,165,166,3,81,231,91,10,173,194,97,203,202,97,169,29,50,110,75,102,141,29,172,250,94,221,153,40,252,193,184,115,90,189,179,135,103,20,70,247,232,241,244,198,78,39,50,114,135,249,19,121,240,39,110,19,129,46,54,24,32,76,88,179,141,56,175,103,183,220,61,246,149,176,8,200,215,125,48,5,170,231,234,78,35,49,82,120,156,119,22,163,128,11,212,59,4,221,59,67,223,158,25,135,74,167,211,2,20,15,232,57,36,113,193,245, -40,118,92,112,247,176,51,203,243,84,177,255,194,132,80,244,76,127,81,7,211,125,81,13,114,222,116,255,64,77,127,155,124,106,129,103,182,228,21,120,78,97,92,85,100,245,162,9,112,137,129,144,62,158,201,219,93,150,50,142,234,79,177,172,47,238,122,190,197,195,123,212,98,210,196,70,82,129,191,83,19,223,247,235,55,109,252,92,221,23,212,75,168,27,211,144,176,239,33,249,156,32,125,96,24,217,103,208,120,93,105,171,146,178,208,166,203,212,216,169,226,152,107,165,11,239,80,220,37,200,243,175,184,156,106,198,114,142,226,160,211,163,244,217,87,229,26,134,135,151,145,192,162,229,42,47,92,6,99,231,178,154,182,67,76,243,18,157,238,251,78,183,145,166,58,155,247,158,224,208,194,248,99,8,89,193,71,199,77,103,193,83,88,19,66,24,55,70,128,75,115,192,39,106,209,16,67,150,122,178,124,56,96,179,186,143,68,8,60,84,239,170,212,31,70,85,203,217,88,61,25,180,201,243,145,116,158,147,223,229,92,71,63,104,147,97,57,170,158,253,98,109,247,186,66,192, -67,220,120,71,213,23,251,153,231,169,49,5,207,250,43,27,119,224,114,47,77,54,119,11,50,179,239,252,200,150,97,237,2,168,132,103,94,113,35,179,164,78,58,52,68,200,47,107,199,156,217,218,111,196,181,48,139,185,70,146,190,220,160,86,172,28,32,121,244,45,65,12,209,183,206,142,36,111,112,180,92,83,40,41,242,52,124,65,217,240,109,94,194,9,127,220,124,245,110,177,23,126,129,106,221,18,207,117,46,95,106,31,57,85,19,196,17,130,170,150,15,149,52,130,6,133,122,193,162,107,134,91,72,230,212,78,228,170,69,0,139,111,201,155,132,142,77,29,33,25,42,29,234,158,204,203,55,63,116,100,224,37,227,129,8,78,59,105,26,58,254,12,145,78,9,32,167,21,43,121,99,212,142,11,143,123,134,62,228,32,113,197,100,199,6,33,159,60,128,237,210,181,176,82,157,110,9,99,165,116,250,5,83,179,132,117,155,120,159,43,243,1,107,197,124,200,83,151,59,11,115,103,69,17,140,138,61,95,190,57,150,23,150,13,142,79,153,178,121,197,85,15,251,245,249,163, -29,94,221,132,91,233,230,17,205,44,246,42,163,21,177,16,76,238,133,46,23,63,234,180,50,45,225,95,38,190,126,241,198,17,168,146,74,1,221,136,132,53,32,103,50,98,102,121,115,218,43,189,146,22,80,229,174,237,223,161,53,58,184,227,96,86,103,34,127,70,10,31,254,240,224,244,202,31,81,156,179,241,166,26,91,184,7,71,207,103,45,172,164,189,19,16,162,36,144,74,129,65,78,231,90,37,51,240,0,85,33,203,156,208,92,19,67,184,24,228,192,192,71,43,116,56,37,229,14,47,30,173,48,48,163,32,0,20,193,7,190,196,77,146,147,74,33,204,177,234,84,25,149,81,4,154,11,72,149,249,165,35,39,169,8,32,129,212,36,142,250,217,123,15,248,59,255,91,167,127,28,14,251,33,84,181,231,119,163,110,91,164,38,159,30,242,221,175,99,181,66,157,6,68,122,65,72,141,69,179,115,108,80,143,5,12,223,49,104,250,203,206,217,7,7,207,223,93,94,188,126,118,181,115,68,66,182,88,199,92,234,118,158,126,105,40,167,81,95,37,32,14,62,153,142,199, -231,116,222,10,124,225,167,110,79,252,244,114,194,213,120,55,229,211,253,157,239,166,251,254,52,61,139,25,203,113,245,215,28,147,11,114,115,107,20,219,38,161,163,22,184,105,20,105,106,249,249,246,107,131,229,188,104,107,87,166,19,33,228,6,174,100,118,239,125,240,21,92,126,247,171,167,99,227,168,47,206,94,63,123,121,177,91,202,245,4,177,161,243,151,103,87,87,175,207,94,93,124,141,108,191,251,85,132,161,174,170,217,21,127,219,205,206,47,155,164,244,209,203,157,47,62,42,168,206,178,203,12,40,83,202,51,46,171,250,131,221,44,30,28,108,45,144,164,185,118,242,61,225,185,97,63,57,85,7,7,84,249,190,125,115,117,117,249,244,229,69,0,220,128,184,21,27,160,245,24,123,132,95,37,142,131,131,243,235,55,239,174,128,53,229,67,203,233,108,100,36,141,50,86,17,15,240,103,124,173,11,50,159,88,236,242,245,245,197,187,231,103,231,160,74,106,87,196,123,100,6,199,197,4,159,16,90,247,149,244,213,53,206,110,179,32,115,96,220,161,25,181,239,237,22,239, -166,70,149,73,20,33,26,45,255,49,130,216,199,207,222,1,88,189,1,10,20,72,242,0,246,114,245,68,167,174,144,96,64,120,150,218,10,206,95,0,168,193,106,141,55,183,160,241,174,237,254,7,192,151,242,80,179,157,108,196,216,134,207,171,168,53,35,203,183,0,17,195,187,173,245,255,160,204,63,31,96,94,112,111,142,243,131,63,105,150,88,177,105,212,82,212,9,40,206,212,128,152,78,240,82,29,25,127,41,36,131,72,248,228,68,186,226,124,70,189,156,81,223,234,203,177,229,15,251,162,47,151,77,252,111,136,164,220,194,242,189,201,58,148,50,26,226,131,76,31,67,255,236,248,249,181,106,98,34,19,104,33,248,152,54,57,71,157,153,134,19,6,103,129,47,186,25,107,187,6,245,132,127,166,154,190,158,15,177,46,233,167,16,210,73,37,125,33,190,48,40,166,182,31,138,198,146,48,237,6,172,50,126,218,88,40,223,52,219,66,171,127,174,233,217,59,152,245,191,193,240,68,10,247,70,14,11,168,44,101,5,102,228,118,193,127,220,226,188,28,218,150,183,165,54,42, -120,169,8,161,91,113,166,216,58,56,106,234,146,255,56,241,109,115,99,9,111,160,179,244,7,148,227,42,50,98,110,18,166,62,203,249,90,147,7,229,119,224,141,122,62,114,117,234,115,222,195,89,65,75,111,227,190,208,171,70,42,155,107,138,34,57,62,129,146,46,253,230,136,90,102,196,255,15,75,158,254,246,160,213,85,23,39,148,231,52,223,187,88,111,15,104,149,95,220,80,244,61,208,214,101,73,226,69,174,8,77,234,83,46,105,78,108,186,243,29,62,157,125,162,206,226,59,114,219,24,95,159,115,93,219,220,104,52,24,144,23,123,159,239,20,190,213,37,242,140,58,135,224,228,224,163,169,224,232,40,143,90,168,132,104,160,203,140,115,13,23,203,145,94,33,165,166,168,93,28,55,23,165,143,205,247,184,25,248,144,22,177,0,181,84,145,193,43,32,43,64,252,50,168,239,48,140,195,166,109,118,22,199,175,56,123,93,72,183,68,144,200,158,154,236,53,71,52,210,107,146,173,184,167,45,93,9,147,130,96,44,73,53,190,149,68,89,55,161,124,62,68,69,230,89,192, -74,254,18,40,121,250,139,42,155,211,165,168,108,226,101,221,121,105,81,152,209,201,249,211,214,153,204,244,155,61,185,87,177,105,143,77,31,83,123,99,250,211,114,45,68,7,106,250,147,63,58,173,31,172,141,59,107,63,153,208,29,168,118,191,231,185,116,255,51,84,209,124,86,224,80,229,151,248,130,162,250,172,164,235,59,124,34,213,186,53,89,230,124,43,215,95,67,189,55,130,135,228,108,142,236,154,174,123,217,57,221,242,163,54,5,119,235,169,158,110,139,66,117,94,192,84,248,206,201,183,87,43,132,146,29,141,238,43,127,227,6,242,218,244,214,235,11,100,34,204,166,85,59,169,15,75,26,123,153,229,49,221,47,2,5,77,67,136,12,161,105,26,217,224,231,224,54,88,6,89,240,143,64,85,237,48,246,160,91,205,87,213,108,22,219,136,79,109,49,164,208,107,152,207,138,92,1,200,100,166,233,206,131,150,99,45,18,186,14,102,65,36,23,77,26,216,68,189,85,228,106,197,237,66,58,190,12,84,34,7,174,92,23,132,234,78,126,73,197,169,24,90,113,151,35,80, -254,46,150,111,61,209,1,85,40,162,22,173,176,123,165,134,226,202,122,149,207,17,55,22,86,46,138,39,121,84,49,32,160,83,100,223,86,215,233,60,7,0,93,44,185,215,33,215,117,227,141,49,114,219,100,115,71,207,124,136,210,170,68,106,165,12,36,215,56,67,165,123,74,247,165,201,57,96,46,229,174,54,95,124,227,99,120,215,238,92,142,119,40,247,218,72,31,24,202,213,236,123,254,46,35,95,167,168,219,237,91,215,120,90,37,46,156,192,241,73,193,166,49,130,87,254,138,97,4,254,72,234,60,105,235,186,102,88,223,174,8,104,91,22,143,220,170,197,144,202,212,135,223,190,125,213,164,233,73,211,155,252,232,2,160,207,128,172,7,110,212,212,76,208,255,58,0,179,35,41,126,62,222,93,235,25,251,12,153,14,93,116,146,171,169,158,107,127,198,227,59,191,148,143,54,27,27,110,48,111,181,178,235,11,116,124,128,230,239,225,18,65,124,161,41,143,215,190,111,183,1,82,58,149,98,93,238,75,144,39,150,114,79,177,105,121,53,215,33,72,150,245,237,196,29,125, -82,88,146,95,67,23,20,101,125,153,200,39,102,166,21,114,108,210,209,200,14,189,126,93,250,124,116,170,240,169,188,132,249,160,99,115,55,171,172,15,93,36,117,134,91,91,112,108,249,43,117,11,233,219,59,147,108,186,54,31,159,255,200,53,239,85,229,234,19,212,38,196,88,169,244,173,150,59,70,231,47,166,63,93,93,255,223,203,11,201,40,124,148,9,89,150,134,186,112,114,243,186,74,146,38,255,228,206,229,203,112,251,178,134,154,252,11,214,53,147,223, +120,156,197,91,11,115,219,70,146,254,43,83,241,222,154,82,16,136,79,61,168,156,107,101,89,142,85,235,87,89,114,238,174,84,172,112,8,12,200,137,64,128,11,12,36,115,243,248,237,251,117,247,0,4,101,211,142,175,82,187,41,23,73,1,243,232,119,127,221,51,185,233,171,191,252,165,27,116,31,117,191,240,223,248,153,73,116,149,186,201,141,29,14,143,79,117,127,116,122,251,247,55,39,167,52,191,135,249,131,163,222,224,120,52,232,13,251,135,248,232,13,122,253,81,127,48,236,29,247,79,134,199,131,193,113,119,28,165,186,44,39,55,105,255,248,152,39,245,131,254,163,254,209,168,223,59,26,30,15,143,123,131,163,227,62,230,246,187,221,126,247,168,63,234,13,7,199,253,209,56,54,101,52,185,233,98,248,0,123,156,28,14,78,186,189,110,247,168,215,235,14,250,71,221,193,104,216,235,13,250,88,162,127,212,239,117,71,99,147,197,147,155,23,135,167,52,97,72,76,141,14,65,250,33,86,27,14,187,88,157,166,13,7,189,65,183,63,24,245,78,70,135,227,153,153,219, +236,83,44,141,190,200,210,81,119,108,157,89,122,142,244,240,116,255,111,163,211,30,166,30,6,135,143,142,176,237,112,132,205,78,136,163,1,166,245,251,135,163,147,222,104,8,146,134,221,254,184,48,255,168,108,97,150,38,115,126,5,219,235,245,123,167,179,222,209,41,72,248,253,247,223,195,222,176,43,146,58,2,45,189,46,232,238,247,240,12,124,28,245,70,39,221,147,209,113,239,184,59,56,26,246,71,71,96,125,165,11,189,244,156,204,134,253,83,207,199,113,112,252,232,176,119,8,137,118,143,65,255,232,4,11,116,193,4,190,33,200,17,254,13,142,199,206,79,166,121,52,233,36,56,121,4,33,13,70,221,163,147,238,209,240,104,52,4,39,253,222,97,15,130,236,18,255,80,195,56,203,139,165,78,49,169,7,146,247,191,197,39,89,2,153,82,255,104,56,58,26,14,72,84,160,182,215,133,0,135,3,40,98,116,124,124,216,39,230,207,245,202,217,28,114,255,229,167,223,254,235,226,245,119,239,175,212,77,217,61,85,55,251,239,14,213,251,212,217,165,118,102,250,237,244,91, +21,229,177,81,165,91,167,102,242,215,9,141,217,87,242,141,177,188,229,101,230,138,60,174,34,94,207,191,242,95,231,205,92,181,208,165,210,233,189,94,151,106,102,76,166,202,106,246,179,137,156,114,185,210,42,205,157,202,19,21,219,50,170,202,18,235,148,129,42,243,165,161,135,110,97,150,152,98,179,185,42,140,78,211,181,90,105,30,3,2,149,206,98,101,150,57,109,173,211,80,93,47,242,146,39,173,243,10,187,97,124,188,198,206,119,52,185,164,93,177,152,178,153,112,167,98,227,180,77,75,26,191,197,177,205,84,181,90,149,69,196,203,47,245,122,102,212,76,255,83,235,2,84,23,38,229,37,141,90,153,34,50,43,103,98,48,16,153,2,107,101,88,114,94,24,166,32,47,98,83,4,42,169,178,72,168,179,110,189,89,47,80,169,189,53,234,18,44,199,129,185,3,101,155,53,102,70,87,24,219,89,27,72,225,82,233,37,166,20,133,197,62,120,73,34,80,247,121,145,198,106,188,23,128,199,20,196,20,49,137,145,28,181,176,51,19,170,231,121,161,32,60,98,150,181,151, +152,212,169,170,52,73,149,6,234,222,96,78,233,10,40,12,204,196,76,19,28,1,242,48,186,92,211,66,36,54,126,236,22,85,73,79,173,41,232,121,149,129,165,210,225,77,168,206,248,181,45,21,254,137,132,104,55,83,150,38,139,152,255,121,158,199,45,219,193,12,108,75,99,48,43,155,99,18,220,14,114,1,1,51,147,230,247,74,23,120,101,179,53,4,227,92,186,81,142,91,104,167,34,157,169,133,73,87,108,45,209,194,66,98,178,123,126,103,10,146,129,215,5,22,36,33,189,111,12,55,84,207,242,108,250,216,97,118,105,29,41,29,43,164,121,126,171,176,106,35,159,141,194,233,173,209,69,22,146,224,227,165,117,129,16,128,231,211,199,252,102,250,216,47,47,102,109,75,94,62,6,39,180,140,86,177,94,131,163,72,67,220,202,186,250,189,86,137,253,0,94,83,125,31,170,55,24,155,25,19,151,180,44,155,18,20,122,139,183,247,214,45,104,82,2,253,105,117,191,176,169,88,120,98,76,42,254,16,229,75,188,116,245,200,80,61,173,156,72,34,206,163,138,100,170,202, +69,94,193,58,240,85,56,111,241,176,109,19,110,123,230,165,248,8,91,33,168,136,114,56,177,157,85,206,75,132,12,72,255,140,79,34,27,102,200,254,4,13,65,187,121,85,232,185,97,139,91,129,87,237,156,104,146,30,96,179,178,214,48,68,232,176,200,173,41,177,75,98,106,59,34,222,68,240,203,101,149,193,41,2,98,52,90,192,62,43,246,238,91,99,86,8,21,153,50,107,208,33,12,68,11,157,205,13,89,90,108,252,62,66,231,76,151,134,55,50,153,158,165,24,1,131,237,60,88,30,198,40,59,212,76,232,89,94,177,74,97,181,8,187,20,122,246,232,207,114,133,48,52,171,96,156,137,46,29,75,126,85,228,119,150,60,136,30,176,44,66,245,66,226,201,255,18,5,28,88,200,16,64,27,43,216,229,115,131,253,11,49,6,76,231,32,7,253,252,92,209,146,178,243,130,53,94,146,93,19,249,136,90,213,124,225,205,10,67,203,85,74,150,147,129,184,232,86,19,223,108,72,216,200,194,212,161,170,18,36,145,235,146,209,149,32,1,102,226,119,10,213,21,212,2,67, +133,26,72,246,28,176,152,241,122,154,215,81,237,56,243,92,167,229,120,219,54,124,92,127,6,151,153,215,17,157,159,200,79,219,27,117,79,223,96,220,91,14,251,144,53,246,203,2,56,8,34,43,2,137,189,51,112,18,146,30,148,0,22,28,171,42,32,122,72,92,55,251,80,18,184,82,19,142,55,72,11,28,145,240,77,113,135,70,116,104,46,104,101,115,216,4,29,188,218,107,52,191,69,113,67,17,214,126,15,230,174,243,149,141,72,154,19,213,9,221,106,5,205,65,67,123,98,232,75,246,18,136,164,80,140,135,132,154,160,137,102,180,195,170,48,9,75,120,9,101,34,142,193,132,216,220,252,108,80,18,242,70,165,161,180,13,167,225,13,216,182,207,222,94,50,239,118,9,53,208,96,205,206,81,187,39,255,69,42,55,151,207,46,56,174,205,77,102,120,13,218,88,175,160,200,85,97,183,215,4,177,161,58,79,109,116,91,59,132,15,146,209,90,83,74,136,32,158,57,13,206,204,7,54,236,58,235,192,115,239,52,86,99,215,200,61,195,100,195,211,199,55,7,234,181,185, +87,194,40,197,108,71,66,155,76,191,65,220,147,200,52,125,140,136,72,226,155,62,14,54,19,30,240,229,103,61,222,158,133,65,50,49,36,149,188,245,78,4,75,19,215,157,126,243,212,206,21,38,82,6,154,126,51,161,212,5,83,131,13,172,192,75,233,19,120,81,219,191,58,16,194,3,53,67,26,76,96,20,240,162,212,102,146,17,105,65,79,40,25,145,70,168,215,100,231,29,36,252,58,19,176,158,183,84,192,67,17,99,62,104,226,103,143,52,98,201,2,83,202,45,229,6,146,208,98,200,56,112,216,5,129,22,87,197,107,50,209,218,12,195,157,118,248,148,130,198,210,166,22,168,129,163,53,147,18,40,201,11,20,98,34,188,116,214,148,19,217,219,210,174,98,12,41,25,32,195,211,210,50,200,89,3,55,129,123,196,14,68,130,37,188,109,147,58,136,36,194,6,156,126,63,216,146,140,83,140,149,173,16,59,173,114,192,165,153,223,12,123,204,40,111,80,108,182,243,5,18,35,76,142,211,132,102,167,144,69,109,6,72,226,120,85,78,214,252,86,100,89,163,42,31,25, +27,3,229,237,36,208,80,250,17,218,240,17,139,42,57,5,209,174,108,4,13,11,183,89,126,31,180,124,60,216,224,14,112,2,123,247,193,222,27,200,138,178,77,129,88,99,67,172,198,42,105,236,145,248,206,96,160,231,174,72,97,132,30,97,209,6,162,48,73,248,133,17,65,223,156,171,59,91,56,164,28,245,126,21,195,221,226,206,158,154,212,126,227,147,3,5,201,194,198,177,201,4,22,69,58,141,170,180,246,85,191,17,8,165,39,121,150,82,42,131,166,41,196,23,8,12,136,134,194,14,54,196,204,180,78,240,216,154,167,142,199,178,51,109,204,217,194,43,223,254,147,2,143,206,240,7,225,172,156,211,137,55,212,58,64,157,99,189,25,188,131,195,164,242,41,245,245,245,75,32,238,140,64,36,196,185,195,52,47,96,205,100,159,226,19,132,202,231,185,99,59,201,239,51,21,46,136,98,132,77,193,116,75,84,155,150,252,131,102,132,209,106,133,55,216,44,92,80,76,165,93,13,136,2,11,64,162,230,3,1,48,126,234,163,140,200,92,112,29,89,90,147,26,61,140,143, +82,128,245,84,64,49,97,64,210,146,31,178,131,246,203,44,74,171,216,52,113,65,34,100,69,41,16,49,5,1,234,50,43,1,162,155,247,177,165,216,152,23,107,30,73,177,109,9,217,144,158,108,86,58,66,185,240,240,143,167,195,223,234,9,0,107,68,207,189,133,215,114,226,50,20,35,52,229,56,1,64,159,218,136,204,116,1,183,110,109,162,103,101,158,18,186,226,87,187,216,19,76,70,155,104,245,84,10,14,191,3,81,44,188,91,14,240,236,83,103,144,242,114,6,9,198,185,152,184,45,199,194,200,115,162,226,137,186,50,78,189,162,146,226,173,172,2,134,2,25,80,79,229,120,15,125,4,170,96,29,33,196,184,60,243,131,46,98,108,166,253,200,48,12,105,112,206,32,219,15,240,203,194,237,74,87,142,233,117,98,77,74,78,28,199,117,148,220,226,156,72,247,140,121,252,109,80,76,236,140,161,181,190,27,145,127,70,176,224,18,142,245,200,139,105,82,251,127,235,153,250,254,42,226,248,113,224,191,195,197,147,173,181,218,99,167,223,28,36,121,138,176,116,230,191,159, +110,102,33,99,125,22,126,48,130,240,162,33,255,156,112,133,73,209,19,254,220,188,33,112,148,35,242,149,12,227,8,112,231,133,105,124,167,14,222,108,226,65,83,81,96,105,84,72,249,220,70,236,66,15,220,134,103,121,252,79,224,14,30,172,239,80,69,81,254,151,104,41,198,190,69,32,195,66,204,148,56,227,31,183,9,245,11,114,68,71,202,172,145,99,166,151,146,99,52,69,13,142,108,37,61,226,231,29,65,220,142,246,36,144,211,86,13,111,47,187,249,32,196,9,27,25,48,33,215,67,46,190,144,96,55,222,214,222,57,228,115,64,31,164,183,176,73,154,140,166,81,136,72,201,143,228,226,233,37,113,109,241,84,214,188,146,243,0,3,117,174,0,16,166,143,223,128,159,59,107,238,129,97,146,90,11,54,75,114,130,90,245,204,61,245,105,133,55,200,134,84,127,13,47,0,84,121,102,150,77,96,152,212,217,177,37,216,31,36,202,67,123,130,234,181,148,202,28,200,235,164,174,65,215,171,181,119,47,15,166,91,79,104,39,60,221,40,200,34,135,111,106,15,170,168,40, +209,125,220,123,160,137,100,0,112,221,2,85,128,36,77,170,44,60,142,141,125,188,3,38,151,178,153,202,84,206,193,69,94,177,17,145,154,155,234,203,229,72,229,21,244,108,19,121,8,77,151,148,144,215,219,154,107,8,63,104,126,137,14,117,195,195,61,119,110,164,48,96,35,103,57,228,51,4,228,187,13,206,99,17,215,146,220,233,131,103,119,185,141,253,90,240,60,2,5,7,64,16,169,113,80,136,38,123,75,211,176,118,86,65,53,148,58,163,38,117,182,212,134,4,205,249,21,16,89,175,202,77,242,135,2,243,72,144,36,222,114,173,210,252,157,128,110,42,198,96,99,175,96,12,200,10,40,144,110,75,22,143,184,49,184,178,57,48,206,172,224,166,145,94,18,169,99,88,62,23,26,176,78,4,252,88,52,128,178,146,56,56,16,250,69,1,75,222,237,32,41,12,236,233,45,130,191,35,149,121,187,39,32,66,158,143,125,98,223,205,225,166,25,13,19,56,197,144,142,204,225,245,155,107,122,66,73,145,59,79,92,89,80,165,219,174,10,168,167,177,134,83,251,144,227,25, +165,234,83,26,120,29,46,156,252,230,216,183,110,133,108,196,25,168,179,162,208,235,239,159,4,234,71,78,147,244,235,77,102,232,235,44,227,231,198,69,172,17,128,239,98,205,20,250,216,86,114,223,131,237,121,130,20,180,23,110,247,32,63,163,118,53,185,217,135,17,198,38,1,17,92,254,2,96,186,114,34,16,156,162,47,37,73,194,165,136,91,73,107,68,59,76,248,8,37,254,36,64,154,122,89,237,0,69,240,207,70,50,157,122,139,200,184,31,174,128,225,212,244,191,85,175,219,61,221,145,43,158,229,10,33,151,12,13,78,203,146,39,114,107,76,58,253,29,213,55,247,232,242,162,179,7,154,207,72,16,82,182,180,232,162,230,27,160,116,221,204,208,220,15,241,239,58,140,145,185,237,10,60,35,145,176,94,190,142,12,123,20,131,182,226,123,51,36,110,246,15,20,55,40,225,227,214,17,222,5,230,115,235,29,222,247,246,97,71,136,162,129,141,44,245,0,80,83,20,37,87,191,87,212,202,226,70,75,68,191,146,34,95,138,252,100,195,82,113,51,220,184,130,161,240,12, +0,71,14,62,234,86,17,97,74,49,111,202,47,224,240,19,187,108,45,136,96,79,233,1,160,150,234,22,71,102,219,68,178,233,99,243,65,102,35,164,222,154,245,125,94,196,123,159,230,238,85,219,81,8,67,179,206,163,188,32,244,7,16,132,125,38,207,145,111,57,199,230,240,4,232,12,136,201,100,84,124,18,95,236,108,208,6,243,46,205,224,91,35,41,172,177,219,150,122,99,155,36,22,21,7,55,131,182,80,117,227,178,168,229,62,139,69,40,54,204,41,211,2,106,56,66,8,81,68,116,78,106,251,147,114,148,26,16,68,159,239,46,180,138,136,45,83,135,177,118,200,194,45,217,54,246,176,234,123,117,103,162,240,7,227,206,105,253,206,30,158,81,60,221,163,199,211,27,59,157,200,200,29,62,64,4,194,169,184,101,4,202,216,102,128,54,97,208,54,226,4,159,221,114,43,217,23,197,34,34,95,3,34,170,80,109,87,183,29,137,145,194,99,190,179,24,197,92,160,222,33,246,222,25,250,245,204,56,84,61,157,22,178,120,64,207,33,9,12,222,71,1,228,130,59,137, +157,89,158,167,138,157,24,70,132,2,104,250,139,58,152,238,139,114,144,251,166,251,7,106,250,219,228,83,11,60,179,37,175,192,115,10,227,170,34,171,23,77,0,80,12,132,244,241,76,222,238,178,148,113,84,139,138,109,125,113,215,243,45,30,222,163,46,147,142,54,114,11,92,190,213,188,223,52,245,115,117,95,80,91,161,198,148,144,176,111,39,249,212,32,77,97,152,217,103,144,121,93,117,171,146,146,209,166,225,212,88,170,226,192,107,165,37,239,80,232,37,200,247,175,184,180,106,198,114,170,226,184,211,163,44,218,87,229,26,134,135,151,146,106,224,213,121,65,33,89,74,108,218,14,97,205,75,116,186,239,219,222,70,58,236,108,224,123,2,72,11,227,207,36,54,43,108,29,95,120,10,107,66,8,236,198,136,113,41,92,149,154,53,196,143,165,246,44,31,20,216,172,238,40,17,22,15,213,187,42,245,231,82,213,114,54,86,79,6,109,234,124,44,157,231,228,120,57,151,212,15,26,102,88,142,10,105,191,88,219,187,174,16,239,16,56,222,81,33,198,110,230,89,106,44,193, +115,254,202,198,29,120,220,75,147,205,221,130,172,236,59,63,178,101,87,187,128,42,225,154,87,220,211,44,169,169,14,5,17,0,204,218,65,7,225,86,54,226,178,152,165,92,3,202,77,225,33,135,73,30,132,75,16,67,244,173,19,36,73,27,12,45,215,20,72,138,60,13,95,80,66,124,155,151,112,193,31,55,63,189,83,236,133,95,32,90,183,164,115,157,203,143,218,67,78,213,4,81,132,0,171,229,243,37,141,144,65,161,94,16,233,154,49,23,242,57,245,21,185,120,17,204,226,155,243,38,161,3,84,71,96,134,42,136,186,59,243,242,205,15,29,25,120,201,144,32,130,203,78,154,214,142,63,78,164,243,2,136,105,197,58,222,152,180,227,250,227,158,209,15,185,71,92,49,217,177,65,200,39,251,103,171,116,45,184,84,231,91,2,90,41,29,132,193,210,44,65,222,38,222,231,202,124,192,90,49,159,247,212,85,15,76,242,206,138,34,24,29,123,198,124,159,44,47,44,27,28,159,56,101,243,138,171,31,118,235,243,71,59,156,186,137,182,210,216,35,162,89,238,85,70,43, +98,33,152,220,11,93,46,126,212,105,101,90,210,191,76,124,29,227,141,35,80,37,85,4,186,145,9,171,64,142,103,196,204,242,230,224,87,218,38,45,184,202,253,219,191,67,109,116,136,199,177,172,78,68,254,188,20,46,252,225,193,73,150,63,173,56,103,227,77,53,182,112,15,78,161,207,90,104,73,123,39,32,84,73,64,149,226,130,156,212,181,106,103,0,2,170,70,150,57,33,186,38,132,112,81,200,129,129,79,89,232,156,74,170,30,94,156,203,249,140,130,0,96,4,31,254,18,55,73,78,58,133,48,199,170,83,101,84,77,17,112,46,32,85,230,151,78,159,164,46,128,4,82,147,56,234,108,239,61,224,239,252,111,157,254,113,56,236,135,80,213,158,223,141,26,111,145,154,124,122,200,119,191,142,213,10,229,26,80,233,5,97,53,22,205,206,177,65,61,22,80,124,199,160,233,47,59,103,31,28,60,127,119,121,241,250,217,213,206,17,9,217,98,29,114,169,241,121,250,165,161,156,69,125,165,128,56,248,100,58,30,159,211,217,43,224,133,159,186,61,241,211,203,9,87,227, +221,148,79,247,119,190,155,238,251,147,245,44,102,48,199,85,96,115,102,46,208,205,173,81,115,155,132,14,93,224,167,81,164,169,251,231,59,177,13,152,243,162,173,125,153,14,135,144,27,184,154,217,189,247,193,87,112,249,221,175,158,142,141,163,190,56,123,253,236,229,197,110,41,215,19,196,134,206,95,158,93,93,189,62,123,117,241,53,178,253,238,87,17,134,186,170,102,87,252,107,55,59,191,108,146,210,71,47,119,190,248,168,168,58,203,46,51,128,76,41,209,184,180,234,15,118,179,120,112,176,181,64,146,230,218,201,239,132,231,134,253,228,84,29,28,80,253,251,246,205,213,213,229,211,151,23,1,96,3,226,86,108,0,215,99,236,17,126,149,56,14,14,206,175,223,188,187,2,212,148,47,45,7,181,145,145,52,202,80,69,60,192,31,247,181,238,202,124,98,177,203,215,215,23,239,158,159,157,131,42,169,95,17,240,145,26,28,87,19,124,88,104,221,87,210,87,23,57,187,205,130,204,129,113,135,102,208,190,183,91,188,155,42,85,38,81,132,104,180,252,199,8,98,31,63,123, +7,96,245,6,32,80,32,201,3,212,203,229,19,29,192,66,130,1,193,89,106,45,56,127,23,160,198,170,53,220,220,66,198,187,182,251,31,224,94,202,67,205,118,178,17,99,27,62,186,162,6,141,44,223,2,68,12,239,182,214,255,131,50,255,124,128,121,193,45,58,206,15,254,208,89,98,197,166,99,75,81,39,160,56,83,227,97,58,204,75,117,100,252,5,17,170,223,248,16,69,26,228,124,92,189,156,81,255,234,203,177,229,15,251,162,175,151,77,252,111,136,164,220,200,242,45,202,58,148,50,28,226,51,77,31,67,255,236,248,249,181,106,98,34,19,104,33,248,152,54,57,82,157,153,134,19,6,103,129,175,186,25,107,187,6,245,132,127,166,154,190,158,15,177,46,105,168,16,210,73,37,125,33,190,48,42,166,230,31,106,198,146,64,237,6,173,50,126,218,88,40,223,58,219,130,171,127,174,233,217,59,152,245,191,193,240,68,10,247,70,14,13,168,42,101,5,102,228,118,193,127,220,226,188,28,218,150,183,165,54,170,119,169,10,161,27,114,166,216,58,66,106,10,147,255,56, +241,109,115,99,9,111,160,179,180,7,148,227,50,50,98,110,18,166,62,227,11,78,30,147,223,129,53,234,248,200,37,170,207,57,15,39,5,45,157,141,251,130,238,55,212,161,188,185,177,40,130,227,131,40,105,213,111,14,171,101,70,252,255,48,228,233,111,15,26,93,117,109,66,105,78,243,13,140,245,246,128,86,245,197,13,69,223,231,108,221,155,36,94,228,178,208,164,62,236,146,222,196,166,69,223,225,115,218,39,234,44,190,35,175,141,241,243,57,215,181,205,229,70,131,1,121,177,247,249,78,225,91,93,34,205,168,115,8,78,206,63,154,2,142,78,244,168,133,74,128,6,170,204,56,213,112,177,28,233,21,50,106,138,210,197,113,115,81,26,217,124,163,155,113,15,41,17,11,80,75,21,9,188,2,176,2,194,47,131,250,54,195,56,108,154,102,103,113,252,138,147,215,133,52,75,4,136,236,169,201,94,115,82,35,157,38,217,138,155,218,210,148,48,41,8,198,146,84,227,91,201,147,117,11,202,167,67,20,100,158,5,172,228,239,131,146,163,191,168,178,57,221,142,202,38,94, +214,157,151,22,117,25,157,161,63,109,29,204,76,191,217,147,27,22,155,230,216,244,49,181,55,166,63,45,215,66,116,160,166,63,249,19,212,250,193,218,184,179,246,147,9,93,134,106,183,123,158,19,152,73,240,113,170,248,184,192,161,202,47,241,3,53,245,25,114,69,233,248,96,170,117,129,178,204,249,134,174,191,145,122,79,39,45,12,1,228,140,142,44,155,110,126,217,57,221,248,163,70,5,55,236,169,160,110,11,67,117,94,192,88,248,254,201,183,87,43,196,146,29,173,238,43,127,251,6,18,219,116,215,235,187,100,34,206,166,85,59,169,79,76,26,139,153,229,49,221,53,2,5,77,75,136,76,161,238,26,217,224,231,224,54,88,6,89,240,143,64,85,237,48,246,160,93,205,151,214,44,21,253,124,122,139,33,133,94,195,126,86,228,11,64,38,51,77,215,31,180,28,110,145,212,117,48,11,34,185,115,210,192,38,106,173,34,87,43,238,22,210,41,102,160,18,57,120,229,186,32,84,119,242,151,84,156,138,161,21,119,57,2,229,111,101,249,222,19,29,82,133,34,105,81,11, +251,87,106,40,176,172,87,249,28,129,99,97,229,210,120,146,71,21,3,2,58,77,246,93,117,157,206,115,0,208,197,146,123,29,114,117,55,222,88,35,183,77,54,183,245,204,135,40,173,74,164,86,202,64,114,163,51,84,186,167,116,95,122,156,3,230,82,46,110,243,21,56,62,142,119,237,206,229,120,135,110,175,141,180,129,161,91,205,206,231,175,53,242,205,138,186,219,190,117,163,39,51,132,95,168,194,133,19,56,62,39,104,53,103,77,125,215,48,2,123,36,116,158,179,117,113,51,172,239,89,4,180,43,75,71,238,215,86,69,89,153,250,12,220,119,175,154,44,61,105,90,147,31,221,4,244,9,144,213,192,125,154,154,7,250,159,8,96,116,36,196,207,199,187,107,61,99,143,33,203,161,43,79,114,73,213,51,237,207,120,124,227,151,210,209,102,99,195,237,229,173,70,118,125,149,142,79,208,252,141,92,34,136,175,54,229,241,218,247,237,54,56,74,167,82,171,203,181,9,242,195,82,46,44,54,29,175,230,86,4,201,178,190,166,184,163,79,10,67,242,107,232,130,162,172,175, +18,243,162,21,106,41,228,216,164,163,145,29,122,253,186,242,249,232,76,225,83,121,9,243,65,199,230,150,86,89,31,185,72,234,12,183,182,224,200,242,87,106,22,210,175,119,38,217,52,109,62,62,253,145,11,223,171,202,213,135,168,77,128,177,82,232,91,45,183,141,206,95,76,127,186,186,254,191,151,23,146,81,248,44,19,178,44,13,53,225,228,14,118,149,36,77,254,201,157,203,151,225,246,157,13,53,249,23,189,182,150,233,