H+10.0yI4AgBWK[e]w8  : :? x:x".` SFThread.ha SFThread.mbSFThreadFactory.hcSFThreadFactory.mdSFThreadHTMLFormatter.heSFThreadHTMLFormatter.mfSFThreadView.hgSFThreadView.mhSFURLProtocol.hiSFURLProtocol.mjSkinj control.pngk=U=UO\c,j Header.htmll5t5tO]cS-j NewRes.htmlmuuO]c.j prototype.jsnw~w~OXcU / jRes.htmloffO]c; j sevenfour.cssp@@OXc<j sevenfour.jsqOXc=j Title.htmlrcacaO]c>kj control.pnglj Header.htmlmj NewRes.htmlnj prototype.jsojRes.htmlpj sevenfour.cssqj sevenfour.jsrj Title.htmlsstar.pngt state.pngutab.pngvTabbedWebView.hwTabbedWebView.mx tabClose.pngyTEC.hzTEC.m{TemporaryPanel.h|TemporaryPanel.m}toggleBoardTree.png~toggleMainPane.pngupdateBoard.pngupdateThread.pngWhiteFormatter.hWhiteFormatter.m Desktop DB Desktop DF .DS_Storev V .6P8d2 b 0  n N *  j @  rZD.pBZ4 ResourcesKKKKcslnkrhap~VersionsKGcAHeadersOgreKit ResourcesVersionsAKGcACurrentKKKKcslnkrhap|AHeadersKFcAOgreKit<Kc Resources =KGcAHeaders<NSString_OgreKitAdditions.hKc '(OGMutableString.hKcrZ6 $ : t R  ~ X x " SevenFour Resources8OgreFindPanelController.h(OgreTableColumn.h OGString.h 6 BAPI(PInfoPlist.strings h\1_OgreTextFindProgressSheet_EOArchive_English.java <iOgreAPFCLocalizable.strings 8xOgreAdvancedFindPanel.nib hash.hos_win.h sqlite3.h newTab.png$ImageWindow.nib&keyedobjects.nib4SFThreadHTMLFormatter.h Ch2Helper.m newTab.png SFDocument.h 6SFPostWindowController.m!"SFThreadView.h#&TemporaryPanel.h&$keyedobjects.nib4info.nib"`\PD8 dBz\@("J, 8OgreFindPanelController.h Kc2OgreFindResultBranch.h!Kc.OgreFindResultLeaf.h"KcF OgreFindResultWindowController.h#KcL0OGRegularExpression.h$Kc\'>OGRegularExpressionCapture.h%Kc DOGRegularExpressionEnumerator.h&KcBOGRegularExpressionFormatter.h'Kca:OGRegularExpressionMatch.h(Kc" OgreKit.h)Kcg,OgreOutlineColumn.h*KcX(OgreOutlineView.h+Kc0OGReplaceExpression.h,Kch>  t6l@  (OgreTableColumn.h-Kc$OgreTableView.h.Kc.OgreTextFindBranch.h/Kc4OgreTextFindComponent.h0KcXH!OgreTextFindComponentEnumerator.h1Kc&OgreTextFinder.h2Kc*OgreTextFindLeaf.h3Kc<OgreTextFindProgressSheet.h4Kc~.OgreTextFindResult.h5KcDV(OgreTextFindReverseComponentEnumerator.h6Kc.OgreTextFindThread.h7KcH"OgreTextView.h8Kck OgreView.h9Kc0 `*vN0 SevenFourIww SevenFour .DS_StoreJ}}rc@z.TrashesJJcB@ Desktop DBwwcBTFLDMGR@V Desktop DFwwcDTFLDMGR@W  SevenFour.app##LGcASourceUFwwGcA0HFS+ Private DataIIII@PWWHFS+ Private Data.Trashes .DS_Store SevenFour.appContentsGGLGcAContents FrameworksLGcA Info.plistLJcMacOSLGcAPkgInfoLJc ResourcesFFLGcA Frameworks(OgreKit.frameworkKGcA,QuickLite.frameworkLGcAOgreKit.frameworkHeadersKKKKcslnkrhap|OgreKitKKKKcslnkrhap}T  p rl@4N:& 6(OgreTextFindReverseComponentEnumerator.h7OgreTextFindThread.h8OgreTextView.h9 OgreView.h: OGString.h; oniguruma.h<OgreKit= Resources = Documentation>KFcA= Dutch.lprojIKFcA = English.lprojPKGcA= French.lprojbKGcA= German.lprojiKGcA= Info.plistpKcc. = Italian.lprojqKGcA"=Japanese.lprojxKGcA&=Portuguese.lprojKGcA"=Romanian.lprojKGcA = Spanish.lprojKGcA>= Documentation>OgreKit?KFcA> OniGurumaBKFcA?>OgreKit? License.txt@KcH? ReadMe.rtfAKcI@? License.txtA? ReadMe.rtfB> OniGuruma@,  V  P  h " V " 2  vjtxr lL$p  BAPICKcD`BCOPYINGDKcA BFAQEKcUBHISTORYFKcBs BREGKc,YBREADMEHKceCBAPIDBCOPYINGEBFAQFBHISTORYGBREHBREADMEI= Dutch.lproj8IOgreAdvancedFindPanel.nibJKFcA<IOgreAPFCLocalizable.stringsNKcHI!OgreTextFinderLocalizable.stringsOKcJIOgreAdvancedFindPanel.nibJ classes.nibKKc HJinfo.nibLKc&Jkeyedobjects.nibMKc?  KJ classes.nibLJinfo.nibMJkeyedobjects.nibNIOgreAPFCLocalizable.stringsOI!OgreTextFinderLocalizable.stringsP= English.lprojj" v ` ~^F:6(" (PInfoPlist.stringsQKc8POgreAdvancedFindPanel.nibRKFcA<POgreAPFCLocalizable.stringsVKc6POgreFindResultWindow.nibWKFcAHP!OgreTextFinderLocalizable.strings[Kc@POgreTextFindProgressSheet.nib\KGcAQPInfoPlist.stringsRPOgreAdvancedFindPanel.nibR classes.nibSKc HRinfo.nibTKc&Rkeyedobjects.nibUKc?  SR classes.nibTRinfo.nibURkeyedobjects.nibVPOgreAPFCLocalizable.stringsWPOgreFindResultWindow.nibW classes.nibXKcWinfo.nibYKc&Wkeyedobjects.nibZKceXW classes.nibYWinfo.nibZWkeyedobjects.nib[P!OgreTextFinderLocalizable.strings\POgreTextFindProgressSheet.nib> n N > ( l J "d0 OGString.h:KcK oniguruma.h;KcY NSString_OgreKitAdditions.hOGMutableString.h OgreFindPanelController.h!OgreFindResultBranch.h"OgreFindResultLeaf.h# OgreFindResultWindowController.h$OGRegularExpression.h%OGRegularExpressionCapture.h&OGRegularExpressionEnumerator.h'OGRegularExpressionFormatter.h(OGRegularExpressionMatch.h) OgreKit.h*OgreOutlineColumn.h+OgreOutlineView.h,OGReplaceExpression.h-OgreTableColumn.h.OgreTableView.h/OgreTextFindBranch.h0OgreTextFindComponent.h1!OgreTextFindComponentEnumerator.h2OgreTextFinder.h3OgreTextFindLeaf.h4OgreTextFindProgressSheet.h5OgreTextFindResult.h\*\,P,Hp68" h\1_OgreTextFindProgressSheet_EOArchive_English.java]Kc"\ classes.nib^Kco\info.nib_Kc ,\JavaCompiling.plist`Kc' &\keyedobjects.nibaKc  ]\1_OgreTextFindProgressSheet_EOArchive_English.java^\ classes.nib_\info.nib`\JavaCompiling.plista\keyedobjects.nibb= French.lproj8bOgreAdvancedFindPanel.nibcKGcA<bOgreAPFCLocalizable.stringsgKc@Hb!OgreTextFinderLocalizable.stringshKccbOgreAdvancedFindPanel.nibc classes.nibdKc H cinfo.nibeKc&ckeyedobjects.nibfKc@  dc classes.nibecinfo.nibfckeyedobjects.nibgbOgreAPFCLocalizable.stringshb!OgreTextFinderLocalizable.stringsi= German.lproj8iOgreAdvancedFindPanel.nibjKGcA> | 8.xPp <iOgreAPFCLocalizable.stringsnKcD+Hi!OgreTextFinderLocalizable.stringsoKc.,jiOgreAdvancedFindPanel.nibj classes.nibkKc Hjinfo.niblKc &jkeyedobjects.nibmKc ! kj classes.nibljinfo.nibmjkeyedobjects.nibniOgreAPFCLocalizable.stringsoi!OgreTextFinderLocalizable.stringsp= Info.plistq= Italian.lproj8qOgreAdvancedFindPanel.nibrKGcA<qOgreAPFCLocalizable.stringsvKc;Hq!OgreTextFinderLocalizable.stringswKc<rqOgreAdvancedFindPanel.nibr classes.nibsKc H/rinfo.nibtKc0&rkeyedobjects.nibuKc? 1 sr classes.nibtrinfo.niburkeyedobjects.nibvqOgreAPFCLocalizable.stringswq!OgreTextFinderLocalizable.stringsx=Japanese.lprojT&X6 B zN(Z8D 8xOgreAdvancedFindPanel.nibyKGcA<xOgreAPFCLocalizable.strings}KcKHx!OgreTextFinderLocalizable.strings~KcLyxOgreAdvancedFindPanel.niby classes.nibzKc H>yinfo.nib{Kc?&ykeyedobjects.nib|KcZ @ zy classes.nib{yinfo.nib|ykeyedobjects.nib}xOgreAPFCLocalizable.strings~x!OgreTextFinderLocalizable.strings=Portuguese.lproj8OgreAdvancedFindPanel.nibKGcA<OgreAPFCLocalizable.stringsKcZH!OgreTextFinderLocalizable.stringsKc[OgreAdvancedFindPanel.nib classes.nibKc HNinfo.nibKcO&keyedobjects.nibKc? P  classes.nibinfo.nibkeyedobjects.nibOgreAPFCLocalizable.strings!OgreTextFinderLocalizable.stringsD ` P : ~fr\ =Romanian.lproj8OgreAdvancedFindPanel.nibKGcA<OgreAPFCLocalizable.stringsKciH!OgreTextFinderLocalizable.stringsKcjOgreAdvancedFindPanel.nib classes.nibKc H]info.nibKc^&keyedobjects.nibKc? _  classes.nibinfo.nibkeyedobjects.nibOgreAPFCLocalizable.strings!OgreTextFinderLocalizable.strings= Spanish.lproj8OgreAdvancedFindPanel.nibKGcA<OgreAPFCLocalizable.stringsKcyH!OgreTextFinderLocalizable.stringsKc zOgreAdvancedFindPanel.nib classes.nibKc Hlinfo.nibKcm&keyedobjects.nibKc n  classes.nibinfo.nibkeyedobjects.nibOgreAPFCLocalizable.strings!OgreTextFinderLocalizable.stringsl$ x b  LF<hash.hKcI keywordhash.hKcz opcodes.hKcos.hKc  os_common.hKc^ os_test.hKc os_unix.hKc 2 8  L 8 $vdNF4 os_win.hKcpager.hKcparse.hKc.QuickLite_Prefix.pchKc(QuickLiteCursor.hKc,o6QuickLiteCursorPrivate.hKc,QuickLiteDatabase.hKcA8QuickLiteDatabaseExtras.hKcA:QuickLiteDatabasePrivate.hKc *QuickLiteGlobals.hKc8QuickLiteGlobalsPrivate.hKc J"QuickLiteRow.hKc 0QuickLiteRowPrivate.hKc d @ b:,CurrentQuickLite.frameworkHeadersKKKKcslnkrhap} QuickLiteKKKKcslnkrhap~ ResourcesKKKKcslnkrhapVersionsLGcAHeaders QuickLite ResourcesVersionsALGcACurrentLLLLcslnkrhapAHeadersKGcA QuickLiteLc '0 ResourcesLGcAHeadersbtree.hKc J 6(pL(tf. sqlite3.h sqliteInt.hvdbe.h vdbeInt.h QuickLite Resources English.lprojLGcA Info.plistLcg English.lproj(InfoPlist.stringsLcInfoPlist.strings Info.plistCurrent Info.plistMacOS SevenFourLJcTYY SevenFourPkgInfo Resources74.icnsLuc9  (Ch2Thread.stringsLc closeTab.pngL*c0deleteThreadCache.pngL*c  English.lprojLGcA"Japanese.lproj~~LGcA j F ,  z Z  r ^ h >&|`:r^xZ2 $ImageWindow.nibLGcA,Localizable.stringsLcy MainMenu.nib~~LGcA"MainWindow.nibTTLGcA$PopUpWindow.nibLGcA"PostWindow.nibLGcA SidePane.nibLGcA Toolbar.plistLc2ImageWindow.nib classes.nibL*c info.nibL*c &keyedobjects.nibLc$s n V , 6  | P :xb2$* classes.nibinfo.nibkeyedobjects.nibLocalizable.strings MainMenu.nib classes.nib~~L*cinfo.nib~~L*c&keyedobjects.nib~~Lc   classes.nibinfo.nibkeyedobjects.nibMainWindow.nib classes.nibTTL*c info.nibTTL*c&keyedobjects.nibTTLcY classes.nibinfo.nibkeyedobjects.nibPopUpWindow.nib classes.nibL*c%info.nibL*c&&keyedobjects.nibLc' classes.nibinfo.nibkeyedobjects.nibPostWindow.nib classes.nibL*c)info.nibL*c* ^ <  lJ"|Z2X6 newTab.pngL*c3&postToThread.pngLc4Skin ##LGcAstar.pngLc*J state.pngLcKtab.pngLcL tabClose.pngLcvM,toggleBoardTree.pngLcaN*toggleMainPane.pngL*cO$updateBoard.pngLc5P&updateThread.pngLcQ74.icnsCh2Thread.strings closeTab.pngdeleteThreadCache.png English.lproj Credits.rtfL*ci(InfoPlist.stringsLJcf  Credits.rtfInfoPlist.stringsJapanese.lproj" v ` 4 z Z <B" sqlite3.hKck sqliteInt.hKc#Vvdbe.hKc vdbeInt.hKcAWbtree.hhash.h keywordhash.h opcodes.hos.h os_common.h os_test.h os_unix.hos_win.hpager.hparse.hQuickLite_Prefix.pchQuickLiteCursor.hQuickLiteCursorPrivate.hQuickLiteDatabase.hQuickLiteDatabaseExtras.hQuickLiteDatabasePrivate.hQuickLiteGlobals.hQuickLiteGlobalsPrivate.hQuickLiteRow.hQuickLiteRowPrivate.h$v@~<lH$tTB6 &keyedobjects.nibLc&x+ classes.nibinfo.nibkeyedobjects.nib SidePane.nib classes.nibL*c.info.nibL*c4/&keyedobjects.nibLcm0 classes.nibinfo.nibkeyedobjects.nib Toolbar.plist newTab.pngpostToThread.pngSkin control.pngGGLc5 Header.htmlGGLcS6 NewRes.htmlLc7 prototype.jsGGLcU 8 Res.htmlLcD sevenfour.css##L#cE sevenfour.jsMMLcF,SFThreadFormatter.h||L*cMG v`J4dBxV.4SFThreadHTMLFormatter.hL*cH Title.htmlGGLcI control.png Header.html NewRes.html prototype.jsRes.html sevenfour.css sevenfour.jsSFThreadFormatter.hSFThreadHTMLFormatter.h Title.htmlstar.png state.pngtab.png tabClose.pngtoggleBoardTree.pngtoggleMainPane.pngupdateBoard.pngupdateThread.pngSource .DS_Storewwwwc@<R74.icns$$LXc9 R  Ch2Board.h%%LZc\ Ch2Board.mLZcf]"Ch2BoardTree.h%%LZc_"Ch2BoardTree.m%%LZc `"Ch2DatParser.h%%LZca"Ch2DatParser.m%%LZc b Ch2Helper.h%%LZccT> "  h6nN*j@xP<#&TemporaryPanel.h{aaO]cJ&TemporaryPanel.m|}}O]c K,toggleBoardTree.png}%%O]caL*toggleMainPane.png~%%O]cM$updateBoard.png%%O]c5N&updateThread.png%%O]cO&WhiteFormatter.h%%O]cP&WhiteFormatter.mrrO]czQ74.icns Ch2Board.h Ch2Board.mCh2BoardTree.hCh2BoardTree.mCh2DatParser.hCh2DatParser.m Ch2Helper.h Ch2Helper.m Ch2Thread.h Ch2Thread.mCh2Thread.strings closeTab.pngdeleteThreadCache.png h t 8  b : \ 6 tN. ImageWindow.nib classes.nib& & MWc}info.nib& & MWc~&keyedobjects.nib& & MWc$s classes.nibinfo.nibkeyedobjects.nibLocalizable.strings MainMenu.nib classes.nib~~MWcinfo.nib~~MWc&keyedobjects.nib~~MWc  nX 6  H 8  &xb8dT> classes.nibinfo.nibkeyedobjects.nib MainMenu~.nib classes.nibPPMWcinfo.nibPPMWc&keyedobjects.nibPPMWc_   classes.nibinfo.nibkeyedobjects.nibMainWindow.nib classes.nibl[l[MWc info.nibl[l[MWc&keyedobjects.nibl[l[MWcY classes.nibinfo.nibkeyedobjects.nib MainWindow~.nib classes.nib!lBlBMWc  info.nib"lBlBMWc& keyedobjects.nib#lClCMWcY! classes.nib" info.nib# keyedobjects.nib$PopUpWindow.nib$ classes.nib%||MWc$info.nib&||MWc Z (  h6xF$X6 English.lproj Credits.rtf|V|VM[cin(InfoPlist.stringsMWcfp Credits.rtfInfoPlist.strings  FontButton.h  FontButton.m HTThreePaneSplitView.h HTThreePaneSplitView.m  Info.plistJapanese.lproj$ImageWindow.nib& & MGcA,Localizable.stringsMWcy MainMenu.nib~~MGcA  MainMenu~.nibPPMGcA"MainWindow.nibl[l[MGcA$MainWindow~.nib lClCMGcA$PopUpWindow.nib$||MGcA&PopUpWindow~.nib(**MGcA"PostWindow.nib,@@MGcA SidePane.nib0__MGcA  SidePane~.nib4[[MGcA  Toolbar.plist8llMWc   tp`"rP:"&$keyedobjects.nib'||MWc%$ classes.nib&$info.nib'$keyedobjects.nib(PopUpWindow~.nib( classes.nib)**MWc(info.nib***MWc&(keyedobjects.nib+**MWc)( classes.nib*(info.nib+(keyedobjects.nib,PostWindow.nib, classes.nib-@@MWc,info.nib.@@MWc&,keyedobjects.nib/@@MWc&x-, classes.nib.,info.nib/,keyedobjects.nib0 SidePane.nib0 classes.nib1__MWc0info.nib2__MWc4&0keyedobjects.nib3__MWcm10 classes.nib20info.nib30keyedobjects.nib4 SidePane~.nib4 classes.nib5[[MWc z H & \ : lJ"xV. Ch2Helper.m4z4zLZcd Ch2Thread.h%%N\c RatingCell.h?%%N\c RatingCell.m@55N\c-<SearchableArrayController.hA%%N\c<SearchableArrayController.mB%%N\c,SevenFour.xcodeprojCNNNGcA.SevenFour_Prefix.pchG$$NXc(SFAppController.hHN\c(SFAppController.mIQ;Q;N\cl SFBoard.hJ%%N\c> SFBoard.mK%%N\cFTB 0  >R"!  SFDocument.hL==N\c SFDocument.mMooN\c8SFImageWindowController.hN& f& fN\c8SFImageWindowController.mO& & N\cM6SFMainWindowController.hPN\c6SFMainWindowController.mQggN\cdH SFMDBoard.hR==N\c  SFMDBoard.mS==N\c$SFNormalBoard.hT%%N\c $SFNormalBoard.mU%%N\cC8SFPopUpWindowController.hVN\c8SFPopUpWindowController.mWrrN\c [6SFPostWindowController.hX%%N\c j L .p>&#  6SFPostWindowController.mYN\c]2SFSidePaneController.hZivivN\c2SFSidePaneController.m[iiN\c"SFSmartBoard.h\%%N\c0"SFSmartBoard.m]==N\c* SFStateCell.h^%%N\c SFStateCell.m_PPN\c SFThread.h`N\c SFThread.marrN\c2(SFThreadFactory.hb%%N\c!(SFThreadFactory.mcrrN\c "4SFThreadHTMLFormatter.hdN\c#4SFThreadHTMLFormatter.meqqN\c-$ n L * j>04info.nib6[[MWc4&4keyedobjects.nib7[[MWcm54 classes.nib64info.nib74keyedobjects.nib8 Toolbar.plist9main.m: new-top.xcf; newTab.png<NSFileManagerAdditions.h=NSFileManagerAdditions.m>postToThread.png? RatingCell.h@ RatingCell.mASearchableArrayController.hBSearchableArrayController.mCSevenFour.xcodeprojC kzys.mode1DMMNXcH  C kzys.pbxuserENNNXcF1$Cproject.pbxprojFMMNXcŢ  DC kzys.mode1EC kzys.pbxuserFCproject.pbxprojGSevenFour_Prefix.pchHSFAppController.hISFAppController.mJ SFBoard.hK SFBoard.mL SFDocument.hM SFDocument.mNSFImageWindowController.hOSFImageWindowController.mPSFMainWindowController.hQSFMainWindowController.mR SFMDBoard.hS SFMDBoard.mTSFNormalBoard.hUSFNormalBoard.mVSFPopUpWindowController.hWSFPopUpWindowController.mXSFPostWindowController.hYSFPostWindowController.mZSFSidePaneController.h[SFSidePaneController.m\SFSmartBoard.h]SFSmartBoard.m^ SFStateCell.h_ SFStateCell.m$ p 2 p , ` 8 p ,  \ (nP8$\2R,f>! "SFThreadView.hfO\cT'"SFThreadView.mghhO\c($SFURLProtocol.hh>>O\c)$SFURLProtocol.miO\cT*SkinjGGOGcAstar.pngs%%O]c*? state.pngt=ϊ=ϊO]c@tab.pngu==O]cA$TabbedWebView.hvA'RA'RO]c3B$TabbedWebView.mwrrO]c-C tabClose.pngxP^P^O]cvFTEC.hy||O]cGTEC.mzO]cH x n V 8 dF*Bud1  ob .fwi0blobicnv.fwswlong.icgoblob.infoblob(LVp SevenFour.appIlocblobZ!SourceIlocblob!Sourcefwi0blobicnvSourcefwswlongSourceicgoblobSourceicspblob  @ @ @ @ E DSDB ` @ @ @Versions/Current/HeadersVersions/Current/OgreKitVersions/Current/Resources/* * Name: OGRegularExpressionFormatter.m * Project: OgreKit * * Creation Date: Feb 29 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2004 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import @interface NSString (OgreKitAdditions) /* options: compile time options: OgreNoneOption no option OgreSingleLineOption '^' -> '\A', '$' -> '\z', '\Z' -> '\z' OgreMultilineOption '.' match with newline OgreIgnoreCaseOption ignore case (case-insensitive) OgreExtendOption extended pattern form OgreFindLongestOption find longest match OgreFindNotEmptyOption ignore empty match OgreNegateSingleLineOption clear OgreSINGLELINEOption which is default on in OgrePOSIXxxxxSyntax, OgrePerlSyntax and OgreJavaSyntax. OgreDontCaptureGroupOption named group only captured. (/.../g) OgreCaptureGroupOption named and no-named group captured. (/.../G) OgreDelimitByWhitespaceOption delimit words by whitespace in OgreSimpleMatchingSyntax @"AAA BBB CCC" <=> @"(AAA)|(BBB)|(CCC)" search time options: OgreNotBOLOption string head(str) isn't considered as begin of line OgreNotEOLOption string end (end) isn't considered as end of line OgreFindEmptyOption allow empty match being next to not empty matchs e.g. regex = [OGRegularExpression regularExpressionWithString:@"[a-z]*" options:compileOptions]; NSLog(@"%@", [regex replaceAllMatchesInString:@"abc123def" withString:@"(\\0)" options:searchOptions]); compileOptions searchOptions replaced string 1. OgreFindNotEmptyOption OgreNoneOption (abc)123(def) (or OgreFindEmptyOption) 2. OgreNoneOption OgreNoneOption (abc)1()2()3(def) 3. OgreNoneOption OgreFindEmptyOption (abc)()1()2()3(def)() */ /********** * Search * **********/ - (NSRange)rangeOfRegularExpressionString:(NSString*)expressionString; - (NSRange)rangeOfRegularExpressionString:(NSString*)expressionString options:(unsigned)options; - (NSRange)rangeOfRegularExpressionString:(NSString*)expressionString options:(unsigned)options range:(NSRange)searchRange; /********* * Split * *********/ // マッチした部分で文字列を分割し、NSArrayに収めて返す。 - (NSArray*)componentsSeparatedByRegularExpressionString:(NSString*)expressionString; /********************* * Newline Character * *********************/ // 改行コードが何か調べる - (OgreNewlineCharacter)newlineCharacter; @end @interface NSMutableString (OgreKitAdditions) /*********** * Replace * ***********/ - (unsigned)replaceOccurrencesOfRegularExpressionString:(NSString*)expressionString withString:(NSString*)replaceString options:(unsigned)options range:(NSRange)searchRange; /********************* * Newline Character * *********************/ // 改行コードをnewlineCharacterに統一する。 - (void)replaceNewlineCharactersWithCharacter:(OgreNewlineCharacter)newlineCharacter; // 改行コードを取り除く - (void)chomp; @end/* * Name: OGMutableString.h * Project: OgreKit * * Creation Date: Sep 22 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2004 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #import @protocol OGMutableStringProtocol - (void)appendString:(NSString*)string; - (void)appendString:(NSString*)string hasAttributesOfOGString:(NSObject*)ogString; - (void)appendAttributedString:(NSAttributedString*)string; - (void)appendOGString:(NSObject*)string; - (void)appendOGStringLeaveImprint:(NSObject*)string; - (void)appendOGString:(NSObject*)string changeFont:(BOOL)changeFont mergeAttributes:(BOOL)mergeAttributes; - (void)appendOGString:(NSObject*)string changeFont:(BOOL)changeFont mergeAttributes:(BOOL)mergeAttributes ofOGString:(NSObject*)srcString; - (void)setAttributesOfOGString:(NSObject*)string atIndex:(unsigned)index; @end /* * Name: OgreFindPanelController.h * Project: OgreKit * * Creation Date: Sep 13 2003 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import @class OgreTextFinder, OgreFindResult; @interface OgreFindPanelController : NSResponder { IBOutlet OgreTextFinder *textFinder; IBOutlet NSPanel *findPanel; } - (IBAction)showFindPanel:(id)sender; - (void)close; - (OgreTextFinder*)textFinder; - (void)setTextFinder:(OgreTextFinder*)aTextFinder; - (NSPanel*)findPanel; - (void)setFindPanel:(NSPanel*)aPanel; - (NSDictionary*)history; @end /* * Name: OgreFindResultBranch.h * Project: OgreKit * * Creation Date: Apr 18 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import @class OgreTextFindResult; @interface OgreFindResultBranch : OgreTextFindBranch { OgreTextFindResult *_textFindResult; } /* methods overridden by subclass of OgreFindResultLeaf */ - (void)addComponent:(NSObject *)aFindResultComponent; - (void)endAddition; - (OgreTextFindResult*)textFindResult; - (void)setTextFindResult:(OgreTextFindResult*)textFindResult; - (BOOL)showMatchedString; - (BOOL)selectMatchedString; @end /* * Name: OgreFindResultLeaf.h * Project: OgreKit * * Creation Date: Apr 18 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #import @class OgreTextFindResult; @interface OgreFindResultLeaf : OgreTextFindLeaf { OgreTextFindResult *_textFindResult; } /* methods overridden by subclass of OgreFindResultLeaf */ - (OgreTextFindResult*)textFindResult; - (void)setTextFindResult:(OgreTextFindResult*)textFindResult; - (BOOL)showMatchedString; - (BOOL)selectMatchedString; @end /* * Name: OgreFindResultWindow.h * Project: OgreKit * * Creation Date: Jun 10 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #import @class OgreAttachableWindowMediator; @interface OgreFindResultWindowController : NSObject { IBOutlet NSOutlineView *grepOutlineView; IBOutlet NSButton *liveUpdateCheckBox; IBOutlet NSWindow *window; IBOutlet NSTextField *findStringField; IBOutlet NSTextField *messageField; OgreTextFindResult *_textFindResult; BOOL _liveUpdate; OgreAttachableWindowMediator *_attachedWindowMediator; } - (id)initWithTextFindResult:(OgreTextFindResult*)textFindResult liveUpdate:(BOOL)liveUpdate; - (void)setTextFindResult:(OgreTextFindResult*)textFindResult; - (NSWindow*)window; - (IBAction)updateLiveUpdate:(id)sender; - (void)show; - (void)close; // protected method - (void)setupFindResultView; @end /* * Name: OGRegularExpression.h * Project: OgreKit * * Creation Date: Aug 30 2003 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #ifndef NOT_RUBY # define NOT_RUBY #endif #ifndef HAVE_CONFIG_H # define HAVE_CONFIG_H #endif #import /* constants */ // version #define OgreVersionString @"2.1.1" // compile time options: extern const unsigned OgreNoneOption; extern const unsigned OgreSingleLineOption; extern const unsigned OgreMultilineOption; extern const unsigned OgreIgnoreCaseOption; extern const unsigned OgreExtendOption; extern const unsigned OgreFindLongestOption; extern const unsigned OgreFindNotEmptyOption; extern const unsigned OgreNegateSingleLineOption; extern const unsigned OgreDontCaptureGroupOption; extern const unsigned OgreCaptureGroupOption; // (REG_OPTION_POSIX_REGIONは使用しない) // OgreDelimitByWhitespaceOptionはOgreSimpleMatchingSyntaxの使用時に、空白文字を単語の区切りとみなすかどうか // 例: @"AAA BBB CCC" -> @"(AAA)|(BBB)|(CCC)" extern const unsigned OgreDelimitByWhitespaceOption; #define OgreCompileTimeOptionMask(x) ((x) & (OgreSingleLineOption | OgreMultilineOption | OgreIgnoreCaseOption | OgreExtendOption | OgreFindLongestOption | OgreFindNotEmptyOption | OgreNegateSingleLineOption | OgreDontCaptureGroupOption | OgreCaptureGroupOption | OgreDelimitByWhitespaceOption)) // search time options: extern const unsigned OgreNotBOLOption; extern const unsigned OgreNotEOLOption; extern const unsigned OgreFindEmptyOption; #define OgreSearchTimeOptionMask(x) ((x) & (OgreNotBOLOption | OgreNotEOLOption | OgreFindEmptyOption)) // replace time options: extern const unsigned OgreReplaceWithAttributesOption; extern const unsigned OgreReplaceFontsOption; extern const unsigned OgreMergeAttributesOption; #define OgreReplaceTimeOptionMask(x) ((x) & (OgreReplaceWithAttributesOption | OgreReplaceFontsOption | OgreMergeAttributesOption)) // compile time syntax typedef enum { OgreSimpleMatchingSyntax = 0, OgrePOSIXBasicSyntax, OgrePOSIXExtendedSyntax, OgreEmacsSyntax, OgreGrepSyntax, OgreGNURegexSyntax, OgreJavaSyntax, OgrePerlSyntax, OgreRubySyntax } OgreSyntax; // @"\\" #define OgreBackslashCharacter @"\\" // "\\" //#define OgreCStringBackslashCharacter [NSString stringWithCString:"\\"] // GUI中の¥マーク #define OgreGUIYenCharacter [NSString stringWithUTF8String:"\xc2\xa5"] // newline character typedef enum { OgreNonbreakingNewlineCharacter = -1, OgreUnixNewlineCharacter = 0, OgreLfNewlineCharacter = 0, OgreMacNewlineCharacter = 1, OgreCrNewlineCharacter = 1, OgreWindowsNewlineCharacter = 2, OgreCrLfNewlineCharacter = 2, OgreUnicodeLineSeparatorNewlineCharacter, OgreUnicodeParagraphSeparatorNewlineCharacter } OgreNewlineCharacter; // exception name extern NSString * const OgreException; @class OGRegularExpressionMatch, OGRegularExpressionEnumerator; @protocol OGStringProtocol; @interface OGRegularExpression : NSObject { NSString *_escapeCharacter; // \の代替文字 NSString *_expressionString; // 正規表現を表す文字列 unichar *_UTF16ExpressionString; // 正規表現を表すUTF16文字列 unsigned _options; // コンパイルオプション OgreSyntax _syntax; // 正規表現の構文 NSMutableDictionary *_groupIndexForNameDictionary; // nameでindexを引く辞書 // 構造: /(?a+)(?b+)(?c+)/ => {"a" = (1,3), "b" = (2)} NSMutableArray *_nameForGroupIndexArray; // (index-1)でnameを引く逆引き辞書(配列) // 構造: /(?a+)(?b+)(?c+)/ => ("a", "b", "a") regex_t *_regexBuffer; // 鬼車正規表現構造体 } /**************************** * creation, initialization * ****************************/ // Arguments: // expressionString: 正規表現を表す文字列 // options: オプション(後述参照) // syntax: 構文(後述参照) // escapeCharacter: \の代替文字 // Return value: // success: a pointer to OGRegularExpression instance // error: exception raised /* options: OgreNoneOption no option OgreSingleLineOption '^' -> '\A', '$' -> '\z', '\Z' -> '\z' OgreMultilineOption '.' match with newline OgreIgnoreCaseOption ignore case (case-insensitive) OgreExtendOption extended pattern form OgreFindLongestOption find longest match OgreFindNotEmptyOption ignore empty match OgreNegateSingleLineOption clear OgreSINGLELINEOption which is default on in OgrePOSIXxxxxSyntax, OgrePerlSyntax and OgreJavaSyntax. OgreDontCaptureGroupOption named group only captured. (/.../g) OgreCaptureGroupOption named and no-named group captured. (/.../G) OgreDelimitByWhitespaceOption delimit words by whitespace in OgreSimpleMatchingSyntax @"AAA BBB CCC" <=> @"(AAA)|(BBB)|(CCC)" syntax: OgrePOSIXBasicSyntax POSIX Basic RE OgrePOSIXExtendedSyntax POSIX Extended RE OgreEmacsSyntax Emacs OgreGrepSyntax grep OgreGNURegexSyntax GNU regex OgreJavaSyntax Java (Sun java.util.regex) OgrePerlSyntax Perl OgreRubySyntax Ruby (default) OgreSimpleMatchingSyntax Simple Matching escapeCharacter: OgreBackslashCharacter @"\\" Backslash (default) OgreGUIYenCharacter [NSString stringWithUTF8String:"\xc2\xa5"] Yen Mark */ + (id)regularExpressionWithString:(NSString*)expressionString; + (id)regularExpressionWithString:(NSString*)expressionString options:(unsigned)options; + (id)regularExpressionWithString:(NSString*)expressionString options:(unsigned)options syntax:(OgreSyntax)syntax escapeCharacter:(NSString*)character; - (id)initWithString:(NSString*)expressionString; - (id)initWithString:(NSString*)expressionString options:(unsigned)options; - (id)initWithString:(NSString*)expressionString options:(unsigned)options syntax:(OgreSyntax)syntax escapeCharacter:(NSString*)character; /************* * accessors * *************/ // 正規表現を表している文字列をコピーして返す。変更するにはrecompileが必要。 - (NSString*)expressionString; // 現在有効なオプション。変更するにはrecompileが必要。 - (unsigned)options; // 現在使用している正規表現の構文。変更するにはrecompileが必要。 - (OgreSyntax)syntax; // エスケープ文字 @"\\" の代替文字。変更するにはrecompileが必要。変更すると数割遅くなります。 - (NSString*)escapeCharacter; // capture groupの数 - (unsigned)numberOfGroups; // named groupの数 - (unsigned)numberOfNames; // nameの配列 // named groupを使用していない場合はnilを返す。 - (NSArray*)names; // 現在のデフォルトのエスケープ文字。初期値は @"\\"(GUI中の\記号) + (NSString*)defaultEscapeCharacter; // デフォルトのエスケープ文字を変更する。変更すると数割遅くなります。 // 変更前に作成されたインスタンスには影響を与えない。 // character が使用できない文字の場合には例外を発生する。 + (void)setDefaultEscapeCharacter:(NSString*)character; // 現在のデフォルトの正規表現構文。初期値は OgreRubySyntax + (OgreSyntax)defaultSyntax; // デフォルトの正規表現構文を変更する。 // 変更前に作成されたインスタンスには影響を与えない。 + (void)setDefaultSyntax:(OgreSyntax)syntax; // OgreKitのバージョン文字列を返す + (NSString*)version; // onigurumaのバージョン文字列を返す + (NSString*)onigurumaVersion; // description - (NSString*)description; /******************* * Validation test * *******************/ // 正しければ YES、正しくなければ NO を返す。 /* 正しくない理由を知りたい場合は、次のようにして例外を拾って下さい。 NS_DURING OGRegularExpression *rx = [OGRegularExpression regularExpressionWithString:expressionString]; NS_HANDLER // 例外処理 NSLog(@"%@ caught\n", [localException name]); NSLog(@"reason = \"%@\"\n", [localException reason]); NS_ENDHANDLER */ + (BOOL)isValidExpressionString:(NSString*)expressionString; + (BOOL)isValidExpressionString:(NSString*)expressionString options:(unsigned)options; + (BOOL)isValidExpressionString:(NSString*)expressionString options:(unsigned)options syntax:(OgreSyntax)syntax escapeCharacter:(NSString*)character; /********** * Search * **********/ /* options: OgreNotBOLOption string head(str) isn't considered as begin of line OgreNotEOLOption string end (end) isn't considered as end of line OgreFindEmptyOption allow empty match being next to not empty matchs e.g. regex = [OGRegularExpression regularExpressionWithString:@"[a-z]*" options:compileOptions]; NSLog(@"%@", [regex replaceAllMatchesInString:@"abc123def" withString:@"(\\0)" options:searchOptions]); compileOptions searchOptions replaced string 1. OgreFindNotEmptyOption OgreNoneOption (abc)123(def) (or OgreFindEmptyOption) 2. OgreNoneOption OgreNoneOption (abc)1()2()3(def) 3. OgreNoneOption OgreFindEmptyOption (abc)()1()2()3(def)() (comment: OgreFindEmptyOption is useful in the case of a matching like [a-z]+|\z.) */ // 最初にマッチした部分の OGRegularExpressionMatch オブジェクトを返す。 // マッチしなかった場合は nil を返す。 - (OGRegularExpressionMatch*)matchInString:(NSString*)string; - (OGRegularExpressionMatch*)matchInString:(NSString*)string range:(NSRange)range; - (OGRegularExpressionMatch*)matchInString:(NSString*)string options:(unsigned)options; - (OGRegularExpressionMatch*)matchInString:(NSString*)string options:(unsigned)options range:(NSRange)searchRange; - (OGRegularExpressionMatch*)matchInAttributedString:(NSAttributedString*)attributedString; - (OGRegularExpressionMatch*)matchInAttributedString:(NSAttributedString*)attributedString range:(NSRange)range; - (OGRegularExpressionMatch*)matchInAttributedString:(NSAttributedString*)attributedString options:(unsigned)options; - (OGRegularExpressionMatch*)matchInAttributedString:(NSAttributedString*)attributedString options:(unsigned)options range:(NSRange)searchRange; - (OGRegularExpressionMatch*)matchInOGString:(NSObject*)string options:(unsigned)options range:(NSRange)searchRange; // 全てのマッチした部分の OGRegularExpressionMatch オブジェクトを // 列挙する OGRegularExpressionEnumerator オブジェクトを返す。 - (NSEnumerator*)matchEnumeratorInString:(NSString*)string; - (NSEnumerator*)matchEnumeratorInString:(NSString*)string options:(unsigned)options; - (NSEnumerator*)matchEnumeratorInString:(NSString*)string range:(NSRange)searchRange; - (NSEnumerator*)matchEnumeratorInString:(NSString*)string options:(unsigned)options range:(NSRange)searchRange; - (NSEnumerator*)matchEnumeratorInAttributedString:(NSAttributedString*)attributedString; - (NSEnumerator*)matchEnumeratorInAttributedString:(NSAttributedString*)attributedString options:(unsigned)options; - (NSEnumerator*)matchEnumeratorInAttributedString:(NSAttributedString*)attributedString range:(NSRange)searchRange; - (NSEnumerator*)matchEnumeratorInAttributedString:(NSAttributedString*)attributedString options:(unsigned)options range:(NSRange)searchRange; - (NSEnumerator*)matchEnumeratorInOGString:(NSObject*)string options:(unsigned)options range:(NSRange)searchRange; // 全てのマッチした部分の OGRegularExpressionMatch オブジェクトを // 要素に持つ NSArray オブジェクトを返す。順序はマッチした順。 // ([[self matchEnumeratorInString:string] allObject]と同じ) // マッチしなかった場合は nil を返す。 - (NSArray*)allMatchesInString:(NSString*)string; - (NSArray*)allMatchesInString:(NSString*)string options:(unsigned)options; - (NSArray*)allMatchesInString:(NSString*)string range:(NSRange)searchRange; - (NSArray*)allMatchesInString:(NSString*)string options:(unsigned)options range:(NSRange)searchRange; - (NSArray*)allMatchesInAttributedString:(NSAttributedString*)attributedString; - (NSArray*)allMatchesInAttributedString:(NSAttributedString*)attributedString options:(unsigned)options; - (NSArray*)allMatchesInAttributedString:(NSAttributedString*)attributedString range:(NSRange)searchRange; - (NSArray*)allMatchesInAttributedString:(NSAttributedString*)attributedString options:(unsigned)options range:(NSRange)searchRange; - (NSArray*)allMatchesInOGString:(NSObject*)string options:(unsigned)options range:(NSRange)searchRange; /*********** * Replace * ***********/ // 文字列targetString中の正規表現にマッチした箇所を文字列replaceStringに置換したものを返す。 // replaceString中で使用できるエスケープシーケンスはOGReplaceExpression.hを参照。 // 最初にマッチした部分のみを置換 - (NSString*)replaceFirstMatchInString:(NSString*)targetString withString:(NSString*)replaceString; - (NSString*)replaceFirstMatchInString:(NSString*)targetString withString:(NSString*)replaceString options:(unsigned)searchOptions; - (NSString*)replaceFirstMatchInString:(NSString*)targetString withString:(NSString*)replaceString options:(unsigned)searchOptions range:(NSRange)replaceRange; - (NSAttributedString*)replaceFirstMatchInAttributedString:(NSAttributedString*)targetString withAttributedString:(NSAttributedString*)replaceString; - (NSAttributedString*)replaceFirstMatchInAttributedString:(NSAttributedString*)targetString withAttributedString:(NSAttributedString*)replaceString options:(unsigned)searchOptions; - (NSAttributedString*)replaceFirstMatchInAttributedString:(NSAttributedString*)targetString withAttributedString:(NSAttributedString*)replaceString options:(unsigned)searchOptions range:(NSRange)replaceRange; // 全てのマッチした部分を置換 - (NSString*)replaceAllMatchesInString:(NSString*)targetString withString:(NSString*)replaceString; - (NSString*)replaceAllMatchesInString:(NSString*)targetString withString:(NSString*)replaceString options:(unsigned)searchOptions; - (NSString*)replaceAllMatchesInString:(NSString*)targetString withString:(NSString*)replaceString options:(unsigned)searchOptions range:(NSRange)replaceRange; - (NSAttributedString*)replaceAllMatchesInAttributedString:(NSAttributedString*)targetString withAttributedString:(NSAttributedString*)replaceString; - (NSAttributedString*)replaceAllMatchesInAttributedString:(NSAttributedString*)targetString withAttributedString:(NSAttributedString*)replaceString options:(unsigned)searchOptions; - (NSAttributedString*)replaceAllMatchesInAttributedString:(NSAttributedString*)targetString withAttributedString:(NSAttributedString*)replaceString options:(unsigned)searchOptions range:(NSRange)replaceRange; // マッチした部分を置換 /* isReplaceAll == YES ならば全てのマッチした部分を置換 NO ならば最初にマッチした部分のみを置換 count: 置換した数 */ - (NSString*)replaceString:(NSString*)targetString withString:(NSString*)replaceString options:(unsigned)searchOptions range:(NSRange)replaceRange replaceAll:(BOOL)isReplaceAll; - (NSString*)replaceString:(NSString*)targetString withString:(NSString*)replaceString options:(unsigned)searchOptions range:(NSRange)replaceRange replaceAll:(BOOL)replaceAll numberOfReplacement:(unsigned*)numberOfReplacement; - (NSAttributedString*)replaceAttributedString:(NSAttributedString*)targetString withAttributedString:(NSAttributedString*)replaceString options:(unsigned)searchOptions range:(NSRange)replaceRange replaceAll:(BOOL)isReplaceAll; - (NSAttributedString*)replaceAttributedString:(NSAttributedString*)targetString withAttributedString:(NSAttributedString*)replaceString options:(unsigned)searchOptions range:(NSRange)replaceRange replaceAll:(BOOL)replaceAll numberOfReplacement:(unsigned*)numberOfReplacement; - (NSObject*)replaceOGString:(NSObject*)targetString withOGString:(NSObject*)replaceString options:(unsigned)searchOptions range:(NSRange)replaceRange replaceAll:(BOOL)replaceAll numberOfReplacement:(unsigned*)numberOfReplacement; // デリゲートに処理を委ねた置換 /* aSelectorは次の形式でなければならない 引数: 1番目: マッチしたOGRegularExpressionMatchオブジェクト 2番目: contextInfo:で渡したcontextInfo 戻り値: 置換した文字列 (ただし、nilを返した場合はそこで置換を中止する。) 例: 摂氏を華氏に変換する。 - (NSString*)fahrenheitForCelsius:(OGRegularExpressionMatch*)aMatch contextInfo:(id)contextInfo { double celcius = [[aMatch substringAtIndex:1] doubleValue]; double fahrenheit = celcius * 9.0 / 5.0 + 32.0; return [NSString stringWithFormat:@"%.1fF", fahrenheit]; } */ // 最初にマッチした部分のみを置換 - (NSString*)replaceFirstMatchInString:(NSString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo; - (NSString*)replaceFirstMatchInString:(NSString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo options:(unsigned)searchOptions; - (NSString*)replaceFirstMatchInString:(NSString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo options:(unsigned)searchOptions range:(NSRange)replaceRange; - (NSAttributedString*)replaceFirstMatchInAttributedString:(NSAttributedString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo; - (NSAttributedString*)replaceFirstMatchInAttributedString:(NSAttributedString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo options:(unsigned)searchOptions; - (NSAttributedString*)replaceFirstMatchInAttributedString:(NSAttributedString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo options:(unsigned)searchOptions range:(NSRange)replaceRange; - (NSObject*)replaceFirstMatchInOGString:(NSObject*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo options:(unsigned)searchOptions range:(NSRange)replaceRange; // 全てのマッチした部分を置換 - (NSString*)replaceAllMatchesInString:(NSString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo; - (NSString*)replaceAllMatchesInString:(NSString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo options:(unsigned)searchOptions; - (NSString*)replaceAllMatchesInString:(NSString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo options:(unsigned)searchOptions range:(NSRange)replaceRange; - (NSAttributedString*)replaceAllMatchesInAttributedString:(NSAttributedString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo; - (NSAttributedString*)replaceAllMatchesInAttributedString:(NSAttributedString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo options:(unsigned)searchOptions; - (NSAttributedString*)replaceAllMatchesInAttributedString:(NSAttributedString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo options:(unsigned)searchOptions range:(NSRange)replaceRange; - (NSObject*)replaceAllMatchesInOGString:(NSObject*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo options:(unsigned)searchOptions range:(NSRange)replaceRange; // マッチした部分を置換 /* isReplaceAll == YES ならば全てのマッチした部分を置換 NO ならば最初にマッチした部分のみを置換 count: 置換した数 */ - (NSString*)replaceString:(NSString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo options:(unsigned)searchOptions range:(NSRange)replaceRange replaceAll:(BOOL)isReplaceAll; - (NSString*)replaceString:(NSString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo options:(unsigned)searchOptions range:(NSRange)replaceRange replaceAll:(BOOL)isReplaceAll numberOfReplacement:(unsigned*)numberOfReplacement; - (NSAttributedString*)replaceAttributedString:(NSAttributedString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo options:(unsigned)searchOptions range:(NSRange)replaceRange replaceAll:(BOOL)isReplaceAll; - (NSAttributedString*)replaceAttributedString:(NSAttributedString*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo options:(unsigned)searchOptions range:(NSRange)replaceRange replaceAll:(BOOL)isReplaceAll numberOfReplacement:(unsigned*)numberOfReplacement; - (NSObject*)replaceOGString:(NSObject*)targetString delegate:(id)aDelegate replaceSelector:(SEL)aSelector contextInfo:(id)contextInfo options:(unsigned)searchOptions range:(NSRange)replaceRange replaceAll:(BOOL)isReplaceAll numberOfReplacement:(unsigned*)numberOfReplacement; /********* * Split * *********/ // マッチした部分で文字列を分割し、NSArrayに収めて返す。 - (NSArray*)splitString:(NSString*)aString; - (NSArray*)splitString:(NSString*)aString options:(unsigned)searchOptions; - (NSArray*)splitString:(NSString*)aString options:(unsigned)searchOptions range:(NSRange)searchRange; /* 分割数limitの意味 (例は@","にマッチさせた場合のもの) limit > 0: 最大でlimit個の単語に分割する。limit==3のとき、@"a,b,c,d,e" -> (@"a", @"b", @"c") limit == 0(デフォルト): 最後が空文字列のときは無視する。@"a,b,c," -> (@"a", @"b", @"c") limit < 0: 最後が空文字列でも含める。@"a,b,c," -> (@"a", @"b", @"c", @"") */ - (NSArray*)splitString:(NSString*)aString options:(unsigned)searchOptions range:(NSRange)searchRange limit:(int)limit; /************* * Utilities * *************/ // OgreSyntaxとintの相互変換 + (int)intValueForSyntax:(OgreSyntax)syntax; + (OgreSyntax)syntaxForIntValue:(int)intValue; // OgreSyntaxを表す文字列 + (NSString*)stringForSyntax:(OgreSyntax)syntax; // Optionsを表す文字列配列 + (NSArray*)stringsForOptions:(unsigned)options; // 文字列を正規表現で安全な文字列に変換する。(@"|().?*+{}^$[]-&#:=!<>@\\"を退避する) + (NSString*)regularizeString:(NSString*)string; // 改行コードが何か調べる + (OgreNewlineCharacter)newlineCharacterInString:(NSString*)aString; // 改行コードをnewlineCharacterに統一する。 + (NSString*)replaceNewlineCharactersInString:(NSString*)aString withCharacter:(OgreNewlineCharacter)newlineCharacter; // 改行コードを取り除く + (NSString*)chomp:(NSString*)aString; @end /* * Name: OGRegularExpressionCapture.h * Project: OgreKit * * Creation Date: Jun 24 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #ifndef NOT_RUBY # define NOT_RUBY #endif #ifndef HAVE_CONFIG_H # define HAVE_CONFIG_H #endif #import // constants extern NSString * const OgreCaptureException; @class OGRegularExpression, OGRegularExpressionEnumerator, OGRegularExpressionMatch, OGRegularExpressionCapture; @protocol OGRegularExpressionCaptureVisitor - (void)visitAtFirstCapture:(OGRegularExpressionCapture*)aCapture; - (void)visitAtLastCapture:(OGRegularExpressionCapture*)aCapture; @end /* capture history tree example calculator with four operations '+', '-', '*', '/' and parentheses '(', ')' static NSString *const calcRegex = @"\\g(?\\g(?:(?@\\+\\g)|(?@\\-\\g))*){0}(?\\g(?:(?@\\*\\g)|(?@/\\g))*){0}(?\\(\\g\\)|(?@\\d+(?:\\.\\d*)?)){0}"; calcRegex corresponds to the following EBNF ::= { + | - } ::= { * | / } ::= ( ) | NUMBERS Note 1: Left recursive rules is forbidden. Note 2: The upper limit of number/kinds of capture history "(?@...)" is 31. eg. in the foregoing example, the number of capture history is 5 (e1, e2, t1, t2, f3) <= 31. */ @interface OGRegularExpressionCapture : NSObject { OnigCaptureTreeNode *_captureNode; // Oniguruma capture tree node unsigned _index, // マッチした順番 _level; // 深さ OGRegularExpressionMatch *_match; // 生成主のOGRegularExpressionMatchオブジェクト OGRegularExpressionCapture *_parent; // 親 } /********* * 諸情報 * *********/ // グループ番号 - (unsigned)groupIndex; // グループ名 - (NSString*)groupName; // 何番目の子要素であるか 0,1,2,... - (unsigned)index; // 深さ // 0: root - (unsigned)level; // 子要素の数 - (unsigned)numberOfChildren; // 子要素たち // return nil in the case of numberOfChildren == 0 - (NSArray*)children; // index番目の子要素 - (OGRegularExpressionCapture*)childAtIndex:(unsigned)index; // match - (OGRegularExpressionMatch*)match; // description - (NSString*)description; /********* * 文字列 * *********/ // マッチの対象になった文字列 - (NSString*)targetString; - (NSAttributedString*)targetAttributedString; // マッチした文字列 - (NSString*)string; - (NSAttributedString*)attributedString; /******* * 範囲 * *******/ // マッチした文字列の範囲 - (NSRange)range; /************************ * adapt Visitor pattern * *************************/ - (void)acceptVisitor:(id )aVisitor; @end /* * Name: OGRegularExpressionEnumerator.h * Project: OgreKit * * Creation Date: Sep 03 2003 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import @class OGRegularExpression; // Exception extern NSString * const OgreEnumeratorException; @interface OGRegularExpressionEnumerator : NSEnumerator { OGRegularExpression *_regex; // K\IuWFNg NSObject *_targetString; // Ώە unichar *_UTF16TargetString; // UTF16ł̌Ώە unsigned _lengthOfTargetString; // [_targetString length] NSRange _searchRange; // ͈ unsigned _searchOptions; // IvV int _terminalOfLastMatch; // OɃ}b`̏I[ʒu (_region->end[0] / sizeof(unichar)) unsigned _startLocation; // }b`Jnʒu BOOL _isLastMatchEmpty; // Õ}b`󕶎񂾂ǂ unsigned _numberOfMatches; // }b` } // S}b`ʂzŕԂB - (NSArray*)allObjects; // ̃}b`ʂԂB - (id)nextObject; // description - (NSString*)description; @end /* * Name: OGRegularExpressionFormatter.h * Project: OgreKit * * Creation Date: Sep 05 2003 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #import // Exception name extern NSString * const OgreFormatterException; @interface OGRegularExpressionFormatter : NSFormatter { NSString *_escapeCharacter; // \の代替文字 unsigned _options; // コンパイルオプション OgreSyntax _syntax; // 正規表現の構文 } // 必須メソッド - (NSString*)stringForObjectValue:(id)anObject; - (NSAttributedString*)attributedStringForObjectValue:(id)anObject withDefaultAttributes:(NSDictionary*)attributes; - (NSString*)editingStringForObjectValue:(id)anObject; // エラー判定 - (BOOL)getObjectValue:(id*)obj forString:(NSString*)string errorDescription:(NSString**)error; - (id)init; - (id)initWithOptions:(unsigned)options syntax:(OgreSyntax)syntax escapeCharacter:(NSString*)character; - (NSString*)escapeCharacter; - (void)setEscapeCharacter:(NSString*)character; - (unsigned)options; - (void)setOptions:(unsigned)options; - (OgreSyntax)syntax; - (void)setSyntax:(OgreSyntax)syntax; @end /* * Name: OGRegularExpressionMatch.h * Project: OgreKit * * Creation Date: Aug 30 2003 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #ifndef NOT_RUBY # define NOT_RUBY #endif #ifndef HAVE_CONFIG_H # define HAVE_CONFIG_H #endif #import // constant extern NSString * const OgreMatchException; @class OGRegularExpression, OGRegularExpressionEnumerator, OGRegularExpressionCapture; @protocol OGStringProtocol; @interface OGRegularExpressionMatch : NSObject { OnigRegion *_region; // match result region OGRegularExpressionEnumerator *_enumerator; // matcher unsigned _terminalOfLastMatch; // 前回にマッチした文字列の終端位置 (_region->end[0] / sizeof(unichar)) NSObject *_targetString; // 検索対象文字列 NSRange _searchRange; // 検索範囲 unsigned _index; // マッチした順番 } /********* * 諸情報 * *********/ // マッチした順番 0,1,2,... - (unsigned)index; // 部分文字列の数 + 1 - (unsigned)count; // description - (NSString*)description; /********* * 文字列 * *********/ // マッチの対象になった文字列 - (NSObject*)targetOGString; - (NSString*)targetString; - (NSAttributedString*)targetAttributedString; // マッチした文字列 \&, \0 - (NSObject*)matchedOGString; - (NSString*)matchedString; - (NSAttributedString*)matchedAttributedString; // index番目のsubstring \index // index番目のsubstringが存在しない時には nil を返す。 - (NSObject*)ogSubstringAtIndex:(unsigned)index; - (NSString*)substringAtIndex:(unsigned)index; - (NSAttributedString*)attributedSubstringAtIndex:(unsigned)index; // マッチした部分より前の文字列 \` - (NSObject*)prematchOGString; - (NSString*)prematchString; - (NSAttributedString*)prematchAttributedString; // マッチした部分より後ろの文字列 \' - (NSObject*)postmatchOGString; - (NSString*)postmatchString; - (NSAttributedString*)postmatchAttributedString; // 最後にマッチした部分文字列 \+ // 存在しないときには nil を返す。 - (NSObject*)lastMatchOGSubstring; - (NSString*)lastMatchSubstring; - (NSAttributedString*)lastMatchAttributedSubstring; // マッチした部分と一つ前にマッチした部分の間の文字列 \- (独自に追加) - (NSObject*)ogStringBetweenMatchAndLastMatch; - (NSString*)stringBetweenMatchAndLastMatch; - (NSAttributedString*)attributedStringBetweenMatchAndLastMatch; /******* * 範囲 * *******/ // マッチした文字列の範囲 - (NSRange)rangeOfMatchedString; // index番目のsubstringの範囲 // index番目のsubstringが存在しない時には {-1, 0} を返す。 - (NSRange)rangeOfSubstringAtIndex:(unsigned)index; // マッチした部分より前の文字列の範囲 - (NSRange)rangeOfPrematchString; // マッチした部分より後ろの文字列の範囲 - (NSRange)rangeOfPostmatchString; // 最後にマッチした部分文字列の範囲 // 存在しないときには {-1,0} を返す。 - (NSRange)rangeOfLastMatchSubstring; // マッチした部分と一つ前にマッチした部分の間の文字列の範囲 - (NSRange)rangeOfStringBetweenMatchAndLastMatch; /*************************************************************** * named group関連 (OgreCaptureGroupOptionを指定したときに使用可能) * ***************************************************************/ // 名前(ラベル)がnameの部分文字列 // 存在しない名前の場合は nil を返す。 // 同一の名前を持つ部分文字列が複数ある場合は例外を発生させる。 - (NSObject*)ogSubstringNamed:(NSString*)name; - (NSString*)substringNamed:(NSString*)name; - (NSAttributedString*)attributedSubstringNamed:(NSString*)name; // 名前がnameの部分文字列の範囲 // 存在しない名前の場合は {-1, 0} を返す。 // 同一の名前を持つ部分文字列が複数ある場合は例外を発生させる。 - (NSRange)rangeOfSubstringNamed:(NSString*)name; // 名前がnameの部分文字列のindex // 存在しない名前の場合は -1 を返す。 // 同一の名前を持つ部分文字列が複数ある場合は例外を発生させる。 - (unsigned)indexOfSubstringNamed:(NSString*)name; // index番目の部分文字列の名前 // 存在しない名前の場合は nil を返す。 - (NSString*)nameOfSubstringAtIndex:(unsigned)index; /*********************** * マッチした部分文字列を得る * ************************/ // (regex1)|(regex2)|... のような正規表現で、どのregex*にマッチしたかによって条件分岐する場合に便利。 /* 使用例: OGRegularExpression *regex = [OGRegularExpression regularExpressionWithString:@"([0-9]+)|([a-zA-Z]+)"]; NSEnumerator *matchEnum = [regex matchEnumeratorInString:@"123abc"]; OGRegularExpressionMatch *match; while ((match = [matchEnum nextObject]) != nil) { switch ([match indexOfFirstMatchedSubstring]) { case 1: NSLog(@"numbers"); break; case 2: NSLog(@"alphabets"); break; } } */ // マッチした部分文字列のうちグループ番号が最小のもの (ない場合は0を返す) - (unsigned)indexOfFirstMatchedSubstring; - (unsigned)indexOfFirstMatchedSubstringBeforeIndex:(unsigned)anIndex; - (unsigned)indexOfFirstMatchedSubstringAfterIndex:(unsigned)anIndex; - (unsigned)indexOfFirstMatchedSubstringInRange:(NSRange)aRange; // その名前 - (NSString*)nameOfFirstMatchedSubstring; - (NSString*)nameOfFirstMatchedSubstringBeforeIndex:(unsigned)anIndex; - (NSString*)nameOfFirstMatchedSubstringAfterIndex:(unsigned)anIndex; - (NSString*)nameOfFirstMatchedSubstringInRange:(NSRange)aRange; // マッチした部分文字列のうちグループ番号が最大のもの (ない場合は0を返す) - (unsigned)indexOfLastMatchedSubstring; - (unsigned)indexOfLastMatchedSubstringBeforeIndex:(unsigned)anIndex; - (unsigned)indexOfLastMatchedSubstringAfterIndex:(unsigned)anIndex; - (unsigned)indexOfLastMatchedSubstringInRange:(NSRange)aRange; // その名前 - (NSString*)nameOfLastMatchedSubstring; - (NSString*)nameOfLastMatchedSubstringBeforeIndex:(unsigned)anIndex; - (NSString*)nameOfLastMatchedSubstringAfterIndex:(unsigned)anIndex; - (NSString*)nameOfLastMatchedSubstringInRange:(NSRange)aRange; // マッチした部分文字列のうち最長のもの (ない場合は0を返す。同じ長さの物が複数あれば、番号の小さい物が優先される) - (unsigned)indexOfLongestSubstring; - (unsigned)indexOfLongestSubstringBeforeIndex:(unsigned)anIndex; - (unsigned)indexOfLongestSubstringAfterIndex:(unsigned)anIndex; - (unsigned)indexOfLongestSubstringInRange:(NSRange)aRange; // その名前 - (NSString*)nameOfLongestSubstring; - (NSString*)nameOfLongestSubstringBeforeIndex:(unsigned)anIndex; - (NSString*)nameOfLongestSubstringAfterIndex:(unsigned)anIndex; - (NSString*)nameOfLongestSubstringInRange:(NSRange)aRange; // マッチした部分文字列のうち最短のもの (ない場合は0を返す。同じ長さの物が複数あれば、番号の小さい物が優先される) - (unsigned)indexOfShortestSubstring; - (unsigned)indexOfShortestSubstringBeforeIndex:(unsigned)anIndex; - (unsigned)indexOfShortestSubstringAfterIndex:(unsigned)anIndex; - (unsigned)indexOfShortestSubstringInRange:(NSRange)aRange; // その名前 - (NSString*)nameOfShortestSubstring; - (NSString*)nameOfShortestSubstringBeforeIndex:(unsigned)anIndex; - (NSString*)nameOfShortestSubstringAfterIndex:(unsigned)anIndex; - (NSString*)nameOfShortestSubstringInRange:(NSRange)aRange; /****************** * Capture History * *******************/ /*例: NSString *target = @"abc de"; OGRegularExpression *regex = [OGRegularExpression regularExpressionWithString:@"(?@[a-z])+"]; OGRegularExpressionMatch *match; OGRegularExpressionCapture *capture; NSEnumerator *matchEnumerator = [regex matchEnumeratorInString:target]; unsigned i; while ((match = [matchEnumerator nextObject]) != nil) { capture = [match captureHistory]; NSLog(@"number of capture history: %d", [capture numberOfChildren]); for (i = 0; i < [capture numberOfChildren]; i++) NSLog(@" %@", [[capture childAtIndex:i] string]); } ログ: number of capture history: 3 a b c number of capture history: 2 d e */ // 捕獲履歴 // 履歴がない場合はnilを返す。 - (OGRegularExpressionCapture*)captureHistory; @end // UTF16文字列の長さを得る inline unsigned Ogre_UTF16strlen(unichar *const aUTF16string, unichar *const end); /* * Name: OgreKit.h * Project: OgreKit * * Creation Date: Sep 7 2003 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #ifndef NOT_RUBY # define NOT_RUBY #endif #ifndef HAVE_CONFIG_H # define HAVE_CONFIG_H #endif #import /* Regular Expressions */ #import #import #import #import #import #import #import #import #import /* Find Panel */ // Models #import #import #import #import #import #import #import #import #import #import // Views #import #import #import #import #import // Controllers #import #import #import /* * Name: OgreOutlineColumn.h * Project: OgreKit * * Creation Date: Jun 13 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import @interface OgreOutlineColumn : NSTableColumn { } - (int)ogreNumberOfChildrenOfItem:(id)item; - (BOOL)ogreIsItemExpandable:(id)item; - (id)ogreChild:(int)index ofItem:(id)item; - (id)ogreObjectValueForItem:(id)item; - (void)ogreSetObjectValue:(id)anObject forItem:(id)item; @end /* * Name: OgreOutlineView.h * Project: OgreKit * * Creation Date: Jun 13 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #import @interface OgreOutlineView : NSOutlineView { int _ogreSelectedColumn; id _ogreSelectedItem; NSRange _ogreSelectedRange; NSMutableArray *_ogrePathComponents; } - (int)ogreSelectedColumn; - (void)ogreSetSelectedColumn:(int)column; - (NSArray*)ogrePathComponentsOfSelectedItem; - (void)ogreSetSelectedItem:(id)item; - (NSRange)ogreSelectedRange; - (void)ogreSetSelectedRange:(NSRange)aRange; @end /* * Name: OGReplaceExpression.h * Project: OgreKit * * Creation Date: Sep 22 2003 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #import @class OGRegularExpressionMatch; extern NSString * const OgreReplaceException; @interface OGReplaceExpression : NSObject { NSMutableArray *_compiledReplaceString; NSMutableArray *_compiledReplaceStringType; NSMutableArray *_nameArray; unsigned _options; } /********* * 初期化 * *********/ /* expressionString中では次の特殊文字が使用できる。 \&, \0 マッチした文字列 \1 ... \9 n番目の括弧の内容 \+ 最後の括弧に対応する文字列 \` マッチした部分より前の文字列 (prematchString) \' マッチした部分より後ろの文字列 (postmatchString) \- 最後にマッチした部分と、一つ前にマッチした部分の間の文字列 (stringBetweenLastMatchAndLastButOneMatch) \g (?...)にマッチした部分文字列 (OgreCaptureGroupOptionを指定した場合に使用可能) \g index番目に(...)か(?...)にマッチした部分文字列 (OgreCaptureGroupOptionを指定した場合に使用可能) \\ バックスラッシュ "\" \t 水平タブ (0x09) \n 改行 (0x0A) \r 復帰 (0x0D) \x{HHHH} 16-bit Unicode character U+HHHH \その他の文字 \その他の文字 */ - (id)initWithString:(NSString*)replaceString syntax:(OgreSyntax)syntax escapeCharacter:(NSString*)character; - (id)initWithString:(NSString*)replaceString syntax:(OgreSyntax)syntax escapeCharacter:(NSString*)character; - (id)initWithString:(NSString*)replaceString escapeCharacter:(NSString*)character; - (id)initWithString:(NSString*)replaceString; - (id)initWithAttributedString:(NSAttributedString*)replaceString options:(unsigned)options syntax:(OgreSyntax)syntax escapeCharacter:(NSString*)character; - (id)initWithAttributedString:(NSAttributedString*)replaceString options:(unsigned)replaceOptions; - (id)initWithAttributedString:(NSAttributedString*)replaceString; - (id)initWithOGString:(NSObject*)replaceString options:(unsigned)options syntax:(OgreSyntax)syntax escapeCharacter:(NSString*)character; + (id)replaceExpressionWithString:(NSString*)replaceString syntax:(OgreSyntax)syntax escapeCharacter:(NSString*)character; + (id)replaceExpressionWithString:(NSString*)replaceString escapeCharacter:(NSString*)character; + (id)replaceExpressionWithString:(NSString*)replaceString; + (id)replaceExpressionWithAttributedString:(NSAttributedString*)replaceString options:(unsigned)options syntax:(OgreSyntax)syntax escapeCharacter:(NSString*)character; + (id)replaceExpressionWithAttributedString:(NSAttributedString*)replaceString options:(unsigned)options; + (id)replaceExpressionWithAttributedString:(NSAttributedString*)replaceString; + (id)replaceExpressionWithOGString:(NSObject*)replaceString options:(unsigned)options syntax:(OgreSyntax)syntax escapeCharacter:(NSString*)character; /******* * 置換 * *******/ - (NSObject*)replaceMatchedOGStringOf:(OGRegularExpressionMatch*)match; - (NSString*)replaceMatchedStringOf:(OGRegularExpressionMatch*)match; - (NSAttributedString*)replaceMatchedAttributedStringOf:(OGRegularExpressionMatch*)match; @end /* * Name: OgreTableColumn.h * Project: OgreKit * * Creation Date: Jun 13 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import @interface OgreTableColumn : NSTableColumn { id _ogreObservableController; NSString *_ogreControllerKeyOfValueBinding; NSMutableString *_ogreModelKeyPathOfValueBinding; } - (int)ogreNumberOfRows; - (id)ogreObjectValueForRow:(int)row; - (void)ogreSetObjectValue:(id)anObject forRow:(int)row; @end /* * Name: OgreTableView.h * Project: OgreKit * * Creation Date: Jun 13 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #import @interface OgreTableView : NSTableView { int _ogreSelectedColumn; int _ogreSelectedRow; NSRange _ogreSelectedRange; } - (NSObject *)ogreAdapter; - (int)ogreSelectedColumn; - (void)ogreSetSelectedColumn:(int)column; - (int)ogreSelectedRow; - (void)ogreSetSelectedRow:(int)row; - (NSRange)ogreSelectedRange; - (void)ogreSetSelectedRange:(NSRange)aRange; @end /* * Name: OgreTextFindBranch.h * Project: OgreKit * * Creation Date: Sep 26 2003 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import @class OgreFindResultBranch, OgreTextFindThread; @interface OgreTextFindBranch : NSObject { OgreTextFindBranch *_parent; int _index; BOOL _isParentRetained; BOOL _isTerminal; BOOL _isReversed; } /* Getting selected components */ -(NSIndexSet*)selectedIndexes; /* Getting an enumerator */ - (NSEnumerator*)componentEnumeratorInSelection:(BOOL)inSelection; // in the responder chain ordering - (OgreFindResultBranch*)findResultBranchWithThread:(OgreTextFindThread*)aThread; @end /* * Name: OgreTextFindComponent.h * Project: OgreKit * * Creation Date: Sep 26 2003 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import @protocol OgreTextFindVisitor; @class OgreTextFindLeaf, OgreTextFindBranch, OgreTextFindThread; @protocol OgreTextFindComponent - (void)acceptVisitor:(NSObject *)aVisitor; // visitor pattern /* Delegate methods of the OgreTextFindThread */ - (void)willProcessFinding:(NSObject *)aVisitor; - (void)didProcessFinding:(NSObject *)aVisitor; - (void)finalizeFinding; /* Getting information */ - (id)target; // a target (view) wrapped by a OgreTextFindComponent - (id)name; - (id)outline; - (NSWindow*)window; /* Examing behavioral attributes */ - (BOOL)isEditable; - (BOOL)isHighlightable; /* Getting and setting structural detail */ - (BOOL)isLeaf; - (BOOL)isBranch; - (unsigned)numberOfChildrenInSelection:(BOOL)inSelection; - (unsigned)numberOfDescendantsInSelection:(BOOL)inSelection; - (id)childAtIndex:(unsigned)index inSelection:(BOOL)inSelection; - (OgreTextFindBranch*)parent; - (void)setParent:(OgreTextFindBranch*)parent; - (void)setParentNoRetain:(OgreTextFindBranch*)parent; - (int)index; - (void)setIndex:(int)index; - (OgreTextFindLeaf*)selectedLeaf; - (BOOL)isTerminal; - (void)setTerminal:(BOOL)isTerminal; - (BOOL)isReversed; - (void)setReversed:(BOOL)isReversed; @end @protocol OgreTextFindVisitor - (void)visitLeaf:(OgreTextFindLeaf*)aLeaf; - (void)visitBranch:(OgreTextFindBranch*)aBranch; @end @protocol OgreTextFindTargetAdapter - (OgreTextFindLeaf*)buildStackForSelectedLeafInThread:(OgreTextFindThread*)aThread; - (void)moveHomePosition; @end /* * Name: OgreTextFindComponentEnumerator.h * Project: OgreKit * * Creation Date: Jun 05 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import @class OgreTextFindBranch; @interface OgreTextFindComponentEnumerator : NSEnumerator { OgreTextFindBranch *_branch; unsigned *_indexes, _count; int _nextIndex; int _terminalIndex; BOOL _inSelection; } - (id)initWithBranch:(OgreTextFindBranch*)aBranch inSelection:(BOOL)inSelection; - (void)setTerminalIndex:(int)index; - (void)setStartIndex:(int)index; @end /* * Name: OgreTextFinder.h * Project: OgreKit * * Creation Date: Sep 20 2003 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #import #import #import // OgreTextFinderLocalizable.stringsを使用したローカライズ #define OgreTextFinderLocalizedString(key) [[OgreTextFinder ogreKitBundle] localizedStringForKey:(key) value:(key) table:@"OgreTextFinderLocalizable"] @class OgreTextFinder, OgreFindPanelController, OgreTextFindResult, OgreTextFindThread, OgreTextFindProgressSheet; @protocol OgreTextFindDataSource /* OgreTextFinderが検索対象を知りたいときにresponder chain経由で呼ばれる document windowのdelegateがimplementすることを想定している */ - (void)tellMeTargetToFindIn:(id)sender; @end @interface OgreTextFinder : NSObject { IBOutlet OgreFindPanelController *findPanelController; // FindPanelController IBOutlet NSMenu *findMenu; // Find manu OgreSyntax _syntax; // 正規表現の構文 NSString *_escapeCharacter; // エスケープ文字 id _targetToFindIn; // 検索対象 Class _adapterClassForTarget; // 検索対象のアダプタ(ラッパー) NSMutableArray *_busyTargetArray; // 使用中ターゲット NSDictionary *_history; // 検索履歴等 BOOL _saved; // 履歴等が保存されたかどうか BOOL _shouldHackFindMenu; // FindメニューをOgreKitのものに置き換えるかどうか BOOL _useStylesInFindPanel; // 検索パネルでStyleを使用するかどうか。 NSMutableArray *_targetClassArray, // 検索可能なクラスを収めた配列 *_adapterClassArray; // 検索対象クラスのアダプタクラスを収めた配列 } /* OgreKit.framework bundle */ + (NSBundle*)ogreKitBundle; /* Shared instance */ + (id)sharedTextFinder; /* nib name of Find Panel/Find Panel Controller */ - (NSString*)findPanelNibName; /* Show Find Panel */ - (IBAction)showFindPanel:(id)sender; /* Startup time configurations */ - (void)setShouldHackFindMenu:(BOOL)hack; - (void)setUseStylesInFindPanel:(BOOL)use; - (BOOL)useStylesInFindPanel; /************* * Accessors * *************/ // target to find in - (void)setTargetToFindIn:(id)target; - (id)targetToFindIn; - (void)setAdapterClassForTargetToFindIn:(Class)adapterClass; - (Class)adapterClassForTargetToFindIn; // Find Panel Controller - (void)setFindPanelController:(OgreFindPanelController*)findPanelController; - (OgreFindPanelController*)findPanelController; // escape character - (void)setEscapeCharacter:(NSString*)character; - (NSString*)escapeCharacter; // syntax - (void)setSyntax:(OgreSyntax)syntax; - (OgreSyntax)syntax; /* Find/Replace/Highlight... */ - (OgreTextFindResult*)find:(NSString*)expressionString options:(unsigned)options fromTop:(BOOL)isTop forward:(BOOL)forward wrap:(BOOL)isWrap; - (OgreTextFindResult*)findAll:(NSString*)expressionString color:(NSColor*)highlightColor options:(unsigned)options inSelection:(BOOL)inSelection; - (OgreTextFindResult*)replace:(NSString*)expressionString withString:(NSString*)replaceString options:(unsigned)options; - (OgreTextFindResult*)replace:(NSString*)expressionString withAttributedString:(NSAttributedString*)replaceString options:(unsigned)options; - (OgreTextFindResult*)replace:(NSObject*)expressionString withOGString:(NSObject*)replaceString options:(unsigned)options; - (OgreTextFindResult*)replaceAndFind:(NSString*)expressionString withString:(NSString*)replaceString options:(unsigned)options replacingOnly:(BOOL)replacingOnly wrap:(BOOL)isWrap; - (OgreTextFindResult*)replaceAndFind:(NSString*)expressionString withAttributedString:(NSAttributedString*)replaceString options:(unsigned)options replacingOnly:(BOOL)replacingOnly wrap:(BOOL)isWrap; - (OgreTextFindResult*)replaceAndFind:(NSObject*)expressionString withOGString:(NSObject*)replaceString options:(unsigned)options replacingOnly:(BOOL)replacingOnly wrap:(BOOL)isWrap; - (OgreTextFindResult*)replaceAll:(NSString*)expressionString withString:(NSString*)replaceString options:(unsigned)options inSelection:(BOOL)inSelection; - (OgreTextFindResult*)replaceAll:(NSString*)expressionString withAttributedString:(NSAttributedString*)replaceString options:(unsigned)options inSelection:(BOOL)inSelection; - (OgreTextFindResult*)replaceAll:(NSObject*)expressionString withOGString:(NSObject*)replaceString options:(unsigned)options inSelection:(BOOL)inSelection; - (OgreTextFindResult*)hightlight:(NSString*)expressionString color:(NSColor*)highlightColor options:(unsigned)options inSelection:(BOOL)inSelection; - (OgreTextFindResult*)unhightlight; - (NSString*)selectedString; - (NSAttributedString*)selectedAttributedString; - (NSObject*)selectedOGString; - (BOOL)isSelectionEmpty; - (BOOL)jumpToSelection; /* creating an alert sheet */ - (OgreTextFindProgressSheet*)alertSheetOnTarget:(id)aTerget; /* Getting and registering adapters for targets */ - (id)adapterForTarget:(id)aTargetToFindIn; - (void)registeringAdapterClass:(Class)anAdapterClass forTargetClass:(Class)aTargetClass; - (BOOL)hasAdapterClassForObject:(id)anObject; /******************* * Private Methods * *******************/ // 前回保存された履歴 - (NSDictionary*)history; // currentを起点に名前がnameのmenu itemを探す。 - (NSMenuItem*)findMenuItemNamed:(NSString*)name startAt:(NSMenu*)current; // ターゲットが使用中かどうか - (BOOL)isBusyTarget:(id)target; // 使用中にする - (void)makeTargetBusy:(id)target; // 使用中でなくする - (void)makeTargetFree:(id)target; /* hack Find Menu */ - (void)hackFindMenu; - (void)didEndThread:(OgreTextFindThread*)aTextFindThread; @end /* * Name: OgreTextFindLeaf.h * Project: OgreKit * * Creation Date: Sep 26 2003 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #import @class OgreFindResultLeaf, OgreTextFindThread; @interface OgreTextFindLeaf : NSObject { OgreTextFindBranch *_parent; int _index; BOOL _isParentRetained; BOOL _isTerminal; BOOL _isFirstLeaf; BOOL _isReversed; } - (void)beginEditing; // begin editing - (void)endEditing; // end editing - (void)beginRegisteringUndoWithCapacity:(unsigned)aCapacity; // begin resistering undo oprations - (void)endRegisteringUndo; // end resistering undo oprations - (BOOL)isSelected; - (NSRange)selectedRange; - (void)setSelectedRange:(NSRange)aRange; - (void)jumpToSelection; - (NSObject*)ogString; - (void)setOGString:(NSObject*)aString; - (void)replaceCharactersInRange:(NSRange)aRange withOGString:(NSObject*)aString; - (void)unhighlight; - (void)highlightCharactersInRange:(NSRange)aRange color:(NSColor*)highlightColor; - (OgreFindResultLeaf*)findResultLeafWithThread:(OgreTextFindThread*)aThread; - (BOOL)isFirstLeaf; - (void)setFirstLeaf:(BOOL)isFirstLeaf; @end /* * Name: OgreFindProgressSheet.h * Project: OgreKit * * Creation Date: Oct 01 2003 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #import @protocol OgreTextFindProgressDelegate; @interface OgreTextFindProgressSheet : NSObject { IBOutlet NSWindow *progressWindow; // 経過表示用シート IBOutlet NSTextField *titleTextField; // タイトル IBOutlet NSProgressIndicator *progressBar; // バー IBOutlet NSTextField *progressTextField; // 経過を表す文字列 IBOutlet NSTextField *donePerTotalTextField; // 処理項目率 IBOutlet NSButton *button; // Cancel/OKボタン BOOL _shouldRelease; // OKボタンが押されたらこのオブジェクトをreleaseするかどうか NSWindow *_parentWindow; // シートを張るウィンドウ NSString *_title; // タイトル /* キャンセルされたときのaction */ SEL _cancelSelector; id _cancelTarget; id _cancelArgument; // == selfの場合はretainしない /* シートが閉じたときのaction */ SEL _didEndSelector; id _didEndTarget; id _didEndArgument; // == selfの場合はretainしない } /* 初期化 */ - (id)initWithWindow:(NSWindow*)parentWindow title:(NSString*)aTitle didEndSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anObject; - (IBAction)cancel:(id)sender; /* OgreTextFindProgressDelegate protocol */ /* // show progress - (void)setProgress:(double)progression message:(NSString*)message; - (void)setDonePerTotalMessage:(NSString*)message; // finish - (void)done:(double)progression message:(NSString*)message; // close sheet - (void)close:(id)sender; - (void)setReleaseWhenOKButtonClicked:(BOOL)shouldRelease; // cancel - (void)setCancelSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anObject; // show error alert - (void)showErrorAlert:(NSString*)title message:(NSString*)errorMessage; */ @end /* * Name: OgreTextFindResult.h * Project: OgreKit * * Creation Date: Apr 18 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #import #import #import #import @protocol OgreTextFindProgressDelegate; @protocol OgreTextFindResultDelegateProtocol - (void)didUpdateTextFindResult:(id)textFindResult; @end @protocol OgreFindResultCorrespondingToTextFindLeaf - (void)addMatch:(OGRegularExpressionMatch*)aMatch; - (void)endAddition; @end typedef enum { OgreTextFindResultFailure = 0, OgreTextFindResultSuccess = 1, OgreTextFindResultError = 2 } OgreTextFindResultType; @interface OgreTextFindResult : NSObject { OgreTextFindResultType _resultType; id _target; unsigned _numberOfMatches; // number of the matches OGRegularExpression *_regex; OgreFindResultBranch *_resultTree, *_branch; NSMutableArray *_branchStack; /* handling exception */ NSException *_exception; id _alertSheet; /* display */ NSString *_title; // target window title int _maxMatchedStringLength; // -matchedStringAtIndex:の返す最大文字数 (-1: 無制限) int _maxLeftMargin; // マッチした文字列の左側の最大文字数 (-1: 無制限) id _delegate; // 更新連絡先 /* highlight color */ NSMutableArray *_highlightColorArray; // variations } + (id)textFindResultWithTarget:(id)targetFindingIn thread:(OgreTextFindThread*)aThread; - (id)initWithTarget:(id)targetFindingIn thread:(OgreTextFindThread*)aThread; - (void)setType:(OgreTextFindResultType)resultType; - (BOOL)isSuccess; /* success or failure(including error) */ - (NSObject *)result; - (NSString*)findString; - (BOOL)alertIfErrorOccurred; - (void)setAlertSheet:(id /**/)aSheet exception:(NSException*)anException; - (void)beginGraftingToBranch:(OgreFindResultBranch*)aBranch; - (void)endGrafting; - (void)addLeaf:(id)aLeaf; - (unsigned)numberOfMatches; - (void)setNumberOfMatches:(unsigned)aNumber; - (NSString*)title; - (void)setTitle:(NSString*)title; // マッチした文字列の左側の最大文字数 (-1: 無制限) - (int)maximumLeftMargin; - (void)setMaximumLeftMargin:(int)leftMargin; // 最大文字数 (-1: 無制限) ただし、省略記号@"..."はカウントに入れない。 - (int)maximumMatchedStringLength; - (void)setMaximumMatchedStringLength:(int)aLength; - (void)setHighlightColor:(NSColor*)aColor regularExpression:(OGRegularExpression*)regex; // aString中のaRangeArrayの範囲を強調する。 - (NSAttributedString*)highlightedStringInRange:(NSArray*)aRangeArray ofString:(NSString*)aString; - (NSAttributedString*)missingString; - (NSAttributedString*)messageOfStringsFound:(unsigned)numberOfMatches; - (NSAttributedString*)messageOfItemsFound:(unsigned)numberOfMatches; // delegate - (id)delegate; - (void)setDelegate:(id)aDelegate; - (void)didUpdate; // setting of result outline view - (NSCell*)nameCell; - (float)rowHeight; // delegate method of the find result outline view - (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item; @end /* * Name: OgreTextFindReverseComponentEnumerator.h * Project: OgreKit * * Creation Date: Jun 05 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import @interface OgreTextFindReverseComponentEnumerator : OgreTextFindComponentEnumerator { } @end /* * Name: OgreTextFindThread.h * Project: OgreKit * * Creation Date: Sep 26 2003 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #import #import //#import #import #import #import #import #import @protocol OgreTextFindProgressDelegate // show progress - (void)setProgress:(double)progression message:(NSString*)message; // progression < 0: indeterminate - (void)setDonePerTotalMessage:(NSString*)message; // finish - (void)done:(double)progression message:(NSString*)message; // progression < 0: indeterminate // close - (void)close:(id)sender; - (void)setReleaseWhenOKButtonClicked:(BOOL)shouldRelease; // cancel - (void)setCancelSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anObject; // show error alert - (void)showErrorAlert:(NSString*)title message:(NSString*)errorMessage; @end @class OgreTextFindRoot; @interface OgreTextFindThread : NSObject { /* implementors */ NSObject *_targetAdapter; OgreTextFindLeaf *_leafProcessing; NSEnumerator *_enumeratorProcessing; NSMutableArray *_enumeratorStack; NSMutableArray *_branchStack; OgreTextFindRoot *_rootAdapter; /* Parameters */ OGRegularExpression *_regex; // regular expression OGReplaceExpression *_repex; // replace expression NSColor *_highlightColor; // highlight color unsigned _searchOptions; // search option BOOL _inSelection; // find scope BOOL _asynchronous; // synchronous or asynchronous SEL _didEndSelector; // selector for sending a finish message id _didEndTarget; // target for sending a finish message NSObject *_progressDelegate; // progress checker volatile BOOL _shouldFinish; // finish flag /* state */ volatile BOOL _terminated; // two-phase termination BOOL _exceptionRaised; unsigned _numberOfMatches; // number of matches OgreTextFindResult *_textFindResult; // result int _numberOfDoneLeaves, _numberOfTotalLeaves; NSDate *_processTime; // process time NSDate *_metronome; // metronome } /* Creating and initializing */ - (id)initWithComponent:(NSObject *)aComponent; /* Running and stopping */ - (void)detach; - (void)terminate; - (void)terminate:(id)sender; - (void)finish; /* result */ - (OgreTextFindResult*)result; - (void)addResultLeaf:(id)aResultLeaf; - (void)beginGraftingToBranch:(OgreTextFindBranch*)aBranch; - (void)endGrafting; /* Configuration */ - (void)setRegularExpression:(OGRegularExpression*)regex; - (void)setReplaceExpression:(OGReplaceExpression*)repex; - (void)setHighlightColor:(NSColor*)highlightColor; - (void)setOptions:(unsigned)options; - (void)setInSelection:(BOOL)inSelection; - (void)setAsynchronous:(BOOL)asynchronou; - (void)setDidEndSelector:(SEL)aSelector toTarget:(id)aTarget; - (void)setProgressDelegate:(NSObject *)aDelegate; /* Accessors */ - (OGRegularExpression*)regularExpression; - (OGReplaceExpression*)replaceExpression; - (NSColor*)highlightColor; - (unsigned)options; - (BOOL)inSelection; - (NSObject *)progressDelegate; - (BOOL)isTerminated; - (NSTimeInterval)processTime; /* Protected methods */ - (unsigned)numberOfMatches; // number of matches - (void)incrementNumberOfMatches; // _numberofMatches++ - (void)finishingUp:(id)sender; - (void)exceptionRaised:(NSException*)exception; - (void)pushEnumerator:(NSEnumerator*)anEnumerator; - (NSEnumerator*)popEnumerator; - (NSEnumerator*)topEnumerator; - (OgreTextFindBranch*)rootAdapter; - (NSObject *)targetAdapter; - (void)pushBranch:(OgreTextFindBranch*)aBranch; - (OgreTextFindBranch*)popBranch; - (OgreTextFindBranch*)topBranch; - (void)_setLeafProcessing:(OgreTextFindLeaf*)aLeaf; /* Methods implemented by subclasses */ - (SEL)didEndSelectorForFindPanelController; - (void)willProcessFindingAll; - (void)willProcessFindingInBranch:(OgreTextFindBranch*)aBranch; - (void)willProcessFindingInLeaf:(OgreTextFindLeaf*)aLeaf; - (BOOL)shouldContinueFindingInLeaf:(OgreTextFindLeaf*)aLeaf; - (void)didProcessFindingInLeaf:(OgreTextFindLeaf*)aLeaf; - (void)didProcessFindingInBranch:(OgreTextFindBranch*)aBranch; - (void)didProcessFindingAll; - (void)finalizeFindingAll; - (NSString*)progressMessage; - (NSString*)doneMessage; - (double)progressPercentage; // percentage of completion - (double)donePercentage; // percentage of completion @end /* * Name: OgreTextView.h * Project: OgreKit * * Creation Date: Jun 13 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #import @interface OgreTextView : NSTextView { id _observableControllerForDataBinding; NSString *_keyPathForDataBinding; id _observableControllerForValueBinding; NSString *_keyPathForValueBinding; } - (void)ogreDidEndEditing; @end /* * Name: OgreView.h * Project: OgreKit * * Creation Date: Jun 13 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import #import #import #import @protocol OgreView - (NSObject *)ogreAdapter; @end/* * Name: OGString.h * Project: OgreKit * * Creation Date: Sep 22 2004 * Author: Isao Sonobe * Copyright: Copyright (c) 2004 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import // exception name extern NSString * const OgreStringException; @protocol OGStringProtocol - (NSString*)string; - (NSAttributedString*)attributedString; - (unsigned)length; - (NSObject*)substringWithRange:(NSRange)aRange; - (Class)mutableClass; @end #ifndef ONIGURUMA_H #define ONIGURUMA_H /********************************************************************** oniguruma.h - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2006 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifdef __cplusplus extern "C" { #endif #define ONIGURUMA #define ONIGURUMA_VERSION_MAJOR 4 #define ONIGURUMA_VERSION_MINOR 0 #define ONIGURUMA_VERSION_TEENY 1 #ifdef __cplusplus # ifndef HAVE_PROTOTYPES # define HAVE_PROTOTYPES 1 # endif # ifndef HAVE_STDARG_PROTOTYPES # define HAVE_STDARG_PROTOTYPES 1 # endif #endif #ifndef P_ #if defined(__STDC__) || defined(_WIN32) # define P_(args) args #else # define P_(args) () #endif #endif #ifndef PV_ #ifdef HAVE_STDARG_PROTOTYPES # define PV_(args) args #else # define PV_(args) () #endif #endif #ifndef ONIG_EXTERN #if defined(_WIN32) && !defined(__GNUC__) #if defined(EXPORT) || defined(RUBY_EXPORT) #define ONIG_EXTERN extern __declspec(dllexport) #else #define ONIG_EXTERN extern __declspec(dllimport) #endif #endif #endif #ifndef ONIG_EXTERN #define ONIG_EXTERN extern #endif /* PART: character encoding */ #ifndef ONIG_ESCAPE_UCHAR_COLLISION #define UChar OnigUChar #endif typedef unsigned char OnigUChar; typedef unsigned long OnigCodePoint; typedef unsigned int OnigDistance; #define ONIG_INFINITE_DISTANCE ~((OnigDistance )0) /* ambiguous match flag */ typedef unsigned int OnigAmbigType; ONIG_EXTERN OnigAmbigType OnigDefaultAmbigFlag; #define ONIGENC_AMBIGUOUS_MATCH_NONE 0 #define ONIGENC_AMBIGUOUS_MATCH_ASCII_CASE (1<<0) #define ONIGENC_AMBIGUOUS_MATCH_NONASCII_CASE (1<<1) /* #define ONIGENC_AMBIGUOUS_MATCH_ACCENT (1<<2) */ /* #define ONIGENC_AMBIGUOUS_MATCH_HIRAGANA_KATAKANA (1<<3) */ /* #define ONIGENC_AMBIGUOUS_MATCH_KATAKANA_WIDTH (1<<4) */ #define ONIGENC_AMBIGUOUS_MATCH_LIMIT (1<<1) #define ONIGENC_AMBIGUOUS_MATCH_COMPOUND (1<<30) #define ONIGENC_AMBIGUOUS_MATCH_FULL \ ( ONIGENC_AMBIGUOUS_MATCH_ASCII_CASE | \ ONIGENC_AMBIGUOUS_MATCH_NONASCII_CASE | \ ONIGENC_AMBIGUOUS_MATCH_COMPOUND ) #define ONIGENC_AMBIGUOUS_MATCH_DEFAULT OnigDefaultAmbigFlag #define ONIGENC_MAX_COMP_AMBIG_CODE_LEN 3 #define ONIGENC_MAX_COMP_AMBIG_CODE_ITEM_NUM 4 /* code range */ #define ONIGENC_CODE_RANGE_NUM(range) ((int )range[0]) #define ONIGENC_CODE_RANGE_FROM(range,i) range[((i)*2) + 1] #define ONIGENC_CODE_RANGE_TO(range,i) range[((i)*2) + 2] typedef struct { int len; OnigCodePoint code[ONIGENC_MAX_COMP_AMBIG_CODE_LEN]; } OnigCompAmbigCodeItem; typedef struct { int n; OnigCodePoint code; OnigCompAmbigCodeItem items[ONIGENC_MAX_COMP_AMBIG_CODE_ITEM_NUM]; } OnigCompAmbigCodes; typedef struct { OnigCodePoint from; OnigCodePoint to; } OnigPairAmbigCodes; typedef struct { OnigCodePoint esc; OnigCodePoint anychar; OnigCodePoint anytime; OnigCodePoint zero_or_one_time; OnigCodePoint one_or_more_time; OnigCodePoint anychar_anytime; } OnigMetaCharTableType; #if defined(RUBY_PLATFORM) && defined(M17N_H) #define ONIG_RUBY_M17N typedef m17n_encoding* OnigEncoding; #else typedef struct { int (*mbc_enc_len)(const OnigUChar* p); const char* name; int max_enc_len; int min_enc_len; OnigAmbigType support_ambig_flag; OnigMetaCharTableType meta_char_table; int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end); OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end); int (*code_to_mbclen)(OnigCodePoint code); int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf); int (*mbc_to_normalize)(OnigAmbigType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to); int (*is_mbc_ambiguous)(OnigAmbigType flag, const OnigUChar** pp, const OnigUChar* end); int (*get_all_pair_ambig_codes)(OnigAmbigType flag, const OnigPairAmbigCodes** acs); int (*get_all_comp_ambig_codes)(OnigAmbigType flag, const OnigCompAmbigCodes** acs); int (*is_code_ctype)(OnigCodePoint code, unsigned int ctype); int (*get_ctype_code_range)(int ctype, const OnigCodePoint* sb_range[], const OnigCodePoint* mb_range[]); OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p); int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end); } OnigEncodingType; typedef OnigEncodingType* OnigEncoding; ONIG_EXTERN OnigEncodingType OnigEncodingASCII; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_1; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_2; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_3; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_4; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_5; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_6; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_7; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_8; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_9; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_10; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_11; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_13; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_14; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_15; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_16; ONIG_EXTERN OnigEncodingType OnigEncodingUTF8; ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_BE; ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_LE; ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_BE; ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_LE; ONIG_EXTERN OnigEncodingType OnigEncodingEUC_JP; ONIG_EXTERN OnigEncodingType OnigEncodingEUC_TW; ONIG_EXTERN OnigEncodingType OnigEncodingEUC_KR; ONIG_EXTERN OnigEncodingType OnigEncodingEUC_CN; ONIG_EXTERN OnigEncodingType OnigEncodingSJIS; ONIG_EXTERN OnigEncodingType OnigEncodingKOI8; ONIG_EXTERN OnigEncodingType OnigEncodingKOI8_R; ONIG_EXTERN OnigEncodingType OnigEncodingBIG5; ONIG_EXTERN OnigEncodingType OnigEncodingGB18030; #define ONIG_ENCODING_ASCII (&OnigEncodingASCII) #define ONIG_ENCODING_ISO_8859_1 (&OnigEncodingISO_8859_1) #define ONIG_ENCODING_ISO_8859_2 (&OnigEncodingISO_8859_2) #define ONIG_ENCODING_ISO_8859_3 (&OnigEncodingISO_8859_3) #define ONIG_ENCODING_ISO_8859_4 (&OnigEncodingISO_8859_4) #define ONIG_ENCODING_ISO_8859_5 (&OnigEncodingISO_8859_5) #define ONIG_ENCODING_ISO_8859_6 (&OnigEncodingISO_8859_6) #define ONIG_ENCODING_ISO_8859_7 (&OnigEncodingISO_8859_7) #define ONIG_ENCODING_ISO_8859_8 (&OnigEncodingISO_8859_8) #define ONIG_ENCODING_ISO_8859_9 (&OnigEncodingISO_8859_9) #define ONIG_ENCODING_ISO_8859_10 (&OnigEncodingISO_8859_10) #define ONIG_ENCODING_ISO_8859_11 (&OnigEncodingISO_8859_11) #define ONIG_ENCODING_ISO_8859_13 (&OnigEncodingISO_8859_13) #define ONIG_ENCODING_ISO_8859_14 (&OnigEncodingISO_8859_14) #define ONIG_ENCODING_ISO_8859_15 (&OnigEncodingISO_8859_15) #define ONIG_ENCODING_ISO_8859_16 (&OnigEncodingISO_8859_16) #define ONIG_ENCODING_UTF8 (&OnigEncodingUTF8) #define ONIG_ENCODING_UTF16_BE (&OnigEncodingUTF16_BE) #define ONIG_ENCODING_UTF16_LE (&OnigEncodingUTF16_LE) #define ONIG_ENCODING_UTF32_BE (&OnigEncodingUTF32_BE) #define ONIG_ENCODING_UTF32_LE (&OnigEncodingUTF32_LE) #define ONIG_ENCODING_EUC_JP (&OnigEncodingEUC_JP) #define ONIG_ENCODING_EUC_TW (&OnigEncodingEUC_TW) #define ONIG_ENCODING_EUC_KR (&OnigEncodingEUC_KR) #define ONIG_ENCODING_EUC_CN (&OnigEncodingEUC_CN) #define ONIG_ENCODING_SJIS (&OnigEncodingSJIS) #define ONIG_ENCODING_KOI8 (&OnigEncodingKOI8) #define ONIG_ENCODING_KOI8_R (&OnigEncodingKOI8_R) #define ONIG_ENCODING_BIG5 (&OnigEncodingBIG5) #define ONIG_ENCODING_GB18030 (&OnigEncodingGB18030) #endif /* else RUBY && M17N */ #define ONIG_ENCODING_UNDEF ((OnigEncoding )0) /* work size */ #define ONIGENC_CODE_TO_MBC_MAXLEN 7 #define ONIGENC_MBC_NORMALIZE_MAXLEN ONIGENC_CODE_TO_MBC_MAXLEN /* character types */ #define ONIGENC_CTYPE_NEWLINE (1<< 0) #define ONIGENC_CTYPE_ALPHA (1<< 1) #define ONIGENC_CTYPE_BLANK (1<< 2) #define ONIGENC_CTYPE_CNTRL (1<< 3) #define ONIGENC_CTYPE_DIGIT (1<< 4) #define ONIGENC_CTYPE_GRAPH (1<< 5) #define ONIGENC_CTYPE_LOWER (1<< 6) #define ONIGENC_CTYPE_PRINT (1<< 7) #define ONIGENC_CTYPE_PUNCT (1<< 8) #define ONIGENC_CTYPE_SPACE (1<< 9) #define ONIGENC_CTYPE_UPPER (1<<10) #define ONIGENC_CTYPE_XDIGIT (1<<11) #define ONIGENC_CTYPE_WORD (1<<12) #define ONIGENC_CTYPE_ASCII (1<<13) #define ONIGENC_CTYPE_ALNUM (ONIGENC_CTYPE_ALPHA | ONIGENC_CTYPE_DIGIT) #define enc_len(enc,p) ONIGENC_MBC_ENC_LEN(enc, p) #define ONIGENC_IS_UNDEF(enc) ((enc) == ONIG_ENCODING_UNDEF) #define ONIGENC_IS_SINGLEBYTE(enc) (ONIGENC_MBC_MAXLEN(enc) == 1) #define ONIGENC_IS_MBC_HEAD(enc,p) (ONIGENC_MBC_ENC_LEN(enc,p) != 1) #define ONIGENC_IS_MBC_ASCII(p) (*(p) < 128) #define ONIGENC_IS_CODE_ASCII(code) ((code) < 128) #define ONIGENC_IS_CODE_SB_WORD(enc,code) \ (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code)) #define ONIGENC_IS_MBC_WORD(enc,s,end) \ ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end)) #ifdef ONIG_RUBY_M17N #include /* for isblank(), isgraph() */ #define ONIGENC_MBC_TO_NORMALIZE(enc,flag,pp,end,buf) \ onigenc_mbc_to_normalize(enc,flag,pp,end,buf) #define ONIGENC_IS_MBC_AMBIGUOUS(enc,flag,pp,end) \ onigenc_is_mbc_ambiguous(enc,flag,pp,end) #define ONIGENC_SUPPORT_AMBIG_FLAG(enc) ONIGENC_AMBIGUOUS_MATCH_ASCII_CASE #define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) \ onigenc_is_allowed_reverse_match(enc, s, end) #define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s) \ onigenc_get_left_adjust_char_head(enc, start, s) #define ONIGENC_GET_ALL_PAIR_AMBIG_CODES(enc, ambig_flag, acs) 0 #define ONIGENC_GET_ALL_COMP_AMBIG_CODES(enc, ambig_flag, acs) 0 #define ONIGENC_GET_CTYPE_CODE_RANGE(enc,ctype,sbr,mbr) \ ONIG_NO_SUPPORT_CONFIG #define ONIGENC_MBC_ENC_LEN(enc,p) m17n_mbclen(enc,(int )(*p)) #define ONIGENC_MBC_MAXLEN(enc) m17n_mbmaxlen(enc) #define ONIGENC_MBC_MAXLEN_DIST(enc) \ (ONIGENC_MBC_MAXLEN(enc) > 0 ? ONIGENC_MBC_MAXLEN(enc) \ : ONIG_INFINITE_DISTANCE) #define ONIGENC_MBC_MINLEN(enc) 1 #define ONIGENC_MBC_TO_CODE(enc,p,e) m17n_codepoint((enc),(p),(e)) #define ONIGENC_CODE_TO_MBCLEN(enc,code) m17n_codelen((enc),(code)) #define ONIGENC_CODE_TO_MBC(enc,code,buf) onigenc_code_to_mbc(enc, code, buf) #if 0 /* !! not supported !! */ #define ONIGENC_IS_MBC_NEWLINE(enc,p,end) #define ONIGENC_STEP_BACK(enc,start,s,n) #endif #define ONIGENC_IS_CODE_CTYPE(enc,code,ctype) \ onigenc_is_code_ctype(enc,code,ctype) #ifdef isblank # define ONIGENC_IS_CODE_BLANK(enc,code) isblank((int )code) #else # define ONIGENC_IS_CODE_BLANK(enc,code) ((code) == ' ' || (code) == '\t') #endif #ifdef isgraph # define ONIGENC_IS_CODE_GRAPH(enc,code) isgraph((int )code) #else # define ONIGENC_IS_CODE_GRAPH(enc,code) \ (isprint((int )code) && !isspace((int )code)) #endif #define ONIGENC_IS_CODE_PRINT(enc,code) m17n_isprint(enc,code) #define ONIGENC_IS_CODE_ALNUM(enc,code) m17n_isalnum(enc,code) #define ONIGENC_IS_CODE_ALPHA(enc,code) m17n_isalpha(enc,code) #define ONIGENC_IS_CODE_LOWER(enc,code) m17n_islower(enc,code) #define ONIGENC_IS_CODE_UPPER(enc,code) m17n_isupper(enc,code) #define ONIGENC_IS_CODE_CNTRL(enc,code) m17n_iscntrl(enc,code) #define ONIGENC_IS_CODE_PUNCT(enc,code) m17n_ispunct(enc,code) #define ONIGENC_IS_CODE_SPACE(enc,code) m17n_isspace(enc,code) #define ONIGENC_IS_CODE_DIGIT(enc,code) m17n_isdigit(enc,code) #define ONIGENC_IS_CODE_XDIGIT(enc,code) m17n_isxdigit(enc,code) #define ONIGENC_IS_CODE_WORD(enc,code) m17n_iswchar(enc,code) ONIG_EXTERN int onigenc_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, int ctype)); ONIG_EXTERN int onigenc_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, OnigUChar *buf)); ONIG_EXTERN int onigenc_mbc_to_normalize P_((OnigEncoding enc, OnigAmbigType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* buf)); ONIG_EXTERN int onigenc_is_mbc_ambiguous P_((OnigEncoding enc, OnigAmbigType flag, const OnigUChar** pp, const OnigUChar* end)); ONIG_EXTERN int onigenc_is_allowed_reverse_match P_((OnigEncoding enc, const OnigUChar* s, const OnigUChar* end)); #else /* ONIG_RUBY_M17N */ #define ONIGENC_NAME(enc) ((enc)->name) #define ONIGENC_MBC_TO_NORMALIZE(enc,flag,pp,end,buf) \ (enc)->mbc_to_normalize(flag,(const OnigUChar** )pp,end,buf) #define ONIGENC_IS_MBC_AMBIGUOUS(enc,flag,pp,end) \ (enc)->is_mbc_ambiguous(flag,(const OnigUChar** )pp,end) #define ONIGENC_SUPPORT_AMBIG_FLAG(enc) ((enc)->support_ambig_flag) #define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) \ (enc)->is_allowed_reverse_match(s,end) #define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s) \ (enc)->left_adjust_char_head(start, s) #define ONIGENC_GET_ALL_PAIR_AMBIG_CODES(enc,ambig_flag,acs) \ (enc)->get_all_pair_ambig_codes(ambig_flag,acs) #define ONIGENC_GET_ALL_COMP_AMBIG_CODES(enc,ambig_flag,acs) \ (enc)->get_all_comp_ambig_codes(ambig_flag,acs) #define ONIGENC_STEP_BACK(enc,start,s,n) \ onigenc_step_back((enc),(start),(s),(n)) #define ONIGENC_MBC_ENC_LEN(enc,p) (enc)->mbc_enc_len(p) #define ONIGENC_MBC_MAXLEN(enc) ((enc)->max_enc_len) #define ONIGENC_MBC_MAXLEN_DIST(enc) ONIGENC_MBC_MAXLEN(enc) #define ONIGENC_MBC_MINLEN(enc) ((enc)->min_enc_len) #define ONIGENC_IS_MBC_NEWLINE(enc,p,end) (enc)->is_mbc_newline((p),(end)) #define ONIGENC_MBC_TO_CODE(enc,p,end) (enc)->mbc_to_code((p),(end)) #define ONIGENC_CODE_TO_MBCLEN(enc,code) (enc)->code_to_mbclen(code) #define ONIGENC_CODE_TO_MBC(enc,code,buf) (enc)->code_to_mbc(code,buf) #define ONIGENC_IS_CODE_CTYPE(enc,code,ctype) (enc)->is_code_ctype(code,ctype) #define ONIGENC_IS_CODE_NEWLINE(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_NEWLINE) #define ONIGENC_IS_CODE_GRAPH(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_GRAPH) #define ONIGENC_IS_CODE_PRINT(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PRINT) #define ONIGENC_IS_CODE_ALNUM(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALNUM) #define ONIGENC_IS_CODE_ALPHA(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALPHA) #define ONIGENC_IS_CODE_LOWER(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_LOWER) #define ONIGENC_IS_CODE_UPPER(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_UPPER) #define ONIGENC_IS_CODE_CNTRL(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_CNTRL) #define ONIGENC_IS_CODE_PUNCT(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PUNCT) #define ONIGENC_IS_CODE_SPACE(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_SPACE) #define ONIGENC_IS_CODE_BLANK(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_BLANK) #define ONIGENC_IS_CODE_DIGIT(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_DIGIT) #define ONIGENC_IS_CODE_XDIGIT(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_XDIGIT) #define ONIGENC_IS_CODE_WORD(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_WORD) #define ONIGENC_GET_CTYPE_CODE_RANGE(enc,ctype,sbr,mbr) \ (enc)->get_ctype_code_range(ctype,sbr,mbr) ONIG_EXTERN OnigUChar* onigenc_step_back P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, int n)); #endif /* is not ONIG_RUBY_M17N */ /* encoding API */ ONIG_EXTERN int onigenc_init P_(()); ONIG_EXTERN int onigenc_set_default_encoding P_((OnigEncoding enc)); ONIG_EXTERN OnigEncoding onigenc_get_default_encoding P_(()); ONIG_EXTERN void onigenc_set_default_caseconv_table P_((const OnigUChar* table)); ONIG_EXTERN OnigUChar* onigenc_get_right_adjust_char_head_with_prev P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar** prev)); ONIG_EXTERN OnigUChar* onigenc_get_prev_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); ONIG_EXTERN OnigUChar* onigenc_get_left_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); ONIG_EXTERN OnigUChar* onigenc_get_right_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); ONIG_EXTERN int onigenc_strlen P_((OnigEncoding enc, const OnigUChar* p, const OnigUChar* end)); ONIG_EXTERN int onigenc_strlen_null P_((OnigEncoding enc, const OnigUChar* p)); ONIG_EXTERN int onigenc_str_bytelen_null P_((OnigEncoding enc, const OnigUChar* p)); /* PART: regular expression */ /* config parameters */ #define ONIG_NREGION 10 #define ONIG_MAX_BACKREF_NUM 1000 #define ONIG_MAX_REPEAT_NUM 100000 #define ONIG_MAX_MULTI_BYTE_RANGES_NUM 1000 /* constants */ #define ONIG_MAX_ERROR_MESSAGE_LEN 90 typedef unsigned int OnigOptionType; #define ONIG_OPTION_DEFAULT ONIG_OPTION_NONE /* options */ #define ONIG_OPTION_NONE 0 #define ONIG_OPTION_IGNORECASE 1L #define ONIG_OPTION_EXTEND (ONIG_OPTION_IGNORECASE << 1) #define ONIG_OPTION_MULTILINE (ONIG_OPTION_EXTEND << 1) #define ONIG_OPTION_SINGLELINE (ONIG_OPTION_MULTILINE << 1) #define ONIG_OPTION_FIND_LONGEST (ONIG_OPTION_SINGLELINE << 1) #define ONIG_OPTION_FIND_NOT_EMPTY (ONIG_OPTION_FIND_LONGEST << 1) #define ONIG_OPTION_NEGATE_SINGLELINE (ONIG_OPTION_FIND_NOT_EMPTY << 1) #define ONIG_OPTION_DONT_CAPTURE_GROUP (ONIG_OPTION_NEGATE_SINGLELINE << 1) #define ONIG_OPTION_CAPTURE_GROUP (ONIG_OPTION_DONT_CAPTURE_GROUP << 1) /* options (search time) */ #define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1) #define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1) #define ONIG_OPTION_POSIX_REGION (ONIG_OPTION_NOTEOL << 1) #define ONIG_OPTION_MAXBIT ONIG_OPTION_POSIX_REGION /* limit */ #define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt)) #define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt)) #define ONIG_IS_OPTION_ON(options,option) ((options) & (option)) /* syntax */ typedef struct { unsigned int op; unsigned int op2; unsigned int behavior; OnigOptionType options; /* default option */ } OnigSyntaxType; ONIG_EXTERN OnigSyntaxType OnigSyntaxASIS; ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixBasic; ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixExtended; ONIG_EXTERN OnigSyntaxType OnigSyntaxEmacs; ONIG_EXTERN OnigSyntaxType OnigSyntaxGrep; ONIG_EXTERN OnigSyntaxType OnigSyntaxGnuRegex; ONIG_EXTERN OnigSyntaxType OnigSyntaxJava; ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl; ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl_NG; ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby; /* predefined syntaxes (see regsyntax.c) */ #define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS) #define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic) #define ONIG_SYNTAX_POSIX_EXTENDED (&OnigSyntaxPosixExtended) #define ONIG_SYNTAX_EMACS (&OnigSyntaxEmacs) #define ONIG_SYNTAX_GREP (&OnigSyntaxGrep) #define ONIG_SYNTAX_GNU_REGEX (&OnigSyntaxGnuRegex) #define ONIG_SYNTAX_JAVA (&OnigSyntaxJava) #define ONIG_SYNTAX_PERL (&OnigSyntaxPerl) #define ONIG_SYNTAX_PERL_NG (&OnigSyntaxPerl_NG) #define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby) /* default syntax */ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; #define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax /* syntax (operators) */ #define ONIG_SYN_OP_VARIABLE_META_CHARACTERS (1<<0) #define ONIG_SYN_OP_DOT_ANYCHAR (1<<1) /* . */ #define ONIG_SYN_OP_ASTERISK_ZERO_INF (1<<2) /* * */ #define ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF (1<<3) #define ONIG_SYN_OP_PLUS_ONE_INF (1<<4) /* + */ #define ONIG_SYN_OP_ESC_PLUS_ONE_INF (1<<5) #define ONIG_SYN_OP_QMARK_ZERO_ONE (1<<6) /* ? */ #define ONIG_SYN_OP_ESC_QMARK_ZERO_ONE (1<<7) #define ONIG_SYN_OP_BRACE_INTERVAL (1<<8) /* {lower,upper} */ #define ONIG_SYN_OP_ESC_BRACE_INTERVAL (1<<9) /* \{lower,upper\} */ #define ONIG_SYN_OP_VBAR_ALT (1<<10) /* | */ #define ONIG_SYN_OP_ESC_VBAR_ALT (1<<11) /* \| */ #define ONIG_SYN_OP_LPAREN_SUBEXP (1<<12) /* (...) */ #define ONIG_SYN_OP_ESC_LPAREN_SUBEXP (1<<13) /* \(...\) */ #define ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR (1<<14) /* \A, \Z, \z */ #define ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR (1<<15) /* \G */ #define ONIG_SYN_OP_DECIMAL_BACKREF (1<<16) /* \num */ #define ONIG_SYN_OP_BRACKET_CC (1<<17) /* [...] */ #define ONIG_SYN_OP_ESC_W_WORD (1<<18) /* \w, \W */ #define ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END (1<<19) /* \<. \> */ #define ONIG_SYN_OP_ESC_B_WORD_BOUND (1<<20) /* \b, \B */ #define ONIG_SYN_OP_ESC_S_WHITE_SPACE (1<<21) /* \s, \S */ #define ONIG_SYN_OP_ESC_D_DIGIT (1<<22) /* \d, \D */ #define ONIG_SYN_OP_LINE_ANCHOR (1<<23) /* ^, $ */ #define ONIG_SYN_OP_POSIX_BRACKET (1<<24) /* [:xxxx:] */ #define ONIG_SYN_OP_QMARK_NON_GREEDY (1<<25) /* ??,*?,+?,{n,m}? */ #define ONIG_SYN_OP_ESC_CONTROL_CHARS (1<<26) /* \n,\r,\t,\a ... */ #define ONIG_SYN_OP_ESC_C_CONTROL (1<<27) /* \cx */ #define ONIG_SYN_OP_ESC_OCTAL3 (1<<28) /* \OOO */ #define ONIG_SYN_OP_ESC_X_HEX2 (1<<29) /* \xHH */ #define ONIG_SYN_OP_ESC_X_BRACE_HEX8 (1<<30) /* \x{7HHHHHHH} */ #define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (1<<0) /* \Q...\E */ #define ONIG_SYN_OP2_QMARK_GROUP_EFFECT (1<<1) /* (?...) */ #define ONIG_SYN_OP2_OPTION_PERL (1<<2) /* (?imsx),(?-imsx) */ #define ONIG_SYN_OP2_OPTION_RUBY (1<<3) /* (?imx), (?-imx) */ #define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT (1<<4) /* ?+,*+,++ */ #define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL (1<<5) /* {n,m}+ */ #define ONIG_SYN_OP2_CCLASS_SET_OP (1<<6) /* [...&&..[..]..] */ #define ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP (1<<7) /* (?...) */ #define ONIG_SYN_OP2_ESC_K_NAMED_BACKREF (1<<8) /* \k */ #define ONIG_SYN_OP2_ESC_G_SUBEXP_CALL (1<<9) /* \g, \g */ #define ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY (1<<10) /* (?@..),(?@..) */ #define ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL (1<<11) /* \C-x */ #define ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META (1<<12) /* \M-x */ #define ONIG_SYN_OP2_ESC_V_VTAB (1<<13) /* \v as VTAB */ #define ONIG_SYN_OP2_ESC_U_HEX4 (1<<14) /* \uHHHH */ #define ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR (1<<15) /* \`, \' */ #define ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY (1<<16) /* \p{...}, \P{...} */ #define ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT (1<<17) /* \p{^..}, \P{^..} */ #define ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS (1<<18) /* \p{IsXDigit} */ #define ONIG_SYN_OP2_ESC_H_XDIGIT (1<<19) /* \h, \H */ #define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1<<20) /* \ */ /* syntax (behavior) */ #define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1<<31) /* not implemented */ #define ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS (1<<0) /* ?, *, +, {n,m} */ #define ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS (1<<1) /* error or ignore */ #define ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP (1<<2) /* ...)... */ #define ONIG_SYN_ALLOW_INVALID_INTERVAL (1<<3) /* {??? */ #define ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV (1<<4) /* {,n} => {0,n} */ #define ONIG_SYN_STRICT_CHECK_BACKREF (1<<5) /* /(\1)/,/\1()/ ..*/ #define ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND (1<<6) /* (?<=a|bc) */ #define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (1<<7) /* see doc/RE */ #define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1<<8) /* (?)(?) */ #define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (1<<9) /* a{n}?=(?:a{n})? */ /* syntax (behavior) in char class [...] */ #define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (1<<20) /* [^...] */ #define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (1<<21) /* [..\w..] etc.. */ #define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (1<<22) #define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (1<<23) /* [0-9-a]=[0-9\-a] */ /* syntax (behavior) warning */ #define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (1<<24) /* [,-,] */ #define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (1<<25) /* (?:a*)+ */ /* meta character specifiers (onig_set_meta_char()) */ #define ONIG_META_CHAR_ESCAPE 0 #define ONIG_META_CHAR_ANYCHAR 1 #define ONIG_META_CHAR_ANYTIME 2 #define ONIG_META_CHAR_ZERO_OR_ONE_TIME 3 #define ONIG_META_CHAR_ONE_OR_MORE_TIME 4 #define ONIG_META_CHAR_ANYCHAR_ANYTIME 5 #define ONIG_INEFFECTIVE_META_CHAR 0 /* error codes */ #define ONIG_IS_PATTERN_ERROR(ecode) ((ecode) <= -100 && (ecode) > -1000) /* normal return */ #define ONIG_NORMAL 0 #define ONIG_MISMATCH -1 #define ONIG_NO_SUPPORT_CONFIG -2 /* internal error */ #define ONIGERR_MEMORY -5 #define ONIGERR_TYPE_BUG -6 #define ONIGERR_PARSER_BUG -11 #define ONIGERR_STACK_BUG -12 #define ONIGERR_UNDEFINED_BYTECODE -13 #define ONIGERR_UNEXPECTED_BYTECODE -14 #define ONIGERR_MATCH_STACK_LIMIT_OVER -15 #define ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED -21 #define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22 /* general error */ #define ONIGERR_INVALID_ARGUMENT -30 /* syntax error */ #define ONIGERR_END_PATTERN_AT_LEFT_BRACE -100 #define ONIGERR_END_PATTERN_AT_LEFT_BRACKET -101 #define ONIGERR_EMPTY_CHAR_CLASS -102 #define ONIGERR_PREMATURE_END_OF_CHAR_CLASS -103 #define ONIGERR_END_PATTERN_AT_ESCAPE -104 #define ONIGERR_END_PATTERN_AT_META -105 #define ONIGERR_END_PATTERN_AT_CONTROL -106 #define ONIGERR_META_CODE_SYNTAX -108 #define ONIGERR_CONTROL_CODE_SYNTAX -109 #define ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE -110 #define ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE -111 #define ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS -112 #define ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED -113 #define ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID -114 #define ONIGERR_NESTED_REPEAT_OPERATOR -115 #define ONIGERR_UNMATCHED_CLOSE_PARENTHESIS -116 #define ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS -117 #define ONIGERR_END_PATTERN_IN_GROUP -118 #define ONIGERR_UNDEFINED_GROUP_OPTION -119 #define ONIGERR_INVALID_POSIX_BRACKET_TYPE -121 #define ONIGERR_INVALID_LOOK_BEHIND_PATTERN -122 #define ONIGERR_INVALID_REPEAT_RANGE_PATTERN -123 /* values error (syntax error) */ #define ONIGERR_TOO_BIG_NUMBER -200 #define ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE -201 #define ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE -202 #define ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS -203 #define ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE -204 #define ONIGERR_TOO_MANY_MULTI_BYTE_RANGES -205 #define ONIGERR_TOO_SHORT_MULTI_BYTE_STRING -206 #define ONIGERR_TOO_BIG_BACKREF_NUMBER -207 #define ONIGERR_INVALID_BACKREF -208 #define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED -209 #define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE -212 #define ONIGERR_EMPTY_GROUP_NAME -214 #define ONIGERR_INVALID_GROUP_NAME -215 #define ONIGERR_INVALID_CHAR_IN_GROUP_NAME -216 #define ONIGERR_UNDEFINED_NAME_REFERENCE -217 #define ONIGERR_UNDEFINED_GROUP_REFERENCE -218 #define ONIGERR_MULTIPLEX_DEFINED_NAME -219 #define ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL -220 #define ONIGERR_NEVER_ENDING_RECURSION -221 #define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222 #define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223 #define ONIGERR_INVALID_WIDE_CHAR_VALUE -400 #define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401 #define ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION -402 /* errors related to thread */ #define ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT -1001 /* must be smaller than BIT_STATUS_BITS_NUM (unsigned int * 8) */ #define ONIG_MAX_CAPTURE_HISTORY_GROUP 31 #define ONIG_IS_CAPTURE_HISTORY_GROUP(r, i) \ ((i) <= ONIG_MAX_CAPTURE_HISTORY_GROUP && (r)->list && (r)->list[i]) typedef struct OnigCaptureTreeNodeStruct { int group; /* group number */ int beg; int end; int allocated; int num_childs; struct OnigCaptureTreeNodeStruct** childs; } OnigCaptureTreeNode; /* match result region type */ struct re_registers { int allocated; int num_regs; int* beg; int* end; /* extended */ OnigCaptureTreeNode* history_root; /* capture history tree root */ }; /* capture tree traverse */ #define ONIG_TRAVERSE_CALLBACK_AT_FIRST 1 #define ONIG_TRAVERSE_CALLBACK_AT_LAST 2 #define ONIG_TRAVERSE_CALLBACK_AT_BOTH \ ( ONIG_TRAVERSE_CALLBACK_AT_FIRST | ONIG_TRAVERSE_CALLBACK_AT_LAST ) #define ONIG_REGION_NOTPOS -1 typedef struct re_registers OnigRegion; typedef struct { OnigUChar* par; OnigUChar* par_end; } OnigErrorInfo; typedef struct { int lower; int upper; } OnigRepeatRange; typedef void (*OnigWarnFunc) P_((const char* s)); extern void onig_null_warn P_((const char* s)); #define ONIG_NULL_WARN onig_null_warn #define ONIG_CHAR_TABLE_SIZE 256 /* regex_t state */ #define ONIG_STATE_NORMAL 0 #define ONIG_STATE_SEARCHING 1 #define ONIG_STATE_COMPILING -1 #define ONIG_STATE_MODIFY -2 #define ONIG_STATE(reg) \ ((reg)->state > 0 ? ONIG_STATE_SEARCHING : (reg)->state) typedef struct re_pattern_buffer { /* common members of BBuf(bytes-buffer) */ unsigned char* p; /* compiled pattern */ unsigned int used; /* used space for p */ unsigned int alloc; /* allocated space for p */ int state; /* normal, searching, compiling */ int num_mem; /* used memory(...) num counted from 1 */ int num_repeat; /* OP_REPEAT/OP_REPEAT_NG id-counter */ int num_null_check; /* OP_NULL_CHECK_START/END id counter */ int num_call; /* number of subexp call */ unsigned int capture_history; /* (?@...) flag (1-31) */ unsigned int bt_mem_start; /* need backtrack flag */ unsigned int bt_mem_end; /* need backtrack flag */ int stack_pop_level; int repeat_range_alloc; OnigRepeatRange* repeat_range; OnigEncoding enc; OnigOptionType options; OnigSyntaxType* syntax; OnigAmbigType ambig_flag; void* name_table; /* optimization info (string search, char-map and anchors) */ int optimize; /* optimize flag */ int threshold_len; /* search str-length for apply optimize */ int anchor; /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */ OnigDistance anchor_dmin; /* (SEMI_)END_BUF anchor distance */ OnigDistance anchor_dmax; /* (SEMI_)END_BUF anchor distance */ int sub_anchor; /* start-anchor for exact or map */ unsigned char *exact; unsigned char *exact_end; unsigned char map[ONIG_CHAR_TABLE_SIZE]; /* used as BM skip or char-map */ int *int_map; /* BM skip for exact_len > 255 */ int *int_map_backward; /* BM skip for backward search */ OnigDistance dmin; /* min-distance of exact or map */ OnigDistance dmax; /* max-distance of exact or map */ /* regex_t link chain */ struct re_pattern_buffer* chain; /* escape compile-conflict */ } regex_t; typedef struct { int num_of_elements; OnigEncoding pattern_enc; OnigEncoding target_enc; OnigSyntaxType* syntax; OnigOptionType option; OnigAmbigType ambig_flag; } OnigCompileInfo; /* Oniguruma Native API */ ONIG_EXTERN int onig_init P_((void)); ONIG_EXTERN int onig_error_code_to_str PV_((OnigUChar* s, int err_code, ...)); ONIG_EXTERN void onig_set_warn_func P_((OnigWarnFunc f)); ONIG_EXTERN void onig_set_verb_warn_func P_((OnigWarnFunc f)); ONIG_EXTERN int onig_new P_((regex_t**, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); ONIG_EXTERN int onig_new_deluxe P_((regex_t** reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo)); ONIG_EXTERN void onig_free P_((regex_t*)); ONIG_EXTERN int onig_recompile P_((regex_t*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); ONIG_EXTERN int onig_recompile_deluxe P_((regex_t* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo)); ONIG_EXTERN int onig_search P_((regex_t*, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option)); ONIG_EXTERN int onig_match P_((regex_t*, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option)); ONIG_EXTERN OnigRegion* onig_region_new P_((void)); ONIG_EXTERN void onig_region_init P_((OnigRegion* region)); ONIG_EXTERN void onig_region_free P_((OnigRegion* region, int free_self)); ONIG_EXTERN void onig_region_copy P_((OnigRegion* to, OnigRegion* from)); ONIG_EXTERN void onig_region_clear P_((OnigRegion* region)); ONIG_EXTERN int onig_region_resize P_((OnigRegion* region, int n)); ONIG_EXTERN int onig_region_set P_((OnigRegion* region, int at, int beg, int end)); ONIG_EXTERN int onig_name_to_group_numbers P_((regex_t* reg, const OnigUChar* name, const OnigUChar* name_end, int** nums)); ONIG_EXTERN int onig_name_to_backref_number P_((regex_t* reg, const OnigUChar* name, const OnigUChar* name_end, OnigRegion *region)); ONIG_EXTERN int onig_foreach_name P_((regex_t* reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,regex_t*,void*), void* arg)); ONIG_EXTERN int onig_number_of_names P_((regex_t* reg)); ONIG_EXTERN int onig_number_of_captures P_((regex_t* reg)); ONIG_EXTERN int onig_number_of_capture_histories P_((regex_t* reg)); ONIG_EXTERN OnigCaptureTreeNode* onig_get_capture_tree P_((OnigRegion* region)); ONIG_EXTERN int onig_capture_tree_traverse P_((OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg)); ONIG_EXTERN OnigEncoding onig_get_encoding P_((regex_t* reg)); ONIG_EXTERN OnigOptionType onig_get_options P_((regex_t* reg)); ONIG_EXTERN OnigAmbigType onig_get_ambig_flag P_((regex_t* reg)); ONIG_EXTERN OnigSyntaxType* onig_get_syntax P_((regex_t* reg)); ONIG_EXTERN int onig_set_default_syntax P_((OnigSyntaxType* syntax)); ONIG_EXTERN void onig_copy_syntax P_((OnigSyntaxType* to, OnigSyntaxType* from)); ONIG_EXTERN unsigned int onig_get_syntax_op P_((OnigSyntaxType* syntax)); ONIG_EXTERN unsigned int onig_get_syntax_op2 P_((OnigSyntaxType* syntax)); ONIG_EXTERN unsigned int onig_get_syntax_behavior P_((OnigSyntaxType* syntax)); ONIG_EXTERN OnigOptionType onig_get_syntax_options P_((OnigSyntaxType* syntax)); ONIG_EXTERN void onig_set_syntax_op P_((OnigSyntaxType* syntax, unsigned int op)); ONIG_EXTERN void onig_set_syntax_op2 P_((OnigSyntaxType* syntax, unsigned int op2)); ONIG_EXTERN void onig_set_syntax_behavior P_((OnigSyntaxType* syntax, unsigned int behavior)); ONIG_EXTERN void onig_set_syntax_options P_((OnigSyntaxType* syntax, OnigOptionType options)); ONIG_EXTERN int onig_set_meta_char P_((OnigEncoding enc, unsigned int what, OnigCodePoint code)); ONIG_EXTERN void onig_copy_encoding P_((OnigEncoding to, OnigEncoding from)); ONIG_EXTERN OnigAmbigType onig_get_default_ambig_flag P_(()); ONIG_EXTERN int onig_set_default_ambig_flag P_((OnigAmbigType ambig_flag)); ONIG_EXTERN unsigned int onig_get_match_stack_limit_size P_((void)); ONIG_EXTERN int onig_set_match_stack_limit_size P_((unsigned int size)); ONIG_EXTERN int onig_end P_((void)); ONIG_EXTERN const char* onig_version P_((void)); ONIG_EXTERN const char* onig_copyright P_((void)); #ifdef __cplusplus } #endif #endif /* ONIGURUMA_H */ Y p  x__TEXT2@@__text__TEXT2@__picsymbol_stub__TEXT2++$__picsymbolstub1__TEXT2+ +  __cstring__TEXT2..__literal4__TEXT2ɤTɤ__literal8__TEXT2P__const__TEXT2HuH__DATA2@ @ __data__DATA2@@__dyld__DATA2EE__nl_symbol_ptr__DATA2EE__la_symbol_ptr__DATA2FtFa__const__DATA2G0G0__bss__DATA2Y__common__DATA2Z__OBJC2``__cat_cls_meth__OBJC2``__cat_inst_meth__OBJC2aa__string_object__OBJC2h4h4__cstring_object__OBJC2h4h4__message_refs__OBJC2h4 h4__sel_fixup__OBJC2tt__cls_refs__OBJC2tTt__class__OBJC2ud 0ud__meta_class__OBJC2 0__cls_meth__OBJC2 __inst_meth__OBJC25__protocol__OBJC2ll__category__OBJC2<<__class_vars__OBJC2__instance_vars__OBJC2__module_info__OBJC2\p\__symbols__OBJC2t8__LINKEDIT2ii \Dg&@executable_path/../Frameworks/OgreKit.framework/Versions/A/OgreKit TCm /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa 4CmX/usr/lib/libSystem.B.dylib5D# P// 9_' /l/i%$~|_|B}|}cx=/}| x=*$N }cxK|B}h|=kk/}iN |!B<8c88K8/A<c/l}N!8!`|N |B}=|9}N |AB||x|#x}Cx!P<<c]dQH<xp|{x<Qc]hH<ex|fxCxQHh8!`8`A|N |?l?}cx!;{\;Q???_??;A;Q;ZA;9A>>>>:\H%{H <<Q80dH<_89 }{?A8 (!F!B;A԰@8 )DH8@8H?z{?;Q(;{Q$H88D?;Q Hq<yw80tHYHQ?_}<?8c0;AH-???H?|exwH?H<}v.Ѐ.H <u.Ȁ.H <t..H }<y..H m<x..H ]<|..H M<{..H =<z..H -.Ђ.Ȃ.9...{.Z.U4yX``Ba)akaJa``U4yX8!|N |!<?}cx|+x!;N||xNH|zxxH<NH|{xxH<NHy<%xgx8|hxCxNHYh<8!`N!|H<|<?}cx|+x!;M|3x||xMH |zxxH<MH퀝|{xxH<MH<%xxgx|hxCxNHh<8!`N|H|A<}cx|+x|3x!|;x}CxM4He<xxgxHxMXHIh<8!`M\A|H,|!?}cx?|+x!;L|zxLH<LH퀝|{xCxH<LHрh8!`x%x|hxgxCx8!|H|?}cx?|+x!;L\|3x|{xLhHm<L`Ha|zxcxHQ<LdHEh8!`xx|hx&xcxGx|H|?xs;@xKHI<exKH98c+A8<_Ti:8B| .|| N H|<xKH <_<<<B)4cWK8+8H<xKH <_<<<B)4cWK8+HH<<;@K8c+HD89!`8AP<cx`8Kd}ID}BEPTH E<KH 9~H<<xKH !<_<<<B)4cWK8+XH /@T;KxH <KH р|}xpAxH <xKH H`/A HTKxH <|}x<LcWH i<|exxLH Q<LH E|}x=x>L H -L||xxW_x;PL}1D}"Ept H <_<8xB),KАAAH i<LH Y<_8xa8~ B)( |Hu|cyAP;x|dxxH!<xKH <<<<xcWK8*8+xH ?x;LH |cyA><>>:KcWH |}xxH L |exxH y<~|ex~ #xH ~L$H U|xxHpL :LH A||xxWH89!P8A@<aTxxP?,fx}iD}bE@DH8!a|N |<}cx!>x|HQX<8!P>|H4|<}cx!>px|H X<8!P>D|H|<}cx|}x|+x!|+x=H89!P8A@<aTxxP> 8}iD}bE@DHx8!p|N |a<}cx|}x|+x!|+x|3x=hHE89!P8A@<aTxxP=fx}iD}bE@DH 8!a|N $(<8=$$(H|a<|{x |}x?>_>::/c;L!H]<|xxx0$HI<;|{xx0(H1<%xgxFx|hxx0,H<Fx~x|yxx/H<|xx~x00HـHрHɀ/H|{xs;PH񱀗H/|zxAH<?x:04;08H}|excxHm<x#x0>?>;O#0;#\~x:$8>_::́ؑAԋ߁t#H<|tx}sx$HHH#XH<%x|xxcx$(H<|ex<$,c/(H<ex|~x$0H<%xx$4H啀88xH偀r/$HuHm/|{xA|HX$88@8x:HE<x$>H<_/AԀ?x;(;H̀<|excx8HߵxHߩ<|excx8HߑxH߅|ex|Hu<|excx8H]xHM|ex|H=x<8!px|excx8|H?x;(; H|excxH퀚xHဝ|excxHрxHŀ|ex|H޵|excxHޥxHޕ|ex|Hޅx8!px|excx|Hd|@&|<}cx|yx|+x|+xA!(H1.A <<x@8@HH<xDH/|{x@,<_<<<Bpc&Ѐ8HA <<x@8HݭH<xDHݙ/||x@,<_<<<Bpc&Ѐ8HeA <<x@8HIH<xDH5/|~x@,<_<<<Bpc&Ѐ8H<xH|zxA <<x@8,HH<xDHܽ/|~x@,<_<<<Bpc&Ѐ8H܉<xHHyh<8!`x|gxFx#xa(hx|}p H@|<}cx||x|+x!H<x?H<|xxx H<|yxxH<|zxxH<|{xxH۱h8!`x%x|hxFxxgx|Hۄ|<}cx?||x!;<HY<|yxxPHE|zxxH5<|{xxTH!<|excxlH |~xxH<|}xxH<|exxpHՁ<|{x/@<<c$$tHڱ|ix??%xFxxhx;$(;x9@|H}<<<|{x=|=?8$848D9T9)d9@HA<ex|fx<|c$$H%h<8!`|Hc Hc Hڬ<cH|+y|8`!A/8`A/8`At/8`Ah/8`A\/8`AP/8`AD/8`A8/8`A,>?c<Ha<x~x|{xx;H9X;|yxvLH%H||xH/;@ A<|xH<|excxH<Q`|T~d@L<xhHѱ<xHѡXvLHѕHэ<||xxHy<#xHi|`y@P.A<xHI|}xH~x<xH-/@/@@<xcxH<xHx8!pcxa|}p N |::!P tnhH H<|vx~cx H풁`8A`ad|zx}"D}1E8A@}1D}"EHdP!;$ ;~cx:@?;{| P;}7D}"EtpHρ|ex~xHqx~xHaA|^P@~cx8BAD8A}"D}7EH)<8H/Ah8@@\A8A~cx}"D}7EH݀<8tH/A!@AD9)8B!@AD<Q:`|T~d@,<~óx H} tnhHq Hi|vx<<!D@~dx~#x8:܀8?H͵T!@8Ap</@\| P! ~cx}7D}"EtpH|ex~xH<~óx HՀ8!~x|N |<}cx|+x|+x! ;@ H͑89!P8A`<ad<|{x`}#Kx Ā $x8}BD}IE8A@}iD}bE@!DH̽T/AP:8A:p>>#x; ; ؓ}"D}7EptH퀜<|~x8\H/A ;@H<x8lH̵/A`8@@L88A#x;@}"D}7EptHq<8\Ha/@P;@HH<x$H=/A ;@H$<x(H/A;@; <x8lH/Ap8@@d88A #x8}"D}7EptH˱<8\Hˡ/A!@AD9)8B!@AD8!Cx|N |<}cx|+x! HEX<8!Px8 |H |?|~x}cx!;cH~H~ /AHa<xHɀ Ha~Hʵ~Hʩ<_<8a@@B̀ DADHih8!`|N c N |+y|}cx!A/@`;:`;>>Ѐc 8>>;;@Hm<x||x<c HQ|}xs `HA|yxH<x%x8@ H!/Ap<a@H /A/@=?<_?A<$i \;8H<$i \8Hý|exxHís `;ZHÝ<8|exx(HÅ<Q`|T~d@,<xHYu |HMHE|~x<xH1/A<xH8!xa|N |+y|}cx|~x!@,_>>; H4|wxr (H`H}/|vx@ ~xExxGxhx xH/|~x@$(|t/@/A [; B @]$/A@;@܁= TB<9`|I.8`T>+?AD8TB*9``A,<<<<c $8H9`$ Ex~x xGxhx|Z$T<|2H |~xHD ~xExxGxhx xH|~yA[; B @@@Ԁ]$= 9TB<|I.8`T>+?AD8TB*9`A,<<<<c $8H9<Q;9]$} `*p||BBTI<]$J|.p| Pd@<~óxhHi4r (H]`HU|vxKA([; B @@A;<~óxhH/AD<xH<|ex<؀c HH<, exxH<\H],||xT<8B],@([ @8 8(H[ T ~} }$[ @|8= Ub<9`(|I.8`T>+?AD8TB*9``A,<<<<c $8H9`$|Z$H 8(xHXcx8HGA/@ H8x8a@H8<<<<8@c $8t8H}8`8!A|N |<|}x>>;hcH%](8 $=,|{x( $,|ZtHP<|excx;xH<Qp`||.p|Pd@,<x8HtH0H|~x<xtH|cy@<x8Hi/=, 8`]($Acxx8!p|N |<}cx|+x|zx!|+x?????H/AH?<x;;{;8tHɀ<x8ڈH|H<|exx8ڜH|Hy<|exx8Ha |HQ<|exx8H9$|H)<|exx8ڰH(||tH<|exx8H倛,|Hрx<8!px|exx8|H?x;;{; HxH}|Hm|exxH]|HM|exxH= |H-|exxH$|H |exxH(||tH逝|exxHـ,|Hŀx8!px|exx|H|@&|a<}cx|+xA!p;{>;cH<|xx}H<LH< |yx{8HՀ$|zx{H,|~x{H(X|kxv|t/A<_8BҸH <_8Bx(xIxx;A8a<@HQX<_=<||x<v@<==?=_8B89kH888A89a<9)9J(H<x|fx<\cHـ<8!`|H|A8A<cx}bD}iElHu^,~ $(8!xA|N |?||x}cx!;cH<xW:;|bH.Ku<|ex~xH9@A???_?;{<;頃Zp{H|xx{H퀝|yx{Hـx8!pxx|gx&xCx~x9 |H|~y|B!A?_;Z܀Hy/@ 8`Hp8`H|{y@,<_<<<Bİc(8DH1??8x;;縀HH 8{xHH8{xHـHѐ{xH+@8xH|yxH|zxTc:H/{@4cxH<_<<<Bİc(8DHU;[ [@@Dx#xW:H);K}@|}.AH8 cxh8!`|N cN CbN |<8|}x!DH1X8!Px|N <8 H<8Hx<8Hhd @@KT:|./@4<@89!`BԐA8A}bD}iE}iD}cEN k DT~9A|X.|BJA8A|PT~}bD}jE}jD}cEN |!c @@KT:|./@ 8`HHK T~<| .!P8A@9!P|PT~cT}iD}bE@DHUx8!p|N |}cx!c @@KT:|./@ 8`HTK T~c<0| .!P8A@9!P|PT~T}iD}bEH<@DHx8!p|N |}cx!c @@KT:|./@ 8`HTK T~c<| .!P8A@9!P|PT~T}iD}bEH!<@DH x8!p|N cN <cH<cDH||ix8`!IB/AI/Ad<I ~H^9!P<W~ȀB P8A@T~|P~T}iD}bE@DH]x8!p|N ||~x}cx8`!>I/Ap<I ~<H^9!P<W~8B P8A@T~|P~T}iD}bEH<@D$Hx8!p|N ||~x}cx8`!>I/Ap<I ~ߌHQ^9!P<W~B P8A@T~|P~T}iD}bEH<@DHx8!p|N |a|#x|{x!p$;@I/@ <8@`AT8APPHHI <~܀T~Hy^B `8A`T~|`Pad}"D}xxȁbW:8|X.HX<8!Pл|HxX8!P8`|N cN |??|{x}cx!;;? ?,;;9LC|H |ux|H |vx|H[|wx|H̀[|zx||(PHEx8|fxxH[|zx|H}~x~Ƴx~x|ixxHx9@HY<<<|}x=x=?8(8Ƥ88H9X9)h9@H<x|fx<PcHx<8!pT|H<chH<cH|}cx!#I/A /@ 8`HL|PTB~<9!PT~AP8A@HTc}iD}bEHY<@DHEx8!p|N |}cx!#I/A /@ 8`HL|PTB~<9!PT~AP8A@Tc}iD}bEH~<@DH~x8!p|N ||#x|}x!pD/A/@4<@89!@`BTAP8AP}BD}IE}iD}}EHX<8a@lH}^@9a`"B}"HPTB~U)~|8Ap!tp}"D}+E|KD|]E8!x|N |a<||xL}cx|3x!8B|+x|;x}Cxa@8a@DHv8|yyA,/A$/A<xHv/@<<#xHv<_<<<B0c8ƚȀHva<<?x?;޴>;;`;T::`cHv!|xx|Hv8Hv/y |@h?Hu8~x;HuՐy|Hu<8||x<cHu8|exxHuyHHu8~xHuyy|Hui8Hu]<<yx80HuA/@$<<~xxcԀHu|vx=~óx9>Hu<Ht8<_<~ųxa<BPc8A}"D}/EHt|qxpH<:sHt9#|wx+A<_U):8B| .|| N <L( (PD;`H;`H<;Cx;` Ht<|xxHs@||x@T<x8@W<xHsŀ;Hs<Hs88Ht@}AW<<<x8P|A8cPHsiH;`H;`H;`H ;`H;`H<|exCxHs)<Hs|{xH<|exCx;`Hr<|exy (HrH<<<;`cP8H@<<<;`cP8H <<<;`cP8Hr|uxH<>;`:H,<_<<<Btc8ƛHrE8 +AL<Dx~x}{x;`Hq<~óxHr<|exy(H/>??@t<~óx;`Hq<HqDx|}x8aHq)~óxHq<~x|fxxHq}<HqqH(Dx8aHp݀~óxHqI|ex(yHq9<<excHq!<|exy(Hq <Q`|T~d@0<~xHp<pHpрHp|tx<~#x$Hp|zy@<~xHp x|x(8! |N |A<|{xpH[<_/A?Cx;;tH[̀<|exx8Ɓ(H[|CxH[@|ex|H[<|exx8ƁH[|exH[q<|exx8ƁH[YHx?Cx;;H[=|exxH[-|CxH[!@|ex|H[|exxH[|exHZ|exxHZ8!|N |@&|<}cx|+xA!<x|fxx~H><|TH>ـh8!`x|excx!|H>h8!`!|N |@&||zx|+x|+x|;xHBA!}Cx?;{tDH>]/Ah?<?=:P>;{ c;{:O{H>?:H><{LH>acx;`H=<<_|uxCx~܀H=ဝa<cLH=<~x}H=H=|xx~xH=88A`|yx~xd`}"D}6E8A@}VD}BEH=m}88H=]<_{||xBYH=E|}y@0?<;T~}H=%<}~H=|}x<_=?=_x=.~ !AAH<~x8@VY~$H;e|}y@0?<;T~}H;E<}~H;5|}xAx~ H;!Ax|txz~H; ~x||xzH:<C0=?AlcpɩԐatx~ph(H:@ ~xH@~xs`AW{sbAW{ W`t/`@r@A W{HW{ADz<_/A 萀~(~exH ~(~x8H:);||x@A89A$<zx~,H9|}yAxW<@@/A(VY<@Dxx~ H98A9a@}+D}"EA|@|x@A D/A8<z{HH9q<~cx{0H9aӺz zӚH_.:`;`;u|cpH8e<<_uH8Q<|px#x𐀄v@H89<|vxCxx\H8%|qx<cH8<~ųxxDH8uH7|ux~óxH7|wxA$a`ad;P8A`:@}"D}}cx|~x?>jvvH,倗j8H,<~<mXcvXH,<<m\8S<P-cL(H=<CH-<~|ex~DhH<~8DlHx8!pxa|N |<?}cx||x!;>CHH|H|H|TH|PH|DH|4Hu|$Hi| H]|HQ<_<8a@@8BM@ DH h8!`|N ||}x}cx?!c/A(BAaHH<aHAH<aH8AH8!0a$}c HN N |@&|H׉$BA!<aX<;4`cG(Hm<;`Ha`aP/AT!X<|xIH8BIH;DH1AX<bX?HAX<@$|CxH8a@H8a@H/@AX@aXH%AX<@Hb|ExH AX<@L|CxH<aP;hH<aX@H<aX8@ H8!@a$}c H|@&.|}cx|+x|~xA!Ax<|t/@<x<|H<x|}x<`H}<xx`<C0=_HPɊ~!LATmiɡHP^H@!\X=?8Bi}`(`(lBAD$ɁX@X(X(h* `$x8!p|N TB:|H.<~8H^8B^X8!P|N |TB:|H.<~8H̀^8B^X8!P|N |l|3x|+x;>>H|yx<c0H< H<|{x#xLHtHuHm |zx/Ah;8A@<x:W8@x})}iD}bEH)<@||xHp9!`8Apat<c}bD}iE8AP}iD}bEH<D@|}x#xxH<|exx`H<H<PT|gxcxH<@Dx#xHHm/A<PT~x>;P;ZT:X:\>????H:;9`;{|}x~x;Hယ|exxHр|~x|ex~xHx~xHx~xHx~xHxH|}x~xHq|exxHa<|~xsHM|exxH=x~xH-x~xH~xxH x~xHxH|}x~xHယ|exxH<|~xsH|exxHx~xHx~xH~xxH}x~xHmxHa<8|}xpHM<~xxH9x8!a|N N <cH cN <c@HE}>D}HA@<_;h:׸AD: A@;BHAD<|rx~xT;<_AH<_ALHAH|ux~x;AL: Hu<_|ex~xAPH]AP|~x|ex~x;"pHA~x<_~xATH)AT~x~x;b$H~x~xHxH|ux~xH倜|ex~xH<|~xs״H|exxHx~xH~x~xH~x~xH~x~xHqxHe|}x~xHU|exxHEҠ8|~x~CxH1>???;@ ;4H8|{xxH<~xH8|exxHmd8||xcxHYHQ8|~xHDx8xH-dEx;Z||xcxHH 48;xH<cx`H@A<x8xH<8|}xHxx8!p|N <c|H8`N |<|~x}cx!cH]/@4<<8TcӨH=<8|ex~ H%<~8H<~8΀H89!P8A@<TP~}iD}bE@DHɀx8!p|N |D><$8!x|N |<|~x?,}cx!;9hcH]xH]/At???>;;;;{|H]<|zx~H]<_<x|hxCxBx܀ƢH]y|H]m<|}x~H]Y<_<x|hxxBx؀ƢH]18xL@DHH]||x<cH\<x,H\~8@t<ĀcH\<H\<H\<x;|}xH\<xxhH\<~8x8H\yAx8!p|N |<||x>>?;`8a@:`HZ^<@<#x8B^(^~$})8 > $@/@~$H H@@<<$?Dc ;HY|ex~0HY~4ExHY8!|N <c08HYl|}cx|~x|+x!@/@ <HY9<HY-H ?lc48;yxHY <|wxHX<|zx~\HX@|vx@@hAĀ@;~48@HX8HX<|dx8a@HX^@DA@|D@Hh@dA\;@~4HXU8HXI<|dx8a@HW^@@>D8B} HP^@>D@<<Ex;cpHW|{x@<x~x;HW<|dx8a@HW=/a@AD9!`9AP@DAt8Ap pH| A8A}bD}iE<x|ID|JE<cPTHWM<|excxHW9AL<xHW!<ex~ƳxHW 8!|N ||~x}cx|+x!8c/A8<HV<x$HV<xxHV|`x|xX8!P|N |8@}cx|~x|+x!p/A@@@l(À@?~4;8@HV!8HV<|dx8a@HU^@DA@|D@Hl@h(A`?@~4;ȀHU8HU<|dx8a@HU^@@>D8B} HP^@>D@?~48;ȀHUa8HUU<|dx8a@HT^D@9!`<p|ADpAt8Ap~}bD}iE8AP}iD}bEHT<tHTPT8@|2@A0<~>|PA8A`Ās>;x|D|E}D}E`dHNh8|fx#xHM@@8ĀsԐ|D|EptHM̀hx;|fx#xHM@AHx@A@@@@| |^P;p;<<|P|BXPĀcxA8A`|D|E}D}E`dHM=<8|fx#xhHM%|P<a%xCx~&x8H@@@@@A|P!;p;8A`<|XP<cԐ|D|E}D}E`dHL<8|fx#xhHL}a<|P%xCx~&x8<8}X8!Px|exx|H><c}H><c|H><c{H>||~x}cx!8c/A@<4H>a<tH>U<xH>E<xlH>5|`x|xX8!P|N |||x}cx!8c/A<H=<|}xH=8/A<|H=<|exxH=/|~x@<xH=8HX<<xc|H!||yA$;<~XTQPHXH8<cx8>H/A\<~`QPHɓ`x8!pa|N |?||x}cx!;PcXH|`Hy<_<8a@@8BfЀQԀDH5h8!`|N |a}cx|}x!pT/A<?;a@V4H <_|~yA8P0xHP4H8<8APaTxPXPH0P0xHP4H`<8A`adxXT}"D};E@DH<X|ex}THP\/AL<V8H]<P0HQ<|ex<P(c[H9<`|ex}\XXH!8!a|N |<|}xTP|D|E|KD|IEH4<@89!@9~`BdA`8A`|D|E|ID|KE8!|N |<|}x(?~,?_;;L0H~0H<<xT89H݀M8|{xH<LH<~,<LcXH<L4H<~0cxMH|}x@T/@<<~0M 89H]Mxcx;HI<|ex~0M H5A<_<~x&xx~ȳx@8Bb耄Tp8a@DH ـ8!|N |TTP|D|E|D|EH4<@89!@9~T`BdA`8A`|D|E|D|E/A <|exxNPHU~PH 8P<~\EH58\8!|N |A}cx|~x!\/@ЀP/@xa@8a@DH|~yA8 4?cx0(;>ؐ,H~8xACxH8~<#x>Hu<<x~$<8,hcKB(HQx8!px!|N |?}cx||x!;=耝HH <$|DH<<cJ$ATH<<<8+AX8+|3xH<|ex|A\H<_<= x9 BȀFFbH}<| 8FHiX<| 8!PxF|HD|<|}x}cx!A|4DHh8!`|N |?|}x|;x!;;̐(|3xH},xAxHѐ}0X8!P|N |<|~x}cx!C4cH<|}x<>ԀcGHy<<<8)>8)|+xHY<|exx̻|H(|XHU<<<x8#`8cAH1<<cBh>\H~ h8!`x|N |<|}x?>_>?>;1@T;R7:7;{7>>cHH|xxyH<<8"H8"(|3xH̀|exxH~<8"XHH|xxyH<<8"h8"(|3xHu|exxHe<~;HU<|}x~=HA<|exx=H-<~;H<~=H <~:H<888x???;{'l;3P;':3};90;3>>>>:':*HՀ8 :0:s0?_>?>_;Z':13:R*H驐p<}H陀8 ?;*H8p@b8pvHe<8LHU|}xxHEH=<|~x8LH)xxHpDxH xHxHvH候<8LHՀ|}xxHŀH轀<|~x8LH詀xxH虀pHxH艀xH}x?Hm<c4xH]HU<'HI<~xpd0dH5<pd'|H%<8~x0H<8~x0H<8~x0H<8~x0H<8~x0H<8~x0H<8~x0H<p880lH<p+4Hu<|ex~x0Ha<~x(8HQ<|exp*H=<~x(4H-<|exp*H<~x~x1HqH<(~x1HـqH<,~x1H汀8!|N |<||x_$@H/A><:"s.Hq<"He<|zx{<"HQ<x"HA<{<{D&4H-|txH$D|x~x?;.H <|}x|"xH<|exx#H/@L<|"H<x"H<~x|~x{<# xH䝀"xH><>;P"c.Hu"Hm88A@<|}xxTP"};$@H/A?>?; :;"q.Hq<"He<|zx{D&4HQ<|tx{<"H=|H1|}x~óxH!<|exx#H {_<>:p;"c.H倞$D~x|}x~óxH<8|exx,TH<|}x{<#xHᡀ"xH<c.Hᅀ"H}88A@<||xxtp"}5D}"EHQ<@!D888,@H1A@<<8|& H@|PA8A<x$|}"D}5EptH<|ex,DxH<;"exx#H<<x,L,HH<x~x,HxHy/ ;9@,Cx; H]"q.HQ"HI|zx:$@~óx?=H-@A$$D{<8H<|excx,PH"CxHA<?xx#Hـ,<;"|exo.HŀH߽|}yA>?$@Hߩ/A>_<; :"r.H߅<"Hy<|zx{@"HexHY<{@{H&4HE|sxH$D|x~x?;.H%<|}x|"xH <|exx#H/@L<|"H<x"H<~x|~x{@# xH޵"xHީ><>;P"c.Hލ"Hޅ88A@<|}xxTP"};$@Hܱ/A?>?; :;"q.H܉<"H}<|zx{H&4Hi<|tx{@"HU|HI|}x~óxH9<|exx#H%{@H>_<>:P;"c.H$D~x|}x~xH<8|exx,TH<|}x{@#xH۹"xHۭ<c.H۝"Hە88A@<||xxTP"}6D}"EHi<@!D888̀,@HIAĀ@<<8|& H@|PA`8A`<xd$|}"D}6EPTH<|ex,DxH<;"exx#H<<x,L,XHڱ<x~x,HڝxHڑ/ ;9@,Cx; Hu"q.Hi"Ha|zx:$@~x?=HE@A$$D{@8H-<|excx,\H"CxH A<x|;#H/A<#H<_<|}xcxB䀄,`80@|Hٱ<_<cxB,d80@|Hى<_<cxB܀,80@|Ha<_<cxB؀,h80@|H9<_<cxBԀ,l80@|H<_<cxBd,p80@|H<_<cxB`,t80@|H<_<cxBЀ,x80@|Hؙ<_<cxBx,80@|Hq<_<cxB̀,|80@|HI<_<cxB,80@|H!<_<cxB,80@|H<_<cxB,80@|H<_<cxBp,80@|Hש<_<cxBl,80@|Hׁ<_<cxBh,80|HY<xHE/A<???;@#;.H!<|ex|%\H <|}x|excx,H,|ex{ H<0|cx,H<|x%THֹ|~x<{ Ex&TH֡<,H֕@,{ ExH}H;Z/@A<x;#HQ/A$<#H=<|ex{,H)<xH|eyA,<<,c/H<|ex{$,H<xH/A(<#Hս< |cx,Hե<xHՑ/A,<#H}<0|cx, THa<xHM/A,<#H9<he |)cx,H<xH /A,<#H<he |)cx,(H<xH/A$<#HԱ<|ex{(,Hԝ<xHԉ/A$<#Hu<|ex{,,Ha<xHM/A$<#H9<|ex{8+H%<xH/A$<$TH<|excx,$H88!0|N |?L?l|~x}cx!?,? >>tzXHә|}x~?H<;9:x;|ex|hHՐa~ HŀHѽ|ex|Hѭ|ox~HѝHѕ|ex|Hх<|px~$Hq<|ex<cHY<|qxxHE ||H1<|rxxHTe>||TH<|sxxHTe>||TH<|txxHŀTe>||THЭ|ux~(HН|ex|HЍ??|vx~,Hy|ex|Hi<|zx~8HU?|ex|HA<|}xxH-<|ex|?(H}sx}{x~ x~*xaTA8a<@|xDHALP?_XH?9hZl<<{pt<=x=?=_脀?=TX<_)\J`|vxdwk|B耓!!P>|{xH<{D;8Hν D|zx{>>>:|:dH~@:@:>>_:s:RH݀zHр8HŐ~<zHǵ8Hǩ<~@~8HǑ~<8H}xHq<8Ha|{xvHQHI<|zx8H5ExcxH%~DexHCxH cxHxH<8Hဝ|{xvHрHɀ<|zx8HƵExcxHƥ~HexHƕCxHƉ8!cx!|Hl8!!|N |<|}x}cx|+x!cDH-<xH<8}<H X<8!P|exx |H|<|}x}cx|+x!cHHŹ<x Hũ<8}@,HŕX<8!P|exx D|Hp|!<|{x}cx?!P|+x;d; hcH9<x8;P|~x{d \H|zxxH !`8A`<ad|{}"D}=E8A@}]D}BEH/AȀCxHœ!9!p8A<a{}BD}IE}iD}}EHĕ<||xHą<exxHq<|}x<c HY<xHI<8H=<PT|gxx lH<xH <@DxGxH8!!|N |!<|{x}cx?!P|+x;; ԀcHå<x8;P|~x{d HÅ|zxxHu!`8A`<ad{}"D}=E8A@}]D}BEHE/AȀCxH1!9!p8A<a{}BD}IE}iD}}EH<||xH<exxH<|}x<|c xH<xDHµ<H©<PT|gxx H‰<xHy<@DxGx,H]8!!|N |A<}cx}Cx||x!p}Cx|;x@H<x8|zx|d 4H<|{xxTH/A<cx~U)88`Y.^TB8|Bb>9)>h8!`a|N ||}x!|#x#;@@4T<@|#xA}H}/}8`A$=]I@@8`X8!P|N ||}x!|#x#;@@4T<@|#xA}H})/}8`A$=]I.@@8`X8!P|N ||}x!|#x#;@@4T<@|#xA}H|/}8`A$=]I.@@8`X8!P|N ||}x!|#x#;@@4T<@|#xA}H|/}8`A$=]I.@@8`X8!P|N ||}x!C;@@@4T<@|#xA}H{/}8`A(]=@| .]@@8`h8!`|N ||}x!|#x#;@@4T<@|#xA}Hz/}8`A$=]I.@@8`X8!P|N ||}x!|#x#;@@4T<@|#xA}Hzi/}8`A$=]I.@@8`X8!P|N ||~x!|+xK/@ X8!Pxx|KxX8!P|N |a|}x!|+xC|#x*@@4T<@|#xA}Hy/}8`A0]}dxx|cHy}@@8`h8!`a|N |||x!|#x; @@4T<@|#xA|Hx/|8`Ad<~|I:^ | 9.bB >~^"bB@@8`X8!P|N ||~x!|+xKU/@ X8!Pxx|K|X8!P|N /|B}H|Ah0@|b8cN /AA/AH/8` M H+A`$8`!/ADD8 /A8~K/A>$8`H >$8`!I|C8bX8!P|N ||~x!|#x#q A,8xKX8!Px|xK\$/@4q A|#x8H |#x8Kqx8K-HD8 /A;xK/A,>q Ax8H x8KH<pAx8H x8KxxK|cy@~$xK!X8!P|N |A|~x!|#xC0|+x|3x/@$8` Hm8|cyAX80H, A,;c4W8HoQ8|cyA(0~4Hc4W8|@c.B8|xh8!`|AN |!|}x!|3xC|#x|3x|+x |@f8@K|cy@xdxK^|cy8B^@8xK-|cy@x dxK|cy@}ExxKQ|cy@p/ApAx |!8DHx |!8BK/@ h8!`xdx|!K(h8!`!|N ||}x! c# ^H =|cyA`],/@@=/A4A0 /A]|C8bH ]|C8bH/9C@|jxAl=/ @|I/2AT@/28@A|CIր/A(/@ /A|BR8B H|BR8B H} /@$8C/@t@H=/A@/A9|Y+2A(H9]|XP|C||BH,=/@/@8C /A8J |CxX8!P|N /A$ /@C8`/M 8`N |!|~x!|#x c# \^H ]|}yAxK/A~exK|cy@t /AT8K%|cy@^H, /ATcx8?8K|cy@^ 8cxK1~ExdxK|cy@cx H<cx8<8K|cy@~ExdxK|cy@cx 8;H@cx8;%xKi|cy@X~ExdxK]|cy@@cx 8 /@$/@@^/A/A;|I+2A|ex~|x@HPKE|cy@; @;|Pcx|)8<8K|cy@~dxH |cy@;9AHx^/@X/@P/@Dcx8<8KQ|cy@@xcx8;K9|cy@(~dxH Hx$xExfxK)h8!`!|N ||#x! < x|#xTB:8`8B"TB6|B|n7@A\<9 A$9`8\b9)<8B@8cxx8@@Ku|cy@ {xK |cy@]<9 9A`U+:| ./@DhU:/}@@ |]9BH/|@Z@ |]Z8BH9 ]<9)@]8@|I9 U@9/89|+A}H0}B9@ H$A K+A}0|x9)9kB@Cxx<HT!A|N |!;@!|yx|#x@YWK88`|KR" 9)pAtP.;i@@0T<@|#xA}HV1/}8`A0]b.@@;ZAt8`h8!`!|N ||~x!;/ Ax@/A(A/@AxH/A/A4H~K@|}x/A|/@Hl8`p@`~HL8c /ADcH48c/A A/8`A H/@cK!|}xxX8!P|N |;!|#x|~x|+x/ AA4/AA/A/H/A/A4H/A A/@AH/A@/AHl%h/@;%H;p@L$/@; ]8`0<A,T@:|y.K%||y@:@;^8`0<;AT@:8@|y.ExK||y@̀A@@@[:AHpA C8Bp AH8cHl~8@ExKm||y@\A@|/@H<|}x}8@ExK1||y@ @@HA@@@[@/@HC|PHc/A@/@8Ht;/@~K||y@{Kѐ{H;/A`A/AHd/AHHXpAH@}KA||y@0[`]H}dxExK||xx8!|N |;!|#x|~x|+x/ AA8/AA/A/AHl/A/AHX/A(A/@AH@/AH/AHH,~8@exKa||y@}@KQ}/@H~8@exK)||y@܀A@@@]/@HC|PHdC8B+A[HHh/@;H;^p@Z$/@8^ ; @L|^x^8`0<;A4T@:8@|x.exKa||y@A@@@];9AHp@ cH8H; /A~K||y@}/A /AK}HH;C/A`A/AHd/AHHXpAH@zK}||y@0]`ZHzxexKM||xxx8!p|N !|;!|+x|~x;|#x/ AA0/AA/A Hd/A/AHP/A0A/@A/A8H0/AL/AdH~Dx8@xKY||y@{@Ku{/@Hc8@x; K||y@ȃ/AH~Dx8DxK||yO@@ADA; @/@@t/Ak0@;HX@H;@@H4/@ x8$HQ8`$H̀A@T:|[./^@ x8'H8`'H`>+A]8|H0|Bx]H`8H@8c/A A /H/A / @cxK||xxx8!pa|N |A|{x!p|dx;@8,x[H=x8,cxH=xx8,H=u/A0CxHD8|cyA@~/@/ @~x8/@8|x8!|AN |;!|}x~|+x8@K|cy@@H8/@ 8`H(/@ \ 8`p@A xKŀh8!`|N |a|~x!|#x|+x/ @;/AԀ /@cx8xK} /A}pA8xK|}yA8cxxK|dyAlxxK/AX8`HF|}y8`AHxx`@KMH$/@@8~/@ K8`h8!`a|N /||{x!|+x|3x|;x}Cx}8KxA|0@@|+x@4[8x{D8@<Ex}N!@@AxxHG8|cyAC `@ A(`@ H|+x|3xHG8|cyA`/@$8HAy8/xA<8H,8HAYY8b9)/A8 8|xx8!p|N |ؐ:!8#|vx|#xK;/@Cx88H|#x/@|;/AT/;A H[Lx8}N!/@8zW>K;/@HP;H[Lx8}N!/A8zW>K;/@H CxxxH8[Cx H$/APA,/ADA8+AH0/A(H/A|Ax/ A/AHd8zKHX|ex8`K|yy@@/@8zx8pH/@8zx8K8@Z/@8z8 KH쀻h/@;H;p@$/@; 8 T:|~.Kȹ|yy@8$T:|~.K˩|yy@|:@V:|.8(T:|~.Ke|yy@H|.8,T:|~.KU|yy@(A( @@A A,$@@A$:A@쀁 $HDpACx88H,\Dx  |H;;`}xexK!|yy@/|#x@d /@X/@]/@/A܀ pA88z`H 8z8@K]H/@xCxK/@P/AD;;Hx8pKQ; @ xK/A8  A8T /@8T H a`K/|~x@Ad |@8HadxK|exCxxH;/A A/A8H/AH Dx  xexKq H̀X$8B/X$@4|88p`ApbACxK HxDxex;K8|yx`xK/Ad8+A[H0|H9H[pA48x`KH xDxexK|yxH; h8!`a#x|}p N ||#x!|~xD8/A/A@|CxH8/~dA8H^d|B8^hH|8}8K8/~dA^8|"hX}N!||x/A/@H/A@~d8lh8l8K|cyA |`xHP |@8B^LH 8L=/>txAh^d|P| P8|xX8!P|N 89#l| 8D8B 9)B8LD/CtxM 8PN C`T|BxC`T|BxC`N |a|#x!||x8;D<x$DA !KQxx8@KU|{y@aHALq`UB|xpTAAD@^\Xh/A/@X;P~8x8K%/@;xxK/A0xxKQ8X|{xxH(/@$;xxK}x8KH,DUb>`/}"x^`@U@|@x`H8!@cxa|N ||}x!;cdL/TX\`hPA HAdX8!P|N ||~x!c/AH~d/AH~l/AH~p/AHՀ~4/AHŀ~|/AHX8!Px|H |~y|!A K]X8!Px|HhX8!P|N |8!|#x |}xK xx8HaX8!Px|H|/A|x|/@|N ||}x!|ix|/Ap^|8 /A|x|^x/|x@88@ |x] KYxx8HX8!Px|HTX8!P|N |A8@!||x|#xC |+x/|3x@$|(PT=A8K|~yAH<88x4ex8ax8@0H|~y@!/@TALpAD<^@> L^d> l^p> |^> ^> H^BD>[ D|8 Dh8!`}c[xA|N A}=Ky|B|#x!|3x|;x|+x}Cx||xA 8<"LK|~y@0|dxExxK |~yA|K8h8!`xA|N |B<_8B;!/@8HQ8`HX8!P8`|N |B!HHw)8<_8`;4X8!P|N |B}H|+|@xAHTB>c8B(T :TB:TѾ})Z|B9)$8BU)@.TB|BJ|bN CTD.|`N +8`M 8`N +|#x@d8`N d|B+}H|} Ky@8 9+@@pt`@TbAhk/s@ /sA pbAH/S@@ /S@4iTb/@$8ߙf8`D8BHdTb/88A)q AH)p`A q A+M 8 @L 8cN |B}H||`y@  >/@0W p@ ~xexFx8%HuY8%H8 /@ H/@88` ;Ha8/~Ad ^HH^ @(~TD8T]P~TC#c X^\>`~dC#cHU$8U=}>KxK\8~p@Xc$/A8KH0~H~(/AH%H~/AK<_8B)X8!P|N |B<_8B(`!/A$|^x~H/@X8!P8`|N |B}H|8^ x>x^>K-x/AxK8|xX8!P|N K||!Km ` X8!P|N 8`8KD|!a@8A8a@Kh8!`|N ||~x!;|#x@@H|xH||yA8@@,Kɀ|}xpA ` X8!Px|N ||~x!c@8@0}N!^9 |@PA9 } Kx|xX8!P|N |ؐ|vx!|#x|+x;` @@>?bć0$xxx}N!|}xx}N!L8x}N!/A$8}8@|P|T@A(H ^xH@ `Abxx8!p|Cx|N |ؐ|vx!|#x|3x;  @@8/;EA,>b0xxx}N!|~xx}N!L8x}N!/ALx8}N!8/@(Lx8}N!8/@8|P8`T>@ALx8W= 6}N!/A|];"H@Lx8}N!/A|];"H|];"H xH@@/;Z@䓖#xx8!p|N |ؐ|vx!|#x|3x;@ @@/;A>b0xxx}N!|~xx}N!L8x}N!/A(+7A 8~|PT@8A4H =xH @W@8@@/;@p@x|xx8!p|N ||}x!8` H8/|~x}At8Kn|}yA xH\+@0T<+|#xA~H8/~A$^+@ 88|xX8!P|N (@|ؐ|#x!|+x|~x@ |x|#x^/@K|cy@8H|]xB8(|+x8@8|R| pUb8|B2@@ 8H}j[xPA(|;x|+x@4|R| pUi8|I0.8B@A 9 H}j[xPA|H8P8`39"~J+AL/T8A,|0.@@|xU8|B2@@|x/ A(@@|(PU8;T8;: @lٺ@@8T<@|#xA}cxH/|dx}8`A|#x||l~xH@@0H(||l|(PH|YP|P8Z ;Z@|x@W<@AA0x}cxHa/|dx}8`A|#xx;@@8T<@|#xA}cxH/|dx}8`A|#x.@@;@@0T<@|#xA}H/}8`Ax]|Bb@@+@0T<+|#xA}Hm/}8`A$]+@ 88`x8!p|N 0@@ D 8`t@L 8`5N |+x|3xK||#yA|;`|+x!e@4 8/@8h8!`Cx8|AK(;/@ 88`/@8;@LW8}".|Bb8(@ACxK|cy@8/A0;8AH/ACx88Kh8!`A|N |#y|8a!}Cx|kx|3x@$/@ /@D/8`A8@H9 >8@^ >Hd8@8^^8@ ~\ HX88@^\8@ ~\ H,~H$8cxh8!`A|K\h8!`A|N |@&|АA|+x!|vx#|3xF |#x @!@::TxA/8`@H0.@40}#Kx}N!8+@ /|@ 8`H̀8a@xK]|xy8`7A? c9Aa@@Z pAp;:@@`0x}N!a@|~xcx}N!/,!@})}>Kx!@@D8a@xK|{y8`7AA !@@,/;`A H/@ixa@:x@@0}#Kxx}N!|~xa@}N!!@Z })!@pAD@p0}#Kxx}N!|~xa@}N!!@})!@/}@4/A8`6A08 u~x6HA 8`H8`8!a|}p N |!|yx!|#x|+x8 @@@D0x}N!|}xa@}N!/M@@A$+MA/CAH/cA`H[ pA@8@0xDx}N!|}xa@}N!/-@8@@H[ tA@8@0xDx}N!|}xa@}N!/?@@@ ;HP@,Dxex8a@K|cy@ |`xH,@|}xsHxdxKM|}xx|xx8!p|!N |@&|a̐A|vx!|#x|#x|3x|+x @|;x;:8`*@0x}N!|~xx}.>xN!8`*AxLx8}N!/A/@ :H,;)H$Lx8}N!/@;(@@-0Dxxx}N!|~xx}.>N!A/)Ap@DLx8}N!/@HLx8}N!0;(H$Lx8}N!/@;(@AXA[x;)HD+A$L#x8}N!/A;)/@s8`H~xfxxHKQx8!aa|}a N |B?;!<_B(APC <@ t @8$=|#x 9h8a@8HQu8a@}N!X8!P|N |B?;d!<_BAHC tA8$=|#x 9hP8a@8HP遞8a@}N!X8!P|N |@&0@|ؐ|3xA|+x!|xx|#x|;x}Cx@-0$xx}N!|}xx}N!@|;`~@\@@T;0x$x}N!;@,x;{}~N!@ @AAAxH@xAH8`x8!pa|}a N |@&0@|Ԑ|3xA|+x!|vx|#x|;x}Cx;@/Ax;H0$xx}N!|~xx}N!@;`~@\@@T;0x$x}N!;@,x;{}~N!@ @AA 8`H`x}N!H<0x$x}N!|~x8`A$@;x@A8`x8!pa|}p N |ؐB!d|#x|+x|3x(@a@|yxF A88`H0}c[x|+x}N!|~xa@}N!/]a@8@8Y}ka@Y@ 8H/-@8H@Pt At@8`@p0}c[xdx}N!@|~xx}N!9>+Ha@8}k}v[xa@A<_U):8BD| .|| N 88888888H`0<lT$|88@Hl88@H`88@HT88@ HH88@H<88@H0tA88@@HtAh88@YHT@;@ 0}c[xdx}N!a@||x/{@$tA}c[x}N!a@kP |@8}kYa@tA؁0}c[xdx}N!@||xx}N!/^a@}ka@@ @|H xHp@}|[x@p0}c[xdx}N!/{@t@Aa@}N!@dx8}`x8a@a@K|~y8`oAa@@@00dx}N!L8}N!/8`,@܁x}N!@||@@X@@P0|xdx}N!/}@4a@}N!a@88@}kYHTxHLt AHdxx8a@8K |~y8`8A4a@@;8HL@@ p@Adxx8a@8Kܽ|~y8`8Aa@@;88@HPtAdxx8a@8@K|~y8`8Aa@@;88@YHhdxx8a@@K|~yATA<8H/[@ȀtA@@0}c[xdx}N!/:@p<_@8Bt|x|xH }N!@fxx}`8}e[x8aH8]a@K/A8H@p@A 8K<x8e\KyHd/&@`p@AT@@L0}c[xdx}N!/&@,a@}N!a@8}ka@Ha@wy8!|N |АB!|#xf|3x& |xx|+x@@A88`H88@xXDx 0}N!|~xa@}N!@@x@ t@ @8`@| x0Dx}N!@|~xx}N!9>+U@8x@A <<_U):8B$| .|| N dXd    $$$$$$$$$  ( D    <        T @ p          X      h     T  \  p  pH p A8 8@X8H pH @@@`0xDx}N!/?@@tA40Dxa@}N!a@}N!@8H@@@0xDx}N!/+@pYp@A/ @pI AP/ @D0Dxa@}N!a@}N!@8@H t@88@XH \pH p H Āp H p H tA 8Ht A 88@H@tA 8 Ht A 8 HtA 8 8@H t A 8 8@Kt A 8Ht A 8Ht@A p8Ht @A \88@ KtA D88@@H 0t A (88@H p@A 8 8@H p @A 8 8@H ܀p@A 8 8@H p A 8 8@H pKp K@x@ 0xDx}N!/{@t@Aa@}N!@Dx8fx8a@@KԱ|uy8`oA (a@@@00Dx}N!L8}N!/8`,@ x}N!@|~@@P@@H0|xDx}N!/}@,a@}N!@8HxHt A dDxfx8a@8K|uy8`8A P@@:8HL@@ (p@A Dxfx8a@8KӍ|uy8`8A @@:88@H8a@Dxex@Kmx+|uxA|t Ap<@ / A\p A0AhV:/|@@ |W8BH/A88@8XH <8+A@|CxH|x@tA\k0Dx1 |fx88a@Kx|uy8`8A샡@@:88@XH/0Ax}N!@HpA0xDx}N!@|~xx}N!/<@@@dDx8a@8D~x8K|cyA4w0xD8HKm|uyA D~xx8'H68`'Hp Al9@`AH<}KSx+8A,hU):/|@J@ |WJ8BH/@ 8`0H99kAHAH/88@X@ @HPXH@p A80xDx}N!@|~xx}N!/<@@@Dx~x8a@8L8K|cyAAL8XHpA8H@@0xDx}N!/{@tAxa@}N!@kP |@8X@tA<0xDx}N!@|~xx}N!/^@@@ @|HxHTDx~x8a@@K|uyAЀA8Hx }N! @H/8ATpAHA@AH A`$A(@ 8 Hl8+sA<_T :8B $| .|| N l0H0tp A$8H`pA8 8@Kp Khp@A8 8@8XKlp A~x8a@DxxKU|cyAAK8;K8/tA/S8;:AAD+;A<_W:8B0| .|| N `x4L[y4}N!9/A9;@Hx /A(/A;AL@d;A#x8~ųxfxKA|~yA/@A;H$;;ZLA AH;ACx}N!|~xA(@<;A@(;#x8~ųxfxK֡7@x;/@ H,[Cx80}N!9|}xH 9;@H4;@[x4}N!|~yAk0@}xGxx889!9Aa8Ke|~yAHLx8~ųxfxK|~yA0/@L<cx8>K  Hy8K󥀡|dxxfxK%|~y@x888gxK|~yH8a~ijxexK|cyA|dxK/@H#x8~ųxfxK|~yAt/;@;-;@K/AH/@P#x8~ųxfxK|~y;@A /;A /Al<cx8?KKX/AX#x8~ųxfxK}|~yA/;Ad/@<cx8?KХKH[ tA<cx8?KЁK;H8a$x8~ƳxgxK|~y@`x8K|~xaK],AH4/@4x88889!9Aa8K |~y@/8:A(~xxK|~y@̀|$KH x;PxKH$;H;H/A H #x8~ųxfxK|~yAp/@Ā/@4x88889!9Aa8KA|~y@,/A(~xxK|~y@ |$~xK/A`H9`H`T<pA[ tA$/@49`9 8\8B/@9)+@/@d[8` 8L}N!/AD[8` 4}N!/@`H8|$dx8 8 KY8H4|dxH,;2t8A|$KtKx8!|#x|N |@&|АAB!8|3x|;x8@@|xx}Cx|#x|+x9 @P0x|;xH}N!/?@@[ pA0a@}N!@9 @@@0x$x}N!||xa@}N!9<+W@@xA<_U):8B| .|| N `~x8@%xfxKI|cyAx~x~x'xhx8@H!|cyA9 H8`Hh8`H`8`KYHX0$x}N!A@||xCx}N!/=@@@ 8`H/!@8` KmxH̀[ 9 pAd^xA@:8a@$x8Dfx8KA|cyA$cxK1|}yAl.A+9 "A{0xDxgxK|cy@{8K9 /xAؓ A +A[8|0|Bx[[@8B[@H[ 9 pApAH0$x:}N!A@||xCx}N!/<@@AA@{8K%9 /xA(cxK!|}y@xKMHP+@xK99 "HX8|0 ;})x;H(:/mA+mA8/:A+:A/)A/-:AH/iA0H/sA8zx|.H y/ApAHЀp AĀZ /Aa|X.}^Z+@(Ha|^Z8}$Dx|+xKyH|T9T}".}0}"9A$ T T|I.}0|Bx|I.a|^ZT T|I.}0|I9A |X.T T|I.}0|Bx|I.;9AV<+@pA@zti@A4x8K|cy@ |kxH(@|K|cy@aKq9`HK-HhK%9`/|A8`88K9`|yyAȀ<H8/@xFxK /|9`AHldKA9`/|AdZ48BZ4H@dKeH$H pAp 9`@,K!|H 9`Hxcxx~xFxKQ|~yA8x+A}K%9`/@Ԁ{k |)K9`|yyA~xFxK|~y&A/A 8`K%9`|cyAl#|yx @ =KD/@<}8K9`/|~x}A,#x8K9`/;~@Hx8!}c[xa|N |@&|A8!|}x8a@|#x|+x|3x|;x}CxK!.|~xAA}A - @@Ha@8K};AAA8a@xx&xGxhxK.|~xAda@/@0}a@/A(ca@/@H8Ka};AA / @|x8!pax|}c N |8!|}x8a@|#x|+x|3x|;x}CxK|~y@a@KH@@H/ @a@8K };cxx%xFxKy|~yAd8a@dxxx'xHxK|~yA@a@8K/ };AA/8`A8`Hxx8!p|N |a|{x!|#x8a@|+x|3xK|cyA,cxxxx8@8K8|cy@|`x|x8!|aN |!|;x!|zx|3x|3x|#x|+xKxK<Cxex8@\Dx]88\@= ] }$0!@K<x8!p!|N ,(N |B}H||`y8`L /ApA/,A$A|/#AA~"bY>~^;HxxH=;H^;;/|x@X8PH<|#xK|}x<cxH_=x||xCxxH8|ᮀh8!`ax|!}p N |B!|3x|;x|+x8}Cx|~x|#x!AH|\PTB:8B|c@,<x8??Hy<xH^@@<@L=;x;}N!/;@/\;;];AH//@\;]Hlx}N!/Ax}N! /@0/;@0/\;;];AH/;@;a@<88a@Hmy<8@;H]qix/8c@ /I8c9)];A/;AHL8|}N!/@tL8|}N!/@X<88a@HՀy<8@;H\9!@/;@4/I;9)];AH;;@A88@/]x8!p|N  @|bxL | P9 |%%%8B8BN  @|bxL | P9 |8B%%%8BN  @|bxL | P9 |%8B8BN  @|bxL | P9 |8B%8BN  @|ixL |c P8cTc|i IE I9)E8BN  @|ixL |c P8cTc~|i I9)E8BN |BA<_\|+x!|3x|;x}Cx0P@<_BHA<_BX@@W<xH~)/|`x{8`A |xxKH<_BT@xH}/|`x{8`A|xxKH<_BT@h<_BHA<_BX@@W<xH}u/|`x{8`AX|xxKH(KT<_P@<_BHA<_BX@@W:xH}/|`x{8`A|xxKH<_BL@xH|/|`x{8`A|xxKyHl<_BL@l<_BHA<_BX@DW:xH|M/|`x{8`A0|xxKi8`HKP8`nh8!`A|N A|;y||zx|#x!|3xA 8}0A(|3x8@|+x9DexK|~yAHlDa@H CxKl|~y@0zx@DKh|~yAzKg8a@AH{x8!pxA|N ||~x!8a@K |cy@0 /@@xKgmH@xKg8`h8!`|N |}y|!A;@,]W:|i./A Hq;A܀ ;@$9`=W:;}bI. A8@8]]]X8!P|N ||}x!KAX8!Px|Hy||~x!c/AK8X8!P|N |8`!Hy8|cyA$8@ |`xCCC|xX8!P|N ||~x!|#x# Ac/@8` ;HyHT8T @,|IP8|IH~U":9)|Y.B~ >HcU):8`Y.^8B^X8!P|N |||x!K|}y8`ApHxK=8`H\;\]@8\W:|i.K|cyA|dxxK;AxX8!P|N cN 9@@,9cUB:# 9J}I.}Y.AK/ |||x|#x!A; /@ W:xHwI|xHw=H,@HW:|xHy!x|| Hy| /A /@ 8`H 8`X8!P|N ||~x!K9|cy@xK8`X8!P|N a|#y||+x|3x!|}x8A@A8K|cy@ |`xH]W:8.= kI.|xh8!`|aN 8 N |8`!Hu|}xKɀX8!Px|N |~y||#x!A`/@,~/AHum~ /AHu]8xK/AX8!Px|Hu,X8!P|N  ||}x!|#xAЀ/@,/@XT:Ht}T:HtH0 @0cT:Hv̀}} T:Hv} 9@ @8>UB:}9J|H.|Y.> } |H.|Y. AxK~/A K}X8!P|N |B}H| x}Cx/CT<<|rx|#x|+xCD|;x8^ADW:!8BTB6|B}!n8@h~h|~plH8W:A8 T6||An9A@~jJ^8 ~hl~p;@~hT:U:~,~::|A }8@W@:;Z|W.|V.B>p8<_ 8B>pI8@p8^xpH~xH-d<}cx;+TA-<_U):8B| .|| N -TTT(<P 4H|$ $ T $ \  l ( \ 4$<(d--d(4@$,Xl $,8 !!,!`"#%d$&lP'p'( (()H))*|*+h>x`PH@ x/Ap A|8P;@hd|PAd}9WJ:}*./A+A$}0| 9H $pA |J.WK8>hB|BJH | .WK8+|P| .}kA(}0|9H (p A |J.hB|B"|HPH | .|P HW@8|@}<.";ZB8H^;@\hnPPbd\ |PA}9WJ:| ./A+A$}0| 9H $pA(|J.>hB||BJ|P| Y.H| .\|P| .+ }jA(}0|9H (p A |J.hB|B"|HPH | .|P H<\ | .| I.;ZB, /At|/@ KQ/|}x|8`A*8H |}xK8}8`d}sx|Php`~Gx|K|cyAĀp0A)H^pB A d8@9 >xH(^qJA)d@@)H' 9d\@'@;@(H'8 }cx@A'x<8d~~x}8@N!d@A'/8c@(9>@I9)A(t@A'T^|xdTB^K/;8cAH(<8 @A'H8 @A'HX8 @A&H,8 @A&L@&9dL@&9dL@&9dL@&9dL@&p}cxH|;| @A&T/;{@, 9d\;@&,/;{A;,K|;|@@;P8 }cx@A%xx<8d~~x}xN!d@A%/8c@PxI9)A(t@A%^\x>dTB^K/;8cA@AdK8 @A%PL@%@9dL@%(9;H 8 @A%HD8 @A$L@$9dL@$9dL@$9dL@$9d}cxL@$9dY@$p9;dK|;W`<| @A$H/;{@DL@$,9dL@$/9;d;{A;,K|;| @A#/;{@\L@#9dL@#9dL@#/9;d;{A;,K|<});| J@A#T/9)@,L@#8/9;d9)A;`PK8 @A# L8TITB}i.|0}g9A"H}cx}N!/A"Ѐ~d|;8@A"}N!d|l}cx@A"~d|dx0|x}N!|dxxK1/A"lH88 @A"\}cx}N!/A ; KpdTT}".|`0}"9A"H<8 @A" L8TITB}i.|0}g9@!}cx; HH8 @A!}cx}N!/@ d9d|;H"~d}|;N!d| }cx@@8 @A!h~xHؐd|x0}N!|dxxK/@!4H"<8 @A! }cx}N!/A ; KddTT}".|`0}"9@ | 9;Kp8 @A }cx|;}N!|}x~d}@dA }cx0}N!ex|dxxK/@!|H h8 @A \}cx}N!|}x~d|@A 8,~x}N!/@ d}H8 @A }cx}N!d|`@|lx@`H@@ ?`> ffc{b1fg;pl|P|p|@A(8~h8l8p~fx~xK|cy@܀p^p^pd>p) ^p~d8p}N!|}x~d|@A8,~x}N!/@ >d}@dALH @@ ?`> ffc{b1fg;pl|P|p|@AH8~h8l8p~fx~xK|cyA$hA \^l|@P|H`p^p^pd>p) ^p~d8p}N!/@ d|g@A<|lx|;xH >d9@dA4H,@}cx@?`=ffc{afg: ;\@pl|P|p|@AH8~h8l8p~fx~xK |cyA$hAT^l|@P|xHXp&^p^pd>p) ^pd8p}cx}N!|}x~d|@A4,~x}N!/@>d}@d}cxAH@@?`=ffc{afg: ;L@ppl|P|p|@A(8~h8l8p~fx~xK|cy@p&^p^pd>p) ^pd8p}cx}N!/@ d|g@A<|lx|;xH >d9@dA@;H(8 @A}cx0~x}N!L8}N!/AH<8 @A}cx0~x}N!L8}N!/@~d}N!d}dHp@@8 @Al}cx0~x}N!L8}N!/@H<@4}cx0#x}N!L8}N!/@H}cx0~x}N!L8}N!0|}x~x}#xN!L8}N!@DHp@@8 @A0}cx0~x}N!L8}N!/AHh@4}cx0#x}N!L8}N!/AH0}cx0~x}N!L8}N!0|}x~x}#xN!L8}N!ApH8 @A}cx0~x}N!L8}N!/AdpA,~x0#xHPpA|0~x#x}N!L8}N!/APdA}cx0~x}N!L8}N!/@KpAHAHp@pAH䁕,#x~x}N!/AȁdAKP@pAp|@P|Bp8|BQ֐p|H.K䫼9`;W:}.ph`|;x@| x@d8`|;x/ A /@@ 9kH(/@@/A9kH@AW>+A$8@|B0| 9H $pA| 8P<@|p`B|H| .<̀p`̀^l|FP|Bp|A(8~h8l8p~fx~xK|cy@܀p8 H;H;H;H ;hAW:| ./A| ./AW>+A$8@|B0|9H $p A|K.hB|B"H}+.+A(8@|B0| 9H (pA|K.hB|BH| .P| @AH/}cx;@4 9dI9)@/;AH|x#x}N!d|`@AK|;hAW:| ./A| ./AW>+A$8@|B0|9H $p A|I.hB|BH|.+A(8@|B0| 9H (pA|I.hB|BH| .P| @Ax~x8d}cxK/AH|x#x}N!d|`@AKh|;@;~@P9Wx<;W:| ./A | ./AW>+A$}0|9H $p A|I.hB|BbH}i.+A(}0|9H (p A|I.hB|BH| .P| @A/}cx;}cx@4 9)K9k@T/;A8/@<>dH|x#x}N!d|`@A|\;H;Z;~A@Hh|;@;~@8: Wx<;W:| ./A| ./AW>+A$~"0|9H $p A|I.hB|BH|.+A(~"0| 9H (pA|I.hB|BH| .~dP|@A|yxx~x8t>tK /A@tdH|x#x}N!d|`@A|\;H;Z;~A@Hp<̀^l`́<;|FP|Bp>|A(8~h8l8p~fx~xK)|cy@tp8^p;H\HȀp<̀^l`ͫ;|FP|Bp|A(8~h8l8p~fx~xK۹|cy@p8^pd^pH$^p;/@@`@᠈\;/;A|/<@8+AhH ;Kp;Khp;|3xI/@ @ `@40@9@9A HI/@|i/A\I+A(}0|9H (pAKh|BbHhI B|BXA 9@H`A9@9)0@At/AHp9`;|3x /|x@Ԁ @/@ `@0@9@9A HI/@ti/AxI+A(}0|9H (pAKh|BbHhI B|BX@ `A9@9)0@A|H09@H(9kK$/ @ @9kK/A/@H ̀^l<`|FP|Bp|A(8~h8l8p~fx~xK|cy@ 4p8 ^pH `\;Kp<̀^l`̓\;Hpp8H 4\ \@8 @@$|\;Kި\ \@p<̀^l`;H ;Ktp<̀^l`ͫ|FP\|Bp|;A(8~h8l8p~fx~xK|cy@ 8ph= a)̀|0PW:|p|I|9.pl|P|p}@IA(8~h8l8p~fx~xK׍|cy@ ؀p8W88^p ^p^ppR48p| ./@|^l<`|FP|Bp|A(8~h8l8p~fx~xK |cy@ Tp8H؀p<̀^l`ͫ|FP\|Bp|;A(8~h8l8p~fx~xKֱ|cy@ph= a)̀|0PW:|p|I|9.pl|P|p}@IA(8~h8l8p~fx~xKQ|cy@p8W88^p ^p^ppR48p| ./@@^l<`|FP|Bp|A(8~h8l8p~fx~xK|cy@p8^pd^p>p) H,;^W:b.h[|`GW88BG4~`|IBKAT| @.Ap<̀^l`|FP|Bp|A(8~h8l8p~fx~xK|cy@Lp8{^pd^p>p) ph8}kpHăHp8@;`8`/@/@ @H$/@ 8BK/ @8BKh<@`B|8P|p`K;^W:b.h[|`GW88BG4~`|IBKA /@| @.Ap<̀^l`̓|FP|Bp|A(8~h8l8p~fx~xKӍ|cy@؀p8=`̐ak̀^pb>pl8|Pp|p|@YA(8~h8l8p~fx~xK1|cy@|p8^pKhp<̀^l`̓H@4p^l<`|FP|Bp|A(8~h8l8p~fx~xKҽ|cy@p8^pbH4p8@;`8`/@/@ @H$/@ 8BK/ @8BKh<@`B|8P|p`Kp<̀^l`|FP|Bp|A(8~h8l8p~fx~xK|cy@4p89 Hp9` `8`|;xGT@>/@ /@i`K/@̑g^`d" K״p<̀^l`̓\;|FP|Bp|A(8~h8l8p~fx~xK1|cy@|p8}<^p"Kdp8p/A/A4/@$FhB|B"9)"K/@& T:}6.^p"T:}7.Kp<̀^l`|FP|Bp|A(8~h8l8p~fx~xK]|cy@p8H܁>p9` IT@>/@ /@ iK/@ܑiKP|}cx~x}sxfx;H/~dA|ex}sx~xH\}cx|~x}sxfx;HM|}y@ Kp<̀^l`|FP|Bp|A(8~h8l8p~fx~xKq|cy@p8}<x^p~x}sx"^pd^p" ^pd8pH|yxKTp8p/A/A4/@$FhB|B"9)"K/@& T:}6.^p"T:}7.Kp<̀^l`̓\;|FP|Bp|A(8~h8l8p~fx~xK]|cy@p8^pp8pKhp8@|3x/@/A8BK/ @8BK؀^l<`̓|FP|Bp|A`8~h8l8p~fx~xK͹|cyA<>hA^l<ff`fg0|IP||Bp|p|PH؀p8 pd8pKӜp|/A/A Hh8p/AH8pFT@>/@/@& T:}6.^p"T:}7.pK8pFT@>/@h/A4/@$FhB|B"9)"H0/@& T:}6.^p"T:}7.pKd& KҌdYxKҀ>hA$l<@`B͑0| P|p|֐~xHh>hA$l<@`B͑0| P|p|֐8`H4>hA$l<@`B͑0| P|p|֐8`!a|}p N |A| P||zx;!@@|#x|+x|3x@}Cx@|~x@p[@D9{8@@(| xI9) @9k@AxA$x}N!@A8`h8!`A|N |ܐ|+x!|yx|#x|3x}Cx|;x|+x@@t;@<x8Ex8@}N!|cy@Dx;I9)A w@8`A(WxK4cA@A8`8!|N |F(P|H|;H@||x!|+x|3x}Cx|#x|;x@}=Kx@|~x@Dxdxx&xxHxK/x@ }N!@A8`h8!`|N |A|(P|#x|@PH@!|+x|zx|3x|;x@ }$KxHT|;x}N!|dx@Ap]@D9}8@@(| xI9) @9k@A|#xA$|#xCxdxH@|dx@8`h8!`A|N |ܐ|0PHP!P@|+x|3x}9Kx|}x|#x|;x}Cx@ }^SxHTx}Cx}N!|~x@AHxDx~xxx(xKE/x@$xxdxHU@|~x@8`x8!p|N (P}|:8@!|#x|;x|zx|3x@|;x/:x@(Z8cx}N!{|PAl;{/@@@\@~ݳx~xA4V@$;;@A]A@8~A;[@8`|Bl@xZ8x}N!|P@ @A{@A`H@@@~ݳx~xA4V@$;;@A]A@8~Ad;[@:lTB:8`H.@DxZ8x}N!|P@ @A{@A\8`x8!p|N |D(P|jx}98@@|;xjl|F88/@t@@@ @|+x|3xA4E@$9)8c @AIA @8cM F|BRl|@@AHp@@@h @|+x|3xA4E@$9)8c @AIA @8cM FTB:|X.|@@A8`N &|/!|3x|}x|#x@ 8`H8}8/~AT|ix|P9`H>Ub:9k/|I.@5d@ }i|]X>TB:}bI.9kB8|xX8!P|N |A|(P}@P!@@|#x|+x|}x|3x|;x@ }(KxH C8}Cx|;xT}N!|hx@A@Ix@4Z@$} Cx9)@@ IA}CxA|N |B}H|`8`N |||x!|#xT|+x|+x}N!@|~x@}N!X8!Px|N |a|{x!|#xT|+x|+x|3x}N!@|~x@$/A|}N!H/A 8h8!`xa|N  @@T|#x8}N 8`N |+y|||x!|#xAD/;@8@8`@0T8x}N!|eyA/;A|+xX8!P|N /|a||x!|+x|#x;@$x}N!/;A@x@8`h8!`a|N (@|a|+x!|#x||x;@$x;}N!@Ah8!`xa|N |||x!|#x;/@<< / AL8@$|x8B/@9)/ AA x;}N!KX8!Px|N ||#x!|}x|#x/@H= ||P/ AP8@$|x8B/@9)/ A@ ||PHx}N!KX8!P|N |cy|B}H|@ N d8`N |#xN 8`N 8`N ||#x!|+x|#x}N!/|ix~;A48@H@(@@ 8BHTc@.|c;AX8!P|N |B!|+x|;xp@4pA<_T >B8<|H8`\8B\HXx}N!|bxA,/@$|Ixx8c8B|Cx|X8!P|N |E!B|+x|lxp @|xN tb|`xTcF>L tT>L pT>L |xN |p!|+x|+xAT>;;x}N!|P8p@|`x|xX8!P|N |t!|+x|+xATF>;t@ AT>;p@ AT>;;x}N!|P8p@|`x|xX8!P|N +|B!|bxA$<_T<8BŒ| .|(8|TH0p8`A$4|#x}N!/8`A8`X8!P|N +|B!|bxA$<_T<8B| .|(8|TH0p8`A$4|#x}N!/8`A8`X8!P|N /|A|zx!|#x|+x;@\|3x@A }HL0xdx}N!|cQ@,x;}N!/;A8`h8!`A|N +|B|ix}H|A$9`h8!`}c[xa|!}p N |A|}x!|#xC|#x|+x}N!]|~x}#|B})/P@xH]]||P8`HՁ} W:cC| X. |iY.]8B]h8!`A|N |a|{x!8|K8|}xH)9@|~x@\{ UB:}b./A8K+ |/||@PTB:|. }b.}+Kx@Ԁ{ 9JAH{ Hٓ h8!`a|N ||yx!8`YH||y8`ACxY89y \<| HE/| @ H | HMxHE8`H;`@|;\ W}:.9 H./AP8`H)|cyA^ >~ C#c\ |. |}. /@;{Axh8!`|N |@&|AA|}x!|#xC|+xd}N!]= |||`PT|:H./@/AH{ A ]}N!/@8=  /|I.]8B]A xHh> /A.i A ]}N!/@@>  ]8B]A  }#KxHm8`H  /| x@8`h8!`aA|}p N |@&|AA|}x!|#xC|+xd|3x.}N!]= |||`PTc:H./@AxHp~AX A]}N!/@4]8B]A 8`H /@8`h8!`aA|}p N |*x |)T+M 8`N +|B|ix}H8`|M +A@8B(jT`ѾTi:TB:})Z|B9)$8BU)@.TB |BJ|bN T@@.|`N +|#x@d8`N $|B}| }+Kx/@8 @@pt`@TbAhI/s@ /sA pbAH/S@@ /S@4 Tb/@$8ߘ8`D8BHXTb/8A pAH pbApA+M 8 @L 8cN 8`N 8 @@8/ @,/@ /@8`/M 8`N |bxcTc@."|cTc@.|cJTc@.|cN 8`N 8DTkF>T`>Ti>d"b8`N D|B}H||Ix/@/@ /@89"@@t`@TkAB/s@ /sA pkAd/S@\ /S@P Tk/@@ /@4 /@(8ߘD8BH`Tk/88A pAH pbApATi>dTcF>"b8`N D|B|||Ix/@/@ /@8@@t`@AB/s}HSx@/sA pkAh/S@`/S@T Tk/@D /@8I/@,8ߘFFFD8BHdBTk/A q@Ap`A q@A@\ nil string (or other) argumentempty string argumentinvalid candidate for an escape characterfail to allocate a memory%s2.1.1fail to decodeEscape CharacterExpression StringOptionsSyntaxGroup Index for Nameunknown syntax.Simple MatchingPOSIX BasicPOSIX ExtendedEmacsGrepGNU RegexJavaPerlRubyUnknownSingle LineMultilineIgnore CaseExtendFind LongestFind Not EmptyNegate Single LineDon't Capture GroupCapture GroupDelimit by WhitespaceNot Begin of LineNot End Of LineFind EmptyReplace With AttributesReplace FontsMerge Attributes illegal unicode characterillegal byte codeOGRegularExpressionNSObjectNSCodingNSCopying/Users/kzys/Desktop/OgreKit_2_1_2/RegularExpression/OGRegularExpressionEnumeratorPrivate.hNSExceptionNSNumberNSStringNSCharacterSetOGPlainStringNSMutableDictionaryNSMutableArrayOGAttributedStringOGRegularExpressionEnumeratorOGReplaceExpressionNSAutoreleasePoolNSInvocationNSAttributedStringNSDictionaryNSArrayNSMutableString_escapeCharacter_expressionString_UTF16ExpressionString_options_syntax_groupIndexForNameDictionary_nameForGroupIndexArray_regexBufferchomp:newlineCharacterInString:replaceNewlineCharactersInString:withCharacter:regularizeString:stringsForOptions:stringForSyntax:syntaxForIntValue:intValueForSyntax:onigurumaVersionversionsetDefaultSyntax:defaultSyntaxsetDefaultEscapeCharacter:defaultEscapeCharacterisValidExpressionString:options:syntax:escapeCharacter:isValidExpressionString:options:isValidExpressionString:regularExpressionWithString:options:syntax:escapeCharacter:regularExpressionWithString:options:regularExpressionWithString:initializesplitString:options:range:limit:splitString:options:range:splitString:options:splitString:namesnumberOfNamesnumberOfGroupsdescriptioncopyWithZone:initWithCoder:encodeWithCoder:replaceOGString:delegate:replaceSelector:contextInfo:options:range:replaceAll:numberOfReplacement:replaceAttributedString:delegate:replaceSelector:contextInfo:options:range:replaceAll:numberOfReplacement:replaceAttributedString:delegate:replaceSelector:contextInfo:options:range:replaceAll:replaceString:delegate:replaceSelector:contextInfo:options:range:replaceAll:numberOfReplacement:replaceString:delegate:replaceSelector:contextInfo:options:range:replaceAll:replaceAllMatchesInOGString:delegate:replaceSelector:contextInfo:options:range:replaceAllMatchesInAttributedString:delegate:replaceSelector:contextInfo:options:range:replaceAllMatchesInAttributedString:delegate:replaceSelector:contextInfo:options:replaceAllMatchesInAttributedString:delegate:replaceSelector:contextInfo:replaceAllMatchesInString:delegate:replaceSelector:contextInfo:options:range:replaceAllMatchesInString:delegate:replaceSelector:contextInfo:options:replaceAllMatchesInString:delegate:replaceSelector:contextInfo:replaceFirstMatchInOGString:delegate:replaceSelector:contextInfo:options:range:replaceFirstMatchInAttributedString:delegate:replaceSelector:contextInfo:options:range:replaceFirstMatchInAttributedString:delegate:replaceSelector:contextInfo:options:replaceFirstMatchInAttributedString:delegate:replaceSelector:contextInfo:replaceFirstMatchInString:delegate:replaceSelector:contextInfo:options:range:replaceFirstMatchInString:delegate:replaceSelector:contextInfo:options:replaceFirstMatchInString:delegate:replaceSelector:contextInfo:replaceOGString:withOGString:options:range:replaceAll:numberOfReplacement:replaceAttributedString:withAttributedString:options:range:replaceAll:numberOfReplacement:replaceString:withString:options:range:replaceAll:numberOfReplacement:replaceAttributedString:withAttributedString:options:range:replaceAll:replaceString:withString:options:range:replaceAll:replaceAllMatchesInAttributedString:withAttributedString:options:range:replaceAllMatchesInAttributedString:withAttributedString:options:replaceAllMatchesInAttributedString:withAttributedString:replaceAllMatchesInString:withString:options:range:replaceAllMatchesInString:withString:options:replaceAllMatchesInString:withString:replaceFirstMatchInAttributedString:withAttributedString:options:range:replaceFirstMatchInAttributedString:withAttributedString:options:replaceFirstMatchInAttributedString:withAttributedString:replaceFirstMatchInString:withString:options:range:replaceFirstMatchInString:withString:options:replaceFirstMatchInString:withString:allMatchesInOGString:options:range:allMatchesInAttributedString:options:range:allMatchesInAttributedString:range:allMatchesInAttributedString:options:allMatchesInAttributedString:allMatchesInString:options:range:allMatchesInString:range:allMatchesInString:options:allMatchesInString:matchEnumeratorInOGString:options:range:matchEnumeratorInAttributedString:options:range:matchEnumeratorInAttributedString:range:matchEnumeratorInAttributedString:options:matchEnumeratorInAttributedString:matchEnumeratorInString:options:range:matchEnumeratorInString:range:matchEnumeratorInString:options:matchEnumeratorInString:matchInOGString:options:range:matchInAttributedString:options:range:matchInAttributedString:options:matchInAttributedString:range:matchInAttributedString:matchInString:options:range:matchInString:options:matchInString:range:matchInString:escapeCharactersyntaxoptionsexpressionStringinitWithString:options:syntax:escapeCharacter:initWithString:options:initWithString:raise:format:numberWithUnsignedInt:stringWithCharacters:length:setObject:forKey:allocinitWithCharacters:length:characterSetWithCharactersInString:retainstringByAppendingString:classautoreleaseinitcopyreleasekindOfCharacter:substringWithRange:delimitByWhitespaceInString:stringWithString:changeEscapeCharacterInOGString:toCharacter:stringlengthzonegetCharacters:range:onigSyntaxTypeForSyntax:initWithCapacity:keyEnumeratornextObjectaddObject:objectForKey:objectEnumeratorunsignedIntValuereplaceObjectAtIndex:withObject:stringWithAttributedString:allocWithZone:initWithOGString:options:range:regularExpression:allObjectsattributedStringinitWithOGString:options:syntax:escapeCharacter:mutableClassogStringBetweenMatchAndLastMatchappendOGString:replaceMatchedOGStringOf:prematchOGStringpostmatchOGStringmethodSignatureForSelector:invocationWithMethodSignature:setTarget:setSelector:setArgument:atIndex:invokegetReturnValue:isKindOfClass:appendString:appendAttributedString:stringWithCString:allowsKeyedCodingencodeObject:forKey:numberWithInt:encodeObject:decodeObjectForKey:decodeObjectintValuedictionaryarrayWithObjects:dictionaryWithObjects:forKeys:allKeysarrayWithCapacity:rangeOfCharacterFromSet:options:range:insertString:atIndex:stringBetweenMatchAndLastMatchpostmatchStringisEqualToString:@"NSString"^SIi@"NSMutableDictionary"@"NSMutableArray"^{re_pattern_buffer=*IIiiiiiIIIii^{?}^{?}I^{?}I^viiiIIi**[256C]^i^iII^{re_pattern_buffer}}@12@0:4@8i12@0:4@8@16@0:4@8i12@12@0:4I8@12@0:4i8i12@0:4i8@8@0:4v12@0:4i8i8@0:4v12@0:4@8c24@0:4@8I12i16@20c16@0:4@8I12c12@0:4@8@24@0:4@8I12i16@20@16@0:4@8I12v8@0:4@28@0:4@8I12{_NSRange=II}16i24@24@0:4@8I12{_NSRange=II}16I8@0:4@12@0:4^{_NSZone=}8@44@0:4@8@12:16@20I24{_NSRange=II}28c36^I40@40@0:4@8@12:16@20I24{_NSRange=II}28c36@36@0:4@8@12:16@20I24{_NSRange=II}28@28@0:4@8@12:16@20I24@24@0:4@8@12:16@20@36@0:4@8@12I16{_NSRange=II}20c28^I32@32@0:4@8@12I16{_NSRange=II}20c28@28@0:4@8@12I16{_NSRange=II}20@20@0:4@8@12I16@16@0:4@8@12@20@0:4@8{_NSRange=II}12(%@)|(%@)Private/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSEvent.hNSScannernameForGroupIndex:groupIndexForName:patternBufferdeallocappendString:hasAttributesOfOGString:scannerWithString:whitespaceCharacterSetisAtEndscanUpToCharactersFromSet:intoString:stringWithFormat:scanCharactersFromSet:intoString:countobjectAtIndex:^{?=IIII}12@0:4i8^{re_pattern_buffer=*IIiiiiiIIIii^{?}^{?}I^{?}I^viiiIIi**[256C]^i^iII^{re_pattern_buffer}}8@0:4OgreEnumeratorRegularExpressionOgreEnumeratorSwappedTargetStringOgreEnumeratorStartOffsetOgreEnumeratorStartLocationOgreEnumeratorTerminalOfLastMatchOgreEnumeratorIsLastMatchEmptyOgreEnumeratorOptionsOgreEnumeratorNumberOfMatchesOGRegularExpressionEnumeratorExceptionfail to create a region(%d, %d)YESNORegular ExpressionTarget StringSearch RangeTerminal of the Last MatchStart Location of the Next SearchWas the Last Match EmptyNumber Of MatchesNSEnumeratorOGRegularExpressionMatch_regex_targetString_UTF16TargetString_lengthOfTargetString_searchRange_searchOptions_terminalOfLastMatch_startLocation_isLastMatchEmpty_numberOfMatchesinitWithRegion:index:enumerator:terminalOfLastMatch:numberWithBool:boolValue_setTerminalOfLastMatch:_setStartLocation:_setIsLastMatchEmpty:_setNumberOfMatches:@"OGRegularExpression"@"NSObject"{_NSRange="location"I"length"I}csearchRangeUTF16TargetStringtargetStringsetRegularExpression:regularExpression{_NSRange=II}8@0:4^S8@0:4v12@0:4I8v12@0:4c8@28@0:4@8I12{_NSRange=II}16@24OGRegularExpressionMatchExceptionOgreMatchRegionOgreMatchEnumeratorOgreMatchTerminalOfLastMatchOgreMatchIndexOfMatchOgreMatchCaptureHistoryfail to memory allocationRange of SubstringsCapture HistoryRegular Expression EnumeratorIndexmultiplex definition name <%@> call/Users/kzys/Desktop/OgreKit_2_1_2/RegularExpression/OGRegularExpressionMatch.mOGRegularExpressionCapture_region_enumerator_indexcaptureHistorynameOfShortestSubstringAfterIndex:nameOfShortestSubstringBeforeIndex:nameOfShortestSubstringindexOfShortestSubstringAfterIndex:indexOfShortestSubstringBeforeIndex:indexOfShortestSubstringnameOfLongestSubstringAfterIndex:nameOfLongestSubstringBeforeIndex:nameOfLongestSubstringindexOfLongestSubstringAfterIndex:indexOfLongestSubstringBeforeIndex:indexOfLongestSubstringnameOfLastMatchedSubstringAfterIndex:nameOfLastMatchedSubstringBeforeIndex:nameOfLastMatchedSubstringindexOfLastMatchedSubstringAfterIndex:indexOfLastMatchedSubstringBeforeIndex:indexOfLastMatchedSubstringnameOfFirstMatchedSubstringAfterIndex:nameOfFirstMatchedSubstringBeforeIndex:nameOfFirstMatchedSubstringindexOfFirstMatchedSubstringAfterIndex:indexOfFirstMatchedSubstringBeforeIndex:indexOfFirstMatchedSubstringnameOfShortestSubstringInRange:indexOfShortestSubstringInRange:nameOfLongestSubstringInRange:indexOfLongestSubstringInRange:nameOfLastMatchedSubstringInRange:indexOfLastMatchedSubstringInRange:nameOfFirstMatchedSubstringInRange:indexOfFirstMatchedSubstringInRange:nameOfSubstringAtIndex:indexOfSubstringNamed:rangeOfSubstringNamed:attributedSubstringNamed:substringNamed:ogSubstringNamed:rangeOfLastMatchSubstringlastMatchAttributedSubstringlastMatchSubstringlastMatchOGSubstringrangeOfStringBetweenMatchAndLastMatchattributedStringBetweenMatchAndLastMatchrangeOfPostmatchStringpostmatchAttributedStringrangeOfPrematchStringprematchAttributedStringprematchStringtargetAttributedStringtargetOGStringattributedSubstringAtIndex:substringAtIndex:ogSubstringAtIndex:rangeOfSubstringAtIndex:matchedAttributedStringmatchedStringmatchedOGStringrangeOfMatchedStringindexarrayattributedSubstringFromRange:initWithTreeNode:index:level:parentNode:match:^{re_registers=ii^i^i^{OnigCaptureTreeNodeStruct}}@"OGRegularExpressionEnumerator"I12@0:4I8@16@0:4{_NSRange=II}8I16@0:4{_NSRange=II}8I12@0:4@8{_NSRange=II}12@0:4@8{_NSRange=II}12@0:4I8^{re_registers=ii^i^i^{OnigCaptureTreeNodeStruct}}8@0:4@24@0:4^{re_registers=ii^i^i^{OnigCaptureTreeNodeStruct}}8I12@16I20OGRegularExpressionCaptureExceptionOgreCaptureIndexOgreCaptureLevelOgreCaptureMatchOgreCaptureParentGroup IndexLevelRangeNumber of Children_captureNode_level_match_parentacceptVisitor:rangematchchildAtIndex:childrennumberOfChildrenlevelgroupNamegroupIndexvisitAtFirstCapture:makeObjectsPerformSelector:withObject:visitAtLastCapture:^{OnigCaptureTreeNodeStruct=iiiii^^{OnigCaptureTreeNodeStruct}}@"OGRegularExpressionMatch"@"OGRegularExpressionCapture"^{OnigCaptureTreeNodeStruct=iiiii^^{OnigCaptureTreeNodeStruct}}8@0:4@28@0:4^{OnigCaptureTreeNodeStruct=iiiii^^{OnigCaptureTreeNodeStruct}}8I12I16@20@24OGReplaceExpressionExceptionOgreReplaceCompiledReplaceStringOgreReplaceCompiledReplaceStringTypeOgreReplaceNameArrayOgreReplaceOptions([^\\]+)|(?:\\x\{(?@[0-9a-fA-F]{1,4})\}){1,%d}|(?:\\(?:([0-9])|(&)|(\+)|(`)|(')|(\-)|(?:g<([0-9]+)>)|(?:g<([_a-zA-Z][_0-9a-zA-Z]*)>)|(t)|(n)|(r)|(\\)|(.?))) undefined replace expression (BUG!)Compiled Replace StringCompiled Replace String TypeNamesReplace Options_compiledReplaceString_compiledReplaceStringType_nameArrayreplaceExpressionWithOGString:options:syntax:escapeCharacter:replaceExpressionWithAttributedString:replaceExpressionWithAttributedString:options:replaceExpressionWithAttributedString:options:syntax:escapeCharacter:replaceExpressionWithString:replaceExpressionWithString:escapeCharacter:replaceExpressionWithString:syntax:escapeCharacter:replaceMatchedAttributedStringOf:replaceMatchedStringOf:initWithAttributedString:initWithAttributedString:options:initWithAttributedString:options:syntax:escapeCharacter:initWithString:escapeCharacter:initWithString:syntax:escapeCharacter:initWithObjects:cStringinitWithString:hasAttributesOfOGString:setAttributesOfOGString:atIndex:appendOGString:changeFont:mergeAttributes:appendOGStringLeaveImprint:appendOGString:changeFont:mergeAttributes:ofOGString:_setCompiledReplaceString:_setCompiledReplaceStringType:_setNameArray:_setOptions:@20@0:4@8i12@16OgreFormatterOptionsOgreFormatterSyntaxOgreFormatterEscapeCharacterOGRegularExpressionFormatterExceptionfail to encode. (cannot encode a user defined syntax)OGRegularExpressionFormatterNSFormattersetSyntax:setOptions:setEscapeCharacter:initWithOptions:syntax:escapeCharacter:getObjectValue:forString:errorDescription:editingStringForObjectValue:attributedStringForObjectValue:withDefaultAttributes:stringForObjectValue:initWithString:attributes:namereasonraise@20@0:4I8i12@16c20@0:4^@8@12^@16OGStringExceptionOgrePlainStringnil string argumentOGStringProtocolOGMutablePlainString_stringstringithString:hasAttributesOfOGString:_setString:#8@0:4OGMutableStringProtocolv16@0:4@8I12v20@0:4@8c12c16v24@0:4@8c12c16@20v16@0:4@8@12OgreAttributedStringOGMutableAttributedString_attrString_setAttributedString:_attributedStringattributesAtIndex:effectiveRange:@"NSAttributedString" NSMutableAttributedStringNSFontManagerNSFont_currentFontFamilyName_currentFontTraits_currentFontWeight_currentFontPointSize_currentAttributes_fontManagersharedFontManagersystemFontSizesystemFontOfSize:familyNametraitsOfFont:weightOfFont:pointSizesetAttributes:range:addAttribute:value:range:attribute:atIndex:effectiveRange:fontWithFamily:traits:weight:size:convertFont:toHaveTrait:f@"NSDictionary"@"NSFontManager"OgreKitAdditionschompreplaceNewlineCharactersWithCharacter:replaceOccurrencesOfRegularExpressionString:withString:options:range:newlineCharactercomponentsSeparatedByRegularExpressionString:rangeOfRegularExpressionString:options:range:rangeOfRegularExpressionString:options:rangeOfRegularExpressionString:setString:I28@0:4@8@12I16{_NSRange=II}20{_NSRange=II}24@0:4@8I12{_NSRange=II}16{_NSRange=II}16@0:4@8I12OgreTextFinderExceptionFind Controller HistoryOgreKit.frameworkOgreTextFinderFind Menu not found in %@.nibFindOgreTextFinderLocalizableOgreAdvancedFindPanelFind AllReplace AllHighlightNSBundleNSUserDefaultsNSNotificationCenterOgreTextViewAdapterNSTextViewNSMenuItemNSMenuOgreTextFindResultOgreFindThreadOgreTextFindProgressSheetOgreFindAllThreadOgreReplaceAndFindThreadOgreReplaceAllThreadOgreUnhighlightThreadOgreHighlightThreadfindPanelControllerfindMenu_targetToFindIn_adapterClassForTarget_busyTargetArray_history_saved_shouldHackFindMenu_useStylesInFindPanel_targetClassArray_adapterClassArraysharedTextFinderogreKitBundlehasAdapterClassForObject:adapterClassForTargetToFindInsetAdapterClassForTargetToFindIn:registeringAdapterClass:forTargetClass:adapterForTarget:alertSheetOnTarget:didEndThread:jumpToSelectionisSelectionEmptyselectedOGStringselectedAttributedStringselectedStringhightlight:color:options:inSelection:unhightlightreplaceAll:withOGString:options:inSelection:replaceAll:withAttributedString:options:inSelection:replaceAll:withString:options:inSelection:replaceAndFind:withOGString:options:replacingOnly:wrap:replaceAndFind:withAttributedString:options:replacingOnly:wrap:replaceAndFind:withString:options:replacingOnly:wrap:replace:withOGString:options:replace:withAttributedString:options:replace:withString:options:findAll:color:options:inSelection:find:options:fromTop:forward:wrap:makeTargetFree:makeTargetBusy:isBusyTarget:targetToFindInsetTargetToFindIn:setFindPanelController:findPanelNibNameshowFindPanel:historyappWillTerminate:findMenuItemNamed:startAt:hackFindMenuappDidFinishLaunching:useStylesInFindPanelsetUseStylesInFindPanel:setShouldHackFindMenu:allFrameworksreverseObjectEnumeratorbundlePathlastPathComponentstandardUserDefaultsdictionaryForKey:defaultCenteraddObserver:selector:name:object:loadNibNamed:owner:removeObserver:name:object:ogreKitWillHackFindMenu:sendAction:to:from:ogreKitShouldUseStylesInFindPanel:localizedStringForKey:value:table:setTitle:menuZonesetSubmenu:mainMenumenuindexOfItem:insertItem:atIndex:removeItem:updatearrayWithObject:itemWithTitle:numberOfItemsitemAtIndex:hasSubmenusubmenuremoveObjectAtIndex:synchronizeremoveObserver:tellMeTargetToFindIn:mainWindowfirstRespondercontainsObject:removeObject:textFindResultWithTarget:thread:initWithComponent:setWrap:setBackward:setFromTop:setInSelection:setAsynchronous:detachresultsetType:setAlertSheet:exception:windowinitWithWindow:title:didEndSelector:toTarget:withObject:setHighlightColor:setDidEndSelector:toTarget:setProgressDelegate:setReplaceExpression:setReplacingOnly:selectedLeafwillProcessFinding:ogStringselectedRangefinalizeFindingalertIfErrorOccurredmakeKeyAndOrderFront:didEndSelectorForFindPanelControllerperformSelector:withObject:progressDelegatesetReleaseWhenOKButtonClicked:close:ogreAdapterrespondsToSelector:initWithTarget:@"OgreFindPanelController"@"NSMenu"@#v12@0:4#8v16@0:4#8#12c8@0:4@24@0:4@8@12I16c20@28@0:4@8@12I16c20c24@28@0:4@8I12c16c20c24%d???%d/%@Illegal progress messageOgreTextFindThreadOgreTextFindVisitorOgreTextFindRootNSDate_targetAdapter_leafProcessing_enumeratorProcessing_enumeratorStack_branchStack_rootAdapter_repex_highlightColor_inSelection_asynchronous_didEndSelector_didEndTarget_progressDelegate_shouldFinish_terminated_exceptionRaised_textFindResult_numberOfDoneLeaves_numberOfTotalLeaves_processTime_metronomeendGraftingbeginGraftingToBranch:addResultLeaf:_setLeafProcessing:popBranchtopBranchpushBranch:targetAdapterrootAdapterpopEnumeratortopEnumeratorpushEnumerator:donePercentageprogressPercentageincrementNumberOfMatchesnumberOfMatchesdoneMessageprogressMessagedidProcessFindingInBranch:didProcessFindingInLeaf:shouldContinueFindingInLeaf:willProcessFindingInLeaf:willProcessFindingInBranch:processTimeisTerminatedinSelectionhighlightColorreplaceExpressionfinishterminate:terminateexceptionRaised:finishingUp:visitBranch:visitLeaf:didProcessFindingAllwillProcessFindingAllfinalizeFindingAllsetParent:setIndex:lastObjecttargetinitWithTarget:thread:numberOfDescendantsInSelection:timeIntervalSinceNowsetProgress:message:setDonePerTotalMessage:performSelector:withObject:afterDelay:didProcessFinding:componentEnumeratorInSelection:done:message:setNumberOfMatches:setCancelSelector:toTarget:withObject:didEndUnknownTextFindThread:removeLastObjectaddLeaf:findResultBranchWithThread:@"OgreTextFindLeaf"@"NSEnumerator"@"OgreTextFindRoot"@"OGReplaceExpression"@"NSColor":@"OgreTextFindResult"@"NSDate"d8@0:4:8@0:4v16@0:4:8@12%d string found.%d strings found.(%dsec remaining)Not found. (%.3fsec)Not found. (canceled, %.3fsec)%d string found. (%.3fsec)%d strings found. (%.3fsec)%d string found. (canceled, %.3fsec)%d strings found. (canceled, %.3fsec)lastMatchmatchEnumeratorsearchLengthprogressMessagePluralremainingTimeMesssagedidEndFindAll:findResultLeafWithThread:addMatch:endAdditionsetHighlightColor:regularExpression:stringByAppendingFormat:@"OgreFindResultBranch"%d string replaced.%d strings replaced.%d string replaced. (%.3fsec)%d strings replaced. (%.3fsec)%d string replaced. (canceled, %.3fsec)%d strings replaced. (canceled, %.3fsec)matchArrayrepexaNumberOfReplacesaNumberOfMatchesreplacedStringdidEndReplaceAll:isEditablebeginRegisteringUndoWithCapacity:beginEditingreplaceCharactersInRange:withOGString:endEditingendRegisteringUndo@"NSArray"%d string highlighted.%d strings highlighted.%d string highlighted. (%.3fsec)%d strings highlighted. (%.3fsec)%d string highlighted. (canceled, %.3fsec)%d strings highlighted. (canceled, %.3fsec)NSColorhighlightColorArraydidEndHighlight:isHighlightablecolorUsingColorSpaceName:getHue:saturation:brightness:alpha:colorWithCalibratedHue:saturation:brightness:alpha:unhighlighthighlightCharactersInRange:color:didEndUnhighlight:_wrap_backward_fromTop_lhsPhasefromTopbackwardwrapshouldContinueProcessFindingFirstLeaf:preprocessFindingInFirstLeaf:_preprocessFindingInFirstLeaf:shouldPreprocessFindingInFirstLeafdidEndFind:setReversed:moveHomePositionbuildStackForSelectedLeafInThread:isFirstLeafisReversedisTerminalsetSelectedRange:setTerminal:_replacingOnlyreplacingOnlydidEndReplaceAndFind:OgreTextFindBranchNSIndexSetOgreFindResultRoot_componentparentselectedIndexeschildAtIndex:inSelection:numberOfChildrenInSelection:indexSetWithIndex:@12@0:4c8@16@0:4I8c12I12@0:4c8OgreTextFindComponent_isParentRetained_isTerminal_isReversedsetParentNoRetain:isBranchisLeafoutline@"OgreTextFindBranch"OgreTextFindLeaf_isFirstLeafsetFirstLeaf:setOGString:isSelectedv20@0:4{_NSRange=II}8@16v16@0:4{_NSRange=II}8OgreTextFindComponentEnumerator_branch_indexes_count_nextIndex_terminalIndexsetStartIndex:setTerminalIndex:initWithBranch:inSelection:getIndexes:maxCount:inIndexRange:^I@16@0:4@8c12OgreTextFindReverseComponentEnumeratorOgreTextFindTargetAdapterOgreTextViewPlainAdapterOgreTextViewRichAdapterOgreTextViewGraphicAllowedAdapterisRichTextimportsGraphicsOgreTextViewUndoerOgreTextViewOgreTextViewFindResult_textView_textStorage_undoManager_storageLocked_allowsUndo_undoertextStorageaddRange:attributedString:replaceCharactersInRange:withString:allowsUndoundoManagerbeginUndoGroupingprepareWithInvocationTarget:undoTextView:jumpToSelection:invocationTarget:setActionName:endUndoGroupingogreDidEndEditinglayoutManagerremoveTemporaryAttribute:forCharacterRange:dictionaryWithObject:forKey:setTemporaryAttributes:forCharacterRange:classNameinitWithTextView:scrollRangeToVisible:@"NSTextView"@"NSTextStorage"@"NSUndoManager"@"OgreTextViewUndoer"setAttributedString:removeAttribute:range:replaceCharactersInRange:withAttributedString:_rangeArray_attributedStringArray_tail^{_NSRange=II}v20@0:4@8c12@16OgreTableViewAdapterOgreTableColumnAdapterOgreTableViewFindResult_tableViewnumberOfColumnsnumberOfRowsogreSelectedColumnogreSelectedRowreloadDatanumberOfSelectedColumnsselectedColumnIndexestableColumnsinitWithTableColumn:indexSetWithIndexesInRange:initWithTableView:selectRowIndexes:byExtendingSelection:ogreSetSelectedColumn:ogreSetSelectedRow:ogreSetSelectedRange:@"OgreTableView"OgreTableColumnOgreTableCellAdapterOgreTableColumnFindResult_tableColumnheaderCellstringValuetableViewnumberOfSelectedRowsselectedRowIndexesinitWithTableColumn:row:@"OgreTableColumn"OgreTableCellFindResult_rowIndexdataCelltypeogreObjectValueForRow:setObjectValue:setStringValue:objectValueogreSetObjectValue:forRow:dataCellForRow:ogreSelectedRangeidentifiercolumnWithIdentifier:allowsColumnSelectionselectedColumnscrollColumnToVisible:selectedRowscrollRowToVisible:OgreOutlineViewAdapterOgreOutlineColumnAdapterOgreOutlineViewFindResult_outlineViewogrePathComponentsOfSelectedIteminitWithOutlineColumn:initWithOutlineView:ogreSetSelectedItem:@"OgreOutlineView"OgreOutlineColumnOgreOutlineItemAdapterOgreOutlineColumnFindResult_outlineColumnexpandItemEnclosingItem:ogreNumberOfChildrenOfItem:ogreChild:ofItem:initWithOutlineColumn:item:setLevel:@"OgreOutlineColumn"OgreOutlineCellAdapterOgreOutlineItemFindResult_itemoutlineColumnogreObjectValueForItem:expandItem:OgreOutlineCellFindResultogreSetObjectValue:forItem:outlineTableColumnrowForItem:Missing....Found in %d items.Found in %d item.Untitled ObjectNSBrowserCellNSOutlineViewNSTextFieldCell_resultType_target_resultTree_exception_alertSheet_title_maxMatchedStringLength_maxLeftMargin_delegate_highlightColorArraytitlerowHeightnameCelloutlineView:willDisplayCell:forTableColumn:item:messageOfItemsFound:messageOfStringsFound:didUpdatedelegatesetDelegate:missingStringhighlightedStringInRange:ofString:setMaximumMatchedStringLength:maximumMatchedStringLengthsetMaximumLeftMargin:maximumLeftMarginfindStringisSuccessshowErrorAlert:message:setTextFindResult:addComponent:rangeValueredColorlineRangeForRange:grayColordidUpdateTextFindResult:darkGrayColorsetImage:setLeaf:setEditable:@"NSException"f8@0:4v24@0:4@8@12@16@20RootOgreFindResultBranchcomponetEnumeratorInSelection:selectMatchedStringshowMatchedStringtextFindResultOgreFindResultLeafMatch LineMatch RangeLineCountOgreFindResultCorrespondingToTextFindLeafNSValueOgreTextViewMatchFindResult_text_textLength_searchLineRangeLocation_line_lineRange_lineOfMatchedStrings_matchRangeArray_childArray_cacheIndex_cacheAbsoluteLocation_updateCacheIndex_updateCacheAbsoluteLocationupdateSubranges:count:oldRange:newRange:origin:leftAlign:updateOldRange:newRange:textStorageWillProcessEditing:windowWillClose:selectMatchedStringAtIndex:showMatchedStringAtIndex:matchedStringAtIndex:lineOfMatchedStringAtIndex:valueWithRange:objecteditedRangechangeInLengtheditedMaskv40@0:4@8I12{_NSRange=II}16{_NSRange=II}24I32c36v24@0:4{_NSRange=II}8{_NSRange=II}16c12@0:4I8_componentstargetIsMissingmakeObjectsPerformSelector:_flattenedComponentsselectColumnIndexes:byExtendingSelection:OgreTableCellMatchFindResultlightGrayColorreplaceFindResult:withFindResultsFromArray:mergeFindResult:_simplifiedComponents_outlineDelegateLeafogreIsItemExpandable:subarrayWithRange:replaceObjectsInRange:withObjectsFromArray:indexOfObject:@"OgreOutlineCellMatchFindResult"OgreOutlineCellMatchFindResult_matchComponentsnameOfMatchedStringAtIndex:datavalueOgreView_observableControllerForDataBinding_keyPathForDataBinding_observableControllerForValueBinding_keyPathForValueBindingunbind:bind:toObject:withKeyPath:options:RTFDFromRange:RTFFromRange:setValue:forKeyPath:OgreTableViewNSTableView_ogreSelectedColumn_ogreSelectedRow_ogreSelectedRangeogreSelectionDidChange:awakeFromNib.NSTableColumn_ogreObservableController_ogreControllerKeyOfValueBinding_ogreModelKeyPathOfValueBindingogreNumberOfRowscomponentsSeparatedByString:valueForKeyPath:dataSourcenumberOfRowsInTableView:tableView:objectValueForTableColumn:row:tableView:setObjectValue:forTableColumn:row:@"NSMutableString"v16@0:4@8i12OgreOutlineView_ogreSelectedItem_ogrePathComponentsitemAtRow:levelForItem:levelForRow:insertObject:atIndex:outlineView:objectValueForTableColumn:byItem:outlineView:setObjectValue:forTableColumn:byItem:outlineView:numberOfChildrenOfItem:outlineView:child:ofItem:outlineView:isItemExpandable:@16@0:4i8@12CancelOKOgreTextFindProgressDelegateprogressWindowtitleTextFieldprogressBarprogressTextFielddonePerTotalTextFieldbutton_shouldRelease_parentWindow_cancelSelector_cancelTarget_cancelArgument_didEndArgumentautoclose:cancel:sheetDidEnd:returnCode:contextInfo:beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:setUsesThreadedAnimation:startAnimation:closeendSheet:returnCode:isActiveflushWindowsetIndeterminate:setDoubleValue:stopAnimation:setKeyEquivalent:setKeyEquivalentModifierMask:setHidden:@"NSWindow"@"NSTextField"@"NSProgressIndicator"@"NSButton"v20@0:4d8@16v20@0:4:8@12@16v20@0:4@8i12^v16@28@0:4@8@12:16@20@24OgreFindResultWindowLive UpdateFound StringFind Result for "%@"Find String: %@OgreFindResultWindowControllerOgreAttachableWindowMediatorgrepOutlineViewliveUpdateCheckBoxfindStringFieldmessageField_liveUpdate_attachedWindowMediatorupdateLiveUpdate:outlineViewSelectionDidChange:grepOutlineViewDoubleClickedwindowWillResize:toSize:windowDidMove:windowWillMove:showsetupFindResultViewinitWithTextFindResult:liveUpdate:sharedMediatorsetState:tableColumnWithIdentifier:setDataCell:setRowHeight:expandItem:expandChildren:setDoubleAction:addWindowsItem:title:filename:changeWindowsItem:title:filename:valueForKey:clickedRowstate@"NSOutlineView"@"OgreAttachableWindowMediator"@20@0:4@8@12@16i16@0:4@8@12c16@0:4@8@12{_NSSize=ff}20@0:4@8{_NSSize=ff}12Find PanelOgreFindPanelControllerNSRespondertextFinderfindPanelsetFindPanel:setTextFinder:setFrameAutosaveName:setFrameUsingName:orderOut:@"OgreTextFinder"@"NSPanel"OgreAdvancedFindPanelControllerExceptionAFPC Find HistoryAFPC Replace HistoryAFPC OptionsAFPC SyntaxAFPC Escape Character TagAFPC Highlight ColorAFPC OriginAFPC ScopeAFPC WrapAFPC Close Process Sheet When DoneAFPC Maximum Number of Find HistoryAFPC Maximum Number of Replace HistoryAFPC Enable Style OptionsAFPC Open Progress SheetAFPC Attributed Find HistoryAFPC Attributed Replace HistoryClearOgreAPFCLocalizableYesNoDo you really want to clear find/replace histories?¥Invalid Regular ExpressionMore OptionsLess OptionsOgreAdvancedFindPanelControllerOgreAFPCEscapeCharacterFormatterNSUnarchiverNSArchiverNSPasteboardfindTextViewreplaceTextViewmoreOptionsDrawerescapeCharacterPopUpButtonsyntaxPopUpButtonhighlightColorWellmaxNumOfFindHistoryTextFieldmaxNumOfReplaceHistoryTextFieldfindReplaceTextBoxstyleOptionsBoxtoggleStyleOptionsButton_findHistory_replaceHistoryfindPopUpButtonreplacePopUpButtonsingleLineOptionmultilineOptionignoreCaseOptionextendOptionfindLongestOptionfindNotEmptyOptionfindEmptyOptionnegateSingleLineOptioncaptureGroupOptiondontCaptureGroupOptiondelimitByWhitespaceOptionnotBeginOfLineOptionnotEndOfLineOptionreplaceWithStylesOptionreplaceFontsOptionmergeStylesOptionregularExpressionsOptionwrapSearchOptionopenSheetOptioncloseWhenDoneOptionatTopOriginOptioninSelectionScopeOption_isAlertSheetOpen_escapeCharacterFormatterfindNextButtonmoreOptionsButton_findResultWindowController_altKeyDown_tmpInSelectionwindowDidResignKey:textView:doCommandBySelector:textView:shouldChangeTextInRange:replacementString:setInSelectionScopeOption:setAtTopOriginOption:setCloseWhenDoneOption:setOpenSheetOption:setWrapSearchOption:setRegularExpressionsOption:setMergeStylesOption:setReplaceFontsOption:setReplaceWithStylesOption:setNotEndOfLineOption:setNotBeginOfLineOption:setDelimitByWhitespaceOption:setDontCaptureGroupOption:setCaptureGroupOption:setNegateSingleLineOption:setFindEmptyOption:setFindNotEmptyOption:setFindLongestOption:setExtendOption:setIgnoreCaseOption:setMultilineOption:setSingleLineOption:findPanelDidRemoveChildWindow:findPanelDidAddChildWindow:findPanelFlagsChanged:loadFindStringToPasteboardloadFindStringFromPasteboarddrawerWillOpen:drawerWillClose:clearReplaceStringStyles:clearFindStringStyles:useSelectionForReplace:useSelectionForFind:jumpToSelection:findSelectedText:findAll:unhighlight:highlight:replaceAll:replaceAndFind:replace:findPrevious:findNextStrategyfindNextAndOrderOut:findNext:sheetDidDismiss:returnCode:contextInfo:alertIfInvalidRegexupdateMaxNumOfReplaceHistory:updateMaxNumOfFindHistory:updateSyntax:updateOptions:updateEscapeCharacter:toggleStyleOptions:isWrapsetStartFromCursorisStartFromTopavoidEmptySelectionshouldEquateYenWithBackslashundoableReplaceCharactersInRange:withAttributedString:inTarget:setReplaceString:setFindString:selectReplaceHistory:selectFindHistory:clearFindPeplaceHistoriesSheetDidEnd:returnCode:contextInfo:clearFindReplaceHistories:addReplaceHistory:addFindHistory:restoreHistory:indexForSyntax:syntaxForIndex:setTag:initWithTitle:addItem:setMenu:arrayWithArray:getLineStart:end:contentsEnd:forRange:setAttributedTitle:setAction:initWithRTFD:documentAttributes:selectItemAtIndex:tagunarchiveObjectWithData:setColor:setIntValue:RTFDFromRange:documentAttributes:selectedItemcolorarchivedDataWithRootObject:removeItemAtIndex:isEqualToAttributedString:stringWithUTF8String:framesetFrameSize:displaymakeFirstResponder:setFrame:display:animate:addChildWindow:ordered:pasteboardWithName:stringForType:declareTypes:owner:setString:forType:insertNewline:performClick:insertTab:nextKeyView@"NSDrawer"@"NSPopUpButton"@"NSColorWell"@"NSView"@"OgreAFPCEscapeCharacterFormatter"@"OgreFindResultWindowController"c16@0:4@8:12c24@0:4@8{_NSRange=II}12@20v24@0:4{_NSRange=II}8@16@20i12@0:4I8\\_backslashRegex_yenRegexequateYenWithBackslashAttributed:contextInfo:equateYenWithBackslash:contextInfo:equateInAttributedString:equateInString:OgreAttachableWindowAcceptorisAttachableAcceptorEdge:toAcceptee:removeChildWindow:flagsChanged:modifierFlagschildWindowsc16@0:4i8@12OgreAFPCOptionButtonNSButtonOgreAttachableWindowAccepteeNSPanelOgreAttachableWindowAccepteeProtocol_dragging_resizing_diffisAttachableAccepteeEdge:toAcceptor:miniaturize:setDifference:differencesetResizing:resizingsetDragging:draggingparentWindow{_NSPoint="x"f"y"f}v16@0:4{_NSPoint=ff}8{_NSPoint=ff}8@0:4/Users/kzys/Desktop/OgreKit_2_1_2/FindPanel/Controllers/OgreAttachableWindow/OgreAttachableWindowMediator.m_acceptors_tolerance_processingattachAcceptee:toAcceptor:withAccepteeEdge:gluingStrengthBetweenAcceptee:andAcceptor:withAccepteeEdge:attachAcceptee:removeAcceptor:addAcceptor:setTolerance:toleranceisVisiblesetFrameOrigin:minSizemaxSizev20@0:4@8@12i16f20@0:4@8@12^i16v12@0:4f8OgreAttachableWindowAcceptorProtocoldidDetachWindow:didAttachWindow:UTF-16BEcharacter class has '%s' without escaperegular expression has '%s' without escape[]alnumalphablankcntrldigitgraphlowerprintpunctspaceupperxdigitascii:]AlnumAlphaBlankCntrlDigitGraphLowerPrintPunctSpaceUpperXDigitASCII-?*+??*?+?+ and ??+? and ?redundant nested repeat operatornested repeat operator %s and %s was replaced with '%s'mismatchno support in this configurationmatch-stack limit overundefined type (bug)internal parser error (bug)stack error (bug)undefined bytecode (bug)unexpected bytecode (bug)default multibyte-encoding is not settedcan't convert to wide-char on specified multibyte-encodinginvalid argumentend pattern at left braceend pattern at left bracketempty char-classpremature end of char-classend pattern at escapeend pattern at metaend pattern at controlillegal meta-code syntaxillegal control-code syntaxchar-class value at end of rangechar-class value at start of rangeunmatched range specifier in char-classtarget of repeat operator is not specifiedtarget of repeat operator is invalidnested repeat operatorunmatched close parenthesisend pattern with unmatched parenthesisend pattern in groupundefined group optioninvalid POSIX bracket typeinvalid pattern in look-behindinvalid repeat range {lower,upper}too big numbertoo big number for repeat rangeupper is smaller than lower in repeat rangeempty range in char classmismatch multibyte code length in char-class rangetoo many multibyte code ranges are specifiedtoo short multibyte code stringtoo big backref numberinvalid backref number/namenumbered backref/call is not allowed. (use name)too big wide-char valuetoo long wide-char valueinvalid wide-char valuegroup name is emptyinvalid group name <%n>invalid char in group name <%n>undefined name <%n> referenceundefined group <%n> referencemultiplex defined name <%n>multiplex definition name <%n> callnever ending recursiongroup number is too big for capture historyinvalid character property name {%n}not supported encoding combinationover thread pass limit countundefined error code: /\%03o%d.%d.%dOniguruma %d.%d.%d : Copyright (C) 2002-2005 K.KosakoUS-ASCIIISO-8859-1UTF-16LEUTF-32BEUTF-32LE @ @AA C0@@`@?>Ey0:?@bMC0   M}od[SMGC?;8520-+*(&%$"!  :]  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~         " " """                  "!!!!!!!!!!!!!!!8888888888!!!!!!!<<<<<<44444444444444444444!!!!1!88888800000000000000000000!!!!   !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZzaAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZSSss         """""                  "!!!!!!!!!!!!!!!8888888888!!!!!!!<<<<<<44444444444444444444!!!!1!88888800000000000000000000!!!! 09AZaz6PW]ozz1VYYa!:@X`inJMO  9 < M P T X c f o       ( * 0 2 3 5 6 8 9 < < > B G H K M Y \ ^ ^ f t       ( * 0 2 3 5 9 < C G H K M V W \ ] _ a f o q q       ( * 3 5 9 > D F H J M U V ` a f o       ( * 9 > C F H J M W W ` a f o :@NPY )557799>GIjq!#')*,269@IPYY_FHHJMPVXXZ]` FHZiqlov  4@S`lnprs   w +0;Fmptk EHMPWYY[[]]_} q q   !!!!! !!!!!!$!$!&!&!(!(!*!-!/!1!3!9!=!?!E!I000*0/01050;0<0A00000000011,11111114MNף-0j(*68<>>@ACDF=P #ptv!:AZf  &(:<=?MP]0I 578<<??eimr{тхыѪѭTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֣֨46NPnp׈׊רתAZaz6PW]ozz1VYYa!:@XnJMO  9 < M P T X c       ( * 0 2 3 5 6 8 9 < < > B G H K M Y \ ^ ^ p t       ( * 0 2 3 5 9 < C G H K M V W \ ] _ a q q       ( * 3 5 9 > D F H J M U V ` a       ( * 9 > C F H J M W W ` a :@N557799>GIjq!#')*,269PYY_FHHJMPVXXZ]` FHZlov  4@S`lnprs   w +0;Pmptk EHMPWYY[[]]_} q q   !!!!! !!!!!!$!$!&!&!(!(!*!-!/!1!3!9!=!?!E!I000*0/01050;0<0A00000000011,11111114MNף-0j(*68<>>@ACDF=P #ptv!:AZf  &(:<=?MP]0I 578<<??eimr{тхыѪѭTVԜԞԟԢԢԥԦԩԬԮԹԻԻԽ  9;>@DFFJPR֣֨46NPnp׈׊רת  / / _ _00  * . ` c j osz 09`i f o f o f o f o f oPY )@IiqFO!~6PW]otuzz~~1VY_a !:@X` JMO  9 < M P T X p       ( * 0 2 3 5 6 8 9 < < > B G H K M Y \ ^ ^ f t       ( * 0 2 3 5 9 < C G H K M V W \ ] _ a f q       ( * 3 5 9 > D F H J M U V ` a f o       ( * 9 > C F H J M W W ` a f o :?[GIjq!#')*,269@YY_FHHJMPVXXZ]` FHZa|v  6@S`lnprs  w +0;@@Dmptk EHMPWYY[[]]_} ' * . 0 T W W ` c j q t !!;!=!K!S!!#$$&$@$J$`&&&}&&&&'''' ' ''')'K'M'M'O'R'V'V'X'^'a''''''''+ ....////00?0A00011,11111122 2C2P2}223MMף-0j68<>>@ACDF?P #0RTfhkptv  &(:<=?MP]