FWD=Nw|NRB_gǮ׮   ' 7gǮ׮   ' 7% KgǮ׮   ' 7% Kv9gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8pgǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8vgǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|MgǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+NgǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFgǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHTgǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WgǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa]gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmggǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmgJ|J|32J|5IJ|6vJ|7J|8J|:ܝJ|AJ|HLJ|JcJ|KJ|PJ|RJ|Z%J|[2J|dVJ|fyJ|hJ|iٟJ|jJ|k-J|lWJ|uJ|vJ|xƠJ||J|J|TJ|J|آJ|J|J|BJ|J|J|ʣJ|J|J|6J|J|J|ФJ|J|J|4J|`J||J|J|J|)J|-ZgǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmgJ|J|32J|5IJ|6vJ|7J|8J|:ܝJ|AJ|HLJ|JcJ|KJ|PJ|RJ|Z%J|[2J|dVJ|fyJ|hJ|iٟJ|jJ|k-J|lWJ|uJ|vJ|xƠJ||J|J|TJ|J|آJ|J|J|BJ|J|J|ʣJ|J|J|6J|J|J|ФJ|J|J|4J|`J||J|J|J|)J|-Zl!OlSǬlZl[l\#l]Jl_\l`lflklolplr2lw^lywl{l|Ӯl}lll?l_lllll4lOl|llȰlll4l`lllʱlܱlll.lIlvlllʲlll#<l(^l*xl-l.l0l6l4lE4lFFlHXlJlSȴlVlYlZFl\KlalelhliӵlmlnlpluKlx|l{l|lll%l*lClglllѷlll!l'l:lllll l?lWlolll)l.lGlkllϺll%lCltll#l$1 l& l(0l)kl+Ҽl.l1l4l7l?gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmgJ|J|32J|5IJ|6vJ|7J|8J|:ܝJ|AJ|HLJ|JcJ|KJ|PJ|RJ|Z%J|[2J|dVJ|fyJ|hJ|iٟJ|jJ|k-J|lWJ|uJ|vJ|xƠJ||J|J|TJ|J|آJ|J|J|BJ|J|J|ʣJ|J|J|6J|J|J|ФJ|J|J|4J|`J||J|J|J|)J|-Zl!OlSǬlZl[l\#l]Jl_\l`lflklolplr2lw^lywl{l|Ӯl}lll?l_lllll4lOl|llȰlll4l`lllʱlܱlll.lIlvlllʲlll#<l(^l*xl-l.l0l6l4lE4lFFlHXlJlSȴlVlYlZFl\KlalelhliӵlmlnlpluKlx|l{l|lll%l*lClglllѷlll!l'l:lllll l?lWlolll)l.lGlkllϺll%lCltll#l$1 l& l(0l)kl+Ҽl.l1l4l7l?CPC~zCCC C$CICZCdCvCCCCCCCCC?C^C}CCCCCCPCVChC C C  C0CICbCCCCCCC"HC)C=C>C?CCCDCE9CFLCJaCMsCNCOCPCQCRCS CU*CVBCWZCXrCYCZC[C`CaCb$Cf6CrmCsCtC{"ChCCCSCVCY+C\;CbKCebCiqClgǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmgJ|J|32J|5IJ|6vJ|7J|8J|:ܝJ|AJ|HLJ|JcJ|KJ|PJ|RJ|Z%J|[2J|dVJ|fyJ|hJ|iٟJ|jJ|k-J|lWJ|uJ|vJ|xƠJ||J|J|TJ|J|آJ|J|J|BJ|J|J|ʣJ|J|J|6J|J|J|ФJ|J|J|4J|`J||J|J|J|)J|-Zl!OlSǬlZl[l\#l]Jl_\l`lflklolplr2lw^lywl{l|Ӯl}lll?l_lllll4lOl|llȰlll4l`lllʱlܱlll.lIlvlllʲlll#<l(^l*xl-l.l0l6l4lE4lFFlHXlJlSȴlVlYlZFl\KlalelhliӵlmlnlpluKlx|l{l|lll%l*lClglllѷlll!l'l:lllll l?lWlolll)l.lGlkllϺll%lCltll#l$1 l& l(0l)kl+Ҽl.l1l4l7l?CPC~zCCC C$CICZCdCvCCCCCCCCC?C^C}CCCCCCPCVChC C C  C0CICbCCCCCCC"HC)C=C>C?CCCDCE9CFLCJaCMsCNCOCPCQCRCS CU*CVBCWZCXrCYCZC[C`CaCb$Cf6CrmCsCtC{"ChCCCSCVCY+C\;CbKCebCiqCllH lHlH(lHRlH|lHlHlHlH$lH"NlH(lH)lH+lH-lH/lH0"lH3UlH6|lH8lH;lH<lH=lH>lH?lH@-lHAElHC]lHDlHElHFlHGlHH%lHKMlHLelHM}lHNlHPlHQlHRlHS%lHVMlHW_lHXlHXlHXlHXlHZlH[lH]&lH_9lHbKlHd^lHfplHglHhlHilHjlHklHp lHq#lHr;lHtHlHyZlH~slHlHlHlHlHlHlHlH lH,lH_lHrlHlHlHlHlHlHlHlHlH;lHSlHrlHlHlHlHlHlHlHlHlH.lHGlH^lHylHlHlHlHlH lH!lH3lHDlHelHwlHlHlHlHlHlH2lHIlHalHylHlHlHlHlHlHlHlHBlHjlHqlHlHlHlHlH gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmgJ|J|32J|5IJ|6vJ|7J|8J|:ܝJ|AJ|HLJ|JcJ|KJ|PJ|RJ|Z%J|[2J|dVJ|fyJ|hJ|iٟJ|jJ|k-J|lWJ|uJ|vJ|xƠJ||J|J|TJ|J|آJ|J|J|BJ|J|J|ʣJ|J|J|6J|J|J|ФJ|J|J|4J|`J||J|J|J|)J|-Zl!OlSǬlZl[l\#l]Jl_\l`lflklolplr2lw^lywl{l|Ӯl}lll?l_lllll4lOl|llȰlll4l`lllʱlܱlll.lIlvlllʲlll#<l(^l*xl-l.l0l6l4lE4lFFlHXlJlSȴlVlYlZFl\KlalelhliӵlmlnlpluKlx|l{l|lll%l*lClglllѷlll!l'l:lllll l?lWlolll)l.lGlkllϺll%lCltll#l$1 l& l(0l)kl+Ҽl.l1l4l7l?CPC~zCCC C$CICZCdCvCCCCCCCCC?C^C}CCCCCCPCVChC C C  C0CICbCCCCCCC"HC)C=C>C?CCCDCE9CFLCJaCMsCNCOCPCQCRCS CU*CVBCWZCXrCYCZC[C`CaCb$Cf6CrmCsCtC{"ChCCCSCVCY+C\;CbKCebCiqCllH lHlH(lHRlH|lHlHlHlH$lH"NlH(lH)lH+lH-lH/lH0"lH3UlH6|lH8lH;lH<lH=lH>lH?lH@-lHAElHC]lHDlHElHFlHGlHH%lHKMlHLelHM}lHNlHPlHQlHRlHS%lHVMlHW_lHXlHXlHXlHXlHZlH[lH]&lH_9lHbKlHd^lHfplHglHhlHilHjlHklHp lHq#lHr;lHtHlHyZlH~slHlHlHlHlHlHlHlH lH,lH_lHrlHlHlHlHlHlHlHlHlH;lHSlHrlHlHlHlHlHlHlHlHlH.lHGlH^lHylHlHlHlHlH lH!lH3lHDlHelHwlHlHlHlHlHlH2lHIlHalHylHlHlHlHlHlHlHlHBlHjlHqlHlHlHlHlH ll!>l#Pl$jl+l,l2l<2l=Il?[l@lAlBl l2gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmgJ|J|32J|5IJ|6vJ|7J|8J|:ܝJ|AJ|HLJ|JcJ|KJ|PJ|RJ|Z%J|[2J|dVJ|fyJ|hJ|iٟJ|jJ|k-J|lWJ|uJ|vJ|xƠJ||J|J|TJ|J|آJ|J|J|BJ|J|J|ʣJ|J|J|6J|J|J|ФJ|J|J|4J|`J||J|J|J|)J|-Zl!OlSǬlZl[l\#l]Jl_\l`lflklolplr2lw^lywl{l|Ӯl}lll?l_lllll4lOl|llȰlll4l`lllʱlܱlll.lIlvlllʲlll#<l(^l*xl-l.l0l6l4lE4lFFlHXlJlSȴlVlYlZFl\KlalelhliӵlmlnlpluKlx|l{l|lll%l*lClglllѷlll!l'l:lllll l?lWlolll)l.lGlkllϺll%lCltll#l$1 l& l(0l)kl+Ҽl.l1l4l7l?CPC~zCCC C$CICZCdCvCCCCCCCCC?C^C}CCCCCCPCVChC C C  C0CICbCCCCCCC"HC)C=C>C?CCCDCE9CFLCJaCMsCNCOCPCQCRCS CU*CVBCWZCXrCYCZC[C`CaCb$Cf6CrmCsCtC{"ChCCCSCVCY+C\;CbKCebCiqCllH lHlH(lHRlH|lHlHlHlH$lH"NlH(lH)lH+lH-lH/lH0"lH3UlH6|lH8lH;lH<lH=lH>lH?lH@-lHAElHC]lHDlHElHFlHGlHH%lHKMlHLelHM}lHNlHPlHQlHRlHS%lHVMlHW_lHXlHXlHXlHXlHZlH[lH]&lH_9lHbKlHd^lHfplHglHhlHilHjlHklHp lHq#lHr;lHtHlHyZlH~slHlHlHlHlHlHlHlH lH,lH_lHrlHlHlHlHlHlHlHlHlH;lHSlHrlHlHlHlHlHlHlHlHlH.lHGlH^lHylHlHlHlHlH lH!lH3lHDlHelHwlHlHlHlHlHlH2lHIlHalHylHlHlHlHlHlHlHlHBlHjlHqlHlHlHlHlH ll!>l#Pl$jl+l,l2l<2l=Il?[l@lAlBl l2(f(L(N(O(P(QF(Rm(S(T(U(]B(^`(g(h(n(o(p%(q7(rI(s[(tw(u(w(y({(}(((!(9(K(](t((((((((($(G(q((((( (g((((( ("($%(EBgǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmgJ|J|32J|5IJ|6vJ|7J|8J|:ܝJ|AJ|HLJ|JcJ|KJ|PJ|RJ|Z%J|[2J|dVJ|fyJ|hJ|iٟJ|jJ|k-J|lWJ|uJ|vJ|xƠJ||J|J|TJ|J|آJ|J|J|BJ|J|J|ʣJ|J|J|6J|J|J|ФJ|J|J|4J|`J||J|J|J|)J|-Zl!OlSǬlZl[l\#l]Jl_\l`lflklolplr2lw^lywl{l|Ӯl}lll?l_lllll4lOl|llȰlll4l`lllʱlܱlll.lIlvlllʲlll#<l(^l*xl-l.l0l6l4lE4lFFlHXlJlSȴlVlYlZFl\KlalelhliӵlmlnlpluKlx|l{l|lll%l*lClglllѷlll!l'l:lllll l?lWlolll)l.lGlkllϺll%lCltll#l$1 l& l(0l)kl+Ҽl.l1l4l7l?CPC~zCCC C$CICZCdCvCCCCCCCCC?C^C}CCCCCCPCVChC C C  C0CICbCCCCCCC"HC)C=C>C?CCCDCE9CFLCJaCMsCNCOCPCQCRCS CU*CVBCWZCXrCYCZC[C`CaCb$Cf6CrmCsCtC{"ChCCCSCVCY+C\;CbKCebCiqCllH lHlH(lHRlH|lHlHlHlH$lH"NlH(lH)lH+lH-lH/lH0"lH3UlH6|lH8lH;lH<lH=lH>lH?lH@-lHAElHC]lHDlHElHFlHGlHH%lHKMlHLelHM}lHNlHPlHQlHRlHS%lHVMlHW_lHXlHXlHXlHXlHZlH[lH]&lH_9lHbKlHd^lHfplHglHhlHilHjlHklHp lHq#lHr;lHtHlHyZlH~slHlHlHlHlHlHlHlH lH,lH_lHrlHlHlHlHlHlHlHlHlH;lHSlHrlHlHlHlHlHlHlHlHlH.lHGlH^lHylHlHlHlHlH lH!lH3lHDlHelHwlHlHlHlHlHlH2lHIlHalHylHlHlHlHlHlHlHlHBlHjlHqlHlHlHlHlH ll!>l#Pl$jl+l,l2l<2l=Il?[l@lAlBl l2(f(L(N(O(P(QF(Rm(S(T(U(]B(^`(g(h(n(o(p%(q7(rI(s[(tw(u(w(y({(}(((!(9(K(](t((((((((($(G(q((((( (g((((( ("($%(EB V &g(y),354Y6v789;>@A*B0DUFzHJLMQST5ZS\y`agm1nNtvyz}=~[%DhntUs}7d@g2b"RgǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmgJ|J|32J|5IJ|6vJ|7J|8J|:ܝJ|AJ|HLJ|JcJ|KJ|PJ|RJ|Z%J|[2J|dVJ|fyJ|hJ|iٟJ|jJ|k-J|lWJ|uJ|vJ|xƠJ||J|J|TJ|J|آJ|J|J|BJ|J|J|ʣJ|J|J|6J|J|J|ФJ|J|J|4J|`J||J|J|J|)J|-Zl!OlSǬlZl[l\#l]Jl_\l`lflklolplr2lw^lywl{l|Ӯl}lll?l_lllll4lOl|llȰlll4l`lllʱlܱlll.lIlvlllʲlll#<l(^l*xl-l.l0l6l4lE4lFFlHXlJlSȴlVlYlZFl\KlalelhliӵlmlnlpluKlx|l{l|lll%l*lClglllѷlll!l'l:lllll l?lWlolll)l.lGlkllϺll%lCltll#l$1 l& l(0l)kl+Ҽl.l1l4l7l?CPC~zCCC C$CICZCdCvCCCCCCCCC?C^C}CCCCCCPCVChC C C  C0CICbCCCCCCC"HC)C=C>C?CCCDCE9CFLCJaCMsCNCOCPCQCRCS CU*CVBCWZCXrCYCZC[C`CaCb$Cf6CrmCsCtC{"ChCCCSCVCY+C\;CbKCebCiqCllH lHlH(lHRlH|lHlHlHlH$lH"NlH(lH)lH+lH-lH/lH0"lH3UlH6|lH8lH;lH<lH=lH>lH?lH@-lHAElHC]lHDlHElHFlHGlHH%lHKMlHLelHM}lHNlHPlHQlHRlHS%lHVMlHW_lHXlHXlHXlHXlHZlH[lH]&lH_9lHbKlHd^lHfplHglHhlHilHjlHklHp lHq#lHr;lHtHlHyZlH~slHlHlHlHlHlHlHlH lH,lH_lHrlHlHlHlHlHlHlHlHlH;lHSlHrlHlHlHlHlHlHlHlHlH.lHGlH^lHylHlHlHlHlH lH!lH3lHDlHelHwlHlHlHlHlHlH2lHIlHalHylHlHlHlHlHlHlHlHBlHjlHqlHlHlHlHlH ll!>l#Pl$jl+l,l2l<2l=Il?[l@lAlBl l2(f(L(N(O(P(QF(Rm(S(T(U(]B(^`(g(h(n(o(p%(q7(rI(s[(tw(u(w(y({(}(((!(9(K(](t((((((((($(G(q((((( (g((((( ("($%(EB V &g(y),354Y6v789;>@A*B0DUFzHJLMQST5ZS\y`agm1nNtvyz}=~[%DhntUs}7d@g2b"RN,s N,p N,t N,v' N,wG N,xY N,yk N,r N, N, N, N, N, N, N,0 N,I N,[ N,s N, N, N, N, N,N,DN,nN,N,N,N,N,AN,YN,qN,N,N,N,N,N,(N,UN,sN,N,N,N,N,.N,N,N,N,N,N,N,N,>N,vN,N,N,N,N, N, 'N,9N,gN,N,N,N,N,N,!N,#N,%N,/N,1 N,22N,7HN,8fN,:N,;N,<N,FN,GN,IN,JN,L-N,NLN,OXN,PN,RN,SN,TN,[N,g9N,hJN,khN,mN,qN,zN,{N,}N, N,!N,-N,?N,PN,UN,lN,xN,N,N,N,N,N,N,N,N,;N,N,N,N,N,N,N,;N,@N,XN,rN,N,N,N,N,UN,aN,sN,~N,N,UN,gN,N,N,N,N,2N,CN,TN,lN, N, N,N,N,N,N,N,"YN,&pN,(N,. N,2 N,8."N,;@"N,A#N,F#N,H#N,K#N,M#N,OE$N,R^$N,S}$N,V$N,X$N,]$N,^$N,_$N,a$N,c$N,d$N,f%N,h%N,k,%N,oD%N,pU%N,ql%N,s%N,v%N,w%N,z%N,}%N,9&N,I&N,a&N,m&N,&N,&N,&N,&N,'N,'N,/'N,'N,'N,'N,'N,'N,'N,'N,(N,(N,(N,(N,(N,(N,(N, )N,#)N,@)N,Q)N,o)N,)N,)N,)N,)N,)N,)N, *N,#*N,b*N,*N,*N,*N,*N,*N,+N,+N,%+N,5+N,E+N,U+N,e+N,u+N,+N,+N,+N,+N,+N,(,N, 2,N, >,N, V,N,m,N,,N,,N,,N,,N,,N,-N,!-N,E-N,!\-N,"z-N,$-N,'-N,,-N,.-N,/-N,1 .N,5 .N,6Q.N,8h.N,>z.N,>.N,@.N,B.N,D.N,F.N,H.N,I.N,J$/N,K5/N,PK/N,R/N,S/N,T/N,U/N,]/N,^0N,`.0N,bU0N,dy0N,p0N,|0N,~1N,+1N,1N,1N,1N,2N,2N,@2N,R2N,d2N,{2N,2N,2N,2N,2N,3N,&3N,+3N,K3N,d3N,i3N,z3N,3N,3N,3N,3N,3N,3N,4N,4N,;4N,M4N,_4N,q4N,4N,4N,4N,4N,5N,5N,85N,\5N,z5N,5N,5N,5N,6N,06N,b6N,6N,6N,6N, 7N,!7N, 7N,%7 7N,-7N,07N,47N,g8N,i8N,$8N,48gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmgJ|J|32J|5IJ|6vJ|7J|8J|:ܝJ|AJ|HLJ|JcJ|KJ|PJ|RJ|Z%J|[2J|dVJ|fyJ|hJ|iٟJ|jJ|k-J|lWJ|uJ|vJ|xƠJ||J|J|TJ|J|آJ|J|J|BJ|J|J|ʣJ|J|J|6J|J|J|ФJ|J|J|4J|`J||J|J|J|)J|-Zl!OlSǬlZl[l\#l]Jl_\l`lflklolplr2lw^lywl{l|Ӯl}lll?l_lllll4lOl|llȰlll4l`lllʱlܱlll.lIlvlllʲlll#<l(^l*xl-l.l0l6l4lE4lFFlHXlJlSȴlVlYlZFl\KlalelhliӵlmlnlpluKlx|l{l|lll%l*lClglllѷlll!l'l:lllll l?lWlolll)l.lGlkllϺll%lCltll#l$1 l& l(0l)kl+Ҽl.l1l4l7l?CPC~zCCC C$CICZCdCvCCCCCCCCC?C^C}CCCCCCPCVChC C C  C0CICbCCCCCCC"HC)C=C>C?CCCDCE9CFLCJaCMsCNCOCPCQCRCS CU*CVBCWZCXrCYCZC[C`CaCb$Cf6CrmCsCtC{"ChCCCSCVCY+C\;CbKCebCiqCllH lHlH(lHRlH|lHlHlHlH$lH"NlH(lH)lH+lH-lH/lH0"lH3UlH6|lH8lH;lH<lH=lH>lH?lH@-lHAElHC]lHDlHElHFlHGlHH%lHKMlHLelHM}lHNlHPlHQlHRlHS%lHVMlHW_lHXlHXlHXlHXlHZlH[lH]&lH_9lHbKlHd^lHfplHglHhlHilHjlHklHp lHq#lHr;lHtHlHyZlH~slHlHlHlHlHlHlHlH lH,lH_lHrlHlHlHlHlHlHlHlHlH;lHSlHrlHlHlHlHlHlHlHlHlH.lHGlH^lHylHlHlHlHlH lH!lH3lHDlHelHwlHlHlHlHlHlH2lHIlHalHylHlHlHlHlHlHlHlHBlHjlHqlHlHlHlHlH ll!>l#Pl$jl+l,l2l<2l=Il?[l@lAlBl l2(f(L(N(O(P(QF(Rm(S(T(U(]B(^`(g(h(n(o(p%(q7(rI(s[(tw(u(w(y({(}(((!(9(K(](t((((((((($(G(q((((( (g((((( ("($%(EB V &g(y),354Y6v789;>@A*B0DUFzHJLMQST5ZS\y`agm1nNtvyz}=~[%DhntUs}7d@g2b"RN,s N,p N,t N,v' N,wG N,xY N,yk N,r N, N, N, N, N, N, N,0 N,I N,[ N,s N, N, N, N, N,N,DN,nN,N,N,N,N,AN,YN,qN,N,N,N,N,N,(N,UN,sN,N,N,N,N,.N,N,N,N,N,N,N,N,>N,vN,N,N,N,N, N, 'N,9N,gN,N,N,N,N,N,!N,#N,%N,/N,1 N,22N,7HN,8fN,:N,;N,<N,FN,GN,IN,JN,L-N,NLN,OXN,PN,RN,SN,TN,[N,g9N,hJN,khN,mN,qN,zN,{N,}N, N,!N,-N,?N,PN,UN,lN,xN,N,N,N,N,N,N,N,N,;N,N,N,N,N,N,N,;N,@N,XN,rN,N,N,N,N,UN,aN,sN,~N,N,UN,gN,N,N,N,N,2N,CN,TN,lN, N, N,N,N,N,N,N,"YN,&pN,(N,. N,2 N,8."N,;@"N,A#N,F#N,H#N,K#N,M#N,OE$N,R^$N,S}$N,V$N,X$N,]$N,^$N,_$N,a$N,c$N,d$N,f%N,h%N,k,%N,oD%N,pU%N,ql%N,s%N,v%N,w%N,z%N,}%N,9&N,I&N,a&N,m&N,&N,&N,&N,&N,'N,'N,/'N,'N,'N,'N,'N,'N,'N,'N,(N,(N,(N,(N,(N,(N,(N, )N,#)N,@)N,Q)N,o)N,)N,)N,)N,)N,)N,)N, *N,#*N,b*N,*N,*N,*N,*N,*N,+N,+N,%+N,5+N,E+N,U+N,e+N,u+N,+N,+N,+N,+N,+N,(,N, 2,N, >,N, V,N,m,N,,N,,N,,N,,N,,N,-N,!-N,E-N,!\-N,"z-N,$-N,'-N,,-N,.-N,/-N,1 .N,5 .N,6Q.N,8h.N,>z.N,>.N,@.N,B.N,D.N,F.N,H.N,I.N,J$/N,K5/N,PK/N,R/N,S/N,T/N,U/N,]/N,^0N,`.0N,bU0N,dy0N,p0N,|0N,~1N,+1N,1N,1N,1N,2N,2N,@2N,R2N,d2N,{2N,2N,2N,2N,2N,3N,&3N,+3N,K3N,d3N,i3N,z3N,3N,3N,3N,3N,3N,3N,4N,4N,;4N,M4N,_4N,q4N,4N,4N,4N,4N,5N,5N,85N,\5N,z5N,5N,5N,5N,6N,06N,b6N,6N,6N,6N, 7N,!7N, 7N,%7 7N,-7N,07N,47N,g8N,i8N,$8N,48BAAAAB?B)hB+B,B-B.B/C0C1@C2XC6nC7C:C;C<C=DGBDODPDQDRDSE[RE\qE]E^EfEgEjFl$Fm0FoBFpnFrFrFsFtFu Gw5GyHGz_G{qGGGG H_HHHI9IQIIIIIIIJ JFJKJJJJJK>KbKzKKKKKL%L=LWLvLLLLM.M3MaMMMN-NJNbNNNNN N O O 4OQOvOOOOO P!P"5P#MP$eP%}P'P/P1P2P<&QDWQFiQGzQHQJQRQZQ[R['RcYRk}RiRtR}R{S=SmSSSSSTgTTTTT UU4U\UnUUUUVoVVVVVWW,WJW}WWWWX@X YX rX|XXXXXYY(@Y)QY1Y2Y:YBYDZE/ZHLZJdZKZLZMZNZO[WB[_f[`x[b[c[e\hP\iq\j\]\r\s\{#]|>]s]]]]]!]]' ^(^-0^2C^7S^<c^As^U^Z^_^d^i^n^s^x _~_/_?_O___o__________`\`q/`v?`{O`_`o``````````aa/aXaaaaa%bNbwb bb'cOcgǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmgJ|J|32J|5IJ|6vJ|7J|8J|:ܝJ|AJ|HLJ|JcJ|KJ|PJ|RJ|Z%J|[2J|dVJ|fyJ|hJ|iٟJ|jJ|k-J|lWJ|uJ|vJ|xƠJ||J|J|TJ|J|آJ|J|J|BJ|J|J|ʣJ|J|J|6J|J|J|ФJ|J|J|4J|`J||J|J|J|)J|-Zl!OlSǬlZl[l\#l]Jl_\l`lflklolplr2lw^lywl{l|Ӯl}lll?l_lllll4lOl|llȰlll4l`lllʱlܱlll.lIlvlllʲlll#<l(^l*xl-l.l0l6l4lE4lFFlHXlJlSȴlVlYlZFl\KlalelhliӵlmlnlpluKlx|l{l|lll%l*lClglllѷlll!l'l:lllll l?lWlolll)l.lGlkllϺll%lCltll#l$1 l& l(0l)kl+Ҽl.l1l4l7l?CPC~zCCC C$CICZCdCvCCCCCCCCC?C^C}CCCCCCPCVChC C C  C0CICbCCCCCCC"HC)C=C>C?CCCDCE9CFLCJaCMsCNCOCPCQCRCS CU*CVBCWZCXrCYCZC[C`CaCb$Cf6CrmCsCtC{"ChCCCSCVCY+C\;CbKCebCiqCllH lHlH(lHRlH|lHlHlHlH$lH"NlH(lH)lH+lH-lH/lH0"lH3UlH6|lH8lH;lH<lH=lH>lH?lH@-lHAElHC]lHDlHElHFlHGlHH%lHKMlHLelHM}lHNlHPlHQlHRlHS%lHVMlHW_lHXlHXlHXlHXlHZlH[lH]&lH_9lHbKlHd^lHfplHglHhlHilHjlHklHp lHq#lHr;lHtHlHyZlH~slHlHlHlHlHlHlHlH lH,lH_lHrlHlHlHlHlHlHlHlHlH;lHSlHrlHlHlHlHlHlHlHlHlH.lHGlH^lHylHlHlHlHlH lH!lH3lHDlHelHwlHlHlHlHlHlH2lHIlHalHylHlHlHlHlHlHlHlHBlHjlHqlHlHlHlHlH ll!>l#Pl$jl+l,l2l<2l=Il?[l@lAlBl l2(f(L(N(O(P(QF(Rm(S(T(U(]B(^`(g(h(n(o(p%(q7(rI(s[(tw(u(w(y({(}(((!(9(K(](t((((((((($(G(q((((( (g((((( ("($%(EB V &g(y),354Y6v789;>@A*B0DUFzHJLMQST5ZS\y`agm1nNtvyz}=~[%DhntUs}7d@g2b"RN,s N,p N,t N,v' N,wG N,xY N,yk N,r N, N, N, N, N, N, N,0 N,I N,[ N,s N, N, N, N, N,N,DN,nN,N,N,N,N,AN,YN,qN,N,N,N,N,N,(N,UN,sN,N,N,N,N,.N,N,N,N,N,N,N,N,>N,vN,N,N,N,N, N, 'N,9N,gN,N,N,N,N,N,!N,#N,%N,/N,1 N,22N,7HN,8fN,:N,;N,<N,FN,GN,IN,JN,L-N,NLN,OXN,PN,RN,SN,TN,[N,g9N,hJN,khN,mN,qN,zN,{N,}N, N,!N,-N,?N,PN,UN,lN,xN,N,N,N,N,N,N,N,N,;N,N,N,N,N,N,N,;N,@N,XN,rN,N,N,N,N,UN,aN,sN,~N,N,UN,gN,N,N,N,N,2N,CN,TN,lN, N, N,N,N,N,N,N,"YN,&pN,(N,. N,2 N,8."N,;@"N,A#N,F#N,H#N,K#N,M#N,OE$N,R^$N,S}$N,V$N,X$N,]$N,^$N,_$N,a$N,c$N,d$N,f%N,h%N,k,%N,oD%N,pU%N,ql%N,s%N,v%N,w%N,z%N,}%N,9&N,I&N,a&N,m&N,&N,&N,&N,&N,'N,'N,/'N,'N,'N,'N,'N,'N,'N,'N,(N,(N,(N,(N,(N,(N,(N, )N,#)N,@)N,Q)N,o)N,)N,)N,)N,)N,)N,)N, *N,#*N,b*N,*N,*N,*N,*N,*N,+N,+N,%+N,5+N,E+N,U+N,e+N,u+N,+N,+N,+N,+N,+N,(,N, 2,N, >,N, V,N,m,N,,N,,N,,N,,N,,N,-N,!-N,E-N,!\-N,"z-N,$-N,'-N,,-N,.-N,/-N,1 .N,5 .N,6Q.N,8h.N,>z.N,>.N,@.N,B.N,D.N,F.N,H.N,I.N,J$/N,K5/N,PK/N,R/N,S/N,T/N,U/N,]/N,^0N,`.0N,bU0N,dy0N,p0N,|0N,~1N,+1N,1N,1N,1N,2N,2N,@2N,R2N,d2N,{2N,2N,2N,2N,2N,3N,&3N,+3N,K3N,d3N,i3N,z3N,3N,3N,3N,3N,3N,3N,4N,4N,;4N,M4N,_4N,q4N,4N,4N,4N,4N,5N,5N,85N,\5N,z5N,5N,5N,5N,6N,06N,b6N,6N,6N,6N, 7N,!7N, 7N,%7 7N,-7N,07N,47N,g8N,i8N,$8N,48BAAAAB?B)hB+B,B-B.B/C0C1@C2XC6nC7C:C;C<C=DGBDODPDQDRDSE[RE\qE]E^EfEgEjFl$Fm0FoBFpnFrFrFsFtFu Gw5GyHGz_G{qGGGG H_HHHI9IQIIIIIIIJ JFJKJJJJJK>KbKzKKKKKL%L=LWLvLLLLM.M3MaMMMN-NJNbNNNNN N O O 4OQOvOOOOO P!P"5P#MP$eP%}P'P/P1P2P<&QDWQFiQGzQHQJQRQZQ[R['RcYRk}RiRtR}R{S=SmSSSSSTgTTTTT UU4U\UnUUUUVoVVVVVWW,WJW}WWWWX@X YX rX|XXXXXYY(@Y)QY1Y2Y:YBYDZE/ZHLZJdZKZLZMZNZO[WB[_f[`x[b[c[e\hP\iq\j\]\r\s\{#]|>]s]]]]]!]]' ^(^-0^2C^7S^<c^As^U^Z^_^d^i^n^s^x _~_/_?_O___o__________`\`q/`v?`{O`_`o``````````aa/aXaaaaa%bNbwb bb'cOc h Gh qh wh h h h h  i .i #Ii %ki 'i +i ,i .i /$j 0Ij oj 4j 5j 6j 7jgǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmgJ|J|32J|5IJ|6vJ|7J|8J|:ܝJ|AJ|HLJ|JcJ|KJ|PJ|RJ|Z%J|[2J|dVJ|fyJ|hJ|iٟJ|jJ|k-J|lWJ|uJ|vJ|xƠJ||J|J|TJ|J|آJ|J|J|BJ|J|J|ʣJ|J|J|6J|J|J|ФJ|J|J|4J|`J||J|J|J|)J|-Zl!OlSǬlZl[l\#l]Jl_\l`lflklolplr2lw^lywl{l|Ӯl}lll?l_lllll4lOl|llȰlll4l`lllʱlܱlll.lIlvlllʲlll#<l(^l*xl-l.l0l6l4lE4lFFlHXlJlSȴlVlYlZFl\KlalelhliӵlmlnlpluKlx|l{l|lll%l*lClglllѷlll!l'l:lllll l?lWlolll)l.lGlkllϺll%lCltll#l$1 l& l(0l)kl+Ҽl.l1l4l7l?CPC~zCCC C$CICZCdCvCCCCCCCCC?C^C}CCCCCCPCVChC C C  C0CICbCCCCCCC"HC)C=C>C?CCCDCE9CFLCJaCMsCNCOCPCQCRCS CU*CVBCWZCXrCYCZC[C`CaCb$Cf6CrmCsCtC{"ChCCCSCVCY+C\;CbKCebCiqCllH lHlH(lHRlH|lHlHlHlH$lH"NlH(lH)lH+lH-lH/lH0"lH3UlH6|lH8lH;lH<lH=lH>lH?lH@-lHAElHC]lHDlHElHFlHGlHH%lHKMlHLelHM}lHNlHPlHQlHRlHS%lHVMlHW_lHXlHXlHXlHXlHZlH[lH]&lH_9lHbKlHd^lHfplHglHhlHilHjlHklHp lHq#lHr;lHtHlHyZlH~slHlHlHlHlHlHlHlH lH,lH_lHrlHlHlHlHlHlHlHlHlH;lHSlHrlHlHlHlHlHlHlHlHlH.lHGlH^lHylHlHlHlHlH lH!lH3lHDlHelHwlHlHlHlHlHlH2lHIlHalHylHlHlHlHlHlHlHlHBlHjlHqlHlHlHlHlH ll!>l#Pl$jl+l,l2l<2l=Il?[l@lAlBl l2(f(L(N(O(P(QF(Rm(S(T(U(]B(^`(g(h(n(o(p%(q7(rI(s[(tw(u(w(y({(}(((!(9(K(](t((((((((($(G(q((((( (g((((( ("($%(EB V &g(y),354Y6v789;>@A*B0DUFzHJLMQST5ZS\y`agm1nNtvyz}=~[%DhntUs}7d@g2b"RN,s N,p N,t N,v' N,wG N,xY N,yk N,r N, N, N, N, N, N, N,0 N,I N,[ N,s N, N, N, N, N,N,DN,nN,N,N,N,N,AN,YN,qN,N,N,N,N,N,(N,UN,sN,N,N,N,N,.N,N,N,N,N,N,N,N,>N,vN,N,N,N,N, N, 'N,9N,gN,N,N,N,N,N,!N,#N,%N,/N,1 N,22N,7HN,8fN,:N,;N,<N,FN,GN,IN,JN,L-N,NLN,OXN,PN,RN,SN,TN,[N,g9N,hJN,khN,mN,qN,zN,{N,}N, N,!N,-N,?N,PN,UN,lN,xN,N,N,N,N,N,N,N,N,;N,N,N,N,N,N,N,;N,@N,XN,rN,N,N,N,N,UN,aN,sN,~N,N,UN,gN,N,N,N,N,2N,CN,TN,lN, N, N,N,N,N,N,N,"YN,&pN,(N,. N,2 N,8."N,;@"N,A#N,F#N,H#N,K#N,M#N,OE$N,R^$N,S}$N,V$N,X$N,]$N,^$N,_$N,a$N,c$N,d$N,f%N,h%N,k,%N,oD%N,pU%N,ql%N,s%N,v%N,w%N,z%N,}%N,9&N,I&N,a&N,m&N,&N,&N,&N,&N,'N,'N,/'N,'N,'N,'N,'N,'N,'N,'N,(N,(N,(N,(N,(N,(N,(N, )N,#)N,@)N,Q)N,o)N,)N,)N,)N,)N,)N,)N, *N,#*N,b*N,*N,*N,*N,*N,*N,+N,+N,%+N,5+N,E+N,U+N,e+N,u+N,+N,+N,+N,+N,+N,(,N, 2,N, >,N, V,N,m,N,,N,,N,,N,,N,,N,-N,!-N,E-N,!\-N,"z-N,$-N,'-N,,-N,.-N,/-N,1 .N,5 .N,6Q.N,8h.N,>z.N,>.N,@.N,B.N,D.N,F.N,H.N,I.N,J$/N,K5/N,PK/N,R/N,S/N,T/N,U/N,]/N,^0N,`.0N,bU0N,dy0N,p0N,|0N,~1N,+1N,1N,1N,1N,2N,2N,@2N,R2N,d2N,{2N,2N,2N,2N,2N,3N,&3N,+3N,K3N,d3N,i3N,z3N,3N,3N,3N,3N,3N,3N,4N,4N,;4N,M4N,_4N,q4N,4N,4N,4N,4N,5N,5N,85N,\5N,z5N,5N,5N,5N,6N,06N,b6N,6N,6N,6N, 7N,!7N, 7N,%7 7N,-7N,07N,47N,g8N,i8N,$8N,48BAAAAB?B)hB+B,B-B.B/C0C1@C2XC6nC7C:C;C<C=DGBDODPDQDRDSE[RE\qE]E^EfEgEjFl$Fm0FoBFpnFrFrFsFtFu Gw5GyHGz_G{qGGGG H_HHHI9IQIIIIIIIJ JFJKJJJJJK>KbKzKKKKKL%L=LWLvLLLLM.M3MaMMMN-NJNbNNNNN N O O 4OQOvOOOOO P!P"5P#MP$eP%}P'P/P1P2P<&QDWQFiQGzQHQJQRQZQ[R['RcYRk}RiRtR}R{S=SmSSSSSTgTTTTT UU4U\UnUUUUVoVVVVVWW,WJW}WWWWX@X YX rX|XXXXXYY(@Y)QY1Y2Y:YBYDZE/ZHLZJdZKZLZMZNZO[WB[_f[`x[b[c[e\hP\iq\j\]\r\s\{#]|>]s]]]]]!]]' ^(^-0^2C^7S^<c^As^U^Z^_^d^i^n^s^x _~_/_?_O___o__________`\`q/`v?`{O`_`o``````````aa/aXaaaaa%bNbwb bb'cOc h Gh qh wh h h h h  i .i #Ii %ki 'i +i ,i .i /$j 0Ij oj 4j 5j 6j 7j_gn_go_g0o_g[o_gmo_g"o_g#o_g$o_g$o_g'o_g(o_g*o_g,(p_g/Bp_g0np_g1p_g1p_g3p_g4p_g5p_g6p_g8q_g9(q_g:=q_g;Rq_g=gq_g>zq_g?q_g@q_gBq_gCq_gEq_gFq_gHq_gI r_gKr_gL9r_gNYr_gSr_gVr_gWr_gXr_gX s_gZs_gaXs_gc_s_gdes_gfs_ggs_gks_gms_gos_gps_gr t_gt%t_gu@t_g~t_gt_gt_gt_gt_gt_gt_gEu_g]u_gqu_gu_gu_gu_gu_gu_gv_g7v_gVv_gjv_gv_gv_gv_gw_gw_g$w_gDw_gWw_gpw_gw_gw_gx_gx_g(x_g5x_gPx_gwx_gx_gx_gx_gx_gy_g2y_gLy_gxy_gy_gy_gy_gy_gy_gy_gz_g2z_gGz_g\z_gqz_gz_gz_gz_gz_gz_gz_gz_g{_g{_g #{_g C{_g c{_g|{_g{_g{_g{_g{_g |_g(|_gC|_g$m|_g'|_g(|_g)|_g)|_g,|_g/ }_g1J}_g2P}_g3\}_g4n}_g5}_g6}_g7}_g:}_gD:~_gEL~_gFj~_gG~_gH~_gI~_gJ~_gK~_gL_gMD_gNl_gP_gQ_gR_gS_gU_gV gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmgJ|J|32J|5IJ|6vJ|7J|8J|:ܝJ|AJ|HLJ|JcJ|KJ|PJ|RJ|Z%J|[2J|dVJ|fyJ|hJ|iٟJ|jJ|k-J|lWJ|uJ|vJ|xƠJ||J|J|TJ|J|آJ|J|J|BJ|J|J|ʣJ|J|J|6J|J|J|ФJ|J|J|4J|`J||J|J|J|)J|-Zl!OlSǬlZl[l\#l]Jl_\l`lflklolplr2lw^lywl{l|Ӯl}lll?l_lllll4lOl|llȰlll4l`lllʱlܱlll.lIlvlllʲlll#<l(^l*xl-l.l0l6l4lE4lFFlHXlJlSȴlVlYlZFl\KlalelhliӵlmlnlpluKlx|l{l|lll%l*lClglllѷlll!l'l:lllll l?lWlolll)l.lGlkllϺll%lCltll#l$1 l& l(0l)kl+Ҽl.l1l4l7l?CPC~zCCC C$CICZCdCvCCCCCCCCC?C^C}CCCCCCPCVChC C C  C0CICbCCCCCCC"HC)C=C>C?CCCDCE9CFLCJaCMsCNCOCPCQCRCS CU*CVBCWZCXrCYCZC[C`CaCb$Cf6CrmCsCtC{"ChCCCSCVCY+C\;CbKCebCiqCllH lHlH(lHRlH|lHlHlHlH$lH"NlH(lH)lH+lH-lH/lH0"lH3UlH6|lH8lH;lH<lH=lH>lH?lH@-lHAElHC]lHDlHElHFlHGlHH%lHKMlHLelHM}lHNlHPlHQlHRlHS%lHVMlHW_lHXlHXlHXlHXlHZlH[lH]&lH_9lHbKlHd^lHfplHglHhlHilHjlHklHp lHq#lHr;lHtHlHyZlH~slHlHlHlHlHlHlHlH lH,lH_lHrlHlHlHlHlHlHlHlHlH;lHSlHrlHlHlHlHlHlHlHlHlH.lHGlH^lHylHlHlHlHlH lH!lH3lHDlHelHwlHlHlHlHlHlH2lHIlHalHylHlHlHlHlHlHlHlHBlHjlHqlHlHlHlHlH ll!>l#Pl$jl+l,l2l<2l=Il?[l@lAlBl l2(f(L(N(O(P(QF(Rm(S(T(U(]B(^`(g(h(n(o(p%(q7(rI(s[(tw(u(w(y({(}(((!(9(K(](t((((((((($(G(q((((( (g((((( ("($%(EB V &g(y),354Y6v789;>@A*B0DUFzHJLMQST5ZS\y`agm1nNtvyz}=~[%DhntUs}7d@g2b"RN,s N,p N,t N,v' N,wG N,xY N,yk N,r N, N, N, N, N, N, N,0 N,I N,[ N,s N, N, N, N, N,N,DN,nN,N,N,N,N,AN,YN,qN,N,N,N,N,N,(N,UN,sN,N,N,N,N,.N,N,N,N,N,N,N,N,>N,vN,N,N,N,N, N, 'N,9N,gN,N,N,N,N,N,!N,#N,%N,/N,1 N,22N,7HN,8fN,:N,;N,<N,FN,GN,IN,JN,L-N,NLN,OXN,PN,RN,SN,TN,[N,g9N,hJN,khN,mN,qN,zN,{N,}N, N,!N,-N,?N,PN,UN,lN,xN,N,N,N,N,N,N,N,N,;N,N,N,N,N,N,N,;N,@N,XN,rN,N,N,N,N,UN,aN,sN,~N,N,UN,gN,N,N,N,N,2N,CN,TN,lN, N, N,N,N,N,N,N,"YN,&pN,(N,. N,2 N,8."N,;@"N,A#N,F#N,H#N,K#N,M#N,OE$N,R^$N,S}$N,V$N,X$N,]$N,^$N,_$N,a$N,c$N,d$N,f%N,h%N,k,%N,oD%N,pU%N,ql%N,s%N,v%N,w%N,z%N,}%N,9&N,I&N,a&N,m&N,&N,&N,&N,&N,'N,'N,/'N,'N,'N,'N,'N,'N,'N,'N,(N,(N,(N,(N,(N,(N,(N, )N,#)N,@)N,Q)N,o)N,)N,)N,)N,)N,)N,)N, *N,#*N,b*N,*N,*N,*N,*N,*N,+N,+N,%+N,5+N,E+N,U+N,e+N,u+N,+N,+N,+N,+N,+N,(,N, 2,N, >,N, V,N,m,N,,N,,N,,N,,N,,N,-N,!-N,E-N,!\-N,"z-N,$-N,'-N,,-N,.-N,/-N,1 .N,5 .N,6Q.N,8h.N,>z.N,>.N,@.N,B.N,D.N,F.N,H.N,I.N,J$/N,K5/N,PK/N,R/N,S/N,T/N,U/N,]/N,^0N,`.0N,bU0N,dy0N,p0N,|0N,~1N,+1N,1N,1N,1N,2N,2N,@2N,R2N,d2N,{2N,2N,2N,2N,2N,3N,&3N,+3N,K3N,d3N,i3N,z3N,3N,3N,3N,3N,3N,3N,4N,4N,;4N,M4N,_4N,q4N,4N,4N,4N,4N,5N,5N,85N,\5N,z5N,5N,5N,5N,6N,06N,b6N,6N,6N,6N, 7N,!7N, 7N,%7 7N,-7N,07N,47N,g8N,i8N,$8N,48BAAAAB?B)hB+B,B-B.B/C0C1@C2XC6nC7C:C;C<C=DGBDODPDQDRDSE[RE\qE]E^EfEgEjFl$Fm0FoBFpnFrFrFsFtFu Gw5GyHGz_G{qGGGG H_HHHI9IQIIIIIIIJ JFJKJJJJJK>KbKzKKKKKL%L=LWLvLLLLM.M3MaMMMN-NJNbNNNNN N O O 4OQOvOOOOO P!P"5P#MP$eP%}P'P/P1P2P<&QDWQFiQGzQHQJQRQZQ[R['RcYRk}RiRtR}R{S=SmSSSSSTgTTTTT UU4U\UnUUUUVoVVVVVWW,WJW}WWWWX@X YX rX|XXXXXYY(@Y)QY1Y2Y:YBYDZE/ZHLZJdZKZLZMZNZO[WB[_f[`x[b[c[e\hP\iq\j\]\r\s\{#]|>]s]]]]]!]]' ^(^-0^2C^7S^<c^As^U^Z^_^d^i^n^s^x _~_/_?_O___o__________`\`q/`v?`{O`_`o``````````aa/aXaaaaa%bNbwb bb'cOc h Gh qh wh h h h h  i .i #Ii %ki 'i +i ,i .i /$j 0Ij oj 4j 5j 6j 7j_gn_go_g0o_g[o_gmo_g"o_g#o_g$o_g$o_g'o_g(o_g*o_g,(p_g/Bp_g0np_g1p_g1p_g3p_g4p_g5p_g6p_g8q_g9(q_g:=q_g;Rq_g=gq_g>zq_g?q_g@q_gBq_gCq_gEq_gFq_gHq_gI r_gKr_gL9r_gNYr_gSr_gVr_gWr_gXr_gX s_gZs_gaXs_gc_s_gdes_gfs_ggs_gks_gms_gos_gps_gr t_gt%t_gu@t_g~t_gt_gt_gt_gt_gt_gt_gEu_g]u_gqu_gu_gu_gu_gu_gu_gv_g7v_gVv_gjv_gv_gv_gv_gw_gw_g$w_gDw_gWw_gpw_gw_gw_gx_gx_g(x_g5x_gPx_gwx_gx_gx_gx_gx_gy_g2y_gLy_gxy_gy_gy_gy_gy_gy_gy_gz_g2z_gGz_g\z_gqz_gz_gz_gz_gz_gz_gz_gz_g{_g{_g #{_g C{_g c{_g|{_g{_g{_g{_g{_g |_g(|_gC|_g$m|_g'|_g(|_g)|_g)|_g,|_g/ }_g1J}_g2P}_g3\}_g4n}_g5}_g6}_g7}_g:}_gD:~_gEL~_gFj~_gG~_gH~_gI~_gJ~_gK~_gL_gMD_gNl_gP_gQ_gR_gS_gU_gV +2 +2.B+20a+21z+24+25+26+27Ʉ+28+29+2:+2;)+2<A+2=Y+2>q+2?+2@+2A+2Bх+2C+2J+2L3+2ML+2PQ+2Qi+2R+2T+2V+2WÆ+2Y+2[+2\+2^"+2`/+2aG+2cd+2eq+2f+2h+2j+2kˇ+2m+2o+2p +2r*+2t7+2uO+2wl+2~+2+2Ȉ+2͈+2+2+2+2/+2G+2v+2+2+2+2lj+2߉+2+2 +2!+2>+2c+2+2+2+2 +2!+2?+2W+2+2+2Ջ+2+2 +2+2J+2r+2+2ˌ+2+2$+2U+2}+2+2֍+2+2 /+2`+2+2ǎ+2ߎ+2+2+2A+2Y+2 q+2!+2"+2#+2%я+2'+2)+2*$+2+6+2,N+2-f+2.~+2/+20+21Ɛ+22ސ+23+24+25&+2-+2+27+28ߑgǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmgJ|J|32J|5IJ|6vJ|7J|8J|:ܝJ|AJ|HLJ|JcJ|KJ|PJ|RJ|Z%J|[2J|dVJ|fyJ|hJ|iٟJ|jJ|k-J|lWJ|uJ|vJ|xƠJ||J|J|TJ|J|آJ|J|J|BJ|J|J|ʣJ|J|J|6J|J|J|ФJ|J|J|4J|`J||J|J|J|)J|-Zl!OlSǬlZl[l\#l]Jl_\l`lflklolplr2lw^lywl{l|Ӯl}lll?l_lllll4lOl|llȰlll4l`lllʱlܱlll.lIlvlllʲlll#<l(^l*xl-l.l0l6l4lE4lFFlHXlJlSȴlVlYlZFl\KlalelhliӵlmlnlpluKlx|l{l|lll%l*lClglllѷlll!l'l:lllll l?lWlolll)l.lGlkllϺll%lCltll#l$1 l& l(0l)kl+Ҽl.l1l4l7l?CPC~zCCC C$CICZCdCvCCCCCCCCC?C^C}CCCCCCPCVChC C C  C0CICbCCCCCCC"HC)C=C>C?CCCDCE9CFLCJaCMsCNCOCPCQCRCS CU*CVBCWZCXrCYCZC[C`CaCb$Cf6CrmCsCtC{"ChCCCSCVCY+C\;CbKCebCiqCllH lHlH(lHRlH|lHlHlHlH$lH"NlH(lH)lH+lH-lH/lH0"lH3UlH6|lH8lH;lH<lH=lH>lH?lH@-lHAElHC]lHDlHElHFlHGlHH%lHKMlHLelHM}lHNlHPlHQlHRlHS%lHVMlHW_lHXlHXlHXlHXlHZlH[lH]&lH_9lHbKlHd^lHfplHglHhlHilHjlHklHp lHq#lHr;lHtHlHyZlH~slHlHlHlHlHlHlHlH lH,lH_lHrlHlHlHlHlHlHlHlHlH;lHSlHrlHlHlHlHlHlHlHlHlH.lHGlH^lHylHlHlHlHlH lH!lH3lHDlHelHwlHlHlHlHlHlH2lHIlHalHylHlHlHlHlHlHlHlHBlHjlHqlHlHlHlHlH ll!>l#Pl$jl+l,l2l<2l=Il?[l@lAlBl l2(f(L(N(O(P(QF(Rm(S(T(U(]B(^`(g(h(n(o(p%(q7(rI(s[(tw(u(w(y({(}(((!(9(K(](t((((((((($(G(q((((( (g((((( ("($%(EB V &g(y),354Y6v789;>@A*B0DUFzHJLMQST5ZS\y`agm1nNtvyz}=~[%DhntUs}7d@g2b"RN,s N,p N,t N,v' N,wG N,xY N,yk N,r N, N, N, N, N, N, N,0 N,I N,[ N,s N, N, N, N, N,N,DN,nN,N,N,N,N,AN,YN,qN,N,N,N,N,N,(N,UN,sN,N,N,N,N,.N,N,N,N,N,N,N,N,>N,vN,N,N,N,N, N, 'N,9N,gN,N,N,N,N,N,!N,#N,%N,/N,1 N,22N,7HN,8fN,:N,;N,<N,FN,GN,IN,JN,L-N,NLN,OXN,PN,RN,SN,TN,[N,g9N,hJN,khN,mN,qN,zN,{N,}N, N,!N,-N,?N,PN,UN,lN,xN,N,N,N,N,N,N,N,N,;N,N,N,N,N,N,N,;N,@N,XN,rN,N,N,N,N,UN,aN,sN,~N,N,UN,gN,N,N,N,N,2N,CN,TN,lN, N, N,N,N,N,N,N,"YN,&pN,(N,. N,2 N,8."N,;@"N,A#N,F#N,H#N,K#N,M#N,OE$N,R^$N,S}$N,V$N,X$N,]$N,^$N,_$N,a$N,c$N,d$N,f%N,h%N,k,%N,oD%N,pU%N,ql%N,s%N,v%N,w%N,z%N,}%N,9&N,I&N,a&N,m&N,&N,&N,&N,&N,'N,'N,/'N,'N,'N,'N,'N,'N,'N,'N,(N,(N,(N,(N,(N,(N,(N, )N,#)N,@)N,Q)N,o)N,)N,)N,)N,)N,)N,)N, *N,#*N,b*N,*N,*N,*N,*N,*N,+N,+N,%+N,5+N,E+N,U+N,e+N,u+N,+N,+N,+N,+N,+N,(,N, 2,N, >,N, V,N,m,N,,N,,N,,N,,N,,N,-N,!-N,E-N,!\-N,"z-N,$-N,'-N,,-N,.-N,/-N,1 .N,5 .N,6Q.N,8h.N,>z.N,>.N,@.N,B.N,D.N,F.N,H.N,I.N,J$/N,K5/N,PK/N,R/N,S/N,T/N,U/N,]/N,^0N,`.0N,bU0N,dy0N,p0N,|0N,~1N,+1N,1N,1N,1N,2N,2N,@2N,R2N,d2N,{2N,2N,2N,2N,2N,3N,&3N,+3N,K3N,d3N,i3N,z3N,3N,3N,3N,3N,3N,3N,4N,4N,;4N,M4N,_4N,q4N,4N,4N,4N,4N,5N,5N,85N,\5N,z5N,5N,5N,5N,6N,06N,b6N,6N,6N,6N, 7N,!7N, 7N,%7 7N,-7N,07N,47N,g8N,i8N,$8N,48BAAAAB?B)hB+B,B-B.B/C0C1@C2XC6nC7C:C;C<C=DGBDODPDQDRDSE[RE\qE]E^EfEgEjFl$Fm0FoBFpnFrFrFsFtFu Gw5GyHGz_G{qGGGG H_HHHI9IQIIIIIIIJ JFJKJJJJJK>KbKzKKKKKL%L=LWLvLLLLM.M3MaMMMN-NJNbNNNNN N O O 4OQOvOOOOO P!P"5P#MP$eP%}P'P/P1P2P<&QDWQFiQGzQHQJQRQZQ[R['RcYRk}RiRtR}R{S=SmSSSSSTgTTTTT UU4U\UnUUUUVoVVVVVWW,WJW}WWWWX@X YX rX|XXXXXYY(@Y)QY1Y2Y:YBYDZE/ZHLZJdZKZLZMZNZO[WB[_f[`x[b[c[e\hP\iq\j\]\r\s\{#]|>]s]]]]]!]]' ^(^-0^2C^7S^<c^As^U^Z^_^d^i^n^s^x _~_/_?_O___o__________`\`q/`v?`{O`_`o``````````aa/aXaaaaa%bNbwb bb'cOc h Gh qh wh h h h h  i .i #Ii %ki 'i +i ,i .i /$j 0Ij oj 4j 5j 6j 7j_gn_go_g0o_g[o_gmo_g"o_g#o_g$o_g$o_g'o_g(o_g*o_g,(p_g/Bp_g0np_g1p_g1p_g3p_g4p_g5p_g6p_g8q_g9(q_g:=q_g;Rq_g=gq_g>zq_g?q_g@q_gBq_gCq_gEq_gFq_gHq_gI r_gKr_gL9r_gNYr_gSr_gVr_gWr_gXr_gX s_gZs_gaXs_gc_s_gdes_gfs_ggs_gks_gms_gos_gps_gr t_gt%t_gu@t_g~t_gt_gt_gt_gt_gt_gt_gEu_g]u_gqu_gu_gu_gu_gu_gu_gv_g7v_gVv_gjv_gv_gv_gv_gw_gw_g$w_gDw_gWw_gpw_gw_gw_gx_gx_g(x_g5x_gPx_gwx_gx_gx_gx_gx_gy_g2y_gLy_gxy_gy_gy_gy_gy_gy_gy_gz_g2z_gGz_g\z_gqz_gz_gz_gz_gz_gz_gz_gz_g{_g{_g #{_g C{_g c{_g|{_g{_g{_g{_g{_g |_g(|_gC|_g$m|_g'|_g(|_g)|_g)|_g,|_g/ }_g1J}_g2P}_g3\}_g4n}_g5}_g6}_g7}_g:}_gD:~_gEL~_gFj~_gG~_gH~_gI~_gJ~_gK~_gL_gMD_gNl_gP_gQ_gR_gS_gU_gV +2 +2.B+20a+21z+24+25+26+27Ʉ+28+29+2:+2;)+2<A+2=Y+2>q+2?+2@+2A+2Bх+2C+2J+2L3+2ML+2PQ+2Qi+2R+2T+2V+2WÆ+2Y+2[+2\+2^"+2`/+2aG+2cd+2eq+2f+2h+2j+2kˇ+2m+2o+2p +2r*+2t7+2uO+2wl+2~+2+2Ȉ+2͈+2+2+2+2/+2G+2v+2+2+2+2lj+2߉+2+2 +2!+2>+2c+2+2+2+2 +2!+2?+2W+2+2+2Ջ+2+2 +2+2J+2r+2+2ˌ+2+2$+2U+2}+2+2֍+2+2 /+2`+2+2ǎ+2ߎ+2+2+2A+2Y+2 q+2!+2"+2#+2%я+2'+2)+2*$+2+6+2,N+2-f+2.~+2/+20+21Ɛ+22ސ+23+24+25&+2-+2+27+28ߑD!6DDΜDDDD7DVDwDDDD֝DDD@DLDwDDDȞDD3DMDmDyDDDDDDbDlDDDDD D+?D,QD-[D.lD/vD0D1D2D4СDDDEDFDG"DH,DIWDKnDLDRŢDTDVDWDeDf&DgDDi[D{DDʣDգDD8DCDDDDDDDdDDDDǥDD D:D@DLD^DhDzDDDDDʦDԦDڦDD!D2DVDbD}DDȧDD DBDDDۨDDLD D DƩDݩDD)D/D;DEDUDeDDD"D#D$D%D&ҪD'D'D(D)D/+D0DD1XD2~D3D5D6D7ѫD: D;D>3D@cDADCDHDIˬDJլDKDLDM DM(DN-DTDDUPDVZDWdDXvDYDZDZD[D\̭D`DaDm-DxaDzzD|D~DĮDծDD D3D\DDʯDD D7DaDDDODDDӱDD D(D@D`DDɲDDWDcDDDDDDDTDkDDѴDD9D]DbDDDDµDܵDDDHDDDDжDD"DAD `DDѷDDDD!D3D'D.D/D3D4 D5D63D7ED@DDDEDFDH(DJ@DKRDMwDNDPDRϺDSD[ D\\D^bD_DaDbDdĻDfݻDhDiDkDo DpDr$Ds7DuBDvTDzkDDDȼDD D:DFDRDeDkDDDDͽDDDDDD1DDD]DDDDDD D!D;DMD_DDDDD-D7DuDDDDD(D4DUDlDDDEDDD$D'D* D-D3)D68D9GD<ZD?mDB|DEDHDKDNDQDTDWDgDoDw/gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmgJ|J|32J|5IJ|6vJ|7J|8J|:ܝJ|AJ|HLJ|JcJ|KJ|PJ|RJ|Z%J|[2J|dVJ|fyJ|hJ|iٟJ|jJ|k-J|lWJ|uJ|vJ|xƠJ||J|J|TJ|J|آJ|J|J|BJ|J|J|ʣJ|J|J|6J|J|J|ФJ|J|J|4J|`J||J|J|J|)J|-Zl!OlSǬlZl[l\#l]Jl_\l`lflklolplr2lw^lywl{l|Ӯl}lll?l_lllll4lOl|llȰlll4l`lllʱlܱlll.lIlvlllʲlll#<l(^l*xl-l.l0l6l4lE4lFFlHXlJlSȴlVlYlZFl\KlalelhliӵlmlnlpluKlx|l{l|lll%l*lClglllѷlll!l'l:lllll l?lWlolll)l.lGlkllϺll%lCltll#l$1 l& l(0l)kl+Ҽl.l1l4l7l?CPC~zCCC C$CICZCdCvCCCCCCCCC?C^C}CCCCCCPCVChC C C  C0CICbCCCCCCC"HC)C=C>C?CCCDCE9CFLCJaCMsCNCOCPCQCRCS CU*CVBCWZCXrCYCZC[C`CaCb$Cf6CrmCsCtC{"ChCCCSCVCY+C\;CbKCebCiqCllH lHlH(lHRlH|lHlHlHlH$lH"NlH(lH)lH+lH-lH/lH0"lH3UlH6|lH8lH;lH<lH=lH>lH?lH@-lHAElHC]lHDlHElHFlHGlHH%lHKMlHLelHM}lHNlHPlHQlHRlHS%lHVMlHW_lHXlHXlHXlHXlHZlH[lH]&lH_9lHbKlHd^lHfplHglHhlHilHjlHklHp lHq#lHr;lHtHlHyZlH~slHlHlHlHlHlHlHlH lH,lH_lHrlHlHlHlHlHlHlHlHlH;lHSlHrlHlHlHlHlHlHlHlHlH.lHGlH^lHylHlHlHlHlH lH!lH3lHDlHelHwlHlHlHlHlHlH2lHIlHalHylHlHlHlHlHlHlHlHBlHjlHqlHlHlHlHlH ll!>l#Pl$jl+l,l2l<2l=Il?[l@lAlBl l2(f(L(N(O(P(QF(Rm(S(T(U(]B(^`(g(h(n(o(p%(q7(rI(s[(tw(u(w(y({(}(((!(9(K(](t((((((((($(G(q((((( (g((((( ("($%(EB V &g(y),354Y6v789;>@A*B0DUFzHJLMQST5ZS\y`agm1nNtvyz}=~[%DhntUs}7d@g2b"RN,s N,p N,t N,v' N,wG N,xY N,yk N,r N, N, N, N, N, N, N,0 N,I N,[ N,s N, N, N, N, N,N,DN,nN,N,N,N,N,AN,YN,qN,N,N,N,N,N,(N,UN,sN,N,N,N,N,.N,N,N,N,N,N,N,N,>N,vN,N,N,N,N, N, 'N,9N,gN,N,N,N,N,N,!N,#N,%N,/N,1 N,22N,7HN,8fN,:N,;N,<N,FN,GN,IN,JN,L-N,NLN,OXN,PN,RN,SN,TN,[N,g9N,hJN,khN,mN,qN,zN,{N,}N, N,!N,-N,?N,PN,UN,lN,xN,N,N,N,N,N,N,N,N,;N,N,N,N,N,N,N,;N,@N,XN,rN,N,N,N,N,UN,aN,sN,~N,N,UN,gN,N,N,N,N,2N,CN,TN,lN, N, N,N,N,N,N,N,"YN,&pN,(N,. N,2 N,8."N,;@"N,A#N,F#N,H#N,K#N,M#N,OE$N,R^$N,S}$N,V$N,X$N,]$N,^$N,_$N,a$N,c$N,d$N,f%N,h%N,k,%N,oD%N,pU%N,ql%N,s%N,v%N,w%N,z%N,}%N,9&N,I&N,a&N,m&N,&N,&N,&N,&N,'N,'N,/'N,'N,'N,'N,'N,'N,'N,'N,(N,(N,(N,(N,(N,(N,(N, )N,#)N,@)N,Q)N,o)N,)N,)N,)N,)N,)N,)N, *N,#*N,b*N,*N,*N,*N,*N,*N,+N,+N,%+N,5+N,E+N,U+N,e+N,u+N,+N,+N,+N,+N,+N,(,N, 2,N, >,N, V,N,m,N,,N,,N,,N,,N,,N,-N,!-N,E-N,!\-N,"z-N,$-N,'-N,,-N,.-N,/-N,1 .N,5 .N,6Q.N,8h.N,>z.N,>.N,@.N,B.N,D.N,F.N,H.N,I.N,J$/N,K5/N,PK/N,R/N,S/N,T/N,U/N,]/N,^0N,`.0N,bU0N,dy0N,p0N,|0N,~1N,+1N,1N,1N,1N,2N,2N,@2N,R2N,d2N,{2N,2N,2N,2N,2N,3N,&3N,+3N,K3N,d3N,i3N,z3N,3N,3N,3N,3N,3N,3N,4N,4N,;4N,M4N,_4N,q4N,4N,4N,4N,4N,5N,5N,85N,\5N,z5N,5N,5N,5N,6N,06N,b6N,6N,6N,6N, 7N,!7N, 7N,%7 7N,-7N,07N,47N,g8N,i8N,$8N,48BAAAAB?B)hB+B,B-B.B/C0C1@C2XC6nC7C:C;C<C=DGBDODPDQDRDSE[RE\qE]E^EfEgEjFl$Fm0FoBFpnFrFrFsFtFu Gw5GyHGz_G{qGGGG H_HHHI9IQIIIIIIIJ JFJKJJJJJK>KbKzKKKKKL%L=LWLvLLLLM.M3MaMMMN-NJNbNNNNN N O O 4OQOvOOOOO P!P"5P#MP$eP%}P'P/P1P2P<&QDWQFiQGzQHQJQRQZQ[R['RcYRk}RiRtR}R{S=SmSSSSSTgTTTTT UU4U\UnUUUUVoVVVVVWW,WJW}WWWWX@X YX rX|XXXXXYY(@Y)QY1Y2Y:YBYDZE/ZHLZJdZKZLZMZNZO[WB[_f[`x[b[c[e\hP\iq\j\]\r\s\{#]|>]s]]]]]!]]' ^(^-0^2C^7S^<c^As^U^Z^_^d^i^n^s^x _~_/_?_O___o__________`\`q/`v?`{O`_`o``````````aa/aXaaaaa%bNbwb bb'cOc h Gh qh wh h h h h  i .i #Ii %ki 'i +i ,i .i /$j 0Ij oj 4j 5j 6j 7j_gn_go_g0o_g[o_gmo_g"o_g#o_g$o_g$o_g'o_g(o_g*o_g,(p_g/Bp_g0np_g1p_g1p_g3p_g4p_g5p_g6p_g8q_g9(q_g:=q_g;Rq_g=gq_g>zq_g?q_g@q_gBq_gCq_gEq_gFq_gHq_gI r_gKr_gL9r_gNYr_gSr_gVr_gWr_gXr_gX s_gZs_gaXs_gc_s_gdes_gfs_ggs_gks_gms_gos_gps_gr t_gt%t_gu@t_g~t_gt_gt_gt_gt_gt_gt_gEu_g]u_gqu_gu_gu_gu_gu_gu_gv_g7v_gVv_gjv_gv_gv_gv_gw_gw_g$w_gDw_gWw_gpw_gw_gw_gx_gx_g(x_g5x_gPx_gwx_gx_gx_gx_gx_gy_g2y_gLy_gxy_gy_gy_gy_gy_gy_gy_gz_g2z_gGz_g\z_gqz_gz_gz_gz_gz_gz_gz_gz_g{_g{_g #{_g C{_g c{_g|{_g{_g{_g{_g{_g |_g(|_gC|_g$m|_g'|_g(|_g)|_g)|_g,|_g/ }_g1J}_g2P}_g3\}_g4n}_g5}_g6}_g7}_g:}_gD:~_gEL~_gFj~_gG~_gH~_gI~_gJ~_gK~_gL_gMD_gNl_gP_gQ_gR_gS_gU_gV +2 +2.B+20a+21z+24+25+26+27Ʉ+28+29+2:+2;)+2<A+2=Y+2>q+2?+2@+2A+2Bх+2C+2J+2L3+2ML+2PQ+2Qi+2R+2T+2V+2WÆ+2Y+2[+2\+2^"+2`/+2aG+2cd+2eq+2f+2h+2j+2kˇ+2m+2o+2p +2r*+2t7+2uO+2wl+2~+2+2Ȉ+2͈+2+2+2+2/+2G+2v+2+2+2+2lj+2߉+2+2 +2!+2>+2c+2+2+2+2 +2!+2?+2W+2+2+2Ջ+2+2 +2+2J+2r+2+2ˌ+2+2$+2U+2}+2+2֍+2+2 /+2`+2+2ǎ+2ߎ+2+2+2A+2Y+2 q+2!+2"+2#+2%я+2'+2)+2*$+2+6+2,N+2-f+2.~+2/+20+21Ɛ+22ސ+23+24+25&+2-+2+27+28ߑD!6DDΜDDDD7DVDwDDDD֝DDD@DLDwDDDȞDD3DMDmDyDDDDDDbDlDDDDD D+?D,QD-[D.lD/vD0D1D2D4СDDDEDFDG"DH,DIWDKnDLDRŢDTDVDWDeDf&DgDDi[D{DDʣDգDD8DCDDDDDDDdDDDDǥDD D:D@DLD^DhDzDDDDDʦDԦDڦDD!D2DVDbD}DDȧDD DBDDDۨDDLD D DƩDݩDD)D/D;DEDUDeDDD"D#D$D%D&ҪD'D'D(D)D/+D0DD1XD2~D3D5D6D7ѫD: D;D>3D@cDADCDHDIˬDJլDKDLDM DM(DN-DTDDUPDVZDWdDXvDYDZDZD[D\̭D`DaDm-DxaDzzD|D~DĮDծDD D3D\DDʯDD D7DaDDDODDDӱDD D(D@D`DDɲDDWDcDDDDDDDTDkDDѴDD9D]DbDDDDµDܵDDDHDDDDжDD"DAD `DDѷDDDD!D3D'D.D/D3D4 D5D63D7ED@DDDEDFDH(DJ@DKRDMwDNDPDRϺDSD[ D\\D^bD_DaDbDdĻDfݻDhDiDkDo DpDr$Ds7DuBDvTDzkDDDȼDD D:DFDRDeDkDDDDͽDDDDDD1DDD]DDDDDD D!D;DMD_DDDDD-D7DuDDDDD(D4DUDlDDDEDDD$D'D* D-D3)D68D9GD<ZD?mDB|DEDHDKDNDQDTDWDgDoDw/}]}C}G}H;}IL}El}T}_}j}u7}vI}wS}xd}yn}z}{}|}}}~}}}"}9}S}Y}}}}}}}}}F}}}}} }Y}t}}}}"}:}L}q}}}}},}<}Y} i}&y})gǮ׮   ' 7% Kv9*D*%m*(**ٷ*+*0*3*4Ӹ*5*5*8*:9*;W*<n*>*@ӹ*A*FK*GW*Ju*K*L*Oٺ*S*X%*Y?*\k*`*b̻*d*f2*hd*q˼* ****:W8p? ?,?E??"P?#w?'?+?,?-1?0I?1h?4?5?6?9?:?;,?>8?@R?AX?B?C?D?E:?Gg?H?K?L?M?N?O?T??UY?Vx?X~?Y?\?`?a?b?c?d??eR?g?k?m?o'?pa?q?r?s?v?w?x!?y;?zZ?~y???? ?:?U?\??????E?z??? ?$???c?????-?[?c?s??8v| |"<|#U|$|%|(|)|-|/|04|2F|3e|<$|=K|?q|@|A|B|C|D/|Fx|G|I|J|K|L|M |NM|Ol|Q|R|T|Z|[|\ |]!|^G|_m|`|b|d|e|g|h|lR|ml|q|uB|vW|y\|zq|}v|~||||||||5|I|N|l|||||||||||||| ||-|=|M..(.y.... .!.#./.+Np pppppp p .n .n n +n Kn kn n n %n /n 97n Bn Kn Tn Yn Wn bJn kln tn yn wn n +n =n Pn n n n n 1n Cn pn n n n n  n Gn wn n n n n n n n 7n zn n n n n 2n Qn bn hn n n n 01n 1Cn 3Un 4gn 6yn 8n In Jn L n Mn O1n QJn S]n `n an on p#n qDn ren sn n n .n Rn cn un n n n n n n >n n n n n :n Fn yn n n n # n A n r n ~ n  n  n  n  n 4 n m n  n  n  n &D n '] n / n 1 n 5 n 7 n 9 n ; n > n @ n D7 n Kh n Ms n Ny n P n R n S n T n W n Y n [/ n \H n ]Z n k n l n n n p n t n wn y n Vn bn tn n n n n n 4n Ln ^n dn n n n n n n n Hn zn n n n n n n Kn in n n n n )n Gn sn n n n n 3n _n }n n n n n (n 4n Fn Xn ln n n n n n /n Zn fn xn n n !n #n )n */n +An -Hn .`n /n 1n 3n 4n 6n =n >n @$n B8n EVn H]n Iun Kn Zn \n _n an en fn h)n k=n obn p{n un vn xn yn zn {n | n ~n "n {n n n n n n  n "n 4n Gn Nn _n xn n n n 4n 92# n Bn EGn GWn Hjn Kn n d d# d$ d+!d39!d4K!d<t!d=!d!R #R"$R,$RC$Ra$R$R$R $R $R!$R%R)z%R*%R+%R+%R,%R*%R4&R5&R53&R6Q&R4q&R>&R?&R?&R@&R>&RH*'RI4'RIK'RJi'RH'RR'RS(RS(RT5(RRU(R\(R](R](R^(R\(Rf)Rg)Rg/)RhM)Rfm)Rp)Rq)Rq)Rr)Rp)R~f*Rp*R*R*R~*-*\-,g-.-0-2-4-7.9.;,.>D.DY.Fd.T.U.V.[.\:/^A/_p/['64['~4['4['5['E5['5['5['6['96['#6['@7['QH8['a8N(=Nv=N~>NC>N>N>N>N>N>N!?N??Ns?N?N?N?N?N?N?N@N<@N\@N@N@N@N@N"ANMAN|ANANANANANANAN BNBN-BNDBN\BNBNBNBNBNCNCN3CN^CNCN CN#CN.CN0DN1$DN2*DN4ADNImDNKDNLDNNDNQDNUDNW ENe=EN.qEN3EVEN;EN>EN?ENNENUFNZFNkFJQrKTKUKWKXKaLbCLeLkLuLwMy Mz?M~XMtMMNNN-NNNNGOOOOOO6PxP}PPPPPPQQ4Q]QQQ R3R _RRRR(FS.tSSS;S&S5SESHT V CV V V %V +V 0V 3 WjRZjR^ZjRgZjRpZjRy[jR1[jRC[jRZ[jR[jR[jR[jR[jR\jR \jRi\jR\jR\jR\)T\jR#\jR)]jR.]jR3!]jR81]jR=A]jRBQ]jRNa](p^b(pewb(pfb(pgb(phb(pib(pj c(pk+c(plIc(pmgc(poc(ppc(pqc(prd(ps=d(ptkd(pud(pvd(pwd(pONe(pPe(pQe(pWe(pWe(pXe(phf(pi f(plpf(pmf(pof(ppg(prg(ptg(pXg(pbg(pg(ph(ph(pWh(p\h(pah(ph(ph(ph(ph(p i(pi(p:i(pEi(pOi(phi(pti(pi(pi(p j(pj(pIj(pnj(pj(pj(pj(pj(pk(p*k(p5k(pZk(pek(pok(pk(pk(pk(pl(p)l(p}(p?4~(p@:~(pBZ~(pCm~(pD~(pF~(pF~(pG~(pS(pT(pU(pW?(pXR(pY_(pZ(p[(p^(p(p(p(p"(p!5(p(H(p1[(p8n(p@(pG(pJ(p}G! CG!&G!'G!+G!-#G!.:G!/XG!0G!2G!8؆G!9G!?$G!@*G!BPG!CiG!EG!FG!GχG!HG!IG!J#G!NHG!VG!WG!XG!ZG![ЈG!\G!]$G!_CG!`ZG!aG!cԉG!dG!e G!f"G!g6G!j[G!mvG!oG!pG!rŠG!tG!u1G!z=G!}UG!eG!qG!G!G!ЋG!G!G!G!G!CG!nG!G!G!G!!G!8G!VG!G!G!ԍG!G!(G!RG!|G!G!؎G!G!,G!VG!G!G!ߏG!G!G!'G!?G!WG!oG!vG!mg2mgmgmgmgmgՓmg mg!mg"mg.Omg0rmg2mg3Ҕmg4mg5&mg;umg<mg=mg?mgAmgCؕmgDmgGmgKmgN5mgPPmgRomgVmg\Ɩmghmgi(mgk:mgobmgymgzmg|Ηmg~mgmgPmgmgmgmgJ|J|32J|5IJ|6vJ|7J|8J|:ܝJ|AJ|HLJ|JcJ|KJ|PJ|RJ|Z%J|[2J|dVJ|fyJ|hJ|iٟJ|jJ|k-J|lWJ|uJ|vJ|xƠJ||J|J|TJ|J|آJ|J|J|BJ|J|J|ʣJ|J|J|6J|J|J|ФJ|J|J|4J|`J||J|J|J|)J|-Zl!OlSǬlZl[l\#l]Jl_\l`lflklolplr2lw^lywl{l|Ӯl}lll?l_lllll4lOl|llȰlll4l`lllʱlܱlll.lIlvlllʲlll#<l(^l*xl-l.l0l6l4lE4lFFlHXlJlSȴlVlYlZFl\KlalelhliӵlmlnlpluKlx|l{l|lll%l*lClglllѷlll!l'l:lllll l?lWlolll)l.lGlkllϺll%lCltll#l$1 l& l(0l)kl+Ҽl.l1l4l7l?CPC~zCCC C$CICZCdCvCCCCCCCCC?C^C}CCCCCCPCVChC C C  C0CICbCCCCCCC"HC)C=C>C?CCCDCE9CFLCJaCMsCNCOCPCQCRCS CU*CVBCWZCXrCYCZC[C`CaCb$Cf6CrmCsCtC{"ChCCCSCVCY+C\;CbKCebCiqCllH lHlH(lHRlH|lHlHlHlH$lH"NlH(lH)lH+lH-lH/lH0"lH3UlH6|lH8lH;lH<lH=lH>lH?lH@-lHAElHC]lHDlHElHFlHGlHH%lHKMlHLelHM}lHNlHPlHQlHRlHS%lHVMlHW_lHXlHXlHXlHXlHZlH[lH]&lH_9lHbKlHd^lHfplHglHhlHilHjlHklHp lHq#lHr;lHtHlHyZlH~slHlHlHlHlHlHlHlH lH,lH_lHrlHlHlHlHlHlHlHlHlH;lHSlHrlHlHlHlHlHlHlHlHlH.lHGlH^lHylHlHlHlHlH lH!lH3lHDlHelHwlHlHlHlHlHlH2lHIlHalHylHlHlHlHlHlHlHlHBlHjlHqlHlHlHlHlH ll!>l#Pl$jl+l,l2l<2l=Il?[l@lAlBl l2(f(L(N(O(P(QF(Rm(S(T(U(]B(^`(g(h(n(o(p%(q7(rI(s[(tw(u(w(y({(}(((!(9(K(](t((((((((($(G(q((((( (g((((( ("($%(EB V &g(y),354Y6v789;>@A*B0DUFzHJLMQST5ZS\y`agm1nNtvyz}=~[%DhntUs}7d@g2b"RN,s N,p N,t N,v' N,wG N,xY N,yk N,r N, N, N, N, N, N, N,0 N,I N,[ N,s N, N, N, N, N,N,DN,nN,N,N,N,N,AN,YN,qN,N,N,N,N,N,(N,UN,sN,N,N,N,N,.N,N,N,N,N,N,N,N,>N,vN,N,N,N,N, N, 'N,9N,gN,N,N,N,N,N,!N,#N,%N,/N,1 N,22N,7HN,8fN,:N,;N,<N,FN,GN,IN,JN,L-N,NLN,OXN,PN,RN,SN,TN,[N,g9N,hJN,khN,mN,qN,zN,{N,}N, N,!N,-N,?N,PN,UN,lN,xN,N,N,N,N,N,N,N,N,;N,N,N,N,N,N,N,;N,@N,XN,rN,N,N,N,N,UN,aN,sN,~N,N,UN,gN,N,N,N,N,2N,CN,TN,lN, N, N,N,N,N,N,N,"YN,&pN,(N,. N,2 N,8."N,;@"N,A#N,F#N,H#N,K#N,M#N,OE$N,R^$N,S}$N,V$N,X$N,]$N,^$N,_$N,a$N,c$N,d$N,f%N,h%N,k,%N,oD%N,pU%N,ql%N,s%N,v%N,w%N,z%N,}%N,9&N,I&N,a&N,m&N,&N,&N,&N,&N,'N,'N,/'N,'N,'N,'N,'N,'N,'N,'N,(N,(N,(N,(N,(N,(N,(N, )N,#)N,@)N,Q)N,o)N,)N,)N,)N,)N,)N,)N, *N,#*N,b*N,*N,*N,*N,*N,*N,+N,+N,%+N,5+N,E+N,U+N,e+N,u+N,+N,+N,+N,+N,+N,(,N, 2,N, >,N, V,N,m,N,,N,,N,,N,,N,,N,-N,!-N,E-N,!\-N,"z-N,$-N,'-N,,-N,.-N,/-N,1 .N,5 .N,6Q.N,8h.N,>z.N,>.N,@.N,B.N,D.N,F.N,H.N,I.N,J$/N,K5/N,PK/N,R/N,S/N,T/N,U/N,]/N,^0N,`.0N,bU0N,dy0N,p0N,|0N,~1N,+1N,1N,1N,1N,2N,2N,@2N,R2N,d2N,{2N,2N,2N,2N,2N,3N,&3N,+3N,K3N,d3N,i3N,z3N,3N,3N,3N,3N,3N,3N,4N,4N,;4N,M4N,_4N,q4N,4N,4N,4N,4N,5N,5N,85N,\5N,z5N,5N,5N,5N,6N,06N,b6N,6N,6N,6N, 7N,!7N, 7N,%7 7N,-7N,07N,47N,g8N,i8N,$8N,48BAAAAB?B)hB+B,B-B.B/C0C1@C2XC6nC7C:C;C<C=DGBDODPDQDRDSE[RE\qE]E^EfEgEjFl$Fm0FoBFpnFrFrFsFtFu Gw5GyHGz_G{qGGGG H_HHHI9IQIIIIIIIJ JFJKJJJJJK>KbKzKKKKKL%L=LWLvLLLLM.M3MaMMMN-NJNbNNNNN N O O 4OQOvOOOOO P!P"5P#MP$eP%}P'P/P1P2P<&QDWQFiQGzQHQJQRQZQ[R['RcYRk}RiRtR}R{S=SmSSSSSTgTTTTT UU4U\UnUUUUVoVVVVVWW,WJW}WWWWX@X YX rX|XXXXXYY(@Y)QY1Y2Y:YBYDZE/ZHLZJdZKZLZMZNZO[WB[_f[`x[b[c[e\hP\iq\j\]\r\s\{#]|>]s]]]]]!]]' ^(^-0^2C^7S^<c^As^U^Z^_^d^i^n^s^x _~_/_?_O___o__________`\`q/`v?`{O`_`o``````````aa/aXaaaaa%bNbwb bb'cOc h Gh qh wh h h h h  i .i #Ii %ki 'i +i ,i .i /$j 0Ij oj 4j 5j 6j 7j_gn_go_g0o_g[o_gmo_g"o_g#o_g$o_g$o_g'o_g(o_g*o_g,(p_g/Bp_g0np_g1p_g1p_g3p_g4p_g5p_g6p_g8q_g9(q_g:=q_g;Rq_g=gq_g>zq_g?q_g@q_gBq_gCq_gEq_gFq_gHq_gI r_gKr_gL9r_gNYr_gSr_gVr_gWr_gXr_gX s_gZs_gaXs_gc_s_gdes_gfs_ggs_gks_gms_gos_gps_gr t_gt%t_gu@t_g~t_gt_gt_gt_gt_gt_gt_gEu_g]u_gqu_gu_gu_gu_gu_gu_gv_g7v_gVv_gjv_gv_gv_gv_gw_gw_g$w_gDw_gWw_gpw_gw_gw_gx_gx_g(x_g5x_gPx_gwx_gx_gx_gx_gx_gy_g2y_gLy_gxy_gy_gy_gy_gy_gy_gy_gz_g2z_gGz_g\z_gqz_gz_gz_gz_gz_gz_gz_gz_g{_g{_g #{_g C{_g c{_g|{_g{_g{_g{_g{_g |_g(|_gC|_g$m|_g'|_g(|_g)|_g)|_g,|_g/ }_g1J}_g2P}_g3\}_g4n}_g5}_g6}_g7}_g:}_gD:~_gEL~_gFj~_gG~_gH~_gI~_gJ~_gK~_gL_gMD_gNl_gP_gQ_gR_gS_gU_gV +2 +2.B+20a+21z+24+25+26+27Ʉ+28+29+2:+2;)+2<A+2=Y+2>q+2?+2@+2A+2Bх+2C+2J+2L3+2ML+2PQ+2Qi+2R+2T+2V+2WÆ+2Y+2[+2\+2^"+2`/+2aG+2cd+2eq+2f+2h+2j+2kˇ+2m+2o+2p +2r*+2t7+2uO+2wl+2~+2+2Ȉ+2͈+2+2+2+2/+2G+2v+2+2+2+2lj+2߉+2+2 +2!+2>+2c+2+2+2+2 +2!+2?+2W+2+2+2Ջ+2+2 +2+2J+2r+2+2ˌ+2+2$+2U+2}+2+2֍+2+2 /+2`+2+2ǎ+2ߎ+2+2+2A+2Y+2 q+2!+2"+2#+2%я+2'+2)+2*$+2+6+2,N+2-f+2.~+2/+20+21Ɛ+22ސ+23+24+25&+2-+2+27+28ߑD!6DDΜDDDD7DVDwDDDD֝DDD@DLDwDDDȞDD3DMDmDyDDDDDDbDlDDDDD D+?D,QD-[D.lD/vD0D1D2D4СDDDEDFDG"DH,DIWDKnDLDRŢDTDVDWDeDf&DgDDi[D{DDʣDգDD8DCDDDDDDDdDDDDǥDD D:D@DLD^DhDzDDDDDʦDԦDڦDD!D2DVDbD}DDȧDD DBDDDۨDDLD D DƩDݩDD)D/D;DEDUDeDDD"D#D$D%D&ҪD'D'D(D)D/+D0DD1XD2~D3D5D6D7ѫD: D;D>3D@cDADCDHDIˬDJլDKDLDM DM(DN-DTDDUPDVZDWdDXvDYDZDZD[D\̭D`DaDm-DxaDzzD|D~DĮDծDD D3D\DDʯDD D7DaDDDODDDӱDD D(D@D`DDɲDDWDcDDDDDDDTDkDDѴDD9D]DbDDDDµDܵDDDHDDDDжDD"DAD `DDѷDDDD!D3D'D.D/D3D4 D5D63D7ED@DDDEDFDH(DJ@DKRDMwDNDPDRϺDSD[ D\\D^bD_DaDbDdĻDfݻDhDiDkDo DpDr$Ds7DuBDvTDzkDDDȼDD D:DFDRDeDkDDDDͽDDDDDD1DDD]DDDDDD D!D;DMD_DDDDD-D7DuDDDDD(D4DUDlDDDEDDD$D'D* D-D3)D68D9GD<ZD?mDB|DEDHDKDNDQDTDWDgDoDw/}]}C}G}H;}IL}El}T}_}j}u7}vI}wS}xd}yn}z}{}|}}}~}}}"}9}S}Y}}}}}}}}}F}}}}} }Y}t}}}}"}:}L}q}}}}},}<}Y} i}&y})C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\core\ComponentVersion.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** static var version:String = "2.0.2.126"; com.mattism.http.xmlrpc.util.XMLRPCDataTypes: W:\games\comeback\ac_xmlrpc\com\mattism\http\xmlrpc\util\XMLRPCDataTypes.asclass com.mattism.http.xmlrpc.util.XMLRPCDataTypes { static var STRING:String = "string"; static var CDATA:String = "cdata"; static var i4:String = "i4"; static var INT:String = "int"; static var BOOLEAN:String = "boolean"; static var DOUBLE:String = "double"; static var DATETIME:String = "dateTime.iso8601"; static var BASE64:String = "base64"; static var STRUCT:String = "struct"; static var ARRAY:String = "array"; } /* or java.lang.Integer Number java.lang.Boolean Boolean java.lang.String String java.lang.Double Number java.util.Date Date java.util.Hashtable Object java.util.Vector Array byte[ ] Base64 */ com.mattism.http.xmlrpc.util.XMLRPCUtils: W:\games\comeback\ac_xmlrpc\com\mattism\http\xmlrpc\util\XMLRPCUtils.asimport com.mattism.http.xmlrpc.util.XMLRPCDataTypes; class com.mattism.http.xmlrpc.util.XMLRPCUtils { static var SIMPLE_TYPES:Array = [ XMLRPCDataTypes.BASE64, XMLRPCDataTypes.INT, XMLRPCDataTypes.i4, XMLRPCDataTypes.STRING, XMLRPCDataTypes.CDATA, XMLRPCDataTypes.DOUBLE, XMLRPCDataTypes.DATETIME, XMLRPCDataTypes.BOOLEAN ]; static function isSimpleType( type:String ):Boolean { var i:Number; for ( i=0; i 0) ref = ref + "Emphasized"; } if(this[ref].length == 0 )return; ref = setIcon(tagMap[s], this[ref]); if (ref == undefined && _global.isLivePreview){ ref = setIcon(0,"ButtonIcon") ; } this[v] = ref; } iconName._visible = false; iconName = ref; iconName._visible = true; } /** * @private * */ function removeIcons() { for (var t = 0; t <2 ;t++){ for (var i = 8;i < 16;i++){ destroyObject(idNames[i]); this[stateNames[i-8]+"Icon"] = ""; } } refresh(); } /** * @private * */ function setSkin(tag:Number,linkageName:String, initobj:Object):MovieClip { var o = super.setSkin(tag, linkageName, initobj!= undefined?initobj:{styleName: this}); calcSize(tag, o); return o; } /** * @private * */ function calcSize(Void):Void { __width = _width; __height = _height; } /** * @private * */ function viewSkin(varName:String,initObj:Object):Void { var v = varName+"Skin"; var ref = this[v]; if(typeof(ref) == "string") { var s = ref; if (__emphasized) { if (this[ref + "Emphasized"].length > 0) ref = ref + "Emphasized"; } if(this[ref].length == 0 )return; ref = setSkin(tagMap[s], this[ref], initObj!= undefined? initObj: {styleName: this} ); this[v] = ref; } skinName._visible = false; skinName = ref; skinName._visible = true; } /** * @private * */ function showEmphasized (e:Boolean):Void { if (e && !__emphatic) { if (SimpleButton.emphasizedStyleDeclaration != undefined) { __emphaticStyleName = styleName; styleName = SimpleButton.emphasizedStyleDeclaration; } __emphatic = true; } else { if (__emphatic) { styleName = __emphaticStyleName; } __emphatic = false; } } /** * @private * */ function refresh(Void):Void { var offset:Boolean = getState(); if (enabled == false ) { viewIcon("disabled"); viewSkin("disabled"); } else { viewSkin(phase); viewIcon(phase); } setView(phase == "down"); iconName.enabled = enabled; } /** * @private * */ function setView(offset:Boolean):Void { if(iconName == undefined) return; var n = offset ? btnOffset : 0; iconName._x = (__width - iconName._width)/2 + n; iconName._y = (__height - iconName._height)/2 + n; } /** * @private * */ function setStateVar(state:Boolean):Void { if (state) { if (trueOverSkin.length == 0) { rolloverSkin = tus; } else { rolloverSkin = trs; } if (trueOverIcon.length == 0) { rolloverIcon = tui; } else { rolloverIcon = tri; } upSkin = tus; downSkin = tds; disabledSkin = dts; upIcon = tui; downIcon = tdi; disabledIcon = dti; } else { if (falseOverSkin.length == 0) { rolloverSkin = fus; } else { rolloverSkin = frs; } if (falseOverIcon.length == 0) { rolloverIcon = fui; } else { rolloverIcon = fri; } upSkin = fus; downSkin = fds; disabledSkin = dfs; upIcon = fui; downIcon = fdi; disabledIcon = dfi; } __state = state; } /** * @private * */ function setState(state:Boolean):Void { if (state != __state) { setStateVar(state); invalidate(); } } /** * @private * Each component should implement this method and lay out * its children based on the .width and .height properties */ function size(Void):Void { refresh(); } /** * @private * */ function draw(Void):Void { if (initializing) { initializing = false; skinName.visible = true; iconName.visible = true; } size(); } /** * @private * */ function getState(Void):Boolean { return __state; } /** * @private * */ function setToggle(val:Boolean) { __toggle = val; if (__toggle == false) setState(false); } /** * @private * */ function getToggle(Void):Boolean { return __toggle; } /** * @private * */ function set toggle(val:Boolean) { setToggle(val); } /** * @tiptext Needs tooltip * @helpid 3406 */ [Inspectable(defaultValue=false)] function get toggle():Boolean { return getToggle(); } /** * @private * */ function set value(val:Boolean) { setSelected(val); } /** * @private * */ function get value():Boolean { return getSelected(); } /** * @private * */ function set selected (val:Boolean) { setSelected(val); } /** * @tiptext Needs tooltip * @helpid 3405 */ [Inspectable(defaultValue=false)] function get selected ():Boolean { return getSelected(); } /** * @private * */ function setSelected (val:Boolean) { if(__toggle) { setState(val); } else { setState( (initializing) ? val : __state); } } /** * @private * */ function getSelected ():Boolean { return __state; } /** * @private * */ function setEnabled(val:Boolean):Void { if (enabled != val) { super.setEnabled(val); invalidate(); } } /** * @private * */ function onPress(Void):Void { pressFocus(); phase = "down"; refresh(); dispatchEvent({type:"buttonDown"}); if (autoRepeat) { interval = setInterval(this, "onPressDelay", getStyle("repeatDelay")); } } /** * @private * */ function onPressDelay(Void):Void { dispatchEvent({type:"buttonDown"}); if (autoRepeat) { clearInterval(interval); interval = setInterval(this, "onPressRepeat", getStyle("repeatInterval")); } } /** * @private * */ function onPressRepeat(Void):Void { dispatchEvent({type:"buttonDown"}); updateAfterEvent(); } /** * @private * */ function onRelease(Void):Void { releaseFocus(); phase = "rollover"; if (interval != undefined) { clearInterval(interval); delete interval; } if (getToggle()) { setState(!getState()); } else { refresh(); } dispatchEvent({type:"click"}); } /** * @private * */ function onDragOut(Void):Void { phase = "up"; refresh(); dispatchEvent({type:"buttonDragOut"}); } /** * @private * */ function onDragOver(Void):Void { if (phase != "up") { // it is possible to get a onDragOver even though we never got a dragOut or press. // in this situation, we map onDragOver to onPress onPress(); return; } else { phase = "down"; refresh(); } } /** * @private * */ function onReleaseOutside(Void):Void { releaseFocus(); phase="up"; if (interval != undefined) { clearInterval(interval); delete interval; } } /** * @private * */ function onRollOver(Void):Void { phase = "rollover"; refresh() } /** * @private * */ function onRollOut(Void):Void { phase = "up"; refresh(); } /** * @private * */ function getLabel(Void):String { return fui.text; } /** * @private * */ function setLabel(val:String):Void { if (typeof(fui) == "string") { createLabel("fui", 8, val); fui.styleName = this; } else fui.text = val; var tf = fui._getTextFormat(); var extent = tf.getTextExtent2(val); fui._width = extent.width + 5; fui._height = extent.height + 5; iconName = fui; setView(__state); } /** * @private * */ function get emphasized():Boolean { return __emphasized; } /** * @private * */ function set emphasized(val:Boolean) { __emphasized = val; for (var i = 0; i < 8; i++) { this[idNames[i]] = stateNames[i] + "Skin"; if (typeof(this[idNames[i+8]]) == "movieclip") { this[idNames[i+8]] = stateNames[i] + "Icon"; } } showEmphasized(__emphasized); setStateVar(__state); invalidateStyle(); } /** * @private * */ function keyDown(e:Object):Void { if (e.code == Key.SPACE) onPress(); } /** * @private * */ function keyUp(e:Object):Void { if (e.code == Key.SPACE) onRelease(); } function onKillFocus(newFocus:Object):Void { super.onKillFocus(); // most of the time the system sends a rollout, but there are situations // where the mouse is over something else that you don't get one so // we force one here if (phase != "up") { phase = "up"; refresh(); } } } (mx.managers.SystemManager: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\managers\SystemManager.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.events.EventDispatcher; import mx.core.UIComponent; /** * @tiptext idle event * @helpid 3317 */ [Event("idle")] /** * @tiptext resize event * @helpid 3318 */ [Event("resize")] /** * Class for managing which top level window is activated. Also provides an idle event and stage coordinates * * @helpid 3319 * @tiptext */ class mx.managers.SystemManager { // if the system manager has been initialized private static var _initialized:Boolean = false; // number of frames since the last mouse or key activity static var idleFrames:Number = 0; // state of the mouse button static var isMouseDown = false; // list of top level windows static var forms:Array = new Array(); // the current top level window static var form:MovieClip; // the interval used to check for idle static var interval:Number; /** * listen for idle events * @see mx.events.EventDispatcher */ static var addEventListener:Function; /** * listen for idle events * @see mx.events.EventDispatcher */ static var removeEventListener:Function; // internal override of addEventListener static var _xAddEventListener:Function; // internal override of removeEventListener static var _xRemoveEventListener:Function; // from mx.events.EventDispatcher static var dispatchEvent:Function; // the current coordinates of the stage static var __screen:Object; // mixins from OverlappedWindows static var activate:Function; static var deactivate:Function; static var checkIdle:Function; static var __addEventListener:Function; static var __removeEventListener:Function; static var onMouseMove:Function; static var onMouseUp:Function; /** * users of SystemManager must call init() before using SystemManager */ static function init(Void):Void { if (_initialized == false) { _initialized = true; EventDispatcher.initialize(SystemManager); Mouse.addListener(SystemManager); Stage.addListener(SystemManager); SystemManager._xAddEventListener = SystemManager.addEventListener; SystemManager.addEventListener = SystemManager.__addEventListener; SystemManager._xRemoveEventListener = SystemManager.removeEventListener; SystemManager.removeEventListener = SystemManager.__removeEventListener; } } // register a window containing a focus manager. // this method is replaced when overlapped window support is added static function addFocusManager(f:UIComponent):Void { SystemManager.form = f; f.focusManager.activate(); } // focus managers should never get removed unless overlapped window support is added static function removeFocusManager(f:UIComponent):Void { } // track mouse clicks to see if we change top-level forms static function onMouseDown(Void):Void { var z:MovieClip = SystemManager.form; z.focusManager._onMouseDown(); } // keep track of the size and position of the stage static function onResize(Void):Void { var w:Number = Stage.width; var h:Number = Stage.height; var m:Number = _global.origWidth; var n:Number = _global.origHeight; var a:String = Stage.align; var x:Number = (m - w) / 2; var y:Number = (n - h) / 2; if (a == "T") { y = 0; } else if (a == "B") { y = n - h; } else if (a == "L") { x = 0; } else if (a == "R") { x = m - w; } else if (a == "LT") // even though doc says "TL" { y = 0; x = 0; } else if (a == "TR") { y = 0; x = m - w; } else if (a == "LB") // even though doc says "BL" { y = n - h; x = 0; } else if (a == "RB") // even though doc says "BR" { y = n - h; x = m - w; } if (__screen == undefined) __screen = new Object(); __screen.x = x; __screen.y = y; __screen.width = w; __screen.height = h; // move the focusManager on _root if needed _root.focusManager.relocate(); SystemManager.dispatchEvent({type:"resize"}); } /** * get an object containing the size and position of the stage * @return object with x, y, width and height * * @tiptext * @helpid 3320 */ static function get screen():Object { init(); if (__screen == undefined) onResize(); return __screen; } } n mx.core.UIObject: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\core\UIObject.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.styles.StyleManager; import mx.styles.CSSStyleDeclaration; import mx.skins.SkinElement; /** * @tiptext resize event * @helpid 3972 */ [Event("resize")] /** * @tiptext move event * @helpid 3969 */ [Event("move")] /** * @tiptext draw event * @helpid 3963 */ [Event("draw")] /** * @tiptext load event * @helpid 3968 */ [Event("load")] /** * @tiptext unload event * @helpid 3980 */ [Event("unload")] /** * The base class for all components and graphical objects. * UIObjects support events and styles and resize by scaling. * * @helpid 3285 * @tiptext Base class for all components and graphical objects. Extends MovieClip */ class mx.core.UIObject extends MovieClip { /** * @private * SymbolName for object */ static var symbolName:String = "UIObject"; /** * @private * Class used in createClassObject */ static var symbolOwner:Object = UIObject; // Version string #include "../core/ComponentVersion.as" /** * @private * standard color list for text objects */ static var textColorList = { color: 1, disabledColor: 1 }; // whether the component needs to be drawn private var invalidateFlag:Boolean = false; // line width and color for drawing API private var lineWidth:Number = 1; private var lineColor:Number = 0; // black // UIObjects are not supposed to receive focus var tabEnabled:Boolean = false; // sometimes we inherit from something, but don't want to // inherit its class styles. var ignoreClassStyleDeclaration:Object; // sometimes properties get set before the children components // have been created. This flag can be used to guard against // early property setting. var childrenCreated:Boolean; /** * @private * @see mx.events.EventDispatcher */ var createEvent:Function; /** * @private * @see mx.events.EventDispatcher */ var dispatchEvent:Function; /** * @see mx.events.EventDispatcher * @tiptext Adds a listener for an event * @helpid 3958 */ var addEventListener:Function; /** * @see mx.events.EventDispatcher * @tiptext Handles all events * @helpid 3032 */ var handleEvent:Function; /** * @see mx.events.EventDispatcher */ var removeEventListener:Function; // see mx.managers.DepthManager var buildDepthTable:Function; var findNextAvailableDepth:Function; var createChildAtDepth:Function; var createClassChildAtDepth:Function /** * @see mx.accessibility.accImpl */ var createAccessibilityImplementation:Function; // internal ID name for this instance private var _id:String; /** * @private * Initialization property that forces immediate drawing after creation */ var validateNow:Boolean; // foreground text color var color:Number; // mixed from styles var fontSize:Number; var fontWeight:String; var fontFamily:String; var fontStyle:String; var textAlign:String; var textDecoration:String; var textIndent:Number; var marginLeft:Number; var marginRight:Number; var embedFonts:Boolean; var changeTextStyleInChildren:Function; var changeColorStyleInChildren:Function; var notifyStyleChangeInChildren:Function; // mixed from DepthManager; var _topmost:Boolean; /** * @private * The color style used by this component. If more than one * color style, use an object containing the colors as properties * on the object */ var _color; /** * @private * CSSStyleDeclaration or pointer to parent to be used by component in * calculating style values. */ var styleName:String; /** * * Name of component class. This is also used in calculating style values. * If _global.styles[className] exists, it set defaults for a component. */ var className:String; // cache of cascading styles var stylecache:Object; // list of functions used by doLater() var methodTable:Array; // array of skin instance names used by setSkin var idNames:Array; /** * set a style property. Causes lots of processing so use sparingly. * actual implementation is in mx.styles.CSSSetStyle.as * * @param String prop name of style property * @param Variant value new value for style * * @tiptext Sets a style value for the specified style property * @helpid 3978 */ var setStyle : Function; /** * @private * list of clip parameters to check at init * only getter/setter properties go in this list */ var clipParameters:Object = {visible: 1, minHeight: 1, minWidth: 1, maxHeight: 1, maxWidth: 1, preferredHeight: 1, preferredWidth: 1}; /** * @private * method used to init objects w/ getter-setters */ var initProperties:Function; // these hold the actual values for the getter-setters var __width:Number; var __height:Number; private var _minHeight:Number; private var _minWidth:Number; private var _maxHeight:Number; private var _maxWidth:Number; private var _preferredHeight:Number; private var _preferredWidth:Number; // local copy of textformat private var _tf:TextFormat; // list of textfield children private var tfList:Object; // place to store the hooked copy of onUnload private var __onUnload:Function; // place to hook in other init-time functions private var _endInit:Function; function UIObject() { constructObject(); } /** * width of object * Read-Only: use setSize() to change. * @helpid 3982 */ function get width():Number { return _width; } /** * height of object * Read-Only: use setSize() to change. * @helpid 3964 */ function get height():Number { return _height; } /** * left of object * Read-Only: use move() to change. * @helpid 3967 */ function get left():Number { return _x; } /** * x = left of object * Read-Only: use move() to change. * @helpid 3983 */ function get x():Number { return _x; } /** * top of object * Read-Only: use move() to change. * @helpid 3979 */ function get top():Number { return _y; } /** * y = top of object * Read-Only: use move() to change. * @helpid 3984 */ function get y():Number { return _y; } /** * right of object relative to its parent's right edge. * Read-Only: use setSize() to change. * @helpid 3973 */ function get right():Number { return _parent.width - (_x + width); } /** * bottom of object relative to its parent's bottom * Read-Only: use setSize() to change. * @helpid 3959 */ function get bottom():Number { return _parent.height - (_y + height); } /** * @private * override this instead of adding your own getter-setter for minHeight */ function getMinHeight(Void):Number { return _minHeight; } /** * @private * override this instead of adding your own getter-setter for minHeight */ function setMinHeight(h:Number):Void { _minHeight = h; } /** * minimum height of object */ [Inspectable(defaultValue=0, verbose=1, category="Size")] function get minHeight():Number { return getMinHeight(); } function set minHeight(h:Number):Void { setMinHeight(h); } /** * @private * override this instead of adding your own getter-setter for minWidth */ function getMinWidth(Void):Number { return _minWidth; } /** * @private * override this instead of adding your own getter-setter for minWidth */ function setMinWidth(w:Number):Void { _minWidth = w; } /** * minimum width of object */ [Inspectable(defaultValue=0, verbose=1, category="Size")] function get minWidth():Number { return getMinWidth(); } function set minWidth(w:Number):Void { setMinWidth(w); } /** * @private * override this instead of adding your own getter-setter for visible */ function setVisible(x:Boolean, noEvent:Boolean):Void { if (x != this._visible) { _visible = x; if (noEvent != true) { dispatchEvent({type: x ? "reveal" : "hide"}); } } } /** * True if object is visible * @helpid 3981 */ [Inspectable(defaultValue=true, verbose=1, category="Other")] function get visible():Boolean { return _visible; } function set visible(x:Boolean):Void { setVisible(x, false); } /** * 100 is standard scale * @tiptext Specifies the horizontal scale factor * @helpid 3974 */ function get scaleX():Number { return _xscale; } function set scaleX(x:Number):Void { _xscale = x; //__width = _width; } /** * 100 is standard scale * @tiptext Specifies the vertical scale factor * @helpid 3975 */ function get scaleY():Number { return _yscale; } function set scaleY(y:Number):Void { _yscale = y; //__height = _height; } /** * Queues a function to be called later * * @param obj Object that contains the function * @param fn Name of function on Object */ function doLater(obj:Object, fn:String):Void { if (methodTable == undefined) { methodTable = new Array(); } methodTable.push({obj:obj, fn:fn}); onEnterFrame = doLaterDispatcher; } // callback that then calls queued functions function doLaterDispatcher(Void):Void { delete onEnterFrame; // invalidation comes first if (invalidateFlag) { redraw(); } // make a copy of the methodtable so methods called can requeue themselves w/o putting // us in an infinite loop var __methodTable:Array = methodTable; // new doLater calls will be pushed here methodTable = new Array(); // now do everything else if (__methodTable.length > 0) { var m:Object; while((m = __methodTable.shift()) != undefined) { m.obj[m.fn](); } } } /** * cancel all queued functions */ function cancelAllDoLaters(Void):Void { delete this.onEnterFrame; this.methodTable = new Array(); } /** * mark component so it will get drawn later * @tiptext Marks an object to be redrawn on the next frame interval * @helpid 3966 */ function invalidate(Void):Void { invalidateFlag = true; onEnterFrame = doLaterDispatcher; } /** * called if just styles are changing so subclasses don't have to redraw everything */ function invalidateStyle(Void):Void { invalidate(); } /** * redraws object if you couldn't wait for invalidation to do it * * @param bAlways if False, doesn't redraw if not invalidated * @tiptext Redraws an object immediately * @helpid 3971 */ function redraw(bAlways:Boolean):Void { if (invalidateFlag || bAlways) { invalidateFlag = false; // all textfields are hung off this method so we can call them as well since they don't // have their own enterFrame event var i:String; for (i in tfList) { tfList[i].draw(); } draw(); dispatchEvent({ type:"draw"}); } } /** * @private * draw the object. Called by redraw() which is called explicitly or * by the system if the object is invalidated. * Each component should implement this method and make subobjects visible and lay them out. * Most components do the layout by calling their size() method. */ function draw(Void):Void { } /** * move the object * * @param x left position of the object * @param y top position of the object * @param noEvent if true, doesn't broadcast "move" event * * @tiptext Moves the object to the specified location * @helpid 3970 */ function move(x:Number, y:Number, noEvent:Boolean):Void { //trace("UIObject.move " + this + " -> (" + x + ", " + y + ")"); var oldX:Number = _x; var oldY:Number = _y; _x = x; _y = y; if (noEvent != true) { dispatchEvent({type:"move", oldX:oldX, oldY:oldY}); } } /** * size the object * * @param w width of the object * @param h height of the object * @param noEvent if true, doesn't broadcast "resize" event * * @tiptext Resizes the object to the specified size * @helpid 3976 */ function setSize(w:Number, h:Number, noEvent:Boolean):Void { // trace("UIObject.setSize " + this + " -> (" + w + ", " + h + ")"); var oldWidth:Number = __width; var oldHeight:Number = __height; __width = w; __height = h; size(); if (noEvent != true) { dispatchEvent({type:"resize", oldWidth:oldWidth, oldHeight:oldHeight}); } } /** * @private * size the object. called by setSize(). Components should implement this method * to layout their contents. The width and height properties are set to the * new desired size by the time size() is called. */ // default is to scale object. override to do something more intelligent function size(Void):Void { _width = __width; _height = __height; } /** * draw unfilled rectangle on the screen * * @param x1 (x1, y1) is one corner of rectangle * @param y1 (x1, y1) is one corner of rectangle * @param x2 (x2, y2) is other corner of rectangle * @param y2 (x2, y2) is other corner of rectangle * @param r (r) is corner radius of rectangle or object containing radii for each corner */ function drawRect(x1:Number, y1:Number, x2:Number, y2:Number):Void { moveTo(x1,y1); lineTo(x2,y1); lineTo(x2,y2); lineTo(x1,y2); lineTo(x1,y1); } /** * @private * create a text label subobject. Used by most components to get a lightweight * text object to display text in the component. * * @param name instance name of text object * @param depth z order of object * @param text text of object * @return reference to text object */ function createLabel(name:String, depth:Number, text):TextField { //createTextField(name, depth, x, y, w, h); createTextField(name, depth, 0, 0, 0, 0); var o:TextField = this[name]; o._color = UIObject.textColorList; o._visible = false; // defer the style lookup to the textfield's draw routine o.__text = text; // @@ this needs improvement, since margin will vary with the font and size // var margin = 4; // o.setSize(o.textWidth + margin, o.textHeight + margin); if (tfList == undefined) tfList = new Object(); tfList[name] = o; o.invalidateStyle(); invalidate(); // force redraw call o.styleName = this; // labels always inherit styles of parent unless set otherwise return o; } /** * create a subobject from its symbol name * * @param symbol symbol name of object * @param id instance name of object * @param depth z order of object * @param initObj object containing initialization properties * @return reference to object * * @tiptext Creates a sub-object using its symbol name * @helpid 3960 */ function createObject(linkageName:String, id:String, depth:Number, initobj:Object):MovieClip { // trace("UIObject createObject: " + linkageName); return attachMovie(linkageName, id, depth, initobj); } /** * create a subobject from its class definition * * @param class reference to class of object * @param id instance name of object * @param depth z order of object * @param initObj object containing initialization properties * @return reference to object * * @tiptext Creates a sub-object using its class name * @helpid 3961 */ function createClassObject(className:Function, id:String, depth:Number, initobj:Object):UIObject { var bSubClass:Boolean = (className.symbolName == undefined); if (bSubClass) { Object.registerClass(className.symbolOwner.symbolName, className); } var o:UIObject = UIObject(createObject(className.symbolOwner.symbolName, id, depth, initobj)); if (bSubClass) { Object.registerClass(className.symbolOwner.symbolName, className.symbolOwner); } return o; } /** * create a blank or empty subobject * * @param id instance name of object * @param depth z order of object * @return reference to object */ function createEmptyObject(id:String, depth:Number):UIObject { return createClassObject(UIObject, id, depth); } /** * destroy the subobject * * @param id instance name of object * * @tiptext Destroys the specified object * @helpid 3962 */ function destroyObject(id:String):Void { var o:MovieClip = this[id]; if (o.getDepth() < 0) { var dt:Array = buildDepthTable(); var i:Number = findNextAvailableDepth(0, dt, "up"); var temp = i; // COMPILER WORKAROUND o.swapDepths(temp); } o.removeMovieClip(); delete this[id]; } /** * @private * lookup the instance name from the skin ID number. Uses the idNames * array to map to an instance name * * @param tag id number in idNames */ function getSkinIDName(tag:Number):String { return idNames[tag]; } /** * @private * create a skin element. Recommended way of adding graphical * objects to a component. * * @param tag id number of skin * @param name symbol name of object * @param initObj object containing initialization properties * @return reference to object * @helpid 3977 */ function setSkin(tag:Number, linkageName:String, initObj:Object):MovieClip { if (_global.skinRegistry[linkageName] == undefined) { SkinElement.registerElement(linkageName, SkinElement); } return createObject(linkageName, getSkinIDName(tag), tag, initObj); } /** * @private * create a blank or empty skin element. Rarely used. Recommended way is to * load a skin containing graphics or drawing code * * @param tag id number of skin * @return reference to object */ function createSkin(tag:Number):UIObject { var id:String = getSkinIDName(tag); createEmptyObject(id, tag); return this[id]; } /** * @private * create children objects. Components implement this method to create the * subobjects in the component. Recommended way is to make text objects * invisible and make them visible when the draw() method is called to * avoid flicker on the screen. * */ function createChildren(Void):Void { } // call create children and set flag. function _createChildren(Void):Void { createChildren(); childrenCreated = true; } // sets up the order of construction of a component function constructObject(Void):Void { // this gets called when being defined as the prototype // don't do anything, just return. if (_name == undefined) { return; } // initialize variables and the like; init(); // create child objects _createChildren(); // create accessibility if needed createAccessibilityImplementation(); // hook extension _endInit(); // draw it now if (validateNow) { redraw(true); } else // or draw it later { invalidate(); } } // process all the clipParameters in the list so the setters get fired. function initFromClipParameters(Void):Void { var bFound:Boolean = false; var i:String; for (i in clipParameters) { if (this.hasOwnProperty(i)) { bFound = true; this["def_" + i] = this[i]; delete this[i]; } } if (bFound) { for (i in clipParameters) { var v = this["def_" + i]; if (v != undefined) this[i] = v; } } } /** * @private * init variables. Components should implement this method and call super.init() to * ensure this method gets called. The width, height and clip parameters will not * be properly set until after this is called. * */ function init(Void):Void { __width = _width; __height = _height; if (initProperties == undefined) { initFromClipParameters(); } else { initProperties(); // defined in onClipEvent(initialize) for each instance. } if (_global.cascadingStyles == true) { stylecache = new Object(); } } // find the class style sheet for this instance. Equivalent // to type selectors in CSS, except that it also uses // inheritance as valid types function getClassStyleDeclaration(Void):CSSStyleDeclaration { var o:Object = this; var c:String = className; while (c != undefined) { if (ignoreClassStyleDeclaration[c] == undefined) { if (_global.styles[c] != undefined) { return _global.styles[c]; } } o = o.__proto__; c = o.className; } } /** * @private * set color on object. This method gets called if the value of a * color style gets changed and that color style is listed * as the _color property of the component. * */ function setColor(color:Number):Void { // standard UIObject doesn't do any coloring } // called recursively to fill out a textFormat object by calling each of its parents function __getTextFormat(tf:TextFormat, bAll:Boolean):Boolean { // see if we have a cached text format. Note that this should never be true on the first // call since this does not get called if the object has a cached text format. This is only to // see if a parent has a text format. var o:TextFormat = stylecache.tf; if (o != undefined) { // for each field in the mapping var j:String; for (j in StyleManager.TextFormatStyleProps) { if (bAll || StyleManager.TextFormatStyleProps[j]) if (tf[j] == undefined) tf[j] = o[j]; } return false; } var bUndefined:Boolean = false; // for each field in the mapping var j:String; for (j in StyleManager.TextFormatStyleProps) { if (bAll || StyleManager.TextFormatStyleProps[j]) { if (tf[j] == undefined) { // get the value from the textFormat var v = _tf[j]; // store it in the tf if not defined if (v != undefined) { tf[j] = v; } else { // nsaxena: for cascading styles, if _parent is a movie clip // since mx.styles.CSSTextStyles.addTextStyles(mc) is not called // no better way to check than reverse mapping if(j == "font" && this["fontFamily"] != undefined) { tf[j] = this["fontFamily"]; } else if(j == "size" && this["fontSize"] != undefined) { tf[j] = this["fontSize"]; } else if(j == "color" && this["color"] != undefined) { tf[j] = this["color"]; } else if(j == "leftMargin" && this["marginLeft"] != undefined) { tf[j] = this["marginLeft"]; } else if(j == "rightMargin" && this["marginRight"] != undefined) { tf[j] = this["marginRight"]; } else if(j == "italic" && this["fontStyle"] != undefined) { tf[j] = (this["fontStyle"] == j); } else if(j == "bold" && this["fontWeight"] != undefined) { tf[j] = (this["fontWeight"] == j); } else if(j == "align" && this["textAlign"] != undefined) { tf[j] = this["textAlign"]; } else if(j == "indent" && this["textIndent"] != undefined) { tf[j] = this["textIndent"]; } else if(j == "underline" && this["textDecoration"] != undefined) { tf[j] = (this["textDecoration"] == j); } else if(j == "embedFonts" && this["embedFonts"] != undefined) { tf[j] = this["embedFonts"]; } else { bUndefined = true; } } } } } // if some fields are still undefined use css rules to ask the next person if (bUndefined) { // check our style sheet var name = styleName; if (name != undefined) { if (typeof (name) != "string") { bUndefined = name.__getTextFormat(tf, true, this); } else { if (_global.styles[name] != undefined) { bUndefined = _global.styles[name].__getTextFormat(tf, true, this); } } } } if (bUndefined) { var ss = getClassStyleDeclaration(); if (ss != undefined) bUndefined = ss.__getTextFormat(tf, true, this); } if (bUndefined) { if (_global.cascadingStyles) { if (_parent != undefined) bUndefined = _parent.__getTextFormat(tf, false); } } if (bUndefined) bUndefined = _global.style.__getTextFormat(tf, true, this); return bUndefined; } // text objects call this to find out their styles function _getTextFormat(Void):TextFormat { var tf:TextFormat = stylecache.tf; if (tf != undefined) return tf; tf = new TextFormat(); __getTextFormat(tf, true); stylecache.tf = tf; if (enabled == false) { var c:Number = getStyle("disabledColor"); tf.color = c; } return tf; } // Used to see if a styleDeclaration change might apply to // this instance. function getStyleName(Void):String { var name = styleName; // can be object or string if (name != undefined) { if (typeof (name) != "string") { return name.getStyleName(); } else return name; } if (_parent != undefined) return _parent.getStyleName(); else return undefined; } /** * get a style property * * @param String prop name of style property * @return Variant the style value * * @tiptext Gets the style value associated with the style property * @helpid 3965 */ function getStyle(styleProp:String) { var v = undefined; _global.getStyleCounter ++; // see if it is in-line if (this[styleProp] != undefined) { return this[styleProp]; } // check our style sheet var name = styleName; if (name != undefined) { if (typeof (name) != "string") { // went back to Slightly slower for inheriting styles, but required for non-inheriting v = name.getStyle(styleProp); } else { var ss = _global.styles[name]; v = ss.getStyle(styleProp); // if (ss[styleProp] != undefined) // v = ss[styleProp]; } } if (v != undefined) return v; var ss = getClassStyleDeclaration(); if (ss != undefined) v = ss[styleProp]; if (v != undefined) return v; if (_global.cascadingStyles) { if (StyleManager.isInheritingStyle(styleProp) || StyleManager.isColorStyle(styleProp)) { // see if there is a style cache var b:Object = stylecache; if (b != undefined) { // see if the value is on the style cache if (b[styleProp] != undefined) return b[styleProp]; } // if we have a parent get it from the parent if (_parent != undefined) v = _parent.getStyle(styleProp); else { v = _global.style[styleProp]; } if (b != undefined) b[styleProp] = v; return v; } } if (v == undefined) v = _global.style[styleProp]; return v; } /** * @private * Used by component developers to create the list of clip parameters. */ static function mergeClipParameters(o, p):Boolean { for (var i in p) { o[i] = p[i]; } return true; } } 1 C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\core\ComponentVersion.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** static var version:String = "2.0.2.126"; mx.skins.Border: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\skins\Border.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.core.UIObject; /** * Base class for Borders * * - extends UIObject * - Draws borders around objects * * Most implementations use RectBorder, but non-rectangular borders can use this * class or subclass * * @tiptext * @helpid 3321 */ class mx.skins.Border extends UIObject { /** * @private * SymbolName for object */ static var symbolName:String = "Border"; /** * @private * Class used in createClassObject */ static var symbolOwner:Object = mx.skins.Border; /** * name of this class */ var className:String = "Border"; /** * @private * index of border skin */ var tagBorder:Number = 0; /** * @private * instance names for border skin */ var idNames:Array = new Array("border_mc"); // styles supported here var borderStyle:String; /** * @private * constructor */ function Border() { } /** * @private * init variables */ function init(Void):Void { super.init(); } } mx.core.ext.UIComponentExtensions: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\core\ext\UIComponentExtensions.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.core.UIComponent; // extensions to TextField so they look more like UIComponents class mx.core.ext.UIComponentExtensions { static var bExtended = false; static function Extensions():Boolean { if (bExtended == true) return true; bExtended = true; TextField.prototype.setFocus = function() { Selection.setFocus(this); } TextField.prototype.onSetFocus = function(oldFocus) { if (this.tabEnabled != false) { if (this.getFocusManager().bDrawFocus) this.drawFocus(true); } } TextField.prototype.onKillFocus = function(oldFocus) { if (this.tabEnabled != false) { this.drawFocus(false); } } TextField.prototype.drawFocus = UIComponent.prototype.drawFocus; TextField.prototype.getFocusManager = UIComponent.prototype.getFocusManager; mx.managers.OverlappedWindows.enableOverlappedWindows(); mx.styles.CSSSetStyle.enableRunTimeCSS(); // this doesn't need a dependency mx.managers.FocusManager.enableFocusManagement(); } static var UIComponentExtended = Extensions(); static var UIComponentDependency = mx.core.UIComponent; static var FocusManagerDependency = mx.managers.FocusManager; static var OverlappedWindowsDependency = mx.managers.OverlappedWindows; } mx.managers.OverlappedWindows: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\managers\OverlappedWindows.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.managers.SystemManager; import mx.core.UIComponent; class mx.managers.OverlappedWindows { // callback from interval to check for idle static function checkIdle(Void):Void { // if 10 intervals go by w/o any activity then we're idle if (SystemManager.idleFrames > 10) { SystemManager.dispatchEvent({type:"idle"}); } else SystemManager.idleFrames ++; } // our override of addEventListener. Only create idle events if someone is listening static function __addEventListener(e:String, o:Object, l:Function):Void { if (e == "idle") { if (SystemManager.interval == undefined) SystemManager.interval = setInterval(SystemManager.checkIdle, 100); } SystemManager._xAddEventListener(e, o, l); } // our override of removeEventListener. static function __removeEventListener(e:String, o:Object, l:Function):Void { if (e == "idle") { if (SystemManager._xRemoveEventListener(e, o, l) == 0) clearInterval(SystemManager.interval); } else SystemManager._xRemoveEventListener(e, o, l); } // track mouse clicks to see if we change top-level forms static function onMouseDown(Void):Void { // reset the idle counter SystemManager.idleFrames = 0; SystemManager.isMouseDown = true; var newTarget:MovieClip = _root; var depth:Number = undefined; var x:Number = _root._xmouse; var y:Number = _root._ymouse; if (SystemManager.form.modalWindow == undefined) { // activate a window if we need to if (SystemManager.forms.length > 1) { var l:Number = SystemManager.forms.length; var i:Number; for (i = 0; i < l; i++) { var p:MovieClip = SystemManager.forms[i]; if (p._visible) { if (p.hitTest(x, y)) { if (depth == undefined) { depth = p.getDepth(); newTarget = p; } else { if (depth < p.getDepth()) { depth = p.getDepth(); newTarget = p; } } } } } if (newTarget != SystemManager.form) { SystemManager.activate(newTarget); } } } var z:MovieClip = SystemManager.form; z.focusManager._onMouseDown(); } // track mouse moves in order to determine idle static function onMouseMove(Void):Void { SystemManager.idleFrames = 0; } // track mouse moves in order to determine idle static function onMouseUp(Void):Void { SystemManager.isMouseDown = false; SystemManager.idleFrames = 0; } // activation is totally managed by the SystemManager static function activate(f:MovieClip):Void { if (SystemManager.form != undefined) { if (SystemManager.form != f && SystemManager.forms.length > 1) { // switch the active form var z:MovieClip = SystemManager.form; z.focusManager.deactivate(); } } SystemManager.form = f; f.focusManager.activate(); } // activation is totally managed by the SystemManager static function deactivate(f:MovieClip):Void { if (SystemManager.form != undefined) { // if there's more tha one form and this is it, find a new form if (SystemManager.form == f && SystemManager.forms.length > 1) { var z:MovieClip = SystemManager.form; z.focusManager.deactivate(); var l:Number = SystemManager.forms.length; var i:Number; var newForm:MovieClip; for (i = 0; i < l; i++) { if (SystemManager.forms[i] == f) { // use the first form above us in taborder, or the first one below. for (i = i+1; i < l; i++) { // remember the highest visible window. if (SystemManager.forms[i]._visible == true) { newForm = SystemManager.forms[i]; } } SystemManager.form = newForm; break; } else { // remember the highest visible window. if (SystemManager.forms[i]._visible == true) { newForm = SystemManager.forms[i]; } } } var z:MovieClip = SystemManager.form; z.focusManager.activate(); } } } // register a window containing a focus manager static function addFocusManager(f:UIComponent):Void { SystemManager.forms.push(f); SystemManager.activate(f); } // unregister a window containing a focus manager static function removeFocusManager(f:UIComponent):Void { var l:Number = SystemManager.forms.length; var i:Number; for (i = 0; i < l; i++) { if (SystemManager.forms[i] == f) { if (SystemManager.form == f) SystemManager.deactivate(f); SystemManager.forms.splice(i, 1); return; } } } static var initialized:Boolean = false; static function enableOverlappedWindows():Void { if (!initialized) { initialized = true; SystemManager.checkIdle = OverlappedWindows.checkIdle; SystemManager.__addEventListener = OverlappedWindows.__addEventListener; SystemManager.__removeEventListener = OverlappedWindows.__removeEventListener; SystemManager.onMouseDown = OverlappedWindows.onMouseDown; SystemManager.onMouseMove = OverlappedWindows.onMouseMove; SystemManager.onMouseUp = OverlappedWindows.onMouseUp; SystemManager.activate = OverlappedWindows.activate; SystemManager.deactivate = OverlappedWindows.deactivate; SystemManager.addFocusManager = OverlappedWindows.addFocusManager; SystemManager.removeFocusManager = OverlappedWindows.removeFocusManager; } } static var SystemManagerDependency = SystemManager; }?com.mattism.http.xmlrpc.MethodCallImpl: W:\games\comeback\ac_xmlrpc\com\mattism\http\xmlrpc\MethodCallImpl.as/** * @author Matt Shaw * @url http://sf.net/projects/xmlrpcflash * http://www.osflash.org/doku.php?id=xmlrpcflash */ import com.mattism.http.xmlrpc.util.XMLRPCUtils; import com.mattism.http.xmlrpc.util.XMLRPCDataTypes; import com.mattism.http.xmlrpc.MethodCall; class com.mattism.http.xmlrpc.MethodCallImpl extends XML implements MethodCall { private var _VERSION:String = "1.0"; private var _PRODUCT:String = "MethodCallImpl"; private var _TRACE_LEVEL:Number = 3; private var _parameters:Array; private var _name:String; public function MethodCallImpl(){ this.removeParams(); this.debug("MethodCallImpl instance created. (v" + _VERSION + ")"); } public function setName( name:String ):Void { this._name=name; } public function addParam(param_value:Object,param_type:String):Void { this.debug("MethodCallImpl.addParam("+arguments+")"); this._parameters.push({type:param_type,value:param_value}); } public function removeParams( Void ):Void { this._parameters=new Array(); } public function getXml( Void ):XML { this.debug("getXml()"); var ParentNode:XMLNode = new XMLNode(); var ChildNode:XMLNode = new XMLNode(); // Create the ... root node ParentNode = this.createElement("methodCall"); this.appendChild(ParentNode); // Create the ... node ChildNode = this.createElement("methodName"); ChildNode.appendChild(this.createTextNode(this._name)); ParentNode.appendChild(ChildNode); // Create the ... node ChildNode = this.createElement("params"); ParentNode.appendChild(ChildNode); ParentNode = ChildNode; // build nodes that hold all the params this.debug("Render(): Creating the params node."); var i:Number; for (i=0; i> Begin Array"); TypeNode = this.createElement("array"); DataNode = this.createElement("data"); //for (var i:String in parameter.value) { // DataNode.appendChild(this.createParamsNode(parameter.value[i])); //} var i; //:Number for (i=0; i> Begin struct"); TypeNode = this.createElement("struct"); for (var i:String in parameter.value) { var MemberNode:XMLNode = this.createElement("member"); // add name node MemberNode.appendChild(this.createElement("name")); MemberNode.lastChild.appendChild(this.createTextNode(i)); // add value node MemberNode.appendChild(this.createElement("value")); MemberNode.lastChild.appendChild(this.createTextNode(parameter.value[i])); TypeNode.appendChild(MemberNode); } this.debug("CreateParameterNode(): << End struct"); Node.appendChild(TypeNode); return Node; } } } /*/////////////////////////////////////////////////////// fixCDATAParameter() ?: Turns a cdata parameter into a string parameter with CDATA wrapper IN: Possible CDATA parameter OUT: Same parameter, CDATA'ed is necessary ///////////////////////////////////////////////////////*/ private function fixCDATAParameter(parameter:Object):Object{ if (parameter.type==XMLRPCDataTypes.CDATA){ parameter.type=XMLRPCDataTypes.STRING; parameter.value=''; } return parameter; } public function cleanUp():Void { this.removeParams(); this.parseXML(null); } private function debug(a:Object):Void { trace(a); } } mx.styles.CSSStyleDeclaration: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\styles\CSSStyleDeclaration.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.styles.CSSTextStyles; import mx.styles.StyleManager; /** * The class that represents a set of CSS style rules. Note that UIObject * also has a similar implementation. Styles may be set directly on UIObjects or * indirectly by referencing an instance of this class using the styleName property. * @see mx.core.UIObject * * @helpid 3334 * @tiptext A set of CSS style properties and values. */ class mx.styles.CSSStyleDeclaration { // local copy of the Flash TextFormat var _tf:TextFormat; // the name of a CSSStyleDeclaration as found on _global.styles. var styleName:String; // these get replaced by getters and setters via the TextStyles mixin var textAlign:String; var fontWeight:String; var color:Number; var fontFamily:String; var textIndent:Number; var fontStyle:String; var marginLeft:Number; var marginRight:Number; var fontSize:Number; var textDecoration:String; var embedFonts:Boolean; // used to calculate the Flash TextFormat object function __getTextFormat(tf:TextFormat, bAll:Boolean):Boolean { var bUndefined:Boolean = false; if (_tf != undefined) { var j:String; // for each field in the mapping for (j in StyleManager.TextFormatStyleProps) { if (bAll || StyleManager.TextFormatStyleProps[j]) { if (tf[j] == undefined) { // get the value from the textFormat var v = _tf[j]; // store it in the tf if not defined if (v != undefined) { tf[j] = v; } else bUndefined = true; } } } } else bUndefined = true; return bUndefined; } /** * get a style property * * @param String prop name of style property * @return Variant the style value * * @tiptext * @helpid 3335 */ function getStyle(styleProp:String) { var val = this[styleProp]; var c = StyleManager.getColorName(val); return (c==undefined) ? val : c; } static function classConstruct():Boolean { CSSTextStyles.addTextStyles(CSSStyleDeclaration.prototype, true); return true; } static var classConstructed:Boolean = classConstruct(); static var CSSTextStylesDependency = CSSTextStyles; } Cmx.screens.Screen: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\screens\Screen.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.controls.Loader; import mx.events.UIEventDispatcher; import mx.core.ext.UIObjectExtensions; import mx.core.ext.UIComponentExtensions; import mx.events.LowLevelEvents; /** * @tiptext allTransitionsInDone event * @helpid 1850 */ [Event("allTransitionsInDone")] /** * @tiptext allTransitionsOutDone event * @helpid 1851 */ [Event("allTransitionsOutDone")] /** * @tiptext hide event * @helpid 1852 */ [Event("hide")] /** * @tiptext mouseDown event * @helpid 1854 */ [Event("mouseDown")] /** * @tiptext mouseDownSomewhere event * @helpid 1855 */ [Event("mouseDownSomewhere")] /** * @tiptext mouseMove event * @helpid 1856 */ [Event("mouseMove")] /** * @tiptext mouseOut event * @helpid 1904 */ [Event("mouseOut")] /** * @tiptext mouseOver event * @helpid 1858 */ [Event("mouseOver")] /** * @tiptext mouseUp event * @helpid 1859 */ [Event("mouseUp")] /** * @tiptext mouseUpSomewhere event * @helpid 1860 */ [Event("mouseUpSomewhere")] /** * @tiptext reveal event * @helpid 1861 */ [Event("reveal")] /** * Screen class * - extends Loader * - Adds management of contained child Slides and Forms * * @tiptext Base class for Slide and Form. Extends Loader * @helpid 1863 */ [InspectableList("autoLoad","contentPath")] class mx.screens.Screen extends Loader { // SymbolName for object static var symbolName:String = "Screen"; // Class used in createClassObject static var symbolOwner:Object = mx.screens.Screen; // name of this class var className:String = "Screen"; // indicates whether this is a screen private var _isScreen:Boolean = true; // list of children of this screen private var _childScreens:Array; // 0-based index of where this screen is in its parent's childScreens array private var _indexInParent:Number = 0; // object to keep track of all active transitions on this screen private var __transitionManager = null; // Name of the child of this screen in the process of being loaded // through createChild private var _childLoading:String = ""; // all screens have no border so components can contain forms inside them var borderStyle:String = "none"; // ////////////////////////////////////////////////// // // getters/setters // // ////////////////////////////////////////////////// /** * zero-based index of this screen in its parent (getChildScreen) * Read-Only: use createChild() to add new child screens * @tiptext index of this screen in its parent (getChildScreen) * @helpid 1864 */ public function get indexInParent():Number { return _indexInParent; } /** * number of child screens of this screen * Read-Only: use createChild() to add new child screens * @tiptext number of child screens of this screen * @helpid 1865 */ public function get numChildScreens():Number { return _childScreens.length; } /** * True if this screen's _parent is a screen * Read-Only: use createChild() to add new child screens * @tiptext True if this screen's _parent is a screen * @helpid 1866 */ public function get parentIsScreen():Boolean { var retVal:Boolean = ((parentScreen != null) && (parentScreen._isScreen)); return retVal; } /** * Screen containing this screen. May be null for the root screen. * Read-Only: use createChild() to add new child screens * @tiptext Screen containing this screen * @helpid 1867 */ public function get parentScreen():Screen { var theParent:Screen = mx.screens.Screen(_parent); if (theParent == null) { return(null); } else if (theParent._isScreen) { return(theParent); } else { return(null); } } /** * Root of the screen subtree that contains this screen * Read-Only: use createChild() to add new child screens * @tiptext Root of the screen subtree that contains this screen * @helpid 1868 */ public function get rootScreen():Screen { var scrn:Screen = this; while (scrn.parentIsScreen) { scrn = scrn.parentScreen; } return(scrn); } /** * Object that manages the current transitions for this single screen * Read-Only: use transitionManager.start to add new transitions */ public function get transitionManager():Object { return __transitionManager; } /** * Current leaf-most screen containing the global focus * Read-Only: setFocus() to change focus * @tiptext Current leaf-most screen containing the global focus * @helpid 1870 */ public static function get currentFocusedScreen():Screen { var curFocus:Object; curFocus = _root.focusManager.getFocus(); if (!curFocus || (curFocus == undefined)) { curFocus = eval(Selection.getFocus()); } while (curFocus && !curFocus._isScreen) { curFocus = curFocus._parent; } if (curFocus == undefined) return(null); else return(mx.screens.Screen(curFocus)); } // ////////////////////////////////////////////////// // // Public methods // // ////////////////////////////////////////////////// /** * Get the nth child of a screen (zero-based) * @param childIndex which screen to get * @tiptext Get the nth child of a screen * @helpid 1871 */ function getChildScreen(childIndex:Number): Screen { return _childScreens[childIndex]; } // ////////////////////////////////////////////////// // // Private methods // // ////////////////////////////////////////////////// // Overridden to do screen-specific fixups between new screen tree and parent function createChild(className:String, instanceName:String, initProps:Object):MovieClip { var child:MovieClip; _childLoading = instanceName; return super.createChild(className, instanceName, initProps); } // Screen class constructor function Screen() { } // Override from View class. Don't inherit default behavior because screens don't work with // skins and it is not appropriate to draw a focus rect for screens function drawFocus() { } // initialize this screen private function init() { mx.core.ext.UIObjectExtensions.Extensions(); mx.core.ext.UIComponentExtensions.Extensions(); mx.events.LowLevelEvents.enableLowLevelEvents(); _childScreens = []; super.init(); _loadExternalClass = symbolName; scaleContent = false; UIEventDispatcher.initialize(this); if (_parent._childLoading == _name) { // do nothing if this is the root of the slide tree being // loaded...fixup will happen in childLoaded } else if (parentIsScreen) { _parent.registerChildScreen(this); } } // set up the relationship between this screen and a new child screen private function registerChildScreen(scrn:Screen) { scrn._indexInParent = _childScreens.push (scrn) -1 ; } // handle fixups when we load a subtree in from an external movie using createChild() function childLoaded(obj:MovieClip):Void { super.childLoaded(obj); // When we get here, we have loaded a movie clip underneath a // screen node, as a result of createChild(). If we originally // had called myScreen.createChild(myURL, "myChild",...), we end up // with // Presentation1 // ... // myScreen // myChild (a plain old movie clip, not a screen). This is "obj" passed into this routine. // Presentation2 (root of presentation of movie at myURL). // Screen2_1 // Screen2_2 // ... // what we do is set the flag "_isScreenContainer" on myChild and all // the screen acessors, slide navigation, and form operations will ignore it and treat the parent of // Presentation2 as if it were myScreen. Presentation can be // either a Presentation (slide) or Application (form). We do // the slide/form-specific fixups in the overriden childLoaded(). var prop:Object; var loadedMC: MovieClip = null; var realParentScreen:Screen = mx.screens.Screen(obj._parent); // Find the first child movie clip in the loaded movie for (prop in obj) { if ((typeof(obj[prop]) == "movieclip") && obj[prop]._isScreen) { loadedMC = obj[prop]; break; } } // Is this a screens document? if (loadedMC._isScreen) { // Fixup loaded root to be at proper screen coordinates if (!scaleContent) { var pt:Object = new Object(); pt.x = obj.x; pt.y = obj.y; this.globalToLocal(pt); obj._x = pt.x; obj._y = pt.y } else { var pt:Object = new Object(); pt.x = x; pt.y = y; _parent.localToGlobal(pt); obj.globalToLocal(pt); loadedMC._x = pt.x; loadedMC._y = pt.y; } // Make the real parent think the loaded screen document // root is actually its own child loadedMC._indexInParent = realParentScreen._childScreens.push(loadedMC) - 1; obj._isScreenContainer = true; obj._containedScreen = loadedMC; } realParentScreen._childLoading = ""; } // Never scale the loader/parent screen function doScaleLoader():Void { } // override to create a "fake" border movie clip -- screens do // not support borders function createChildren():Void { border_mc = new mx.skins.RectBorder(); border_mc.__borderMetrics = {top: 0, left: 0, bottom: 0, right: 0}; super.createChildren(); } // override to propagate events we receive from the transition // manager to on(allTransitionsInDone) handlers defined on this // screen. function allTransitionsInDone() { this.dispatchEvent ({type:"allTransitionsInDone", target:this}); } // override to propagate events we receive from the transition // manager to on(allTransitionsOutDone) handlers defined on this // screen. function allTransitionsOutDone() { this.dispatchEvent ({type:"allTransitionsOutDone", target:this}); } // Override from View class. destroy n'th child screen function destroyChildAt(childIndex:Number):Void { _childScreens.splice(childIndex, 1); super.destroyChildAt(childIndex); } } mx.core.View: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\core\View.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.events.UIEventDispatcher; import mx.core.UIObject; import mx.skins.RectBorder; import mx.core.UIComponent; import mx.managers.DepthManager; /** * base class for views/containers * * @helpid 3294 * @tiptext */ class mx.core.View extends UIComponent { /** * @private * SymbolName for object */ static var symbolName:String = "View"; /** * @private * Class used in createClassObject */ static var symbolOwner:Object = mx.core.View; // Version string #include "../core/ComponentVersion.as" /** * name of this class */ var className:String = "View"; /** * @private * the border object */ var border_mc:RectBorder; // internal object that gives initial size var boundingBox_mc:MovieClip; // value of tabIndex var __tabIndex:Number; // Base for all children names (_child0 - _childN) static var childNameBase:String = "_child"; /* loading external content takes place in two stages: emptying the existing content, and loading the new content. We track all loading using an object that moves from one stage to the other. */ // the last used depth for the children var depth:Number; // from DepthManager; var createClassChildAtDepth:Function; // from ExternalContent var loadExternal:Function; // whether we've been layed out private var hasBeenLayedOut:Boolean = false; // className used to construct placeholder clip for loadExternal() private var _loadExternalClass:String = "UIComponent"; function View() { } // initialize variables function init():Void { super.init(); // by default containers cannot receive focus but their children can tabChildren = true; tabEnabled = false; boundingBox_mc._visible = false; boundingBox_mc._width = boundingBox_mc._height = 0; } // respond to size changes function size():Void { // border covers the whole thing border_mc.move(0, 0); border_mc.setSize(width, height); // layout the content doLayout(); } // redraw by re-laying out function draw():Void { size(); } /** * get the number of children in this view * @tiptext Returns the number of children * @helpid 3400 */ function get numChildren():Number { var childName:String = childNameBase; for (var i:Number = 0; true; i++) { if (this[childName + i] == undefined) return i; } // Should never get here... return -1; } /** * By default, views are not tabstops so tabIndex will * be undefined. However, some views can be tabstops and will therefore * return a tabIndex */ function get tabIndex():Number { return tabEnabled ? __tabIndex : undefined; } /* removed to allow for the proper function of accessibility */ //function set tabIndex(n:Number) //{ // __tabIndex = n; //} /** * @private * override this to find out when a new object is added that needs to be layed out * @param object the layout object */ function addLayoutObject(object:Object):Void { //trace("View.addLayoutObject"); } /** * add a new child object * @param className the name of the symbol, a reference to a class, or file path or URL to the external content * @param instanceName the instance name of the child * @param initProps object containing initialization properties * @return reference to the child object */ function createChild(className, instanceName:String, initProps:Object):MovieClip { if (depth == undefined) depth = 1; // Attach our object var newObj: MovieClip; if (typeof(className) == "string") newObj = createObject(className, instanceName, depth++, initProps); else newObj = createClassObject(className, instanceName, depth++, initProps); // See if we need to load it if (newObj == undefined) { newObj = loadExternal(className, _loadExternalClass, instanceName, depth++, initProps); } else { // Make an alias for ordered access //trace("View.createChild: this[" + childNameBase + numChildren + "] = " + newObj); this[childNameBase + numChildren] = newObj; newObj._complete = true; childLoaded(newObj); } // Finally, tell the layout manager about this new object. addLayoutObject(newObj); return newObj; } /** * get the Nth child object * @param childIndex a number from 0 to N-1 * @return a reference to the child * @tiptext Returns the child at the specified position * @helpid 3403 */ function getChildAt(childIndex:Number):UIObject { //trace("View.getChildAt"); return this[childNameBase + childIndex]; } /** * destroy the Nth child object. Remaining child objects get renumbered * @param childIndex a number from 0 to N-1 * @return a reference to the child */ function destroyChildAt(childIndex:Number):Void { if (!(childIndex >= 0 && childIndex < numChildren)) return; var childName:String = childNameBase + childIndex; var nChildren:Number = numChildren; // Find the real child object var slot:String; // ??? for (slot in this) { if (slot == childName) { // Disconnect our _childN alias from the original childName = ""; // Delete the child destroyObject(slot); // Done. break; } } // Shuffle all higher numbered children down for (var i:Number = Number(childIndex); i < (nChildren - 1); i++) { this[childNameBase + i] = this[childNameBase + (i + 1)]; } // Delete the leftover slot delete this[childNameBase + (nChildren - 1)]; depth--; } // layout the first time function initLayout():Void { if (!hasBeenLayedOut) { // Default is to just call doLayout. Override if you need to // do additional processing upon initial layout. doLayout(); } } /** * @private * override this to layout the content */ function doLayout():Void { hasBeenLayedOut = true; } // create the border behind everything and schedule first layout function createChildren():Void { if (border_mc == undefined) border_mc = createClassChildAtDepth(_global.styles.rectBorderClass, DepthManager.kBottom, {styleName : this}); // The constructors for this object's children haven't executed yet. // Wait until later to register the children with the layout manager. doLater(this, "initLayout"); } // anything that gets loadmovie'd is just a movieclip. There's no way to make it a component except by doing this function convertToUIObject(obj:MovieClip):Void { } /** * @private * this gets called when the child is finished loading * @param obj the loaded child */ function childLoaded(obj:MovieClip):Void { convertToUIObject(obj); } // this never gets called, it just makes sure the external content module gets loaded static function extension() { mx.core.ExternalContent.enableExternalContent(); } } C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\core\ComponentVersion.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** static var version:String = "2.0.2.126"; G!mx.core.ExternalContent: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\core\ExternalContent.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.core.UIObject; import mx.events.UIEventDispatcher; import mx.core.View; class mx.core.ExternalContent { // list of things waiting to be emptied // key is instanceID // value is { obj: , url: , complete: } var prepList:Object; // list of things currently loading // key is instanceID // value is { obj: , url: , complete: } var loadList:Object; // list of things completely loaded. // key is instanceID // value is {obj: , url: , complete: } var loadedList:Object; var numChildren:Number; var doLater:Function; var childLoaded:Function; var createObject:Function; var dispatchEvent:Function; function loadExternal(url:String, placeholderClassName:String, instanceName:String, depth:Number, initProps:Object):MovieClip { var newObj:MovieClip; newObj = createObject(placeholderClassName, instanceName, depth, initProps); // Make an alias for ordered access //trace("View.createChild: this[" + numChildren + "] = " + newObj); this[View.childNameBase + numChildren] = newObj; if (prepList == undefined) prepList = new Object(); prepList[instanceName] = { obj: newObj, url: url, complete: false, initProps: initProps }; prepareToLoadMovie(newObj); return newObj; } // request to empty the contents before loading new content function prepareToLoadMovie(obj:MovieClip):Void { obj.unloadMovie(); doLater(this, "waitForUnload"); } // checkt to see if we're empty function waitForUnload():Void { var i:String; for (i in prepList) { var x:Object = prepList[i]; if (x.obj.getBytesTotal() == 0) { if (loadList == undefined) loadList = new Object(); loadList[i] = x; x.obj.loadMovie(x.url); delete prepList[i]; doLater(this, "checkLoadProgress"); } else { doLater(this, "waitForUnload"); } } } // now that we're loading new content, see how we're doing function checkLoadProgress():Void { var contentLoading = false; var i:String; for (i in loadList) { var x:Object = loadList[i]; x.loaded = x.obj.getBytesLoaded(); x.total = x.obj.getBytesTotal(); if (x.total > 0) { x.obj._visible = false; dispatchEvent({type: "progress", target: x.obj, current: x.loaded, total: x.total}); if (x.loaded == x.total) { if (loadedList == undefined) loadedList = new Object(); loadedList[i] = x; delete loadList[i]; doLater(this, "contentLoaded"); } } else if (x.total == -1) { // sometimes you get a -1 before it starts loading if (x.failedOnce != undefined) { x.failedOnce++; if (x.failedOnce > 3) { dispatchEvent({type: "complete", target: x.obj, current: x.loaded, total: x.total}); //trace("total == -1 loaded = " + x.loaded); delete loadList[i]; delete x; } } else { x.failedOnce = 0; } } contentLoading = true; } if(contentLoading) { doLater(this, "checkLoadProgress"); } } // completely loaded. Had to wait for a bit to make sure _width and _height were set correctly. function contentLoaded():Void { var i:String; for (i in loadedList) { var x:Object = loadedList[i]; //trace("loaded..." + i); x.obj._visible = true; x.obj._complete = true; // Initialize properties, only when loading external movies. var prop:String; for (prop in x.initProps) x.obj[prop] = x.initProps[prop]; childLoaded(x.obj); dispatchEvent({type: "complete", target: x.obj, current: x.loaded, total: x.total}); delete loadedList[i]; delete x; } } // anything that gets loadmovie'd is just a movieclip. There's no way to make it a component except by doing this function convertToUIObject(obj:MovieClip):Void { if (obj.setSize == undefined) { var ui:Object = UIObject.prototype; obj.addProperty("width", ui.__get__width, null); obj.addProperty("height", ui.__get__height, null); obj.addProperty("left", ui.__get__left, null); obj.addProperty("x", ui.__get__x, null); obj.addProperty("top", ui.__get__top, null); obj.addProperty("y", ui.__get__y, null); obj.addProperty("right", ui.__get__right, null); obj.addProperty("bottom", ui.__get__bottom, null); // add other things to the MovieClip so it looks more like a UIObject obj.addProperty("visible", ui.__get__visible, ui.__set__visible); obj.move = UIObject.prototype.move; obj.setSize = UIObject.prototype.setSize; obj.size = UIObject.prototype.size; UIEventDispatcher.initialize(obj); } } static function enableExternalContent():Void { } static function classConstruct():Boolean { var v = View.prototype; var p = ExternalContent.prototype; v.loadExternal = p.loadExternal; v.prepareToLoadMovie = p.prepareToLoadMovie; v.waitForUnload = p.waitForUnload; v.checkLoadProgress = p.checkLoadProgress; v.contentLoaded = p.contentLoaded; v.convertToUIObject = p.convertToUIObject; return true; } static var classConstructed:Boolean = classConstruct(); static var ViewDependency = View; }2#C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\core\ComponentVersion.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** static var version:String = "2.0.2.126"; %com.mattism.http.xmlrpc.Connection: W:\games\comeback\ac_xmlrpc\com\mattism\http\xmlrpc\Connection.as/** * @author Matt Shaw * @url http://sf.net/projects/xmlrpcflash * http://www.osflash.org/doku.php?id=xmlrpcflash * * @description This is the expected interface for a Connection class * implementation used for XMLRPC. Any class that wants to behave * as an XMLRPC Connection needs to implement this interface. */ import com.mattism.http.xmlrpc.MethodFault; interface com.mattism.http.xmlrpc.Connection { /** * Sets the URL of the remote XMLRPC service * * @description This URL will be the path to your remote XMLRPC * . service that you have setup. Refer to your specific XMLRPC * server implementation for more info. * * @usage myConn.setUrl("http://mysite.com/xmlrpcProxy"); * @param A URL (String) */ public function setUrl( s:String ):Void; /** * Gets the URL of the remote XMLRPC service * * @description Returns the URL set by the user. Returns undefined if no URL * has been specified. * * @usage var url:String = myConn.getUrl(); * @param None.. */ public function getUrl( Void ):String; /** * Calls a remote method at the URL specified via {@link #setUrl} * * @description Calls a remote method at the URL specified via {@link #setUrl} * * @usage myConn.call("getMenu"); * @param A remote method name (String). */ public function call( method:String ):Void; /** * Invoked when a remote call is has successfully ended. * * @description This event handler should be overriden by the end-coder. This * event is only fired if everything goes well. Otherwise, {@link #onFault} * or {@link onFail} are fired accordingly. * * @usage * var myOnLoad = function(result:Object){ * trace( result ); * } * myConn.onLoad = myOnLoad * * @param The object returned by the remote method. */ public function onLoad( result:Object ):Void; /** * Invoked when a the remote server encounters a fault while trying to process your request * * @description This event handler should be overriden by the end-coder. The event * handler is passed a {@link MethodFault} object as the first argument. This * event is only fired when a the remote server encounters a * fault while trying to process your request. This event is not fired * when there is a problem connecting to the server. For that, see {@link #onFail}. * * @usage * var myOnFault = function(mf:MethodFault){ * trace("XMLRPC Fault (" + fault.getFaultCode() + "):\n" + fault.getFaultString()); * } * myConn.onFault = myOnFault * * @param The object returned by the remote method. */ public function onFault( fault:MethodFault):Void; /** * Invoked when there is a problem connecting to the server. * * @description This event handler should be overriden by the end-coder. The event * handler is passed an error object which contains pretty much no information. * All that can be said is that there was an error trying to reach the XMLRPC * server. This event is not fired * when there is a server fault. For that, see {@link #onFault}. * * @usage * var myOnFault = function(mf:MethodFault){ * trace("XMLRPC Fault (" + fault.getFaultCode() + "):\n" + fault.getFaultString()); * } * myConn.onFault = myOnFault * * @param The object returned by the remote method. */ public function onFail( error:Object ):Void; public function addParam( o:Object, type:String ):Void; }['mx.styles.StyleManager: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\styles\StyleManager.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** /** * The class that manages: * -which CSS style properties are inheriting * -which style properties are colors and therefore get special handling * -a list of strings that are aliases for color values * * @helpid 3347 * @tiptext Management of CSS style properties. */ class mx.styles.StyleManager { // initialize set of inheriting non-color styles. This is not the complete set // from CSS. Some of the omitted we don't support at all, others may be added later // as needed. static var inheritingStyles:Object = { color: true, direction: true, fontFamily: true, fontSize: true, fontStyle: true, fontWeight: true, textAlign: true, textIndent: true }; // initialize set of inheriting color styles. static var colorStyles:Object = { barColor: true, trackColor: true, borderColor: true, buttonColor: true, color: true, dateHeaderColor: true, dateRollOverColor: true, disabledColor: true, fillColor: true, highlightColor: true, scrollTrackColor: true, selectedDateColor: true, shadowColor: true, strokeColor: true, symbolBackgroundColor: true, symbolBackgroundDisabledColor: true, symbolBackgroundPressedColor: true, symbolColor: true, symbolDisabledColor: true, themeColor:true, todayIndicatorColor: true, shadowCapColor:true, borderCapColor:true, focusColor:true }; // initialize set of color names. static var colorNames:Object = { black: 0x000000, white: 0xFFFFFF, red: 0xFF0000, green: 0x00FF00, blue: 0x0000FF, magenta: 0xFF00FF, yellow: 0xFFFF00, cyan: 0x00FFFF, haloGreen: 0x80FF4D, haloBlue: 0x2BF5F5, haloOrange: 0xFFC200 }; // object used to determine which Flash TextFormat property values are // inheriting (calculated by examining the parent if not defined on the child) static var TextFormatStyleProps:Object = { font: true, size: true, color: true, leftMargin: false, rightMargin: false, italic: true, bold: true, align: true, indent: true, underline: false, embedFonts: false }; // object used to map CSS style properties to Flash TextFormat properties static var TextStyleMap:Object = { textAlign: true, fontWeight: true, color: true, fontFamily: true, textIndent: true, fontStyle: true, lineHeight: true, marginLeft: true, marginRight: true, fontSize: true, textDecoration: true, // not really in TextFormat, but here as an optimization embedFonts: true }; /** * @private * add to the list of styles that can inherit values from their parents * * warning: watch out for name collisions otherwise you will * cause lots of extra processing if an already used style * becomes inheriting. * * @param styleName the style name */ static function registerInheritingStyle(styleName:String):Void { StyleManager.inheritingStyles[styleName] = true; } /** * @private * returns true if style is inheriting. * * @param styleName the style name * @return Boolean */ static function isInheritingStyle(styleName:String):Boolean { return (StyleManager.inheritingStyles[styleName] == true); } /** * @private * add to the list of styles that are colors so they can be specially handled * * @param styleName the style name */ static function registerColorStyle(styleName:String):Void { StyleManager.colorStyles[styleName] = true; } /** * @private * returns true if style is a color style. * * @param styleName the style name * @return Boolean */ static function isColorStyle(styleName:String):Boolean { return (StyleManager.colorStyles[styleName] == true); } /** * @private * add to the list of aliases for colors * * @param colorName the style name (e.g. "blue") * @param colorValue the color value (e.g. 0x0000FF) */ static function registerColorName(colorName:String, colorValue:Number):Void { StyleManager.colorNames[colorName] = colorValue; } /** * @private * returns true if colorName is an alias for a color. * * @param colorName the color name * @return Boolean */ static function isColorName(colorName:String):Boolean { return (StyleManager.colorNames[colorName] != undefined) } /** * @private * returns true if colorName is an alias for a color. * * @param colorName the color name * @return Number (the color value) */ static function getColorName(colorName:String):Number { return StyleManager.colorNames[colorName]; } } *com.mattism.http.xmlrpc.ConnectionImpl: W:\games\comeback\ac_xmlrpc\com\mattism\http\xmlrpc\ConnectionImpl.as/** * @author Matt Shaw * @url http://sf.net/projects/xmlrpcflash * http://www.osflash.org/doku.php?id=xmlrpcflash */ import mx.utils.Delegate; import com.mattism.http.xmlrpc.Connection; import com.mattism.http.xmlrpc.MethodCall; import com.mattism.http.xmlrpc.MethodCallImpl; import com.mattism.http.xmlrpc.MethodFault; import com.mattism.http.xmlrpc.MethodFaultImpl; import com.mattism.http.xmlrpc.Parser; import com.mattism.http.xmlrpc.ParserImpl; class com.mattism.http.xmlrpc.ConnectionImpl implements Connection { // Metadata private var _VERSION:String = "1.0.0"; private var _PRODUCT:String = "ConnectionImpl"; private var ERROR_NO_URL:String = "No URL was specified for XMLRPCall."; private var _url:String; private var _method:MethodCall; private var _rpc_response:Object; private var _parser:Parser; private var _response:XML; public function ConnectionImpl( url:String ) { //prepare method response handler //this.ignoreWhite = true; //init method this._method = new MethodCallImpl(); //init parser this._parser = new ParserImpl(); if (url){ this.setUrl( url ); } } public function call( method:String ):Void { this._call( method ); } private function _call( method:String ):Void { if ( !this.getUrl() ){ trace(ERROR_NO_URL); throw Error(ERROR_NO_URL); } else { this.debug( "Call -> " + method+"() -> " + this.getUrl()); this._response = new XML(); this._response.ignoreWhite = true; this._response.onLoad = Delegate.create( this, this._onLoad ); this._method.setName( method ); var x:XML = this._method.getXml(); x.sendAndLoad( this.getUrl(), this._response ); } } private function _onLoad( success:Boolean ):Void { if ( success ) { var a:Object = this.parseResponse(); // Tiny Hack to pas to onFault if (a.faultCode){ var mf:MethodFault = new MethodFaultImpl( a ); this.onFault( mf ); } else { this.onLoad( a ); } } else { this._onFail(); } } private function _onFail():Void { this.debug( "onFailed()"); this.onFail(); } private function parseResponse():Object { return this._parser.parse( this._response );} //public function __resolve( method:String ):Void { this._call( method ); } public function getUrl( Void ):String { return this._url; } public function setUrl( a:String ):Void { this._url = a; } public function addParam( o:Object, type:String ):Void { this._method.addParam( o,type ); } public function removeParams():Void { this._method.removeParams(); } public function toString():String { return ''; } private function debug( a:String ):Void { /*trace( this._PRODUCT + " -> " + a )*/ } public function onLoad( result:Object ):Void {} public function onFail( error:Object ):Void {} public function onFault( fault:MethodFault ):Void { trace("XMLRPC Fault (" + fault.getFaultCode() + "):\n" + fault.getFaultString()); } }N,mx.managers.FocusManager: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\managers\FocusManager.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.core.UIObject; import mx.core.UIComponent; import mx.controls.SimpleButton; import mx.managers.SystemManager; /* new rules as of 5/4/03: -do not put a input textfield in a movieclip w/o making the movieclip a container (tabChildren = true, tabEnabled = false) and setting focusTextField to point to that textfield. -add custom drawFocus to your textfield so it draws focus around your component usually by calling _parent.drawFocus(); */ /** * Class for managing the focus on components. Each top-level window has a focus manager. * * @helpid 3039 * @tiptext */ class mx.managers.FocusManager extends UIComponent { /** * @private * SymbolName for object */ static var symbolName:String = "FocusManager"; /** * @private * Class used in createClassObject */ static var symbolOwner:Object = mx.managers.FocusManager; // Version string #include "../core/ComponentVersion.as" /** * name of this class */ var className:String = "FocusManager"; // true if no component has the focus var bNeedFocus:Boolean = false; // true if we should call drawFocus on the components. // when tabbing, this is true, when mousing, this is false var bDrawFocus:Boolean = false; // the top-level form that this focus manager is responsible for var form; // the object that last had focus var lastFocus:Object; // the object that was last tabbed to var lastTabFocus:Object; // the last object according to Selection var lastSelFocus:Object; // internal object that captures the tab key private var tabCapture:MovieClip; // used to make sure we don't find something in the search twice private var _searchKey:Number; // Note: lots of things are declared as Object because the thing with focus can be a TextField or a MovieClip // last thing that was focused (or parent of last thing if we've already searched its siblings) private var _lastTarget:Object; // first, last, next and previous nodes in the tree of objects based on z-order private var _firstNode:Object; private var _lastNode:Object; private var _nextNode:Object; private var _prevNode:Object; // first, last, next and previous nodes in the tree based on tab index private var _firstObj:Object; private var _lastObj:Object; private var _nextObj:Object; private var _prevObj:Object; // set when we find the lastTarget in the tree so we know the thing we just saw is the previous node private var _needPrev:Boolean; // set when we find the lastTarget in the tree so we know that the next thing we see is the next node private var _nextIsNext:Boolean; // constantly changes to mark the last thing we saw private var _lastx:Object; // a list of things at this tabIndex that we've already tabbed to so we can deal with multiple objects // at the same tabIndex before moving to the next one private var _foundList:Object; // last mouse position var lastMouse:Object; // pointer to the original defaultPushButton. The actual default pushbutton changes if focus is given to another // pushbutton, but switches back to the original if focus is not on a button var __defaultPushButton:SimpleButton; // the current default pushbutton var defPushButton:SimpleButton; // TextArea and other components that want the enter key disable the focus manager's enter key handling var defaultPushButtonEnabled:Boolean = true; private var activated:Boolean = true; /** * get or set the original default pushbutton. This may not be the actual button that is the default */ function get defaultPushButton():SimpleButton { return __defaultPushButton; } function set defaultPushButton(x:SimpleButton) { if (x != __defaultPushButton) { __defaultPushButton.emphasized = false; __defaultPushButton = x; defPushButton = x; x.emphasized = true; } } /** * get the highest tab index currently used in this focus manager's form or subform * * @param o the form or subform * @return Number the highest tab index currently used */ function getMaxTabIndex(o:UIComponent):Number { var z:Number = 0; var i:String; for (i in o) { var x = o[i]; if (x._parent == o) { if (x.tabIndex != undefined) { if (x.tabIndex > z) z = x.tabIndex; } if (x.tabChildren == true) { var y:Number = getMaxTabIndex(x); if (y > z) z = y; } } } return z; } // internal overridable calculation of the next tab index to use function getNextTabIndex(Void):Number { return getMaxTabIndex(form) + 1; } /** * get the next unique tab index to use on this form */ function get nextTabIndex():Number { return getNextTabIndex(); } function FocusManager() { } // the focus manager stays off screen. If the stage resizes, the focus manager must move as well function relocate(Void):Void { var s:Object = SystemManager.screen; move(s.x - 1, s.y - 1); } // initialize variables and make sure we aren't also a tabstop function init(Void):Void { super.init(); tabEnabled = false; // make ourselves small and transparent // we can't be invisible else we won't get keystrokes. _width = _height = 1; _x = _y = -1; _alpha = 0; _parent.focusManager = this;// this property name is reserved in the parent _parent.tabChildren = true; // make sure parent is a container _parent.tabEnabled = false; // make sure parent is a container // our immediate parent is the form form = _parent; _parent.addEventListener("hide", this); _parent.addEventListener("reveal", this); // make sure the system manager is running so it can tell us about // mouse clicks and stage size changes SystemManager.init(); SystemManager.addFocusManager(form); tabCapture.tabIndex = 0; // watch for changes to enabled watch("enabled", enabledChanged); Selection.addListener(this); lastMouse = new Object(); _global.ASSetPropFlags(_parent, "focusManager",1); _global.ASSetPropFlags(_parent, "tabChildren",1); _global.ASSetPropFlags(_parent, "tabEnabled",1); } // a FocusManager has an internal tabKey capture mechanism that is enabled by setting its TabIndex to undefined or not function enabledChanged(id:String, oldValue:Boolean, newValue:Boolean):Boolean { // trace(this + ".enabled set to " + newValue); _visible = newValue; return newValue; } // the SystemManager manages activation of forms if more than one is visible at the same time function activate(Void):Void { // trace("activating: " + this + ", lastFocus = " + lastFocus); // listen for enter key for default pushbutton Key.addListener(this); // listen for focus changes // Selection.addListener(this); // listen for tab keys activated = _visible = true; // restore focus to the last control that had it if there was one if (lastFocus != undefined) { bNeedFocus = true; // restore focus if mouse is not down. this means that we probably // got called due to handleEvent firing. if (!SystemManager.isMouseDown) { doLater(this, "restoreFocus"); } } } // the SystemManager manages activation of forms if more than one is visible at the same time function deactivate(Void):Void { // trace("deactivating: " + this); Key.removeListener(this); //Selection.removeListener(this); activated = _visible = false; var o = getSelectionFocus(); var f = getActualFocus(o); if (isOurFocus(f)) { lastSelFocus = o; lastFocus = f; } // trace("lastFocus = " + lastFocus); // flush any pending work cancelAllDoLaters(); } function isOurFocus(o:Object):Boolean { if (o.focusManager == this) return true; // see if it is in our focus ring while (o != undefined) { // it isn't if it has a focusManager of its own if (o.focusManager != undefined) { return false; } // it is if its parentage is our parent if (o._parent == _parent) { return true; } o = o._parent; } return false; } // if you were in a textfield and clicked somewhere other than a textfield, // the player sets focus automatically to null. // we take note of this and if focus doesn't end up // in a movieclip, we set focus back to the textfield. function onSetFocus(o:Object, n:Object):Void { // trace("o = " + o + " n = " + n + " f = " + getFocus()); if (n == null) { if (activated) bNeedFocus = true; } else { // focus is somewhere it should be var f = getFocus(); if (isOurFocus(f)) { bNeedFocus = false; lastFocus = f; lastSelFocus = n; } } } // not only do we restore focus back to the last thing that had it // but if it is a textfield, we also restore the selection function restoreFocus(Void):Void { // trace(this + " restoreFocus " + lastFocus); var hscroll = lastSelFocus.hscroll; if (hscroll != undefined) { var vscroll = lastSelFocus.scroll; var bg = lastSelFocus.background; } lastFocus.setFocus(); // we reset a couple of fields onto the Selection object var currentSelection:Object = Selection; Selection.setSelection(currentSelection.lastBeginIndex, currentSelection.lastEndIndex); if (hscroll != undefined) { lastSelFocus.scroll = vscroll; lastSelFocus.hscroll = hscroll; lastSelFocus.background = bg; } } // tell the system manager that we're going bye-bye function onUnload(Void):Void { SystemManager.removeFocusManager(form); } /** * set the focus to an object. Recommended instead of using Selection object * @param the object to receive focus * * @tiptext * @helpid 3040 */ function setFocus(o:Object):Void { if (o == null) Selection.setFocus(null); else { if (o.setFocus == undefined) { Selection.setFocus(o); } else { o.setFocus(); } } } // a component may set focus to an internal object that doesn't have tabIndex, etc. We // need to find out what component owns this internal object function getActualFocus(o:Object):Object { var p:MovieClip = o._parent; while (p != undefined) { if (p.focusTextField != undefined) { while (p.focusTextField != undefined) { o = p; p = p._parent; if (p == undefined) return undefined; // should never get here. top level windows can't have focusable textfields if (p.focusTextField == undefined) return o; // things that wrap textfields have tabEnabled == false; } } if (p.tabEnabled != true) // containers must have tabEnabled == false { // accordion has tabEnabled = true, but wraps each // pane in a view with tabEnabled = false; return o; } o = p; p = o._parent; } // tab was set somewhere else return undefined; } function getSelectionFocus():Object { var m:String = Selection.getFocus(); var o:Object = eval(m); return o; } /** * get the component that current has the focus. Recommended instead of using Selection object * because it will tell you which component. Selection might return a subobject in that component * @return the object that has focus * * @tiptext * @helpid 3041 */ function getFocus(Void):Object { var o:Object = getSelectionFocus(); return getActualFocus(o); } // instead of caching and updating the tab list, we simply scan for them on each Tab key. There seems to be // enough time to run this calculation // @param p the node in the tree to search // @param index the tabindex of the last focused item in case there's another item with the same tabindex // @param groupName groupname of the last focused item so we won't tab to other things in that group // @param dir true if Tab, false if shift-Tab // @param lookup true if we're not at the top level and need to search the parents as well // @param firstChild true if we haven't found the first child yet function walkTree(p:MovieClip, index:Number, groupName:String, dir:Boolean, lookup:Boolean, firstChild:Boolean):Void { // trace("walking " + p); var firsttime:Boolean = true; var i:String; for (i in p) { var x = p[i]; // if it is a child of p and is enabled, visible and has tabEnabled or is a button... if (x._parent == p && x.enabled != false && x._visible != false && (x.tabEnabled == true || (x.tabEnabled != false && (x.onPress != undefined || x.onRelease != undefined || x.onReleaseOutside != undefined || x.onDragOut != undefined || x.onDragOver != undefined || x.onRollOver != undefined || x.onRollOut != undefined || (x instanceof TextField))))) { // skip if we've already seen it if (x._searchKey == _searchKey) continue; // mark it as seen x._searchKey = _searchKey; // trace("considering " + x); // this first section handles the xxxNode variables which are related to position in the tree if (x != _lastTarget) { if ((x.groupName != undefined || groupName != undefined) && x.groupName == groupName) { // you are not a candidate if you had the same groupname as the lasttarget continue; } // if this is an unselectable textfield, pass if ((x instanceof TextField) && x.selectable == false) continue; if (firsttime || (x.groupName != undefined && x.groupName == _firstNode.groupName && x.selected == true)) { // otherwise, if this is the first time through the loop, remember this as the first thing // we saw. The tree walk will keep setting this until it actually points to the first thing // in the tree. if (firstChild) { _firstNode = x; // trace("setting firstNode to " + x); firstChild = false; } // don't reset firsttime just yet, it is needed at the end of the loop } // if we need to save the next thing we see if (_nextIsNext == true) { if ((x.groupName != undefined && x.groupName == _nextNode.groupName && x.selected == true) || (_nextNode == undefined && (x.groupName == undefined || x.groupName != undefined && x.groupName != groupName))) // save it { // trace("setting nextNode to " + x); _nextNode = x; } } // remember this as the last thing we've seen if it is a candidate if (x.groupName == undefined || groupName != x.groupName) { if (_lastx.groupName != undefined && x.groupName == _lastx.groupName && _lastx.selected == true); else { // trace("setting lastx to " + x); _lastx = x; } } } else // we found the last focused object in the tree { // mark us as needing to remember the next thing we see, and no longer needing the previous thing // trace("found last focused, setting prevNode to " + _lastx); _prevNode = _lastx; _needPrev = false; _nextIsNext = true; } // the second section deals with items with tabindexes if (x.tabIndex != undefined) { // if the tabindex matches... if (x.tabIndex == index) { // if we haven't visited this one before, this is the new best candidate if (_foundList[x._name] == undefined) { if (_needPrev) { // trace("setting prevObj to " + x); _prevObj = x; _needPrev = false; } // trace("setting nextObj to " + x); _nextObj = x; } } // otherwise, track the lowest next tabindex we find if (dir && x.tabIndex > index) { // replace it if it has a lower tabindex and one of them has no groupname or different groupnames // if the both have groupnames and the new candidate is selected or has a lower tabIndex if (_nextObj == undefined || (_nextObj.tabIndex > x.tabIndex && (x.groupName == undefined || _nextObj.groupName == undefined || x.groupName != _nextObj.groupName)) || (_nextObj.groupName != undefined && _nextObj.groupName == x.groupName && _nextObj.selected != true && (x.selected == true || _nextObj.tabIndex > x.tabIndex))) { // trace("setting nextObj to " + x); _nextObj = x; } } // or the highest if we're going backwards else if (!dir && x.tabIndex < index) { if (_prevObj == undefined || (_prevObj.tabIndex < x.tabIndex && (x.groupName == undefined || _prevObj.groupName == undefined || x.groupName != _prevObj.groupName)) || (_prevObj.groupName != undefined && _prevObj.groupName == x.groupName && _prevObj.selected != true && (x.selected == true || _prevObj.tabIndex < x.tabIndex))) { // trace("setting prevObj to " + x); _prevObj = x; } } // also look for the lowest number if (_firstObj == undefined || (x.tabIndex < _firstObj.tabIndex && (x.groupName == undefined || _firstObj.groupName == undefined || x.groupName != _firstObj.groupName)) || (_firstObj.groupName != undefined && _firstObj.groupName == x.groupName && _firstObj.selected != true && (x.selected == true || x.tabIndex < _firstObj.tabIndex))) { // trace("setting firstObj to " + x); _firstObj = x; } // and the highest number if (_lastObj == undefined || (x.tabIndex > _lastObj.tabIndex && (x.groupName == undefined || _lastObj.groupName == undefined || x.groupName != _lastObj.groupName)) || (_lastObj.groupName != undefined && _lastObj.groupName == x.groupName && _lastObj.selected != true && (x.selected == true || x.tabIndex > _lastObj.tabIndex))) { // trace("setting lastObj to " + x); _lastObj = x; } } // if there's children look in there if (x.tabChildren) { getTabCandidateFromChildren(x, index, groupName, dir, firsttime && firstChild) } // this goes down here so it can be used in child calls firsttime = false; } else if (x._parent == p && x.tabChildren == true && x._visible != false) { if (x == _lastTarget) { // don't look in here if we've already looked here if (x._searchKey == _searchKey) continue; // mark it as having been seen x._searchKey = _searchKey; if (_prevNode == undefined) { // trace("found lastTarget: " + x); // only override if _lastx isn't a descendant of lasttarget // otherwise we're still looking up the tree var n = _lastx; var bIsChild = false; while (n != undefined) { if (n == x) { bIsChild = true; break; } n = n._parent; } if (bIsChild == false) { // trace("setting prevNode to " + _lastx); _prevNode = _lastx; } } // mark us as needing to remember the next thing we see, and no longer needing the previous thing _needPrev = false; if (_nextNode == undefined) _nextIsNext = true; } else if (!(x.focusManager != undefined && x.focusManager._parent == x)) { // don't look in here if we've already looked here if (x._searchKey == _searchKey) continue; // mark it as having been seen x._searchKey = _searchKey; // don't look inside if it has its own focus manager getTabCandidateFromChildren(x, index, groupName, dir, firsttime && firstChild) } // this goes down here so it can be used in child calls firsttime = false; } } // remember this as the last thing we've seen. The tree walk will keep // resetting this until it actually points to the last thing. _lastNode = _lastx; if (lookup) { // look upward in the tree if (p._parent != undefined) { if (p != _parent) { if (_prevNode == undefined && dir) { _needPrev = true; } else if (_nextNode == undefined && !dir) { _nextIsNext = false; } _lastTarget = _lastTarget._parent; // trace("changing lastTarget to " + _lastTarget); getTabCandidate(p._parent, index, groupName, dir, true); } } } } // for some object o, search its parent for the next tab candidate function getTabCandidate(o:MovieClip, index:Number, groupName:String, dir:Boolean, firstChild:Boolean):Void { var p:MovieClip; var lookup:Boolean = true; if (o == _parent) { p = o; lookup = false; } else { p = o._parent; if (p == undefined) { p = o; lookup = false; } } walkTree(p, index, groupName, dir, lookup, firstChild); } // for some object o, search its children for the next tab candidate function getTabCandidateFromChildren(o:MovieClip, index:Number, groupName:String, dir:Boolean, firstChild:Boolean):Void { walkTree(o, index, groupName, dir, false, firstChild); } // figure out which focus manager is responsible for this object function getFocusManagerFromObject(o:Object):Object { while (o != undefined) { if (o.focusManager != undefined) return o.focusManager; o = o._parent; } return undefined; } // this gets called when the tab key is hit function tabHandler(Void):Void { bDrawFocus = true; // trace("tabHandled by " + this); // get the object that has the focus var o:Object = getSelectionFocus(); // trace("focus was at " + o); // find out of this is a valid object in or scheme or find the parent that is var p:Object = getActualFocus(o); if (p != o) { // use our focus concepts o = p; } if (getFocusManagerFromObject(o) != this) o == undefined; // trace("actual focus is " + o); if (o == undefined) { o = form; // trace("using form " + o); } else { // if someone switches focus manually, need // to reset this table if (o.tabIndex != undefined) { if (_foundList != undefined || _foundList.tabIndex != o.tabIndex) { _foundList = new Object(); _foundList.tabIndex = o.tabIndex; } _foundList[o._name] = o; } } var dir:Boolean = Key.isDown(Key.SHIFT) != true; // reset the search variables _searchKey = getTimer(); // use this value as a uniqueness check as to whether we visited this // control already. Some controls are found twice becuase they have // two references to them. _needPrev = true; _nextIsNext = false; _lastx = undefined; _firstNode = undefined; _lastNode = undefined; _nextNode = undefined; _prevNode = undefined; _firstObj = undefined; _lastObj = undefined; _nextObj = undefined; _prevObj = undefined; _lastTarget = o; // look through all the children var caster = o; // o can be a movieclip or textfield so we stuff it in an untyped variable to get past typechecking getTabCandidate(caster, (o.tabIndex == undefined) ? 0 : o.tabIndex, o.groupName, dir, true); var x:Object = undefined; // now figure out which thing should get the tab if (dir) { if (_nextObj != undefined) x = _nextObj; else x = _firstObj; } else { if (_prevObj != undefined) x = _prevObj; else x = _lastObj; } if (x.tabIndex != o.tabIndex) { _foundList = new Object(); _foundList.tabIndex = x.tabIndex; _foundList[x._name] = x; } else { if (_foundList == undefined) { _foundList = new Object(); _foundList.tabIndex = x.tabIndex; } _foundList[x._name] = x; } if (x == undefined) { // didn't find an index so use tree search // the tree is actually built backwards so // the variable names appear switched if (dir == false) { if (_nextNode != undefined) x = _nextNode; else x = _firstNode; } else { if (_prevNode == undefined || o == form) x = _lastNode; else x = _prevNode; } } // trace("WINNER = " + x); if (x == undefined) return; lastTabFocus = x; setFocus(x); // handle default pushbutton here if (x.emphasized != undefined) { if (defPushButton != undefined) { var o:SimpleButton = defPushButton; defPushButton = SimpleButton(x); o.emphasized = false; x.emphasized = true; } } else { if (defPushButton != undefined && defPushButton != __defaultPushButton) { var o:SimpleButton = defPushButton; defPushButton = __defaultPushButton; o.emphasized = false; __defaultPushButton.emphasized = true; } } } // watch for Enter key function onKeyDown(Void):Void { SystemManager.idleFrames = 0; if (defaultPushButtonEnabled) { if (Key.getCode() == Key.ENTER) { if (defaultPushButton != undefined) { doLater(this, "sendDefaultPushButtonEvent"); } } } } /** * can be called to fake the system into thinking the enter key was pressed. */ function sendDefaultPushButtonEvent(Void):Void { // trace(defPushButton); defPushButton.dispatchEvent({type:"click"}); } // figure out which component got moused function getMousedComponentFromChildren(x:Number, y:Number, o:Object):Object { // if we steal focus in mouseDown or mouseUp, we halt processing // of button events like onPress and onRelease which messes up // button handling. This algorithm has to match the way the Player // works // find the hit object for (var i in o) { var j = o[i]; if (j._visible && j.enabled && j._parent == o && j._searchKey != _searchKey) { j._searchKey = _searchKey; if (j.hitTest(x, y, true)) { // if has button methods, it gets the hit // do we need the other methods as well? (onRollOver) if (j.onPress != undefined || j.onRelease != undefined) return j; var k = getMousedComponentFromChildren(x, y, j); if (k != undefined) return k; return j; } } } return undefined; } // this gets called a frame after any buttons have had a chance to // set focus to the correct component. Note that mouseActivate // gets called too soon in the debugger because it does // constant updating of the screen so you must debug // this logic using trace statements and no debugger function mouseActivate(Void):Void { // trace("mouseActivate"); // if we clicked in a textfield, the player automatically sets focus // there so we don't have to do anything if (!bNeedFocus) return; _searchKey = getTimer(); // find out what got clicked var x:Object = getMousedComponentFromChildren(lastMouse.x, lastMouse.y, form); // trace(x + " got moused"); // if it is a UIComponent it must play by the rules and set focus in ReleaseFocus if (x instanceof UIComponent) return; // if we get here we didn't click on a v2 button so give focus // to the appropriate object x = findFocusFromObject(x); // trace(x + " gets focus"); // same object // trace(lastFocus); if (x == lastFocus) return; if (x == undefined) { // trace("restoreFocus"); doLater(this, "restoreFocus"); return; } // trace("set focus from mouseActivate"); var hscroll = x.hscroll; if (hscroll != undefined) { var vscroll = x.scroll; var bg = x.background; } setFocus(x); // we reset a couple of fields onto the Selection object var currentSelection:Object = Selection; Selection.setSelection(currentSelection.lastBeginIndex, currentSelection.lastEndIndex); if (hscroll != undefined) { x.scroll = vscroll; x.hscroll = hscroll; x.background = bg; } } // called by the SystemManager when the mouse is clicked. function _onMouseDown(Void):Void { bDrawFocus = false; if (lastFocus != undefined) lastFocus.drawFocus(false); SystemManager.idleFrames = 0; // trace("_onMouseDown handled by " + this); // trace("focusManager.visible = " + _visible); // when you click outside a textfield, the textfield loses // focus. We must catch the last state of the selection // before the player takes away focus. var currentSelection:Object = Selection; currentSelection.lastBeginIndex = Selection.getBeginIndex(); currentSelection.lastEndIndex = Selection.getEndIndex(); // next we save away the mouse position and wait for mouse up lastMouse.x = _root._xmouse; lastMouse.y = _root._ymouse; _root.localToGlobal(lastMouse); } // on mouse up, we wait a frame to see if the player moves the focus to another // textfield or not function onMouseUp(Void):Void { // only do this if activated if (_visible) doLater(this, "mouseActivate"); } function handleEvent(e:Object) { // trace("handleEvent: " + this); if (e.type == "reveal") SystemManager.activate(form); else { SystemManager.deactivate(form); } } static var initialized:Boolean = false; static function enableFocusManagement():Void { if (!initialized) { initialized = true; Object.registerClass("FocusManager", FocusManager); if (_root.focusManager == undefined) _root.createClassObject(FocusManager, "focusManager", mx.managers.DepthManager.highestDepth--); } } static var UIObjectExtensionsDependency = mx.core.ext.UIObjectExtensions; } .mx.utils.Delegate: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\utils\Delegate.as//**************************************************************************** //Copyright (C) 2003-2004 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** /** The Delegate class creates a function wrapper to let you run a function in the context of the original object, rather than in the context of the second object, when you pass a function from one object to another. */ class mx.utils.Delegate extends Object { /** Creates a functions wrapper for the original function so that it runs in the provided context. @parameter obj Context in which to run the function. @paramater func Function to run. */ static function create(obj:Object, func:Function):Function { var f = function() { var target = arguments.callee.target; var func = arguments.callee.func; return func.apply(target, arguments); }; f.target = obj; f.func = func; return f; } function Delegate(f:Function) { func = f; } private var func:Function; function createDelegate(obj:Object):Function { return create(obj, func); } } +2mx.events.LowLevelEvents: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\events\LowLevelEvents.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.events.UIEventDispatcher; /** * support for low-level DOM mouse events */ class mx.events.LowLevelEvents { /** * list of supported mouse events */ static var mouseEvents:Object = { mouseMove: 1, mouseDown: 1, mouseUp: 1, mouseOver: 1, mouseOut: 1 }; /** * Flash specific mouse events that track the mouse over any object */ static var somewhereEvents:Object = { mouseDownSomewhere: 1, mouseUpSomewhere: 1}; // copies of the original functions, if any var _onMouseMove:Function; var _onMouseDown:Function; var _onMouseUp:Function; var _onRollOver:Function; var _onRollOut:Function; var _onDragOver:Function; var _onDragOut:Function; var _onPress:Function; var _onRelease:Function; var _onReleaseOutside:Function; var createEvent:Function; var dispatchEvent:Function; static var _fEventDispatcher:UIEventDispatcher; // the mouseMove queue is specially handled var __q_mouseMove:Array; // internal function that adds mouse listeners to a UIObject so the // listener can get events static function addMouseEvents(obj:Object):Void { if (obj.refcntMouseEvents > 0) { obj.refcntMouseEvents++; return; // already did it } var d = UIEventDispatcher._fEventDispatcher; obj.refcntMouseEvents = 1; obj._onPress = obj.onPress; obj.onPress = d.onPress; obj._onRelease = obj.onRelease; obj.onRelease = d.onRelease; obj._onReleaseOutside = obj.onReleaseOutside; obj.onReleaseOutside = d.onReleaseOutside; obj._onRollOver = obj.onRollOver; obj.onRollOver = d.onRollOver; obj._onRollOut = obj.onRollOut; obj.onRollOut = d.onRollOut; obj._onDragOver = obj.onDragOver; obj.onDragOver = d.onDragOver; obj._onDragOut = obj.onDragOut; obj.onDragOut = d.onDragOut; } // internal function that removes mouse listeners from a UIObject static function removeMouseEvents(obj:Object):Void { if (obj.refcntMouseEvents > 1) { obj.refcntMouseEvents--; return; // already did it } obj.refcntMouseEvents = 0; if (obj._onPress != undefined) obj.onPress = obj._onPress; else delete obj.onPress; if (obj._onRelease != undefined) obj.onRelease = obj._onRelease; else delete obj.onRelease; if (obj._onReleaseOutside != undefined) obj.onReleaseOutside = obj._onReleaseOutside; else delete obj.onReleaseOutside; if (obj._onRollOver != undefined) obj.onRollOver = obj._onRollOver; else delete obj.onRollOver; if (obj._onRollOut != undefined) obj.onRollOut = obj._onRollOut; else delete obj.onRollOut; if (obj._onDragOver != undefined) obj.onDragOver = obj._onDragOver; else delete obj.onDragOver; if (obj._onDragOut != undefined) obj.onDragOut = obj._onDragOut; else delete obj.onDragOut; if (obj._onMouseMove != undefined) obj.onMouseMove = obj._onMouseMove; else delete obj.onMouseMove; } // internal function that adds mouse listeners to a UIObject so the // listener can get events static function addSomewhereEvents(obj:Object):Void { if (obj.refcntSomewhereEvents > 0) { obj.refcntSomewhereEvents++; return; // already did it } var d = UIEventDispatcher._fEventDispatcher; obj.refcntSomewhereEvents = 1; obj._onMouseDown = obj.onMouseDown; obj.onMouseDown = d.onMouseDown; obj._onMouseUp = obj.onMouseUp; obj.onMouseUp = d.onMouseUp; } // internal function that removes mouse listeners from a UIObject static function removeSomewhereEvents(obj:Object):Void { if (obj.refcntSomewhereEvents > 1) { obj.refcntSomewhereEvents--; return; // already did it } obj.refcntSomewhereEvents = 0; if (obj._onMouseDown != undefined) obj.onMouseDown = obj._onMouseDown; else delete obj.onMouseDown; if (obj._onMouseUp != undefined) obj.onMouseUp = obj._onMouseUp; else delete obj.onMouseUp; } /* XML mouse events are different from Flash mouse events. Here's how you should respond to XML mouse events in order to mimic a button mouseUp: if (mousewasdown && mouseisover) dispatchEvent("click") else { mousewasdown = false; } showUpState(); mouseDown: mousewasdown = true; mouseOver: mouseisover = true; if (mousewasdown) showDownState() else showOverState(); mouseOut: mouseisover = false; showUpState(); */ // internal hook for mouse events function onMouseMove(Void):Void { dispatchEvent({type: "mouseMove"}); _onMouseMove(); } // internal hook for mouse events function onRollOver(Void):Void { dispatchEvent({type: "mouseOver"}); if (__q_mouseMove.length > 0) { _onMouseMove = onMouseMove; var z = UIEventDispatcher._fEventDispatcher; onMouseMove = z.onMouseMove; } _onRollOver(); } // internal hook for mouse events function onRollOut(Void):Void { dispatchEvent({type: "mouseOut"}); if (__q_mouseMove.length > 0) { if (_onMouseMove != undefined) onMouseMove == _onMouseMove; else delete onMouseMove; } _onRollOut(); } // internal hook for mouse events function onPress(Void):Void { dispatchEvent({type: "mouseDown"}); _onPress(); } // internal hook for mouse events function onRelease(Void):Void { dispatchEvent({type: "mouseUp"}); _onRelease(); } // internal hook for mouse events function onReleaseOutside(Void):Void { dispatchEvent({type: "mouseUp"}); _onReleaseOutside(); } // internal hook for mouse events function onDragOver(Void):Void { dispatchEvent({type: "mouseOver"}); _onDragOver(); } // internal hook for mouse events function onDragOut(Void):Void { dispatchEvent({type: "mouseOut"}); _onDragOut(); } // internal hook for somewhere events function onMouseDown(Void):Void { dispatchEvent({type: "mouseDownSomewhere"}); _onMouseDown(); } // internal hook for somewhere events function onMouseUp(Void):Void { dispatchEvent({type: "mouseUpSomewhere"}); _onMouseUp(); } static function enableLowLevelEvents() { } static function classConstruct():Boolean { var ui = UIEventDispatcher; var ll = LowLevelEvents; ui.lowLevelEvents.mouseEvents = ["addMouseEvents", "removeMouseEvents"]; ui.lowLevelEvents.somewhereEvents = ["addSomewhereEvents", "removeSomewhereEvents"]; ui.mouseEvents = ll.mouseEvents; ui.addMouseEvents = ll.addMouseEvents; ui.removeMouseEvents = ll.removeMouseEvents; ui.somewhereEvents = ll.somewhereEvents; ui.addSomewhereEvents = ll.addSomewhereEvents; ui.removeSomewhereEvents = ll.removeSomewhereEvents; if (ui._fEventDispatcher == undefined) { ui._fEventDispatcher = new UIEventDispatcher; } var z = ui._fEventDispatcher; var p = ll.prototype; z.onPress = p.onPress; z.onRelease = p.onRelease; z.onReleaseOutside = p.onReleaseOutside; z.onRollOut = p.onRollOut; z.onRollOver = p.onRollOver; z.onDragOut = p.onDragOut; z.onDragOver = p.onDragOver; z.onMouseDown = p.onMouseDown; z.onMouseMove = p.onMouseMove; z.onMouseUp = p.onMouseUp; return true; } static var classConstructed:Boolean = classConstruct(); static var UIEventDispatcherDependency = UIEventDispatcher; } ;C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\core\ComponentVersion.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** static var version:String = "2.0.2.126"; Dmx.screens.Slide: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\screens\Slide.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.screens.Screen; /** * @tiptext hideChild event * @helpid 1853 */ [Event("hideChild")] /** * @tiptext revealChild event * @helpid 1862 */ [Event("revealChild")] /** * Slide class * - extends Screen * - Adds management of sequential slides, automatic keyboard navigation and overlaying * * @tiptext Slide class. Extends Screen. * @helpid 1872 */ [InspectableList("autoKeyNav", "overlayChildren", "playHidden", "autoLoad","contentPath")] class mx.screens.Slide extends Screen { // SymbolName for object static var symbolName:String = "Slide"; // Class used in createClassObject static var symbolOwner:Object = mx.screens.Slide; // name of this class var className:String = "Slide"; // indicates whether this object is a Slide private var _isSlide = true; // list of immediate child Slides of this Slide. Does not include Form children private var _childSlides:Array; // which child slide contains the current leaf slide private var _currentChildSlide:Slide = null; // current leaf child (descendant) of this slide that is active. private var _currentSlide:Slide = null; // 0-based index of where this screen is in its parent's childSlides array private var _indexInParentSlide:Number = -1; // used during gotoSlide(), indicates which childSlide contains the leaf slide we are going to private var _childThatContainsGotoSlide:Number = -1; // keydown handler to call to process keys for this slide private var _defaultKeyDownHandler:Function = null; // has this slide ever been revealed private var _shown = false; // prevents arrow keys doing slide navigation while focus is on a text field private static var _disableArrowKeys:Boolean = false; // allows arrow keys to enable slide navigation when focus is on a non-text field component (e.g. button) private static var _focusFixup:Object = null; // prevents re-entrancy in gotoSlide private static var _gotoSlideNesting = 0; // deferred gotoSlide, when gotoSlide has been attempted to be called re-entrantly private var _laterGotoSlide = null; // are we handling a keyDown private static var _inKeyDown:Boolean = false; // for handling default clicks to set focus private static var _focusSeq:Number = 0; // for handling default clicks to set focus private static var _clickFocusSeq:Number = 0; // ////////////////////////////////////////////////// // // properties // // ////////////////////////////////////////////////// [Inspectable(defaultValue="inherit", enumeration="true,false,inherit")] /** * Use default keydown handling of arrow keys to navigate slides * @tiptext Use default keydown handling of arrow keys to navigate slides * @helpid 1873 */ public var autoKeyNav:String = "inherit"; [Inspectable(defaultValue=false)] /** * Display child slides as bullet-style overlays * @tiptext Display child slides as bullet-style overlays * @helpid 1874 */ public var overlayChildren:Boolean = false; [Inspectable(defaultValue=true)] /** * Continue to play the slide's timeline when the slide is not visible * @tiptext Continue to play the slide's timeline when the slide is not visible * @helpid 1875 */ public var playHidden:Boolean = true; // ////////////////////////////////////////////////// // // getters/setters // // ////////////////////////////////////////////////// /** * Immediate child slide that contains the current (leaf-node) slide. * Read-Only: use gotoSlide() to set the currentChildSlide * @tiptext Immediate child slide that contains the current (leaf-node) slide * @helpid 1876 */ public function get currentChildSlide():Slide { return _currentChildSlide; } /** * Leaf-node slide that is currently active * Read-Only: use gotoSlide() to set the currentChildSlide * @tiptext Leaf-node slide that is currently active * @helpid 1877 */ public function get currentSlide():Slide { return _currentSlide; } /** * Leaf-node slide that contains the current focused field or component * Read-Only: use setFocus() to set the focus * @tiptext Leaf-node slide that contains the current focused field or component * @helpid 1878 */ public static function get currentFocusedSlide():Slide { var curFocus:Object; curFocus = _root.focusManager.getFocus(); if (!curFocus || (curFocus == undefined)) { curFocus = eval(Selection.getFocus()); } while (curFocus && !curFocus._isSlide) { curFocus = curFocus._parent; } if (curFocus == undefined) return(null); else return(mx.screens.Slide(curFocus)); } /** * keydown handler to call to process keys for this slide * @tiptext keydown handler to call to process keys for this slide * @helpid 1879 */ public function get defaultKeyDownHandler():Function { return _defaultKeyDownHandler; } public function set defaultKeyDownHandler(newHandler:Function) { _defaultKeyDownHandler = newHandler; } /** * First leaf slide in this slide's subtree * Read-Only: use createChild() to create new slides * @tiptext First leaf slide in this slide's subtree * @helpid 1880 */ public function get firstSlide():Slide { // Find the first leaf in our subtree var newSlide:Slide = this; while (newSlide.numChildSlides > 0) { newSlide = newSlide.getChildSlide(0); } return(newSlide); } /** * Last leaf slide in this slide's subtree * Read-Only: use createChild() to create new slides * @tiptext Last leaf slide in this slide's subtree * @helpid 1881 */ public function get lastSlide():Slide { // Find the last leaf in our subtree var newSlide:Slide = this; while (newSlide.numChildSlides > 0) { newSlide = newSlide.getChildSlide(newSlide.numChildSlides-1); } return(newSlide); } /** * zero-based index of this slide in its parent (getChildSlide) * Read-Only: use createChild() to add new child slides * @tiptext index of this slide in its parent (getChildSlide) * @helpid 1882 */ public function get indexInParentSlide():Number { return _indexInParentSlide; } /** * next slide after this slide in the slide outline * Read-Only: use createChild() to add new child slides * @tiptext next slide after this slide in the slide outline * @helpid 1883 */ public function get nextSlide():Slide { // Walk up to first ancestor that we can move from var newSlide:Slide = this; while (true) { if (!newSlide.parentIsSlide) { break; } else if (newSlide.indexInParentSlide == newSlide.parentSlide.numChildSlides-1) { newSlide = newSlide.parentSlide; } else { newSlide = newSlide.parentSlide.getChildSlide(newSlide.indexInParentSlide+1); break; } } // newSlide is now the first subtree that we can move to. if (!newSlide.parentIsSlide) { // Can't move return(null); } else { newSlide = newSlide.firstSlide; return(newSlide); } } /** * number of children of this slide that are slides, not including forms * Read-Only: use createChild() to add new child slides * @tiptext number of child slides of this slide * @helpid 1884 */ public function get numChildSlides():Number { return _childSlides.length; } /** * True if this slide's _parent is a slide * Read-Only: use createChild() to add new child slides * @tiptext True if this slide's _parent is a slide * @helpid 1885 */ public function get parentIsSlide():Boolean { return((parentSlide != null) && (parentSlide._isSlide)); } /** * Slide containing this slide. May be null for the root slide. * Read-Only: use createChild() to add new child screens * @tiptext Slide containing this slide * @helpid 1886 */ public function get parentSlide():Slide { var theParent:Object = _parent; while (true) { if (theParent == null) { return(null); } else if (theParent._isSlideContainer) { // test for zombized Slide caused by createChild theParent = theParent._parent; } else if (theParent._isSlide) { return(Slide(theParent)); } else { return(null); } } } /** * previous slide before this slide in the slide outline * Read-Only: use createChild() to add new child slides * @tiptext previous slide before this slide in the slide outline * @helpid 1887 */ public function get previousSlide():Slide { // Walk up to first ancestor that we can move from var newSlide:Slide = this; while (true) { if (!newSlide.parentIsSlide) { break; } else if (newSlide.indexInParentSlide == 0) { newSlide = newSlide.parentSlide; } else { newSlide = newSlide.parentSlide.getChildSlide(newSlide.indexInParentSlide-1); break; } } // newSlide is now the first subtree that we can move to. if (!newSlide.parentIsSlide) { // Can't move return(null); } else { newSlide = newSlide.lastSlide; return(newSlide); } } /** * Root slide of the slide subtree that contains this screen * Read-Only: use createChild() to add new child screens * @tiptext Root slide of the slide subtree that contains this screen * @helpid 1888 */ public function get rootSlide():Slide { var sld:Slide = this; while (sld.parentIsSlide) { sld = sld.parentSlide; } return(sld); } // ////////////////////////////////////////////////// // // Public methods // // ////////////////////////////////////////////////// /** * Get the nth child of this slide (zero-based) * @param childIndex which slide to get * @tiptext Get the nth child of this slide * @helpid 1889 */ function getChildSlide(childIndex:Number): Slide { return _childSlides[childIndex]; } /** * Navigate to the first leaf slide below this slide * @tiptext Navigate to the first leaf slide below this slide * @helpid 1890 */ public function gotoFirstSlide() { if (firstSlide == null) { return(false); } else { return(gotoSlide(firstSlide)); } } /** * Navigate to the last leaf slide below this slide * @tiptext Navigate to the last leaf slide below this slide * @helpid 1891 */ public function gotoLastSlide() { if (lastSlide == null) { return(false); } else { return(gotoSlide(lastSlide)); } } /** * Navigate to the next leaf slide after this slide * @tiptext Navigate to the next leaf slide after this slide * @helpid 1892 */ public function gotoNextSlide():Boolean { if (nextSlide == null) { return(false); } else { return(gotoSlide(nextSlide)); } } /** * Navigate to the previous leaf slide before this slide * @tiptext Navigate to the previous leaf slide before this slide * @helpid 1893 */ public function gotoPreviousSlide():Boolean { if (!previousSlide) { return(false); } else { return(gotoSlide(previousSlide)); } } /** * Navigate to a different slide * @param newSlide which slide to navigate to * @tiptext Navigate to a different slide * @helpid 1894 */ public function gotoSlide(newSlide:Slide):Boolean { if (_gotoSlideNesting > 0) { _laterGotoSlide = newSlide; doLater(this, "doLaterGotoSlide"); return(false); } _gotoSlideNesting++; if (newSlide == null) { // Nowhere to go _gotoSlideNesting--; return(false); } // Walk up from destination slide to go to, marking our way as we go var destSlide:Object = newSlide; var whichChild = 0; while (true) { destSlide._childThatContainsGotoSlide = whichChild; whichChild = destSlide.indexInParentSlide; if (!destSlide.parentIsSlide) break; else destSlide = destSlide.parentSlide; } // Walk up from current slide, hiding slides until we reach a common ancestor // of the new destSlide and the old currentSlide; var curSlide:Slide= null; var origCurSlide:Slide = null; var i:Number; if (rootSlide.currentSlide == null) { // No current slide yet. Nothing to hide. curSlide = rootSlide; origCurSlide = curSlide; } else { curSlide = rootSlide.currentSlide; origCurSlide = curSlide; while (curSlide._childThatContainsGotoSlide == -1) { // See if we should hide ourselves and possibly our // siblings too if (curSlide.parentIsSlide) { if (curSlide.parentSlide._childThatContainsGotoSlide == -1) { // Slide we're going to is not a sibling of curSlide if (curSlide.shouldHideDuringGoto()) { if (curSlide.parentSlide.overlayChildren) { // If curSlide's parent was marked as overlay, // curSlide and its siblings // are currently being displayed, so we // have to hide it and all its siblings, // unless an ancestor is overlayed and will // remain visible for (i = 0; i <= curSlide.indexInParentSlide; i++) { curSlide.parentSlide.getChildSlide(i).hideSlide(); } } else { curSlide.hideSlide(); } } } else { // Slide we're going to IS a sibling of curSlide if (!curSlide.parentSlide.overlayChildren) { curSlide.hideSlide(); // No overlay...just hide } else { // If our parent is overlay, hide all the // slides between us and the destination if // the destination is before us (i.e. we're // moving backwards). for (i = curSlide.parentSlide._childThatContainsGotoSlide+1; i <= curSlide.indexInParentSlide; i++) { curSlide.parentSlide.getChildSlide(i).hideSlide(); } } } } if (!curSlide.parentIsSlide) break; else curSlide = curSlide.parentSlide; } } if (curSlide._childThatContainsGotoSlide == -1) { _gotoSlideNesting--; return(false); } // Clear _currentSlide for outgoing/hidden slides var tempSlide:Slide = origCurSlide; while (true) { tempSlide._currentSlide = null; tempSlide._currentChildSlide = null; if (!tempSlide.parentIsSlide) break; tempSlide = tempSlide.parentSlide; } // Set the currentSlide for all ancestors of the new current slide tempSlide = newSlide; var tempChildSlide:Slide = null; while (true) { tempSlide._currentSlide = newSlide; tempSlide._currentChildSlide = tempChildSlide; if (!tempSlide.parentIsSlide) break; tempChildSlide = tempSlide; tempSlide = tempSlide.parentSlide; } // We're at a common ancestor, now walk down the tree to the new dest, // showing slides as we go. curSlide.showSlide(); while (curSlide != newSlide) { var childSlide = curSlide.getChildSlide(curSlide._childThatContainsGotoSlide); if (childSlide == null) { break; } if (curSlide.overlayChildren) { for (i = 0; i < curSlide._childThatContainsGotoSlide; i++) { curSlide._childSlides[i].showSlide(); } } curSlide = childSlide; curSlide.showSlide(); } if (rootSlide.allAncestorsVisible()) { // Only set keyboard focus on visible slide subtrees if (_inKeyDown) { doLater(newSlide, "setFocus"); // don't setFocus while handling a keyDown event } else { newSlide.setFocus(); } } // Clear the flag we marked up the tree from the current slide tempSlide = origCurSlide; while (true) { tempSlide._currentSlide = null; tempSlide._currentChildSlide = null; tempSlide._childThatContainsGotoSlide = -1; if (!tempSlide.parentIsSlide) break; tempSlide = tempSlide.parentSlide; } // Clear the flag we marked up the tree from the new slide. // Also set the currentSlide for all ancestors of the new // current slide tempSlide = newSlide; tempChildSlide = null; while (true) { tempSlide._currentSlide = newSlide; tempSlide._currentChildSlide = tempChildSlide; tempSlide._childThatContainsGotoSlide = -1; if (!tempSlide.parentIsSlide) break; tempChildSlide = tempSlide; tempSlide = tempSlide.parentSlide; } _gotoSlideNesting--; return true; } // ////////////////////////////////////////////////// // // Private methods // // ////////////////////////////////////////////////// // deferred gotoSlide processing when gotoSlide() is called re-entrantly function doLaterGotoSlide() { gotoSlide(_laterGotoSlide); } // Slide class constructor function Slide() { } // initialize this slide private function init() { _childSlides = []; doLater(this, "stop"); super.init(); tabEnabled = false; focusEnabled = true; _visible = false; if (_focusFixup == null) // initialize keyDown event listener and selection listener if not done already { _focusFixup = new Object() _focusFixup.onSetFocus = function(o, n) { _focusSeq++; if ((n != null) && (typeof(n) != "movieclip") && !n._isSlide) { mx.screens.Slide._disableArrowKeys = true; } else mx.screens.Slide._disableArrowKeys = false; } Selection.addListener(_focusFixup); _focusFixup.onKeyDown = function(Void):Void { var o = {type:"keyDown", code:Key.getCode(), ascii:Key.getAscii(), shiftKey:Key.isDown(Key.SHIFT), ctrlKey:Key.isDown(Key.CONTROL)}; Slide._inKeyDown = true; if (Slide.currentFocusedSlide.useDefaultKeyDownHandler()) { Slide.currentFocusedSlide.callDefaultKeyDownHandler(o); } _inKeyDown = false; } Key.addListener(_focusFixup); } if (_parent._name == _parent._parent._childLoading) { // We're the root of the slide subtree being loaded. // Do nothing...fixups will happen in childLoaded() } else if (!parentIsSlide) { // We're the root slide. // Show first leaf node _defaultKeyDownHandler = autoKeyDownHandler; addEventListener("mouseDownSomewhere", this); doLater(this, "gotoFirstSlide"); } else if (parentSlide && parentSlide._isSlide) { parentSlide.registerChildSlide(this); } } // set up the relationship between this slide and a new child slide private function registerChildSlide(slide:Slide) { slide._indexInParentSlide = _childSlides.push (slide) - 1; } // walks the tree to see if the combination of ancestor autoKeyNav flags // means we should use default keyboard handling for this slide private function useDefaultKeyDownHandler():Boolean { var sld:Slide = this; while (sld.parentIsSlide && (sld.autoKeyNav == "inherit")) { sld = sld.parentSlide; } var retVal:Boolean; retVal = ((sld.autoKeyNav == "true") || (sld.autoKeyNav == "inherit")); return(retVal) } // invoke default keydown handling, gotten from rootSlide private function callDefaultKeyDownHandler(o:Object) { var sld:Slide = this; while (sld.parentIsSlide && (sld.defaultKeyDownHandler == null)) { sld = sld.parentSlide; } if (sld.defaultKeyDownHandler) { sld.defaultKeyDownHandler.call(sld, o); } } // default keyboard navigation handling for slides private function autoKeyDownHandler(o:Object) { if (!mx.screens.Slide._disableArrowKeys) { switch (o.code) { case Key.SPACE: if (getFocusManager().bDrawFocus) // if focus halo is on, don't advance slide with space bar break; case Key.RIGHT: currentSlide.gotoNextSlide(); break; case Key.LEFT: currentSlide.gotoPreviousSlide(); break; default: break; } } } // set focus after transitions complete private function allTransitionsOutDone(o:Object) { super.allTransitionsOutDone(o); // If we pick do an OUT transition, make sure that if this // slide is the current slide, it still has focus. This is // because OUT transitions auto-hide their contents after the // transition finishes, but this transition might not have been // attached to an on(hide)...it might have been on some other // handler. if (this == currentSlide) { this.setFocus(); } } // make a slide visible private function showSlide() { if (_visible && (__transitionManager.numOutTransitions > 0)) { _visible = false; // to get the on(reveal) to happen this.__transitionManager.removeAllTransitions(); this.__transitionManager.restoreContentAppearance(); } visible = true; } // make a slide invisible private function hideSlide() { if (__transitionManager.numTransitions > 0) { this.__transitionManager.removeAllTransitions(); this.__transitionManager.restoreContentAppearance(); } visible = false; } // for deferred stop in hideHandler private function doStop():Void { gotoAndStop(1); } // propagate hideChild to our ancestors private function hideHandler(o: Object) { if (!playHidden) { doLater(this, "doStop"); } // Fire a hideChild event on our ancestors var ancestorSlide: Slide; ancestorSlide = this; while (ancestorSlide.parentIsSlide) { ancestorSlide = ancestorSlide.parentSlide; ancestorSlide.dispatchEvent({type:"hideChild", target:this}); } } // for deferred play of first frame in revealHandler private function doPlay():Void { play(); _shown = true; } // propagate revealChild to our ancestors private function revealHandler(o: Object) { if (!_shown || !playHidden) { doLater(this, "doPlay"); // doLater for player 6 compatibility } // Fire a revealChild event on our ancestors var ancestorSlide: Slide; ancestorSlide = this; while (ancestorSlide.parentIsSlide) { ancestorSlide = ancestorSlide.parentSlide; ancestorSlide.dispatchEvent({type:"revealChild", target:this}); } } // handle fixups when we load a subtree in from an external movie using createChild() function childLoaded(obj:MovieClip):Void { super.childLoaded(obj); // Load content at topleft of stage, rather than at regpt of // slide, which by default is auto-snapped to center var pt:Object = {x:0, y:0}; globalToLocal(pt); obj.move(pt.x, pt.y); if (obj._containedScreen._isSlide) { var loadedSlide:Slide = obj._containedScreen; var realParentSlide: Slide = mx.screens.Slide(obj._parent); obj._isSlideContainer = true; obj._containedSlide = loadedSlide; loadedSlide._indexInParentSlide = realParentSlide._childSlides.push(loadedSlide) - 1; if (realParentSlide.currentSlide) { doLater(realParentSlide, "gotoFirstSlide"); } } } // Helper function to determine when to hide overlay children during gotoSlide() private function shouldHideDuringGoto():Boolean { if ((this._childThatContainsGotoSlide != -1) || !this.parentIsSlide) return false; var ancestorSlide:Object = this.parentSlide; var childThatContainsFromSlide = this.indexInParent; while (true) { if (ancestorSlide._childThatContainsGotoSlide != -1) { // first common ancestor of this slide and destination Slide if (childThatContainsFromSlide > ancestorSlide._childThatContainsGotoSlide) { // moving backwards -- always hide return true; } else if (ancestorSlide.overlayChildren) return false; else return true; } // Should only remain visible if all ancestors between from slide and to // slide are marked as overlay if (!ancestorSlide.overlayChildren) return true; if (!ancestorSlide.parentIsSlide) return false; else { childThatContainsFromSlide = ancestorSlide.indexInParent; ancestorSlide = ancestorSlide.parentSlide; } } return false; } // Override from View class. destroy n'th child slide function destroyChildAt(childIndex:Number):Void { var theChild:Slide = getChildSlide(childIndex); if (theChild == _currentChildSlide) { gotoSlide(this); } _childSlides.splice(childIndex, 1); super.destroyChildAt(childIndex); } // Determine whether all ancestor slides of this slide are visible private function allAncestorsVisible(): Boolean { var theAncestor:Object = this; while(theAncestor) { if (!theAncestor._visible) return(false); theAncestor = theAncestor._parent; } return true; } private function isAncestor(a:Object, o:Object) { var p:Object = o; while (p && (p != a)) { p = p._parent; } return(p == a); } // Determine whether object o will handle mouse clicks. private function hasMouseHandler(o:Object) { if ( (o.onPress != undefined) || (o.onRelease != undefined) || (o.onReleaseOutside != undefined) || (o.onDragOut != undefined) || (o.onDragOver != undefined) || (o.onRollOver != undefined) || (o.onRollOut != undefined) || (o.delegateClick != undefined) || (o.clickHandler != undefined) ) { return true; } else { return false; } } // Get the child of object o that is at (x,y) private function getMousedChild(x:Number, y:Number, o:Object):Object { for (var i in o) { var j = o[i]; if (j._parent == o) { if (j.hitTest(x, y, true)) { if (hasMouseHandler(j)) return j; var k = getMousedChild(x, y, j); if (k != undefined) return k; return j; } } } return undefined; } // Handle clicks on the slide to set focus private function mouseDownSomewhereHandler(o: Object): Void { var x:Number = _root._xmouse; var y:Number = _root._ymouse; if (this != rootSlide) return; if (allAncestorsVisible() && hitTest(x, y, false)) { var mousedChild:Object = getMousedChild(x, y, this); var mousedChildGlobally:Object = getMousedChild(x, y, _root); var mousedSlide:Object = null; if ((mousedChild == undefined) && hitTest(x, y, true)) { if ((mousedChildGlobally == this) && !hasMouseHandler(this)) { mousedSlide = this; } } else if (isAncestor(mousedChildGlobally,mousedChild) && !hasMouseHandler(mousedChild)) { if (mousedChild._isSlide) { mousedSlide = mousedChild; } else { mousedSlide = mousedChild; while (mousedSlide && !mousedSlide._isSlide) { mousedSlide = mousedSlide._parent; } } } if (mousedSlide && mousedSlide.allAncestorsVisible() && (Slide.currentFocusedSlide.rootSlide != mousedSlide.rootSlide)) { _focusSeq++; _clickFocusSeq = _focusSeq; doLater(mousedSlide.rootSlide.currentSlide, "clickSetFocus") } } } // Deferred focus setting for mouseDownSomewhereHandler private function clickSetFocus():Void { if (_focusSeq == _clickFocusSeq) { // no one else changed focus...set focus ourselves doLater(this, "setFocus"); } } } lHmx.core.ext.UIObjectExtensions: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\core\ext\UIObjectExtensions.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.core.UIObject; import mx.skins.SkinElement; import mx.styles.CSSStyleDeclaration; import mx.events.UIEventDispatcher; // extensions to MovieClip and TextField to make the system work better class mx.core.ext.UIObjectExtensions { static var bExtended = false; static function addGeometry(tf:Object, ui:Object):Void { tf.addProperty("width", ui.__get__width, null); tf.addProperty("height", ui.__get__height, null); tf.addProperty("left", ui.__get__left, null); tf.addProperty("x", ui.__get__x, null); tf.addProperty("top", ui.__get__top, null); tf.addProperty("y", ui.__get__y, null); tf.addProperty("right", ui.__get__right, null); tf.addProperty("bottom", ui.__get__bottom, null); // add other things to the textfield so it looks more like a UIObject tf.addProperty("visible", ui.__get__visible, ui.__set__visible); } static function Extensions():Boolean { if (bExtended == true) return true; bExtended = true; var ui:Object = UIObject.prototype; var se:Object = SkinElement.prototype; addGeometry(se, ui); // add event dispatching UIEventDispatcher.initialize(ui); // force inclsion of ColoredSkinElement var cse = mx.skins.ColoredSkinElement; mx.styles.CSSTextStyles.addTextStyles(ui); // add stuff to MovieClip var mc:Object = MovieClip.prototype; mc.getTopLevel = ui.getTopLevel; mc.createLabel = ui.createLabel; mc.createObject = ui.createObject; mc.createClassObject = ui.createClassObject; mc.createEmptyObject = ui.createEmptyObject; mc.destroyObject = ui.destroyObject; _global.ASSetPropFlags(mc, "getTopLevel",1); _global.ASSetPropFlags(mc, "createLabel",1); _global.ASSetPropFlags(mc, "createObject",1); _global.ASSetPropFlags(mc, "createClassObject",1); _global.ASSetPropFlags(mc, "createEmptyObject",1); _global.ASSetPropFlags(mc, "destroyObject",1); // add CSS style processing mc.__getTextFormat = ui.__getTextFormat; mc._getTextFormat = ui._getTextFormat; mc.getStyleName = ui.getStyleName; mc.getStyle = ui.getStyle; _global.ASSetPropFlags(mc, "__getTextFormat",1); _global.ASSetPropFlags(mc, "_getTextFormat",1); _global.ASSetPropFlags(mc, "getStyleName",1); _global.ASSetPropFlags(mc, "getStyle",1); // add geometry to the textfield so is looks more like a UIObject var tf = TextField.prototype; addGeometry(tf, ui); tf.addProperty("enabled", function() { return this.__enabled }, function(x){this.__enabled = x; this.invalidateStyle(); }); tf.move = se.move; tf.setSize = se.setSize; tf.invalidateStyle = function() { this.invalidateFlag = true; } tf.draw = function() { if (this.invalidateFlag) { this.invalidateFlag = false; var tf = this._getTextFormat(); this.setTextFormat(tf); this.setNewTextFormat(tf); this.embedFonts = (tf.embedFonts == true); if (this.__text!=undefined) { // only do this if textfield is empty // otherwise someone set text after // creating the textfield if (this.text == "") this.text = this.__text; delete this.__text; } this._visible = true; } } tf.setColor = function(color) { // var tf = this._getTextFormat(); // tf.color = color; // this.setTextFormat(tf); this.textColor = color; } tf.getStyle = mc.getStyle; tf.__getTextFormat = ui.__getTextFormat; // add databinding stuff to the textfield tf.setValue = function(v) { this.text = v; } tf.getValue = function() { return this.text; } tf.addProperty( "value", function(){ return this.getValue();}, function(v){this.setValue(v);} ); tf._getTextFormat = function() { var tf = this.stylecache.tf; if (tf != undefined) return tf; tf = new TextFormat(); this.__getTextFormat(tf); this.stylecache.tf = tf; if (this.__enabled == false) { if (this.enabledColor == undefined) { var otf = this.getTextFormat(); this.enabledColor = otf.color; } var c = this.getStyle("disabledColor"); tf.color = c; } else { if (this.enabledColor != undefined) if (tf.color == undefined) tf.color = this.enabledColor; } return tf; } // formalize the convention we're using for sizing textFields tf.getPreferredWidth = function() { this.draw(); return this.textWidth + 4; } tf.getPreferredHeight = function() { this.draw(); return this.textHeight + 4; } // add a better text measuring method to TextFormat. // the current one is broken in Flash TextFormat.prototype.getTextExtent2 = function(s) { var o = _root._getTextExtent; if (o == undefined) { _root.createTextField("_getTextExtent", -2, 0, 0, 1000, 100); o = _root._getTextExtent; o._visible = false; } _root._getTextExtent.text = s; var z = this.align; this.align = "left"; _root._getTextExtent.setTextFormat(this); this.align = z; return {width: o.textWidth, height: o.textHeight}; } // set up the global objects here if (_global.style == undefined) { _global.style = new CSSStyleDeclaration(); // the Defaults symbol in the library is where default styles are set up _global.cascadingStyles = true; _global.styles = new Object; // create a place to hang named StyleDeclarations _global.skinRegistry = new Object; // registered SkinElements // the player resizes and centers the stage. We need to know what our original // stage size is in order to know how we were centered. Note that the FMX // authoring player seems to report the size incorrectly. if (_global._origWidth == undefined) { _global.origWidth = Stage.width; _global.origHeight = Stage.height; } } var r = _root; while (r._parent != undefined) r = r._parent; // add width and height to the _root so it looks more like a UIObject r.addProperty("width", function(){ return Stage.width; }, null); r.addProperty("height", function(){ return Stage.height; }, null); _global.ASSetPropFlags( r, "width",1); _global.ASSetPropFlags( r, "height",1); return true; } static var UIObjectExtended = Extensions(); static var UIObjectDependency = UIObject; static var SkinElementDependency = SkinElement; static var CSSTextStylesDependency = mx.styles.CSSTextStyles; static var UIEventDispatcherDependency = UIEventDispatcher; } Nmx.core.UIComponent: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\core\UIComponent.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.skins.SkinElement; import mx.core.UIObject; /** * @tiptext focusIn event * @helpid 3950 */ [Event("focusIn")] /** * @tiptext focusOut event * @helpid 3951 */ [Event("focusOut")] /** * @tiptext keyDown event * @helpid 3954 */ [Event("keyDown")] /** * @tiptext keyUp event * @helpid 3955 */ [Event("keyUp")] /** * UIComponent class * - extends UIObject * - Adds focus, enabling * - Resizes by sizing and positioning internal components * * @tiptext Base class for all components. Extends UIObject * @helpid 3279 */ class mx.core.UIComponent extends UIObject { /** * @private * SymbolName for object */ static var symbolName:String = "UIComponent"; /** * @private * Class used in createClassObject */ static var symbolOwner:Object = mx.core.UIComponent; // Version string #include "../core/ComponentVersion.as" /** * number used to imply stretchability in preferredWidth/Height */ static var kStretch:Number = 5000; // UIComponents can receive focus from mouse clicks as well as tabbing var focusEnabled:Boolean = true; var tabEnabled:Boolean = true; // top-level windows have a focusManager instance. Other windows and components should // use getFocusManager() to find the focusManager that is responsible for that component. var focusManager:MovieClip; // actually an instance of FocusManager // Components that contain a TextField must set a pointer to that TextField. var focusTextField:Object; // relaxed typing so textInputs can be included. // draw focus on the object. Actually implemented in the theme. var drawFocus:Function; // RadioButtons and other grouped controls use this property var groupName:String; // the original border colors for a component showing an error state var origBorderStyles:Object = { themeColor: 0xFF0000 }; var origBorderValues:Object; /** * @private * list of clip parameters to check at init */ var clipParameters:Object = {}; /** * @private * all components must use this mechanism to merge their clip parameters with their base class clip parameters */ static var mergedClipParameters:Boolean = UIObject.mergeClipParameters(UIComponent.prototype.clipParameters, UIObject.prototype.clipParameters); /** * @tiptext Specifies whether component accepts user-interaction * @helpid 3952 */ // this is just here so we can put metadata on it [Inspectable(defaultValue=true, verbose=1, category="Other")] var enabled:Boolean; /** * @tiptext Specifies the tabIndex of the component * @helpid 3957 */ var tabIndex:Number; // set by FPopUp to indicate that component is a popup window var popUp:Boolean; function UIComponent() { } /** * width of object */ function get width():Number { return __width; } /** * height of object */ function get height():Number { return __height; } /** * @private * override this instead of adding your own setter for visible */ function setVisible(x:Boolean, noEvent:Boolean):Void { super.setVisible(x, noEvent); } /** * @private * enabled is a special case. It cannot be getter/setter because the property name is the same as the getter/setter name * so we do this to watch it. This is slighly heavier than getter/setter so don't do this unless you have to. To override * this, override setEnabled(); */ function enabledChanged(id:String, oldValue:Boolean, newValue:Boolean):Boolean { setEnabled(newValue); invalidate(); delete stylecache.tf; // need to flush textformat so it recalcs it with disabled color return newValue; } /** * @private * this is called whenever the enabled state changes. */ function setEnabled(enabled:Boolean):Void { invalidate(); } /** * Gets the object that has the focus. It may not be this object. * This is just here as a convenience * * @return Object The object that has the focus * * @tiptext Returns the component that currently has focus * @helpid 3953 */ function getFocus():Object { var selFocus:String = Selection.getFocus(); return (selFocus === null ? null : eval(selFocus)); } /** * Sets the focus to this object. * * @tiptext Sets focus to this component * @helpid 3956 */ function setFocus():Void { Selection.setFocus(this); } /** * Get the current focusManager. */ function getFocusManager():Object { var o:MovieClip = this; while (o != undefined) { if (o.focusManager != undefined) return o.focusManager; o = o._parent; } return undefined; } /** * @private * called when you lose focus. If you override, be sure to call the base class. */ function onKillFocus(newFocus:Object):Void { removeEventListener("keyDown", this); removeEventListener("keyUp", this); dispatchEvent({ type:"focusOut"}); drawFocus(false); } /** * @private * called when you get focus. If you override, be sure to call the base class. */ function onSetFocus(oldFocus:Object):Void { addEventListener("keyDown", this); addEventListener("keyUp", this); dispatchEvent({ type:"focusIn"}); if (getFocusManager().bDrawFocus != false) drawFocus(true); } // find the child object that should get the Selection focus function findFocusInChildren(o:Object):Object { if (o.focusTextField != undefined) { return o.focusTextField; } if (o.tabEnabled == true) return o; return undefined; } // either this object should get focus // or if it is in a container, a textfield in that // container could get focus // or look at the parent function findFocusFromObject(o:Object):Object { if (o.tabEnabled != true) { if (o._parent == undefined) return undefined; if (o._parent.tabEnabled == true) o = o._parent; else if (o._parent.tabChildren) o = findFocusInChildren(o._parent); else o = findFocusFromObject(o._parent); } return o; } /** * @private * all onPress handlers should call this. It doesn't actually * set focus, it makes it appear that it got focus. Focus is * actually set in releaseFocus; */ function pressFocus():Void { // trace("pressFocus"); var o = findFocusFromObject(this); var p = getFocus(); if (o != p) { p.drawFocus(false); if (getFocusManager().bDrawFocus != false) // undefined if no focus manager o.drawFocus(true); } } /** * @private * all onRelease handlers should call this. It sets focus to the component. */ function releaseFocus():Void { // trace("releaseFocus"); var o = findFocusFromObject(this); if (o != getFocus()) { // trace("releaseFocus set focus to " + o); o.setFocus(); } } /** * @private * tells you whether the object is a parented by this component * @params o the potential parent to this compoenent */ function isParent(o:Object):Boolean { while (o != undefined) { if (o == this) return true; o = o._parent; } return false; } /** * @private * Each component should implement this method and lay out * its children based on the .width and .height properties */ function size():Void { // don't call super, it will cause us to scale. // just do nothing instead } /** * @private * each component must override init, even if just to call * the base class. */ function init():Void { super.init(); // all ccmponents have 100% scaling _xscale = 100; _yscale = 100; // turn off focus rect so we can use our own _focusrect = _global.useFocusRect == false; // see documentation for enabledChanged watch("enabled", enabledChanged); // special case for enable since it isn't getter/setter // all components assume enabled unless set to disabled if (enabled == false) { setEnabled(false); } } /** * @private * dispatch the ValueChanged event. All components that support databinding * must call this method when the value of the component changes */ function dispatchValueChangedEvent(value):Void { // Dispatch a "valueChanged" event. This event is currently // used by the Data Model to do data binding. dispatchEvent({type:"valueChanged", value:value}); } } jRmx.skins.RectBorder: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\skins\RectBorder.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.skins.Border; import mx.styles.CSSStyleDeclaration; /** * The abstract border class for drawing rectangular borders. * * @helpid 3328 * @tiptext The abstract border class for drawing rectangular borders. */ class mx.skins.RectBorder extends Border { /** @private * SymbolName for object */ static var symbolName:String = "RectBorder"; /** @private * Class used in createClassObject */ static var symbolOwner:Object = mx.skins.RectBorder; // Version string #include "../core/ComponentVersion.as" /** * name of this class */ var className:String = "RectBorder"; /** * @private * name of style property for the borderStyle this class */ var borderStyleName:String = "borderStyle"; /** * @private * name of style property for the black edge in a border */ var borderColorName:String = "borderColor"; /** * @private * name of style property for the 3d inset shadow in a border */ var shadowColorName:String = "shadowColor"; /** * @private * name of style property for the 3d outset highlight in a border */ var highlightColorName:String = "highlightColor"; /** * @private * name of style property for the 3d outside edge in a border */ var buttonColorName:String = "buttonColor"; /** * @private * name of style property for the background fill of a border */ var backgroundColorName:String = "backgroundColor"; /** * @private * since all sides of these borders are the same width, we store it once. */ var offset:Number; /** * @private * internal object that contains the thickness of each edge of the border */ var __borderMetrics:Object; /** @private * constructor */ function RectBorder() { } /** * width of object * Read-Only: use setSize() to change. */ function get width():Number { return __width; } /** * height of object * Read-Only: use setSize() to change. */ function get height():Number { return __height; } /** * @private * init variables. Components should implement this method and call super.init() at minimum */ function init(Void):Void { super.init(); } /** * @private * draw handler. No assets to load so just calls size() */ function draw(Void):Void { size(); } /** * @private * return the thickness of the border edges * @return Object top, bottom, left, right thickness in pixels */ function getBorderMetrics(Void):Object { var o:Number = offset; if (__borderMetrics == undefined) { __borderMetrics = { left: o, top: o, right: o, bottom:o }; } else { __borderMetrics.left = o; __borderMetrics.top = o; __borderMetrics.right = o; __borderMetrics.bottom = o; } return __borderMetrics; } /** * getter for borderMetrics */ function get borderMetrics():Object { return getBorderMetrics(); } /** * @private * draw the border, either 3d or 2d or nothing at all */ function drawBorder(Void):Void { } /** * @private * size handler */ function size(Void):Void { drawBorder(); } /** * @private * react to color style changes */ function setColor(Void):Void { drawBorder(); } } Rmx.styles.CSSTextStyles: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\styles\CSSTextStyles.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** /** * factory for adding CSS Text styles to StyleDeclarations and UIObject */ class mx.styles.CSSTextStyles { static function addTextStyles(o:Object, bColor:Boolean):Void { /** * the text alignment or justification. Allowed values are "left", "center", "right" * * @tiptext * @helpid 3336 */ o.addProperty("textAlign", function() { return this._tf.align; }, function(x) { if (this._tf == undefined) this._tf = new TextFormat(); this._tf.align = x; }); /** * the font weight. Allowed values are: "none", "bold" * * @tiptext * @helpid 3337 */ o.addProperty("fontWeight", function() { return (this._tf.bold != undefined) ? (this._tf.bold ? "bold" : "none") : undefined}, function(x) { if (this._tf == undefined) this._tf = new TextFormat(); this._tf.bold = (x == "bold"); }); /** * the font color. Allowed values are colors in the form of 0xRRGGBB (0xFF0000 is red). * * @tiptext * @helpid 3338 */ if (bColor) o.addProperty("color", function() { return this._tf.color; }, function(x) { if (this._tf == undefined) this._tf = new TextFormat(); this._tf.color = x; }); /** * the font family. Allowed values are font names like "Times New Roman" or "Arial" * * @tiptext * @helpid 3339 */ o.addProperty("fontFamily", function() { return this._tf.font; }, function(x) { if (this._tf == undefined) this._tf = new TextFormat(); this._tf.font = x; }); /** * the number of pixels to indentation the first line of a paragraph * * @tiptext * @helpid 3340 */ o.addProperty("textIndent", function() { return this._tf.indent; }, function(x) { if (this._tf == undefined) this._tf = new TextFormat(); this._tf.indent = x; }); /** * the font style. Allowed values are: "none", "italic" * * @tiptext * @helpid 3341 */ o.addProperty("fontStyle", function() { return (this._tf.italic != undefined) ? (this._tf.italic ? "italic" : "none") : undefined}, function(x) { if (this._tf == undefined) this._tf = new TextFormat(); this._tf.italic = (x == "italic"); }); /** * the number of pixels to the left of the text * * @tiptext * @helpid 3342 */ o.addProperty("marginLeft", function() { return this._tf.leftMargin; }, function(x) { if (this._tf == undefined) this._tf = new TextFormat(); this._tf.leftMargin = x; }); /** * the number of pixels to the right of the text * * @tiptext * @helpid 3343 */ o.addProperty("marginRight", function() { return this._tf.rightMargin; }, function(x) { if (this._tf == undefined) this._tf = new TextFormat(); this._tf.rightMargin = x; }); /** * the font size. Allowed values are numbers 6 and higher. * * @tiptext * @helpid 3344 */ o.addProperty("fontSize", function() { return this._tf.size; }, function(x) { if (this._tf == undefined) this._tf = new TextFormat(); this._tf.size = x; }); /** * the text decoration. Allowed values are: "none", "underline" * * @tiptext * @helpid 3345 */ o.addProperty("textDecoration", function() { return (this._tf.underline != undefined) ? (this._tf.underline ? "underline" : "none") : undefined}, function(x) { if (this._tf == undefined) this._tf = new TextFormat(); this._tf.underline = (x == "underline"); }); /** * whether to embed fonts or use device fonts. "true" embeds fonts, making them look better * and allowing them to be drawn at different angles, but making the download larger. * "false" uses device fonts which cannot be drawn at an angle and if the user doesn't * have the exact font on their system will approximate the font, but makes the download smaller. * * @tiptext * @helpid 3346 */ o.addProperty("embedFonts", function() { return this._tf.embedFonts; }, function(x) { if (this._tf == undefined) this._tf = new TextFormat(); this._tf.embedFonts = x; }); } } )TC:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\core\ComponentVersion.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** static var version:String = "2.0.2.126"; VC:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\core\ComponentVersion.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** static var version:String = "2.0.2.126"; Wcom.mattism.http.xmlrpc.MethodCall: W:\games\comeback\ac_xmlrpc\com\mattism\http\xmlrpc\MethodCall.as/** * @author Matt Shaw * @url http://sf.net/projects/xmlrpcflash * http://www.osflash.org/doku.php?id=xmlrpcflash */ interface com.mattism.http.xmlrpc.MethodCall { public function setName( name:String ):Void; public function addParam( arg:Object, type:String ):Void; public function removeParams( Void ):Void; public function getXml( Void ):XML; }dmx.skins.SkinElement: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\skins\SkinElement.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** /** * The class for skin elements. SkinElements support a common API for sizing and positioning * If you do not have any other special needs just register your skins as skin elements. If * you do have your own class, register that class anyway otherwise it will get re-registered as * a skin element and your class code will not be executed. This is essentially UIObject without * events, style API, and child object management. * * @helpid 3329 * @tiptext The class for all skin elements */ class mx.skins.SkinElement extends MovieClip { // mixins var width:Number; var height:Number; var top:Number; var visible:Boolean; /** * All library assets that want to participate in our resizing and recoloring schemes * need to be SkinElements or UIObjects. If you are not a SkinElement you must register here. * Otherwise, you will be a SkinElement automatically * @param name Symbol name of object * @param className Name of Class that supports the object */ static function registerElement(name:String, className:Function):Void { Object.registerClass(name, (className == undefined) ? SkinElement : className); _global.skinRegistry[name] = true; } /** * @see mx.core.UIObject */ function __set__visible(visible:Boolean):Void { _visible = visible; } /** * @see mx.core.UIObject */ function move(x:Number, y:Number):Void { _x = x; _y = y; } /** * @see mx.core.UIObject */ function setSize(w:Number, h:Number):Void { _width = w; _height = h; } } _gmx.styles.CSSSetStyle: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\styles\CSSSetStyle.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.styles.StyleManager; import mx.styles.CSSStyleDeclaration; /** * runtime style changes of CSS properties requires this package * */ class mx.styles.CSSSetStyle { // actually defined on the hosting class var styleName:String; var stylecache:Object; var _color:Number; var setColor:Function; var invalidateStyle:Function; // metadata is in UIObject.as function _setStyle(styleProp:String, newValue):Void { this[styleProp] = newValue; if (StyleManager.TextStyleMap[styleProp] != undefined) { if (styleProp == "color") { if (isNaN(newValue)) // a color name { // convert it to rgb newValue = StyleManager.getColorName(newValue); this[styleProp] = newValue; if (newValue == undefined) return; } } _level0.changeTextStyleInChildren(styleProp); return; } if (StyleManager.isColorStyle(styleProp)) { if (isNaN(newValue)) // a color name { // convert it to rgb newValue = StyleManager.getColorName(newValue); this[styleProp] = newValue; if (newValue == undefined) return; } if (styleProp=="themeColor") { var hb = StyleManager.colorNames["haloBlue"]; var hg = StyleManager.colorNames["haloGreen"]; var ho = StyleManager.colorNames["haloOrange"]; var selectionColor = {}; selectionColor[hb] = 0xB9FBFA; //haloBlue selectionColor[hg]= 0xCDFFC1; //haloGreen selectionColor[ho] = 0xFFD56F; //haloOrange var rollOverColor = {}; rollOverColor[hb] = 0xD4FDFD; //haloBlue rollOverColor[hg]= 0xe3ffd6; //haloGreen rollOverColor[ho] = 0xFFEEB3; //haloOrange var newValueS = selectionColor[newValue]; var newValueR = rollOverColor[newValue]; if ( newValueS == undefined) var newValueS = newValue; if ( newValueR == undefined) var newValueR = newValue; this.setStyle("selectionColor", newValueS); this.setStyle("rollOverColor", newValueR); } _level0.changeColorStyleInChildren(styleName, styleProp, newValue); } else { // special case for background color if (styleProp == "backgroundColor" && isNaN(newValue)) { // convert it to rgb newValue = StyleManager.getColorName(newValue); this[styleProp] = newValue; if (newValue == undefined) return; } _level0.notifyStyleChangeInChildren(styleName, styleProp, newValue); } } // propagate text style changes to the children function changeTextStyleInChildren(styleProp:String):Void { var searchKey:Number = getTimer(); // apply to all children unless overridden var j:String; for (j in this) { var i = this[j]; if (i._parent == this) { // multiple properties can point to the same clip so use // depth as a uniqueness check if (i.searchKey != searchKey) { if (i.stylecache != undefined) { delete i.stylecache.tf; delete i.stylecache[styleProp]; } i.invalidateStyle(styleProp); // apply to the child's children i.changeTextStyleInChildren(styleProp); i.searchKey = searchKey; } } } } // propagate color style changes to the children function changeColorStyleInChildren(sheetName:String, colorStyle:String, newValue):Void { var searchKey:Number = getTimer(); // apply to all children unless overridden var j:String; for (j in this) { var i = this[j]; if (i._parent == this) { // multiple properties can point to the same clip so use // depth as a uniqueness check if (i.searchKey != searchKey) { // if using this StyleDeclaration, then you get this style if (i.getStyleName() == sheetName || sheetName == undefined || sheetName=="_global") { if (i.stylecache != undefined) delete i.stylecache[colorStyle]; // if this element is using this colorname if (typeof(i._color) == "string") { if (i._color == colorStyle) { var v = i.getStyle(colorStyle) if (colorStyle == "color") { if (stylecache.tf.color != undefined) stylecache.tf.color = v; } i.setColor(v); } } else { if (i._color[colorStyle] != undefined) { // if not a movieclip, must be a textfield // so invalidate its parent if (typeof(i) != "movieclip") i._parent.invalidateStyle(); else i.invalidateStyle(colorStyle); } } } // apply to the child's children i.changeColorStyleInChildren(sheetName, colorStyle, newValue); i.searchKey = searchKey; } } } } // propagate other style changes to the children function notifyStyleChangeInChildren(sheetName:String, styleProp:String, newValue):Void { var searchKey:Number = getTimer(); // apply to all children unless overridden var j:String; for (j in this) { var i = this[j]; if (i._parent == this) { // multiple properties can point to the same clip so use // depth as a uniqueness check if (i.searchKey != searchKey) { // if using this StyleDeclaration, then you get this style if ((i.styleName == sheetName) || (i.styleName != undefined && typeof(i.styleName) == "movieclip") || sheetName==undefined) { if (i.stylecache != undefined) { delete i.stylecache[styleProp]; delete i.stylecache.tf; } delete i.enabledColor; i.invalidateStyle(styleProp); // cascade to your children as well } i.notifyStyleChangeInChildren(sheetName, styleProp, newValue); i.searchKey = searchKey; } } } } /** * set a style property. Causes lots of processing so use sparingly * * @param String prop name of style property * @param Variant value new value for style * * @tiptext * @helpid 3333 */ function setStyle(styleProp:String, newValue):Void { if (stylecache != undefined) { delete stylecache[styleProp]; delete stylecache.tf; } this[styleProp] = newValue; if (StyleManager.isColorStyle(styleProp)) { if (isNaN(newValue)) // a color name { // convert it to rgb newValue = StyleManager.getColorName(newValue); this[styleProp] = newValue; if (newValue == undefined) return; } if (styleProp=="themeColor") { var hb = StyleManager.colorNames["haloBlue"]; var hg = StyleManager.colorNames["haloGreen"]; var ho = StyleManager.colorNames["haloOrange"]; var selectionColor = {}; selectionColor[hb] = 0xB9FBFA; //haloBlue selectionColor[hg]= 0xCDFFC1; //haloGreen selectionColor[ho] = 0xFFD56F; //haloOrange var rollOverColor = {}; rollOverColor[hb] = 0xD4FDFD; //haloBlue rollOverColor[hg]= 0xe3ffd6; //haloGreen rollOverColor[ho] = 0xFFEEB3; //haloOrange var newValueS = selectionColor[newValue]; var newValueR = rollOverColor[newValue]; if ( newValueS == undefined) var newValueS = newValue; if ( newValueR == undefined) var newValueR = newValue; this.setStyle("selectionColor", newValueS); this.setStyle("rollOverColor", newValueR); } if (typeof(_color) == "string") { if (_color == styleProp) { if (styleProp == "color") { if (stylecache.tf.color != undefined) stylecache.tf.color = newValue; } setColor(newValue); } } else { if (_color[styleProp] != undefined) { invalidateStyle(styleProp); } } changeColorStyleInChildren(undefined, styleProp, newValue); } else { // special case for background color if (styleProp == "backgroundColor" && isNaN(newValue)) { // convert it to rgb newValue = StyleManager.getColorName(newValue); this[styleProp] = newValue; if (newValue == undefined) return; } // mark the component as invalid so it repaints with new style invalidateStyle(styleProp); } if (StyleManager.isInheritingStyle(styleProp) || styleProp == "styleName") { var sheet; var val = newValue; if (styleProp=="styleName") { sheet = (typeof(newValue) == "string") ? _global.styles[newValue] : val; val = sheet.themeColor; if (val!=undefined) sheet.rollOverColor = sheet.selectionColor = val; } notifyStyleChangeInChildren(undefined, styleProp, newValue); } } static function enableRunTimeCSS():Void { } static function classConstruct():Boolean { var mc = MovieClip.prototype; var ui = CSSSetStyle.prototype; CSSStyleDeclaration.prototype.setStyle = ui._setStyle; mc.changeTextStyleInChildren = ui.changeTextStyleInChildren; mc.changeColorStyleInChildren = ui.changeColorStyleInChildren; mc.notifyStyleChangeInChildren = ui.notifyStyleChangeInChildren; mc.setStyle = ui.setStyle; _global.ASSetPropFlags(mc, "changeTextStyleInChildren",1); _global.ASSetPropFlags(mc, "changeColorStyleInChildren",1); _global.ASSetPropFlags(mc, "notifyStyleChangeInChildren",1); _global.ASSetPropFlags(mc, "setStyle",1); var tf = TextField.prototype; tf.setStyle = mc.setStyle; tf.changeTextStyleInChildren = ui.changeTextStyleInChildren; return true; } static var classConstructed:Boolean = classConstruct(); static var CSSStyleDeclarationDependency = CSSStyleDeclaration; }mgmx.events.EventDispatcher: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\events\EventDispatcher.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** /** * base class for event listening and dispatching * * @helpid 3295 * @tiptext */ class mx.events.EventDispatcher { // make a instance of ourself so we can add methods to other objects static var _fEventDispatcher:EventDispatcher = undefined; // these events do not get called via backdoor because of name collisions with other methods static var exceptions:Object = {move: 1, draw: 1, load:1}; // internal function for removing listeners static function _removeEventListener(queue:Object, event:String, handler):Void { if (queue != undefined) { var l:Number = queue.length; var i:Number; for (i = 0; i < l; i++) { var o = queue[i]; if (o == handler) { queue.splice(i, 1); return; } } } } /** * add listening and dispatching methods to an object * @param object the object to receive the methods */ static function initialize(object:Object):Void { if (_fEventDispatcher == undefined) { _fEventDispatcher = new EventDispatcher; } object.addEventListener = _fEventDispatcher.addEventListener; object.removeEventListener = _fEventDispatcher.removeEventListener; object.dispatchEvent = _fEventDispatcher.dispatchEvent; object.dispatchQueue = _fEventDispatcher.dispatchQueue; } // internal function for dispatching events function dispatchQueue(queueObj:Object, eventObj:Object):Void { var queueName:String = "__q_" + eventObj.type; var queue:Array = queueObj[queueName]; if (queue != undefined) { var i:String; // loop it as an object so it resists people removing listeners during dispatching for (i in queue) { var o = queue[i]; var oType:String = typeof(o); // a handler can be a function, object, or movieclip if (oType == "object" || oType == "movieclip") { // this is a backdoor implementation that // is not compliant with the standard if (o.handleEvent != undefined) { // this is the DOM3 way o.handleEvent(eventObj); } if (o[eventObj.type] != undefined) { if (EventDispatcher.exceptions[eventObj.type] == undefined) { // this is a backdoor implementation that // is not compliant with the standard o[eventObj.type](eventObj); } } } else // it is a function { o.apply(queueObj, [eventObj]); } } } } /** * dispatch the event to all listeners * @param eventObj an Event or one of its subclasses describing the event */ function dispatchEvent(eventObj:Object):Void { if (eventObj.target == undefined) eventObj.target = this; this[eventObj.type + "Handler"](eventObj); // Dispatch to objects that are registered as listeners for // this object. this.dispatchQueue(this, eventObj); } /** * add a listener for a particular event * @param event the name of the event ("click", "change", etc) * @param the function or object that should be called */ function addEventListener(event:String, handler):Void { var queueName:String = "__q_" + event; if (this[queueName] == undefined) { this[queueName] = new Array(); } _global.ASSetPropFlags(this, queueName,1); EventDispatcher._removeEventListener(this[queueName], event, handler); this[queueName].push(handler); } /** * remove a listener for a particular event * @param event the name of the event ("click", "change", etc) * @param the function or object that should be called */ function removeEventListener(event:String, handler):Void { var queueName:String = "__q_" + event; EventDispatcher._removeEventListener(this[queueName], event, handler); } } lmx.controls.Loader: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\controls\Loader.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.core.UIComponent; import mx.core.UIObject; import mx.core.View; /** * @tiptext complete event * @helpid 3128 */ [Event("complete")] /** * @tiptext progress event * @helpid 31 29 */ [Event("progress")] [TagName("Loader")] [IconFile("Loader.png")] /** * Loader class * - extends View * @tiptext Loader provides a container to load a MovieClip, JPEG or SWF * @helpid 3130 */ class mx.controls.Loader extends View { static var symbolName:String = "Loader"; static var symbolOwner:Object = mx.controls.Loader; // why not type Function??? #include "../core/ComponentVersion.as" var className:String = "Loader"; var clipParameters:Object = { autoLoad: 1, scaleContent: 1, contentPath: 1 }; static var mergedClipParameters:Boolean = UIObject.mergeClipParameters(Loader.prototype.clipParameters, View.prototype.clipParameters); var __autoLoad:Boolean = true; // stores public "autoLoad" property var __bytesLoaded:Number = undefined; // stores public "bytesLoaded" property var __bytesTotal:Number = undefined; // stores public "bytesTotal" property var __contentPath:String = undefined; // stores public "contentPath" property var __scaleContent:Boolean = true; // stores public "scaleContent" property var contentHolder:UIComponent; var livePreview:TextField; var _origWidth:Number; var _origHeight:Number; // ////////////////////////////////////////////////// // // Constructor // // ////////////////////////////////////////////////// function Loader() // should constructor be able to have return type? { } // ////////////////////////////////////////////////// // // Overridden methods // // ////////////////////////////////////////////////// function init():Void { super.init(); // UIComponent or UIObject will handle visible, enabled, taborder } function setSize(w:Number, h:Number, noEvent:Boolean):Void { _origWidth = w; _origHeight = h; super.setSize(w, h, noEvent); if (_global.isLivePreview) { livePreview._width = __width - 1; livePreview._height = __height - 1; } } function draw():Void { size(); } function size():Void { super.size(); // We will either scale the content to the size of the Loader, // or we will scale the loader to the size of the content. if (__scaleContent) doScaleContent(); else doScaleLoader(); } function createChildren():Void { super.createChildren(); if (_global.isLivePreview) { createTextField("livePreview", -1000, 0, 0, 99, 99); livePreview.text = "mx.controls.Loader"; livePreview.border = true; } // Explicitly call load() AFTER contentHolder is created if (__autoLoad) load(); } // ////////////////////////////////////////////////// // // Public properties // // ////////////////////////////////////////////////// // autoLoad function getAutoLoad():Boolean { return __autoLoad; } [Inspectable(defaultValue=true)] /** * @tiptext If true, automatically loads the content * @helpid 3131 */ function get autoLoad():Boolean { return getAutoLoad(); } function setAutoLoad(b:Boolean):Void { if (__autoLoad != b) { __autoLoad = b; // If you set autoLoad = true and content is not loaded, it should get loaded if (__autoLoad && !this[childNameBase + 0]._complete) load(); } } function set autoLoad(b:Boolean):Void { setAutoLoad(b); } // bytesLoaded (readonly) function getBytesLoaded():Number { return __bytesLoaded; } /** * @tiptext Returns the number of bytes loaded of the Loader content * @helpid 3132 */ function get bytesLoaded():Number { return getBytesLoaded(); } // bytesTotal (readonly) function getBytesTotal():Number { return __bytesTotal; } /** * @tiptext Returns the size of the Loader content in bytes * @helpid 3133 */ function get bytesTotal():Number { return getBytesTotal(); } // content function getContent():UIComponent { return contentHolder; } /** * @tiptext Returns the content of the Loader * @helpid 3134 */ function get content():UIComponent { return getContent(); } // contentPath function getContentPath():String { return __contentPath; } [Inspectable(defaultValue="")] [Bindable] /** * @tiptext Gets or sets the absolute or relative URL of the content to be loaded * @helpid 3135 */ function get contentPath():String { return getContentPath(); } function setContentPath(url:String):Void { if (__contentPath != url) { __contentPath = url; if (childrenCreated) // prevent a load() before createChildren is called if (__autoLoad) load(); } } function set contentPath(c:String):Void { setContentPath(c); } // percentLoaded (read-only) function getPercentLoaded():Number { var p:Number = 100 * (__bytesLoaded / __bytesTotal); if (isNaN(p)) p = 0; return p; } /** * @tiptext Gets the percentage of the content loaded * @helpid 3136 */ [Bindable("readonly")] [ChangeEvent("progress")] function get percentLoaded():Number { return getPercentLoaded(); } // scaleContent /** * @tiptext If true, scales the content to fit the Loader's size * @helpid 3137 */ [Inspectable(defaultValue=true)] function get scaleContent():Boolean { return getScaleContent(); } function getScaleContent():Boolean { return __scaleContent; } function setScaleContent(b:Boolean):Void { if (__scaleContent != b) { __scaleContent = b; // We will either scale the content to the size of the Loader, // or we will scale the loader to the size of the content. if (__scaleContent) doScaleContent(); else doScaleLoader(); } } function set scaleContent(b:Boolean):Void { setScaleContent(b); } // ////////////////////////////////////////////////// // // Public methods // // ////////////////////////////////////////////////// /** * @tiptext Tells the Loader to start loading its content * @helpid 3138 */ function load(url:String):Void { if (url != undefined) __contentPath = url; if (this[childNameBase + 0] != undefined) { if (this[childNameBase + 0]._complete) { // If we've had a child completely loaded and have scaled // the Loader to the size of the content, then the Loader // component will have some arbitrary size, which we want // to reset back to the original size. If the content has // been scaled to the Loader (even if the Loader has been // scaled to the content first), the size ought to be OK, // but we reset it anyway. setSize(_origWidth, _origHeight); } destroyChildAt(0); } if (__contentPath == undefined || __contentPath=="") return; createChild(__contentPath, "contentHolder"); } function childLoaded(obj:MovieClip):Void // param type??? { super.childLoaded(obj); // In Live Preview, the rotation gets mysteriously set to 90 in // our super-method. Slam it back to zero here. obj._rotation = 0; // Record these original sizes in case we toggle from scaled Loader back to scaled Content. _origWidth = __width; _origHeight = __height; // We will either scale the content to the size of the Loader, // or we will scale the loader to the size of the content. if (__scaleContent) doScaleContent(); else doScaleLoader(); } function dispatchEvent(obj:Object):Void // type??? { if (obj.type == "progress" || obj.type == "complete") { // fake target so it looks like the container and not the child obj.target = this; // keep track of progress in case we're asked __bytesTotal = obj.total; __bytesLoaded = obj.current; } super.dispatchEvent(obj); } // ////////////////////////////////////////////////// // // Private methods // // ////////////////////////////////////////////////// function doScaleContent():Void { if (!this[childNameBase + 0]._complete) return; // Make sure any previous scaling is undone. unScaleContent(); // Scale the content to the size of the loader, preserving aspect ratio. var bM = border_mc.borderMetrics; var interiorWidth = _origWidth - bM.left - bM.right; var interiorHeight = _origHeight - bM.top - bM.bottom; var x = bM.left; var y = bM.top; var xscale = interiorWidth / contentHolder._width; var yscale = interiorHeight / contentHolder._height; var scale; if (xscale > yscale) { x = bM.left + Math.floor((interiorWidth - contentHolder._width*yscale) / 2); scale = yscale; } else { y = bM.top + Math.floor((interiorHeight - contentHolder._height*xscale) / 2); scale = xscale; } // Normalize the scale from a basis of one to a basis of 100, // since that's how Flash scale works. scale *= 100; // Scale by the same amount in both directions. contentHolder._xscale = contentHolder._yscale = scale; contentHolder._x = x; contentHolder._y = y; if (__width != _origWidth || __height != _origHeight) setSize(_origWidth, _origHeight); } function doScaleLoader():Void { if (!this[childNameBase + 0]._complete) return; unScaleContent(); // Scale the laoder to the size of the content. var bM = border_mc.borderMetrics; var newWidth = contentHolder._width + bM.left + bM.right; var newHeight = contentHolder._height + bM.top + bM.bottom; if (__width != newWidth || __height != newHeight) setSize( newWidth, newHeight); contentHolder._x = bM.left; contentHolder._y = bM.top; } function unScaleContent():Void { // don't do this stuff unless we're done loading. // make sure callers enforce this by checking before calling. contentHolder._xscale = contentHolder._yscale = 100; contentHolder._x = contentHolder._y = 0; } } lmx.skins.ColoredSkinElement: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\skins\ColoredSkinElement.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** /** * Class used for coloring graphical objects in response to color style changes. * Each ColoredSkinElement is all one color so multi-color graphics must be * composited from multiple ColoredSkinElements. Add the setColorStyle method * to the actions for each colored graphical object. * * @tiptext Colored object support * @helpid 3322 */ class mx.skins.ColoredSkinElement { // create an instance of yourself so you can add methods to other graphic objects static var mixins:ColoredSkinElement = new ColoredSkinElement(); // the colorStyle for the object var _color; // onEnterFrame is used in the invalidate/draw mechanism var onEnterFrame:Function; // this gets applied in UIObjectExtensions var getStyle:Function; // called by the color style system when color changes function setColor(c:Number):Void { if (c != undefined) { var colorizer = new Color(this); colorizer.setRGB(c); } } // called when a whole StyleDeclaration changes function draw(Void):Void { setColor(getStyle(_color)); onEnterFrame = undefined; } // called when a whole StyleDeclaration changes function invalidateStyle(Void):Void { onEnterFrame = draw; } /** * call this in the actions for each colorable graphic element * Example: mx.skins.ColoredSkinElement.setColorStyle(this, "borderColor"); * Element will now use "borderColor" for its actual color. */ static function setColorStyle(p:Object, colorStyle:String):Void { if (p._color == undefined) p._color = colorStyle; p.setColor = ColoredSkinElement.mixins.setColor; p.invalidateStyle = ColoredSkinElement.mixins.invalidateStyle; p.draw = ColoredSkinElement.mixins.draw; p.setColor(p.getStyle(colorStyle)); } } pcom.mattism.http.xmlrpc.Parser: W:\games\comeback\ac_xmlrpc\com\mattism\http\xmlrpc\Parser.as /** * @author Matt Shaw * @url http://sf.net/projects/xmlrpcflash * http://www.osflash.org/doku.php?id=xmlrpcflash */ interface com.mattism.http.xmlrpc.Parser { public function parse( node:XML ):Object; }(pmx.managers.DepthManager: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\managers\DepthManager.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.core.UIObject; /** * Class for managing the depth (z-order) of objects. * * @helpid 3297 * @tiptext */ class mx.managers.DepthManager { // highest allowed depth is reserved for tooltips and cursors static var reservedDepth:Number = 1048575; // highest depth for all other objects static var highestDepth:Number = 1048574; // lowest allowed depth static var lowestDepth:Number = -16383; // lowest depth plus this number of layers is reserved // for statically placed content static var numberOfAuthortimeLayers:Number = 383; /** * constant used in calls to createClassObjectAtDepth/createObjectAtDepth * * @tiptext used as parameter to request placement in cursor depths * @helpid 3298 */ static var kCursor:Number = 101; /** * constant used in calls to createClassObjectAtDepth/createObjectAtDepth * * @tiptext used as parameter to request placement in tooltip depths * @helpid 3299 */ static var kTooltip:Number = 102; /** * constant used in calls to createClassChildtAtDepth/createChildAtDepth * * @tiptext used as parameter to request placement on top of other content * but below kTopMost content * @helpid 3300 */ static var kTop:Number = 201; /** * constant used in calls to createClassChildtAtDepth/createChildAtDepth * * @tiptext used as parameter to request placement on bottom of other content * @helpid 3301 */ static var kBottom:Number = 202; /** * constant used in calls to createClassChildtAtDepth/createChildAtDepth * * @tiptext used as parameter to request placement on top of other content * even above kTop objects * @helpid 3302 */ static var kTopmost:Number = 203; /** * constant used in calls to createClassChildtAtDepth/createChildAtDepth * * @tiptext used as parameter to request removal from the topmost layer * @helpid 3303 */ static var kNotopmost:Number = 204; // reserve the topmost layer for ourselves private static var holder:MovieClip = _root.createEmptyMovieClip("reserved", DepthManager.reservedDepth); // sort the depths in the array of depths. we don't need an equality test since depths can never be the same static function sortFunction(a:MovieClip, b:MovieClip):Number { if (a.getDepth() > b.getDepth()) return 1; return -1; } // true if it is the reserved depth static function test(depth:Number):Boolean { if (depth == DepthManager.reservedDepth) return false; else return true; } /** * create an instance of a class at a depth relative to other content * * @param className the name of the class * @param depthSpace either kCursor or kTooltip * @param initObj object containing initialization properties * @return reference to object * * @tiptext * @helpid 3304 */ static function createClassObjectAtDepth(className:Object, depthSpace:Number, initObj:Object):UIObject { var o:UIObject = undefined; switch (depthSpace) { case (DepthManager.kCursor): o = DepthManager.holder.createClassChildAtDepth( className, DepthManager.kTopmost, initObj ); break; case (DepthManager.kTooltip): o = DepthManager.holder.createClassChildAtDepth( className, DepthManager.kTop, initObj ); break; default: break; } return o; } /** * create an instance of a symbol at a depth relative to other content * * @param linkageName the linkage name of the symbol in the library * @param depthSpace either kCursor or kTooltip * @param initObj object containing initialization properties * @return reference to object * * @tiptext * @helpid 3305 */ static function createObjectAtDepth(linkageName:String, depthSpace:Number, initObj:Object):MovieClip { var o:MovieClip = undefined; switch (depthSpace) { case (DepthManager.kCursor): o = DepthManager.holder.createChildAtDepth( linkageName, DepthManager.kTopmost, initObj ); break; case (DepthManager.kTooltip): o = DepthManager.holder.createChildAtDepth( linkageName, DepthManager.kTop, initObj ); break; default: break; } return o; } /* the rest of these methods are added to UIObject */ // the methods use the following properties and methods on UIObject. var _childCounter:Number; var _topmost:Boolean; var createClassObject:Function; var createObject:Function; var swapDepths:Function; var getDepth:Function; var _parent:MovieClip; /** * create an instance of a class at a depth relative to other content * * @param className the name of the class * @param depthSpace one of kTop, kBottom, kTopmost, kNoTopmost * @param initObj object containing initialization properties * @return reference to object * * @tiptext * @helpid 3306 */ function createClassChildAtDepth( className:Function, depthFlag:Number, initObj:Object ):UIObject { if (_childCounter == undefined) _childCounter = 0; var dt:Array = buildDepthTable(); var depth:Number = getDepthByFlag( depthFlag, dt ); //trace("createClassChildAtDepth " + depth); var shuffleDir:String = "down"; if( depthFlag == mx.managers.DepthManager.kBottom) shuffleDir = "up"; var desiredDepth:Number = undefined; if (dt[depth] != undefined) { desiredDepth = depth; depth = findNextAvailableDepth( depth, dt, shuffleDir ); } //trace("createClassChildAtDepth " + depth); var o:UIObject = createClassObject(className, "depthChild" + _childCounter++, depth, initObj); //trace("createClassChildAtDepth created " + o); if (desiredDepth != undefined) { dt[depth] = o; shuffleDepths( o, desiredDepth, dt, shuffleDir ); } if ( depthFlag == mx.managers.DepthManager.kTopmost) o._topmost = true; //trace("createClassChildAtDepth " + depthFlag + " created " + o + " at " + depth); return o; } /** * create an instance of a symbol at a depth relative to other content * * @param linkageName the linkage name of the symbol in the library * @param depthSpace one of kTop, kBottom, kTopmost, kNoTopmost * @param initObj object containing initialization properties * @return reference to object * * @tiptext * @helpid 3307 */ function createChildAtDepth( linkageName:String, depthFlag:Number, initObj:Object ):MovieClip { //trace("createChildAtDepth"); if (_childCounter == undefined) _childCounter = 0; var dt:Array = buildDepthTable(); var depth:Number = getDepthByFlag( depthFlag, dt ); var shuffleDir:String = "down"; if( depthFlag == mx.managers.DepthManager.kBottom) shuffleDir = "up"; var desiredDepth:Number = undefined; if (dt[depth] != undefined) { desiredDepth = depth; depth = findNextAvailableDepth( depth, dt, shuffleDir ); } var o:MovieClip = createObject(linkageName, "depthChild" + _childCounter++, depth, initObj); if (desiredDepth != undefined) { dt[depth] = o; shuffleDepths( o, desiredDepth, dt, shuffleDir ); } if ( depthFlag == mx.managers.DepthManager.kTopmost) o._topmost = true; //trace("createChildAtDepth " + depthFlag + " created " + o + " at " + depth); return o; } /** * set this object at a particular depth, moving other objects to make room if needed * * @param depthFlag the desired depth * * @tiptext * @helpid 3308 */ function setDepthTo( depthFlag:Number ):Void { var dt:Array = _parent.buildDepthTable(); var depth:Number = _parent.getDepthByFlag( depthFlag, dt ); //trace("setDepthTo got depth by flag = " + depth); /* Shuffle is designed for relative movement like in setDepthAbove/Below. In this case we don't know what to do with something occupying the target slot. Do we move it up or down to make room? For now we just move it depending on its position relative to the target depth */ if (dt[depth] != undefined) { shuffleDepths( MovieClip(this), depth, dt, undefined); } else { swapDepths( depth ); } //trace("setDepthTo put " + this + " at " + depth); if ( depthFlag == mx.managers.DepthManager.kTopmost) _topmost = true; else delete _topmost; } /** * set this object above the target object, moving other objects including the target object to make room if needed * * @param targetInstance the target object * * @tiptext * @helpid 3309 */ function setDepthAbove( targetInstance:MovieClip ):Void { if (targetInstance._parent != _parent) return; // try to put it above var targetDepth:Number = targetInstance.getDepth() + 1; var dt:Array = _parent.buildDepthTable(); // if slot above is taken and we're coming from below, just // push the target down to make room for the source if (dt[targetDepth] != undefined && getDepth() < targetDepth) targetDepth -= 1; if (targetDepth > mx.managers.DepthManager.highestDepth) targetDepth = mx.managers.DepthManager.highestDepth; //trace("setDepthAbove wants to put " + this + " at " + targetDepth); if (targetDepth == mx.managers.DepthManager.highestDepth) _parent.shuffleDepths( this, targetDepth, dt, "down" ); else if (dt[targetDepth] != undefined) _parent.shuffleDepths( this, targetDepth, dt, undefined ); else swapDepths(targetDepth); //trace("setDepthAbove put " + this + " at " + targetDepth); } /** * set this object below the target object, moving other objects including the target object to make room if needed * * @param targetInstance the target object * * @tiptext * @helpid 3310 */ function setDepthBelow( targetInstance:MovieClip ):Void { if (targetInstance._parent != _parent) return; // try to put it above var targetDepth:Number = targetInstance.getDepth() - 1; var dt:Array = _parent.buildDepthTable(); // if slot below is taken and we're coming from above, just // shove the target up to make room for the source if (dt[targetDepth] != undefined && getDepth() > targetDepth) targetDepth += 1; var lowestDepth:Number = mx.managers.DepthManager.lowestDepth + mx.managers.DepthManager.numberOfAuthortimeLayers; // authortime shapes on layers don't show up in the depth table // we require that all shapes go below the components var i:String; for (i in dt) { var x = dt[i]; if (x._parent != undefined) lowestDepth = Math.min(lowestDepth, x.getDepth()); } if (targetDepth < lowestDepth) targetDepth = lowestDepth; //trace("setDepthBelow wants to put " + this + " at " + targetDepth); if (targetDepth == lowestDepth) _parent.shuffleDepths( this, targetDepth, dt, "up" ); else if (dt[targetDepth] != undefined) _parent.shuffleDepths( this, targetDepth, dt, undefined ); else swapDepths(targetDepth); //trace("setDepthBelow put " + this + " at " + targetDepth); } /** * @private * calculate the correct value to use for the new depth * * @param targetDepth desired depth * @param depthTable generated by call to buildDepthTable * @param direction "up" - look up if something occupies that depth, or "down" * @return Number next available depth */ function findNextAvailableDepth( targetDepth:Number, depthTable:Array, direction:String ):Number { var highestAuthoringDepth:Number = mx.managers.DepthManager.lowestDepth + mx.managers.DepthManager.numberOfAuthortimeLayers; // don't stick things into the authoring depths // static text and other content may be there. if (targetDepth < highestAuthoringDepth) targetDepth = highestAuthoringDepth; if (depthTable[targetDepth] == undefined) return targetDepth; // undefined; //trace("findNextAvailableDepth starting at " + targetDepth + " and packing stuff " + direction); var nextFreeAbove:Number = targetDepth; var nextFreeBelow:Number = targetDepth; if (direction == "down") { while(depthTable[nextFreeBelow] != undefined) { nextFreeBelow--; } return nextFreeBelow; } while(depthTable[nextFreeAbove] != undefined) { nextFreeAbove++; } return nextFreeAbove; } /** * @private * move objects to different depths in order to make room for subject at the targetDepth * * @param subject the object we want to move * @param targetDepth desired depth * @param depthTable generated by call to buildDepthTable * @param direction "up" - look up if something occupies that depth, or "down" or undefined - use best judgement */ function shuffleDepths( subject:MovieClip, targetDepth:Number, depthTable:Array, direction:String ):Void { // we have to take a movieclip and use it to give new depths to other clips and // textfields because textfields don't have depth swapping calls but can be // given new depths when swapped with a movie clip //trace("DepthManager:shuffleDepths"); var lowestDepth:Number = mx.managers.DepthManager.lowestDepth + mx.managers.DepthManager.numberOfAuthortimeLayers; var highestAuthoringDepth:Number = lowestDepth; // see note in first use of "lowestDepth++" var i:String; for (i in depthTable) { var x = depthTable[i]; if (x._parent != undefined) lowestDepth = Math.min(lowestDepth, x.getDepth()); } if (direction == undefined) { if (subject.getDepth() > targetDepth) direction = "up"; else direction = "down"; } // pack the array. Using shift on depthTable doesn't work because // shift and pop generate undefined for each hole in the array var dt:Array = new Array(); for (i in depthTable) { var x = depthTable[i]; if (x._parent != undefined) dt.push(x); } // sort the array by depth, [0] being the lowest. We can't count on the array being in order // even though the clip tells you about them in z-order. Additional // references to the clips can cause the array to be out of order dt.sort(mx.managers.DepthManager.sortFunction); if (direction == "up") { var a:Object = undefined; var lastd:Number; // pull things off the depth table until we find the subject while (dt.length > 0) { a = dt.pop(); // trace(a + " " + a.getDepth()); if (a == subject) { break; } } // move the rest of the array while (dt.length > 0) { lastd = subject.getDepth(); a = dt.pop(); var d:Number = a.getDepth(); // if there's a gap in the z order between the subject and the // current clip, move the subject just on top of the current // clip // trace(a + " is at " + d + " subject is at " + lastd); // don't do this if we're working with authoring content if (lastd > d + 1) { if (d >= 0) { subject.swapDepths(d+1); } else if (lastd > highestAuthoringDepth && d < highestAuthoringDepth) { subject.swapDepths(highestAuthoringDepth); } //trace("preswap put subject at " + subject.getDepth()); } // swap the subject below the current clip subject.swapDepths(a); // trace("swap put subject at " + subject.getDepth()); if (d == targetDepth) break; } } else if (direction == "down") { var a:Object = undefined; var lastd:Number; // pull things off the depth table until we find the subject while (dt.length > 0) { a = dt.shift(); if (a == subject) { break; } } // move the rest of the array while (dt.length > 0) { lastd = a.getDepth(); a = dt.shift(); var d:Number = a.getDepth(); // if there's a gap in the z order between the subject and the // current clip, move the subject just on top of the current // clip if ((lastd < d - 1) && (d > 0)) { subject.swapDepths(d - 1); } // swap the subject below the current clip subject.swapDepths(a); if (d == targetDepth) break; } } } /** * @private * calculate the correct depth based on the depthFlag. Does not guarantee that it * will be free -- you must test the depth and then shuffleDepths if necessary * * @param depthFlag either kTop, kBotton, kTopmost or kNoTopmost * @param depthTable generated by call to buildDepthTable * @return Number a good depth to start with */ function getDepthByFlag( depthFlag:Number, depthTable:Array ):Number { var depth:Number = 0; if ( depthFlag == mx.managers.DepthManager.kTop || depthFlag == mx.managers.DepthManager.kNotopmost) { var lowestTopmost:Number = 0; var anyTopmost:Boolean = false; var j:String; for (j in depthTable) { var i:Object = depthTable[j]; var t:String = typeof(i); if (t == "movieclip" || (t == "object" && i.__getTextFormat != undefined)) if (i.getDepth()<=DepthManager.highestDepth) { if (!i._topmost) { depth = Math.max(depth, i.getDepth()); } else { if (!anyTopmost) { lowestTopmost = i.getDepth(); anyTopmost = true; } else lowestTopmost = Math.min(lowestTopmost, i.getDepth()); } } } depth += 20; if (anyTopmost) if (depth >= lowestTopmost) depth = lowestTopmost -1; } else if (depthFlag == mx.managers.DepthManager.kBottom) { var j:String; for (j in depthTable) { var i:Object = depthTable[j]; var t:String = typeof(i); if (t == "movieclip" || (t == "object" && i.__getTextFormat != undefined)) if (i.getDepth()<=DepthManager.highestDepth) { depth = Math.min(depth, i.getDepth()); } } depth -= 20; } else if (depthFlag == mx.managers.DepthManager.kTopmost) { var j:String; for (j in depthTable) { var i:Object = depthTable[j]; var t:String = typeof(i); if (t == "movieclip" || (t == "object" && i.__getTextFormat != undefined)) if (i.getDepth()<=DepthManager.highestDepth) { depth = Math.max(depth, i.getDepth()); } } depth += 100; } if (depth >= mx.managers.DepthManager.highestDepth) depth = mx.managers.DepthManager.highestDepth; // see note in first use of "lowestDepth++" var lowestDepth:Number = mx.managers.DepthManager.lowestDepth + mx.managers.DepthManager.numberOfAuthortimeLayers; var i:String; for (i in depthTable) { var x:Object = depthTable[i]; if (x._parent != undefined) lowestDepth = Math.min(lowestDepth, x.getDepth()); } if (depth <= lowestDepth) depth = lowestDepth; return depth; } /** * @private * find all the children and build a table of their depths * * @return Array a table of the depths of the child objects */ function buildDepthTable(Void):Array { //trace("DepthManager:buildDepthTable"); var depthTable:Array = new Array(); var j:String; for (j in this) { var i = this[j]; var t:String = typeof(i); if (t == "movieclip" || (t == "object" && i.__getTextFormat != undefined)) if (i._parent == this) { depthTable[i.getDepth()] = i; } } return depthTable; } // Only one depth manager is needed. When created it adds the methods to the // base classes function DepthManager() { MovieClip.prototype.createClassChildAtDepth = createClassChildAtDepth; MovieClip.prototype.createChildAtDepth = createChildAtDepth; MovieClip.prototype.setDepthTo = setDepthTo; MovieClip.prototype.setDepthAbove = setDepthAbove; MovieClip.prototype.setDepthBelow = setDepthBelow; MovieClip.prototype.findNextAvailableDepth = findNextAvailableDepth; MovieClip.prototype.shuffleDepths = shuffleDepths; MovieClip.prototype.getDepthByFlag = getDepthByFlag; MovieClip.prototype.buildDepthTable = buildDepthTable; _global.ASSetPropFlags(MovieClip.prototype, "createClassChildAtDepth",1); _global.ASSetPropFlags(MovieClip.prototype, "createChildAtDepth",1); _global.ASSetPropFlags(MovieClip.prototype, "setDepthTo",1); _global.ASSetPropFlags(MovieClip.prototype, "setDepthAbove",1); _global.ASSetPropFlags(MovieClip.prototype, "setDepthBelow",1); _global.ASSetPropFlags(MovieClip.prototype, "findNextAvailableDepth",1); _global.ASSetPropFlags(MovieClip.prototype, "shuffleDepths",1); _global.ASSetPropFlags(MovieClip.prototype, "getDepthByFlag",1); _global.ASSetPropFlags(MovieClip.prototype, "buildDepthTable",1); // applyDepthSpaceProtection(); } // this technique guarantees that the depthManager is created and // adds to the base class when this package is included in a SWF static var __depthManager:DepthManager = new DepthManager(); /////////////////////////////////////////////////////////////////// // begin optional section for protected attachment and // depth space tracking (implements getInstanceAtDepth) // // this would allow considerable performance improvements for // some of the above methods, but incurs overhead at every // attach, swap, etc. /////////////////////////////////////////////////////////////////// /* function applyDepthSpaceProtection(Void):Void { MovieClip.prototype.attachProxy = MovieClip.prototype.attachMovie; MovieClip.prototype.swapProxy = MovieClip.prototype.swapDepths; // TBD: protect all of these // MovieClip.prototype.createEmptyMovieClip // MovieClip.prototype.createTextField // MovieClip.prototype.removeMovieClip // MovieClip.prototype.unloadMovie // MovieClip.prototype.duplicateMovieClip MovieClip.prototype.highestDepth = MovieClip.prototype.lowestDepth = 0; MovieClip.prototype.attachMovie = attachMovie; MovieClip.prototype.swapDepths = swapDepths; MovieClip.prototype.getInstanceAtDepth = getInstanceAtDepth; } function attachMovie(linkage:String, refName:String, depth:Number, init:Object):MovieClip { if (depthTable == undefined) depthTable = new Object(); var:Boolean doAttach = true; if (this == _level0) { doAttach = DepthManager.test(depth); //trace(refName + " will be attached " + doAttach); } if (doAttach) { // do the actual attachment var ref:MovieClip = attachProxy(linkage, refName, depth, init); depthTable[depth] = ref; highestDepth = Math.max(depth, MovieClip.highestDepth); lowestDepth = Math.min(depth, MovieClip.lowestDepth); return ref; } else return undefined; } function swapDepths(depthOrTarget):Void { if (depthTable == undefined) depthTable = new Object(); var original:Number = getDepth(); var doSwap:Boolean = true; var isInstance:Boolean = (typeof(depthOrTarget) == "movieclip"); if (typeof(getInstanceAtDepth(depthOrTarget)) == "movieclip") isInstance = true; if (this == _level0) { if (isInstance) doSwap = DepthManager.test(depthOrTarget); else doSwap = (depthOrTarget != DepthManager.holder); } if (doSwap) { swapProxy(depthOrTarget); if (isInstance) { var swapped:Number = depthOrTarget.getDepth(); _parent.depthTable[swapped] = this; _parent.depthTable[original] = depthOrTarget; } else { highestDepth = Math.max(depthOrTarget, MovieClip.highestDepth); lowestDepth = Math.min(depthOrTarget, MovieClip.lowestDepth); _parent.depthTable[depthOrTarget] = this; _parent.depthTable[original] = undefined; } } else return; } function getInstanceAtDepth(depth:Number):Number { return depthTable[depth]; } */ /////////////////////////////////////////////////////////////////// // end optional section /////////////////////////////////////////////////////////////////// } pcom.mattism.http.xmlrpc.MethodFaultImpl: W:\games\comeback\ac_xmlrpc\com\mattism\http\xmlrpc\MethodFaultImpl.as/** * @author Matt Shaw * @url http://sf.net/projects/xmlrpcflash * http://www.osflash.org/doku.php?id=xmlrpcflash */ import com.mattism.http.xmlrpc.MethodFault; class com.mattism.http.xmlrpc.MethodFaultImpl implements MethodFault { private var _fault:Object; public function MethodFaultImpl( o:Object ){ if ( o ) this.setFaultObject( o ); } public function getFaultCode():Number { return Number( this._fault.faultCode ); } public function getFaultString():String { return String( this._fault.faultString ); } public function getArgs():Array { return Array( this._fault.args ); } public function setFaultObject( o:Object ):Void { this._fault=o; } } /* faultCode -2 args faultString Unexpected Zope error value: NotFound - Site Error An error was encountered while publishing this resource. Debugging Notice Zope has encountered a problem publishing your object. The object at http://www.zope.org/Members/logik/objectIds has an empty or missing docstring. Objects must have a docstring to be published. Troubleshooting Suggestions The URL may be incorrect. The parameters passed to this resource may be incorrect. A resource that this resource relies on may be encountering an error. For more detailed information about the error, please refer to the error log. If the error persists please contact the site maintainer. Thank you for your patience. */vcom.mattism.http.xmlrpc.MethodFault: W:\games\comeback\ac_xmlrpc\com\mattism\http\xmlrpc\MethodFault.as/** * @author Matt Shaw * @url http://sf.net/projects/xmlrpcflash * http://www.osflash.org/doku.php?id=xmlrpcflash */ interface com.mattism.http.xmlrpc.MethodFault { public function getFaultCode():Number; public function getFaultString():String; public function getArgs():Array; public function setFaultObject( o:Object ):Void; } /* faultCode -2 args faultString Unexpected Zope error value: NotFound - Site Error An error was encountered while publishing this resource. Debugging Notice Zope has encountered a problem publishing your object. The object at http://www.zope.org/Members/logik/objectIds has an empty or missing docstring. Objects must have a docstring to be published. Troubleshooting Suggestions The URL may be incorrect. The parameters passed to this resource may be incorrect. A resource that this resource relies on may be encountering an error. For more detailed information about the error, please refer to the error log. If the error persists please contact the site maintainer. Thank you for your patience. */J|mx.events.UIEventDispatcher: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\events\UIEventDispatcher.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.events.EventDispatcher; import mx.core.UIObject; /** * event listening and dispatching for UIObjects. * * @helpid 3296 * @tiptext */ class mx.events.UIEventDispatcher extends EventDispatcher { /** * list of supported keyboard events */ static var keyEvents:Object = { keyDown: 1, keyUp: 1 }; /** * load and unload events */ static var loadEvents:Object = { load: 1, unload: 1}; // we can't use 'super' in a mix-in because we'd then have // to mix into the object's prototype which is too dangerous // instead we rename functions from the parent class and add // them to the object as well. var __origAddEventListener:Function; // a pointer to the target object used when we get called // in a different scope var owner:Object; // we don't know if the load event has already been sent when the // user adds a listener for "load". So, we send them a load event // and don't send one when the real load event happens var __sentLoadEvent; static var lowLevelEvents:Object = { keyEvents: ["addKeyEvents", "removeKeyEvents"], loadEvents: ["addLoadEvents", "removeLoadEvents"] }; // a copy of ourselves so we can add methods to other instances static var _fEventDispatcher:UIEventDispatcher = undefined; // internal function that adds keyboard listeners to a UIObject so the // listener can get events static function addKeyEvents(obj:Object):Void { if (obj.keyHandler == undefined) { var o = obj.keyHandler = new Object(); o.owner = obj; o.onKeyDown = _fEventDispatcher.onKeyDown; o.onKeyUp = _fEventDispatcher.onKeyUp; } Key.addListener(obj.keyHandler); } // internal function that removes keyboard listeners from a UIObject static function removeKeyEvents(obj:Object):Void { Key.removeListener(obj.keyHandler); } // internal function that adds load/unload listeners to a UIObject so the // listener can get events static function addLoadEvents(obj:Object):Void { if (obj.onLoad == undefined) { obj.onLoad = _fEventDispatcher.onLoad; obj.onUnload = _fEventDispatcher.onUnload; // sometimes when you create an obj, the player has already figured out the list of // methods it needs to run so when you add an onLoad here it is too late and never // gets called. if (obj.getBytesTotal() == obj.getBytesLoaded()) { obj.doLater(obj, "onLoad"); } } } // internal function that removes load/unload listeners from a UIObject static function removeLoadEvents(obj:Object):Void { delete obj.onLoad; delete obj.onUnload; } /** * add listening and dispatching methods to an object * @param object the object to receive the methods */ static function initialize(obj:Object):Void { if (_fEventDispatcher == undefined) { _fEventDispatcher = new UIEventDispatcher; } obj.addEventListener = _fEventDispatcher.__addEventListener; obj.__origAddEventListener = _fEventDispatcher.addEventListener; obj.removeEventListener = _fEventDispatcher.removeEventListener; obj.dispatchEvent = _fEventDispatcher.dispatchEvent; obj.dispatchQueue = _fEventDispatcher.dispatchQueue; } /** * dispatch the event to all listeners * @param eventObj an Event or one of its subclasses describing the event */ function dispatchEvent(eventObj:Object):Void { if (eventObj.target == undefined) eventObj.target = this; this[eventObj.type + "Handler"](eventObj); // Dispatch to objects that are registered as listeners for // all objects. this.dispatchQueue(EventDispatcher, eventObj); // Dispatch to objects that are registered as listeners for // this object. this.dispatchQueue(this, eventObj); } // internal hook for keyboard events function onKeyDown(Void):Void { owner.dispatchEvent({type:"keyDown", code:Key.getCode(), ascii:Key.getAscii(), shiftKey:Key.isDown(Key.SHIFT), ctrlKey:Key.isDown(Key.CONTROL)}); } // internal hook for keyboard events function onKeyUp(Void):Void { owner.dispatchEvent({type:"keyUp", code:Key.getCode(), ascii:Key.getAscii(), shiftKey:Key.isDown(Key.SHIFT), ctrlKey:Key.isDown(Key.CONTROL)}); } // internal hook for load events function onLoad(Void):Void { if (__sentLoadEvent != true) dispatchEvent({type:"load"}); __sentLoadEvent = true; } // internal hook for load events function onUnload(Void):Void { dispatchEvent({type:"unload"}); } // internal hook of FEventDispatcher.addEventListener function __addEventListener(event:String, handler):Void { __origAddEventListener(event, handler); var ll = UIEventDispatcher.lowLevelEvents; for (var i in ll) { if (UIEventDispatcher[i][event] != undefined) { var s = ll[i][0]; UIEventDispatcher[s](this); } } } // override of FEventDispatcher.removeEventListener function removeEventListener(event:String, handler):Void { var queueName:String = "__q_" + event; EventDispatcher._removeEventListener(this[queueName], event, handler); if (this[queueName].length == 0) // no more listeners { var ll = UIEventDispatcher.lowLevelEvents; for (var i in ll) { if (UIEventDispatcher[i][event] != undefined) { var s = ll[i][1]; UIEventDispatcher[ll[i][1]](this); } } } } } |com.mattism.http.xmlrpc.ParserImpl: W:\games\comeback\ac_xmlrpc\com\mattism\http\xmlrpc\ParserImpl.as/** * @author Matt Shaw * @url http://sf.net/projects/xmlrpcflash * http://www.osflash.org/doku.php?id=xmlrpcflash */ import com.mattism.http.xmlrpc.Parser; import com.mattism.http.xmlrpc.util.XMLRPCUtils; import com.mattism.http.xmlrpc.util.XMLRPCDataTypes; class com.mattism.http.xmlrpc.ParserImpl implements Parser { // Metadata private var _VERSION:String = "1.0.0"; private var _PRODUCT:String = "ParserImpl"; // Constants private var ELEMENT_NODE:Number = 1; private var TEXT_NODE:Number = 3; private var METHOD_RESPONSE_NODE:String = "methodResponse"; private var PARAMS_NODE:String = "params"; private var PARAM_NODE:String = "param"; private var VALUE_NODE:String = "value"; private var FAULT_NODE:String = "fault"; private var ARRAY_NODE:String = "array"; private var DATA_NODE:String = "data"; private var STRUCT_NODE:String = "struct"; private var MEMBER_NODE:String = "member"; public function parse( xml:XML ):Object { trace(xml.toString()); if ( xml.toString().toLowerCase().indexOf('= 0 ){ trace("WARNING: XML-RPC Response looks like an html page."); return xml.toString(); } xml.ignoreWhite = true; return this._parse( xml.firstChild ); } private function _parse( node:XMLNode ):Object { var data:Object; if (node.nodeType == TEXT_NODE) { return node.nodeValue; } else if (node.nodeType == ELEMENT_NODE) { if ( node.nodeName == METHOD_RESPONSE_NODE || node.nodeName == PARAMS_NODE || node.nodeName == VALUE_NODE || node.nodeName == PARAM_NODE || node.nodeName == FAULT_NODE || node.nodeName == ARRAY_NODE ) { this.debug("_parse(): >> " + node.nodeName); return this._parse( node.firstChild ); } else if (node.nodeName == DATA_NODE) { this.debug("_parse(): >> Begin Array"); data = new Array(); for (var i:Number=0; i> Begin Struct"); data = new Object(); for (var i:Number=0; i " + a); } }}mx.screens.Form: C:\Documents and Settings\michelek\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\mx\screens\Form.as//**************************************************************************** //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved. //The following is Sample Code and is subject to all restrictions on //such code as contained in the End User License Agreement accompanying //this product. //**************************************************************************** import mx.screens.Screen; import mx.managers.SystemManager; [InspectableList("autoLoad","contentPath")] /** * Form class * - extends Screen * - enables author-defined handling of Form visibility and containment * * @tiptext Form class. Extends Screen. * @helpid 1895 */ [InspectableList("visible", "autoLoad","contentPath")] class mx.screens.Form extends Screen { // SymbolName for object static var symbolName:String = "Form"; // Class used in createClassObject static var symbolOwner:Object = mx.screens.Form; // name of this class var className:String = "Form"; // indicates whether this is a form private var _isForm = true; // list of children of this form private var _childForms:Array; // 0-based index of where this screen is in its parent's childScreens array private var _indexInParentForm:Number = 0; // If Form is initially visible, send "reveal" event when redraw is first called. private var _sendRevealDuringRedraw:Boolean = true; // ////////////////////////////////////////////////// // // properties // // ////////////////////////////////////////////////// // ////////////////////////////////////////////////// // // getters/setters // // ////////////////////////////////////////////////// /** * True if object is visible -- override to get different verbose setting */ [Inspectable(defaultValue=true, verbose=0, category="Other")] /** * controls whether the form is visible * @tiptext controls whether the form is visible * @helpid 1896 */ function get visible():Boolean { return super.visible; } function set visible(x:Boolean):Void { if (x == true && visible == false) _sendRevealDuringRedraw = false; super.setVisible(x, false); } /** * zero-based index of this form in its parent (getChildForm) * Read-Only: use createChild() to add new child form * @tiptext index of this form in its parent (getChildForm) * @helpid 1897 */ public function get indexInParentForm():Number { return _indexInParentForm; } /** * number of children of this form that are forms, not including slides * Read-Only: use createChild() to add new child forms * @tiptext number of child forms of this form * @helpid 1898 */ public function get numChildForms():Number { return _childForms.length; } /** * True if this form's _parent is a form * Read-Only: use createChild() to add new child forms * @tiptext True if this forms's _parent is a form * @helpid 1899 */ public function get parentIsForm():Boolean { return((parentForm != null) && (parentForm._isForm)); } /** * Form containing this form. May be null for the root form. * Read-Only: use createChild() to add new child forms * @tiptext Form containing this form * @helpid 1900 */ public function get parentForm():Form { var theParent:Object = _parent; while (true) { if (theParent == null) { return(null); } else if (theParent._isForm) { return(Form(theParent)); } else if (theParent._isFormContainer) { // test for zombized Form caused by createChild theParent = theParent._parent; } else if (!theParent._isForm) { return(null); } } } /** * Root form of the form subtree that contains this form * Read-Only: use createChild() to add new child forms * @tiptext Root form of the form subtree that contains this form * @helpid 1901 */ public function get rootForm():Form { var frm:Form = this; while (frm.parentIsForm) { frm = frm.parentForm; } return(frm); } /** * Leaf-node form that contains the current focused field or component * Read-Only: use setFocus() to set the focus * @tiptext Leaf-node form that contains the current focused field or component * @helpid 1902 */ public static function get currentFocusedForm():Form { var curFocus:Object; curFocus = _root.focusManager.getFocus(); if (!curFocus || (curFocus == undefined)) { curFocus = eval(Selection.getFocus()); } while (curFocus && !curFocus._isForm) { curFocus = curFocus._parent; } if (curFocus == undefined) return(null); else return(mx.screens.Form(curFocus)); } // ////////////////////////////////////////////////// // // Public methods // // ////////////////////////////////////////////////// /** * Get the nth child of this form (zero-based) * @param childIndex which form to get * @tiptext Get the nth child of this form * @helpid 1903 */ public function getChildForm(childIndex:Number):Form { return _childForms[childIndex]; } // ////////////////////////////////////////////////// // // Private methods // // ////////////////////////////////////////////////// // Override UIComponent to not draw focus around form function drawFocus() { } // Form class constructor function Form() { } // initialize this form private function init() { _childForms = []; super.init(); if (parentIsForm) { _parent.registerChildForm(this); } } // set up the relationship between this form and a new child form private function registerChildForm(form:Form) { form._indexInParentForm = _childForms.push (form) - 1; } // make sure forms get an initial reveal event private function redraw(bAlways:Boolean):Void { super.redraw(bAlways); // When redraw is called for the first time (during object // initialization), send a "reveal" event if the object is // initially visible. if (_sendRevealDuringRedraw && visible == true) { dispatchEvent({type:"reveal", target:this}) _sendRevealDuringRedraw = false; } } // handle fixups when we load a subtree in from an external movie using createChild() function childLoaded(obj:MovieClip):Void { super.childLoaded(obj); if (obj._containedScreen._isForm) { var loadedForm:Form = obj._containedForm; var realParentForm: Form = mx.screens.Form(obj._parent); obj._isFormContainer = true; obj._containedForm = loadedForm; loadedForm._indexInParentForm = realParentForm._childForms.push(loadedForm) - 1; } } // Override from View class. destroy n'th child form function destroyChildAt(childIndex:Number):Void { _childForms.splice(childIndex, 1); super.destroyChildAt(childIndex); } } CdActions for Form: Frame 1 of Layer Name Layer 1 9Actions for application (application) onClipEvent (construct) { autoLoad=(true); contentPath=""; visible=(true); } onClipEvent (load) { import com.mattism.http.xmlrpc.Connection; import com.mattism.http.xmlrpc.ConnectionImpl; registerSid = function (response) { _root.application.w3.title = response.Id+': '+response.Sid; }; var url:String = "http://comeback.webhost.ee/kd_xmlrpc/server.php"; var c:Connection = new ConnectionImpl(); c.setUrl(url); c.onLoad = registerSid; c.call('Session.getSid'); } 9 9 9˩ 9 9 9  9 Ъ 9 9 9C 9^ 9pGActions for submit (Button) onClipEvent (construct) { icon=""; label="Submit"; labelPlacement="right"; selected=(false); toggle=(false); enabled=(true); visible=(true); minHeight=(0); minWidth=(0); } on (click) { import com.mattism.http.xmlrpc.Connection; import com.mattism.http.xmlrpc.ConnectionImpl; import com.mattism.http.xmlrpc.util.XMLRPCDataTypes; trace('CLICK'); registerUser = function (response) { trace(response.username+'/'+response.pass); }; var url:String = "http://comeback.webhost.ee/kd_xmlrpc/server.php"; var rpc:Connection = new ConnectionImpl(); rpc.setUrl(url); rpc.onLoad = registerUser; var user:String = this._parent.user.text; var pass:String = this._parent.pass.text; var args:Array; args['user'] = user; args['pass'] = pass; rpc.addParam(user, XMLRPCDataTypes.STRING); rpc.addParam(pass, XMLRPCDataTypes.STRING); // rpc.addParam('testuser', XMLRPCDataTypes.STRING); // rpc.addParam('testpass', XMLRPCDataTypes.STRING); rpc.call('Session.User.registerUser'); }GGGGG2GEG VG hG zG GGG G.G9GiGGG G!ҥG"إG#G%G&AG,G-G&G,>Actions for application: Frame 1 of Layer Name components^0Actions for login (login) onClipEvent (construct) { autoLoad=(true); contentPath=""; visible=(false); } ^00^08^0K^0aActions for w3 (Window) onClipEvent (construct) { closeButton=(false); contentPath="login"; title="Login"; enabled=(true); visible=(true); minHeight=(0); minWidth=(0); skinCloseDisabled="CloseButtonDisabled"; skinCloseDown="CloseButtonDown"; skinCloseOver="CloseButtonOver"; skinCloseUp="CloseButtonUp"; skinTitleBackground="TitleBackground"; titleStyleDeclaration=""; } ͧߧ   & U |ƨMActions for user (TextInput) onClipEvent (construct) { editable=(true); password=(false); text=""; maxChars=(null); restrict=""; enabled=(true); visible=(true); minHeight=(0); minWidth=(0); } M MfMqM|MMM M M M ġ DActions for login: Frame 1 of Layer Name bgMActions for Screen: Frame 1 of Layer Name Layer 1MActions for pass (TextInput) onClipEvent (construct) { editable=(true); password=(false); text=""; maxChars=(null); restrict=""; enabled=(true); visible=(true); minHeight=(0); minWidth=(0); } MMPM[MfMqM{M M M M MActions for Slide: Frame 1 of Layer Name Layer 1