Adding support for domains in SpecialPasswordReset.php.
[lhc/web/wiklou.git] / includes / specials / SpecialVersion.php
index 889413e..4651fe6 100644 (file)
  * @ingroup SpecialPage
  */
 class SpecialVersion extends SpecialPage {
-       
+
        protected $firstExtOpened = false;
 
        protected static $extensionTypes = false;
-       
+
        protected static $viewvcUrls = array(
                'svn+ssh://svn.wikimedia.org/svnroot/mediawiki' => 'http://svn.wikimedia.org/viewvc/mediawiki',
                'http://svn.wikimedia.org/svnroot/mediawiki' => 'http://svn.wikimedia.org/viewvc/mediawiki',
-               # Doesn't work at the time of writing but maybe some day: 
+               # Doesn't work at the time of writing but maybe some day:
                'https://svn.wikimedia.org/viewvc/mediawiki' => 'http://svn.wikimedia.org/viewvc/mediawiki',
        );
 
@@ -49,27 +49,25 @@ class SpecialVersion extends SpecialPage {
         * main()
         */
        public function execute( $par ) {
-               global $wgOut, $wgSpecialVersionShowHooks, $wgContLang, $wgRequest;
-               
+               global $wgSpecialVersionShowHooks;
+
                $this->setHeaders();
                $this->outputHeader();
-               $wgOut->allowClickjacking();
+               $out = $this->getOutput();
+               $out->allowClickjacking();
 
-               $wgOut->addHTML( Xml::openElement( 'div',
-                       array( 'dir' => $wgContLang->getDir() ) ) );
-               $text = 
+               $text =
                        $this->getMediaWikiCredits() .
                        $this->softwareInformation() .
                        $this->getExtensionCredits();
                if ( $wgSpecialVersionShowHooks ) {
                        $text .= $this->getWgHooks();
                }
-               
-               $wgOut->addWikiText( $text );
-               $wgOut->addHTML( $this->IPInfo() );
-               $wgOut->addHTML( '</div>' );
 
-               if ( $wgRequest->getVal( 'easteregg' ) ) {
+               $out->addWikiText( $text );
+               $out->addHTML( $this->IPInfo() );
+
+               if ( $this->getRequest()->getVal( 'easteregg' ) ) {
                        if ( $this->showEasterEgg() ) {
                                // TODO: put something interesting here
                        }
@@ -78,7 +76,7 @@ class SpecialVersion extends SpecialPage {
 
        /**
         * Returns wiki text showing the license information.
-        * 
+        *
         * @return string
         */
        private static function getMediaWikiCredits() {
@@ -108,7 +106,8 @@ class SpecialVersion extends SpecialPage {
                        'Niklas Laxström', 'Domas Mituzas', 'Rob Church', 'Yuri Astrakhan',
                        'Aryeh Gregor', 'Aaron Schulz', 'Andrew Garrett', 'Raimond Spekking',
                        'Alexandre Emsenhuber', 'Siebrand Mazeland', 'Chad Horohoe',
-                       'Roan Kattouw',
+                       'Roan Kattouw', 'Trevor Parscal', 'Bryan Tong Minh', 'Sam Reed',
+                       'Victor Vasiliev', 'Rotem Liss', 'Platonides', 'Ashar Voultoiz',
                        wfMsg( 'version-poweredby-others' )
                );
 
@@ -118,7 +117,7 @@ class SpecialVersion extends SpecialPage {
 
        /**
         * Returns wiki text showing the third party software versions (apache, php, mysql).
-        * 
+        *
         * @return string
         */
        static function softwareInformation() {
@@ -141,14 +140,14 @@ class SpecialVersion extends SpecialPage {
                                        <th>" . wfMsg( 'version-software-product' ) . "</th>
                                        <th>" . wfMsg( 'version-software-version' ) . "</th>
                                </tr>\n";
-                          
+
                foreach( $software as $name => $version ) {
                        $out .= "<tr>
                                        <td>" . $name . "</td>
-                                       <td>" . $version . "</td>
+                                       <td class=\"ltr\">" . $version . "</td>
                                </tr>\n";
                }
-               
+
                return $out . Xml::closeElement( 'table' );
        }
 
@@ -168,8 +167,8 @@ class SpecialVersion extends SpecialPage {
                        $version = "$wgVersion (r{$info['checkout-rev']})";
                } else {
                        $version = $wgVersion . ' ' .
-                               wfMsg( 
-                                       'version-svn-revision', 
+                               wfMsg(
+                                       'version-svn-revision',
                                        isset( $info['directory-rev'] ) ? $info['directory-rev'] : '',
                                        $info['checkout-rev']
                                );
@@ -178,7 +177,7 @@ class SpecialVersion extends SpecialPage {
                wfProfileOut( __METHOD__ );
                return $version;
        }
-       
+
        /**
         * Return a wikitext-formatted string of the MediaWiki version with a link to
         * the SVN revision if available.
@@ -188,16 +187,16 @@ class SpecialVersion extends SpecialPage {
        public static function getVersionLinked() {
                global $wgVersion, $IP;
                wfProfileIn( __METHOD__ );
-               
+
                $info = self::getSvnInfo( $IP );
-               
+
                if ( isset( $info['checkout-rev'] ) ) {
                        $linkText = wfMsg(
                                'version-svn-revision',
                                isset( $info['directory-rev'] ) ? $info['directory-rev'] : '',
                                $info['checkout-rev']
                        );
-                       
+
                        if ( isset( $info['viewvc-url'] ) ) {
                                $version = "$wgVersion [{$info['viewvc-url']} $linkText]";
                        } else {
@@ -206,7 +205,7 @@ class SpecialVersion extends SpecialPage {
                } else {
                        $version = $wgVersion;
                }
-               
+
                wfProfileOut( __METHOD__ );
                return $version;
        }
@@ -214,13 +213,13 @@ class SpecialVersion extends SpecialPage {
        /**
         * Returns an array with the base extension types.
         * Type is stored as array key, the message as array value.
-        * 
+        *
         * TODO: ideally this would return all extension types, including
         * those added by SpecialVersionExtensionTypes. This is not possible
         * since this hook is passing along $this though.
-        * 
+        *
         * @since 1.17
-        * 
+        *
         * @return array
         */
        public static function getExtensionTypes() {
@@ -232,43 +231,44 @@ class SpecialVersion extends SpecialPage {
                                'media' => wfMsg( 'version-mediahandlers' ),
                                'antispam' => wfMsg( 'version-antispam' ),
                                'skin' => wfMsg( 'version-skins' ),
+                               'api' => wfMsg( 'version-api' ),
                                'other' => wfMsg( 'version-other' ),
                        );
-                       
+
                        wfRunHooks( 'ExtensionTypes', array( &self::$extensionTypes ) );
                }
-               
+
                return self::$extensionTypes;
        }
-       
+
        /**
         * Returns the internationalized name for an extension type.
-        * 
+        *
         * @since 1.17
-        * 
+        *
         * @param $type String
-        * 
+        *
         * @return string
         */
        public static function getExtensionTypeName( $type ) {
                $types = self::getExtensionTypes();
                return isset( $types[$type] ) ? $types[$type] : $types['other'];
        }
-       
+
        /**
         * Generate wikitext showing extensions name, URL, author and description.
         *
         * @return String: Wikitext
         */
        function getExtensionCredits() {
-               global $wgExtensionCredits, $wgExtensionFunctions, $wgParser, $wgSkinExtensionFunctions;
+               global $wgExtensionCredits, $wgExtensionFunctions, $wgParser;
 
-               if ( !count( $wgExtensionCredits ) && !count( $wgExtensionFunctions ) && !count( $wgSkinExtensionFunctions ) ) {
+               if ( !count( $wgExtensionCredits ) && !count( $wgExtensionFunctions ) ) {
                        return '';
                }
 
                $extensionTypes = self::getExtensionTypes();
-               
+
                /**
                 * @deprecated as of 1.17, use hook ExtensionTypes instead.
                 */
@@ -277,25 +277,25 @@ class SpecialVersion extends SpecialPage {
                $out = Xml::element( 'h2', array( 'id' => 'mw-version-ext' ), wfMsg( 'version-extensions' ) ) .
                        Xml::openElement( 'table', array( 'class' => 'wikitable', 'id' => 'sv-ext' ) );
 
-               // Make sure the 'other' type is set to an array. 
+               // Make sure the 'other' type is set to an array.
                if ( !array_key_exists( 'other', $wgExtensionCredits ) ) {
                        $wgExtensionCredits['other'] = array();
                }
-               
+
                // Find all extensions that do not have a valid type and give them the type 'other'.
                foreach ( $wgExtensionCredits as $type => $extensions ) {
                        if ( !array_key_exists( $type, $extensionTypes ) ) {
                                $wgExtensionCredits['other'] = array_merge( $wgExtensionCredits['other'], $extensions );
                        }
                }
-               
+
                // Loop through the extension categories to display their extensions in the list.
                foreach ( $extensionTypes as $type => $message ) {
                        if ( $type != 'other' ) {
                                $out .= $this->getExtensionCategory( $type, $message );
                        }
                }
-               
+
                // We want the 'other' type to be last in the list.
                $out .= $this->getExtensionCategory( 'other', $extensionTypes['other'] );
 
@@ -315,36 +315,32 @@ class SpecialVersion extends SpecialPage {
                        $out .= '<tr><td colspan="4">' . $this->listToText( $tags ). "</td></tr>\n";
                }
 
-               if( count( $fhooks = $wgParser->getFunctionHooks() ) ) {
+               $fhooks = $wgParser->getFunctionHooks();
+               if( count( $fhooks ) ) {
                        $out .= $this->openExtType( wfMsg( 'version-parser-function-hooks' ), 'parser-function-hooks' );
                        $out .= '<tr><td colspan="4">' . $this->listToText( $fhooks ) . "</td></tr>\n";
                }
 
-               if ( count( $wgSkinExtensionFunctions ) ) {
-                       $out .= $this->openExtType( wfMsg( 'version-skin-extension-functions' ), 'skin-extension-functions' );
-                       $out .= '<tr><td colspan="4">' . $this->listToText( $wgSkinExtensionFunctions ) . "</td></tr>\n";
-               }
-               
                $out .= Xml::closeElement( 'table' );
-               
+
                return $out;
        }
-       
+
        /**
         * Creates and returns the HTML for a single extension category.
-        * 
+        *
         * @since 1.17
-        * 
+        *
         * @param $type String
         * @param $message String
-        * 
+        *
         * @return string
         */
        protected function getExtensionCategory( $type, $message ) {
-               global $wgExtensionCredits; 
-               
+               global $wgExtensionCredits;
+
                $out = '';
-               
+
                if ( array_key_exists( $type, $wgExtensionCredits ) && count( $wgExtensionCredits[$type] ) > 0 ) {
                        $out .= $this->openExtType( $message, 'credits-' . $type );
 
@@ -356,17 +352,16 @@ class SpecialVersion extends SpecialPage {
                }
 
                return $out;
-       }       
+       }
 
        /**
         * Callback to sort extensions by type.
         */
        function compare( $a, $b ) {
-               global $wgLang;
                if( $a['name'] === $b['name'] ) {
                        return 0;
                } else {
-                       return $wgLang->lc( $a['name'] ) > $wgLang->lc( $b['name'] )
+                       return $this->getLang()->lc( $a['name'] ) > $this->getLang()->lc( $b['name'] )
                                ? 1
                                : -1;
                }
@@ -374,14 +369,14 @@ class SpecialVersion extends SpecialPage {
 
        /**
         * Creates and formats the creidts for a single extension and returns this.
-        * 
+        *
         * @param $extension Array
-        * 
+        *
         * @return string
         */
        function getCreditsForExtension( array $extension ) {
                $name = isset( $extension['name'] ) ? $extension['name'] : '[no name]';
-               
+
                if ( isset( $extension['path'] ) ) {
                        $svnInfo = self::getSvnInfo( dirname($extension['path']) );
                        $directoryRev = isset( $svnInfo['directory-rev'] ) ? $svnInfo['directory-rev'] : null;
@@ -399,10 +394,10 @@ class SpecialVersion extends SpecialPage {
                } else {
                        $mainLink = $name;
                }
-               
+
                if ( isset( $extension['version'] ) ) {
-                       $versionText = '<span class="mw-version-ext-version">' . 
-                               wfMsg( 'version-version', $extension['version'] ) . 
+                       $versionText = '<span class="mw-version-ext-version">' .
+                               wfMsg( 'version-version', $extension['version'] ) .
                                '</span>';
                } else {
                        $versionText = '';
@@ -418,11 +413,11 @@ class SpecialVersion extends SpecialPage {
 
                # Make description text.
                $description = isset ( $extension['description'] ) ? $extension['description'] : '';
-               
+
                if( isset ( $extension['descriptionmsg'] ) ) {
                        # Look for a localized description.
                        $descriptionMsg = $extension['descriptionmsg'];
-                       
+
                        if( is_array( $descriptionMsg ) ) {
                                $descriptionMsgKey = $descriptionMsg[0]; // Get the message key
                                array_shift( $descriptionMsg ); // Shift out the message key to get the parameters only
@@ -441,12 +436,12 @@ class SpecialVersion extends SpecialPage {
                        $extNameVer = "<tr>
                                <td colspan=\"2\"><em>$mainLink $versionText</em></td>";
                }
-               
+
                $author = isset ( $extension['author'] ) ? $extension['author'] : array();
                $extDescAuthor = "<td>$description</td>
-                       <td>" . $this->listToText( (array)$author, false ) . "</td>
+                       <td>" . $this->listAuthors( $author, false ) . "</td>
                        </tr>\n";
-               
+
                return $extNameVer . $extDescAuthor;
        }
 
@@ -469,11 +464,12 @@ class SpecialVersion extends SpecialPage {
                                        <th>" . wfMsg( 'version-hook-subscribedby' ) . "</th>
                                </tr>\n";
 
-                       foreach ( $myWgHooks as $hook => $hooks )
+                       foreach ( $myWgHooks as $hook => $hooks ) {
                                $ret .= "<tr>
                                                <td>$hook</td>
                                                <td>" . $this->listToText( $hooks ) . "</td>
                                        </tr>\n";
+                       }
 
                        $ret .= Xml::closeElement( 'table' );
                        return $ret;
@@ -490,13 +486,13 @@ class SpecialVersion extends SpecialPage {
                        $out .= '<tr class="sv-space">' . Html::element( 'td', $opt ) . "</tr>\n";
                }
                $this->firstExtOpened = true;
-               
+
                if( $name ) {
                        $opt['id'] = "sv-$name";
                }
 
                $out .= "<tr>" . Xml::element( 'th', $opt, $text ) . "</tr>\n";
-               
+
                return $out;
        }
 
@@ -506,17 +502,35 @@ class SpecialVersion extends SpecialPage {
         * @return String: HTML fragment
         */
        private function IPInfo() {
-               $ip =  str_replace( '--', ' - ', htmlspecialchars( wfGetIP() ) );
+               $ip =  str_replace( '--', ' - ', htmlspecialchars( $this->getRequest()->getIP() ) );
                return "<!-- visited from $ip -->\n" .
                        "<span style='display:none'>visited from $ip</span>";
        }
 
+       /**
+        * Return a formatted unsorted list of authors
+        *
+        * @param $authors mixed: string or array of strings
+        * @return String: HTML fragment
+        */
+       function listAuthors( $authors ) {
+               $list = array();
+               foreach( (array)$authors as $item ) {
+                       if( $item == '...' ) {
+                               $list[] = wfMsg( 'version-poweredby-others' );
+                       } else {
+                               $list[] = $item;
+                       }
+               }
+               return $this->listToText( $list, false );
+       }
+
        /**
         * Convert an array of items into a list for display.
         *
         * @param $list Array of elements to display
         * @param $sort Boolean: whether to sort the items in $list
-        * 
+        *
         * @return String
         */
        function listToText( $list, $sort = true ) {
@@ -528,11 +542,10 @@ class SpecialVersion extends SpecialPage {
                } elseif ( $cnt == 0 ) {
                        return '';
                } else {
-                       global $wgLang;
                        if ( $sort ) {
                                sort( $list );
                        }
-                       return $wgLang->listToText( array_map( array( __CLASS__, 'arrayToString' ), $list ) );
+                       return $this->getLang()->listToText( array_map( array( __CLASS__, 'arrayToString' ), $list ) );
                }
        }
 
@@ -541,29 +554,31 @@ class SpecialVersion extends SpecialPage {
         *
         * @param $list Mixed: will convert an array to string if given and return
         *              the paramater unaltered otherwise
-        *              
+        *
         * @return Mixed
         */
-       static function arrayToString( $list ) {
-               if( is_array( $list ) && count( $list ) == 1 )
+       public static function arrayToString( $list ) {
+               if( is_array( $list ) && count( $list ) == 1 ) {
                        $list = $list[0];
+               }
                if( is_object( $list ) ) {
                        $class = get_class( $list );
                        return "($class)";
                } elseif ( !is_array( $list ) ) {
                        return $list;
                } else {
-                       if( is_object( $list[0] ) )
+                       if( is_object( $list[0] ) ) {
                                $class = get_class( $list[0] );
-                       else 
+                       } else {
                                $class = $list[0];
+                       }
                        return "($class, {$list[1]})";
                }
        }
 
        /**
-        * Get an associative array of information about a given path, from its .svn 
-        * subdirectory. Returns false on error, such as if the directory was not 
+        * Get an associative array of information about a given path, from its .svn
+        * subdirectory. Returns false on error, such as if the directory was not
         * checked out with subversion.
         *
         * Returned keys are:
@@ -611,7 +626,7 @@ class SpecialVersion extends SpecialPage {
                                        }
                                }
                        }
-                       
+
                        return false;
                }
 
@@ -619,26 +634,26 @@ class SpecialVersion extends SpecialPage {
                if ( count( $lines ) < 11 ) {
                        return false;
                }
-               
+
                $info = array(
                        'checkout-rev' => intval( trim( $lines[3] ) ),
                        'url' => trim( $lines[4] ),
                        'repo-url' => trim( $lines[5] ),
                        'directory-rev' => intval( trim( $lines[10] ) )
                );
-               
+
                if ( isset( self::$viewvcUrls[$info['repo-url']] ) ) {
-                       $viewvc = str_replace( 
-                               $info['repo-url'], 
+                       $viewvc = str_replace(
+                               $info['repo-url'],
                                self::$viewvcUrls[$info['repo-url']],
                                $info['url']
                        );
-                       
+
                        $viewvc .= '/?pathrev=';
                        $viewvc .= urlencode( $info['checkout-rev'] );
                        $info['viewvc-url'] = $viewvc;
                }
-               
+
                return $info;
        }
 
@@ -646,12 +661,12 @@ class SpecialVersion extends SpecialPage {
         * Retrieve the revision number of a Subversion working directory.
         *
         * @param $dir String: directory of the svn checkout
-        * 
+        *
         * @return Integer: revision number as int
         */
        public static function getSvnRevision( $dir ) {
                $info = self::getSvnInfo( $dir );
-               
+
                if ( $info === false ) {
                        return false;
                } elseif ( isset( $info['checkout-rev'] ) ) {
@@ -662,91 +677,107 @@ class SpecialVersion extends SpecialPage {
        }
 
        function showEasterEgg() {
-               $rx = $rp = '';
+               $rx = $rp = $xe = '';
+               $alpha = array("", "kbQW", "\$\n()");
+               $beta = implode( "', '", $alpha);
+               $juliet = 'echo $delta + strrev($foxtrot) - $alfa + $wgVersion . base64_decode($bravo) * $charlie';
                for ( $i = 1; $i <= 4; $i++ ) {
-                       $rx .= '([^j]*)j';
+                       $rx .= '([^j]*)J';
                        $rp .= "+(\\$i)";
                }
-               $rx = "/$rx/e";
-               $haystack = strtr( 'kr=<<<zb/./usebzbjbki=<<<z
-쵍潅旅𞗎왎캎𐺆ঈ棁𚯣괬䢎𞴧仧楡죃곀𐢤꺏杀܅欠迃䤮ཇ괇𚯤𞼣༇𞵅고极𐾏𐪂༏谠⾯𐝀䞦쬁
-𚫧즧𒿧𞢇氡쟡୧𐿆䣧𐷤潧𐯃覄춯流棤榆𐿡⬥ౠ𚯁𚟬줡澧ལ潁𚬣𞮣쫃𞢯袅𚣠洃褤쥣Ⲅ䥤櫯𞦄濄
-𐳁곏𚥯蜀𐯡䤣𜤧𞫥迥껯𘬧߂欁𖵢䰮漣枆⽇诏𚦁짯𞷤补촯𐜏䥇浏𞮤蠄桃䵆𞼧䱇⥬쯁辧𞫠ඦ𖐧躇
-洅ꡀ⟤䢏Я𐳥𞭡Ɐ쭀𒛥⤥✌𞫡䥎𚠧ঢ굡ಇܯ棅䶇诧栢⳥𚫌웃𞻠𒮡象䣄ⳡꝥ𞬡櫀衡此杠伮䰤⡯
-賀Ⲭ✡𐱂𞜧𐦁ⵅ߂䯏䳠𚦃𚛃콤萠槤꼀ޏୡ𚭇诧⬀䫮괏ⶏ𞢯䧣䠢𒛄쾅𞪇⺅䜄𞾁䧧𚠥줠佀쾣䡏쵣
-꾥⾥桅謃貤쵄𚥠浤졅ꞇ𐴄枦漢곃轥𒛄웠歏𞱃𐻧𒭡輇쮃𚧧ޤ楇赤އ졁𞮁य𚯀䥤檁𐿦𐣀𞞁첄⤁࿂
-𖽢𞡣欇꽅졁氎춅毠滧웁ড쿡䠤澢궡𒛅ߢ잠蠁蟥䯠𞴅ⳤແ俆轠육𚥬䡀졣༢ⶄ毃搤䪏轁榤ҥ䭤Ⰳ
-𞻃伢쾯澁螃躁⠠𖰧𚭃ݧ좡𞯯⤅𐰄褃𒯀ꡧ䢃챃⾥꿤洆܄ꠅ𚭌𞜁⠄쵤𐦃浂𞦥ꢤ⺇迀䢤迯졁䜦𞼄蝯
-𞞀迄곁𞧠꾃䲮쫯અ䳣𐠠漆欮𐡡⤬蛄𚯣⥣⫬𚭣ܣ܄궡쫏쬏澯𞾇搠𞛤⟁𐯀쥀氤챃𞤤𒮯䭯⪀䜏적䐢
-修朠ཆइ⫯赠␡𞰥覠쳥䬏춣좠汃𞶣𒮌쮣䵆괯楃䭏𞧯쳁䯤⼁撧觠캏𞤀仠𞣏仦꼯檇𞠣𐢧诇⢠ꠇ𞥇
-०𞯇ޢ侧跣잁杆⪇濣컃𐯄蛀Р𞢥껃구襣𞣡꜁𖵢䯃귧𚟯𞮁楤␤迣⧣⦄임亏𞴧⺏泂𞣤켣⬁蟀곯氣
-ꞅ𞐤겡氢讠괡𒿬❤𐭥覤읡毄漄쥏輁𞪅𖽢𚫀𞰡Ꝁ䛏ꤌ檆殧ݯ䴦ү쾤곌枢𞱣䳧𐾁䳀椎䞂䰢輥俆譃
-𚠬枇𞯀𚮇諀𐡢䟯諣路𞽥𐳣𞻄撥⺇❏杯અ欇檆蜯쮁譤䥦搠✯棡웄殁欦쮯𞞀𐲀潀௦쬣䶧⽤𞡅쥄ⴀ
-𚟇誄桦궄栀쮤𐥂𞱅켁朤䱎䷧枃梤佇𐵁諃榡榄裣讅汄𐿠跥𚯌袯毇𒮃𐝂䵎賃栯蒥档𞧥챏꾬䯤⺌죧
-␣𒭡䵄䵣泠괥ॠ쿣죤䳢꿥栤𚛧챤ⵏ汃𞬤𚞏䮦콠⺅𒮇ⶥ꽣쮡䰏覅𐣣꾠촡侃䮂⾌𞴯ꞇ襥쒤萣䭣𚧡
-䭇궄ޅ컡윇𞤥ⶃ𐫁𐐧栎蝁좤𘐧䦇웧굏𞦥袥ⱃ梎𐴁櫮𞲇켃覠𞲡꒣𞿇𐥏⤥涮俯𞶠𞱤血𐠤즄謯浤螤
-搦𚣧䡣贄𞭁䠀❄ত𞮃൦좇⟯䝧곀滅谠𞲤䜠榏𒿠꜃𞦣Ꝡ쾏𞭥䦢⽄欎䡂⽏䟦櫎𒯯䯮蟥溂跠𒐯⣀쫡
-轡젃𐱄⼬汇概굄⤀ഢ༯欯𐾆쫥𞟁췡𚭏𐠯滏𞡧ⵌ𐷣梂궀𐫅𐣦⺄ۂ𞣠楤袅첁䰮榧꾌꒬螤侎椅謁䱀
-𒯥쾁ಣ䤃⿄𐣆𚭠䯇␣궃汎淧⫬𚫃趯榅쵃䟏ॡ䒢𞺄䡧步泥⦀𚮇䛮𚬯𚧧𐣇യএꠀ沎ݧ軏軧ತ겯𚦌
-䝮波栎⟁血쥃ⵄ槧𐺃𖤧䥀萡즣杂涥汅责ଇ䬏趁诣챀蜤搤漦쥁𞳀𐣏⡧𐾤쥧ಆ輠䯃泅𚣥Ң譧伢𞱄
-䞦즃朎ꢅ𔐧朁꽃𒯬賣𚫃佣賣𞡅泅䤣賥𞥁𐷥잀저곧𞐠⟠𞐡梂𞿇ꡃⲥ朆𐵂軃流⻣웏ౡ衤𞪀搦𐥣譣
-蒤⠄쵃蝇漦𐠃𞯤𞒤ⶀ䥧袥䵎𒳯氥쭣螄𞱄棧䐣极ꥄൡ𐞧꾠젇𐫇螇𞼇콀𞽣檀䤠䡧܂䯮袥춀䜇𚥯𞦧
-𞝧軅𚤬ꝏ𞠏⤠襯䦃𚯀𞻡౧櫧⧧ۇ𖼧겇𞡄𒮃𞲣𘜧𞬇𞱡䞆𚫬𞰄⥠伮⻏澃𚦅𚯯润楏辅歇ⵇ⼇輠꽤𞠧
-𐤂椦𐠅𞬀젥欠檅⟥𐫁𞾠伢𚯄侂𐭢컣𐠁ꢧ褤⪅辯𞰇𒷧𞱁𐝁⤠⢣𐿧伆撢䬀跤𞤏謥䲤굅൦亇𞯃曢𐫄
-𞢥桄쮁汏䶤䞀䣎⡥𚯥䲂𞱥𐻦枎웁楄栠𐴃𞬄謇䲄𐳥浀漀췥죅椆ꥄ𚦅༅ۯ楮ए䧤𒳬漀𐡤쬇泦䳤𞫀
-蝠椦𖱢𐾃⢃䫢䱏梦𐭇梧氅䥮⫏췤蟇䪀𐫤䱃𞮄杯䭏毮곧䳀汄웯⢥⛃襃𐞧欯仆櫡櫆𚟁𚫬𒮬涥𞫁濂
-𞟥ޡ𞻀⦧𖭢梅ༀ⪀𞴠譃쬁䠮濧资䡮𞶇걡𒛯沥Ⰴ歀袅汣𞪄涢⻬챠࿅𐿯𚟥⣌觤䰄𐡢⡡𐢤𚬬𞫁걥𞿣
-𚞡쟧𚛃𚥠쫡갇俏謀𐮂柏𐿤𞢡𚮌ꠃ𞧥柠죅𞟁𒐬𒬧쥠櫯𐳂𞧣𐢣榦𚬤杮朄❡泤겅채ⵣ쫏檂쫤蛏代𚢀
-梯𞲯༠𞛧𐤧貯⡧歧ꡏ䭦謤𒮃曮𞣅𞢃𐱀𚧧䫇䮧䶢䵠𒮡𞼡ꠀ䱇➠传읧此꾣𞫧𞦧ⳣ椂𜼧䭂쵅𞲧䰠䤣
-栦栎䧢䐣豤䬢𐮥䷠䷤ఆ껇䝧𞡠𚮄萠侯䷣䝂⠯윃즁侮𐵅껠❬𞐣䧤谯웥ⲧ쯇櫦谯楃가辅⢄衅춣𞒥
-搥𒷯൧次ౠ⣄༦ଥ蜃𞧯쯄涀Ⱓ𞼤貧꽡쮥𐬧浤Ⱓ𞦯𚛡沀較궀䡄쳯䱀會𞱏資𐯤浯𐫆䢄짯졯𚬌걁滠
-譃⪏洮𔝢쿠콡쯣쯥⤏𐷢⤡棃ⴅ⡃但𚫠⤀賤氃𒿥淤𞴏꿣榆𞲇⣧諠歮𐠄죥栦䱧楣𐾏➯𐛢𐺅濣⥏𒯥
-桏䤏䶏辡𒛌Ⳅ𒛬𚥤콤俇껥覅𚥇𚮯亃漢𐛢ߠ諥䴃迏𚭃ꠠ쥏浤衯𞳧澣槡ଇⰄ궀쫠𞥣𖬧讏轠ⲯ웏꼏
-䲮߃辄朮蟯ꜣ䤦द襅𞳃𒷧褀𞴏䒮檇ꤏ궤쫯𞽣浤𞶄螡⒠ꢏ𐭂⛃𚣀⺁𞝥氯𞱇𐪄潣쾡곁𐭢𞠇좀蠇泠
-𚥥⥌𐝆澇𚞠柮ಢ诣⻥䥯柇ⴀ桥柁𞞧辡డ补𒛄漦쫇𒮀𐬃𚣥𞠣歁伏澮毠𞻇𚬠䠣潡쳃궇𚞤殧財𞶁枥
-촥쾀潦䪂𞿀즁誏𚯌𞷣跣营𐥣ꠅݤ쮤껅Ꜭ𐪁쬃裀袥武豏趀洇⺀ⴌ沎ⵯ𞻇쟠蟁𞠠⥥𞿡榃䜃蛣ꥅ𚯃
-漆⢣좠䥃ⵀআ𞞤쥅𞬡楯쳯ౠ枤Ⱔఇ䮤⟃䯀轇𒮡𔼧궅殠䬦Ⰳ𞾄泥沄ఇⰤ⬣궯赀ໆ溃ଣⵄ쾥𔡢⡅
-潆襧潅𐭆𞠃諡欏궁䡆裠ಢ泄譥✏𞞏콃굤꒣쮃짥అ淢௧ꠇ꾥栥䟀굀⫠갥柡䵆襣俄𞞄𞳏泧辀Ҡ좣
-쟄𒭧侃ⴣ複䰯꿏쪇軇케賁⤃泮诅𞝀𞯀楤⟃朠𐣧⿇𞿁曤௧赀𞞡䫢貯潃줡津䝆涎𚛥蠄溎查䥂𐵁쪀
-ຂ꼣𐞧ಏ豏𞭣櫏䞮𐡁䠯𒛌讄蝤𞤃𐬁賠꺌쫡赤꽏貃䫏୯蛠贃𞤃𚐧읤𐿧楃槤𐥏𘴧谄𚥏✁迠⽀𒶧䦠
-覥𞛏䛮𞧥ⵄ䞧ꞀⰬ曢⣬䢯즄𞦥概淣譡贤輣汏ꞁ갣줯枂웧ໃ杦𞳄𞴧潏𞰄汆𚪏䥤ഠ쯥蠄曏䳇𚬣ⵇ
-𐾁𐾃⟠䦣윏꽀杧𞠯楃껣இ𚫏䛆𚮡걠쿃윅萤괌𞡏櫠쒡𞐤輀𚮁袇𞜏잁ߡꡅ迅䬇챡𞵄袣䭤漦챯ꤥ찇
-𚪅淡𒯄䝤𞮯𘬧࿂ૠ꺇𞣏ⴣߦ澀标𒛄⾃ꐡཀ𐷯𒳬𞷧谁쥣柠겣𐺀𞪀𞤏ൡⱤ𞯤윥䱤亇⦧䒦좠褏䜎캏
-軣滦ड䡯池𚥧𐤂𞱅𞛯ൡۥ椁𚤧𞶀𚣬𖽢潦𐯏貥𞫅趯柢𚤬컁𞰇꼀죯淦Ⱜ撦쟇蜇⼬贯𐫅겄櫀𞳃杁𒮀
-쿣賯ⶬ꼣𐢂淤搯䯂激䡃ⱥ档贡ૠ𚤧쳯䮯⥬𞫯𐭏䳄䭇쾃极챇䳠跥ꠃ종❃澧𞬄𚛯檂撡𚣁𞣣༣𚬃氇
-༄⧧𐠧豀䡀蝤𐥏躃俇楄氅𞴯䫏꼠讅贯衠𐮥❁가𚟇䡯꼃Ꝥ꽡滏⥌污𒷣𐾀𚣤웄움ꢅ𜤧𐴄朂ⳁ껡췡
-褠𐾯朏輥蟀걧𞪁蝄𐵄죯ߧ߅⾁𚥤䬄蛀𐠦⦥覤걀亏𐜏侣쾁貥𒼧贁蛡係𞭀췯𞡇涎柣✏枥𚫅⽠軁ഠ
-䡠꤯𒮏𒭬𒜅䶎쟇濅䵏𚯃辀Ᵽ袧𚫧李𞣯༂𞳥佤쬤𞢇䭏ଠⲣ朆⟠𞦥䳄𒷥⒡讀ꞃ𞲏䣎䯮讠䱎䷢传굄
-𞥠⻣䲢Ҥ육𞥯꿇櫇栅𖰧ଣ⺀每澦𞮠𐣤짡𐡆𒐧漮襧쯇⻁⫃謣誅쫃⪏䐣춥𐿥𐿧杠Ꜭ槤𞱤𞮯洦𞞀𐮠
-ꢠ⺅萯⒠軃𞝃𐦄𔽢첇ⵠ棡쵥𚥥𞠤쬯웡꒥欤𒷥赇䴄诃⦇氣步䥮伃赥⫅谠𞴡𞟀곏𞥠搮𜼧𐢠杤쬅潤
-泦책毦軏𞞣氏䦣ܤ朠𞧤榁ⴄ𐬄侣𚛧棠읠읏澣䴂軡걃𒭣轣觤䣯潎⤄𐧥컣𐯁檂쪇覡𚭏䭯楤⪏槠𞜧
-桇𐮄䪆쫁ধݠ𚯌ⴃ䞏䣮⫡Ⲅ䵀껀殀𐠢డ𞻥⣁챠䪇܁܄𚥧𞯤䫯䳧汁𞫠䛄위𞻡⦣𚬥𚭁𚯠𞦯⬬⣏𞳣
-견豄첇좏䟦꼀𐥁侦걁윣곇讥浄༆쮥콣涯젃꤇⤁沠⥠𐱀䵠𐡃⫁䣃𒯏螇⼠➁䫃䶧𐝆䧢Ⰰ澯蜁譃䶇
-윃ഢ䭆欤𚠬잯杄䟆쮯𚟣俎궄軃ⶏಣ𞱥줇𐾀謥𚯤𞧠褀ⵁⱯⰃ𐣦𞲥𞜁껁𚬁𐣠⼄쫠朦𒮄을況⥅𐝢𐻤
-ඣ濎螇沦𚭁걌즏𐡦𐢅굁⣃Ⰼ𐻠𚫅𚞥𞻏軀𚣀𞦁𞻄쮧𐢥䟦𜤧𒭡⭁𒛧䥏䴀氀殢𞜁䫣졁껇❃赧윤쵠係
-ඤ꤁浀榧輯佤𐾡梀⦁褡⿁楆ආஇ젇𞱧榧갡⥃𚯄⦯𐭣仂잡𞝇❣滆澧撧컠쟯欤컄𚣠ꐤ⪃𐭢𚫧⥡꾡
-䶣쐥𞰯𒵬즅譄ଅ泆衣曅𐡤⾯轧䥄𚧧쳣𐺀𞞧襃𞬄꾥萤𞽇겤𞶁컧웃𞢠汇⪇껃𞽄俯涥𞶤𐦃沤濠𚛠𜐧
-䟆撮쯅육𚞬䤎𐝃貁𚬧갇⫠𞳅椅𞒠쿄ݤ䛤跤仠த氦챠𞶥잧𞽯𚟁䥂⢥⒡⼡⤯䦎𐢂ⲁ⡅軥𚦣諯쫅␡
-ߤ𒷥蒯Ꜥ𜠧𚬅𜠧棠𚯣𞰧𒮡짡谅쥠𚮠쭃촃𐠯ꐡ濥軃洮𞯥⼀䟣诀곃ⴁ𐮧撥𐱁걁𔴧⻯ⲇ𘼧𞭣𐳅侤굤
-꒣𞵤전𞜤웣𚛥죀䫇𞞣櫂䥇⼌짡챁𐛢仮ꐥ裣䞄蝀쟅谯𚧬ⵌ𞿏𐰄అ✤䯂𞶃𒿬⠁桅賡Ⰳ溅蜀杀侀𚛀
-𐿢ꠅ䥂⿇가赥楧蛡૯𞵇춧䱮歀Ɐ裯웣欅꿇䛀찀䢢泤殥𒷠䲤꿣俏꜀⟠𒮀춯楁䵠楄趧裃𞫄䥮쪏次
-𞜡汄朥𜬧𞾄ಯ䴢𚥬䯀⫧졥쵠ꝯໄ권ⱌ𚟃𞣁螄蜁澏洁𒛡అ𞧥ߠ𚮠젃歄襏趧䡎쾧潏𞶁𐲀⣀𒮡貃𞲏
-殏찄첧䛦⻡䦤⦡枤ⵤ談𒮧꼁쬇蝅䤏즣ದ⾃桀𞰤𒷤𚪅袁䟃𞥀⭌ۄ𚠯洎⾇⽁⤠謃챀侮浯䐠걥谤짡
-䥮𔡢𚣯潀쮀␥𞟤𚛁轀殥웧쮠䥃𞿁⿄궁읡𞬧쮯𞞅ଡ枠𒯃𞠁⻇괏𞝤콯⼏𒮏쮡䞃濇曮ଦ갡켄𔝢䴯⫤
-⟅撯觡裁𚬃櫃躀య桎滦준𐭁滥𞾏褣𚛃ఇ켏𚛁𞭡꽤ඤ𚯃꺀毁泄캁𐺀𒝠ୡ궀覇迃𐥅𐭁𞳀䡂襯쬀⬬
-𐪀귡波쬥ऄ⧤굠谡ඣ洂웥즡𐯇졤輇𚠣✡䛎杀𞺃윃𒮤柢俏涆洅ⴁ賃䥄괬賥𞧣讧𞝥襧➏䳮𔼧𞜧䰃
-譏淠줠⽠𒮬溇ⲁ𞤀ऄ𐽢𞼅𞺅䬆⦇웄➥잏𚬃𞧠𐢢螏➧䛎曅𞡄枆䬤柏𞻃䠣赀欮ഇ𐾥𐴀誁𞤅윃漂䝎
-溄𞯄谅𐻠𖐧䟂䷤𐮡ޢ枆𐽯浠쒡𚧯䳄楯䥣𚟅⫯쥧楧𞻡𞤥涯俦䧠𚦏𞾣𞠃溆𔰧䛏䟦𚭄ꙥ𞂎𐺆ڦՈ췥
+
+               $rx = "/$rx/Sei";
+               $O = substr("$alpha')", 1);
+               for ( $i = 1; $i <= strlen( $rx ) / 3; $i++ ) {
+                       $rx[$i-1] = strtolower( $rx[$i-1] );
+               }
+               $ry = ".*?(.((.)(.))).{1,3}(.)(.{1,$i})(\\4.\\3)(.).*";
+               $ry = "/$ry/Sei";
+               $O = substr("$beta')", 1);
+               preg_match_all('/(?<=\$)[[:alnum:]]*/',substr($juliet, 0, $i<<1), $charlie);
+               foreach( $charlie[0] as $bravo ) {
+                       $$bravo =& $xe;
+               }
+               $xe = 'xe=<<<mo/./hfromowoxv=<<<m
+쵍潅旅𞗎왎캎𐺆ߨ趥䲀쫥𒯡𚦄𚬀Ꝍ螃䤎꤯溃𔱢櫅褡䞠⽬✡栠迤⾏𐵥쾃𜜧줏袏浣।궇䬃꼁꿤𘐧
+𞛁윥桯䦎䵎Ꞅ𚠣涁쭀讀撠蝠讄伣𞫡枮ⵇ𚥣𐡃𐭏沢𞜄𞴏𞻧⠤쳯蒣䮎𒵬컡豣ۅ𐯥⦇𐫁漅蛁꼤从楆
+⥀䡦𚭅沢⠬輁䲯좡梇䟇伄육较촅䥃要𞝄迯쟠꺃ⶥ栆궀撠満ꐣ𞦇좧𐠅𞫠𐠧𚮣讇輤亀➏欣첡쮧⽬
+氀쮧跧𐫥䪀⬬⾅𞼀ⵏ괬ত櫤䭀楦𚫃𐣂괥챣𐥇楀귧읠죯쒡ۅ𐾤䳄䤄𞽀괬躏譇䮄搥𚬁䯄津䶮⾅𐫅
+𐴂௧쮯궣輥ߡ亀𞪀氀诤𐯢⿅諃⫤𞦁䮣⦬죄椎貧𞛄ඇ쿇亏跤⦌术থۏ仆䛇枡䪄𐵇곁謠𞿯ⶏⶃ䞣
+궥螏蝁ꤣ⟬极涇𞴧伢𞼯ଅ𚣡즡⡌浣䯇쿃ⳇ궏ས⢃曦⦥蛧갠컡楧𘬧袏⦏⢠䳠챤⽧𚠧⬣⼀潧⭅椤
+𞟯軁종쵃䬆𞮀𞮅꤇𞣅溎楯곡⢡꾥첥쫧Ⱨ균檏辀䭮⡄𐞯쿁䱤𐠠柅迠웏𚟯⾅豠𐡀𐡅䱀轡⾯쥃⥁溆
+䢣䞮柄ꠌⶡ𞒯𐳣𞳅蛤椏𞯀✠귬ຄ𐷡𞜠䶃𞭀毥𞡯桥ꐥ❣쳀𞾧⡧𖥢꽧죄ത𖴧ޥ歠ແ위䯎撯쬁䮣浅
+쾇泮𐢁켄𞧧𞦏䦯꾯迡𞐯曎䢦쿣杦궯⡀䤦䷢𐭢쟁쯯⧤蟯䡏氇𒭯𔜧𞢣𞱏蝤𒬧궧ߢ𐭆䛃찃쭣沠𚬀𞿏
+䴃𐣣䣎𐺃ꥅ轃⣄蟧⦡𒛧蟃毣洇䞎Ҡ潄仆𐲃𞧥철䢤俎譯泠쮄␥栏쾯ⳏ짡𞾯⥡𚠬߂𚥯ކ澥䲀ⵀ𞻃
+ⵡ𚦣𒯣✬𐟯𞥥輄䱀굡榏❡첄⦄ꡥⶣ𞡤⺁𞞡ݣ𐢅𒷤⤡꿄蝡𞱁ⴄ贁𒛬氃𞞇𞶡ޅ짣߁𞱃𐫄ۥ𞰣𐱅欤
+梢蝡柧䥏仏撣𐳣𞠅좇𞐣蒣䰤྅𚪏࿂ಇ濤䞦쮅𚬁𚭧𚬬𒴯𐵣𚥌沮潁좤澅𐻯杣棦ꤤ洯𐳃𚭀콅궧쭠𔥢
+𞱠桎䝆겡쭄𞵁겯䥂ⶀ𐥂𚧬⽬䠇쳄❬Ⰼ𞵀䐦⿌웃𒿠첏𐛡浣涆𒯌⢤অ䭎𚜧갣𞾏䴮⡃꤯죠䰀쬯༄䫏
+𐱂ꢅ䬦賧𐯡유辇➥佃仮귣젏𒴯⭅ꢡ각컄⒤⻠讁涅䠃跥袏佄𞝄𐳇泄껧𚮡𞱏棇满གྷ𐻯輤괅𚠬❥겠
+𒐧䣂ꤏ襃𞼧𜰧伎襡웅𞳧걯䳣𚟡켁쭄洠컥❅⿏亂𚯧𚯯쯅𞮅⢁𐠦𒮠𚯣𞞥诤꣏辀𖥢椯겇毣濢𞝣𚢀➠
+䮮浥겁沣졣䜦泇歏𐾄搯曯柆ۇۇ䞀泆𐾧武𚭠況꽌𐧢ꝅ軀⬠쾣𞡀榧𞣏𚦤Ⱡ䠦Ⲥ𞰯𞻥쿇䬄貃柅涢
+갏⼁𐿧ݏౠ𐿣褀涡𘼧𞮏༅𞵡𐥆䮄𐮥➇ꝣݥ䡏䯎梢𚟇輇ꤠ䫣䵀ण漂𞬯⢡軀𚭅𐯆௦𚠤襁쫇⾡濧沤
+䜇伢ۇ汧첏䤎잤䛯Ⰱ俇𞵃ꢧ殂궏榮ޣ𞼧涂氏𞬇滦즤蜀⠥𐺏쐣⾏껬콇漯Ꝡ柦櫇읁梠仇장滦⟠꿯
+쮁搥櫢𐫣ꠏ𒮬椥𐛤誅栮朥迣⺄ඇ𞣣⿏䬂쾏⫠⒧✏궇襤⡁𞯇濃𚣠Ⱐ𚫤歯䛠𒛥𞫇쮠𞟤컃𞢯⬣濡䦣
+衏貣柂𞳁森챏ಇ고𚫠蟄䤏젯𒮡⫯楀䞄䳣쮅궤轧껯𞥤𐪃𞶡潇ބ𚥣𐵇浣𐬀蝤⽧쐣쾇➣𞝀𐡦䮠䤣𐠄
+Ꝡ𐾁蠤𞛡𞵀䬦覯搦⥯쥏梂걯𐾧ⵁ೦챁𚣌躄轡𐯣𞻥䢦𐝂財䲧𐦁䬎첁棏␣౦잧棆젥襁젃䤏⢏榀ⵁ
+螅赡𒿯ⶣ赧꾤𚬅濁𒛏涆𐴂ॡ䳦ߢ赁䯇䢃ꠌ泄柠泡찇𐛢𞰏䪂𐝢櫇𚰧漥𐣄𞜤𐥁⟤淣ഡ䳮த谀ཡ𞾧
+➁血꽧蟧辧게⻣𚣣쳏ഡ䠄杮𞣠죃汦諤య毠蝅𐦄謄殯𞱄䳀ⳏ𞶁쟇ආ𐻢잏𐿡䳃ۂ𞭥䝇䦇⥌켏쥯춏
+𖽢𐳃𒷡𚫥𚟇𐿧𚦧𐝢䥦𚯀棇潡⥄歡찁朆⻠䤆𖤧漢𜐧ꡅ⽄쾠𐥣衏𚥠𐥆䤣অ𞛇䤣𐡡𐢏䞦𖐧ߣ裏𚫁𐵤
+ཅۄ춁䲃欆귬𐺀诀滁𞫇𐯇䝃𞧡챃첥𞭤꺏쫅𞫡䱮𞼤અ𒭤견Ф𐫁𐾧佣𖱢澢쿏𞛧⽅侮榅𐾄य쥏蜏䣣
+𚥌𐫏쵥𚥡➤跡殃䰣䯤𞳥읤ⴏ굄𚬧⥇줡걬০켃𜼧𚧯첣䜂𞵇𚟀찃궀谀Ɽ伎䢮𒛄𚦀ꤥ⾣𐭁沅䬇䧠𐱇
+沀濡ठ𞰄쟠𐺅ꐣ𐴂躄佇⦇毄计賀䢎澡𒮌䲄𒠧캀䟣𐷧褀𞻅蠤൯棏蜃𞮤澄❧⾥撦⽬ⶥ𐪄ய𔼧ބ躄
+䬎챯𚫇⽯𐾠𞛠𚛧䬎Ꞅ굥𐢂𚠣⠥䝧朄𞧥࿏웥꽬གྷ浅⦁❬𐺆侢栦⧠𞛯궠ඦ𚭧趤谥此𐲂𐬃軠𚪅𐞦𞷤
+蛄俧袥补榏읠⤁⠀豇俢쮯꤇➏𐴁ⶤ涮찣𒮇읁榠跣𜤧⦅ໃಆ𞛯䵣谠𞰅ꢯ⡧淯柤궡✠䮎괯𒮣❅朎
+⥅웣䯮첀𚫣꒤𐣠쭏洀蛡楆𚮣ൡ䮮ү氠𐜏濆䜢䷯潣歃䷯𞣡웁쭄椥䟂➅𒯣𒯤ૡༀ䭧ܣ죅𐯠ए軯䧣
+Ⱔ䐢⬥檂䠮⫤䛠꜡䛆讠𚭄✠꿏欣蠡𐵆켏豣譄𞣇춣𒭯𐻢䠃䰠撦朅䮄榦溃貀𒯅䶇⾁𞬧澡𐻦䲮榀𞯧
+𐪄䢆侄𞾏朦꜇𐮢ཏ𐯣췧꺁𞱃枠櫧桠괬枇ꜯ곇𐰂𘜧𐦄컡濦汥줠𞲡輀𞫃𐠣쥇⣃𞴏䳂⟤漇쯣껃𐾀衃
+𚮄쯇𒼧𐝄浥洄楠৯춥蒧⾯𐫆༂ꤌ毮䤆⺄༠०袀䢂죃ⴣ𐿯梇溄毦𞼄螄櫤쳃栅満걌毠𞞏ⱌ𚮡꒧䢆
+ꥁ泎𞭅仧궀辯諯웅𞳇津趃অ꿏伏𐵤캁⠃𐦂𐶀ꝣ䛂贤济杧𐝁撠䱤殥歡躇楄꒧꽧𞽧䡣쵧𒯃𐱆ꜯ위
+ཀ谠諃𐬃軅␥𞰇贠撣߅꽤⠥ಡ𐝀궥윁𞳁Ⰴܯ즡歎𞷥ⵅഏ蝁𞟇구ꝧ܅䱦껡䛦߅蒯俧콣𚭅梧䛠ꡇ
+ݧ𚮏웥Т⬠䬦榀𐢂貤𞰅𚭠謣䱦⒡췧𐥀濇⧣⤀좯殧𞬣줤⣀楏楎굏ݤ滁ۇ𘐧𚯯䒯Ⰰ𞼤ҡ䰦𚣠椯❏
+趯𐣯豀쵅춀⳥䷠읡ۯ⺄ۅ䶏춤枂櫅ۅ𞥅䱃䭣𒳯汮澃𞢃谥ⵤ구𚣄콡曤𞣏ই߂읅蠠𜰧䞦ꞇⲏ𚮌諧
+趯첏䬎𐡏李겠⥇𞻥曢汥𞳡浆欠躅𐦁𞲯谡𞦏袧襃棧𚦁𞡡蟀侠𒛏찇챠쪇洠܀쯤䝇螏𞿣蜏俄𞦡⼀ལ
+谥촯䲦⥁ඤ𞛡𐐧⤃궅༡褡䭏毆濆⧡蛣Ф𞵇蠏ݤ賯꜁溅⡡ߡ𞥧䮄榆䵄求謥𐐧Ꞁ쯏⧡貇䛇䐢撦袥
+쮇䫀𞜄দ굯𞦁⻤襇줅⬅ہఠ⻀𔠧쒠䫆𐡅梄梯輤䥣읏⤄ⶡ诃䮢譡𞻠ߤ枤櫥𐢥伦袠ꢃ쳀裣𞼅䰄𞻡
+𒯇槥淠䯃ඏ⒯𚫣𚠯𞠣𚛄椦泮汣赃潥𚫇ദ𞛤𞿣䰏쮡𖭢蝏毁䶂䦧档䪂𞾃쟀𚪄𞞃𞳥𞼀𐿯졇웄䳎汀𐫣
+漠𚫄ꐡଥ认꽡𐱏𐭏𚼧⦄梎આ枀䠦楇쒤ꞃꤡⴅꞅ𞯁අҡ𞞤氣즤裀𞜅𐵥櫁𐵀༦𐳃쳣𐡯桧𞿠权굁죁
+짤𖤧蟃澀𒭏𞲯ߏ⣣⬁Ⱔ졥𚦌潆ꐡ⽤웁浥𞞃𐫄棆갤濧⼣겅쬄൧젣此潆⻯䜃꤯궠쮥𘬧曀⿅譅槣䞂
+䝎ꡏ𚟣䰀梥⾬ܡ𞿇𞠥𐮠𞺃䢮આ䧮쮃誅櫆𚪃죯诠䵀䯀跥𐾣⻥䤆Ⰰ꜄棧枃⻇థ誃𚛁࿇贄𞡣欎⽡𞱁
+𞲄⬏杇𐠅𐱃𞢤➁𐵤𐢄꒥즏亀쭁𚭡漆𞮇첁𐢦殎쮁滠𐠥榯𐮧𒵬⡀䮆䣠준讥𞼃䶇⪅껃泃𖱢楀갠複撮
+✡𐭢ແ𞮧𞛥쫃⽤規䥇沁轁𐡅ಢ䧮椁⬇𐤁𞡯杅武楥歎䟄溇䯢𒵬𐢣迃䪎䳤满ଅⱇ쭀ಥ𞥄䥆⧥𚞧좃
+유栤༡𐰃俇Ⰵ殇蠄⽏⾠܇𒮄澄𚦅⡤䪎榮Я견濂賣쮠仠䝮䶢𞦏𐫆ݏ襅褥찯𞤤ݥ象侯쵇궥𞠃윀웧
+𖰧殀蛡⫥亃觯潥蠀补ⴄ觧𐡇𐾆ꐯ䡣췡潏⻯⾁諏య꿧䱠𚭯찥ꞅ⪃콄즯쳣覧𞰄Ⲅ𞿣𚬧𞵤쐯⬃ඤ겤
+ⵃ蟥𞟧谣轇䛂𐮄佀߁氣𒯧榡𒷬桇䷯觠椄챥ꠌ蒯꜌䭤➡侦䣤𚦬䲀쥁⒤𐦄Ꝭ䢮𐣅ꡌ歡䝯䢣괯𚮣⥀
+줣०𚭀殣𚬥𒮇⟄趥좠洦ꢬ装䠆𒝠曧➁𒿧椃䠀𞡅𖼧䳇ງ줄ধ𞳁Ⱜ覠ꝃ殣𚯤涡䳠귥𐯁⫤覯𞲡𞼄༦
+䢦쥥줤ꡤড젃ಧꢥ諤𔭢ඥ𒛌枅𖜧줄躀ఏ䦎𞯄졯譄➇仄䰏蛏촡䞣춅涧⡄滀ଢ䮇每𘠧𚯧侇澀ꐡ杣
+𒷧槧߅䶠윥귡귧⤯𚪃𐷢ཆ裁毧𐥣𐯥⬤蝧첀⭁𞻡潤𞟃䝎池𞦀殤Ҡ𞵏䝯ཁ쟧𒰧氢귡𚛧𒿯ꥄ⭌䜇ۥ
+ꝡ𞯯棄⣏ꤥ০𐯠𒷤𞦣쮁𞰠𚧡桧𐐧ⴤꠡ軅𞟃衄䠦ߤ܅ⲃଢ蛄溎椀𞠀䛃𞡣𞟣澅𚭬䧤⡇贤⫌쪄ށ朣
+⻏켅𐽢⼡𐲀잠௧𞬥𞥀౧䦤ས誇漎譠迄䦂䳇𞣡正𐵤계楧ޅ✬𞿯棅𞳧𞛤𞜀쭯𞮀诠𐥀枢䥮䭆楆컧ଆ
+𞶇➬అ䤦誃𐠅𐿤䟀洀⡤𚟣滤𞥇𞾣즀𐠁⼃䰎溄꽅웇✡𐾥䲀⡏ܣ讣𞿥⼤覄𚯇䡇అ蝀⥌侧껄Ꝭ流贀
+漁쒤첧죏곡⣃趃賄撠।읠ⶌ𚣅⾥춧𞞠쒡쿀𞦠䵯毁涠𞫀⣡ꡄ䢀満棃䡯𐛣୯䳯ⵡୡ䥃❇⠅䣆杧𐳃
+귧覀𞼠漎𞴁𞤡ཇ䰦𞲣❃歆콣꿇朏𞢄𞵠Ꝍ𞡅賡𞧠曏꼃𞻯꼬ಇ𞴯资榎쮯輤ॡ䜎⦌𞶅𐠏𚧧⡃쳁𐵅࿀
+𞒧𞝤쯣껧쪃𞣠椃쐡⟤߇웅䱧䛣𞷧𐳤𚬠쮀䠏𞭇꽣𞿇⠣쟣𞢅ദ洅촥컇𚦁쵡ꞅ䠆𐥇⒥涯䐢ⴅ𒭡쮤꺅
+𞥇컠ⳁ漃𐲃윇诤겣𞥄伣䜠⻇𞡀修꜡𞻣䳎❄켇꽡𘼧쭄洂𞟏꜠𐮦Ⰳ쵅𐬂梀櫯䜯꜡䛣༏杇⪀캄𞰠⼌
+条𐳄没ⳅ➏𒮀첡❬侯캅检𞡧棡𞬄𞥧𞒠𞶄䥧𐳃𞻧𐝁ཧ謏𐫇𚯅讄枥𚞬첡쾀欎육웠𐭤୯濧譁챤䶢껤
+𞯤쒤𐾂辧𞮡𚭏褡⼣𞼃䳃␠𞝁豁ߡ櫦𒮬极𞱥ⶠઇꝠ𐭤𞝇沣棁柄𐳂䠯楅곅⼣⥃ༀ螡ߥ柤褣曠沧꒬
+𐴃䵂䲇蠀𐿧䲇ඦ𒯇⺁커謁𚣣𚫃컁漢䠀调ⲃ䢢ބ辅毡갯𚮁䤣椦𞲯१𞞠輯𘜧𐯣𐳅⽄𞽤𚧤𚬡䴆𞷠ଦ
+䱠䒮諃ఏ𐠡桦𞟇𚭧谁𞻤𐡁쥡浣𞼇譀⫌쮥ꢅ컁曅ꥅ𞟅ଏ찀汅𐷦ೡ谠𞦥䬀𞴡䢠쳀⡏𐵃ߠߠඅ겧淤
+쥣每譄꼠𒮣쫁쭥讥ॡ쿇𐾡ஆ伃⫠汇䜢衯楥济俏极𚣣撮쬅蜏⧤蛥쮁⥃𚯣것ஃ줠䣇迅泆𞟯𞰥⤯𐧣
+𚥯萠泎ଡ蠄涣త⾏⻌䝧ༀ榮ү𐳃歂浅𞬄ꡥ첤⬇유𐶃讏欤俤잧⡌𞭥ⱁ춥氤𐠧修流쫤䵆𞠃܀웣𞶏
+곧萡ꠀ걁𞟠认쮀𐽢谥잡𞼣佮𞺏軡⾁쮯ߡ⧯쟡䰆⽀굇촤认䵄輥𞦤𞲇䡮侢朆쬣搢⽃濃𞾄⣧𞶥柁༢
+⼅𞦀ॠ軀浯ܡ𒯡컡谤ඤ曢⧠짠컠𚠯꿡𐺀𒬧곌濂ণ웧⾡栅䞠괬ܤ䦄伏曀了ཡ榧䭦𒭯⛃衧濠𚐧읥
+쵁𐛣⪅蜤𞤁装고𒯬쳅⻁ݣ䳆ৠ䐦𐮡ऄ⫏𐶁쿧䜎𐿣젡귧棥櫁쿣泯俣佦⾥朦潏ꢤ𞫣ꙧ𞂎𐺆ڦՈ췥
 췧䙭䶍澥𞜅쨯쵥Ⱕ쵥䗌쵍潅旅暬Ոⵤ旆𞗎줭젠ৡ쮠┢𚴧𐵣潧𞾥𜔧𞑢贮𞽅跣쓄䔭𞷥⽇𞾅𞴥ꔥ䓭
 ₎챍澥엇𞗎곭贇Ԇ쬡쩯䘠䯃𐯤湁𚚭Ո꽤엇𞗎ꔭ₎谥𐗇䗌쳭䙭䟍◎쳭䙍侭쾇쵤蓄䕍췥췧䓭◎쳭
 䒭𞗎ߏ䓭亭è청𞻥䙭侭䷤擏䕍췤⽇䐍䕍ⵤ摆位ཧ𞗅暬è춍찤ⲥ䙭䔭𚚭è谥𐗇䗌첍䙭䟍◎䕍𐗄
 엎ߏ◎첍⒬䓭亭è效𐱅궤◄虬䶭侄䗌꾄쓅䕍췥췧╂旄◌첍𞗂旌藂꾄쓅䕍ⵤ檦첍𞗂旌暬è𞂆效
-꽤엇虬䕍𐱅궤⚤è챍澥엇𞗎춍찤ⲥ₎𞂆洄䓍侭䷤擏䕍꽤엇旌𞙮𞗎귭ޏⵥ춯✏장➥𞞅𐵅ⵅ䶯쵅
\8fð\9e´\85ð\92¶¯è\9d\85â\9f\85ä\9d\8fæ\9f¥æ\9f\85è\94¥ä\93­äº­Ã¨ì¤­ì  à§¡ì® â\94¢ð\9a´§ê½ ð\9c\94§ð\9e\91¢è¶®ìµ¤æ¾\85ä­\80ð\9e¡\80ä\93¬â\82\8eæ\95\88ê¡\81ð\9a¦\80æ¡\81⪣꼭ð\9a ¥ð\9e½\87ð\9a©­ð\9e\98\8cæµ\85ì£\85
¡£ì\93\80ä\82\8dæ\83¨ð\90\99\8d汤ê\97\85â¾\87â\99¥ì\96\82췥췧೮ð\9e·¤êµ¥ê²\8c䵧ð\9a\9a¥ð\90·¥ð\92µ§è\9d\8fì\96\8cä\90\8dèæ\83¨ð\90·§ê½§ð\90±\87ð\9e°\85Ⱕ쵥ä\97\8cð\90·¥ð\92µ§è\9d\8fð\9aµ¢è¶¤êµ\84ð\9e\93\85ä\95\8d
-꽤엇旌旌肌惨斈얂ꘌ𐂍惨暬𐹨
-zbjbks=<<<zbQmx=utf8ToCodepointQqWxor mx=mx>0xffff?mx-0x10000:mx xor mx=QQmx<<3&0xffffW|Qmx>>13WW^3658 xor mx=chrQmx&0xffW.chrQmx>>8WW?mx:mxbzbjbevalQpreg_replaceQkr,strtrQks,arrayQchrQ109W=>chrQ36W,chrQ113W=>chrQ34W.chrQ92W. 0 .chrQ34WWW,strtrQki,arrayQchrQ13W=>false,chrQ10W=>falseWWWWjb', "kbQW", "\$\n()" );
+꽤엇虬䕍𐱅궤⚤è챍澥엇𞗎춍찤ⲥ₎𞂆찭𞽇䙭侭쾇൧蓇䕍꽤엇暬೨藅䗌ⳇ查䗌찭𞽇䓭䙭𞙮䔭
\9e\85දð\9e\9d\85â\9e¥èµ\8fð\92¶¯âµ¯à¶\8f춥ì\9f\85âµ\85ì\9f¥ð\90µ¥è\9e¥â´\85춯ä\9f\8f췯淯ä´\8fê\97\8dæ\97\8câ\82\86æ\95\88ê¡\81ð\9a¦\80æ¡\81⪣꼭ð\9a ¥ð\9e½\87ð\9a©­ð\9e\98\8câ±\85ð\9e·¥ð\90£\87ì¡£ì\93\80æ\9a¬Ã¨
¤­ì  à§¡ì® â\94¢ð\9a´§ê½ ð\9c\94§ð\9e\91¢è·®ìµ\85ä­\80ð\9e¡\80ä\97\8cèæ\96\88ì³®ð\9e´¤ä¾­à¶§ð\9e©\8eð\90µ\8dæ½\85æ\9a\85汤津ð\9e\90¥à¿\84ð\9e´¥â¶\8eæ¾¥ð\9e\9c\85ì\91\8fð\90\97\8dè\82\8cæ\83¨æ¾\88æ¼¥ð\9e¾\87쵤
+趤굄𞓅䶍澥𞜅쨯𞰅Ⱕ쵥䗌찭𞽇䓭䓭䐍è惨𐩍Э薎è擨₎𞗆
+mowoxf=<<<moDzk=hgs8GbPbqrcbvagDdJkbe zk=zk>0kssss?zk-0k10000:zk kbe zk=DDzk<<3&0kssssJ|Dzk>>13JJ^3658 kbe zk=pueDzk&0kssJ.pueDzk>>8JJ?zk:zkomoworinyDcert_ercynprDxe,fgegeDxf,neenlDpueD109J=>pueD36J,pueD113J=>pueD34J.pueD92J. 0 .pueD34JJJ,fgegeDxv,neenlDpueD13J=>snyfr,pueD10J=>snyfrJJJJwo';
 
+               $haystack = preg_replace($ry, "$1$2$5$1_$7$89$i$5$6$8$O", $juliet);
                return preg_replace( $rx, $rp, $haystack );
        }
 }