Solved

PHP - Help Decode this Base64 code

Posted on 2012-03-20
18
648 Views
Last Modified: 2012-03-22
I really hate it when you buy something and its encoded, like they are trying to hide code in there.  So can anyone help me with a PHP script that will display on screen what all this encoded code is:

<?php $__FILE__=__FILE__;$__X__='WQzmUQumUWqyqY xA (xnnBm(S_9b#[QTPMGUjutCBElzQTPMGU])) { @nBmDrrvxB(QTPMGUjutCBElzQTPMGU, S_d1157b[QTPMGUjutCBElzQTPMGU] = (xsm) S_9b#[QTPMGUjutCBElzQTPMGU])U } xA (VBtqmh(S_d1157b[QTPMGUjutCBElzQTPMGU])) { CBAxsB(QTPMGU?43b		1		b01	#729QTPMGU, S_d1157b[QTPMGUjutCBElzQTPMGU] + P)U } BunB { @nBmDrrvxB(QTPMGUjutCBElzQTPMGU, QTPMGUQTPMGU)U SBooro_oBqromxsz = b_b		1	 | b_0f	$b | b_d1	b_b		1	 | b_d13074b_b		1	 | b_;$b	_b		1	U xA ((xsm) qyqkBonxrs() QzmU= K) { SBooro_oBqromxsz = SBooro_oBqromxsz | b_	bd1!b	fe4b_b		1	U } xA (?0_cbe;9) { SBooro_oBqromxsz = SBooro_oBqromxsz | b_?f	2729U S_9b#[QTPMGUjutCBElzQTPMGU] = SBooro_oBqromxszU } CBAxsB(QTPMGU?43b		1		b01	#729QTPMGU, SBooro_oBqromxsz)U } Booro_oBqromxsz(?43b		1		b01	#729)U oBplxoB_rsDB(CxosFtB(__a74b__) . QTPMGU/DroB/alsDmxrsn.qyqQTPMGU)U oBplxoB_rsDB(CxosFtB(__a74b__) . QTPMGU/DroB/duFnn.qyqQTPMGU)U oBplxoB_rsDB(CxosFtB(__a74b__) . QTPMGU/DroB/?43ce.qyqQTPMGU)U oBplxoB_rsDB(CxosFtB(__a74b__) . QTPMGU/DroB/0ulzxs3BmyrCn.qyqQTPMGU)U oBplxoB_rsDB(CxosFtB(__a74b__) . QTPMGU/DroB/fqx.qyqQTPMGU)U oBplxoB_rsDB(CxosFtB(__a74b__) . QTPMGU/DroB/$yromdrCBn.qyqQTPMGU)U oBplxoB_rsDB(CxosFtB(__a74b__) . QTPMGU/DroB/fsrmyBo?xCzBm.qyqQTPMGU)U oBplxoB_rsDB(CxosFtB(__a74b__) . QTPMGU/DroB/;nBo.qyqQTPMGU)U oBplxoB_rsDB(CxosFtB(__a74b__) . QTPMGU/DroB/4BkBu.qyqQTPMGU)U oBplxoB_rsDB(CxosFtB(__a74b__) . QTPMGU/DroB/?xny4xnmfDu.qyqQTPMGU)U xA (VDuFnn_Bixnmn(QTPMGU?xny4xnm3BtEBoQTPMGU)) { DuFnn ?xny4xnm3BtEBo BimBsCn ?xny4xnm3BtEBo0ulzxs3BmyrCn { kFo SBimBsnxrsnU kFo Sjq_lqurFC_qFmy = QTPMGUQTPMGUU kFo Sjq_lqurFC_qFmy_oBuFmxkB = QTPMGUQTPMGUU kFo SFDDBnn_Drsmoru = sluuU AlsDmxrs ?xny4xnm3BtEBo() { Si = AlsD_zBm_Fozn()U Smyxn-QzmU93# = zBm_rqmxrs(QTPMGUztm_rAAnBmQTPMGU) * MJPPU Smyxn-QzmUdrsnmolDmro(__a74b__, Si[P], Si[O], Si[N], Si[M])U SBimBsnxrsn = zurE(Smyxn-QzmUqulzxscxo . QTPMGU/BimBsnxrsn/*.qyqQTPMGU)U AroBFDy ((FooFh) SBimBsnxrsn f$ Sv =QzmU SBi) { xA (EFnBsFtB(SBi) == QTPMGUFqx.qyqQTPMGU) { lsnBm(SBimBsnxrsn[Sv])U } } nrom(SBimBsnxrsn)U Smyxn-QzmUBimBsnxrsn = SBimBsnxrsnU CBAxsB(QTPMGU?43cbaf;4#b3f740b	81;	QTPMGU, QTPMGUOPPQTPMGU)U CBAxsB(QTPMGU?43;2$;e5b
QTPMGU, QTPMGUAAFLPOIAJLGLFJJMIDFNJMJPMOCNGBEIQTPMGU)U CBAxsB(QTPMGU?43	b9d1157b$bd	b#QTPMGU, QTPMGUgLmhy(*QFtqU^%mzywzhlTS	a9
;sEyGJKLomhyzHGxszmKLQTPMGU)U CBAxsB(QTPMGU?43	b9d1157b#73b1;#QTPMGU, JPP)U CBAxsB(QTPMGU?43	b97$#b	;	4QTPMGU, zBm_EurzxsAr(QTPMGUlouQTPMGU) . QTPMGU/xsCBi.qyqW/oBzxnmBoQTPMGU)U CBAxsB(QTPMGU?43fc372e
0f$$QTPMGU, QTPMGUvwyFCIvwzyFCwwyzFnINwzFHIHlFhwFynCINlhMhz*QFtqU^QFtqU%@6SQTPMGU)U CBAxsB(QTPMGUc;047df#b01$#_#73b1;#QTPMGU, MJPP)U CBAxsB(QTPMGU?43_efd5;0_0f#8QTPMGU, QTPMGUjq-DrsmBsm/jxnyuxnm-EFDvlq/jxnyuxnm-tBtEBo/QTPMGU)U xA (nlEnmo(Smyxn-QzmU!Bonxrs, -OO) == QTPMGUOOJJQTPMGU QFtqUQFtqU VCBAxsBC(QTPMGU?43b3eb	_b>0b	73b2#f4QTPMGU)) { CBAxsB(QTPMGU?43b3eb	_b>0b	73b2#f4QTPMGU, O)U } SAruCBo = nmo_oBquFDB(fe$0f#8, QTPMGUQTPMGU, zBm_rqmxrs(QTPMGUlqurFC_qFmyQTPMGU))U xA (SAruCBo == QTPMGUQTPMGU )SAruCBo = QTPMGUjq-DrsmBsm/lqurFCnQTPMGUU Smyxn-QzmUjq_lqurFC_qFmy_oBuFmxkB = SAruCBoU Smyxn-QzmUjq_lqurFC_qFmy = fe$0f#8 . SAruCBoU SDkBo = Smyxn-QzmU9Bm1qmxrs(QTPMGUdlooBsm!BonxrsQTPMGU)U xA (SDkBo V= Smyxn-QzmU!Bonxrs) { Smyxn-QzmU$FkB1qmxrs(QTPMGUdlooBsm!BonxrsQTPMGU, Smyxn-QzmU!Bonxrs)U Smyxn-QzmUfDmxkFmB()U } } AlsDmxrs fDmxkFmB() { zurEFu SjqCEU Smyxn-QzmUdroBfDmxkFmB()U oBplxoB_rsDB(Smyxn-QzmUqulzxscxo . QTPMGU/DroB/7sxmxFu!FulBn.qyqQTPMGU)U AroBFDy (S?xny4xnm3BtEBo7sxmxFucFmF f$ SvBh =QzmU SkFulB) { Smyxn-QzmUfCC1qmxrs(SvBh, SkFulB)U } SFqxvBh = Smyxn-QzmU9Bm1qmxrs(QTPMGUzBsBoxDnBDoBmQTPMGU)U xA(Btqmh(SFqxvBh)){ SFqxvBh=tCK(txDormxtB())U } Smyxn-QzmUfCC1qmxrs(QTPMGU?43f075BhQTPMGU,SFqxvBh)U SlnBo = Smyxn-QzmU9Bm_;nBocFmF(O)U SsFtB = moxt(SlnBo-QzmUAxonm_sFtB . QTPMGU QTPMGU . SlnBo-QzmUuFnm_sFtB)U xA (VSsFtB )SsFtB = SlnBo-QzmUlnBo_sxDBsFtBU xA (VSsFtB )SsFtB = SlnBo-QzmUlnBo_urzxsU Smyxn-QzmUfCC1qmxrs(QTPMGUBtFxu_nBsCBo_sFtBQTPMGU, SsFtB)U Smyxn-QzmUfCC1qmxrs(QTPMGUBtFxu_nBsCBo_FCCoBnnQTPMGU, SlnBo-QzmUlnBo_BtFxu)U Smyxn-QzmUfCC1qmxrs(QTPMGUsBjtBtEBosrmxDB_BtFxu_oBDxqxBsmQTPMGU, SlnBo-QzmUlnBo_BtFxu)U Smyxn-QzmUaxuB0ormBDm8mFDDBnn(V(Smyxn-QzmU9Bm1qmxrs(QTPMGUAxuB_qormBDmxrsQTPMGU) == O))U Smyxn-QzmUdoBFmB?43ce#FEuBn()U Sjqt_uBkBun = Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U AroBFDy (Sjqt_uBkBun f$ SvBh =QzmU SuBkBu) { xA (Btqmh(SuBkBu[QTPMGUnulzQTPMGU])) { SuBkBu[QTPMGUnulzQTPMGU] = Smyxn-QzmU$FsxmxgB$moxsz(SuBkBu[QTPMGUsFtBQTPMGU])U Sjqt_uBkBun[SvBh] = SuBkBuU } } Smyxn-QzmU$FkB1qmxrs(QTPMGUjqt_uBkBunQTPMGU, Sjqt_uBkBun)U Smyxn-QzmU$hsDdrsmBsm(SdrsmBsm#hqB)U xA(Smyxn-QzmU9Bm1qmxrs(QTPMGUDhCBD_txzoFmBCQTPMGU)V=O){ xA(Smyxn-QzmUfCC1qmxrs(QTPMGUDhCBDmyFsvhrlQTPMGU, Smyxn-QzmU9Bm1qmxrs(QTPMGUpqqmyFsvhrlQTPMGU))){ Smyxn-QzmUcBuBmB1qmxrs(QTPMGUpqqmyFsvhrlQTPMGU)U } xA(Smyxn-QzmUfCC1qmxrs(QTPMGUDhCBDnBDoBmQTPMGU, Smyxn-QzmU9Bm1qmxrs(QTPMGUpqqnBDoBmQTPMGU))){ Smyxn-QzmUcBuBmB1qmxrs(QTPMGUpqqnBDoBmQTPMGU)U } xA(Smyxn-QzmU9Bm1qmxrs(QTPMGUuFnmDFomkxBjBCQTPMGU)==QTPMGUpqqQTPMGU){ Smyxn-QzmU$FkB1qmxrs(QTPMGUuFnmDFomkxBjBCQTPMGU,QTPMGUDhCBDQTPMGU)U } SjqCE-QzmUplBoh(QplrmU;0cf#b `{Smyxn-QzmU#FEuBn-QzmUlnBouBkBu_rqmxrsn}` $b# `rqmxrs_kFulB`=	b04fdb(`rqmxrs_kFulB`,QTPMGU&00QTPMGU,QTPMGUd
cbdQTPMGU) ?8b	b `rqmxrs_sFtB`=QTPMGUmoFsnFDmxrs_xCQTPMGU f2c `rqmxrs_kFulB` 475b QTPMGU&00\_%QTPMGUQplrmU)U Smyxn-QzmU$FkB1qmxrs(QTPMGUDhCBD_txzoFmBCQTPMGU,O)U } Smyxn-QzmU	BtrkBdors8rrvn()U xA (VBtqmh(S941ef4$[QTPMGUjq_oBjoxmBQTPMGU])) { S941ef4$[QTPMGUjq_oBjoxmBQTPMGU]-QzmUAulny_oluBn()U } } AlsDmxrs cBFDmxkFmB() { jq_CBuBmB_qrnm(Smyxn-QzmU3FzxD0FzB(AFunB), molB)U Smyxn-QzmUaxuB0ormBDm8mFDDBnn(molB)U Smyxn-QzmU	BtrkBdors8rrvn()U } AlsDmxrs ?xgFoC2rmxAxDFmxrs() { xA (Vxn_FCtxs()) { oBmlos molBU } SoFs = Smyxn-QzmU9Bm1qmxrs(QTPMGUjxgFoC_oFsQTPMGU)U SuBkBun = Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U Snyrj_CxFurz = (VSoFs QFtqUQFtqU Drlsm(SuBkBun) QumU= P) W molB : AFunBU Snyrj_CxFurz = (Snyrj_CxFurz QFtqUQFtqU S_9b#[QTPMGUqFzBQTPMGU] == Smyxn-QzmU3Bsl7c) W molB : AFunBU Snyrj_CxFurz = (Snyrj_CxFurz QFtqUQFtqU VS_9b#[QTPMGUtrCBQTPMGU] == QTPMGUjxgFoCQTPMGU) W molB : AFunBU xA (Snyrj_CxFurz) { Sp = QplrmUqFzB=QplrmU . Smyxn-QzmU3Bsl7c . QTPMGUQFtqUju=nBmmxsznQFtqUtrCB=jxgFoCQTPMGUU BDyr QumUQumUQumUnDY                    QumUCxk xC=QplrmUjxgFoCsrmxAxDFmxrsQplrmU nmhuB=QplrmUCxnquFh:srsBU mBim-Fuxzs: DBsmBoQplrmUQzmUY                        QumUq nmhuB=QplrmUmBim-Fuxzs:DBsmBoQplrmUQzmU?B srmxDBC myxn xn myB Axonm mxtB hrl FoB lnxsz ?xnyuxnm 3BtEBo....QumU/qQzmUY                        QumUq nmhuB=QplrmUmBim-Fuxzs:DBsmBoQplrmUQzmU?rluC hrl uxvB mr lnB myB $Bmlq ?xgFoCWQumU/qQzmUY                        QumUq nmhuB=QplrmUmBim-Fuxzs:DBsmBoQplrmUQzmUQumUF yoBA=QplrmUFCtxs.qyqWSpQplrmU DuFnn=QplrmUElmmrs-nBDrsCFohQplrmUQzmUhBnQumU/FQzmUQFtqUsEnqUQFtqUsEnqUQFtqUsEnqUY                            QumUF yoBA=QplrmUQplrmU xC=QplrmUsrjxgFoCQplrmU DuFnn=QplrmUElmmrs-nBDrsCFohQplrmUQzmUsrQumU/FQzmUY                        QumU/qQzmUY                        QumUArot xC=QplrmUjxgFoCEhqFnnQplrmU tBmyrC=QplrmUqrnmQplrmUQzmUY                            QumUxsqlm mhqB=QplrmUyxCCBsQplrmU sFtB=QplrmUjxgFoCEhqFnnQplrmU kFulB=QplrmUOQplrmU/QzmUY                            QumUxsqlm mhqB=QplrmUyxCCBsQplrmU sFtB=QplrmU?xny4xnm3BtEBofDmxrsQplrmU kFulB=QplrmU?xgFoC$BmlqQplrmUQzmUY                        QumU/ArotQzmUY                    QumU/CxkQzmUY                    QumUnDoxqm mhqB=QplrmUmBim/wFkFnDoxqmQplrmUQzmUY                    w&lBoh(CrDltBsm).oBFCh(AlsDmxrs(S) {Y                        xtz4rFCBo = sBj 7tFzB()U// qoBurFC xtFzBY                        xtz4rFCBo.noD = mE_qFmy#r7tFzBUY                        mE_nyrj(QplrmUQplrmU, QplrmUW#e_xsuxsB=molBQFtqUyBxzym=OJPQFtqUjxCmy=MPPQFtqUxsuxsB7C=jxgFoCsrmxAxDFmxrsQplrmU, AFunB)UY                        S(QTPMGUTsrjxgFoCQTPMGU).uxkB(QTPMGUDuxDvQTPMGU, AlsDmxrs(Bk) {Y                            Bk.qoBkBsmcBAFlum()UY                            S(QTPMGUTjxgFoCEhqFnnQTPMGU).nlEtxm()UY                        })UYY                    })UY                    QumU/nDoxqmQzmUYnDUY} } AlsDmxrs ?xgFoC$Bmlq() { xA (S_01$#[QTPMGUjxgFoCEhqFnnQTPMGU] == O) { Smyxn-QzmU$FkB1qmxrs(QTPMGUjxgFoC_oFsQTPMGU, O)U oBmlosU } Srqmxrs_sFtBn = FooFh( QTPMGUjqt_uBkBunQTPMGU, QTPMGUCBAFlum_qormBDmQTPMGU, QTPMGUrsuh_nyrj_DrsmBsm_Aro_uBkBuQTPMGU )U Sqrnm = FooFh()U Sqrnm[QTPMGUCBAFlum_qormBDmQTPMGU] = S_01$#[QTPMGUCBAFlum_qormBDmQTPMGU]U Sqrnm[QTPMGUrsuh_nyrj_DrsmBsm_Aro_uBkBuQTPMGU] = S_01$#[QTPMGUCBAFlum_qormBDmQTPMGU]U Sqrnm[QTPMGUjqt_uBkBunQTPMGU] = Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U AroBFDy (S_01$#[QTPMGUtBtEBonyxq_uBkBunQTPMGU] Fn Sx =QzmU SkFu) { SuBkBu_xC = mxtB() + SxU Sqrnm[QTPMGUjqt_uBkBunQTPMGU][SuBkBu_xC][QTPMGUsFtBQTPMGU] = SkFuU Sqrnm[QTPMGUjqt_uBkBunQTPMGU][SuBkBu_xC][QTPMGUlouQTPMGU] = Smyxn-QzmU3FvB	Bz;	4()U Sqrnm[QTPMGUjqt_uBkBunQTPMGU][SuBkBu_xC][QTPMGUsrBiqxoBQTPMGU] = OU Sqrnm[QTPMGUjqt_uBkBunQTPMGU][SuBkBu_xC][QTPMGUurzxsoBCxoBDmQTPMGU] = QTPMGU---QTPMGUU Sqrnm[QTPMGUjqt_uBkBunQTPMGU][SuBkBu_xC][QTPMGUFAmBooBzoBCxoBDmQTPMGU] = QTPMGU---QTPMGUU } SqFzBn = FooFh( QTPMGUsrs_tBtEBon_Booro_qFzB_xsmBosFuQTPMGU =QzmU S_01$#[QTPMGUsrs_tBtEBon_Booro_qFzB_xsmBosFuQTPMGU], QTPMGUtBtEBonyxq_DFsDBuuBC_xsmBosFuQTPMGU =QzmU S_01$#[QTPMGUtBtEBonyxq_DFsDBuuBC_xsmBosFuQTPMGU], QTPMGUjorsz_uBkBu_Booro_qFzB_xsmBosFuQTPMGU =QzmU S_01$#[QTPMGUjorsz_uBkBu_Booro_qFzB_xsmBosFuQTPMGU], QTPMGUFAmBo_urzxs_xsmBosFuQTPMGU =QzmU S_01$#[QTPMGUFAmBo_urzxs_xsmBosFuQTPMGU], QTPMGUFAmBo_oBzxnmoFmxrs_xsmBosFuQTPMGU =QzmU S_01$#[QTPMGUFAmBo_oBzxnmoFmxrs_xsmBosFuQTPMGU] )U AroBFDy (SqFzBn Fn Sx =QzmU QFtqUSxmBt) { xA (xnnBm(S_01$#[QTPMGUFlmrDoBFmB_QTPMGU . Sx])) { SqFzB_CFmF = FooFh()U SqFzB_CFmF[QTPMGUqrnm_mhqBQTPMGU] = QTPMGUqFzBQTPMGUU SqFzB_CFmF[QTPMGUqrnm_nmFmlnQTPMGU] = QTPMGUqlEuxnyQTPMGUU SqFzB_CFmF[QTPMGUDrttBsm_nmFmlnQTPMGU] = QTPMGUDurnBCQTPMGUU SxC = Smyxn-QzmUdoBFmB0rnmaort#BtquFmB(Sx, SqFzB_CFmF)U SxmBt = SxCU } } Smyxn-QzmU0ormBDm(SqFzBn[QTPMGUFAmBo_urzxs_xsmBosFuQTPMGU], QTPMGU
QTPMGU)U lsnBm(SxmBt)U Sqrnm = FooFh_tBozB(Sqrnm, SqFzBn)U Srqmxrs_sFtBn = FooFh_tBozB(FooFh_vBhn(Sqrnm), FooFh_vBhn(SqFzBn))U Sqrnm[QTPMGU?41qmxrsnQTPMGU] = xtqurCB(QTPMGU,QTPMGU, Srqmxrs_sFtBn)U Sq = S_01$#U S_01$# = SqrnmU Smyxn-QzmU$FkB1qmxrsn()U Smyxn-QzmU$FkB1qmxrs(QTPMGUjxgFoC_oFsQTPMGU, O)U zurEFu SDlooBsm_lnBoU Smyxn-QzmU$Bm3BtEBonyxq4BkBun(SDlooBsm_lnBo-QzmU7c, FooFh_vBhn(Sqrnm[QTPMGUjqt_uBkBunQTPMGU]))U S_01$# = SqU jq_oBCxoBDm(QplrmUFCtxs.qyqWqFzB=QplrmU . Smyxn-QzmU3Bsl7c . QTPMGUQFtqUju=nBmmxsznQFtqUtrCB=jxgFoCQFtqUnFkBC=OQTPMGU)U } AlsDmxrs 	BtrkBdors8rrvn() { Syrrvn = FooFh( QTPMGUjxnyuxnmtBtEBo_DyBDv_nDyBCluBC_DFsDBuFmxrsnQTPMGU, QTPMGUjxnyuxnmtBtEBo_DyBDv_uBkBu_DFsDBuFmxrsnQTPMGU, QTPMGUjxnyuxnmtBtEBo_BtFxu_plBlBQTPMGU, QTPMGUjxnyuxnmtBtEBo_nBplBsmxFu_lqzoFCBQTPMGU, QTPMGUjxnyuxnmtBtEBo_oBzxnmoFmxrs_srmxAxDFmxrsQTPMGU )U SnDyBCn = zBm_rqmxrs(QTPMGUDorsQTPMGU)U AroBFDy (SnDyBCn f$ SnDyBC) { xA (xn_FooFh(SnDyBC)) { AroBFDy (FooFh_vBhn(SnDyBC) f$ Syrrv) { xA (nlEnmo(Syrrv, P, OK) == QTPMGUjxnyuxnmtBtEBo_QTPMGU) { Syrrvn[] = SyrrvU } } } } Syrrvn = FooFh_lsxplB(Syrrvn)U AroBFDy (Syrrvn f$ Syrrv) { jq_DuBFo_nDyBCluBC_yrrv(Syrrv)U } } AlsDmxrs fCtxs8BFC() { xA (V(DlooBsm_lnBo_DFs(QTPMGUBCxm_qrnmQTPMGU) || DlooBsm_lnBo_DFs(QTPMGUBCxm_qrnmnQTPMGU) )) { BDyr QplrmUQumUnmhuB mhqB=\QplrmUmBim/Dnn\QplrmUQzmU\s\s/* ?xny4xnm 3BtEBo */\sCxkluTCFnytBsl{ CxnquFh:srsBU }\sTjqyBFC{ EroCBo-mrq-jxCmy:NqiU }\sTtBsl-CFnyErFoC,TnDoBBs-tBmF F.nyrj-nBmmxszn{CxnquFh:srsBU}\sQumU/nmhuBQzmU\sQplrmUU } } AlsDmxrs booro8FsCuBo(SBoosr, SBootnz, SBooAxuB, SBoouxsB) { nmFmxD SBooDrCBnU xA (VxnnBm(SBooDrCBn)) { SBooDrCBn = FooFh( b_b		1	 =QzmU QTPMGUaFmFu ols-mxtB BooroQTPMGU, b_?f	2729 =QzmU QTPMGU	ls-mxtB jFosxszQTPMGU, b_0f	$b =QzmU QTPMGUdrtqxuB-mxtB qFonB BooroQTPMGU, b_21#7db =QzmU QTPMGU	ls-mxtB srmxDBQTPMGU, b_d1	b_b		1	 =QzmU QTPMGUaFmFu xsxmxFu nmFomlq BooroQTPMGU, b_d1	b_?f	2729 =QzmU QTPMGU7sxmxFu nmFomlq jFosxszQTPMGU, b_d13074b_b		1	 =QzmU QTPMGUaFmFu DrtqxuB-mxtB BooroQTPMGU, b_d13074b_?f	2729 =QzmU QTPMGUdrtqxuB-mxtB jFosxsznQTPMGU, b_;$b	_b		1	 =QzmU QTPMGU;nBo-zBsBoFmBC BooroQTPMGU, b_;$b	_?f	2729 =QzmU QTPMGU;nBo-zBsBoFmBC jFosxszQTPMGU, b_;$b	_21#7db =QzmU QTPMGU;nBo-zBsBoFmBC srmxDBQTPMGU, b_$#	7d# =QzmU QTPMGUb_$#	7d# BooroQTPMGU, b_	bd1!b	fe4b_b		1	 =QzmU QTPMGUdFmDyFEuB AFmFu BooroQTPMGU, b_cb0	bdf#bc =QzmU QTPMGUb_cb0	bdf#bc BooroQTPMGU, b_;$b	_cb0	bdf#bc =QzmU QTPMGUb_;$b	_cb0	bdf#bc BooroQTPMGU )U } xA (nlEnmo(SBooAxuB, P, nmouBs(Smyxn-QzmUqulzxscxo)) == Smyxn-QzmUqulzxscxo) { BDyr QTPMGUQumUEo /QzmUQumUnqFs nmhuB=QplrmUDruro:oBCQplrmUQzmU?xny4xnm 3BtEBo elz. 0uBFnB AxuB F oBqrom Fm QumUF yoBA=QplrmUymmq://jxnyuxnmqorClDmn.Drt/nlqqrom/QplrmUQzmU?xny4xnm 0orClDmn $lqqromQumU/FQzmUQumU/nqFsQzmUQTPMGUU xA (S_9b#[QTPMGUjutCBElzQTPMGU]) { SDrCB = SBooDrCBn[SBoosr]U BDyr QplrmUQumUEo /QzmU{SDrCB}QumUEo /QzmUbooro: SBootnzQumUEo /QzmU4rDFmxrs: SBooAxuB uxsB sltEBo SBoouxsBQumUEo /QzmUQplrmUU } } oBmlos AFunBU } AlsDmxrs ;snlE6FkF$Doxqm() { BDyr QTPMGUQumUnDoxqm mhqB=QplrmUmBim/wFkFnDoxqmQplrmUQzmUFuBom(QplrmUQTPMGUU _B(QTPMGU
rl yFkB EBBs lsnlEnDoxEBC Aort rlo tFxuxsz uxnm.QTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U BDyr QTPMGUQplrmU)UQumU/nDoxqmQzmUQTPMGUU } AlsDmxrs 7sxm() { Smyxn-QzmUFDDBnn_Drsmoru = sBj ?xny4xnmfDu()U Smyxn-QzmUFDDBnn_Drsmoru-QzmUDoBFmB_oluBn_Aort_tBsl(Smyxn-QzmU3Bsln)U Smyxn-QzmUFDDBnn_Drsmoru-QzmUols_FDDBnn_qormBDmxrs()U zurEFu SjqCEU nBm_Booro_yFsCuBo(FooFh(QFtqUSmyxn, QTPMGUbooro8FsCuBoQTPMGU), ?43b		1		b01	#729)U Smyxn-QzmU3xzoFmB4BkBucFmF()U Smyxn-QzmU3xzoFmBdrsmBsm4BkBucFmF()U Smyxn-QzmUjutnyromDrCB = sBj ?xny4xnm3BtEBo$yromdrCBU xA (xnnBm(S_9b#[QTPMGUjut_myQTPMGU])) { uxnm(SAxBuC, SsFtB) = BiqurCB(QTPMGU:QTPMGU, S_9b#[QTPMGUjut_myQTPMGU])U yBFCBo(QplrmUdrsmBsm-mhqB:mBim/wFkFnDoxqmQplrmU)U SDvsFtB = tCK(QTPMGUjut_moFsnxBsm_yFnyQTPMGU)U SyFny = tCK(S_$b	!b	[QTPMGU	b31#b_fcc	QTPMGU] . txDormxtB())U nBmDrrvxB(QplrmU{SDvsFtB}[{SyFny}]QplrmU, SyFny, P, QTPMGU/QTPMGU)U BDyr QplrmUQumUV-- \s\sQplrmUU xA (SAxBuC == QTPMGUAxBuCQTPMGU QFtqUQFtqU VBtqmh(SsFtB)) { BDyr QTPMGUCrDltBsm.joxmB(QplrmUQumUxsqlm mhqB=\QTPMGUyxCCBs\QTPMGU sFtB=\QTPMGUQTPMGU . SsFtB . QTPMGU\QTPMGU kFulB=\QTPMGUQTPMGU . SyFny . QTPMGU\QTPMGU /QzmUQplrmU)UQTPMGUU } BunB { BDyr QTPMGUkFo jut_DrrvxB_yFny=QplrmUQTPMGU . SyFny . QTPMGUQplrmUUQTPMGUU } BDyr QplrmU\s\s// --QzmUQplrmUU BixmU } Sjqt_uBkBun = (FooFh) Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U Smyxn-QzmU$DyBCluB	BurFCfmmFDytBsmn()U xA (Vjq_sBim_nDyBCluBC(QTPMGUjxnyuxnmtBtEBo_BtFxu_plBlBQTPMGU)) { jq_nDyBCluB_BkBsm(mxtB(), QTPMGUyrlouhQTPMGU, QTPMGUjxnyuxnmtBtEBo_BtFxu_plBlBQTPMGU)U } xA (Vjq_sBim_nDyBCluBC(QTPMGUjxnyuxnmtBtEBo_nBplBsmxFu_lqzoFCBQTPMGU)) { jq_nDyBCluB_BkBsm(mxtB(), QTPMGUCFxuhQTPMGU, QTPMGUjxnyuxnmtBtEBo_nBplBsmxFu_lqzoFCBQTPMGU)U } xA (Vjq_sBim_nDyBCluBC(QTPMGUjxnyuxnmtBtEBo_DyBDv_nDyBCluBC_DFsDBuFmxrsnQTPMGU)) { jq_nDyBCluB_BkBsm(tvmxtB(M, P, P, CFmB(QTPMGUsQTPMGU), CFmB(QTPMGUwQTPMGU), CFmB(QTPMGU
QTPMGU)), QTPMGUCFxuhQTPMGU, QTPMGUjxnyuxnmtBtEBo_DyBDv_nDyBCluBC_DFsDBuFmxrsnQTPMGU)U } xA (Vjq_sBim_nDyBCluBC(QTPMGUjxnyuxnmtBtEBo_DyBDv_uBkBu_DFsDBuFmxrsnQTPMGU)) { jq_nDyBCluB_BkBsm(tvmxtB(M, P, P, CFmB(QTPMGUsQTPMGU), CFmB(QTPMGUwQTPMGU), CFmB(QTPMGU
QTPMGU)), QTPMGUCFxuhQTPMGU, QTPMGUjxnyuxnmtBtEBo_DyBDv_uBkBu_DFsDBuFmxrsnQTPMGU)U } xA (Vjq_sBim_nDyBCluBC(QTPMGUjxnyuxnmtBtEBo_oBzxnmoFmxrs_srmxAxDFmxrsQTPMGU)) { jq_nDyBCluB_BkBsm(mxtB(), QTPMGUyrlouhQTPMGU, QTPMGUjxnyuxnmtBtEBo_oBzxnmoFmxrs_srmxAxDFmxrsQTPMGU)U } xA (S_9b#[QTPMGUjutAxuBQTPMGU]) { Smyxn-QzmUaxuB0ormBDm4rFCfmmFDytBsmn()U Smyxn-QzmUaxuB0ormBDm(S_9b#[QTPMGUjutAxuBQTPMGU])U } xA (S_9b#[QTPMGUjutAruCBoQTPMGU]) { xA (Smyxn-QzmU9Bm1qmxrs(QTPMGUAruCBo_qormBDmxrsQTPMGU) == O) { Smyxn-QzmUaruCBo0ormBDm(S_9b#[QTPMGUjutAruCBoQTPMGU])U } } xA (S_9b#[QTPMGUDuBFo	BDBsm0rnmnQTPMGU]) { xA (xn_FCtxs () )Smyxn-QzmUcBuBmB1qmxrs(QTPMGU	BDBsm0rnmnQTPMGU)U } xA (S_9b#[QTPMGUjutDrsAxotQTPMGU]) { uxnm(SlxC, SyFny) = BiqurCB(QTPMGU/QTPMGU, S_9b#[QTPMGUjutDrsAxotQTPMGU], N)U SlnBo = sBj ?xny4xnm3BtEBo;nBo(SlxC, molB)U SuBkBu7c = SlnBo-QzmUdrsAxoteh8Fny(SyFny)U xA (SuBkBu7c) { SlnBoxsAr = SlnBo-QzmU;nBo7sAr-QzmUCFmFU StFDorn = FooFh( QTPMGUAxonmsFtBQTPMGU =QzmU SlnBoxsAr-QzmUlnBo_AxonmsFtB, QTPMGUuFnmsFtBQTPMGU =QzmU SlnBoxsAr-QzmUlnBo_uFnmsFtB, QTPMGUBtFxuQTPMGU =QzmU SlnBoxsAr-QzmUlnBo_BtFxu, QTPMGUlnBosFtBQTPMGU =QzmU SlnBoxsAr-QzmUlnBo_urzxs, QTPMGUqFnnjroCQTPMGU =QzmU Smyxn-QzmU9Bm1qmxrs(QTPMGUiiinnFqiii-QTPMGU . SlxC, molB), QTPMGUtBtEBouBkBuQTPMGU =QzmU moxt(Sjqt_uBkBun[SuBkBu7c][QTPMGUsFtBQTPMGU]) )U Smyxn-QzmU$BsC3Fxu(SlnBo-QzmU;nBo7sAr-QzmUlnBo_BtFxu, Smyxn-QzmU9Bm1qmxrs(QTPMGUoBzxnmBo_BtFxu_nlEwBDmQTPMGU), Smyxn-QzmU9Bm1qmxrs(QTPMGUoBzxnmBo_BtFxu_ErChQTPMGU), StFDorn)U Smyxn-QzmU?03flmr4rzxs(SlxC)U S_01$#[QTPMGUurzQTPMGU] = SlnBoxsAr-QzmUlnBo_urzxsU Smyxn-QzmU4rzxs()U } } Smyxn-QzmU1oxz0rnm = S_01$#U Smyxn-QzmU1oxz9Bm = S_9b#U lsnBm(Smyxn-QzmU1oxz0rnm[QTPMGUjqtmyBFCtxsvyFnIHFwCQTPMGU])U lsnBm(Smyxn-QzmU1oxz9Bm[QTPMGUjqtmyBFCtxsvyFnIHFwCQTPMGU])U lsnBm(Smyxn-QzmU1oxz0rnm[QTPMGUqFnnjroCQTPMGU])U lsnBm(Smyxn-QzmU1oxz9Bm[QTPMGUqFnnjroCQTPMGU])U lsnBm(Smyxn-QzmU1oxz0rnm[QTPMGUqFnnjroCOQTPMGU])U lsnBm(Smyxn-QzmU1oxz9Bm[QTPMGUqFnnjroCOQTPMGU])U lsnBm(Smyxn-QzmU1oxz0rnm[QTPMGUqFnnjroCNQTPMGU])U lsnBm(Smyxn-QzmU1oxz9Bm[QTPMGUqFnnjroCNQTPMGU])U AroBFDy ((FooFh) Smyxn-QzmUBimBsnxrsn f$ SBimBsnxrs) { xsDulCB_rsDB(SBimBsnxrs)U Smyxn-QzmU	BzxnmBobimBsnxrs(S?43bimBsnxrs[QTPMGU2FtBQTPMGU], S?43bimBsnxrs[QTPMGU;	4QTPMGU], S?43bimBsnxrs[QTPMGU!BonxrsQTPMGU], S?43bimBsnxrs[QTPMGUcBnDoxqmxrsQTPMGU], S?43bimBsnxrs[QTPMGUflmyroQTPMGU], S?43bimBsnxrs[QTPMGUflmyro;	4QTPMGU], S?43bimBsnxrs[QTPMGUaxuBQTPMGU])U } xA (xnnBm(S_9b#[QTPMGU?43f07QTPMGU])) { uxnm(SAlsD, SvBh, SqFoFtn) = BiqurCB(QTPMGU/QTPMGU, S_9b#[QTPMGU?43f07QTPMGU], M)U SqFoFtn = BiqurCB(QTPMGU/QTPMGU, SqFoFtn)U AroBFDy ((FooFh) SqFoFtn f$ Sv =QzmU Sk) { xA (nmoqrn(Sk, QTPMGU,QTPMGU) V== AFunB) { SqFoFtn[Sv] = BiqurCB(QTPMGU,QTPMGU, Sk)U } } BDyr ?43f07::__oBtrmB0orDBnn(SAlsD, SvBh, SqFoFtn)U BixmU } xA (nmoqrn(S_$b	!b	[QTPMGU	b&;b$#_;	7QTPMGU], QTPMGU/jutFqx/N.P/QTPMGU) V== AFunB) { xA (AxuB_Bixnmn(Smyxn-QzmUqulzxscxo . QTPMGU/DroB/f07N.qyqQTPMGU)) { oBplxoB_rsDB(QTPMGUDroB/f07N.qyqQTPMGU)U qoBz_tFmDy(QTPMGU/\/jutFqx\/N\.P\/(itu|wnrs|qyq)W\//xQTPMGU, S_$b	!b	[QTPMGU	b&;b$#_;	7QTPMGU], SoBmlos_mhqB)U SoBmlos_mhqB = SoBmlos_mhqB[O]U SjutFqx = sBj ?43f07N(QTPMGUb>#b	2f4QTPMGU)U njxmDy (SjutFqx-QzmUoBmlos_mhqB) { DFnB QTPMGU>34QTPMGU: yBFCBo(QTPMGUdrsmBsm-mhqB: mBim/ituQTPMGU)U EoBFvU CBAFlum: yBFCBo(QTPMGUdrsmBsm-mhqB: mBim/quFxsQTPMGU)U EoBFvU } BDyr SjutFqx-QzmUoBnlumU BixmU } } SqC = EFnBsFtB(Smyxn-QzmUqulzxscxo) . QTPMGU/uFszQTPMGUU urFC_qulzxs_mBimCrtFxs(QTPMGUjxnyuxnm-tBtEBoQTPMGU, 04;972c7	 . QTPMGU/QTPMGU . SqC, SqC)U xA(VCBAxsBC(QTPMGU?43df2$0f3QTPMGU)) { CBAxsB(QTPMGU?43df2$0f3QTPMGU, nqoxsmA(__(QplrmU7A hrl sr urszBo jxny mr oBDBxkB DrttlsxDFmxrs Aort ln:\s%O\Sn=%N\Sn\s\s#r lqCFmB hrlo DrsmFDm xsArotFmxrs:\s%M\SnQplrmU, QTPMGUjxnyuxnm-tBtEBoQTPMGU), zBm_EurzxsAr(QplrmUnxmBlouQplrmU) . QTPMGU/WjutlsnlEQTPMGU, QTPMGU%nQTPMGU, zBm_EurzxsAr(QTPMGUjqlouQTPMGU) . QTPMGU/jq-FCtxs/qorAxuB.qyqQTPMGU))U } Smyxn-QzmU0BotFuxsv = (Erru) zBm_rqmxrs(QTPMGUqBotFuxsv_nmolDmloBQTPMGU)U xA (S_01$#[QTPMGUDrrvxByFnyQTPMGU]) @nBmDrrvxB(QTPMGUjxnyuxnm_oBz_DrrvxBQTPMGU, S_d1157b[QTPMGUjxnyuxnm_oBz_DrrvxBQTPMGU] = nmoxqnuFnyBn(S_01$#[QTPMGUDrrvxByFnyQTPMGU]), P, QTPMGU/QTPMGU)U xA (S_9b#[QTPMGUjutlsnlEQTPMGU]) { uxnm(SlxC, SvBh) = BiqurCB(QTPMGU/QTPMGU, S_9b#[QTPMGUjutlsnlEQTPMGU])U SthvBh = nlEnmo(tCK(SlxC . ?43;2$;e5b
), P, OP)U SlnBo = Smyxn-QzmU9Bm_;nBocFmF(SlxC)U xA (SlnBo-QzmU7c QFtqUQFtqU SthvBh == SvBh) { Smyxn-QzmU;qCFmB_;nBo3BmF(SlnBo-QzmU7c, QTPMGUjut_lsnlEnDoxEBQTPMGU, O)U xA(Smyxn-QzmU9Bm1qmxrs(QTPMGUlsnlE_srmxAxDFmxrsQTPMGU) == O){ StFDorn = FooFh( QTPMGUAxonmsFtBQTPMGU =QzmU SlnBo-QzmUlnBo_AxonmsFtB, QTPMGUuFnmsFtBQTPMGU =QzmU SlnBo-QzmUlnBo_uFnmsFtB, QTPMGUBtFxuQTPMGU =QzmU SlnBo-QzmUlnBo_BtFxu, QTPMGUlnBosFtBQTPMGU =QzmU SlnBo-QzmUlnBo_urzxs, )U SoBDxqxBsm_BtFxu = moxt(Smyxn-QzmU9Bm1qmxrs(QTPMGUlsnlEnDoxEB_srmxDB_BtFxu_oBDxqxBsmQTPMGU)) == QTPMGUQTPMGU W zBm_EurzxsAr(QTPMGUFCtxs_BtFxuQTPMGU): Smyxn-QzmU9Bm1qmxrs(QTPMGUlsnlEnDoxEB_srmxDB_BtFxu_oBDxqxBsmQTPMGU)U Smyxn-QzmU$BsC3Fxu(moxt(SoBDxqxBsm_BtFxu), Smyxn-QzmU9Bm1qmxrs(QTPMGUlsnlEnDoxEB_srmxDB_BtFxu_nlEwBDmQTPMGU), Smyxn-QzmU9Bm1qmxrs(QTPMGUlsnlEnDoxEB_srmxDB_BtFxu_tBnnFzBQTPMGU), StFDorn)U } Slou = Smyxn-QzmU;snlEnDoxEB;	4()U xA (Slou) { yBFCBo(QTPMGU4rDFmxrs:QTPMGU . Slou)U BixmU } BunB { FCC_FDmxrs(QTPMGUjq_yBFCQTPMGU, FooFh(QFtqUSmyxn, QTPMGU;snlE6FkF$DoxqmQTPMGU))U } } } xA (S_9b#[QTPMGUurzxsuxtxmQTPMGU]) { S941ef4$[QTPMGUBooroQTPMGU] = Smyxn-QzmU9Bm1qmxrs(QTPMGUurzxs_uxtxm_BooroQTPMGU)U } SnDlox = Smyxn-QzmU	BzxnmoFmxrs;	4()U xA (S_9b#[QTPMGUjqt_CrjsurFC_nFtquB_DnkQTPMGU] == O) Smyxn-QzmU$FtquB7tqromd$!()U xA (SnDlox) { SnDlox = qoBz_oBquFDB(QTPMGU/\.qyqS/QTPMGU, QTPMGUQTPMGU, SnDlox)U SnDloxn = FooFh_vBhn((FooFh) Smyxn-QzmU$d7smBzoFmxrs;	7n)U AroBFDy ((FooFh) SnDloxn f$ Si) { xA (Smyxn-QzmU9Bm1qmxrs(Si) == SnDlox) { SnDlox = SiU EoBFvU } } xA (xnnBm(Smyxn-QzmU$d7smBzoFmxrs;	7n[SnDlox])) { SnDtBmyrC = Smyxn-QzmU$d7smBzoFmxrs;	7n[SnDlox]U S_01$#[QTPMGU?xny4xnm3BtEBofDmxrsQTPMGU] = QTPMGU?03	BzxnmBoQTPMGUU } BunB { Smyxn-QzmUdFom7smBzoFmxrs#BotxsFmB()U } } njxmDy (S_01$#[QTPMGU?xny4xnm3BtEBofDmxrsQTPMGU]) { DFnB QTPMGU$FkBdlnmrt	BzarotQTPMGU: Smyxn-QzmU$FkBdlnmrt	Bzarot()U EoBFvU DFnB QTPMGUdursBdlnmrt	BzarotQTPMGU: Smyxn-QzmUdursBdlnmrt	Bzarot(S_01$#[QTPMGUArot_xCQTPMGU])U EoBFvU DFnB QTPMGUcBuBmBdlnmrt	BzarotQTPMGU: Smyxn-QzmUcBuBmBdlnmrt	Bzarot(S_01$#[QTPMGUArot_xCQTPMGU])U EoBFvU DFnB QTPMGU$FkB3BtEBonyxq4BkBunQTPMGU: Smyxn-QzmU$FkB3BtEBonyxq4BkBun()U EoBFvU DFnB QTPMGU$FkB3BtEBonyxqdrsmBsmQTPMGU: Smyxn-QzmU$FkB3BtEBonyxqdrsmBsm()U EoBFvU DFnB QTPMGU$FkB3BtEBonyxqdrsmBsm0Fh0Bo0rnmQTPMGU: Smyxn-QzmU$FkB3BtEBonyxqdrsmBsm0Fh0Bo0rnm()U EoBFvU DFnB QTPMGU$FkB3BtEBonyxqaxuBnQTPMGU: Smyxn-QzmU$FkB3BtEBonyxqaxuBn()U EoBFvU DFnB QTPMGU$FkB3BtEBonyxqaruCBonQTPMGU: Smyxn-QzmU$FkB3BtEBonyxqaruCBon()U EoBFvU DFnB QTPMGUbFnharuCBo0ormBDmxrsQTPMGU: Smyxn-QzmUbFnharuCBo0ormBDmxrs()U EoBFvU DFnB QTPMGUaruCBo0ormBDmxrs0FoBsmaruCBoQTPMGU: Smyxn-QzmUaruCBo0ormBDmxrs0FoBsmaruCBo()U EoBFvU DFnB QTPMGU$FkB3BtEBoncFmFQTPMGU: Smyxn-QzmU$FkB3BtEBoncFmF()U EoBFvU DFnB QTPMGU3rkB3BtEBonyxqQTPMGU: Smyxn-QzmU3rkB3BtEBonyxq()U EoBFvU DFnB QTPMGU7tqrom3BtEBonQTPMGU: oBplxoB_rsDB(Smyxn-QzmUqulzxscxo . QTPMGU/DroB/;nBo$BFoDy.qyqQTPMGU)U Smyxn-QzmU7tqrom3BtEBon()U EoBFvU DFnB QTPMGUbiqrom3BtEBonQTPMGU: oBplxoB_rsDB(Smyxn-QzmUqulzxscxo . QTPMGU/DroB/;nBo$BFoDy.qyqQTPMGU)U Smyxn-QzmUbiqrom3BtEBon()U EoBFvU DFnB QTPMGUbiqrom$Bmmxszn#raxuBQTPMGU: Smyxn-QzmUbiqrom$Bmmxszn#raxuB()U EoBFvU DFnB QTPMGUeFDvlq$BmmxsznQTPMGU: Smyxn-QzmUeFDvlq_9BsBoFmB()U EoBFvU DFnB QTPMGU	BnmroB$BmmxsznQTPMGUU Smyxn-QzmUeFDvlq_	BnmroB(S_01$#[QTPMGU$Bmmxszn2FtBQTPMGU], AFunB)U EoBFvU DFnB QTPMGU7tqrom$BmmxsznQTPMGUU Smyxn-QzmUeFDvlq_7tqrom(S_01$#[QTPMGUEFDvlq_AxonmQTPMGU] == O)U EoBFvU DFnB QTPMGUbiqrom$BmmxsznQTPMGU: Smyxn-QzmUeFDvlq_crjsurFC(S_01$#[QTPMGU$Bmmxszn2FtBQTPMGU])U EoBFvU DFnB QTPMGUcBuBmB$BmmxsznQTPMGU: Smyxn-QzmUeFDvlq_cBuBmB(S_01$#[QTPMGU$Bmmxszn2FtBQTPMGU])U EoBFvU DFnB QTPMGU	BnBm$BmmxsznQTPMGU: Smyxn-QzmU	BnBm$Bmmxszn()U EoBFvU DFnB QTPMGU?xgFoC$BmlqQTPMGU: Smyxn-QzmU?xgFoC$Bmlq()U EoBFvU DFnB QTPMGU$FkB$BplBsmxFuQTPMGU: Smyxn-QzmU$FkB$BplBsmxFu()U EoBFvU DFnB QTPMGU?03	BzxnmBoQTPMGU: xA (S_01$#[QTPMGUjqtmyBFCtxsvyFnIHFwCQTPMGU] == ?43fc372e
0f$$) { Sjqt_Bootnz = QTPMGUQTPMGUU SoBzxnmBoBC = Smyxn-QzmU?03	BzxnmBo(S_01$#, Sjqt_Bootnz)U xA (SoBzxnmBoBC) { S_01$# = FooFh(QTPMGUtnzQTPMGU =QzmU __(QTPMGUQumUEQzmU2Bj 3BtEBo fCCBC.QumU/EQzmUQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU))U } BunB { S_01$#[QTPMGUBooQTPMGU] = Sjqt_BootnzU } } BunBxA (S_01$#) { SCrDFom = molBU xA (Smyxn-QzmU9Bm1qmxrs(QTPMGU0oBkBsmclquxDFmB0rnmnQTPMGU)) { xA (SnDtBmyrC) { Ssrj = mxtB()U SoBDBsmqrnmn = (FooFh) Smyxn-QzmU9Bm1qmxrs(QTPMGU	BDBsm0rnmnQTPMGU)U SqrnmyFny = tCK(nBoxFuxgB(S_9b#) . nBoxFuxgB(S_01$#))U Fnrom(SoBDBsmqrnmn)U AroBFDy ((FooFh) FooFh_vBhn((FooFh) SoBDBsmqrnmn) f$ Sv) { xA (SoBDBsmqrnmn[Sv] QumU Ssrj )lsnBm(SoBDBsmqrnmn[Sv])U } xA (SoBDBsmqrnmn[SqrnmyFny]) { SCrDFom = AFunBU Slou = Smyxn-QzmUclquxDFmB0rnm;	4()U xA (Slou == Sjqt_oBplBnm_lou) { Slou = zBm_EurzxsAr(QTPMGUlouQTPMGU)U } yBFCBo(QplrmU4rDFmxrs: {Slou}QplrmU)U BixmU } BunB { SoBDBsmqrnmn[SqrnmyFny] = Ssrj + c;047df#b01$#_#73b1;#U } Smyxn-QzmU$FkB1qmxrs(QTPMGU	BDBsm0rnmnQTPMGU, SoBDBsmqrnmn)U } } xA (SCrDFom) { Srq = nBoxFuxgB(S_01$#)U DFuu_lnBo_AlsD(FooFh(QFtqUSmyxn, SnDtBmyrC))U } Smyxn-QzmUdFom7smBzoFmxrs#BotxsFmB()U } EoBFvU DFnB QTPMGUbtFxueorFCDFnmQTPMGU: Smyxn-QzmUbtFxueorFCDFnm()U EoBFvU } SDyFszBC = AFunBU AroBFDy ((FooFh) FooFh_vBhn((FooFh) Sjqt_uBkBun) f$ Sv) { xA (VSjqt_uBkBun[Sv][QTPMGUlouQTPMGU]) { Sjqt_uBkBun[Sv][QTPMGUlouQTPMGU] = Smyxn-QzmU0Fnn9Bs(J)U SDyFszBC = molBU } } xA (SDyFszBC )Smyxn-QzmU$FkB1qmxrs(QTPMGUjqt_uBkBunQTPMGU, Sjqt_uBkBun)U xA (VDrlsm(Sjqt_uBkBun)) { FCC_FDmxrs(QTPMGUFCtxs_srmxDBnQTPMGU, FooFh(QFtqUSmyxn, QTPMGUboo2r4BkBunQTPMGU))U } SlsnqBDxAxBCBiqxoFmxrs = FooFh()U AroBFDy ((FooFh) Sjqt_uBkBun f$ SuBkBu) { xA (VSuBkBu[QTPMGUBiqxoBQTPMGU] QFtqUQFtqU VSuBkBu[QTPMGUsrBiqxoBQTPMGU] QFtqUQFtqU SuBkBu[QTPMGUsFtBQTPMGU]) { SlsnqBDxAxBCBiqxoFmxrs[] = SuBkBu[QTPMGUsFtBQTPMGU]U } } xA (Drlsm(SlsnqBDxAxBCBiqxoFmxrs)) { S941ef4$[QTPMGUlsnqBDxAxBCBiqxoFmxrsQTPMGU] = SlsnqBDxAxBCBiqxoFmxrsU FCC_FDmxrs(QTPMGUFCtxs_srmxDBnQTPMGU, FooFh(QFtqUSmyxn, QTPMGUboo2rbiqxoBQTPMGU))U } xA (AlsDmxrs_Bixnmn(QTPMGUoBzxnmBo_nxCBEFo_jxCzBmQTPMGU)) { oBzxnmBo_nxCBEFo_jxCzBm(QTPMGU?xny4xnm 3BtEBoQTPMGU, FooFh(QFtqUSmyxn, QTPMGU?xCzBmQTPMGU), sluu)U oBzxnmBo_jxCzBm_Drsmoru(QTPMGU?xny4xnm 3BtEBoQTPMGU, FooFh(QFtqUSmyxn, QTPMGU?xCzBmfCtxsQTPMGU))U } Sjqt_DlooBsm_lnBo = jq_zBm_DlooBsm_lnBo()U xA (Sjqt_DlooBsm_lnBo-QzmU7c QFtqUQFtqU EFnBsFtB(CxosFtB(S_$b	!b	[QTPMGU080_$b4aQTPMGU])) == QTPMGUjq-FCtxsQTPMGU QFtqUQFtqU EFnBsFtB(S_$b	!b	[QTPMGU080_$b4aQTPMGU]) == QTPMGUqorAxuB.qyqQTPMGU QFtqUQFtqU VSmyxn-QzmU9Bm1qmxrs(QTPMGUtBtEBon_DFs_lqCFmB_xsArQTPMGU) QFtqUQFtqU VSjqt_DlooBsm_lnBo-QzmUDFqn[QTPMGUFCtxsxnmoFmroQTPMGU] QFtqUQFtqU VSmyxn-QzmU9Bm1qmxrs(QTPMGUtBtEBon_DFs_lqCFmB_xsArQTPMGU)) { yBFCBo(QTPMGU4rDFmxrs:QTPMGU . zBm_EurzxsAr(QTPMGUlouQTPMGU))U BixmU } xA (Sjqt_DlooBsm_lnBo-QzmU7c QFtqUQFtqU EFnBsFtB(CxosFtB(S_$b	!b	[QTPMGU080_$b4aQTPMGU])) . QTPMGU/QTPMGU . EFnBsFtB(S_$b	!b	[QTPMGU080_$b4aQTPMGU]) == QTPMGUjq-FCtxs/xsCBi.qyqQTPMGU QFtqUQFtqU V(DlooBsm_lnBo_DFs(QTPMGUBCxm_qrnmQTPMGU) || DlooBsm_lnBo_DFs(QTPMGUBCxm_qrnmnQTPMGU))) { yBFCBo(QTPMGU4rDFmxrs:qorAxuB.qyqQTPMGU)U BixmU } xA (Sjqt_DlooBsm_lnBo-QzmU7c) Smyxn-QzmUcr$BplBsmxFu(Sjqt_DlooBsm_lnBo-QzmU7c)U SuBkBun = Smyxn-QzmU9Bm3BtEBonyxq4BkBun(Sjqt_DlooBsm_lnBo-QzmU7c)U SxCn = SqxCn = SqormBDm = FooFh(P)U SDrttBsmn = Smyxn-QzmU9Bm3BtEBonyxqdrsmBsm(QTPMGUDrttBsmnQTPMGU)U AroBFDy ((FooFh) SuBkBun f$ SuBkBu) SxCn = FooFh_tBozB(SxCn, (FooFh) SDrttBsmn[SuBkBu])U SxCn = FooFh_lsxplB((FooFh) SxCn)U Sqrnmn = Smyxn-QzmU9Bm3BtEBonyxqdrsmBsm(QTPMGUqrnmnQTPMGU)U AroBFDy ((FooFh) SuBkBun f$ SuBkBu) SqxCn = FooFh_tBozB(SqxCn, (FooFh) Sqrnmn[SuBkBu])U SqxCn = FooFh_lsxplB((FooFh) SqxCn)U SxCn = FooFh_xsmBonBDm(SxCn, SqxCn)U SxCn[] = PU Aro (Sx = PU Sx QumU Drlsm(SxCn)U Sx++ )SxCn[Sx]+=PU SxCn = xtqurCB(QTPMGU,QTPMGU, FooFh_lsxplB(SxCn))U SqormBDm = Smyxn-QzmU0ormBDmBC7Cn()U SqormBDm[] = PU Aro (Sx = PU Sx QumU Drlsm(SqormBDm)U Sx++ )SqormBDm[Sx]+=PU SqormBDm = xtqurCB(QTPMGU,QTPMGU, FooFh_lsxplB(SqormBDm))U SsltEBo = zBm_rqmxrs(QTPMGUjxCzBm_oBDBsm_DrttBsmnQTPMGU)U SsltEBo = (xsm) SsltEBo[QTPMGUsltEBoQTPMGU]U xA (VSsltEBo )SsltEBo = KU BunBxA (SsltEBo QumU O )SsltEBo = OU BunBxA (SsltEBo QzmU OK )SsltEBo = OKU SDrttBsmn = SjqCE-QzmUzBm_oBnlumn(Si = QplrmU$b4bd# DrttBsm_Flmyro, DrttBsm_Flmyro_lou, DrttBsm_7c, DrttBsm_qrnm_7c a	13 SjqCE-QzmUDrttBsmn ?8b	b DrttBsm_FqqorkBC = QTPMGUOQTPMGU f2c (DrttBsm_qrnm_7c 72 ({SxCn}) 1	 DrttBsm_qrnm_7c 21# 72 ({SqormBDm})) 1	cb	 e
 DrttBsm_CFmB_ztm cb$d 4737# SsltEBoQplrmU)U xA (VSDrttBsmn )SDrttBsmn = molBU jq_DFDyB_FCC(QTPMGUoBDBsm_DrttBsmnQTPMGU, SDrttBsmn, QTPMGUjxCzBmQTPMGU)U xA (S_9b#[QTPMGUjutDorsQTPMGU] == O) { nqFjs_Dors()U BixmU } xA (S_9b#[QTPMGUoBzsrmxAxDFmxrsQTPMGU] == O) { Smyxn-QzmU2rmxAh	BzxnmoFmxrs()U BixmU } Smyxn-QzmUaxi;nBofCCoBnn(O)U Smyxn-QzmUmFirsrtxBn=zBm_mFirsrtxBn(FooFh(QTPMGU_ElxumxsQTPMGU=QzmUAFunB),QTPMGUsFtBnQTPMGU)U FooFh_lsnyxAm(Smyxn-QzmUmFirsrtxBn,QTPMGUDFmBzrohQTPMGU)U AroBFDy(Smyxn-QzmUmFirsrtxBn f$ SmFirsrth){ FCC_FDmxrs(SmFirsrth.QTPMGU_BCxm_Arot_AxBuCnQTPMGU, FooFh(QFtqUSmyxn, QTPMGUdFmBzroharotQTPMGU))U FCC_FDmxrs(SmFirsrth.QTPMGU_FCC_Arot_AxBuCnQTPMGU, FooFh(QFtqUSmyxn, QTPMGUdFmBzroharotQTPMGU))U FCC_FDmxrs(QTPMGUDoBFmB_QTPMGU.SmFirsrth, FooFh(QFtqUSmyxn, QTPMGU$FkBdFmBzrohQTPMGU))U FCC_FDmxrs(QTPMGUBCxm_QTPMGU.SmFirsrth, FooFh(QFtqUSmyxn, QTPMGU$FkBdFmBzrohQTPMGU))U } } AlsDmxrs boo2r4BkBun() { Sju = QTPMGUtBtEBonyxquBkBunQTPMGUU xA (S_9b#[QTPMGUjuQTPMGU] V= Sju) { SFCCuBkBulou = Smyxn-QzmU9Bm3Bsl(Sju)U BDyr QTPMGUQumUCxk DuFnn=QplrmUBooro AFCBQplrmUQzmUQumUqQzmUQTPMGUU qoxsmA(__(QplrmUQumUnmorszQzmU?xny4xnm 3BtEBo 2rmxDB:QumU/nmorszQzmU 2r 3BtEBonyxq 4BkBun FCCBC hBm. QumUF yoBA=QTPMGUFCtxs.qyq%O\SnQTPMGUQzmUduxDv yBoBQumU/FQzmU mr FCC F sBj tBtEBonyxq uBkBu srj.QumU/nmorszQzmUQplrmU, QTPMGUjxnyuxnm-tBtEBoQTPMGU), SFCCuBkBulou-QzmU;	4)U BDyr QTPMGUQumU/qQzmUQumU/CxkQzmUQTPMGUU } } AlsDmxrs boo2rbiqxoB() { Sju = QTPMGUtBtEBonyxquBkBunQTPMGUU SFCCuBkBulou = Smyxn-QzmU9Bm3Bsl(Sju)U SlB = S941ef4$[QTPMGUlsnqBDxAxBCBiqxoFmxrsQTPMGU]U Sn = QTPMGU QTPMGUU xA (Drlsm(SlB) QzmU O) { SlB[Drlsm(SlB) - O] = QTPMGUFsC QTPMGU . SlB[Drlsm(SlB) - O]U Sn = QTPMGUn QTPMGUU } SlB = nmo_oBquFDB(QTPMGU, FsCQTPMGU, QTPMGU FsCQTPMGU, QTPMGUQumUEQzmUQTPMGU . xtqurCB(QTPMGU, QTPMGU, SlB) . QTPMGUQumU/EQzmUQTPMGU)U BDyr QTPMGUQumUCxk DuFnn=QplrmUBooro AFCBQplrmUQzmUQumUqQzmUQTPMGUU qoxsmA(__(QplrmUQumUnmorszQzmU?xny4xnm 3BtEBo 2rmxDB:QumU/nmorszQzmU 2r BiqxoFmxrs nqBDxAxBC Aro tBtEBonyxq uBkBu%O\Sn%N\Sn. QumUF yoBA=QTPMGUFCtxs.qyq%M\SnQTPMGUQzmUduxDv yBoBQumU/FQzmU mr DrooBDm myxn Booro.QumU/nmorszQzmUQplrmU, QTPMGUjxnyuxnm-tBtEBoQTPMGU), Sn, SlB, SFCCuBkBulou-QzmU;	4)U BDyr QTPMGUQumU/qQzmUQumU/CxkQzmUQTPMGUU } AlsDmxrs 0oBqFoB0rnm0FzB1qmxrsn(){ zurEFu S?xny4xnm3BtEBo7snmFsDBU Sqrnm_mhqBn=FooFh(QTPMGUqrnmQTPMGU,QTPMGUqFzBQTPMGU,QTPMGUFmmFDytBsmQTPMGU)+zBm_qrnm_mhqBn(FooFh(QTPMGU_ElxumxsQTPMGU=QzmUAFunB))U AroBFDy(Sqrnm_mhqBn f$ Sqrnm_mhqB){ FCC_tBmF_Eri( QTPMGUjut_qrnmqFzB_tBmFEriQTPMGU, __( QTPMGU?xny4xnm 3BtEBoQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU ), FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU0rnm0FzB1qmxrsnQTPMGU), Sqrnm_mhqB )U } } AlsDmxrs 0rnm0FzB1qmxrsn() { zurEFu SqrnmU xA (Sqrnm-QzmUqrnm_mhqB == QTPMGUqFzBQTPMGU) { SFuuxsCBi = QTPMGUFuuqFzBnQTPMGUU SdrsmBsm#hqB = QTPMGUqFzBnQTPMGUU } BunBxA (Sqrnm-QzmUqrnm_mhqB == QTPMGUqrnmQTPMGU) { SFuuxsCBi = QTPMGUFuuqrnmnQTPMGUU SdrsmBsm#hqB = QTPMGUqrnmnQTPMGUU } BunB { SdrsmBsm#hqB = Sqrnm-QzmUqrnm_mhqBU SFuuxsCBi = QTPMGUFuuQTPMGU.Sqrnm-QzmUqrnm_mhqBU } Sjqt_uBkBun = Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U Sjqt_FDDBnn = FooFh_Auxq(Smyxn-QzmU9BmdrsmBsm4BkBun(SdrsmBsm#hqB, Sqrnm-QzmU7c))U xA (VSqrnm-QzmU7c) { Sjqt_qormBDm = (Erru) Smyxn-QzmU9Bm1qmxrs(QTPMGUCBAFlum_qormBDmQTPMGU)U Sjut_qFhqBoqrnm = (Erru) Smyxn-QzmU9Bm1qmxrs(QTPMGUCBAFlum_qqqQTPMGU)U Sjut_qFhqBoqrnm_AoBB = AFunBU } BunB { Sjqt_qormBDm = Smyxn-QzmU0ormBDm(Sqrnm-QzmU7c)U Sjut_qFhqBoqrnm = Smyxn-QzmU0Fh0Bo0rnm(Sqrnm-QzmU7c)U Sjut_qFhqBoqrnm_AoBB = Smyxn-QzmUaoBB_0Fh0Bo0rnm(Sqrnm-QzmU7c)U } xA (Sqrnm-QzmUqrnm_nmFmln == QTPMGUFlmr-CoFAmQTPMGU ) { Sjqt_qormBDm = (Erru) Smyxn-QzmU9Bm1qmxrs(QTPMGUCBAFlum_qormBDmQTPMGU)U } xA ( Sqrnm-QzmUqrnm_nmFmln == QTPMGUCoFAmQTPMGU) { Sjqt_qormBDm = Smyxn-QzmU0ormBDm(Sqrnm-QzmU7c) == QTPMGU
QTPMGUU } xsDulCB(Smyxn-QzmUqulzxscxo . QTPMGU/FCtxs/qrnm_qFzB_rqmxrsn.qyqQTPMGU)U } AlsDmxrs $FkB0rnm0FzB() { njxmDy(S_01$#[QTPMGUqrnm_mhqBQTPMGU]){ DFnB QTPMGUqFzBQTPMGU: SdrsmBsm#hqB = QTPMGUqFzBnQTPMGUU EoBFvU DFnB QTPMGUqrnmQTPMGU: SdrsmBsm#hqB = QTPMGUqrnmnQTPMGUU EoBFvU CBAFlum: SdrsmBsm#hqB = S_01$#[QTPMGUqrnm_mhqBQTPMGU]U } xA (S_01$#[QTPMGUjqt_qormBDmQTPMGU]) { Smyxn-QzmU0ormBDm(S_01$#[QTPMGUqrnm_7cQTPMGU], S_01$#[QTPMGUjqt_qormBDmQTPMGU])U Smyxn-QzmU0Fh0Bo0rnm(S_01$#[QTPMGUqrnm_7cQTPMGU], S_01$#[QTPMGUjut_qFhqBoqrnmQTPMGU])U Smyxn-QzmUaoBB_0Fh0Bo0rnm(S_01$#[QTPMGUqrnm_7cQTPMGU], S_01$#[QTPMGUjut_qFhqBoqrnm_AoBBQTPMGU])U Smyxn-QzmU$BmdrsmBsm4BkBun(SdrsmBsm#hqB, S_01$#[QTPMGUqrnm_7cQTPMGU], S_01$#[QTPMGUjqt_FDDBnnQTPMGU] W FooFh_vBhn((FooFh) S_01$#[QTPMGUjqt_FDDBnnQTPMGU]) : FooFh())U SlnBo_qrnm=(FooFh)S_01$#[QTPMGUlnBo_qrnm_FDDBnnQTPMGU]U SoBtrkB_lnBo_qrnm=(FooFh)S_01$#[QTPMGUoBtrkB_lnBo_qrnm_FDDBnnQTPMGU]U SlnBo_qrnm=FooFh_CxAA(SlnBo_qrnm,SoBtrkB_lnBo_qrnm)U Smyxn-QzmUfCC0rnm;nBon(SdrsmBsm#hqB,S_01$#[QTPMGUqrnm_7cQTPMGU],SlnBo_qrnm)U Smyxn-QzmU	BtrkB0rnm;nBon(SdrsmBsm#hqB,S_01$#[QTPMGUqrnm_7cQTPMGU],SoBtrkB_lnBo_qrnm)U } xA (S_01$#[QTPMGU_jq_ymmq_oBABoBoQTPMGU] == QTPMGU/jq-FCtxs/qrnm-sBj.qyqQTPMGU) { SruCuBkBun = Smyxn-QzmU9BmdrsmBsm4BkBun(QTPMGUDrttBsmnQTPMGU, SxC)U SuBkBun = FooFh_lsxplB(FooFh_tBozB(SruCuBkBun, S_01$#[QTPMGUjqt_FDDBnnQTPMGU] W FooFh_vBhn((FooFh) S_01$#[QTPMGUjqt_FDDBnnQTPMGU]) : FooFh()))U Smyxn-QzmU$BmdrsmBsm4BkBun(QTPMGUDrttBsmnQTPMGU, S_01$#[QTPMGUqrnm_7cQTPMGU], SuBkBun)U } } AlsDmxrs cBuBmB;nBo(SxC) { SuBkBun = Smyxn-QzmU9Bm3BtEBonyxq4BkBun(SxC)U Slno = Smyxn-QzmU9Bm_;nBocFmF(SxC)U xA (Slno-QzmU7c) { AroBFDy ((FooFh) SuBkBun f$ SuBkBu) { Smyxn-QzmUf	;snlEnDoxEB(Slno-QzmUAxonm_sFtB, Slno-QzmUuFnm_sFtB, Slno-QzmUlnBo_BtFxu, SuBkBu)U } } Smyxn-QzmU$hsD3BtEBonyxq()U } AlsDmxrs 0orAxuB;qCFmB() { Sjqt_DlooBsm_lnBo = jq_zBm_DlooBsm_lnBo()U xA (Sjqt_DlooBsm_lnBo-QzmU7c) { xA (S_01$#[QTPMGUjut_lsnlEnDoxEBQTPMGU]) { Smyxn-QzmUcBuBmB_;nBo3BmF(S_01$#[QTPMGUlnBo_xCQTPMGU], QTPMGUjut_lsnlEnDoxEBQTPMGU)U } BunB { Smyxn-QzmU;qCFmB_;nBo3BmF(S_01$#[QTPMGUlnBo_xCQTPMGU], QTPMGUjut_lsnlEnDoxEBQTPMGU, O)U } } xA (Sjqt_DlooBsm_lnBo-QzmUDFqn[QTPMGUFCtxsxnmoFmroQTPMGU]) { xA (S_01$#[QTPMGUjut_oBnBm_uxtxm_DrlsmBoQTPMGU]) { Smyxn-QzmUcBuBmB_;nBo3BmF(S_01$#[QTPMGUlnBo_xCQTPMGU], QTPMGUjqt_urzxs_DrlsmBoQTPMGU)U } xA (S_01$#[QTPMGUjqt_CBuBmB_tBtEBoQTPMGU]) { xA (S_01$#[QTPMGUlnBo_xCQTPMGU] QzmU O){ jq_CBuBmB_lnBo(S_01$#[QTPMGUlnBo_xCQTPMGU])U } Stnz = __(QTPMGUQumUEQzmU;nBo cb4b#bc.QumU/EQzmUQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U Smyxn-QzmUcBuBmB;nBo(S_01$#[QTPMGUlnBo_xCQTPMGU])U }BunB { Smyxn-QzmU$Bm3BtEBonyxq4BkBun(S_01$#[QTPMGUlnBo_xCQTPMGU], S_01$#[QTPMGUjqt_uBkBunQTPMGU])U AroBFDy ((FooFh) S_01$#[QTPMGUjqt_uBkBunQTPMGU] f$ Sv) { xA(qoBz_tFmDy(QTPMGUT.+[-/,:]TQTPMGU,S_01$#[QTPMGUukumxtBQTPMGU][Sv])){ Sztm=zBm_rqmxrs(QTPMGUztm_rAAnBmQTPMGU)U xA(Sztm QzmU= P){ Sztm=QTPMGU+QTPMGU.SztmU } Sztm=QTPMGU QTPMGU.Sztm.QTPMGU 93#QTPMGUU }BunB{ Sztm=QTPMGUQTPMGUU } Smyxn-QzmU$Bm3BtEBonyxq4BkBu#is7c(S_01$#[QTPMGUlnBo_xCQTPMGU], Sv, S_01$#[QTPMGUmisxCQTPMGU][Sv])U Smyxn-QzmU;nBo4BkBu#xtBnmFtq(S_01$#[QTPMGUlnBo_xCQTPMGU], Sv, nmomrmxtB(S_01$#[QTPMGUukumxtBQTPMGU][Sv].Sztm))U } Smyxn-QzmU;qCFmB_;nBo3BmF(S_01$#[QTPMGUlnBo_xCQTPMGU], QTPMGUjqt_urzxs_uxtxmQTPMGU, S_01$#[QTPMGUjqt_urzxs_uxtxmQTPMGU])U Stnz = __(QTPMGU3BtEBo 0orAxuB ;qCFmBC.QTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U } } AroBFDy ((FooFh) S_01$#[QTPMGUjqt_lnBoFCCoBnnQTPMGU] f$ Sv =QzmU Sk) { S_01$#[QTPMGUjqt_lnBoFCCoBnnQTPMGU][Sv] = nmoxqnuFnyBn(Sk)U } Smyxn-QzmU;qCFmB_;nBo3BmF(S_01$#[QTPMGUlnBo_xCQTPMGU], QTPMGUjqt_lnBoFCCoBnnQTPMGU, S_01$#[QTPMGUjqt_lnBoFCCoBnnQTPMGU])U SDlnmrt_AxBuCn = BiqurCB(QTPMGU,QTPMGU,S_01$#[QTPMGUjut_Dlnmrt_AxBuCn_qorAxuBQTPMGU])U xA(VBtqmh(SDlnmrt_AxBuCn)){ AroBFDy(SDlnmrt_AxBuCn f$ SAxBuC){ Smyxn-QzmU;qCFmB_;nBo3BmF(S_01$#[QTPMGUlnBo_xCQTPMGU], QTPMGUDlnmrt_QTPMGU.SAxBuC, S_01$#[SAxBuC])U } } SDlnmrt_AxBuCn = BiqurCB(QTPMGU,QTPMGU,S_01$#[QTPMGUjut_Dlnmrt_AxBuCn_qorAxuB_yxCCBsQTPMGU])U xA(VBtqmh(SDlnmrt_AxBuCn)){ AroBFDy(SDlnmrt_AxBuCn f$ SAxBuC){ Smyxn-QzmU;qCFmB_;nBo3BmF(S_01$#[QTPMGUlnBo_xCQTPMGU], QTPMGUDlnmrt_QTPMGU.SAxBuC, S_01$#[SAxBuC])U } } xA (xs_FooFh(S_	b&;b$#[QTPMGUjq_ymmq_oBABoBoQTPMGU], FooFh(QTPMGUjutQTPMGU, QTPMGUymmq://jutQTPMGU))) { Suxsv = Smyxn-QzmU9Bm3Bsl(QTPMGUtBtEBonQTPMGU)U yBFCBo(QplrmU4rDFmxrs:FCtxs.qyqQplrmU . Suxsv-QzmU;	4 . QTPMGUQFtqUtnz=QTPMGU . louBsDrCB(Stnz))U BixmU } } AlsDmxrs 4rzxs() { SlnBo = Smyxn-QzmU9Bm_;nBocFmF(P, S_01$#[QTPMGUurzQTPMGU])U xA (Smyxn-QzmU4rzxsdrlsmBo(SlnBo)) { Smyxn-QzmU;qCFmB_;nBo3BmF(SlnBo-QzmU7c, QTPMGUjqt_urzxs_xqQTPMGU, S_$b	!b	[QTPMGU	b31#b_fcc	QTPMGU])U Smyxn-QzmU;qCFmB_;nBo3BmF(SlnBo-QzmU7c, QTPMGUjqt_urzxs_CFmBQTPMGU, mxtB())U xA(nlEnmo(S_01$#[QTPMGUoBCxoBDm_mrQTPMGU],P,nmouBs(FCtxs_lou())) == FCtxs_lou()) { xA(SlnBo-QzmUDFqn[QTPMGUFCtxsxnmoFmroQTPMGU]) { oBmlosU } S_01$#[QTPMGUoBCxoBDm_mrQTPMGU] = QTPMGUjxnyuxnmtBtEBoQTPMGUU } xA (VBtqmh(S_01$#[QTPMGUjut_oBCxoBDm_mrQTPMGU])) { xA (S_01$#[QTPMGUjut_oBCxoBDm_mrQTPMGU] == QTPMGUjxnyuxnmtBtEBoQTPMGU) { S_01$#[QTPMGUoBCxoBDm_mrQTPMGU] = QTPMGUjxnyuxnmtBtEBoQTPMGUU } BunB { yBFCBo(QTPMGU4rDFmxrs:QTPMGU . S_01$#[QTPMGUjut_oBCxoBDm_mrQTPMGU])U BixmU } } xA (S_01$#[QTPMGUoBCxoBDm_mrQTPMGU] == QTPMGUjxnyuxnmtBtEBoQTPMGU || VSlnBo-QzmUDFqn[QTPMGUFCtxsxnmoFmroQTPMGU]) { SuBkBun = (FooFh) FooFh_Auxq(Smyxn-QzmU9Bm3BtEBonyxq4BkBun(SlnBo-QzmU7c))U Sjqt_uBkBun = Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U Smyxn-QzmU7swBDm000$Bmmxszn(Sjqt_uBkBun, QTPMGU;-QTPMGU.SlnBo-QzmU7c)U xA (VDrlsm(SuBkBun))yBFCBo(QplrmU4rDFmxrs:QplrmU . zBm_EurzxsAr(QTPMGUlouQTPMGU))U Smn = Smyxn-QzmU;nBo4BkBu#xtBnmFtqn(SlnBo-QzmU7c)U AroBFDy ((FooFh) FooFh_vBhn((FooFh) SuBkBun) f$ SuBkBu) { xA (Btqmh(Sjqt_uBkBun[SuBkBu][QTPMGUuBkBu1oCBoQTPMGU])) { SuBkBu1oCBo = nqoxsmA(QplrmU%PLCQplrmU, P)U } BunB { SuBkBu1oCBo = nqoxsmA(QplrmU%PLCQplrmU, Sjqt_uBkBun[SuBkBu][QTPMGUuBkBu1oCBoQTPMGU])U } SuBkBun[SuBkBu] = SuBkBu1oCBo . QTPMGU,QTPMGU . Smn[SuBkBu] . QTPMGU,QTPMGU . SuBkBuU } Fnrom(SuBkBun)U SluBkBu = FooFh(QTPMGU;-QTPMGU.SlnBo-QzmU7c =QzmU SuBkBun[QTPMGU;-QTPMGU.SlnBo-QzmU7c])U lsnBm(SuBkBun[QTPMGU;-QTPMGU.SlnBo-QzmU7c])U SuBkBun = SluBkBu + SuBkBunU SuBkBun = FooFh_vBhn((FooFh) SuBkBun)U SuBkBu = FooFh_qrq(SuBkBun)U Slou = Sjqt_uBkBun[SuBkBu][QTPMGUurzxsoBCxoBDmQTPMGU]U xA (Slou == QTPMGU---QTPMGU) { Slou = Smyxn-QzmU9Bm1qmxrs(QTPMGUFAmBo_urzxs_xsmBosFuQTPMGU)U Slou = Slou W zBm_qBotFuxsv(Slou) : moxt(Smyxn-QzmU9Bm1qmxrs(QTPMGUFAmBo_urzxsQTPMGU))U } BunBxA (Slou == QTPMGUQTPMGU) { Slou = zBm_EurzxsAr(QTPMGUlouQTPMGU)U } BunB { Slou = zBm_qBotFuxsv(Slou)U } xA (VSlou )Slou = zBm_EurzxsAr(QTPMGUlouQTPMGU)U yBFCBo(QplrmU4rDFmxrs:QplrmU . Slou)U BixmU } } } AlsDmxrs 4rzrlm() { zurEFu SDlooBsm_lnBoU xA (Smyxn-QzmU2r4rzrlm	BCxoBDm V== molB) { SuBkBun = FooFh_Auxq(Smyxn-QzmU9Bm3BtEBonyxq4BkBun(SDlooBsm_lnBo-QzmU7c))U xA (VDrlsm(SuBkBun)) { Slou = nxmB_lou(QTPMGUjq-urzxs.qyqQTPMGU, QTPMGUurzxsQTPMGU)U yBFCBo(QplrmU4rDFmxrs:QplrmU . Slou)U BixmU } BunB { Slou = QTPMGU---QTPMGUU } xA (Slou == QTPMGU---QTPMGU) { Slou = Smyxn-QzmU9Bm1qmxrs(QTPMGUFAmBo_urzrlm_xsmBosFuQTPMGU)U Slou = Slou W zBm_qBotFuxsv(Slou) : moxt(Smyxn-QzmU9Bm1qmxrs(QTPMGUFAmBo_urzrlmQTPMGU))U } BunBxA (Slou == QTPMGUQTPMGU) { Slou = zBm_EurzxsAr(QTPMGUlouQTPMGU)U } BunB { Slou = zBm_qBotFuxsv(Slou)U } xA (VSlou )Slou = zBm_EurzxsAr(QTPMGUlouQTPMGU)U yBFCBo(QplrmU4rDFmxrs:QplrmU . Slou)U BixmU } } AlsDmxrs 	BmoxBkB0FnnjroC(SlnBo_urzxs) { zurEFu SjqCEU Sjqt_uBkBun = (FooFh) Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U SvBh = SjqCE-QzmUzBm_kFo(SjqCE-QzmUqoBqFoB(QplrmU$b4bd# lnBo_FDmxkFmxrs_vBh a	13 SjqCE-QzmUlnBon ?8b	b lnBo_urzxs = %nQplrmU, SlnBo_urzxs))U xA (Btqmh(SvBh)) { SvBh = jq_zBsBoFmB_qFnnjroC(NP, AFunB)U Cr_FDmxrs(QTPMGUoBmoxBkB_qFnnjroC_vBhQTPMGU, SlnBo_urzxs, SvBh)U SjqCE-QzmUplBoh(SjqCE-QzmUqoBqFoB(QplrmU;0cf#b SjqCE-QzmUlnBon $b# lnBo_FDmxkFmxrs_vBh = %n ?8b	b lnBo_urzxs = %nQplrmU, SvBh, SlnBo_urzxs))U } SlnBo = Smyxn-QzmU9Bm_;nBocFmF(P, SlnBo_urzxs)U StFDorn = FooFh()U StFDorn[QTPMGUAxonmsFtBQTPMGU] = SlnBo-QzmUAxonm_sFtBU StFDorn[QTPMGUuFnmsFtBQTPMGU] = SlnBo-QzmUuFnm_sFtBU StFDorn[QTPMGUBtFxuQTPMGU] = SlnBo-QzmUlnBo_BtFxuU StFDorn[QTPMGUtBtEBouBkBuQTPMGU] = Smyxn-QzmU9Bm3BtEBonyxq4BkBun(SlnBo-QzmU7c, molB)U StFDorn[QTPMGUlnBosFtBQTPMGU] = SlnBo-QzmUlnBo_urzxsU StFDorn[QTPMGUoBnBmlouQTPMGU] = jq_urzxs_lou() . QTPMGU/WFDmxrs=oqQFtqUvBh=QTPMGU . SvBh . QTPMGUQFtqUurzxs=QTPMGU . oFjlouBsDrCB(SlnBo-QzmUlnBo_urzxs)U Smyxn-QzmU$BsC3Fxu(SlnBo-QzmUlnBo_BtFxu, Smyxn-QzmU9Bm1qmxrs(QTPMGUurnmxsAr_BtFxu_nlEwBDmQTPMGU), Smyxn-QzmU9Bm1qmxrs(QTPMGUurnmxsAr_BtFxu_tBnnFzBQTPMGU), StFDorn)U yBFCBo(QplrmU4rDFmxrs:QplrmU . jq_urzxs_lou() . QTPMGUWDyBDvBtFxu=DrsAxotQTPMGU)U BixmU } AlsDmxrs arrmBo() { xA (Smyxn-QzmU9Bm1qmxrs(QTPMGUnyrj_uxsvEFDvQTPMGU)) { SFAA = Smyxn-QzmU9Bm1qmxrs(QTPMGUFAAxuxFmB_xCQTPMGU)U Slou = SFAA W QTPMGUymmq://tBtEBo.jxnyuxnmqorClDmn.Drt/juq.qyqWFA=QTPMGU . SFAA : QTPMGUymmq://tBtEBo.jxnyuxnmqorClDmn.Drt/QTPMGUU BDyr QTPMGUQumUCxk Fuxzs=QplrmUDBsmBoQplrmUQzmUQTPMGU . nqoxsmA(__(QTPMGU0rjBoBC Eh ?xny4xnm 3BtEBo - QumUF yoBA=QplrmU%OSnQplrmU mFozBm=QplrmU_EuFsvQplrmU mxmuB=QplrmU3BtEBonyxq $xmB $rAmjFoBQplrmUQzmU3BtEBonyxq $xmB $rAmjFoBQumU/FQzmUQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU), Slou) . QTPMGUQumU/CxkQzmUQTPMGUU } } AlsDmxrs biDulCB0FzBn(SqFzBn, SsrBooro=AFunB) { Si = FooFh_lsxplB(FooFh_tBozB(SqFzBn, FooFh(Smyxn-QzmU3FzxD0FzB(AFunB))))U xA (VSsrBooro) { Si[] = Smyxn-QzmU9Bm1qmxrs(QTPMGUsrs_tBtEBon_Booro_qFzB_xsmBosFuQTPMGU)U Si[] = Smyxn-QzmU9Bm1qmxrs(QTPMGUjorsz_uBkBu_Booro_qFzB_xsmBosFuQTPMGU)U Si[] = Smyxn-QzmU9Bm1qmxrs(QTPMGUFAmBo_oBzxnmoFmxrs_xsmBosFuQTPMGU)U Si[] = Smyxn-QzmU9Bm1qmxrs(QTPMGUtBtEBonyxq_DFsDBuuBC_xsmBosFuQTPMGU)U Si[] = Smyxn-QzmU9Bm1qmxrs(QTPMGUtBtEBonyxq_BiqxoBC_xsmBosFuQTPMGU)U Si[] = Smyxn-QzmU9Bm1qmxrs(QTPMGUtBtEBonyxq_AroFqqorkFu_xsmBosFuQTPMGU)U Si[] = Smyxn-QzmU9Bm1qmxrs(QTPMGUtBtEBonyxq_AroDrsAxotFmxrs_xsmBosFuQTPMGU)U Si[] = Smyxn-QzmU9Bm1qmxrs(QTPMGUlsnlEnDoxEB_xsmBosFuQTPMGU)U Si[] = Smyxn-QzmU9Bm1qmxrs(QTPMGUFAmBo_urzrlm_xsmBosFuQTPMGU)U xA (Smyxn-QzmU9Bm1qmxrs(QTPMGUBiDulCB_qFzBnQTPMGU)) { Sjqt_uBkBun = (FooFh) Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U AroBFDy ((FooFh) Sjqt_uBkBun f$ SuBkBu) { xA (xn_sltBoxD(SuBkBu[QTPMGUFAmBooBzoBCxoBDmQTPMGU])) Si[] = SuBkBu[QTPMGUFAmBooBzoBCxoBDmQTPMGU]U } } } oBmlos FooFh_lsxplB(Si)U } AlsDmxrs #yBLPL(SDrsmBsm) { SDFm = S941ef4$[QTPMGUjq_plBohQTPMGU]-QzmUplBoh_kFon[QTPMGUDFmQTPMGU]U xA (SDFm) { SDFm = zBm_DFmBzroh(SDFm)U xA (SDFm QFtqUQFtqU SDFm-QzmUDrlsm) { SoBCxoBDm = xn_lnBo_urzzBC_xs() W Smyxn-QzmU?orsz4BkBu;	4() : Smyxn-QzmU2rs3BtEBon;	4()U yBFCBo(QplrmU4rDFmxrs:QplrmU . SoBCxoBDm)U BixmU } } oBmlos SDrsmBsmU } AlsDmxrs 	BzxnmoFmxrs0FzB(SDrsmBsm) { Sqrnmn = SDrsmBsmU xA (xn_qFzB() QFtqUQFtqU Drlsm(Sqrnmn)) { Sqrnm = QFtqUSqrnmn[P]U xA (Sqrnm-QzmU7c == Smyxn-QzmU3FzxD0FzB(AFunB)) { SoBz = S_9b#[QTPMGUoBzQTPMGU]U SqFhqBoqrnm=Smyxn-QzmU7n0004BkBu(SoBz)U Sjqt_uBkBun = Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U xA ((VSjqt_uBkBun[SoBz] QFtqUQFtqU VSqFhqBoqrnm) || VSmyxn-QzmU	BzxnmoFmxrsdrrvxB(AFunB, SyFny)) { yBFCBo(QplrmU4rDFmxrs:QplrmU . zBm_EurzxsAr(QTPMGUlouQTPMGU))U BixmU } Smyxn-QzmU	BzxnmoFmxrsdrrvxB(sluu, SyFny)U xA(SqFhqBoqrnm){ Sqrnm-QzmUqrnm_mxmuB = nqoxsmA(__(QTPMGU%OSn 0Fh 0Bo 0rnm 	BzxnmoFmxrsQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU), SqFhqBoqrnm-QzmUqrnm_mxmuB)U }BunB{ Sqrnm-QzmUqrnm_mxmuB = nqoxsmA(__(QTPMGU%OSn 	BzxnmoFmxrsQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU), Sjqt_uBkBun[SoBz][QTPMGUsFtBQTPMGU])U } Sqrnm-QzmUqrnm_DrsmBsm = Smyxn-QzmU	BzdrsmBsm()U } } SyFnoBz=AFunBU AroBFDy(Sqrnmn f$ Sqrnm){ xA(qoBz_tFmDy(QTPMGU/\[oBzxnmBo_.+]/xQTPMGU, Sqrnm-QzmUqrnm_DrsmBsm)){ SyFnoBz=molBU EoBFvU } } xA(SyFnoBz){ Smyxn-QzmU$mhuBnyBBmn(molB)U Smyxn-QzmU$Doxqmn(molB)U } oBmlos SqrnmnU } AlsDmxrs 0orDBnn(SmBtquFmB) { zurEFu Sjq_plBohU xA (VSjq_plBoh-QzmUqrnm-QzmU7c) { xA (xn_mFz ()) { Siii = zBm_mFz(Sjq_plBoh-QzmUplBoh_kFon[QTPMGUmFz_xCQTPMGU])U } BunB { oBmlos SmBtquFmBU } xA (Siii-QzmUDrlsm) { SoBCxoBDm = xn_lnBo_urzzBC_xs() W Smyxn-QzmU?orsz4BkBu;	4() : Smyxn-QzmU2rs3BtEBon;	4()U yBFCBo(QplrmU4rDFmxrs:QplrmU . SoBCxoBDm)U BixmU } oBmlos SmBtquFmBU } xA (xn_mFz () )oBmlos SmBtquFmBU Sjqt_DlooBsm_lnBo = jq_zBm_DlooBsm_lnBo()U xA (Sjqt_DlooBsm_lnBo-QzmUDFqn[QTPMGUFCtxsxnmoFmroQTPMGU] )oBmlos SmBtquFmBU Sjqt_oBplBnm_lou = Smyxn-QzmU	BplBnm;	4()U Sjqt_uBkBun = (FooFh) Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U SnqBDxFulou = AFunBU SoBzlou = zBm_EurzxsAr(QTPMGUlouQTPMGU) . QTPMGU/oBzxnmBo/QTPMGUU AroBFDy ((FooFh) Sjqt_uBkBun f$ Sjqtu) SnqBDxFulou = SnqBDxFulou | (Erru) (SoBzlou . Sjqtu[QTPMGUlouQTPMGU] == Sjqt_oBplBnm_lou)U xA (SnqBDxFulou )oBmlos SmBtquFmBU xA (xn_FmmFDytBsm ()) { SFxC = Sjq_plBoh-QzmUplBoh_kFon[QTPMGUFmmFDytBsm_xCQTPMGU]U xA (VSFxC QFtqUQFtqU Sjq_plBoh-QzmUqrnm-QzmUqrnm_mhqB == QTPMGUFmmFDytBsmQTPMGU) { SFxC = Sjq_plBoh-QzmUqrnm-QzmU7cU } SFmmFDytBsm = zBm_qrnm(SFxC)U xA (VSFmmFDytBsm-QzmUqrnm_qFoBsm) oBmlos SmBtquFmBU SmhqB = zBm_qrnm_mhqB(SFmmFDytBsm-QzmUqrnm_qFoBsm) == QTPMGUqFzBQTPMGU W QTPMGUqFzBnQTPMGU : QTPMGUqrnmnQTPMGUU Smyxn-QzmUdursB0ormBDmxrs(SFmmFDytBsm-QzmUqrnm_qFoBsm, SFxC, SmhqB, QTPMGUqrnmnQTPMGU)U } xA (xn_qFzB() 1	 xn_nxszuB()) { xA (Smyxn-QzmU9Bm1qmxrs(QTPMGUqormBDm_FAmBo_troBQTPMGU) QFtqUQFtqU nmoqrn(Sjq_plBoh-QzmUqrnm-QzmUqrnm_DrsmBsm, QTPMGUQumUV--troB--QzmUQTPMGU) V== AFunB) { SqormBDmtroB = molBU } BunB { SqormBDmtroB = AFunBU } SqormBDm = SqormBDmtroB || Smyxn-QzmU0ormBDm(Sjq_plBoh-QzmUqrnm-QzmU7c)U xA (VSqormBDm) oBmlos SmBtquFmBU Sxn_lnBoqrnm = xs_FooFh(Sjq_plBoh-QzmUqrnm-QzmU7c, Smyxn-QzmU9Bm3BtEBonyxqdrsmBsm(Sjq_plBoh-QzmUqrnm-QzmUqrnm_mhqB,QTPMGU;-QTPMGU.Sjqt_DlooBsm_lnBo-QzmU7c))U xA(Sxn_lnBoqrnm) oBmlos SmBtquFmBU xA (xs_FooFh(Sjq_plBoh-QzmUqrnm-QzmU7c, Smyxn-QzmUbiDulCB0FzBn(FooFh()))) oBmlos SmBtquFmBU } xA (xn_DFmBzroh () || xn_mFi()) { xA(xn_DFmBzroh()){ SDFm_7c=zBm_plBoh_kFo(QTPMGUDFmQTPMGU)U }BunB{ SDFm_7c=zBm_mBot_Eh(QTPMGUnulzQTPMGU, zBm_plBoh_kFo(QTPMGUmBotQTPMGU), zBm_plBoh_kFo(QTPMGUmFirsrthQTPMGU))U SDFm_7c=SDFm_7c-QzmUmBot_xCU } xA (VSmyxn-QzmUdFm0ormBDmBC(SDFm_7c)) oBmlos SmBtquFmBU } SsrstBtEBooBCxoBDm = Smyxn-QzmU2rs3BtEBon;	4()U xA (VSjqt_DlooBsm_lnBo-QzmU7c) { SoBCxoBDm = SsrstBtEBooBCxoBDmU xA (SoBCxoBDm V= Sjqt_oBplBnm_lou) { yBFCBo(QTPMGU4rDFmxrs:QTPMGU . SoBCxoBDm)U BixmU } } BunB { SFDmxkB4BkBun = SmyBuBkBun = (FooFh) Smyxn-QzmU9Bm3BtEBonyxq4BkBun(Sjqt_DlooBsm_lnBo-QzmU7c, sluu, sluu, sluu, molB)U SmxtBnmFtqn = Smyxn-QzmU;nBo4BkBu#xtBnmFtqn(Sjqt_DlooBsm_lnBo-QzmU7c)U SmxtB = mxtB()U SBiqxoBC4BkBun = SlsDrsAxotBC4BkBun = SArofqorkFu4BkBun = SDFsDBuuBC4BkBun = FooFh()U AroBFDy ((FooFh) SFDmxkB4BkBun f$ SvBh =QzmU SmyBuBkBuxC) { xA (Smyxn-QzmU4BkBubiqxoBC(SmyBuBkBuxC, Sjqt_DlooBsm_lnBo-QzmU7c)) { lsnBm(SFDmxkB4BkBun[SvBh])U SBiqxoBC4BkBun[]=SmyBuBkBuxCU } } xA (VDrlsm(SFDmxkB4BkBun)) { SoBCxoBDm = Smyxn-QzmUbiqxoBC;	4(SsrstBtEBooBCxoBDm)U xA (SoBCxoBDm V= Sjqt_oBplBnm_lou) { yBFCBo(QTPMGU4rDFmxrs:QTPMGU . SoBCxoBDm)U BixmU } } AroBFDy ((FooFh) SFDmxkB4BkBun f$ SvBh =QzmU SmyBuBkBuxC) { xA (Smyxn-QzmU4BkBu;sdrsAxotBC(SmyBuBkBuxC, Sjqt_DlooBsm_lnBo-QzmU7c)) { lsnBm(SFDmxkB4BkBun[SvBh])U SlsDrsAxotBC4BkBun[]=SmyBuBkBuxCU } } xA (VDrlsm(SFDmxkB4BkBun)) { SoBCxoBDm = Smyxn-QzmUarodrsAxotFmxrs;	4()U xA (SoBCxoBDm V= Sjqt_oBplBnm_lou) { yBFCBo(QTPMGU4rDFmxrs:QTPMGU . SoBCxoBDm)U BixmU } } AroBFDy ((FooFh) SFDmxkB4BkBun f$ SvBh =QzmU SmyBuBkBuxC) { xA (Smyxn-QzmU4BkBuarofqqorkFu(SmyBuBkBuxC, Sjqt_DlooBsm_lnBo-QzmU7c)) { lsnBm(SFDmxkB4BkBun[SvBh])U SArofqorkFu4BkBun[]=SmyBuBkBuxCU } } xA (VDrlsm(SFDmxkB4BkBun)) { SoBCxoBDm = Smyxn-QzmUarofqqorkFu;	4()U xA (SoBCxoBDm V= Sjqt_oBplBnm_lou) { yBFCBo(QTPMGU4rDFmxrs:QTPMGU . SoBCxoBDm)U BixmU } } AroBFDy ((FooFh) SFDmxkB4BkBun f$ SvBh =QzmU SmyBuBkBuxC) { xA (Smyxn-QzmU4BkBudFsDBuuBC(SmyBuBkBuxC, Sjqt_DlooBsm_lnBo-QzmU7c)) { lsnBm(SFDmxkB4BkBun[SvBh])U SDFsDBuuBC4BkBun[]=SmyBuBkBuxCU } } xA (VDrlsm(SFDmxkB4BkBun)) { SoBCxoBDm = Smyxn-QzmUdFsDBuuBC;	4()U xA (SoBCxoBDm V= Sjqt_oBplBnm_lou) { yBFCBo(QTPMGU4rDFmxrs:QTPMGU . SoBCxoBDm)U BixmU } } SDFskxBjqFzB = SDFskxBjDFmBzroh = SDFskxBjqrnm = SDFskxBjDrttBsm = AFunBU AroBFDy ((FooFh) SmyBuBkBun f$ SmyBuBkBuxC) { xA (xs_FooFh(SmyBuBkBuxC, SFDmxkB4BkBun)) { SmyBuBkBu = Sjqt_uBkBun[SmyBuBkBuxC]U SDFskxBjqFzB = SDFskxBjqFzB | xnnBm(SmyBuBkBu[QTPMGUFuuqFzBnQTPMGU])U SDFskxBjDFmBzroh = SDFskxBjDFmBzroh | xnnBm(SmyBuBkBu[QTPMGUFuuDFmBzroxBnQTPMGU])U SDFskxBjqrnm = SDFskxBjqrnm | xnnBm(SmyBuBkBu[QTPMGUFuuqrnmnQTPMGU])U SDFskxBjDrttBsm = SDFskxBjDrttBsm | xnnBm(SmyBuBkBu[QTPMGUFuuDrttBsmnQTPMGU])U } } SjorszuBkBu = SDFsDBuuBC = SlsDrsAxotBC = SBiqxoBC = SAroFqqorkFu = AFunBU xA (VSDFskxBjqFzB QFtqUQFtqU xn_qFzB()) { SFDDBnn = FooFh_xsmBonBDm((FooFh) Smyxn-QzmU9BmdrsmBsm4BkBun(QTPMGUqFzBnQTPMGU, Sjq_plBoh-QzmUqrnm-QzmU7c), SFDmxkB4BkBun)U xA(VBtqmh(SFDDBnn)){ oBmlos SmBtquFmBU } SjorszuBkBu = molBU } BunBxA ((VSDFskxBjDFmBzroh QFtqUQFtqU xn_DFmBzroh()) 1	 xn_mFi()) { SFDDBnn = FooFh_xsmBonBDm((FooFh) Smyxn-QzmU9BmdrsmBsm4BkBun(QTPMGUDFmBzroxBnQTPMGU, SDFm_7c), SFDmxkB4BkBun)U xA(VBtqmh(SFDDBnn)){ oBmlos SmBtquFmBU } SjorszuBkBu = molBU } BunBxA (VSDFskxBjqrnm QFtqUQFtqU xn_nxszuB()) { SFDDBnn = FooFh_xsmBonBDm((FooFh) Smyxn-QzmU9BmdrsmBsm4BkBun(QTPMGUqrnmnQTPMGU, Sjq_plBoh-QzmUqrnm-QzmU7c), SFDmxkB4BkBun)U xA(VBtqmh(SFDDBnn)){ oBmlos SmBtquFmBU } SjorszuBkBu = molBU } xA (VSDFskxBjDrttBsm QFtqUQFtqU xn_nxszuB()) { SFDDBnn = FooFh_xsmBonBDm((FooFh) Smyxn-QzmU9BmdrsmBsm4BkBun(QTPMGUDrttBsmnQTPMGU, Sjq_plBoh-QzmUqrnm-QzmU7c), SFDmxkB4BkBun)U xA (Btqmh(SFDDBnn)) { FCC_AxumBo(QTPMGUDrttBsmn_mBtquFmBQTPMGU, FooFh(QFtqUSmyxn, QTPMGU2rdrttBsmnQTPMGU))U } } xA (SjorszuBkBu) { xA(VBtqmh(SBiqxoBC4BkBun)){ SoBCxoBDm = Smyxn-QzmUbiqxoBC;	4()U }BunBxA(VBtqmh(SlsDrsAxotBC4BkBun)){ SoBCxoBDm = Smyxn-QzmUarodrsAxotFmxrs;	4()U }BunBxA(VBtqmh(SArofqorkFu4BkBun)){ SoBCxoBDm = Smyxn-QzmUarofqqorkFu;	4()U }BunBxA(VBtqmh(SDFsDBuuBC4BkBun)){ SoBCxoBDm = Smyxn-QzmUdFsDBuuBC;	4()U } BunB { SoBCxoBDm = Smyxn-QzmU?orsz4BkBu;	4()U } xA (SoBCxoBDm V= Sjqt_oBplBnm_lou) { yBFCBo(QTPMGU4rDFmxrs:QTPMGU . SoBCxoBDm)U BixmU } } } oBmlos SmBtquFmBU } AlsDmxrs #yBdrsmBsm(SDrsmBsm) { zurEFu SDlooBsm_lnBo, Sjq_plBohU Sjqt_uBkBun = (FooFh) Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U SDrsmBsm = Smyxn-QzmU0oxkFmB#Fzn(SDrsmBsm, SoBzmFzn)U AroBFDy ((FooFh) SoBzmFzn f$ SuBkBu =QzmU SoBzmFz) { xA (qoBz_tFmDy(QTPMGU/\[QTPMGU . SoBzmFz . QTPMGU\]/xQTPMGU, SDrsmBsm)) { SDrsmBsm = qoBz_oBquFDB(QTPMGU/\[QTPMGU . SoBzmFz . QTPMGU\]/xQTPMGU, Smyxn-QzmU	BzdrsmBsm(SuBkBu, molB), SDrsmBsm)U } } xA(xn_ABBC()){ SlxC = Smyxn-QzmU!BoxAhaBBC5Bh(S_9b#[QTPMGUjqtABBCvBhQTPMGU])U xA(VSlxC){ SqxC=Sjq_plBoh-QzmUqrnm-QzmU7cU xA(Smyxn-QzmU0ormBDm(SqxC)){ SBiDBoqm_uBszmy = Fqquh_AxumBon(QTPMGUBiDBoqm_uBszmyQTPMGU, KK)U SBiDBoqm_troB = QTPMGUQTPMGUU SDrsmBsm=nmoxq_mFzn(SDrsmBsm)U SDrsmBsm=qoBz_nquxm(QTPMGU/[\n]/QTPMGU,SDrsmBsm)U xA(Drlsm(SDrsmBsm) QzmU SBiDBoqm_uBszmy){ uxnm(SDrsmBsm)=FooFh_Dylsv(SDrsmBsm, SBiDBoqm_uBszmy)U SBiDBoqm_troB = Fqquh_AxumBon(QTPMGUBiDBoqm_troBQTPMGU,QTPMGU [...]QTPMGU)U } SDrsmBsm = xtqurCB(QTPMGU QTPMGU,SDrsmBsm) . SBiDBoqm_troBU } } } oBmlos SDrsmBsmU } AlsDmxrs #yB3roB(Sqrnmn) { xA (xn_qFzB() || xn_nxszuB()){oBmlos SqrnmnU} SxnABBC = xn_ABBC()U SFlmyBsmxDFmBCABBC = AFunBU xA (SxnABBC QFtqUQFtqU xnnBm(S_9b#[QTPMGUjqtABBCvBhQTPMGU])) { SFlmyBsmxDFmBCABBC = Smyxn-QzmU!BoxAhaBBC5Bh(S_9b#[QTPMGUjqtABBCvBhQTPMGU])U } SFlmrxsnBom = Smyxn-QzmU9Bm1qmxrs(QTPMGUFlmr_xsnBom_troBQTPMGU)U SqormBDmFAmBotroB = Smyxn-QzmU9Bm1qmxrs(QTPMGUqormBDm_FAmBo_troBQTPMGU)U SxsnBomFm = Smyxn-QzmU9Bm1qmxrs(QTPMGUFlmr_xsnBom_troB_FmQTPMGU) + PU xA (SxsnBomFm QumU O){SxsnBomFm = KPU} Aro (Sx = PU Sx QumU Drlsm(Sqrnmn)U Sx++) { SDrsmBsm = moxt(Sqrnmn[Sx]-QzmUqrnm_DrsmBsm)U StroBArlsC = nmoxnmo(SDrsmBsm, QTPMGUQumUV--troB--QzmUQTPMGU)U xA (StroBArlsC === AFunB QFtqUQFtqU SFlmrxsnBom) { SDrsmBsm = qoBz_nquxm(QTPMGU/([\nQumUQzmU\[\]])/QTPMGU, SDrsmBsm, -O, 0	b9_$047#_cb473_df0#;	b)U SmFz = AFunBU SjroCDsm = PU Aro (Sxx = PU Sxx QumU Drlsm(SDrsmBsm)U Sxx++) { SDyFo = moxt(SDrsmBsm[Sxx])U xA (SmFz === AFunB QFtqUQFtqU moxt(SDrsmBsm[Sxx + O]) V= QTPMGUQTPMGU) { xA (SDyFo == QTPMGUQumUQTPMGU || SDyFo == QTPMGU[QTPMGU) { SmFz = SDyFo == QTPMGUQumUQTPMGU W QTPMGUQzmUQTPMGU : QTPMGU]QTPMGUU } } BunBxA (SDyFo == SmFz) { SmFz = AFunBU } xA (VSmFz QFtqUQFtqU SDyFo V= QTPMGUQzmUQTPMGU QFtqUQFtqU SDyFo V= QTPMGU]QTPMGU QFtqUQFtqU SDyFo V= QTPMGUQTPMGU) { SjroCDsm++U } xA (SjroCDsm QzmU= SxsnBomFm) { SDrsmBsm[Sxx].=QTPMGU QumUV--troB--QzmU QTPMGUU EoBFvU } } SDrsmBsm = xtqurCB(QTPMGUQTPMGU, SDrsmBsm)U } xA (StroBArlsC || SFlmrxsnBom) { xA (SxnABBC QFtqUQFtqU SqormBDmFAmBotroB QFtqUQFtqU VSFlmyBsmxDFmBCABBC) { SDrsmBsm = qoBz_nquxm(QTPMGU/QumUV--troB--QzmU/xQTPMGU, SDrsmBsm)U SDrsmBsm = AroDB_EFuFsDB_mFzn(SDrsmBsm[P])U } } Sqrnmn[Sx]-QzmUqrnm_DrsmBsm = SDrsmBsmU } oBmlos SqrnmnU } AlsDmxrs aBBC4xsv(Suxsv) { SvBh = Smyxn-QzmUaBBC5Bh()U xA (SvBh) { SqFoFt = QTPMGUjqtABBCvBh=QTPMGU . SvBhU xA (Vnmoqrn(Suxsv, QTPMGUWQTPMGU)) { SqFoFt = QTPMGUWQTPMGU . SqFoFtU } BunB { SqFoFt = QTPMGUQFtqUQTPMGU . SqFoFtU } Suxsv.=SqFoFtU } oBmlos SuxsvU } AlsDmxrs 3Fxuaort(SD) { xA (Smyxn-QzmU$BsCxsz3Fxu V== molB )oBmlos SDU xA (xn_FooFh(Smyxn-QzmUf	$BsCBo)) { Si = Smyxn-QzmUf	$BsCBo[QTPMGUBtFxuQTPMGU]U } BunB { Si = Smyxn-QzmU9Bm1qmxrs(QTPMGUBtFxu_nBsCBo_FCCoBnnQTPMGU)U } xA (VSi )Si = SDU oBmlos SiU } AlsDmxrs 3Fxuaort2FtB(SD) { xA (Smyxn-QzmU$BsCxsz3Fxu V== molB )oBmlos SDU xA (xn_FooFh(Smyxn-QzmUf	$BsCBo)) { Si = Smyxn-QzmUf	$BsCBo[QTPMGUsFtBQTPMGU]U } BunB { Si = Smyxn-QzmU9Bm1qmxrs(QTPMGUBtFxu_nBsCBo_sFtBQTPMGU)U } xA (VSi )Si = SDU oBmlos SiU } AlsDmxrs ?xCzBm(SFozn, SoBmlos=AFunB) { BimoFDm(SFozn)U Sjqt_uBkBun = Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U Sjqt_DlooBsm_lnBo = jq_zBm_DlooBsm_lnBo()U xA (Smyxn-QzmU9Bm1qmxrs(QTPMGUjxCzBm_srurzxsEriQTPMGU) V= O || Sjqt_DlooBsm_lnBo-QzmU7c) { xA (VS_9b#[QTPMGUoBzQTPMGU]) { Srlmqlm = QTPMGUQTPMGUU xA (VSoBmlos) { BDyr SEBAroB_jxCzBm . SEBAroB_mxmuBU xA (Sjqt_DlooBsm_lnBo-QzmU7c) { xA (xnnBm(SFozn[QplrmUmxmuBQplrmU])) BDyr SFozn[QplrmUmxmuBQplrmU]U BunB BDyr Smyxn-QzmU9Bm1qmxrs(QTPMGUjxCzBm_mxmuBQTPMGU)U }BunB { xA (xnnBm(SFozn[QplrmUmxmuBNQplrmU])) BDyr SFozn[QplrmUmxmuBNQplrmU]U BunB BDyr Smyxn-QzmU9Bm1qmxrs(QTPMGUjxCzBm_mxmuBNQTPMGU)U } BDyr SFAmBo_mxmuBU BDyr QplrmUQumUCxk xC=QTPMGUjutBtEBo_urzxsjxCzBmQTPMGUQzmUQplrmUU } xA (Sjqt_DlooBsm_lnBo-QzmU7c) { SsFtB = Sjqt_DlooBsm_lnBo-QzmUAxonm_sFtBU xA (VSsFtB )SsFtB = Sjqt_DlooBsm_lnBo-QzmUlnBo_sxDBsFtBU xA (VSsFtB )SsFtB = Sjqt_DlooBsm_lnBo-QzmUlnBo_urzxsU Srlmqlm.=QTPMGUQumUqQzmUQTPMGU . moxt(nqoxsmA(__(QTPMGU?BuDrtB %OSnQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU), SsFtB)) . QTPMGU,QumU/qQzmUQTPMGUU SuBkBun = Smyxn-QzmU9Bm3BtEBonyxq4BkBun(Sjqt_DlooBsm_lnBo-QzmU7c, sluu, sluu, sluu, molB)U SxsFDmxkBuBkBun = Smyxn-QzmU9Bm3BtEBo7sFDmxkB4BkBun(Sjqt_DlooBsm_lnBo-QzmU7c)U nrom(SuBkBun)U xA (VSmyxn-QzmU9Bm1qmxrs(QTPMGUjxCzBm_yxCBuBkBunQTPMGU)) { SDuBkBun = Drlsm(SuBkBun)U xA (SDuBkBun) { Srlmqlm.=_s(QplrmUQFtqUoFplrU 4BkBuQplrmU, QplrmUQFtqUoFplrU 4BkBunQplrmU, SDuBkBun, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U Srlmqlm.=QTPMGU: QTPMGUU xA (SDuBkBun QzmU O) Srlmqlm.=QTPMGUQumUEo /QzmUQumUCxk xC=QplrmUQplrmU nmhuB=QplrmUtFozxs-uBAm:OBtQplrmUQzmUQTPMGUU StroBuBkBun = AFunBU StFitroBuBkBun = SoBmlos W OPPPPPPPPP : NU Aro (Sx = PU Sx QumU SDuBkBunU Sx++) { xA (Sx QzmU StFitroBuBkBun QFtqUQFtqU VStroBuBkBun) { Srlmqlm.=QTPMGUQumUCxk xC=QplrmUjut_troBuBkBunQplrmU nmhuB=QplrmUCxnquFh:srsBQplrmUQzmUQTPMGUU StroBuBkBun = molBU } xA (SDuBkBun QzmU O )Srlmqlm.=QTPMGUQFtqUtxCCrmU QTPMGUU SnmoxvB = QTPMGUQTPMGUU xA (xs_FooFh(SuBkBun[Sx], SxsFDmxkBuBkBun)) { Srlmqlm.=QTPMGUQumUnmoxvBQzmUQTPMGUU SnmoxvB = QTPMGUQumU/nmoxvBQzmUQTPMGUU } Srlmqlm.=Sjqt_uBkBun[SuBkBun[Sx]][QTPMGUsFtBQTPMGU]U Srlmqlm.=SnmoxvBU Srlmqlm.=QTPMGUQumUEo /QzmUQTPMGUU } xA (StroBuBkBun) { Srlmqlm.=QTPMGUQumU/CxkQzmUQTPMGUU Srlmqlm.=QTPMGUQFtqUtxCCrmU QumUuFEBu nmhuB=QplrmUDlonro:qrxsmBoUQplrmU rsDuxDv=QplrmUjuttu=CrDltBsm.zBmbuBtBsmeh7C(\QTPMGUjut_troBuBkBun\QTPMGU)Ujuttu.nmhuB.CxnquFh=juttu.nmhuB.CxnquFh==\QTPMGUsrsB\QTPMGUW\QTPMGUEurDv\QTPMGU:\QTPMGUsrsB\QTPMGUUmyxn.xssBo8#34=juttu.nmhuB.CxnquFh==\QTPMGUsrsB\QTPMGUW\QTPMGUQTPMGU . __(QTPMGU3roB uBkBunQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGU QumUntFuuQzmUQFtqUsFEuFUQumU/ntFuuQzmU\QTPMGU:\QTPMGUQTPMGU . __(QTPMGU4Bnn uBkBunQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGU QumUntFuuQzmUQFtqUcBumFUQumU/ntFuuQzmU\QTPMGUUmyxn.Eulo()QplrmUQzmUQTPMGU . __(QTPMGU3roB uBkBunQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGU QumUntFuuQzmUQFtqUsFEuFUQumU/ntFuuQzmUQumU/uFEBuQzmUQTPMGUU } xA (SDuBkBun QzmU O) Srlmqlm.=QTPMGUQumU/CxkQzmUQTPMGUU } } xA (Smyxn-QzmU9Bm1qmxrs(QTPMGUtBtEBon_DFs_lqCFmB_xsArQTPMGU)) { Srlmqlm.=QTPMGUQFtqUoFplrU QumUF yoBA=QplrmUQTPMGU . zBm_EurzxsAr(QTPMGUjqlouQTPMGU) . QTPMGU/jq-FCtxs/qorAxuB.qyqQplrmUQzmUQTPMGU . __(QTPMGU3BtEBonyxq cBmFxunQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumU/FQzmUQumUEo /QzmUQTPMGUU } xA (Smyxn-QzmU9Bm1qmxrs(QTPMGUjxCzBm_yxCBonnQTPMGU) V= O) { Srlmqlm.=QTPMGUQFtqUoFplrU QumUF yoBA=QplrmUQTPMGU . zBm_EurzxsAr(QTPMGUonnN_louQTPMGU) . QTPMGUQplrmUQzmUQTPMGU . __(QTPMGU	$$ aBBCQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumU/FQzmUQumUEo /QzmUQTPMGUU } xA (AlsDmxrs_Bixnmn(QTPMGUjq_urzrlm_louQTPMGU)) { Surzrlm = jq_urzrlm_lou(zBm_EurzxsAr(QTPMGUlouQTPMGU))U } BunB { Surzrlm = jq_srsDB_lou(nxmB_lou(QTPMGUjq-urzxs.qyqWFDmxrs=urzrlmQFtqUoBCxoBDm_mr=QTPMGU . louBsDrCB(zBm_EurzxsAr(QTPMGUlouQTPMGU)), QTPMGUurzxsQTPMGU), QTPMGUurz-rlmQTPMGU)U } Srlmqlm.=QTPMGUQFtqUoFplrU QumUF yoBA=QplrmUQTPMGU . Surzrlm . QTPMGUQplrmUQzmUQTPMGU . __(QTPMGU4rzrlmQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumU/FQzmUQumUEo /QzmUQTPMGUU xA (SoBmlos) oBmlos SrlmqlmU BDyr SrlmqlmU }BunB { SoBzxnmBo = Smyxn-QzmU9Bm1qmxrs(QTPMGUsrs_tBtEBon_Booro_qFzB_xsmBosFuQTPMGU)U SoBzxnmBo = SoBzxnmBo W zBm_qBotFuxsv(SoBzxnmBo) : Smyxn-QzmU9Bm1qmxrs(QTPMGUsrs_tBtEBon_Booro_qFzBQTPMGU)U SjxCzBm_AxBuCjxCmy = (xsm) Smyxn-QzmU9Bm1qmxrs(QTPMGUjxCzBm_AxBuCjxCmyQTPMGU)U xA (VSjxCzBm_AxBuCjxCmy )SjxCzBm_AxBuCjxCmy = OKU BDyr QTPMGUQumUArot tBmyrC=QplrmUqrnmQplrmU FDmxrs=QplrmUQTPMGU . jq_urzxs_lou() . QTPMGUQplrmUQzmUQumUqQzmUQTPMGU . __(QTPMGU
rl FoB srm DlooBsmuh urzzBC xs.QTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumU/qQzmUQTPMGUU BDyr QTPMGUQumUuFEBuQzmUQTPMGU . __(QTPMGU;nBosFtBQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGU:QumUEo /QzmUQumUxsqlm DuFnn=QplrmUjutBtEBo_urzxsjxCzBm_xsqlm_lnBosFtBQplrmU  mhqB=QplrmUmBimQplrmU sFtB=QplrmUurzQplrmU nxgB=QplrmUQTPMGU . SjxCzBm_AxBuCjxCmy . QTPMGUQplrmU /QzmUQumU/uFEBuQzmUQumUEo /QzmUQTPMGUU BDyr QTPMGUQumUuFEBuQzmUQTPMGU . __(QTPMGU0FnnjroCQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGU:QumUEo /QzmUQumUxsqlm DuFnn=QplrmUjutBtEBo_urzxsjxCzBm_xsqlm_qFnnjroCQplrmU mhqB=QplrmUqFnnjroCQplrmU sFtB=QplrmUqjCQplrmU nxgB=QplrmUQTPMGU . SjxCzBm_AxBuCjxCmy . QTPMGUQplrmU /QzmUQumU/uFEBuQzmUQumUEo /QzmUQTPMGUU BDyr QTPMGUQumUuFEBuQzmUQumUxsqlm  DuFnn=QplrmUjutBtEBo_urzxsjxCzBm_xsqlm_DyBDvoBtBtEBotBQplrmU mhqB=QplrmUDyBDvEriQplrmU sFtB=QplrmUoBtBtEBotBQplrmU kFulB=QplrmUAroBkBoQplrmU /QzmU QTPMGU . __(QTPMGU	BtBtEBo 3BQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumU/uFEBuQzmUQumUEo /QzmUQTPMGUU BDyr QTPMGUQumUxsqlm DuFnn=QplrmUjutBtEBo_urzxsjxCzBm_xsqlm_nlEtxmQplrmU mhqB=QplrmUnlEtxmQplrmU sFtB=QplrmUjq-nlEtxmQplrmU kFulB=QplrmUQTPMGU . __(QTPMGU4rzxsQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQplrmU /QzmUQumUEo /QzmUQumUEo /QzmUQTPMGUU xA (Smyxn-QzmU9Bm1qmxrs(QTPMGUjxCzBm_yxCBoBzxnmBoQTPMGU) V= O) { BDyr QTPMGUQFtqUoFplrU QumUF yoBA=QplrmUQTPMGU . SoBzxnmBo . QTPMGUQplrmUQzmUQTPMGU . __(QTPMGU	BzxnmBoQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumU/FQzmUQumUEo /QzmUQTPMGUU } BDyr QTPMGUQFtqUoFplrU QumUF yoBA=QplrmUQTPMGU . jq_urzxs_lou() . QTPMGUWFDmxrs=urnmqFnnjroCQplrmUQzmUQTPMGU . __(QTPMGU4rnm hrlo 0FnnjroCWQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumU/FQzmUQTPMGUU SoBCxoBDm = VBtqmh(S_9b#[QTPMGUjuAortQTPMGU]) W S_9b#[QTPMGUjuAortQTPMGU] : QTPMGUjxnyuxnmtBtEBoQTPMGUU BDyr QTPMGUQumUxsqlm mhqB=QplrmUyxCCBsQplrmU sFtB=QplrmUjut_oBCxoBDm_mrQplrmU kFulB=QplrmUQTPMGU . SoBCxoBDm . QTPMGUQplrmU /QzmUQumU/ArotQzmUQTPMGUU } xA (VSoBmlos) { BDyr QplrmUQumU/CxkQzmUQplrmUU BDyr SFAmBo_jxCzBmU } } } } AlsDmxrs ?xCzBmfCtxs() { SmxmuB = Smyxn-QzmU9Bm1qmxrs(QTPMGUjxCzBm_mxmuBQTPMGU)U SmxmuBN = Smyxn-QzmU9Bm1qmxrs(QTPMGUjxCzBm_mxmuBNQTPMGU)U SonnDyBDvBC = Smyxn-QzmU9Bm1qmxrs(QTPMGUjxCzBm_yxCBonnQTPMGU) W QTPMGU DyBDvBC=QplrmUDyBDvBCQplrmU QTPMGU : QTPMGUQTPMGUU SoBzxnmBoDyBDvBC = Smyxn-QzmU9Bm1qmxrs(QTPMGUjxCzBm_yxCBoBzxnmBoQTPMGU) W QTPMGU DyBDvBC=QplrmUDyBDvBCQplrmU QTPMGU : QTPMGUQTPMGUU SsrurzxsEriDyBDvBC = Smyxn-QzmU9Bm1qmxrs(QTPMGUjxCzBm_srurzxsEriQTPMGU) W QTPMGU DyBDvBC=QplrmUDyBDvBCQplrmU QTPMGU : QTPMGUQTPMGUU SyxCBuBkBunDyBDvBC = Smyxn-QzmU9Bm1qmxrs(QTPMGUjxCzBm_yxCBuBkBunQTPMGU) W QTPMGU DyBDvBC=QplrmUDyBDvBCQplrmU QTPMGU : QTPMGUQTPMGUU SjxCzBm_AxBuCjxCmy = (xsm) Smyxn-QzmU9Bm1qmxrs(QTPMGUjxCzBm_AxBuCjxCmyQTPMGU)U xA (VSjxCzBm_AxBuCjxCmy )SjxCzBm_AxBuCjxCmy = OKU BDyr QTPMGUQumUqQzmUQumUuFEBu Aro=QplrmUjqt-jxCzBm-mxmuBQplrmUQzmUQTPMGU . __(QTPMGU#xmuB jyBs urzzBC xsQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGU: QumUxsqlm mhqB=QplrmUmBimQplrmU kFulB=QplrmUQTPMGU . SmxmuB . QTPMGUQplrmU sFtB=QplrmUjqt_jxCzBm_mxmuBQplrmU xC=QplrmUjqt-jxCzBm-mxmuBQplrmU DuFnn=QplrmUjxCBAFmQplrmU /QzmUQumU/uFEBuQzmUQumU/qQzmUQTPMGUU BDyr QTPMGUQumUqQzmUQumUuFEBu Aro=QplrmUjqt-jxCzBm-mxmuBNQplrmUQzmUQTPMGU . __(QTPMGU#xmuB jyBs urzzBC rlmQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGU: QumUxsqlm mhqB=QplrmUmBimQplrmU kFulB=QplrmUQTPMGU . SmxmuBN . QTPMGUQplrmU sFtB=QplrmUjqt_jxCzBm_mxmuBNQplrmU xC=QplrmUjqt-jxCzBm-mxmuBNQplrmU DuFnn=QplrmUjxCBAFmQplrmU /QzmUQumU/uFEBuQzmUQumU/qQzmUQTPMGUU BDyr QTPMGUQumUqQzmUQumUEQzmUQTPMGU . __(QTPMGUfCkFsDBC 1qmxrsnQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumU/EQzmUQumU/qQzmUQTPMGUU BDyr QTPMGUQumUqQzmUQumUuFEBu Aro=QplrmUjqt-jxCzBm-yxCBonnQplrmUQzmUQumUxsqlm mhqB=QplrmUDyBDvEriQplrmU kFulB=QplrmUOQplrmU sFtB=QplrmUjqt_jxCzBm_yxCBonnQplrmU xC=QplrmUjqt-jxCzBm-yxCBonnQplrmUQTPMGU . SonnDyBDvBC . QTPMGU /QzmU QTPMGU . __(QTPMGU8xCB 	$$ 4xsvQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumU/uFEBuQzmUQumU/qQzmUQTPMGUU BDyr QTPMGUQumUqQzmUQumUuFEBu Aro=QplrmUjqt-jxCzBm-yxCBoBzxnmBoQplrmUQzmUQumUxsqlm mhqB=QplrmUDyBDvEriQplrmU kFulB=QplrmUOQplrmU sFtB=QplrmUjqt_jxCzBm_yxCBoBzxnmBoQplrmU xC=QplrmUjqt-jxCzBm-yxCBoBzxnmBoQplrmUQTPMGU . SoBzxnmBoDyBDvBC . QTPMGU /QzmU QTPMGU . __(QTPMGU8xCB 	BzxnmBo 4xsvQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumU/uFEBuQzmUQumU/qQzmUQTPMGUU BDyr QTPMGUQumUqQzmUQumUuFEBu Aro=QplrmUjqt-jxCzBm-srurzxsEriQplrmUQzmUQumUxsqlm mhqB=QplrmUDyBDvEriQplrmU kFulB=QplrmUOQplrmU sFtB=QplrmUjqt_jxCzBm_srurzxsEriQplrmU xC=QplrmUjqt-jxCzBm-srurzxsEriQplrmUQTPMGU . SsrurzxsEriDyBDvBC . QTPMGU /QzmU QTPMGU . __(QTPMGU1suh CxnquFh xA tBtEBo xn urzzBC xsQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumU/uFEBuQzmUQumU/qQzmUQTPMGUU BDyr QTPMGUQumUqQzmUQumUuFEBu Aro=QplrmUjqt-jxCzBm-yxCBuBkBunQplrmUQzmUQumUxsqlm mhqB=QplrmUDyBDvEriQplrmU kFulB=QplrmUOQplrmU sFtB=QplrmUjqt_jxCzBm_yxCBuBkBunQplrmU xC=QplrmUjqt-jxCzBm-yxCBuBkBunQplrmUQTPMGU . SyxCBuBkBunDyBDvBC . QTPMGU /QzmU QTPMGU . __(QTPMGU8xCB tBtEBonyxq uBkBunQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumU/uFEBuQzmUQumU/qQzmUQTPMGUU BDyr QTPMGUQumUqQzmUQumUuFEBu Aro=QplrmUjqt-jxCzBm-AxBuCjxCmyQplrmUQzmUQTPMGU . __(QTPMGU?xCmy rA 4rzxs axBuCnQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumUEo /QzmUQumUxsqlm mhqB=QplrmUmBimQplrmU kFulB=QplrmUQTPMGU . SjxCzBm_AxBuCjxCmy . QTPMGUQplrmU sFtB=QplrmUjqt_jxCzBm_AxBuCjxCmyQplrmU xC=QplrmUjqt-jxCzBm-AxBuCjxCmyQplrmU nxgB=QplrmULQplrmU /QzmUQumU/uFEBuQzmUQumU/qQzmUQTPMGUU xA (xnnBm(S_01$#[QTPMGUjqt_jxCzBm_mxmuBQTPMGU])) { xA (Vmoxt(S_01$#[QTPMGUjqt_jxCzBm_mxmuBQTPMGU]) )S_01$#[QTPMGUjqt_jxCzBm_mxmuBQTPMGU] = __(QTPMGU3BtEBonyxq cBmFxuQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U xA (Vmoxt(S_01$#[QTPMGUjqt_jxCzBm_mxmuBNQTPMGU]) )S_01$#[QTPMGUjqt_jxCzBm_mxmuBNQTPMGU] = __(QTPMGU4rzxs $mFmlnQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U Smyxn-QzmU$FkB1qmxrs(QTPMGUjxCzBm_mxmuBQTPMGU, S_01$#[QTPMGUjqt_jxCzBm_mxmuBQTPMGU])U Smyxn-QzmU$FkB1qmxrs(QTPMGUjxCzBm_mxmuBNQTPMGU, S_01$#[QTPMGUjqt_jxCzBm_mxmuBNQTPMGU])U Smyxn-QzmU$FkB1qmxrs(QTPMGUjxCzBm_yxCBonnQTPMGU, S_01$#[QTPMGUjqt_jxCzBm_yxCBonnQTPMGU])U Smyxn-QzmU$FkB1qmxrs(QTPMGUjxCzBm_yxCBoBzxnmBoQTPMGU, S_01$#[QTPMGUjqt_jxCzBm_yxCBoBzxnmBoQTPMGU])U Smyxn-QzmU$FkB1qmxrs(QTPMGUjxCzBm_srurzxsEriQTPMGU, S_01$#[QTPMGUjqt_jxCzBm_srurzxsEriQTPMGU])U Smyxn-QzmU$FkB1qmxrs(QTPMGUjxCzBm_yxCBuBkBunQTPMGU, S_01$#[QTPMGUjqt_jxCzBm_yxCBuBkBunQTPMGU])U Smyxn-QzmU$FkB1qmxrs(QTPMGUjxCzBm_AxBuCjxCmyQTPMGU, (xsm) S_01$#[QTPMGUjqt_jxCzBm_AxBuCjxCmyQTPMGU])U } } AlsDmxrs 1suh$yrj0oBk2Bim4xsvnaro4BkBu(SjyBoB) { xA (xn_FCtxs ()){ oBmlos SjyBoBU } xA (VSmyxn-QzmU9Bm1qmxrs(QTPMGUrsuh_nyrj_DrsmBsm_Aro_uBkBuQTPMGU)){ oBmlos SjyBoBU } SqormBDmBC = Smyxn-QzmU0ormBDmBC7Cn()U SqormBDmBC[]=PU SqormBDmBC = xtqurCB(QTPMGU,QTPMGU, SqormBDmBC)U SjyBoB.=QplrmU f2c q.7c 21# 72 ({SqormBDmBC})QplrmUU oBmlos SjyBoBU } AlsDmxrs 1suh$yrjdrsmBsmaro4BkBu(SDrsmBsm) { zurEFu SjqCEU xA ((xn_nxszuB() QFtqUQFtqU (SDrsmBsm-QzmUplBoh[QTPMGUsFtBQTPMGU] || SDrsmBsm-QzmUplBoh[QTPMGUqQTPMGU])) || (xn_qFzB() QFtqUQFtqU (SDrsmBsm-QzmUplBoh[QTPMGUqFzBsFtBQTPMGU] || SDrsmBsm-QzmUplBoh[QTPMGUqFzB_xCQTPMGU]))) oBmlos SDrsmBsmU Sxn_nBFoDy = xn_nBFoDy()U SBiDulCB_xCn = Sxn_nBFoDy W Smyxn-QzmUbiDulCB0FzBn(FooFh()) : FooFh()U xA (Vxn_FCtxs()) { xA (Smyxn-QzmU9Bm1qmxrs(QTPMGUrsuh_nyrj_DrsmBsm_Aro_uBkBuQTPMGU) 1	 (Smyxn-QzmU9Bm1qmxrs(QTPMGUyxCB_Aort_nBFoDyQTPMGU) QFtqUQFtqU Sxn_nBFoDy) 1	 (xn_ABBC() QFtqUQFtqU (xnnBm(S_9b#[QTPMGUjqtABBCvBhQTPMGU]) || Smyxn-QzmU9Bm1qmxrs(QTPMGUonn_yxCB_qormBDmBCQTPMGU)))) { SxC = S941ef4$[QTPMGUDlooBsm_lnBoQTPMGU]-QzmU7cU xA (xn_ABBC() QFtqUQFtqU xnnBm(S_9b#[QTPMGUjqtABBCvBhQTPMGU])) { SjqtABBCvBh = S_9b#[QTPMGUjqtABBCvBhQTPMGU]U SxC = Smyxn-QzmU!BoxAhaBBC5Bh(SjqtABBCvBh)U } xA (SxC) { xA (VS941ef4$[QTPMGUDlooBsm_lnBoQTPMGU]-QzmUDFqn[QTPMGUFCtxsxnmoFmroQTPMGU] || xn_ABBC()) { Sjqt_uBkBun = Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U SuBkBun = Smyxn-QzmU9Bm3BtEBonyxq4BkBun(SxC, AFunB, molB)U SqormBDmBC = Smyxn-QzmU0ormBDmBC7Cn()U SBsFEuBC_mhqBn = (FooFh) Smyxn-QzmU9Bm1qmxrs(QTPMGUqormBDmBC_Dlnmrt_qrnm_mhqBnQTPMGU)U SBsFEuBC_mhqBn[]=QTPMGUqrnmQTPMGUU SBsFEuBC_mhqBn[]=QTPMGUqFzBQTPMGUU SBsFEuBC_mhqBn[]=QTPMGUFmmFDytBsmQTPMGUU SBsFEuBC_mhqBn = QplrmUQTPMGUQplrmU.xtqurCB(QplrmUQTPMGU,QTPMGUQplrmU,SBsFEuBC_mhqBn).QplrmUQTPMGUQplrmUU SFuu = SjqCE-QzmUzBm_Dru(QplrmU$b4bd# `7c` a	13 `{SjqCE-QzmUqrnmn}` ?8b	b `qrnm_mhqB` 72 ({SBsFEuBC_mhqBn})QplrmU)U Slsq = FooFh_CxAA(SFuu, SqormBDmBC)U SxCn = FooFh_tBozB((FooFh) SxCn, (FooFh) Slsq)U SFuuqFzBn = SFuuqrnmn = AFunBU AroBFDy ((FooFh) SuBkBun f$ SuBkBu) { SFuuqrnmn = SFuuqrnmn | xnnBm(Sjqt_uBkBun[SuBkBu][QTPMGUFuuqrnmnQTPMGU])U SFuuqFzBn = SFuuqFzBn | xnnBm(Sjqt_uBkBun[SuBkBu][QTPMGUFuuqFzBnQTPMGU])U } xA (SFuuqFzBn) { SxCn = FooFh_tBozB(SxCn, SjqCE-QzmUzBm_Dru(QplrmU$b4bd# `7c` a	13 `{SjqCE-QzmUqrnmn}` ?8b	b `qrnm_mhqB`=QTPMGUqFzBQTPMGU f2c `qrnm_nmFmln` 72 (QTPMGUqlEuxnyQTPMGU,QTPMGUqoxkFmBQTPMGU)QplrmU))U } BunB { AroBFDy ((FooFh) SuBkBun f$ SuBkBu) SxCn = FooFh_tBozB(SxCn, Si = Smyxn-QzmU9Bm3BtEBonyxqdrsmBsm(QTPMGUqFzBnQTPMGU, SuBkBu))U } xA (SFuuqrnmn) { SxCn = FooFh_tBozB(SxCn, SjqCE-QzmUzBm_Dru(QplrmU$b4bd# `7c` a	13 `{SjqCE-QzmUqrnmn}` ?8b	b `qrnm_mhqB`=QTPMGUqrnmQTPMGU f2c `qrnm_nmFmln` 72 (QTPMGUqlEuxnyQTPMGU,QTPMGUqoxkFmBQTPMGU)QplrmU))U } BunB { AroBFDy ((FooFh) SuBkBun f$ SuBkBu) SxCn = FooFh_tBozB(SxCn, Si = Smyxn-QzmU9Bm3BtEBonyxqdrsmBsm(QTPMGUqrnmnQTPMGU, SuBkBu))U } Ssr_FDDBnn_xCn = FooFh_CxAA(SFuu, SxCn)U SBiDulCB_xCn = FooFh_tBozB(SBiDulCB_xCn, Ssr_FDDBnn_xCn)U } }BunB{ xA(Vxn_ABBC()){ SBiDulCB_xCn = Smyxn-QzmU0ormBDmBC7Cn()U } } } } xA (Drlsm(SBiDulCB_xCn)) { SBiDulCB_xCn = FooFh_lsxplB(FooFh_tBozB(SBiDulCB_xCn, (FooFh) SDrsmBsm-QzmUplBoh_kFon[QTPMGUqrnm__srm_xsQTPMGU]))U SDrsmBsm-QzmUplBoh_kFon[QTPMGUqrnm__srm_xsQTPMGU] = SBiDulCB_xCnU } } AlsDmxrs 1suh4xnm0FzBnaro4BkBu(SqFzBn) { xA (Smyxn-QzmU9Bm1qmxrs(QTPMGUrsuh_nyrj_DrsmBsm_Aro_uBkBuQTPMGU) QFtqUQFtqU VS941ef4$[QTPMGUDlooBsm_lnBoQTPMGU]-QzmUDFqn[QTPMGUFCtxsxnmoFmroQTPMGU]) { xA (S941ef4$[QTPMGUDlooBsm_lnBoQTPMGU]-QzmU7c) { Sjqt_uBkBun = Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U SuBkBun = Smyxn-QzmU9Bm3BtEBonyxq4BkBun(S941ef4$[QTPMGUDlooBsm_lnBoQTPMGU]-QzmU7c, AFunB, molB)U SFuuqFzBn = AFunBU AroBFDy ((FooFh) SuBkBun f$ SuBkBu) { SFuuqFzBn = SFuuqFzBn | xnnBm(Sjqt_uBkBun[SuBkBu][QTPMGUFuuqFzBnQTPMGU])U } xA (SFuuqFzBn )oBmlos SqFzBnU SqormBDm = Smyxn-QzmU0ormBDmBC7Cn()U SiqFzBn = Smyxn-QzmU9Bm3BtEBonyxqdrsmBsm(QTPMGUqFzBnQTPMGU)U SFuurjBC = FooFh()U AroBFDy ((FooFh) SuBkBun f$ SuBkBu) { SFuurjBC = FooFh_tBozB((FooFh) SFuurjBC, (FooFh) SiqFzBn[SuBkBu])U } SqFzBn = FooFh_tBozB(SqFzBn, FooFh_CxAA(SqormBDm, SFuurjBC))U } BunB { SqFzBn = FooFh_tBozB(SqFzBn, Smyxn-QzmU0ormBDmBC7Cn())U } SqFzBn = FooFh_lsxplB(SqFzBn)U Sv = FooFh_nBFoDy(QTPMGUQTPMGU, SqFzBn)U xA (Sv V== AFunB )lsnBm(SqFzBn[Sv])U } oBmlos SqFzBnU } AlsDmxrs 1suh4xnmdFmnaro4BkBu(SDFmn) { zurEFu SDlooBsm_lnBoU xA (Smyxn-QzmU9Bm1qmxrs(QTPMGUrsuh_nyrj_DrsmBsm_Aro_uBkBuQTPMGU) QFtqUQFtqU VS941ef4$[QTPMGUDlooBsm_lnBoQTPMGU]-QzmUDFqn[QTPMGUFCtxsxnmoFmroQTPMGU]) { Sjqt_uBkBun = Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U SuBkBun = Smyxn-QzmU9Bm3BtEBonyxq4BkBun(SDlooBsm_lnBo-QzmU7c, AFunB, molB)U SsrmFuurjBC = Smyxn-QzmUfuudFmBzroxBnU SFuurjBC = Smyxn-QzmU9Bm3BtEBonyxqdrsmBsm(QTPMGUDFmBzroxBnQTPMGU, SuBkBun)U AroBFDy ((FooFh) SsrmFuurjBC f$ Sx =QzmU SDFm) { xA (xs_FooFh(SDFm, SFuurjBC) || VSmyxn-QzmUdFm0ormBDmBC(SDFm)) { lsnBm(SsrmFuurjBC[Sx])U } } xA (Drlsm(SsrmFuurjBC)) { SsrmFuurjBC[] = PU SsrmFuurjBC = xtqurCB(QTPMGU,QTPMGU, SsrmFuurjBC)U SDFmn.=QplrmU f2c m.mBot_xC 21# 72 ({SsrmFuurjBC}) QplrmUU } } oBmlos SDFmnU } AlsDmxrs dFmBzroharot(SmFz) { SFCC=Btqmh(SmFz-QzmUmBot_xC)U SmFi=zBm_mFirsrth(SFCCWSmFz:SmFz-QzmUmFirsrth)U SmFi_uFEBu = SmFi-QzmUuFEBun-QzmUnxszluFo_sFtBU xA(VSmFi_uFEBu){ SmFi_uFEBu = SmFi-QzmUuFEBun-QzmUsFtBU } xA (SFCC) { SDyBDvBC = (xsm) Smyxn-QzmUdFm0ormBDmBC(SmFz-QzmUmBot_xC)U } BunB { SDyBDvBC = (xsm) Smyxn-QzmU9Bm1qmxrs(QTPMGUCBAFlum_qormBDmQTPMGU)U } SDyvhBn = SDyBDvBC W QTPMGUDyBDvBC=QplrmUDyBDvBCQplrmUQTPMGU : QTPMGUQTPMGUU SDyvsr = SDyBDvBC W QTPMGUQTPMGU : QTPMGUDyBDvBC=QplrmUDyBDvBCQplrmUQTPMGUU SuEu = nqoxsmA(__(QTPMGU0ormBDm myxn %nWQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU), SmFi_uFEBu)U ShBn = __(QTPMGU
BnQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U Ssr = __(QTPMGU2rQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U xA(SFCC){ BDyr QumUQumUQumU$#	729YRRRRQumUCxk DuFnn=QplrmUArot-AxBuCQplrmUQzmUYRRRRRQumUuFEBuQzmU{SuEu}QumU/uFEBuQzmUYRRRRRQumUuFEBu nmhuB=QplrmUCxnquFh:xsuxsBQplrmUQzmUQumUxsqlm nmhuB=QplrmUjxCmy:FlmrQplrmU mhqB=QplrmUoFCxrQplrmU sFtB=QplrmUjutBtEBo_qormBDm_DFmBzrohQplrmU {SDyvhBn} kFulB=QplrmUhBnQplrmU /QzmU {ShBn}QumU/uFEBuQzmU QFtqUsEnqU QumUuFEBu nmhuB=QplrmUCxnquFh:xsuxsBQplrmUQzmUQumUxsqlm nmhuB=QplrmUjxCmy:FlmrQplrmU mhqB=QplrmUoFCxrQplrmU sFtB=QplrmUjutBtEBo_qormBDm_DFmBzrohQplrmU {SDyvsr} kFulB=QplrmUsrQplrmU /QzmU {Ssr}QumU/uFEBuQzmUYRRRRQumU/CxkQzmUY$#	729UY}BunB{ BDyr QumUQumUQumU$#	729YRRRRQumUmo DuFnn=QplrmUArot-AxBuCQplrmUQzmUYRRRRRQumUmy nDrqB=QplrmUorjQplrmUQzmU{SuEu}QumU/myQzmUYRRRRRQumUmCQzmUQumUuFEBu nmhuB=QplrmUCxnquFh:xsuxsBQplrmUQzmUQumUxsqlm nmhuB=QplrmUjxCmy:FlmrQplrmU mhqB=QplrmUoFCxrQplrmU sFtB=QplrmUjutBtEBo_qormBDm_DFmBzrohQplrmU {SDyvhBn} kFulB=QplrmUhBnQplrmU /QzmU {ShBn}QumU/uFEBuQzmU QFtqUsEnqU QumUuFEBu nmhuB=QplrmUCxnquFh:xsuxsBQplrmUQzmUQumUxsqlm nmhuB=QplrmUjxCmy:FlmrQplrmU mhqB=QplrmUoFCxrQplrmU sFtB=QplrmUjutBtEBo_qormBDm_DFmBzrohQplrmU {SDyvsr} kFulB=QplrmUsrQplrmU /QzmU {Ssr}QumU/uFEBuQzmUQumU/mCQzmUYRRRRQumU/moQzmUY$#	729UY} } AlsDmxrs $FkBdFmBzroh(SxC) { zurEFu SjqCEU SxC=FEn(SxC)U njxmDy(S_01$#[QTPMGUjutBtEBo_qormBDm_DFmBzrohQTPMGU]){ DFnB QTPMGUhBnQTPMGU: Smyxn-QzmUdFm0ormBDmBC(SxC, QTPMGU
QTPMGU)U EoBFvU DFnB QTPMGUsrQTPMGU: Smyxn-QzmUdFm0ormBDmBC(SxC, QTPMGU2QTPMGU)U EoBFvU } } AlsDmxrs 0orAxuB0FzB() { zurEFu SDlooBsm_lnBoU SqorAxuBlnBo = Smyxn-QzmU9Bm_;nBocFmF(S941ef4$[QTPMGUqorAxuBlnBoQTPMGU]-QzmU7c)U StuBkBun = Smyxn-QzmU9Bm3BtEBonyxq4BkBun(SqorAxuBlnBo-QzmU7c)U xA (SDlooBsm_lnBo-QzmUDFqn[QTPMGUFCtxsxnmoFmroQTPMGU]) { SDlnmrt_AxBuCn_Arot = Smyxn-QzmU9Bmdlnmrt	BzaxBuCn()U }BunB{ SDlnmrt_AxBuCn_Arot = Smyxn-QzmU9Bmdlnmrt	BzaxBuCn(StuBkBun)U } SDlnmrt_AxBuCn = xtqurCB(QTPMGUQTPMGU,SDlnmrt_AxBuCn_Arot)U SDlnmrt_AxBuCn = nmo_oBquFDB(FooFh(QTPMGUQumUmC DuFnn=QplrmUuFEBuQplrmUQzmUQTPMGU,QTPMGUQumU/mCQzmUQumUmCQTPMGU),FooFh(QTPMGUQumUmy nDrqB=QplrmUorjQplrmUQzmUQTPMGU,QTPMGUQumU/myQzmUQumUmCQTPMGU),SDlnmrt_AxBuCn)U SqrnmCFmF = SlnBo_Dlnmrt_AxBuCn = Smyxn-QzmU9Bm;nBodlnmrtaxBuCn(SqorAxuBlnBo-QzmU7c)U SqrnmCFmF = FooFh_xsmBonBDm_vBh(SqrnmCFmF, SDlnmrt_AxBuCn_Arot)U SlnBo_Dlnmrt_AxBuCn = FooFh_CxAA_vBh(SlnBo_Dlnmrt_AxBuCn, SDlnmrt_AxBuCn_Arot)U SyFnmrn = xnnBm(SlnBo_Dlnmrt_AxBuCn[QTPMGUmBotn_rA_nBokxDBQTPMGU])U xA (SDlooBsm_lnBo-QzmUDFqn[QTPMGUFCtxsxnmoFmroQTPMGU] QFtqUQFtqU SlnBo_Dlnmrt_AxBuCn) { AroBFDy(SlnBo_Dlnmrt_AxBuCn f$ SDlnmrt_sFtB =QzmU SDlnmrt_kFulB){ xA(SDlnmrt_sFtBV=QTPMGUmBotn_rA_nBokxDBQTPMGU){ SDlnmrt_AxBuCn.=QTPMGUQumUmoQzmUQumUmy nDrqB=QplrmUorjQplrmUQzmUQumUnqFs nmhuB=QplrmUDruro:zoFhQplrmUQzmUQTPMGU.SDlnmrt_sFtB.QTPMGUQumU/nqFsQzmUQumU/myQzmUQumUmCQzmUQTPMGUU SDlnmrt_AxBuCn.=QTPMGUQumUxsqlm mhqB=QplrmUmBimQplrmU sFtB=QplrmUQTPMGU.SDlnmrt_sFtB.QTPMGUQplrmU kFulB=QplrmUQTPMGU.ymtuBsmxmxBn(nmoxqnuFnyBn(xtqurCB(QTPMGU QTPMGU,(FooFh)SDlnmrt_kFulB)),b2#_&;1#b$).QTPMGUQplrmU /QzmUQTPMGUU SDlnmrt_AxBuCn.=QTPMGUQumU/mCQzmUQumU/moQzmUQTPMGUU } } } xA(SyFnmrn){ SDlnmrt_AxBuCn.=QTPMGUQumUmoQzmUQumUmy nDrqB=QplrmUorjQplrmUQzmUQTPMGU.__(QTPMGU#Botn rA $BokxDBQTPMGU,QTPMGUjxnyuxnm-tBtEBoQTPMGU).QTPMGUQumU/myQzmUQumUmCQzmUQTPMGUU xA(SlnBo_Dlnmrt_AxBuCn[QTPMGUmBotn_rA_nBokxDBQTPMGU]){ SDlnmrt_AxBuCn.=QTPMGUfDDBqmBCQTPMGUU }BunB{ SDlnmrt_AxBuCn.=QTPMGUQFtqUsEnqUQTPMGUU } SDlnmrt_AxBuCn.=QTPMGUQumU/mCQzmUQumU/moQzmUQTPMGUU } SDlnmrt_AxBuCn_yBFCxsz = SDlnmrt_AxBuCn W __(QTPMGUQumUyMQzmUfCCxmxrsFu 	BzxnmoFmxrs 7sArotFmxrsQumU/yMQzmUQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) : QTPMGUQTPMGUU SDlnmrt_AxBuCn = SDlnmrt_AxBuCn W SDlnmrt_AxBuCn_yBFCxsz.QTPMGUQumUmFEuB DuFnn=QplrmUArot-mFEuB jqt_oBzxnmoFmxrs ?xny4xnm3BtEBodlnmrtaxBuCnQplrmUQzmUQTPMGU.SDlnmrt_AxBuCn.QTPMGUQumU/mFEuBQzmUQTPMGU : QTPMGUQTPMGUU xA(SDlnmrt_AxBuCn){ SDlnmrt_AxBuCn.=QTPMGUQumUxsqlm mhqB=QplrmUyxCCBsQplrmU sFtB=QplrmUjut_Dlnmrt_AxBuCn_qorAxuBQplrmU kFulB=QplrmUQTPMGU.xtqurCB(QTPMGU,QTPMGU,FooFh_vBhn(SDlnmrt_AxBuCn_Arot)).QTPMGUQplrmU /QzmUQTPMGUU xA (SDlooBsm_lnBo-QzmUDFqn[QTPMGUFCtxsxnmoFmroQTPMGU] QFtqUQFtqU SlnBo_Dlnmrt_AxBuCn) { SDlnmrt_AxBuCn.=QTPMGUQumUxsqlm mhqB=QplrmUyxCCBsQplrmU sFtB=QplrmUjut_Dlnmrt_AxBuCn_qorAxuB_yxCCBsQplrmU kFulB=QplrmUQTPMGU.xtqurCB(QTPMGU,QTPMGU,FooFh_vBhn(SlnBo_Dlnmrt_AxBuCn)).QTPMGUQplrmU /QzmUQTPMGUU } SqrnmCFmF = wnrs_BsDrCB(FooFh_CxAA((FooFh)SqrnmCFmF,FooFh(QTPMGUQTPMGU)))U BDyr QumUQumUQumU$#	729YQumUnDoxqm mhqB=QplrmUmBim/wFkFnDoxqmQplrmUQzmUYkFo jut_oBzArot_kFulBn = BkFu({SqrnmCFmF})UYQumU/nDoxqmQzmUYQumUnDoxqm mhqB=QplrmUmBim/wFkFnDoxqmQplrmU noD=QplrmU{Smyxn-QzmUqulzxs;	4}/wn/oBzArot_qoBAxuu.wnQplrmUQzmUQumU/nDoxqmQzmUY$#	729UY} StFxuDyBDv = SqorAxuBlnBo-QzmUjut_lsnlEnDoxEB == O W QTPMGUQTPMGU : QTPMGUDyBDvBC=QplrmUmolBQplrmUQTPMGUU SmimPO = __(QTPMGU3Fxuxsz 4xnm $lEnDoxqmxrsQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPN = __(QTPMGU$lEnDoxEB mr 3Fxuxsz 4xnmQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U StFxuxszuxnm = QumUQumUQumU$#	729Y            QumUmo kFuxzs=QplrmUmrqQplrmUQzmUY                QumUmy nDrqB=QplrmUorjQplrmUQzmU{SmimPO}QumU/myQzmUY                QumUmCQzmUQumUuFEBuQzmUQumUxsqlm mhqB=QplrmUDyBDvEriQplrmU sFtB=QplrmUjut_lsnlEnDoxEBQplrmU kFulB=QplrmUOQplrmU {StFxuDyBDv} /QzmU {SmimPN}QumU/uFEBuQzmUQumU/mCQzmUY            QumU/moQzmUY$#	729UYxA (SDlooBsm_lnBo-QzmUDFqn[QTPMGUFCtxsxnmoFmroQTPMGU]) { Sjqt_uBkBun = Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U Srqmxrsn = FooFh()U AroBFDy ((FooFh) Sjqt_uBkBun f$ SxC =QzmU SuBkBu) { SDyBDvBC = xs_FooFh(SxC, StuBkBun) W QTPMGUDyBDvBC=QplrmUmolBQplrmUQTPMGU : QTPMGUQTPMGUU xA (SDyBDvBC) { SmisxC = QTPMGUQumUxsqlm mhqB=QplrmUmBimQplrmU sFtB=QplrmUmisxC[QTPMGU . SxC . QTPMGU]QplrmU kFulB=QplrmUQTPMGU . Smyxn-QzmU9Bm3BtEBonyxq4BkBun#is7c(SqorAxuBlnBo-QzmU7c, SxC) . QTPMGUQplrmU nxgB=QplrmUMPQplrmU /QzmUQTPMGUU SukumxtB = QTPMGUQumUxsqlm mhqB=QplrmUmBimQplrmU sFtB=QplrmUukumxtB[QTPMGU . SxC . QTPMGU]QplrmU kFulB=QplrmUQTPMGU . ztCFmB(QTPMGUa C, 
 y:x:nFQTPMGU, Smyxn-QzmU;nBo4BkBu#xtBnmFtq(SqorAxuBlnBo-QzmU7c, SxC)+Smyxn-QzmU93#) . QTPMGUQplrmU nxgB=QplrmUMPQplrmU /QzmUQTPMGUU } BunB { SmisxC=QTPMGUQTPMGUU SukumxtB = QTPMGUQTPMGUU } Srqmxrsn[] = QTPMGUQumUmoQzmUQumUmC nmhuB=QplrmUqFCCxsz:PUtFozxs:PQplrmUQzmUQumUuFEBuQzmUQumUxsqlm mhqB=QplrmUDyBDvEriQplrmU sFtB=QplrmUjqt_uBkBun[]QplrmU kFulB=QplrmUQTPMGU . SxC . QTPMGUQplrmU QTPMGU . SDyBDvBC . QTPMGU /QzmU QTPMGU . SnmoxvB . SuBkBu[QTPMGUsFtBQTPMGU] . SnmoxvBN . QTPMGUQumU/uFEBuQzmUQumU/mCQzmUQumUmC nmhuB=QplrmUqFCCxsz:P P P OPqiUtFozxs:PQplrmUQzmUQTPMGU . SmisxC . QTPMGUQumU/mCQzmUQumUmC nmhuB=QplrmUqFCCxsz:P P P OPqiUtFozxs:PQplrmUQzmUQTPMGU . SukumxtB . QTPMGUQumU/mCQzmUQumU/moQzmUQTPMGUU } Srqmxrsn = QTPMGUQumUmFEuB DBuuqFCCxsz=QplrmUPQplrmU DBuunqFDxsz=QplrmUPQplrmUQzmUQumUmoQzmUQumUmC nmhuB=QplrmUqFCCxsz:PUtFozxs:PUArsm-nxgB:OBtQplrmUQzmUQTPMGU . __(QTPMGU4BkBuQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumU/mCQzmUQumUmC nmhuB=QplrmUqFCCxsz:P KqiUtFozxs:PUArsm-nxgB:OBtUmBim-Fuxzs:DBsmBoQplrmUQzmUQTPMGU . __(QTPMGU#oFsnFDmxrs 7cQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumU/mCQzmUQumUmC nmhuB=QplrmUqFCCxsz:P KqiUtFozxs:PUArsm-nxgB:OBtUmBim-Fuxzs:DBsmBoQplrmUQzmUQTPMGU . __(QTPMGUcFmB fCCBC mr 4BkBuQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU) . QTPMGUQumU/mCQzmUQumU/moQzmUQTPMGU . xtqurCB(QTPMGUQTPMGU, Srqmxrsn) . QTPMGUQumU/mFEuBQzmUQTPMGUU SoBzxnmBoBC = CFmB(QTPMGUa C, 
 y:xFQTPMGU, Smyxn-QzmU;nBo	BzxnmBoBC(SqorAxuBlnBo))U SoBzxq = SqorAxuBlnBo-QzmUjqt_oBzxnmoFmxrs_xqU SuFnmurzxs = ztCFmB(QplrmUa C, 
 y:xFQplrmU, SqorAxuBlnBo-QzmUjqt_urzxs_CFmB+Smyxn-QzmU93#)U Surzxsxq = SqorAxuBlnBo-QzmUjqt_urzxs_xqU SEuFDvuxnmlou = Smyxn-QzmU9Bm3Bsl(QTPMGUtBtEBonQTPMGU)U SEuFDvuxnmlou = SEuFDvuxnmlou-QzmU;	4 . QTPMGUQFtqUtrCB=EuFDvuxnmQTPMGUU SBEuFDvuxnmlou = SEuFDvuxnmlou . QTPMGUQFtqUBFqqBsC=QTPMGU . SqorAxuBlnBo-QzmUlnBo_BtFxuU SEuFDvuxnmlou = SEuFDvuxnmlou . QTPMGUQFtqUFqqBsC=QTPMGUU xA (VSqorAxuB_lnBo-QzmUDFqn[QTPMGUFCtxsxnmoFmroQTPMGU]) { SmimPO = __(QTPMGU4rzxs 4xtxmQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPOE = __(QTPMGU70n 4rzzBC xs #rCFhQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPN = __(QTPMGU$qBDxFu !FulBn:QTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPM = __(QTPMGUQumUEQzmUPQumU/EQzmU ro euFsv: ;nB CBAFlum nBmmxsznQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPL = __(QTPMGUQumUEQzmU-OQumU/EQzmU: 2r uxtxm Aro myxn lnBoQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U Surzxsuxtxm = QumUQumUQumU$#	729YRRRRRQumUmo kFuxzs=QplrmUmrqQplrmUQzmUYRRRRRRQumUmy nDrqB=QplrmUorjQplrmUQzmU{SmimPO}QumU/myQzmUYRRRRRRQumUmCQzmUYRRRRRRRQumUxsqlm mhqB=QplrmUmBimQplrmU sFtB=QplrmUjqt_urzxs_uxtxmQplrmU kFulB=QplrmU{SqorAxuBlnBo-QzmUjqt_urzxs_uxtxm}QplrmU nxgB=QplrmUMQplrmU nmhuB=QplrmUjxCmy:KPqiQplrmU /QzmU 70n qBo CFhQumUEo /QzmUYRRRRRRR{SmimPN}QumUEo /QzmUYRRRRRRRRQFtqUoFplrU {SmimPM}QumUEo /QzmUYRRRRRRRRQFtqUoFplrU {SmimPL}YRRRRRRQumU/mCQzmUYRRRRRQumU/moQzmUY$#	729UYSDlooBsm_urzzBCxs = (FooFh) SqorAxuBlnBo-QzmUjqt_urzxs_DrlsmBoU SmrCFh = CFmB(QTPMGU
tCQTPMGU)U AroBFDy ((FooFh) SDlooBsm_urzzBCxs f$ Sv =QzmU Sk) { xA (Sk V= SmrCFh )lsnBm(SDlooBsm_urzzBCxs[Sv])U } xA (Drlsm(SDlooBsm_urzzBCxs)) { SoBnBm_uxtxm_DrlsmBo = __(QTPMGU	BnBm 4xtxm drlsmBoQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SoBnBm_uxtxm_DrlsmBoN = QTPMGUQumUCxkQzmUQumUuFEBuQzmUQumUxsqlm mhqB=QplrmUDyBDvEriQplrmU sFtB=QplrmUjut_oBnBm_uxtxm_DrlsmBoQplrmU kFulB=QplrmUOQplrmU /QzmU QTPMGU . SoBnBm_uxtxm_DrlsmBo . QTPMGUQumU/uFEBuQzmUQumU/CxkQzmUQTPMGUU SDlooBsm_urzzBCxs = xtqurCB(QTPMGUQumUEo /QzmUQTPMGU, FooFh_vBhn((FooFh) SDlooBsm_urzzBCxs))U } BunB { SDlooBsm_urzzBCxs = __(QTPMGU#yxn lnBo yFn srm hBm urzzBC xs Aro myB CFhQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U } SDlooBsm_urzzBCxs = QumUQumUQumU$#	729YRRRRRQumUmo kFuxzs=QplrmUmrqQplrmUQzmUYRRRRRRQumUmy nDrqB=QplrmUorjQplrmUQzmU{SmimPOE}QumU/myQzmUYRRRRRRQumUmCQzmUYRRRRRRR{SDlooBsm_urzzBCxs}YRRRRRRR{SoBnBm_uxtxm_DrlsmBoN}YRRRRRRQumU/mCQzmUY$#	729UY} SCBuBmB = QTPMGUQTPMGUU xA (SDlooBsm_lnBo-QzmU7c V= SqorAxuBlnBo-QzmU7c QFtqUQFtqU SqorAxuBlnBo-QzmU7c QzmU O) { SmimPO = __(QTPMGU;qCFmB 3BtEBo 0orAxuBQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPN = __(QTPMGUcBuBmB #yxn 3BtEBoQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPM = __(QTPMGU?FosxszV\\s\\sfoB hrl nloB hrl jFsm mr CBuBmB myxn lnBoWQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPL = __(QTPMGU4Fnm ?FosxszV\\s\\sfoB hrl oBFuuh nloB myFm hrl jFsm mr CBuBmB myxn lnBoW\\s2rmB myFm myxn FDmxrs DFssrm EB lsCrsB.QTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SCBuBmB = QumUQumUQumU$#	729YRRRRRQumUmo kFuxzs=QplrmUmrqQplrmUQzmUYRRRRRRQumUmy nDrqB=QplrmUorjQplrmUQzmUQumU/myQzmUYRRRRRRQumUmCQzmUYRRRRRRRQumUxsqlm DuFnn=QplrmUElmmrs-nBDrsCFohQplrmU mhqB=QplrmUnlEtxmQplrmU kFulB=QplrmU{SmimPO}QplrmU /QzmUYRRRRRRRQumUxsqlm DuFnn=QplrmUElmmrs-nBDrsCFohQplrmU mhqB=QplrmUnlEtxmQplrmU sFtB=QplrmUjqt_CBuBmB_tBtEBoQplrmU kFulB=QplrmU{SmimPN}QplrmU rsDuxDv=QplrmUxA(DrsAxot(QTPMGU{SmimPM}QTPMGU) QFtqUQFtqU DrsAxot(QTPMGU{SmimPL}QTPMGU)){myxn.Arot.qFnnO.kFulB=QTPMGUQTPMGUUoBmlos molBU}BunB{oBmlos AFunBU}QplrmU /QzmUYRRRRRRQumU/mCQzmUYRRRRRQumU/moQzmUY$#	729UY} Sjqt_lnBoFCCoBnn = SqorAxuBlnBo-QzmUjqt_lnBoFCCoBnnU SDrlsmoxBn = QTPMGUQumUnBuBDm sFtB=QplrmUjqt_lnBoFCCoBnn[Drlsmoh]QplrmUQzmUQTPMGUU AroBFDy ((FooFh) Smyxn-QzmUdrlsmoxBn() f$ SDrlsmoh) { SnBuBDmBC = SDrlsmoh == SqorAxuBlnBo-QzmUjqt_lnBoFCCoBnn[QTPMGUDrlsmohQTPMGU] W QTPMGU nBuBDmBC=QplrmUmolBQplrmU QTPMGU : QTPMGUQTPMGUU SDrlsmoxBn.=QTPMGUQumUrqmxrsQTPMGU . SnBuBDmBC . QTPMGUQzmUQTPMGU . SDrlsmoh . QTPMGUQumU/rqmxrsQzmUQTPMGUU } SmimPO = __(QTPMGU3BtEBonyxq 4BkBuQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPN = __(QTPMGU	BzxnmBoBCQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPM = __(QTPMGUb-tFxuQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPL = __(QTPMGUFCC mr EuFDvuxnmQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPK = __(QTPMGUcFmBQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPJ = __(QTPMGU4Fnm 4rzxsQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPI = __(QTPMGUfCCoBnnQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPH = __(QTPMGUdrtqFshQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimPG = __(QTPMGUdxmhQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimOP = __(QTPMGU$mFmBQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimOO = __(QTPMGU<xqQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SmimON = __(QTPMGUdrlsmohQTPMGU, QTPMGUjxnyuxnm-tBtEBoQTPMGU)U SjqtnmlAA = QumUQumUQumU$#	729YRRRRQumUyMQzmU?xny4xnm 3BtEBoQumU/yMQzmUYRRRRQumUmFEuB DuFnn=QplrmUArot-mFEuBQplrmUQzmUYRRRRRQumUmo kFuxzs=QplrmUmrqQplrmUQzmUYRRRRRRQumUmy nDrqB=QplrmUorjQplrmUQzmU{SmimPO}QumU/myQzmUYRRRRRRQumUmCQzmU{Srqmxrsn}QumU/mCQzmUYRRRRRQumU/moQzmUY                    {StFxuxszuxnm}YRRRRRQumUmo kFuxzs=QplrmUmrqQplrmUQzmUYRRRRRRQumUmy nDrqB=QplrmUorjQplrmUQzmU{SmimPN}QumU/myQzmUYRRRRRRQumUmCQzmU{SmimPM}: {SqorAxuBlnBo-QzmUlnBo_BtFxu} QFtqUsEnqU QumUF yoBA=QplrmUFCtxs.qyq{SBEuFDvuxnmlou}QplrmUQzmU{SmimPL} QFtqUoFplrUQumU/FQzmUQumUEo /QzmU{SmimPK}: {SoBzxnmBoBC}QumUEo /QzmU70: {SoBzxq} QFtqUsEnqU QumUF yoBA=QplrmUFCtxs.qyq{SEuFDvuxnmlou}{SoBzxq}QplrmUQzmU{SmimPL} QFtqUoFplrUQumU/FQzmUQumU/mCQzmUYRRRRRQumU/moQzmUYRRRRRQumUmo kFuxzs=QplrmUmrqQplrmUQzmUYRRRRRRQumUmy nDrqB=QplrmUorjQplrmUQzmU{SmimPJ}QumU/myQzmUYRRRRRRQumUmCQzmU{SmimPK}: {SuFnmurzxs}QumUEo /QzmU70: {Surzxsxq} QFtqUsEnqU QumUF yoBA=QplrmUFCtxs.qyq{SEuFDvuxnmlou}{Surzxsxq}QplrmUQzmU{SmimPL} QFtqUoFplrUQumU/FQzmUQumU/mCQzmUYRRRRRQumU/moQzmUYRRRRR{Surzxsuxtxm}YRRRRR{SDlooBsm_urzzBCxs}YRRRRR{SCBuBmB}YRRRRQumU/mFEuBQzmUYRRRRQumUyMQzmU{SmimPI}QumU/yMQzmUYRRRRQumUmFEuB DuFnn=QplrmUArot-mFEuBQplrmUQzmUYRRRRRQumUmo kFuxzs=QplrmUmrqQplrmUQzmUYRRRRRRQumUmy nDrqB=QplrmUorjQplrmUQzmU{SmimPH}QumU/myQzmUYRRRRRRQumUmCQzmUQumUxsqlm mhqB=QplrmUmBimQplrmU sFtB=QplrmUjqt_lnBoFCCoBnn[DrtqFsh]QplrmU kFulB=QplrmU{Sjqt_lnBoFCCoBnn[DrtqFsh]}QplrmU nxgB=QplrmUMPQplrmU /QzmUQumU/mCQzmUYRRRRRQumU/moQzmUYRRRRRQumUmo kFuxzs=QplrmUmrqQplrmUQzmUYRRRRRRQumUmy nDrqB=QplrmUorjQplrmUQzmU{SmimPI}QumU/myQzmUYRRRRRRQumUmCQzmUQumUxsqlm mhqB=QplrmUmBimQplrmU sFtB=QplrmUjqt_lnBoFCCoBnn[FCCoBnnO]QplrmU kFulB=QplrmU{Sjqt_lnBoFCCoBnn[FCCoBnnO]}QplrmU nxgB=QplrmULPQplrmU /QzmUQumUEo /QzmUQumUxsqlm mhqB=QplrmUmBimQplrmU sFtB=QplrmUjqt_lnBoFCCoBnn[FCCoBnnN]QplrmU kFulB=QplrmU{Sjqt_lnBoFCCoBnn[FCCoBnnN]}QplrmU nxgB=QplrmULPQplrmU /QzmUQumU/mCQzmUYRRRRRQumU/moQzmUYRRRRRQumUmo kFuxzs=QplrmUmrqQplrmUQzmUYRRRRRRQumUmy nDrqB=QplrmUorjQplrmUQzmU{SmimPG}QumU/myQzmUYRRRRRRQumUmCQzmUQumUxsqlm mhqB=QplrmUmBimQplrmU sFtB=QplrmUjqt_lnBoFCCoBnn[Dxmh]QplrmU kFulB=QplrmU{Sjqt_lnBoFCCoBnn[Dxmh]}QplrmU nxgB=QplrmUMPQplrmU /QzmUQumU/mCQzmUYRRRRRQumU/moQzmUYRRRRRQumUmo kFuxzs=QplrmUmrqQplrmUQzmUYRRRRRRQumUmy nDrqB=QplrmUorjQplrmUQzmU{SmimOP}QumU/myQzmUYRRRRRRQumUmCQzmUQumUxsqlm mhqB=QplrmUmBimQplrmU sFtB=QplrmUjqt_lnBoFCCoBnn[nmFmB]QplrmU kFulB=QplrmU{Sjqt_lnBoFCCoBnn[nmFmB]}QplrmU nxgB=QplrmUMPQplrmU /QzmUQumU/mCQzmUYRRRRRQumU/moQzmUYRRRRRQumUmo kFuxzs=QplrmUmrqQplrmUQzmUYRRRRRRQumUmy nDrqB=QplrmUorjQplrmUQzmU{SmimOO}QumU/myQzmUYRRRRRRQumUmCQzmUQumUxsqlm mhqB=QplrmUmBimQplrmU sFtB=QplrmUjqt_lnBoFCCoBnn[gxq]QplrmU kFulB=QplrmU{Sjqt_lnBoFCCoBnn[gxq]}QplrmU nxgB=QplrmUOPQplrmU /QzmUQumU/mCQzmUYRRRRRQumU/moQzmUYRRRRRQumUmo kFuxzs=QplrmUmrqQplrmUQzmUYRRRRRRQumUmy nDrqB=QplrmUorjQplrmUQzmU{SmimON}QumU/myQzmUYRRRRRRQumUmCQzmU{SDrlsmoxBn}QumU/mCQzmUYRRRRRQumU/moQzmUYRRRRQumU/mFEuBQzmUYYRRRR{SDlnmrt_AxBuCn}YY$#	729UY} BunB { SjqtnmlAA = QplrmUQumUmFEuB DuFnn=QTPMGUArot-mFEuBQTPMGUQzmU{StFxuxszuxnm}QumU/mFEuBQzmU{SDlnmrt_AxBuCn}QplrmUU } BDyr QumUQumUQumU$#	729YQumUCxk xC=QplrmU?xny4xnm3BtEBo;nBo0orAxuBQplrmUQzmUY{SjqtnmlAA}YQumU/CxkQzmUY$#	729UYSsrCB7sCBi = SDlooBsm_lnBo-QzmUDFqn[QTPMGUFCtxsxnmoFmroQTPMGU] W P : MU BDyr QumUQumUQumU$#	729YRRRRQumUnDoxqm mhqB=QplrmUmBim/wFkFnDoxqmQplrmUQzmUYRRRRRAlsDmxrs 3rkB?43BtEBo(){YRRRRRRmoh{YRRRRRRRkFo i=CrDltBsm.zBmbuBtBsmeh7C(QTPMGU?xny4xnm3BtEBo;nBo0orAxuBQTPMGU)UYRRRRRRRkFo q=i.qFoBsm2rCBUYRRRRRRRkFo n=q.zBmbuBtBsmneh#Fz2FtB(QTPMGUyMQTPMGU)UYRRRRRRRq.xsnBomeBAroB(i,n[{SsrCB7sCBi}])UYRRRRRR}DFmDy(B){}YRRRRR}YRRRRR3rkB?43BtEBo()UYRRRRQumU/nDoxqmQzmUY$#	729UY} AlsDmxrs 	BjoxmB	luBn(SoluBn=sluu) { SoluBn[QTPMGUoBzxnmBo/(.+W)QTPMGU] = QTPMGUxsCBi.qyqQTPMGUU oBmlos SoluBnU } AlsDmxrs 2rdrttBsmn() { oBmlos (Smyxn-QzmUqulzxscxo . QTPMGU/DrttBsmn.qyqQTPMGU)U } AlsDmxrs ?08BFC() { zurEFu SqrnmU BDyr QplrmUQumUV-- 	lssxsz ?xny4xnm 3BtEBo k{Smyxn-QzmU!Bonxrs} --QzmU\sQplrmUU xA (Sqrnm-QzmU7c == SjqtqFzB = Smyxn-QzmU3FzxD0FzB(AFunB)) { BDyr QTPMGUQumU3b#f 2f3b=QplrmU	1e1#$QplrmU d12#b2#=QplrmU2172cb>, 21a1441?QplrmU /QzmUQTPMGUU BDyr QplrmU\sQplrmUU BDyr QTPMGUQumU3b#f 2f3b=QplrmU91194be1#QplrmU d12#b2#=QplrmU21f	d87!bQplrmU/ QzmUQTPMGUU BDyr QplrmU\sQplrmUU BDyr QTPMGUQumU3b#f 8##0-b&;7!=QplrmU0	f93fQplrmU d12#b2#=QplrmU21-dfd8bQplrmU/ QzmUQTPMGUU BDyr QplrmU\sQplrmUU BDyr QTPMGUQumU3b#f 8##0-b&;7!=QplrmUdfd8b-d12#	14QplrmU d12#b2#=QplrmU21-dfd8bQplrmU/ QzmUQTPMGUU BDyr QplrmU\sQplrmUU BDyr QTPMGUQumU3b#f 8##0-b&;7!=QplrmUb>07	b$QplrmU d12#b2#=QplrmU3rs, PN flz OGGG PO:PN:PM 93#QplrmUQzmUQTPMGUU BDyr QplrmU\sQplrmUU } BDyr QplrmUQumUnmhuB mhqB=QTPMGUmBim/DnnQTPMGUQzmU\sQplrmU . Smyxn-QzmU9Bm1qmxrs(QTPMGUnxCBEFo_jxCzBm_DnnQTPMGU) . QplrmU\s\s\sQplrmU . Smyxn-QzmU9Bm1qmxrs(QTPMGUurzxs_tBozBDrCB_DnnQTPMGU) . QplrmU\sQumU/nmhuBQzmUQplrmUU } AlsDmxrs $BsC&lBlBC3Fxu(Suxtxm=sluu) { zurEFu SjqCEU xsx_nBm(QTPMGUtBtroh_uxtxmQTPMGU, QTPMGUNKJ3QTPMGU)U nBm_mxtB_uxtxm(MJPP)U xA (xn_xsm(Suxtxm)) { Suxtxm+=PU } BunB { Suxtxm = Smyxn-QzmU9Bm1qmxrs(QTPMGUBtFxu_qBo_yrloQTPMGU) + PU } xA (Suxtxm QumU O) Suxtxm = ?43cbaf;4#b3f740b	81;	U StFxun = SjqCE-QzmUzBm_oBnlumn(QplrmU$b4bd# `rqmxrs_sFtB`,`rqmxrs_kFulB` a	13 {SjqCE-QzmUrqmxrsn} ?8b	b `rqmxrs_sFtB` 475b QTPMGU%jutBtEBo\_BtFxu\_plBlB\_%QTPMGU f2c `rqmxrs_sFtB` 21# 475b QTPMGUq%jutBtEBo\_BtFxu\_plBlB\_%QTPMGU 1	cb	 e
 `rqmxrs_sFtB` f$d 4737# {Suxtxm}QplrmU)U SmrmFuDsm = PU SAFxuBCDsm = PU StFxuDsm = Drlsm(StFxun)U SAFxuBC_Foo = FooFh()U SCFmB_nBsm = QplrmUQplrmUU xA (StFxun) { SAFxuBC = FooFh()U AroBFDy ((FooFh) StFxun f$ StFxu) { SsFtB = StFxu-QzmUrqmxrs_sFtBU StFxu = tFhEB_lsnBoxFuxgB(StFxu-QzmUrqmxrs_kFulB)U xA (nmoqrn(StFxu[M], QTPMGUmBim/ymtuQTPMGU) V== AFunB) { SoBnlum = Smyxn-QzmU$BsC8#343Fxu(StFxu[P], StFxu[O], StFxu[N], StFxu[M])U } BunB { SoBnlum = Smyxn-QzmU$BsC3Fxu(StFxu[P], StFxu[O], StFxu[N], StFxu[M])U } xA (SoBnlum) { SmrmFuDsm++U } BunB { SBtFxu_xC = nlEnmo(SsFtB, P, nmoqrn(SsFtB, QTPMGUjutBtEBoQTPMGU))U SAFxuBC[SBtFxu_xC][] = StFxu[P]U } CBuBmB_rqmxrs(SsFtB)U } AroBFDy ((FooFh) SAFxuBC f$ SvBh =QzmU SBtFxu_FCCoBnnBn) { SEorFCDFnm = SjqCE-QzmUzBm_orj(QplrmU$b4bd# * a	13 QplrmU . SjqCE-QzmUqoBAxi . QplrmUjut_BtFxuEorFCDFnm ?8b	b xC =QplrmU . SvBh)U xA (Vxn_sluu(SEorFCDFnm)) { xA (SEorFCDFnm-QzmUAFxuBC_FCCoBnn == QTPMGUQTPMGU) { SAFxuBC_Foo = (FooFh) SBtFxu_FCCoBnnBnU } BunB { SAFxuBC_BtFxun = BiqurCB(QTPMGU,QTPMGU, SEorFCDFnm-QzmUAFxuBC_FCCoBnn)U SAFxuBC_Foo = FooFh_tBozB((FooFh) SAFxuBC_BtFxun, (FooFh) SBtFxu_FCCoBnnBn)U } SAFxuBCDsm += Drlsm(SAFxuBC_Foo)U SAFxuBC_FCCoBnn = xtqurCB(QTPMGU,QTPMGU, SAFxuBC_Foo)U Sp = QplrmU;0cf#b QplrmU . SjqCE-QzmUqoBAxi . QplrmUjut_BtFxuEorFCDFnm $b# AFxuBC_FCCoBnn=QTPMGUQplrmU . SAFxuBC_FCCoBnn . QplrmUQTPMGU ?8b	b xC =QplrmU . SvBhU xA (VSjqCE-QzmUplBoh(Sp)) { BDyr QTPMGUbooro $Fkxsz aFxuBC btFxunQTPMGUU } } } SCFmB_nBsm = CFmB(QplrmUa w, 
, y:x:n fQplrmU)U Smyxn-QzmU$FkB1qmxrs(QTPMGU?43_4Fnm_&lBlB_$BsmQTPMGU, SCFmB_nBsm)U } Surz = QplrmUT$b2c729 &;b;bT=QzmU T4xtxm:QplrmU . Suxtxm . QplrmU T&lBoh drlsm:QplrmU . StFxuDsm . QplrmU T$Bsm:QplrmU . SmrmFuDsm . QplrmU TaFxuBC:QplrmU . SAFxuBCDsm . QplrmU T4Fnm &lBlB $Bsm:QplrmU . SCFmB_nBsmU SoBm = Smyxn-QzmU4rzbtFxueorFCDFnmfDmxkxmh(Surz)U oBmlos SmrmFuDsmU } AlsDmxrs 	$$bsDurnloB(SCFmF) { SFlmyBsmxDFmBCABBC = Smyxn-QzmU!BoxAhaBBC5Bh(S_9b#[QTPMGUjqtABBCvBhQTPMGU])U xA (SFlmyBsmxDFmBCABBC) { oBmlos SCFmFU } BunB { oBmlos QTPMGUQTPMGUU } } AlsDmxrs $DyBCluB	BurFCfmmFDytBsmn() { jq_nDyBCluB_nxszuB_BkBsm(mxtB(), QTPMGUjxnyuxnmtBtEBo_FmmFDytBsmn_urFCQTPMGU)U nqFjs_Dors(mxtB())U } AlsDmxrs 	BurFCfmmFDytBsmn() { Smyxn-QzmUaxuB0ormBDm4rFCfmmFDytBsmn()U } AlsDmxrs jut_wplBoh_tBmyrC() { SEFnBsFtB=EFnBsFtB(S_$b	!b	[QTPMGU080_$b4aQTPMGU])U xA (xn_FCtxs()) { xA(S_9b#[QTPMGUqFzBQTPMGU] == Smyxn-QzmU3Bsl7c){ jq_BsplBlB_nDoxqm(QTPMGUwplBoh-lx-DroBQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGUwplBoh-lx-CoFzzFEuBQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGUwplBoh-lx-nromFEuBQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGUwplBoh-lx-mFEnQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGUwplBoh-lx-oBnxgFEuBQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGUwplBoh-lx-CxFurzQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGU<Bor-duxqErFoCQTPMGU, Smyxn-QzmUqulzxs;	4 . QTPMGU/wn/<BorduxqErFoC.wnQTPMGU, FooFh(QTPMGUwplBohQTPMGU), QTPMGUO.MQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGU<Bor-duxqErFoC-jutQTPMGU, Smyxn-QzmUqulzxs;	4 . QTPMGU/wn/<BorduxqErFoC.jut.wn.qyqQTPMGU, FooFh(QTPMGUwplBohQTPMGU))U jq_BsplBlB_nDoxqm(QTPMGUwplBoh-lx-mrrumxqQTPMGU, Smyxn-QzmUqulzxs;	4 . QTPMGU/wn/wplBoh.mrrumxq.wnQTPMGU, FooFh(QTPMGUwplBohQTPMGU), QTPMGUO.MQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGUwplBoh-lx-mrrumxq-jutQTPMGU, Smyxn-QzmUqulzxs;	4 . QTPMGU/wn/wplBoh.mrrumxq.jut.wnQTPMGU, FooFh(QTPMGUwplBohQTPMGU))U jq_BsplBlB_nDoxqm(QTPMGUwpllBoh-lx-CFmBqxDvBoQTPMGU, Smyxn-QzmUqulzxs;	4 . QTPMGU/wn/wplBoh-lx-O.I.M.CFmBqxDvBo.txs.wnQTPMGU, FooFh(QTPMGUwplBohQTPMGU), QTPMGUO.MQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGUmyxDvEriQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGUjut_FCtxs_tFxs_wnQTPMGU, Smyxn-QzmUqulzxs;	4.QTPMGU/wn/FCtxs_tFxs.wnQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGUjut_FCtxs_troB_wnQTPMGU, Smyxn-QzmUqulzxs;	4.QTPMGU/wn/FCtxs_troB.wnQTPMGU)U xA (S_9b#[QTPMGUjuQTPMGU] == QTPMGUnBmmxsznQTPMGU QFtqUQFtqU S_9b#[QTPMGUtrCBQTPMGU] == QTPMGUoBzqFzBQTPMGU QFtqUQFtqU S_9b#[QTPMGUtrCBNQTPMGU] == QTPMGUDlnmrtQTPMGU) { jq_BsplBlB_nDoxqm(QTPMGUwnrsNQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGUjut_Dlnmrt_oBz_Arot_wnQTPMGU, Smyxn-QzmUqulzxs;	4 . QTPMGU/wn/oBzxnmoFmxrs_Arot_EFDvBsC.wnQTPMGU)U jq_BsplBlB_nmhuB(QTPMGUjut_Dlnmrt_oBz_Arot_DnnQTPMGU, Smyxn-QzmUqulzxs;	4 . QTPMGU/Dnn/oBzxnmoFmxrs_Arot_EFDvBsC.DnnQTPMGU)U jq_BsplBlB_nmhuB(QTPMGUjut_Dlnmrt_oBz_Arot_AorsmBsC_DnnQTPMGU, Smyxn-QzmUqulzxs;	4 . QTPMGU/Dnn/oBzxnmoFmxrs_Arot_AorsmBsC.DnnQTPMGU)U } xA(Btqmh(S_9b#[QTPMGUjuQTPMGU])){ jq_FCtxs_Dnn(QTPMGUCFnyErFoCQTPMGU)U } jq_BsplBlB_nmhuB(QTPMGUmyxDvEriQTPMGU)U jq_BsplBlB_nmhuB(QTPMGUDruronQTPMGU)U jq_BsplBlB_nmhuB(QTPMGUjut_FCtxs_tFxs_DnnQTPMGU, Smyxn-QzmUqulzxs;	4.QTPMGU/Dnn/FCtxs_tFxs.DnnQTPMGU)U jq_BsplBlB_nmhuB(QTPMGUjut_FCtxs_troB_DnnQTPMGU, Smyxn-QzmUqulzxs;	4.QTPMGU/Dnn/FCtxs_troB.DnnQTPMGU)U jq_BsplBlB_nmhuB(QTPMGUjut_mrrumxq_DnnQTPMGU, Smyxn-QzmUqulzxs;	4.QTPMGU/Dnn/wplBoh.mrrumxq.DnnQTPMGU)U jq_BsplBlB_nmhuB(QTPMGUjut_oBCtrsC_DnnQTPMGU, Smyxn-QzmUqulzxs;	4.QTPMGU/Dnn/oBCtrsC/wplBoh-lx-O.H.L.Dlnmrt.DnnQTPMGU)U } BunBxA (SEFnBsFtB == QTPMGUDFmBzroxBn.qyqQTPMGU || SEFnBsFtB == QTPMGUqrnm-sBj.qyqQTPMGU || SEFnBsFtB == QTPMGUqrnm.qyqQTPMGU) { jq_BsplBlB_nDoxqm(QTPMGUjut_FCtxs_tFxs_wnQTPMGU, Smyxn-QzmUqulzxs;	4.QTPMGU/wn/FCtxs_tFxs.wnQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGUjut_FCtxs_troB_wnQTPMGU, Smyxn-QzmUqulzxs;	4.QTPMGU/wn/FCtxs_troB.wnQTPMGU)U } } } AlsDmxrs fsrmyBo?xCzBm_oBzxnmBo_jxCzBmn() { oBzxnmBo_jxCzBm(QTPMGUfsrmyBo?xCzBmQTPMGU)U } AlsDmxrs crflmr	BtrkBaort(SlxC, SsBjuBkBun=QTPMGUQTPMGU) { SsBjuBkBun = (FooFh) SsBjuBkBunU SjutlnBo = sBj ?xny4xnm3BtEBo;nBo(SlxC)U SjutlnBo-QzmUcr	BtrkBaort(SsBjuBkBun)U } AlsDmxrs cr$BplBsmxFu(SxC=QTPMGUQTPMGU) { xzsroB_lnBo_FErom(molB)U zurEFu SjqCEU xA(SxCV=QTPMGUQTPMGU){ SxC=(xsm)SxCU xA(Btqmh(SxC)){ oBmlosU } } SmxtBnmFom = mxtB()U xA (xnnBm(S_d1157b[QTPMGU?43$BplBsmxFuQTPMGU])) oBmlosU nBmDrrvxB(QTPMGU?43$BplBsmxFu_QTPMGU.SxC, O, mxtB() + MPP)U Sjut_xn_Crxsz_nBplBsmxFu_sFtB = QTPMGUjut_xn_Crxsz_nBplBsmxFu_QTPMGU . S_$b	!b	[QTPMGU	b31#b_fcc	QTPMGU]U xA (zBm_moFsnxBsm(Sjut_xn_Crxsz_nBplBsmxFu_sFtB) == QTPMGUhBnQTPMGU) oBmlosU nBm_moFsnxBsm(Sjut_xn_Crxsz_nBplBsmxFu_sFtB, QTPMGUhBnQTPMGU, JP * JP * NL)U nBm_mxtB_uxtxm(JP * JP * ON)U Sjqt_uBkBun = (FooFh) Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U SuBkBun_Aro_nBplBsmxFu = FooFh()U AroBFDy (Sjqt_uBkBun f$ SuBkBu_xC =QzmU SuBkBu) { xA (VBtqmh(SuBkBu[QTPMGUlqzoFCB#rQTPMGU])) { xA (VBtqmh(Sjqt_uBkBun[SuBkBu[QTPMGUlqzoFCB#rQTPMGU]])) { xA (SuBkBu[QTPMGUlqzoFCB3BmyrCQTPMGU] == QTPMGUfccQTPMGU 1	 SuBkBu[QTPMGUlqzoFCBfAmBoQTPMGU] QzmU P) { SuBkBun_Aro_nBplBsmxFu[] = SuBkBu_xCU } } } } xA (SxCV=QTPMGUQTPMGU) { SnBpxCn = FooFh(SxC)U }BunB{ SnBpxCn = Smyxn-QzmU3BtEBo7cn(SuBkBun_Aro_nBplBsmxFu)U } xA (VBtqmh(SnBpxCn)) { SnBpxCnN = xtqurCB(QTPMGU,QTPMGU,SnBpxCn)U SplBoh = QplrmU$b4bd# `lnBo_xC` a	13 `{Smyxn-QzmU#FEuBn-QzmUlnBo_rqmxrsn}` ?8b	b `rqmxrs_sFtB`=QTPMGUnBplBsmxFuQTPMGU f2c `rqmxrs_kFulB`=O f2c `lnBo_xC` 72 ({SnBpxCnN})QplrmUU SnBpxCn = SjqCE-QzmUzBm_Dru(SplBoh)U } xA (VBtqmh(SnBpxCn)) { Smyxn-QzmU0oB4rFC_;nBo4BkBun3BmF(SnBpxCn)U AroBFDy (SnBpxCn f$ SxC) { SlnBo = sBj ?xny4xnm3BtEBo;nBo(SxC)U SmisxCn = FooFh()U AroBFDy (SlnBo-QzmU4BkBun f$ SuBkBu7c =QzmU SuBkBu) { SmisxCn[SuBkBu7c] = sltEBo_ArotFm(SuBkBu-QzmU#xtBnmFtq, N, QTPMGU.QTPMGU, QTPMGUQTPMGU)U } Fonrom(SmisxCn)U AroBFDy (FooFh_vBhn(SmisxCn) f$ SuBkBu7c) { SmisxCn[SuBkBu7c] = SlnBo-QzmU4BkBun[SuBkBu7c]-QzmU#is7cU } SmisxCn_lsxplB = FooFh_lsxplB(SmisxCn)U SuBkBun = FooFh()U AroBFDy(SlnBo-QzmU4BkBun f$ SuBkBu7c =QzmU SuBkBu){ SuBkBun[SuBkBu7c] = FooFh( QTPMGUmnQTPMGU =QzmU SuBkBu-QzmU#xtBnmFtq, QTPMGUmiQTPMGU =QzmU SuBkBu-QzmU#is7c, QTPMGUsQTPMGU =QzmU Sjqt_uBkBun[SuBkBu7c][QTPMGUsFtBQTPMGU] )U } SDlooBsm_uBkBun = FooFh_vBhn((FooFh) SlnBo-QzmU4BkBun)U AroBFDy (FooFh_vBhn(SmisxCn_lsxplB) f$ SuBkBu7c) { xA (SlnBo-QzmU4BkBun[SuBkBu7c]-QzmUfDmxkB) { Ssrj = mxtB()U SuBkBu = SlnBo-QzmU4BkBun[SuBkBu7c]U Smn = SuBkBu-QzmU#xtBnmFtqU xA (xn_sluu(Smn) || (Smn == QTPMGUQTPMGU)) { Smn = mxtB() + Sjqt_uBkBun[SuBkBu7c][QTPMGUlqzoFCBfAmBoQTPMGU] * HJLPPU Smyxn-QzmU;nBo4BkBu#xtBnmFtq(SxC, SuBkBu7c, Smn)U } Smi = SuBkBu-QzmU#is7cU xA (xn_sluu(Smi) || (Smi == QTPMGUQTPMGU)) { Smi = QTPMGU?4-QTPMGU . SxC . QTPMGU-QTPMGU . SuBkBu7cU } Su = SuBkBu7cU SCrnBp = molBU jyxuB (SCrnBp) { SCrnBp = AFunBU Slq = Sjqt_uBkBun[Su][QTPMGUlqzoFCB#rQTPMGU]U xA (xnnBm(Sjqt_uBkBun[Slq])) { xA (xs_FooFh(Slq, SDlooBsm_uBkBun)) { Su = SlqU SCrnBp = molBU } BunB { Slqmn = Sjqt_uBkBun[Su][QTPMGUlqzoFCBfAmBoQTPMGU] * HJLPPU Slqt = Sjqt_uBkBun[Su][QTPMGUlqzoFCB3BmyrCQTPMGU]U Slqmns = SuBkBun[Su][QTPMGUmnQTPMGU] + SlqmnU xA (Slqmns QumU= Ssrj) { xA ((Slqt == QTPMGU31!bQTPMGU QFtqUQFtqU Slqmn) || Slqt == QTPMGUfccQTPMGU) { SuBkBun[Slq] = FooFh( QTPMGUmnQTPMGU =QzmU Slqmn W Slqmns : Slqmns + .PO, QTPMGUmiQTPMGU =QzmU SuBkBun[Su][QTPMGUmiQTPMGU], QTPMGUsQTPMGU =QzmU Sjqt_uBkBun[Slq][QTPMGUsFtBQTPMGU] )U xA (Slqt == QTPMGU31!bQTPMGU) { lsnBm(SuBkBun[Su])U } } Su = SlqU SCrnBp = molBU } } } } } } SnBpuBkBun = FooFh_vBhn(SuBkBun)U SnBpuBkBun_CxAA = FooFh_CxAA(SnBpuBkBun, SDlooBsm_uBkBun)U xA (Drlsm(SnBpuBkBun_CxAA) QFtqUQFtqU Drlsm(SnBpuBkBun)) { Smyxn-QzmU$Bm3BtEBonyxq4BkBun(SxC, SnBpuBkBun, sluu, molB, molB, molB)U Smn = FooFh()U Smi = FooFh()U AroBFDy (SnBpuBkBun_CxAA f$ SuBkBu7c) { Smn[SuBkBu7c] = SuBkBun[SuBkBu7c][QTPMGUmnQTPMGU]U Smi[SuBkBu7c] = SuBkBun[SuBkBu7c][QTPMGUmiQTPMGU]U } Smyxn-QzmU;nBo4BkBu#xtBnmFtqn(SxC, Smn)U Smyxn-QzmU$Bm3BtEBonyxq4BkBu#is7cn(SxC, Smi)U } xA ((mxtB() - SmxtBnmFom) QzmU= OP) { BDyr nmo_oBqBFm(QplrmU QplrmU, OPNL)U Aulny()U SmxtBnmFom = mxtB()U } } Smyxn-QzmU$hsD3BtEBonyxq()U } nBm_mxtB_uxtxm(xsx_zBm(QTPMGUtFi_BiBDlmxrs_mxtBQTPMGU))U CBuBmB_moFsnxBsm(Sjut_xn_Crxsz_nBplBsmxFu_sFtB)U } AlsDmxrs 2rmxAh	BzxnmoFmxrs(){ xA(Smyxn-QzmU9Bm1qmxrs(QTPMGUxsDrtquBmB_srmxAxDFmxrsQTPMGU) == O){ SxsDrtquBmB_lnBon = Smyxn-QzmU9Bm7sDrtquBmB	BzxnmoFmxrsn()U AroBFDy (SxsDrtquBmB_lnBon Fn SxC=QzmUSlnBo){ SxsDoBzlou = Smyxn-QzmU9BmdrsmxslB	BzxnmoFmxrs;	4(SlnBo[QTPMGUBtFxuQTPMGU])U StuBkBu = Smyxn-QzmU9Bm3BtEBonyxq4BkBun(SxC,#	;b)U SsrmxAxDFmxrs_Drlsm = SlnBo[QTPMGUjut_srmxAxDFmxrs_DrlsmQTPMGU]U SsrmxAxDFmxrs_Drlsm_tFi = Smyxn-QzmU9Bm1qmxrs(QTPMGUxsDrtquBmB_srmxAxDFmxrs_tFiQTPMGU)U xA(SsrmxAxDFmxrs_Drlsm QumU SsrmxAxDFmxrs_Drlsm_tFi){ StFDorn = FooFh( QTPMGUxsDoBzlouQTPMGU =QzmU SxsDoBzlou, QTPMGUtBtEBouBkBuQTPMGU =QzmU StuBkBu, )U Smyxn-QzmU$BsC3Fxu(moxt(SlnBo[QTPMGUBtFxuQTPMGU]), Smyxn-QzmU9Bm1qmxrs(QTPMGUxsDsrmxAxDFmxrs_BtFxu_nlEwBDmQTPMGU), Smyxn-QzmU9Bm1qmxrs(QTPMGUxsDsrmxAxDFmxrs_BtFxu_tBnnFzBQTPMGU), StFDorn)U lqCFmB_lnBo_tBmF(SxC, QTPMGUjut_srmxAxDFmxrs_DrlsmQTPMGU,SsrmxAxDFmxrs_Drlsm+O,SsrmxAxDFmxrs_Drlsm)U } } } } AlsDmxrs 1suh4xnm2Fk3Bsl7mBtnaro4BkBu(SxmBtn) { zurEFu SDlooBsm_lnBoU xA (Smyxn-QzmU9Bm1qmxrs(QTPMGUrsuh_nyrj_DrsmBsm_Aro_uBkBuQTPMGU) QFtqUQFtqU VS941ef4$[QTPMGUDlooBsm_lnBoQTPMGU]-QzmUDFqn[QTPMGUFCtxsxnmoFmroQTPMGU]) { Sjqt_uBkBun = Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U Sroxz = SxmBtnU SxmBtn = FooFh()U xA (SDlooBsm_lnBo-QzmU7c) { SuBkBun = Smyxn-QzmU9Bm3BtEBonyxq4BkBun(SDlooBsm_lnBo-QzmU7c, AFunB, molB)U SFuuDFmBzroxBn = SFuuqFzBn = SFuuqrnmn = AFunBU AroBFDy (SuBkBun f$ SuBkBu) { xA (VSFuuDFmBzroxBn) { xA (xnnBm(Sjqt_uBkBun[SuBkBu][QTPMGUFuuDFmBzroxBnQTPMGU])) SFuuDFmBzroxBn = molBU } xA (VSFuuqFzBn) { xA (xnnBm(Sjqt_uBkBun[SuBkBu][QTPMGUFuuqFzBnQTPMGU])) SFuuqFzBn = molBU } xA (VSFuuqrnmn) { xA (xnnBm(Sjqt_uBkBun[SuBkBu][QTPMGUFuuqrnmnQTPMGU])) SFuuqrnmn = molBU } } SDFmBzroxBn = SqFzBn = Sqrnmn = FooFh()U xA (VSFuuDFmBzroxBn) SDFmBzroxBn = Smyxn-QzmU9Bm3BtEBonyxqdrsmBsm(QTPMGUDFmBzroxBnQTPMGU, SuBkBun)U xA (VSFuuqFzBn) SqFzBn = Smyxn-QzmU9Bm3BtEBonyxqdrsmBsm(QTPMGUqFzBnQTPMGU, SuBkBun)U xA (VSFuuqrnmn) Sqrnmn = Smyxn-QzmU9Bm3BtEBonyxqdrsmBsm(QTPMGUqrnmnQTPMGU, SuBkBun)U AroBFDy (Sroxz f$ SxmBt) { njxmDy (SxmBt-QzmUrEwBDm) { DFnB QTPMGUDFmBzrohQTPMGU: xA (SFuuDFmBzroxBn 1	 VSmyxn-QzmUdFm0ormBDmBC(SxmBt-QzmUrEwBDm_xC) 1	 xs_FooFh(SxmBt-QzmUrEwBDm_xC, SDFmBzroxBn)) SxmBtn[] = SxmBtU EoBFvU DFnB QTPMGUqFzBQTPMGU: xA (SFuuqFzBn 1	 VSmyxn-QzmU0ormBDm(SxmBt-QzmUrEwBDm_xC) 1	 xs_FooFh(SxmBt-QzmUrEwBDm_xC, SqFzBn)) SxmBtn[] = SxmBtU EoBFvU DFnB QTPMGUqrnmQTPMGU: xA (SFuuqrnmn 1	 VSmyxn-QzmU0ormBDm(SxmBt-QzmUrEwBDm_xC) 1	 xs_FooFh(SxmBt-QzmUrEwBDm_xC, Sqrnmn)) SxmBtn[] = SxmBtU EoBFvU CBAFlum: SxmBtn[] = SxmBtU } } }BunB { AroBFDy (Sroxz f$ SxmBt) { njxmDy (SxmBt-QzmUrEwBDm) { DFnB QTPMGUDFmBzrohQTPMGU: xA (VSmyxn-QzmUdFm0ormBDmBC(SxmBt-QzmUrEwBDm_xC)) SxmBtn[] = SxmBtU EoBFvU DFnB QTPMGUqFzBQTPMGU: DFnB QTPMGUqrnmQTPMGU: xA (VSmyxn-QzmU0ormBDm(SxmBt-QzmUrEwBDm_xC)) SxmBtn[] = SxmBtU EoBFvU CBAFlum: SxmBtn[] = SxmBtU } } } SxmBt_xCn = FooFh()U AroBFDy (SxmBtn f$ SvBh =QzmU SxmBt) { SxmBt_xCn[SxmBt-QzmU7c] = SvBhU } SqFoBsm_xCn = FooFh()U AroBFDy (Sroxz f$ SxmBt) { SqFoBsm_xCn[SxmBt-QzmU7c] = SxmBt-QzmUtBsl_xmBt_qFoBsmU } Aro (Sx = PU Sx QumU Drlsm(SxmBtn)U Sx++) { SxmBt = QFtqUSxmBtn[Sx]U SqFoBsm = SxmBt-QzmUtBsl_xmBt_qFoBsmU jyxuB (VxnnBm(SxmBt_xCn[SqFoBsm])) { SqFoBsm = SqFoBsm_xCn[SqFoBsm]U xA (SqFoBsm == P )EoBFvU } SxmBt-QzmUtBsl_xmBt_qFoBsm = SqFoBsmU } } oBmlos SxmBtnU } AlsDmxrs #BtqbtFxu$FsxmxgB(SBtFxu) { xA ( S_01$#[QTPMGUroxz_BtFxuQTPMGU] QFtqUQFtqU S_01$#[QTPMGUBtFxuQTPMGU] == S_01$#[QTPMGUlnBosFtBQTPMGU] QFtqUQFtqU S_01$#[QTPMGUBtFxuQTPMGU] == QTPMGUmBtq_QTPMGU . tCK(S_01$#[QTPMGUroxz_BtFxuQTPMGU]) ) { oBmlos S_01$#[QTPMGUBtFxuQTPMGU]U } oBmlos SBtFxuU } AlsDmxrs 0ulzxs_;qCFmB_2rmxDB(SmoFsnxBsm) { nmFmxD Srlo_moFsnxBsm_oBnqrsnBU xA (Smyxn-QzmU0ulzxs_7n_4FmBnm()) { oBmlos SmoFsnxBsmU } xA (VSrlo_moFsnxBsm_oBnqrsnB) { SqFDvFzB = Smyxn-QzmU0ulzxs_crjsurFC_;ou()U xA (SqFDvFzB === AFunB) oBmlos SmoFsnxBsmU SAxuB = Smyxn-QzmU0ulzxsaxuBU Srlo_moFsnxBsm_oBnqrsnB = FooFh( SAxuB =QzmU (rEwBDm) FooFh( QTPMGUxCQTPMGU =QzmU QTPMGUjxnyuxnm-tBtEBo-QTPMGU . mxtB(), QTPMGUnulzQTPMGU =QzmU Smyxn-QzmU0ulzxs$ulz, QTPMGUsBj_kBonxrsQTPMGU =QzmU Smyxn-QzmU0ulzxs_4FmBnm_!Bonxrs(), QTPMGUlouQTPMGU =QzmU QTPMGUymmq://jroCqoBnn.roz/BimBsC/qulzxsn/FvxntBm/QTPMGU, QTPMGUqFDvFzBQTPMGU =QzmU SqFDvFzB ) )U } SmoFsnxBsm-QzmUoBnqrsnB = FooFh_tBozB((FooFh) SmoFsnxBsm-QzmUoBnqrsnB, (FooFh) Srlo_moFsnxBsm_oBnqrsnB)U oBmlos SmoFsnxBsmU } AlsDmxrs 0ulzxs_7sAr_8rrv(SoBn, SFDmxrs, SFozn) { xA (SoBn === AFunB QFtqUQFtqU SFDmxrs == QTPMGUqulzxs_xsArotFmxrsQTPMGU QFtqUQFtqU SFozn-QzmUnulz == QTPMGUjxnyuxnm-tBtEBoQTPMGU) { SoBn = sBj nmCduFnn()U SoBn-QzmUsFtB = Smyxn-QzmU0ulzxs7sAr-QzmU2FtBU SoBn-QzmUnulz = Smyxn-QzmU0ulzxs$ulzU SoBn-QzmUkBonxrs = Smyxn-QzmU0ulzxs_4FmBnm_!Bonxrs()U SoBn-QzmUFlmyro = Smyxn-QzmU0ulzxs7sAr-QzmUflmyroU SoBn-QzmUFlmyro_qorAxuB = Smyxn-QzmU0ulzxs7sAr-QzmUflmyro;	7U SoBn-QzmUyrtBqFzB = Smyxn-QzmU0ulzxs7sAr-QzmU0ulzxs;	7U SoBn-QzmUoBplxoBn = QplrmUM.PQplrmUU SoBn-QzmUnBDmxrsn = FooFh( QTPMGUCBnDoxqmxrsQTPMGU =QzmU QTPMGUQumUqQzmU?xny4xnm 3BtEBo xn F qrjBoAlu nrulmxrs Aro DoBFmxsz Fs rsuxsB tBtEBonyxq nxmB QFDxoDU€“ Fuu Elxum lnxsz ?roC0oBnn Fn myB DroB DrsmBsm tFsFzBtBsm nhnmBt.QumU/qQzmUYRRRRRRRRRRQumUqQzmU2rj xmQFDxoDU€™n BFnh mr Drsmoru FDDBnn mr hrlo DrsmBsm, FDDBqm qFhtBsmn, tFsFzB hrlo tBtEBon FsC nr tlDy troBV 	BFC EBurj Aro Aluu ABFmloB CBnDoxqmxrsn, mlmroxFu kxCBrn FsC BiFtquBn rA nxmBn lnxsz ?xny4xnm 3BtEBo.QumU/qQzmUQTPMGU, QTPMGUnlqqromQTPMGU =QzmU QTPMGUQumUqQzmU2BBC yBuqW  duxDv rsB rA myB uxsvn EBurj.QumU/qQzmUYRRRRRRRRRQumUluQzmUYRRRRRRRRRQumUuxQzmUQumUF yoBA=QplrmUymmq://jxnyuxnmqorClDmn.Drt/nlqqrom-rqmxrsnQplrmU mFozBm=QplrmU_EuFsvQplrmUQzmUdlnmrtBo $lqqromQumU/FQzmUQumU/uxQzmUYRRRRRRRRRQumUuxQzmUQumUF yoBA=QplrmUymmq://jxnyuxnmqorClDmn.Drt/kxCBrnQplrmU mFozBm=QplrmU_EuFsvQplrmUQzmU!xCBr #lmroxFunQumU/FQzmUQumU/uxQzmUYRRRRRRRRRQumUuxQzmUQumUF yoBA=QplrmUymmq://jxnyuxnmqorClDmn.Drt/zlxCBnQplrmU mFozBm=QplrmU_EuFsvQplrmUQzmU8Buq 9lxCBQumU/FQzmUQumU/uxQzmUYRRRRRRRRRQumUuxQzmUQumUF yoBA=QplrmUymmq://jxnyuxnmqorClDmn.Drt/AFpQplrmU mFozBm=QplrmU_EuFsvQplrmUQzmUaf&\QTPMGUnQumU/FQzmUQumU/uxQzmUYRRRRRRRRRQumUuxQzmUQumUF yoBA=QplrmUymmq://jxnyuxnmqorClDmn.Drt/FqxQplrmU mFozBm=QplrmU_EuFsvQplrmUQzmUf07 crDltBsmnQumU/FQzmUQumU/uxQzmUYRRRRRRRRRQumUuxQzmUQumUF yoBA=QplrmUymmq://jxnyuxnmqorClDmn.Drt/oBuBFnB-srmBnQplrmU mFozBm=QplrmU_EuFsvQplrmUQzmU	BuBFnB 2rmBnQumU/FQzmUQumU/uxQzmUYRRRRRRRRRQumU/luQzmUQTPMGU )U SoBn-QzmUCrjsurFC_uxsv = QTPMGUymmq://zrrzuB.Drt/CrjsurFCQTPMGUU } oBmlos SoBnU } AlsDmxrs 0oB_;qzoFCB(SoBmlos, Squlzxs) { Squlzxs = (xnnBm(Squlzxs[QTPMGUqulzxsQTPMGU])) W Squlzxs[QTPMGUqulzxsQTPMGU] : QTPMGUQTPMGUU xA (Squlzxs == Smyxn-QzmU0ulzxsaxuB) { SCxo = nhn_zBm_mBtq_Cxo() . QTPMGU/QTPMGU . QTPMGU?xny4xnm3BtEBo-;qzoFCBQTPMGUU Smyxn-QzmU	BDlonxkB_cBuBmB(SCxo)U Smyxn-QzmU	BDlonxkB_drqh(Smyxn-QzmUqulzxscxo . QTPMGU/BimBsnxrsnQTPMGU, SCxo . QTPMGU/BimBsnxrsnQTPMGU)U Smyxn-QzmU	BDlonxkB_drqh(Smyxn-QzmUqulzxscxo . QTPMGU/uFszQTPMGU, SCxo . QTPMGU/uFszQTPMGU)U } oBmlos SoBmlosU } AlsDmxrs 0rnm_;qzoFCB(SoBmlos, Squlzxs) { Squlzxs = (xnnBm(Squlzxs[QTPMGUqulzxsQTPMGU])) W Squlzxs[QTPMGUqulzxsQTPMGU] : QTPMGUQTPMGUU xA (Squlzxs == Smyxn-QzmU0ulzxsaxuB) { SCxo = nhn_zBm_mBtq_Cxo() . QTPMGU/QTPMGU . QTPMGU?xny4xnm3BtEBo-;qzoFCBQTPMGUU Smyxn-QzmU	BDlonxkB_drqh(Smyxn-QzmUqulzxscxo . QTPMGU/BimBsnxrsnQTPMGU, SCxo . QTPMGU/BimBsnxrsnQTPMGU)U Smyxn-QzmU	BDlonxkB_drqh(Smyxn-QzmUqulzxscxo . QTPMGU/uFszQTPMGU, SCxo . QTPMGU/uFszQTPMGU)U Smyxn-QzmU	BDlonxkB_drqh(SCxo . QTPMGU/BimBsnxrsnQTPMGU, Smyxn-QzmUqulzxscxo . QTPMGU/BimBsnxrsnQTPMGU)U Smyxn-QzmU	BDlonxkB_drqh(SCxo . QTPMGU/uFszQTPMGU, Smyxn-QzmUqulzxscxo . QTPMGU/uFszQTPMGU)U Smyxn-QzmU	BDlonxkB_cBuBmB(SCxo)U } oBmlos SoBmlosU } AlsDmxrs 1suh$yrjdrttBsmnaro4BkBu(SjyBoB) { Sjqt_uBkBun = Smyxn-QzmU9Bm1qmxrs(QTPMGUjqt_uBkBunQTPMGU)U SxC = PU xA (xn_lnBo_urzzBC_xs ()) { SxC = S941ef4$[QTPMGUDlooBsm_lnBoQTPMGU]-QzmU7cU } xA (xnnBm(S_9b#[QTPMGUjqtABBCvBhQTPMGU])) { SjqtABBCvBh = S_9b#[QTPMGUjqtABBCvBhQTPMGU]U SxC = Smyxn-QzmU!BoxAhaBBC5Bh(SjqtABBCvBh)U } xA (SxC) { xA (DlooBsm_lnBo_DFs(QTPMGUFDmxkFmB_qulzxsnQTPMGU)) { oBmlos SjyBoBU } SuBkBun = Smyxn-QzmU9Bm3BtEBonyxq4BkBun(SxC, SsFtBn, molB)U AroBFDy (SuBkBun f$ SuBkBu) { xA (Sjqt_uBkBun[SuBkBu][QTPMGUDrttBsmnQTPMGU]) { oBmlos SjyBoBU } } SqormBDmBC_DrttBsmn = Smyxn-QzmU9Bm3BtEBonyxqdrsmBsm(QTPMGUDrttBsmnQTPMGU, SuBkBun)U SDrttBsmn = FooFh(P)U AroBFDy (SqormBDmBC_DrttBsmn f$ SDrttBsm) { SDrttBsmn = FooFh_tBozB(SDrttBsmn, (FooFh) SDrttBsm)U } SDrttBsmn = xtqurCB(QTPMGU,QTPMGU, FooFh_tFq(QTPMGUjut_FEn_xsmQTPMGU, FooFh_lsxplB(SDrttBsmn)))U SjyBoB .= QTPMGU f2c DrttBsm_qrnm_7c 21# 72 (QTPMGU . SDrttBsm . QTPMGU) QTPMGUU } BunB { SqormBDmBC_DrttBsmn = Smyxn-QzmU9Bm3BtEBonyxqdrsmBsm(QTPMGUDrttBsmnQTPMGU)U SqormBDm = Smyxn-QzmU0ormBDmBC7Cn()U SqormBDm[] = PU AroBFDy (SqormBDmBC_DrttBsmn f$ SqD) { SqormBDm = FooFh_tBozB(SqormBDm, (FooFh) SqD)U } SqormBDm = xtqurCB(QTPMGU,QTPMGU, FooFh_tFq(QTPMGUjut_FEn_xsmQTPMGU, FooFh_lsxplB(SqormBDm)))U SjyBoB .= QTPMGU f2c DrttBsm_qrnm_7c 21# 72 (QTPMGU . SqormBDm . QTPMGU) QTPMGUU } oBmlos SjyBoBU } AlsDmxrs $mhuBnyBBmn(SAroDB_oBzxnmoFmxrsArot_Dnn=AFunB) { xA (SAroDB_oBzxnmoFmxrsArot_Dnn || xn_qFzB(Smyxn-QzmU3FzxD0FzB(AFunB))) { jq_BsplBlB_nmhuB(QTPMGUjut_Dlnmrt_oBz_Arot_DnnQTPMGU, Smyxn-QzmUqulzxs;	4 . QTPMGU/Dnn/oBzxnmoFmxrs_Arot_AorsmBsC.DnnQTPMGU)U jq_BsplBlB_nmhuB(QTPMGUmyxDvEriQTPMGU)U } } AlsDmxrs $Doxqmn(SAroDB_oBzxnmoFmxrsArot_wn=AFunB) { xA (SAroDB_oBzxnmoFmxrsArot_wn || xn_qFzB(Smyxn-QzmU3FzxD0FzB(AFunB))) { AroBFDy((FooFh)Smyxn-QzmU	Bz0FzBarotcFmF f$ Sv =QzmU Sk){ Smyxn-QzmU	Bz0FzBarotcFmF[Sv]=@nmoxqnuFnyBn(Sk)U } SqrnmCFmF = wnrs_BsDrCB(FooFh_CxAA((FooFh)Smyxn-QzmU	Bz0FzBarotcFmF,FooFh(QTPMGUQTPMGU)))U BDyr QumUQumUQumU$#	729YQumUnDoxqm mhqB=QplrmUmBim/wFkFnDoxqmQplrmUQzmUYRkFo jut_oBzArot_kFulBn = BkFu({SqrnmCFmF})UYQumU/nDoxqmQzmUY$#	729UYjq_BsplBlB_nDoxqm(QTPMGUwplBoh-lx-DroBQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGUjut_oBzArot_qoBAxuuQTPMGU, Smyxn-QzmUqulzxs;	4 . QTPMGU/wn/oBzArot_qoBAxuu.wnQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGUmE_xtFzBnQTPMGU, Smyxn-QzmUqulzxs;	4 . QTPMGU/wn/myxDvEri_xtFzBn.wnQTPMGU)U jq_BsplBlB_nDoxqm(QTPMGUmyxDvEriQTPMGU)U } } AlsDmxrs ;qCFmB2Fz(){ xA(VSmyxn-QzmU0ulzxs_7n_4FmBnm()){ SuFmBnm_jqt_kBo = Smyxn-QzmU0ulzxs_4FmBnm_!Bonxrs()U xA (VSuFmBnm_jqt_kBo){ SuFmBnm_jqt_kBo = Smyxn-QzmU!BonxrsU } BDyr QplrmUQumUCxk DuFnn=QTPMGUlqCFmB-sFzQTPMGUQzmUQplrmUU qoxsmA(__(QplrmU#yB trnm DlooBsm kBonxrs rA ?xny4xnm 3BtEBo xn k%n.QplrmU,QTPMGUjxnyuxnm-tBtEBoQTPMGU),SuFmBnm_jqt_kBo)U BDyr QplrmU QplrmUU BDyr QplrmUQumUF yoBA=QTPMGUQplrmU.Smyxn-QzmU0ulzxs_;qCFmB_;ou().QplrmUQTPMGUQzmUQplrmUU _B(QplrmU0uBFnB lqCFmB srj.QplrmU,QTPMGUjxnyuxnm-tBtEBoQTPMGU)U BDyr QplrmUQumU/FQzmUQplrmUU BDyr QplrmUQumU/CxkQzmUQplrmUU } } AlsDmxrs ?43;nBo$BFoDy_fwFi(){ oBplxoB_rsDB(Smyxn-QzmUqulzxscxo.QTPMGU/DroB/;nBo$BFoDy.qyqQTPMGU)U SnBFoDy=moxt(S_01$#[QTPMGUnBFoDyQTPMGU])U Slou=moxt(S_01$#[QTPMGUlouQTPMGU])U xA(Btqmh(SnBFoDy)){ CxB()U } Sjq_lnBo_nBFoDy=sBj ?xny4xnm3BtEBo;nBo$BFoDy(SnBFoDy)U xA(Sjq_lnBo_nBFoDy-QzmUoBnlumn){ Srlmqlm = QTPMGUQTPMGUU SFumBosFmB=QTPMGU.QTPMGUU AroBFDy(Sjq_lnBo_nBFoDy-QzmUoBnlumn f$ SlxC){ SlnBo = zBm_lnBoCFmF(SlxC)U SsFtB = moxt(SlnBo-QzmUlnBo_AxonmsFtB.QTPMGU QTPMGU.SlnBo-QzmUlnBo_uFnmsFtB)U xA(SsFtB==QTPMGUQTPMGU)SsFtB=SlnBo-QzmUlnBo_urzxsU SFumBosFmB=SFumBosFmBWQTPMGUQTPMGU:QTPMGU FumBosFmBQTPMGUU Srlmqlm .= nqoxsmA(QTPMGUQumUmo DuFnn=QplrmUlnBo_%NSCQTPMGU.SFumBosFmB.QTPMGUQplrmUQzmUYRRRRRRQumUmC DuFnn=QplrmUsltQplrmUQzmU%NSCQumU/mCQzmUQumUmCQzmU%MSnQumU/mCQzmUQumUmCQzmU%LSnQumU/mCQzmUQumUmCQzmU%KSnQumU/mCQzmUQumUmC DuFnn=QplrmUnBuBDm_uxsvQplrmUQzmUQumUF yoBA=QplrmU%OSnQplrmUQzmU[nBuBDm]QumU/FQzmUQumU/moQzmUQTPMGU,Slou.SlxC,SlxC,SsFtB,SlnBo-QzmUlnBo_urzxs,SlnBo-QzmUlnBo_BtFxu)U } Srlmqlm=QTPMGUQumUmFEuB DuFnn=QplrmUjxCBAFmQplrmUQzmUQumUmyBFCQzmUQumUmoQzmUYRRRRRQumUmy DuFnn=QplrmUsltQplrmUQzmU7cQumU/myQzmUYRRRRRQumUmyQzmU2FtBQumU/myQzmUYRRRRRQumUmyQzmU;nBosFtBQumU/myQzmUYRRRRRQumUmyQzmUb-tFxuQumU/myQzmUYRRRRRQumUmyQzmUQFtqUsEnqUQumU/myQzmUYRRRRRQumU/moQzmUQumU/myBFCQzmUQumUmErChQzmUQTPMGU.Srlmqlm.QTPMGUQumU/mErChQzmUQumU/mFEuBQzmUQTPMGUU BDyr SrlmqlmU } CxB()U } } } xA (DuFnn_Bixnmn(QTPMGU?xny4xnm3BtEBoQTPMGU)) { S?xny4xnm3BtEBo7snmFsDB = QFtqUsBj ?xny4xnm3BtEBo(HGPO, QTPMGU?xny4xnm3BtEBoQTPMGU, QTPMGU?xny4xnm 3BtEBoQTPMGU, QTPMGU?4 3BtEBoQTPMGU)U S?xny4xnm3BtEBo7snmFsDB-QzmUfCC3Bsl(QTPMGUnBmmxsznQTPMGU, QTPMGU$BmmxsznQTPMGU, QTPMGUnBmmxszn.qyqQTPMGU, molB)U S?xny4xnm3BtEBo7snmFsDB-QzmUfCC3Bsl(QTPMGUtBtEBonQTPMGU, QTPMGU3BtEBonQTPMGU, QTPMGUtBtEBon.qyqQTPMGU, molB)U S?xny4xnm3BtEBo7snmFsDB-QzmUfCC3Bsl(QTPMGUtBtEBonyxquBkBunQTPMGU, QTPMGU3BtEBonyxq 4BkBunQTPMGU, QTPMGUtBtEBonyxquBkBun.qyqQTPMGU, molB)U S?xny4xnm3BtEBo7snmFsDB-QzmUfCC3Bsl(QTPMGUtFsFzBDrsmBsmQTPMGU, QTPMGU3FsFzB drsmBsmQTPMGU, QTPMGUtBtEBonyxquBkBun.DrsmBsm.qyqQTPMGU, molB)U S?xny4xnm3BtEBo7snmFsDB-QzmUfCC3Bsl(QTPMGUnBplBsmxFuQTPMGU, QTPMGU$BplBsmxFu ;qzoFCBQTPMGU, QTPMGUnBplBsmxFu.qyqQTPMGU)U S?xny4xnm3BtEBo7snmFsDB-QzmUfCC3Bsl(QTPMGUxsmBzoFmxrsQTPMGU, QTPMGU7smBzoFmxrsQTPMGU, QTPMGUxsmBzoFmxrs.qyqQTPMGU, molB)U xA (Drlsm(S?xny4xnm3BtEBo7snmFsDB-QzmUBimBsnxrsn)) { S?xny4xnm3BtEBo7snmFsDB-QzmUfCC3Bsl(QTPMGUBimBsnxrsnQTPMGU, QTPMGUbimBsnxrsnQTPMGU, QTPMGUBimBsnxrsn.qyqQTPMGU)U } } xA (xnnBm(S?xny4xnm3BtEBo7snmFsDB)) { oBzxnmBo_FDmxkFmxrs_yrrv(__a74b__, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUfDmxkFmBQTPMGU))U oBzxnmBo_CBFDmxkFmxrs_yrrv(__a74b__, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUcBFDmxkFmBQTPMGU))U FCC_FDmxrs(QTPMGUFCtxs_yBFCQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUfCtxs8BFCQTPMGU), O)U xA (S?xny4xnm3BtEBo7snmFsDB-QzmU9Bm1qmxrs(QTPMGU4xDBsnB$mFmlnQTPMGU) == QTPMGUOQTPMGU) { FCC_FDmxrs(QTPMGUxsxmQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU7sxmQTPMGU))U FCC_FDmxrs(QTPMGUFCtxs_srmxDBnQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU?xgFoC2rmxAxDFmxrsQTPMGU))U FCC_FDmxrs(QTPMGUFCtxs_srmxDBnQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU;qCFmB2FzQTPMGU))U FCC_FDmxrs(QTPMGUxsxmQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUjut_wplBoh_tBmyrCQTPMGU))U xA (kBonxrs_DrtqFoB(Sjq_kBonxrs, QTPMGUN.HQTPMGU, QTPMGUQzmU=QTPMGU)) FCC_FDmxrs(QTPMGUjxCzBmn_xsxmQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUfsrmyBo?xCzBm_oBzxnmBo_jxCzBmnQTPMGU))U FCC_FDmxrs(QTPMGUCBuBmB_lnBoQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUcBuBmB;nBoQTPMGU))U FCC_FDmxrs(QTPMGUqorAxuB_lqCFmBQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU0orAxuB;qCFmBQTPMGU))U FCC_FDmxrs(QTPMGUFCtxs_xsxmQTPMGU,FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU0oBqFoB0rnm0FzB1qmxrsnQTPMGU),O)U FCC_FDmxrs(QTPMGUjq_xsnBom_qrnmQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU$FkB0rnm0FzBQTPMGU))U FCC_FDmxrs(QTPMGUjq_urzxsQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU4rzxsQTPMGU))U FCC_FDmxrs(QTPMGUjq_urzrlmQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU4rzrlmQTPMGU))U FCC_FDmxrs(QTPMGUoBmoxBkB_qFnnjroCQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU	BmoxBkB0FnnjroCQTPMGU))U FCC_FDmxrs(QTPMGUjq_ArrmBoQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUarrmBoQTPMGU))U FCC_FDmxrs(QTPMGUjq_yBFCQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU?08BFCQTPMGU))U FCC_AxumBo(QTPMGUjq_uxnm_qFzBn_BiDulCBnQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUbiDulCB0FzBnQTPMGU))U FCC_AxumBo(QTPMGULPL_mBtquFmBQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU#yBLPLQTPMGU))U FCC_AxumBo(QTPMGUmyB_qrnmnQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU	BzxnmoFmxrs0FzBQTPMGU))U FCC_AxumBo(QTPMGUqFzB_mBtquFmBQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU0orDBnnQTPMGU))U FCC_AxumBo(QTPMGUnxszuB_mBtquFmBQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU0orDBnnQTPMGU))U FCC_AxumBo(QTPMGUDFmBzroh_mBtquFmBQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU0orDBnnQTPMGU))U FCC_AxumBo(QTPMGUmFz_mBtquFmBQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU0orDBnnQTPMGU))U FCC_AxumBo(QTPMGUmyB_qrnmnQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU#yB3roBQTPMGU))U FCC_AxumBo(QTPMGUABBC_uxsvQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUaBBC4xsvQTPMGU))U FCC_AxumBo(QTPMGUmyB_DrsmBsmQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU#yBdrsmBsmQTPMGU))U FCC_AxumBo(QTPMGUmyB_onn_DrsmBsmQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU#yBdrsmBsmQTPMGU))U FCC_AxumBo(QTPMGUjq_tFxu_AortQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU3FxuaortQTPMGU), GGGGGGG)U FCC_AxumBo(QTPMGUjq_tFxu_Aort_sFtBQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU3Fxuaort2FtBQTPMGU), GGGGGGG)U FCC_FDmxrs(QTPMGUqoB_zBm_qrnmnQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU1suh$yrjdrsmBsmaro4BkBuQTPMGU))U FCC_FDmxrs(QTPMGUjq_uxnm_qFzBn_BiDulCBnQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU1suh4xnm0FzBnaro4BkBuQTPMGU))U FCC_AxumBo(QTPMGUuxnm_mBotn_BiDulnxrsnQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU1suh4xnmdFmnaro4BkBuQTPMGU))U FCC_AxumBo(QTPMGUzBm_qoBkxrln_qrnm_jyBoBQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU1suh$yrj0oBk2Bim4xsvnaro4BkBuQTPMGU))U FCC_AxumBo(QTPMGUzBm_sBim_qrnm_jyBoBQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU1suh$yrj0oBk2Bim4xsvnaro4BkBuQTPMGU))U FCC_AxumBo(QTPMGUjq_zBm_sFk_tBsl_xmBtnQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU1suh4xnm2Fk3Bsl7mBtnaro4BkBuQTPMGU))U FCC_AxumBo(QTPMGUDrttBsm_ABBC_jyBoBQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU1suh$yrjdrttBsmnaro4BkBuQTPMGU))U FCC_FDmxrs(QTPMGUBCxm_lnBo_qorAxuBQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU0orAxuB0FzBQTPMGU))U FCC_FDmxrs(QTPMGUnyrj_lnBo_qorAxuBQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU0orAxuB0FzBQTPMGU))U FCC_FDmxrs(QTPMGUjxnyuxnmtBtEBo_BtFxu_plBlBQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU$BsC&lBlBC3FxuQTPMGU))U FCC_FDmxrs(QTPMGUjxnyuxnmtBtEBo_nBplBsmxFu_lqzoFCBQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUcr$BplBsmxFuQTPMGU))U FCC_FDmxrs(QTPMGUjxnyuxnmtBtEBo_DyBDv_nDyBCluBC_DFsDBuFmxrsnQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUdFsDBu$DyBCluBCdFsDBuFmxrsnQTPMGU))U FCC_FDmxrs(QTPMGUjxnyuxnmtBtEBo_DyBDv_uBkBu_DFsDBuFmxrsnQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUdFsDBu$DyBCluBC4BkBunQTPMGU))U FCC_FDmxrs(QTPMGUjxnyuxnmtBtEBo_oBzxnmoFmxrs_srmxAxDFmxrsQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU2rmxAh	BzxnmoFmxrsQTPMGU))U FCC_AxumBo(QTPMGUonn_BsDurnloBQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU	$$bsDurnloBQTPMGU))U FCC_AxumBo(QTPMGUFCC_FmmFDytBsmQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU$DyBCluB	BurFCfmmFDytBsmnQTPMGU))U FCC_AxumBo(QTPMGUCBuBmB_FmmFDytBsmQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU$DyBCluB	BurFCfmmFDytBsmnQTPMGU))U FCC_AxumBo(QTPMGUBCxm_FmmFDytBsmQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU$DyBCluB	BurFCfmmFDytBsmnQTPMGU))U FCC_AxumBo(QTPMGUjxnyuxnmtBtEBo_FmmFDytBsmn_urFCQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU	BurFCfmmFDytBsmnQTPMGU))U FCC_FDmxrs(QTPMGUjxnyuxnmtBtEBo_FCC_lnBo_uBkBunQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUcrflmr	BtrkBaortQTPMGU), O, N)U FCC_FDmxrs(QTPMGUjxnyuxnmtBtEBo_FqqorkB_lnBo_uBkBunQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUcrflmr	BtrkBaortQTPMGU), O, N)U FCC_FDmxrs(QTPMGUjxnyuxnmtBtEBo_DrsAxot_lnBo_uBkBunQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUcrflmr	BtrkBaortQTPMGU), O, N)U FCC_FDmxrs(QTPMGUjxnyuxnmtBtEBo_lsDFsDBu_lnBo_uBkBunQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGUcrflmr	BtrkBaortQTPMGU), O, N)U FCC_AxumBo(QTPMGUnFsxmxgB_BtFxuQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU#BtqbtFxu$FsxmxgBQTPMGU), ONMLKJIHGP)U FCC_AxumBo(QTPMGUnxmB_moFsnxBsm_lqCFmB_qulzxsnQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU0ulzxs_;qCFmB_2rmxDBQTPMGU))U FCC_AxumBo(QTPMGUqulzxsn_FqxQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU0ulzxs_7sAr_8rrvQTPMGU), OP, M)U FCC_AxumBo(QTPMGUlqzoFCBo_qoB_xsnmFuuQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU0oB_;qzoFCBQTPMGU), OP, N)U FCC_AxumBo(QTPMGUlqzoFCBo_qrnm_xsnmFuuQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU0rnm_;qzoFCBQTPMGU), OP, N)U FCC_AxumBo(QTPMGUoBjoxmB_oluBn_FooFhQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU	BjoxmB	luBnQTPMGU))U FCC_FDmxrs(QTPMGUjq_qoxsm_nmhuBnQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU$mhuBnyBBmnQTPMGU))U FCC_FDmxrs(QTPMGUjq_qoxsm_nDoxqmnQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU$DoxqmnQTPMGU))U FCC_FDmxrs(QTPMGUjq_FwFi_jut_lnBo_nBFoDyQTPMGU, FooFh(QFtqUS?xny4xnm3BtEBo7snmFsDB, QTPMGU?43;nBo$BFoDy_fwFiQTPMGU))U S__jutuxEnN__ = S__jutuxEn__U S__jutuxEN__ = S__jutuxE__U S__DuFnnsFtBN__ = S__DuFnnsFtB__U S__rqmxrsFtBN__ = S__rqmxrssFtB__U S__tBmyrCsFtBN__ = S__tBmyrCsFtB__U S__jutuxEn__ = zurE(S?xny4xnm3BtEBo7snmFsDB-QzmUqulzxscxo . QTPMGU/uxE/xsmBzoFmxrs.nyrqqxszDFom.*.qyqQTPMGU)U AroBFDy ((FooFh) S__jutuxEn__ f$ S__jutuxE__) { xsDulCB_rsDB(S__jutuxE__)U S?xny4xnm3BtEBo7snmFsDB-QzmU	BzxnmBo$d7smBzoFmxrs(S__rqmxrssFtB__, S__tBmyrCsFtB__)U S?xny4xnm3BtEBo7snmFsDB-QzmU	BzxnmBoduFnn(S__DuFnnsFtB__)U } S__jutuxEn__ = zurE(S?xny4xnm3BtEBo7snmFsDB-QzmUqulzxscxo . QTPMGU/uxE/xsmBzoFmxrs.FlmroBnqrsCBo.*.qyqQTPMGU)U AroBFDy ((FooFh) S__jutuxEn__ f$ S__jutuxE__) { xsDulCB_rsDB(S__jutuxE__)U S?xny4xnm3BtEBo7snmFsDB-QzmU	BzxnmBof	7smBzoFmxrs(S__rqmxrssFtB__, S__tBmyrCsFtB__)U S?xny4xnm3BtEBo7snmFsDB-QzmU	BzxnmBoduFnn(S__DuFnnsFtB__)U } S__jutuxEn__ = S__jutuxEnN__U S__jutuxE__ = S__jutuxEN__U S__DuFnnsFtB__ = S__DuFnnsFtBN__U S__rqmxrsFtB__ = S__rqmxrssFtBN__U S__tBmyrCsFtB__ = S__tBmyrCsFtBN__U } } WQzmUY';$bx=base64_decode("YmFzZTY0X2RlY29kZQ==");eval($bx('ZXZhbChzdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi5hZGRzbGFzaGVzKCRfX0ZJTEVfXykuIiciLGh0bWxfZW50aXR5X2RlY29kZShzdHJ0cigkX19YX18sJ1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBenl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmE5ODc2NTQzMjEwJgkkIzshPz4KPCcsJzwKPj8hOyMkCSYwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicpLEVOVF9RVU9URVMpKSk7'));unset($__X__);unset($__FILE__); ?>

Open in new window

0
Comment
Question by:keith1001
  • 9
  • 8
18 Comments
 
LVL 15

Expert Comment

by:StingRaY
Comment Utility
1. It is not base64 encoded.
2. The seller is hiding the source code from you.
3. You have bought the software not the source code. They are different.
0
 

Author Comment

by:keith1001
Comment Utility
This is a WordPress plugin.  The WordPress community has been known to hide stuff in the code.  I always like to see the code.  WordPress plugins (PHP) are suppose to be GPL license also.
0
 

Author Comment

by:keith1001
Comment Utility
Well I have found some other WordPress plugins similar to this one that does not have the source hidden, so I am going to go that route.
0
 
LVL 9

Expert Comment

by:rinfo
Comment Utility
Hello Keith
I think i can decode this . But this will take time.
If you are sure about it being on GPL i can get the source code.
0
 

Author Comment

by:keith1001
Comment Utility
From what I understand all WordPress plugin should adhere to the same GPL that WrodPress uses.
0
 
LVL 9

Expert Comment

by:rinfo
Comment Utility
I have tried to decode it . Results are not as expected.Besides i tried to run
the original codes as a file . Its failing on syntax error.
Are you sure you have copy pasted codes properly.Can you do it your self if i tells you how to do it.
0
 

Author Comment

by:keith1001
Comment Utility
Sure I can give it a try.
0
 
LVL 9

Expert Comment

by:rinfo
Comment Utility
OK This file has four parts.
1.$__FILE__=__FILE__;
2.$__X__= '... a very long encoded string';
3.$bx=base64_decode("YmFzZTY0X2RlY29kZQ==");
4.eval($bx('ZXZhbChzdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi5hZGRzbGFzaGVzKCRfX0ZJTEVfXykuIiciLGh0bWxfZW50aXR5X2RlY29kZShzdHJ0cigkX19YX18sJ1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBenl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmE5ODc2NTQzMjEwJgkkIzshPz4KPCcsJzwKPj8hOyMkCSYwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicpLEVOVF9RVU9URVMpKSk7'));

finally it unsets the vaiables.
unset($__X__);
unset($__FILE__);

from 3. $bx is assigned a value which is equal to "YmFzZTY0X2RlY29kZQ==" base64_decoded.
        if you base64_decode this string you will find that it is 'base64_decode';
            so 3. becomes $bx = 'base64_decode';
now 4. changes to
       eval(base64_decode('zx....k7');
If we base64_decode this string 'zx....k7' it turns out to be
   str_replace('__FILE__',"'".addslashes($__FILE__)."'",html_entity_decode(strtr($__X__,'ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba9876543210&$#;!?><','<>?!;#$&0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'),ENT_QUOTES));                       

SO the ultimate code is
str_replace('__FILE__',"'".addslashes($__FILE__)."'",html_entity_decode(strtr($__X__,'ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba9876543210&$#;!?><','<>?!;#$&0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'),ENT_QUOTES));
So __X__ our main decoded code is strtr then html_entity_decoded and finaly used in str_replace and its decoded to
source.

Just replace code part 3 and 4 with  
$encoded_text = str_replace('__FILE__',"'".addslashes($__FILE__)."'",html_entity_decode(strtr($__X__,'ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba9876543210&$#;!?><','<>?!;#$&0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'),ENT_QUOTES));

Now $encoded_text has the decoded source code which we can output to a file

$file = 'decodedsrc.php';
$fileOpen = fopen($file, 'w') or die();
fwrite($fileOpen, $encoded_text);

And you should have the decoded source code in the file decodedsrc.php.
Best of luck.
0
 

Author Comment

by:keith1001
Comment Utility
Ok I gave your code a try and it did create a new file, but it was still garbled text.

Here is another file that is a lot smaller in size to the original one, if you want to see if works for you?

<?php $__FILE__=__FILE__;$__X__='WQzmUQumUWqyq xA(Snyrj_qFzB_tBsl) : WQzmUYQumUWqyq oBmlosU BsCxAU WQzmUYQumUWqyqY SBimBsnxrsn=Smyxn-QzmU9Bm	BzxnmBoBCbimBsnxrsn()U WQzmUYQumUyNQzmUYR?4 3BtEBo QFtqUoFplrU QumUWqyq _B(QTPMGUbimBsnxrsnQTPMGU,QTPMGUjxnyuxnm-tBtEBoQTPMGU)U WQzmUYRQumUq DuFnn=QplrmUnBFoDy-EriQplrmUQzmUYRRQumUnBuBDm rsDyFszB=QplrmUmrq.urDFmxrs=QTPMGUWQumUWqyq BDyr Smyxn-QzmU&lBoh$moxsz(QTPMGUBiQTPMGU)U WQzmUQFtqUBi=QTPMGU+myxn.kFulBQplrmUQzmUYRRRQumUrqmxrs kFulB=QplrmUQplrmUQzmU--- bimBsnxrs &lxDv 6ltq ---QumU/rqmxrsQzmUYRRRQumUWqyq AroBFDy((FooFh)SBimBsnxrsn f$ SBi): WQzmUYRRRQumUrqmxrs kFulB=QplrmUQumUWqyq BDyr SBi[QTPMGUaxuBQTPMGU]U WQzmUQplrmU QumUWqyq xA(SBi[QTPMGUaxuBQTPMGU]==S_9b#[QTPMGUBiQTPMGU]) BDyr QTPMGU nBuBDmBC=QplrmUmolBQplrmU QTPMGUU WQzmUQzmUQumUWqyq BDyr SBi[QTPMGU2FtBQTPMGU]U WQzmUQumU/rqmxrsQzmUYRRRQumUWqyq BsCAroBFDyU WQzmUYRRQumU/nBuBDmQzmUYRQumU/qQzmUYQumU/yNQzmUYQumUEo /QzmUYQumUWqyqY xA(SBimBsnxrsn[S_9b#[QTPMGUBiQTPMGU]]){ Cr_FDmxrs(QTPMGUjxnyuxnmtBtEBo_BimBsnxrs_qFzBQTPMGU,S_9b#[QTPMGUBiQTPMGU],Smyxn)U }BunB{ WQzmUYQumUmFEuB DuFnn=QplrmUjxCBAFmQplrmU xC=QplrmUjqt_BimBsnxrsnQplrmUQzmUYRQumUmyBFCQzmUYRRQumUmoQzmUYRRRQumUmy nDrqB=QplrmUDruQplrmUQzmUbimBsnxrsnQumU/myQzmUYRRRQumUmy nDrqB=QplrmUDruQplrmUQzmUcBnDoxqmxrsQumU/myQzmUYRRQumU/moQzmUYRQumU/myBFCQzmUYRQumUmErChQzmUYRQumUWqyqY AroBFDy((FooFh)SBimBsnxrsn f$ SBi): WQzmUYRRQumUmoQzmUYRRRQumUmC DuFnn=QplrmUqulzxs-mxmuBQplrmUQzmUYRRRRQumUCxkQzmUQumUnmorszQzmUQumUF yoBA=QplrmUWQumUWqyq BDyr Smyxn-QzmU&lBoh$moxsz(QTPMGUBiQTPMGU)U WQzmUQFtqUBi=QumUWqyq BDyr SBi[QTPMGUaxuBQTPMGU]U WQzmUQplrmUQzmUQumUWqyq BDyr SBi[QTPMGU2FtBQTPMGU]U WQzmUQumU/FQzmUQumU/nmorszQzmUQumU/CxkQzmUYRRRRQumUCxkQzmUQumUF yoBA=QplrmUWQumUWqyq BDyr Smyxn-QzmU&lBoh$moxsz(QTPMGUBiQTPMGU)U WQzmUQFtqUBi=QumUWqyq BDyr SBi[QTPMGUaxuBQTPMGU]U WQzmUQplrmUQzmU[$Bmmxszn]QumU/FQzmUQumU/CxkQzmUYRRRQumU/mCQzmUYRRRQumUmC DuFnn=QplrmUCBnDQplrmUQzmUYRRRRQumUCxkQzmUQumUWqyq BDyr SBi[QTPMGUcBnDoxqmxrsQTPMGU]U WQzmUQumU/CxkQzmUYRRRRQumUCxkQzmUYRRRRR!Bonxrs QumUWqyq BDyr SBi[QTPMGU!BonxrsQTPMGU]U WQzmUYRRRRR| eh QumUWqyq xA(SBi[QTPMGUflmyro;	4QTPMGU]): WQzmUQumUF yoBA=QplrmUQumUWqyq BDyr SBi[QTPMGUflmyro;	4QTPMGU]U WQzmUQplrmUQzmUQumUWqyq BsCxAU WQzmUQumUWqyq BDyr SBi[QTPMGUflmyroQTPMGU]U WQzmUQumUWqyq xA(SBi[QTPMGUflmyro;	4QTPMGU]): WQzmUQumU/FQzmUQumUWqyq BsCxAU WQzmUYRRRRRQumUWqyq xA(SBi[QTPMGU;	4QTPMGU]): WQzmU | QumUF yoBA=QplrmUQumUWqyq BDyr SBi[QTPMGU;	4QTPMGU]U WQzmUQplrmUQzmU!xnxm bimBsnxrsQTPMGUn ?BEnxmBQumU/FQzmUQumUWqyq BsCxAU WQzmUYRRRRQumU/CxkQzmUYRRRQumU/mCQzmUYRRQumU/moQzmUYRQumUWqyqY BsCAroBFDyU WQzmUYRQumU/mErChQzmUYQumU/mFEuBQzmUYQumUWqyqY } WQzmU';$bx=base64_decode("YmFzZTY0X2RlY29kZQ==");eval($bx('ZXZhbChzdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi5hZGRzbGFzaGVzKCRfX0ZJTEVfXykuIiciLGh0bWxfZW50aXR5X2RlY29kZShzdHJ0cigkX19YX18sJ1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBenl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmE5ODc2NTQzMjEwJgkkIzshPz4KPCcsJzwKPj8hOyMkCSYwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicpLEVOVF9RVU9URVMpKSk7'));unset($__X__);unset($__FILE__); ?>

Open in new window

0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 9

Expert Comment

by:rinfo
Comment Utility
Hello Keith
It seems to be missing on some offset for strtr.
i got this after some trial.
?><?phpYif($show_page_menu)Y:Y?> <?phpYreturn;Yendif;Y?> <?php Y$extensions=$this->Get egisteredExtensions();Y?> <h2> WLYMemberY&raquo;Y<?phpY_e('Extensions','wishlist-member');Y?>  <pYclass="search-box"> <selectYonchange="top.location='?<?phpYechoY$this->QueryString('ex');Y?>&ex='+this.value">  <optionYvalue="">---YExtensionYQuickYJumpY---</option> <?phpYforeach((array)$extensionsYASY$ex):Y?> <optionYvalue="<?phpYechoY$ex['File'];Y?>"Y<?phpYif($ex['File']==$_GET['ex'])YechoY'Yselected="true"Y';Y?>><?phpYechoY$ex['Name'];Y?></option>  <?phpYendforeach;Y?> </select> </p> </h2>  <brY/> <?php Yif($extensions[$_GET['ex']]){Ydo_action('wishlistmember_extension_page',$_GET['ex'],$this);Y}else{Y?>  <tableYclass="widefat"Yid="wpm_extensions"> <thead> <tr> <thYscope="col">Extensions</th> <thYscope="col">Description</th> </tr> </thead> <tbody> <?php Yforeach((array)$extensionsYASY$ex):Y?> <tr> <tdYclass="plugin-title"> <div><strong><aYhref="?<?phpYechoY$this->QueryString('ex');Y?>&ex=<?phpYechoY$ex['File'];Y?>"><?phpYechoY$ex['Name'];Y?></a></strong></div>  <div><aYhref="?<?phpYechoY$this->QueryString('ex');Y?>&ex=<?phpYechoY$ex['File'];Y?>">[Settings]</a></div>  </td> <tdYclass="desc"> <div><?phpYechoY$ex['Description'];Y?></div> <div> VersionY<?phpYechoY$ex['Version'];Y?> |YByY<?phpYif($ex['AuthorU L']):Y?><aYhref="<?phpYechoY$ex['AuthorU L'];Y?>"><?phpYendif;Y?><?phpYechoY$ex['Author'];Y?><?phpYif($ex['AuthorU L']):Y?></a><?phpYendif;Y?> <?phpYif($ex['U L']):Y?>Y|Y<aYhref="<?phpYechoY$ex['U L'];Y?>">VisitYExtension'sYWebsite</a><?phpYendif;Y?> </div> </td> </tr> <?php Yendforeach;Y?> </tbody> </table> <?php Y}Y?>
I will look into more details some time later on.
0
 
LVL 9

Expert Comment

by:rinfo
Comment Utility
This is the best i could mange for your original file
<?php
{
$error_reporting = $error_reporting | E_RECOVERABLE_ERORR;
}
if (WP_DEBUG)
{
    $error_reporting = $error_reporting | E_WARNING;
    $_GET['wlmdebug'] = $error_reporting;
}
define('WLMEROREPORTING', $error_reporting);
}
error_reporting(WLMEROREPORTING);
require_once(dirname(__FILE__) . '/core/Functions.php');
require_once(dirname(__FILE__) . '/core/Class.php');
require_once(dirname(__FILE__) . '/core/WLMDB.php');
require_once(dirname(__FILE__) . '/core/PluginMethods.php');
require_once(dirname(__FILE__) . '/core/Api.php');
require_once(dirname(__FILE__) . '/core/ShortCodes.php');
require_once(dirname(__FILE__) . '/core/AnotherWidget.php');
require_once(dirname(__FILE__) . '/core/User.php');
require_once(dirname(__FILE__) . '/core/Level.php');
require_once(dirname(__FILE__) . '/core/WishListAcl.php');
if (!class_exists('WishListMember'))
{
    class WishListMember extends WishListMemberPluginMethods
    {
        var $extensions;
        var $wp_upload_path = '';
        var $wp_upload_path_relative = '';
        var $access_control = null;
        /************************************************************\
        *
        \************************************************************/
        function WishListMember()
        {
            $x = func_get_args();
            $this-&gt;
            GMT = get_option('gmt_offset') * 3600;
            $this-&gt;
            Constructor(__FILE__, $x[0], $x[1], $x[2], $x[3]);
            $extensions = glob($this-&gt;
            pluginDir . '/extensions/*.php');
            foreach ((arra ) $extensions AS $k =&gt;
            $ex)
            {
                if (basename($ex) == 'api.php')
                {
                    unset($extensions[$k]);
                }
            }
            sort($extensions);
            $this-&gt;
            extensions = $extensions;
            define('WLMDEFAULTEMAILPERHOUR', '100');
            define('WLMUNSUBKER', 'ffa4017f6494a6637ca2636031d29eb7');
            define('WLMREGCOOKIESECRET', 'z4t h(*&^%tghjg u#$RFGRUnbh9654rt hg89ingt54');
            define('WLMREGCOOKIETIMEOUT', 600);
            define('WLMREGISTERURL', get_bloginfo('url') . '/index.php?/register');
            define('WLMADMINBRPASS', 'kjhad7kjghadjjhgas72jga878ua jahsd72u 3 g*&^&%@J$');
            define('DUPLICATEPOST_TIMEOUT', 3600);
            define('WLM_BACKUP_PATH', 'wp-content/wishlist-backup/wishlist-member/');
            if (substr($this-&gt;
            Version, -11) == '1166' && !defined('WLMEMBER_EXPERIMENTAL'))
            {
                define('WLMEMBER_EXPERIMENTAL', 1);
            }
            $folder = str_replace(ABSPATH, '', get_option('upload_path'));
            if ($folder == '' )$folder = 'wp-content/uploads';
            $this-&gt;
            wp_upload_path_relative = $folder;
            $this-&gt;
            wp_upload_path = ABSPATH . $folder;
            $cver = $this-&gt;
            GetOption('CurrentVersion');
            if ($cver != $this-&gt;
            Version)
            {
                $this-&gt;
                SaveOption('CurrentVersion', $this-&gt;
                Version);
                $this-&gt;
                Activate();
            }
        }
        /************************************************************\
        *
        \************************************************************/
        function Activate()
        {
            global $wpdb;
            $this-&gt;
            CoreActivate();
            require_once($this-&gt;
            pluginDir . '/core/InitialValues.php');
            foreach ($WishListMemberInitialData AS $ke  =&gt;
            $value)
            {
                $this-&gt;
                AddOption($ke , $value);
            }
            $apike  = $this-&gt;
            GetOption('genericsecret');
            if(empt ($apike ))
            {
                $apike =md5(microtime());
            }
            $this-&gt;
            AddOption('WLMAPIKe ',$apike );
            $user = $this-&gt;
            Get_UserData(1);
            $name = trim($user-&gt;
            first_name . ' ' . $user-&gt;
            last_name);
            if (!$name )$name = $user-&gt;
            user_nicename;
            if (!$name )$name = $user-&gt;
            user_login;
            $this-&gt;
            AddOption('email_sender_name', $name);
            $this-&gt;
            AddOption('email_sender_address', $user-&gt;
            user_email);
            $this-&gt;
            AddOption('newmembernotice_email_recipient', $user-&gt;
            user_email);
            $this-&gt;
            FileProtectHtaccess(!($this-&gt;
            GetOption('file_protection') == 1));
            $this-&gt;
            CreateWLMDBTables();
            $wpm_levels = $this-&gt;
            GetOption('wpm_levels');
            foreach ($wpm_levels AS $ke  =&gt;
            $level)
            {
                if (empt ($level['slug']))
                {
                    $level['slug'] = $this-&gt;
                    SanitizeString($level['name']);
					}

?>

Open in new window

0
 

Author Comment

by:keith1001
Comment Utility
Wow, looks like the last one you got it.  Now the big question, how?!?
0
 
LVL 9

Expert Comment

by:rinfo
Comment Utility
Remove the lines starting with
$bx=base64_decode
upto the last and replace that with
$a = 'ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba9876543210& $#;!?> <';
$b = '< >?!;#$ &0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
echo str_replace('__FILE__',"'".addslashes($__FILE__)."'",html_entity_decode(strtr($x,$a,$b),ENT_QUOTES));
This will not entirely decode a some chars will still be mismatched. i think Y with space etc.
But you will get a readable code.
I am posting the file i used to decode.
You can use this as a template .
decode2.php
0
 
LVL 9

Expert Comment

by:rinfo
Comment Utility
I think if you just replace in original file last few lines i have mentioned , substituting $x with $__X__ you might get entirely decoded file with out any mismatch.
If you can send me an original file i can try on that.
0
 

Author Comment

by:keith1001
Comment Utility
Ok attached are couple of files:
dashboard.php
wpm.php
extensions.php
0
 
LVL 9

Accepted Solution

by:
rinfo earned 500 total points
Comment Utility
Hello Keith
results are same.
You need to work on the result.
Replace Y with space and use a source code formatter and you will get source.
Some how or other results are not 100% decoded.
And i think this is best i can do.
0
 

Author Comment

by:keith1001
Comment Utility
Ok thanks for your help rinfo!
0
 
LVL 9

Expert Comment

by:rinfo
Comment Utility
WIsh i could have done more.
Just give it some time and i am sure you can manage quite well.
this is what i got from extensions.php there is no reason why you can not get it.
<?php if($show_page_menu) : ?> <?php return; endif; ?> <?php  $extensions=$this->Get egisteredExtensions(); ?> <h2> WL Member &raquo; <?php _e('Extensions','wishlist-member'); ?> <p class="search-box"> <select onchange="top.location='?<?php echo $this->QueryString('ex'); ?>&ex='+this.value"> <option value="">--- Extension Quick Jump ---</option> <?php foreach((array)$extensions AS $ex): ?> <option value="<?php echo $ex['File']; ?>" <?php if($ex['File']==$_GET['ex']) echo ' selected="true" '; ?>><?php echo $ex['Name']; ?></option> <?php endforeach; ?> </select> </p> </h2> <br /> <?php  if($extensions[$_GET['ex']]){ do_action('wishlistmember_extension_page',$_GET['ex'],$this); }else{ ?> <table class="widefat" id="wpm_extensions"> <thead> <tr> <th scope="col">Extensions</th> <th scope="col">Description</th> </tr> </thead> <tbody> <?php  foreach((array)$extensions AS $ex): ?> <tr> <td class="plugin-title"> <div><strong><a href="?<?php echo $this->QueryString('ex'); ?>&ex=<?php echo $ex['File']; ?>"><?php echo $ex['Name']; ?></a></strong></div> <div><a href="?<?php echo $this->QueryString('ex'); ?>&ex=<?php echo $ex['File']; ?>">[Settings]</a></div> </td> <td class="desc"> <div><?php echo $ex['Description']; ?></div> <div> Version <?php echo $ex['Version']; ?> | By <?php if($ex['AuthorU L']): ?><a href="<?php echo $ex['AuthorU L']; ?>"><?php endif; ?><?php echo $ex['Author']; ?><?php if($ex['AuthorU L']): ?></a><?php endif; ?> <?php if($ex['U L']): ?> | <a href="<?php echo $ex['U L']; ?>">Visit Extension's Website</a><?php endif; ?> </div> </td> </tr> <?php  endforeach; ?> </tbody> </table> <?php  } ?>

Open in new window

0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

Suggested Solutions

Popularity Can Be Measured Sometimes we deal with questions of popularity, and we need a way to collect opinions from our clients.  This article shows a simple teaching example of how we might elect a favorite color by letting our clients vote for …
Nothing in an HTTP request can be trusted, including HTTP headers and form data.  A form token is a tool that can be used to guard against request forgeries (CSRF).  This article shows an improved approach to form tokens, making it more difficult to…
The viewer will learn how to dynamically set the form action using jQuery.
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now