Thread: [Shellweb-main] =?Big5?B?w/ap87nPpPm40cTAsN3DRA==?=
Status: Alpha
Brought to you by:
alexe_cn
|
From: Anthony WU <ant...@gm...> - 2005-12-25 16:27:11
|
現在所使用的 my $buffer=Gtk2::TextBuffer->new(); 不支援圖片顯示,估計要重寫
我暫時的圖片解釋概念代碼是這樣
##################################
use Gtk2 -init;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new ();
$ua->timeout (30);
my @question_xpm = (
'24 24 12 1',
' c Black',
'. c #b2b2b2',
'X c Gray100',
'o c #808080',
'O c #c0c0c0',
'+ c #008000',
'@ c Green',
'# c Blue',
'$ c Red',
'% c Cyan',
'& c Magenta',
'* c #000080',
' .',
' XXXXXXXXXXXXXXXXXXXXXX.',
' XXXXXXXXXXXXXXXXXXXXXX.',
' XXXXXXXXXXXXXXXXXXXXXX.',
' XXX oXXXXXXXX.',
' XXX XXXXXXXXXooXXXXXXX.',
' XXX XOOOOOOOOoXoXXXXXX.',
' XXX XOOO++OOOoXXoXXXXX.',
' XXX XOO+@+ OO XXXXX.',
' XXX XOO+++ OOOOX XXXXX.',
' XXX XOOO OOOOOX XXXXX.',
' XXX XOOOOOO### XXXXXXX.',
' XXX XO$OOOO#%# XXXXXXX.',
' XXX XO&$OOO##*XXXXXXXX.',
' XXX XO&&$OO XXX XXXXX.',
' XXX XO&&&$OXXXOX XXXXX.',
' XXX XO XXXXXOX XXXXX.',
' XXX XOOXXXXXOOOX XXXXX.',
' XXX XXXXXXXXXXXX XXXXX.',
' XXX XXXXXX XXXXX.',
' XXXXXXXXXXXXXXXXXXXXXX.',
' XXXXXXXXXXXXXXXXXXXXXX.',
' XXXXXXXXXXXXXXXXXXXXXX.',
' .......................');
my $pixbuf_from_xpm_data = Gtk2::Gdk::Pixbuf->new_from_xpm_data
(@question_xpm);
$dlg = Gtk2::Dialog->new ();
my $hbox = Gtk2::HBox->new ();
my $entry = Gtk2::Entry->new ();
$entry->set_text ('http://www.perl.com/images/75-logo.jpg');
$hbox->pack_start ($entry, 1, 1, 0);
my $button = Gtk2::Button->new_from_stock ('gtk-apply');
$button->can_focus (0);
$button -> signal_connect ('released', \&get_url_content);
$hbox->pack_start ($button, 0, 0, 0);
$dlg->vbox->add ($hbox);
$dlg->add_button ('gtk-close' => 'close');
$dlg->show_all ();
$dlg->run ();
sub getimg
{
my $file = shift;
my $a;
eval ('$a = Gtk2::Gdk::Pixbuf->new_from_file ($file);');
if ($@)
{
return $pixbuf_from_xpm_data;
} else {
return $a;
}
}
sub get_url_content
{
my $url = $entry->get_text ();
my $resp = $ua->get ($url);
unless ($resp->is_success ())
{
my $error_dialog = Gtk2::MessageDialog->new (undef, 'modal', 'error',
'close', 'File not found!');
if ($error_dialog->run ())
{
$error_dialog->destroy ();
}
return ;
}
my $file = $resp->content;
$url = unpack ('H*', $url);
$url =~ s/(..)/\%$1/g;
open (my $FILE, '>', $url);
binmode ($FILE);
print $FILE $file;
close ($FILE);
$dlg->vbox->add (Gtk2::Image->new_from_pixbuf (&getimg ($url)));
$dlg->show_all;
return ;
}
##################################
#提外話,為什麼不直接使用 Tk 模組呢?
|
|
From: <ale...@gm...> - 2005-12-25 16:50:26
|
QW50aG9ueSBXVSCjrLK7usPS4su8o6yxp8e4o6zV4sG9zOy2vNTa0N3PorDXzOzDu8yruaTX96Os xOPJ1M6iwv3Su8/Co6zTydPas8zQ8rTzveG5ubu5w7vQtM3qo6zL+dLUxOPP1tTatcS0+sLrutzT 0L/JxNzO3reo1f2zo8q508OhowpUS8Sj1+m63NTnztK+zbnY16LBy6OstavKx7j5vt3O0rXEsuLK 1Mv8tcTP1Mq+0Ke5+6Os0tfTw9DUuvPG2rXE0dPVubXIuPe3vcPmtryyu8D709q9qNTs0ru49rPJ yuzI7bz+oaPO0sPHysfKudPDZ3RrMi1wZXJswLTQtKOsuvPG2s7Sw8e/ydLU09DE3MGmseS7u7XX suO1xM/Uyr6jrMD9yOfKudPDY2Fpcm+jrLj8yN3S18/Uyr7P8sG/zbzQzrXItcijrLHPvrnV4srH z9bU2rPW0Pi/qreitcTP7sS/o6yxyHRr1eLW1sDPucW2rdKqusO1xLbgoaMKCru509CjrM7Sv7TE 47bUZ3RrMi1wZXJszabK7LXEo6zKx8Lwo7/I57n7v8nS1LXEu7DEx77N16jDxdC0z9TKvtans9a1 xLK/t9bI57rOo78KyOe5+8TjyM/Oqr/J0tS1xLuwo6zU28PHv8nS1Neow8W1xMzWwtvSu8/CudjT 2tXit73D5sjnus7AtNC0o6zIu7rzztLDx9TZtq/K1qGjCsbky/u1xLmk1/e3vcPm09BodHRwyv2+ 3bXEytW3oqOoaHR0cHO1xNans9ajrHByb3h5tcTWp7PWo6mjrApodG1syv2+3bXEveLO9qGjCgrD 98zsztK+zb/J0tTV/cq9tcS5pNf3wcujrM7SysfV4rj2z+7Ev7XEyKvWsKOsy/nS1MqxvOSz5NSj o6zO0s/W1NrU2tX7wO3Ev8K8oaMKCjIwMDUvMTIvMjYsIEFudGhvbnkgV1UgPGFudGhvbnl3dXky a0BnbWFpbC5jb20+Ogo+IKxG1NrL+cq508O1xCBteSAkYnVmZmVyPUd0azI6OlRleHRCdWZmZXIt Pm5ldygpOyCyu9an1K6IRMas70DKvqOsucDTi9Kq1tiMkQo+IM7SlbqVcrXEiETGrL3i4Yy4xcTu tPq0YcrH30CY0wo+Cj4gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+IHVzZSBH dGsyIC1pbml0Owo+IHVzZSBMV1A6OlVzZXJBZ2VudDsKPiBteSAkdWEgPSBMV1A6OlVzZXJBZ2Vu dC0+bmV3ICgpOwo+ICR1YS0+dGltZW91dCAoMzApOwo+Cj4gbXkgQHF1ZXN0aW9uX3hwbSA9ICgK PiAnMjQgMjQgMTIgMScsCj4gJyBjIEJsYWNrJywKPiAnLiBjICNiMmIyYjInLAo+ICdYIGMgR3Jh eTEwMCcsCj4gJ28gYyAjODA4MDgwJywKPiAnTyBjICNjMGMwYzAnLAo+ICcrIGMgIzAwODAwMCcs Cj4gJ0AgYyBHcmVlbicsCj4gJyMgYyBCbHVlJywKPiAnJCBjIFJlZCcsCj4gJyUgYyBDeWFuJywK PiAnJiBjIE1hZ2VudGEnLAo+ICcqIGMgIzAwMDA4MCcsCj4gJyAuJywKPiAnIFhYWFhYWFhYWFhY WFhYWFhYWFhYWFguJywKPiAnIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFguJywKPiAnIFhYWFhYWFhY WFhYWFhYWFhYWFhYWFguJywKPiAnIFhYWCBvWFhYWFhYWFguJywKPiAnIFhYWCBYWFhYWFhYWFhv b1hYWFhYWFguJywKPiAnIFhYWCBYT09PT09PT09vWG9YWFhYWFguJywKPiAnIFhYWCBYT09PKytP T09vWFhvWFhYWFguJywKPiAnIFhYWCBYT08rQCsgT08gWFhYWFguJywKPiAnIFhYWCBYT08rKysg T09PT1ggWFhYWFguJywKPiAnIFhYWCBYT09PIE9PT09PWCBYWFhYWC4nLAo+ICcgWFhYIFhPT09P T08jIyMgWFhYWFhYWC4nLAo+ICcgWFhYIFhPJE9PT08jJSMgWFhYWFhYWC4nLAo+ICcgWFhYIFhP JiRPT08jIypYWFhYWFhYWC4nLAo+ICcgWFhYIFhPJiYkT08gWFhYIFhYWFhYLicsCj4gJyBYWFgg WE8mJiYkT1hYWE9YIFhYWFhYLicsCj4gJyBYWFggWE8gWFhYWFhPWCBYWFhYWC4nLAo+ICcgWFhY IFhPT1hYWFhYT09PWCBYWFhYWC4nLAo+ICcgWFhYIFhYWFhYWFhYWFhYWCBYWFhYWC4nLAo+ICcg WFhYIFhYWFhYWCBYWFhYWC4nLAo+ICcgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWC4nLAo+ICcgWFhY WFhYWFhYWFhYWFhYWFhYWFhYWC4nLAo+ICcgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWC4nLAo+ICcg Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4nKTsKPiBteSAkcGl4YnVmX2Zyb21feHBtX2RhdGEgPSBH dGsyOjpHZGs6OlBpeGJ1Zi0+bmV3X2Zyb21feHBtX2RhdGEKPiAoQHF1ZXN0aW9uX3hwbSk7Cj4g JGRsZyA9IEd0azI6OkRpYWxvZy0+bmV3ICgpOwo+IG15ICRoYm94ID0gR3RrMjo6SEJveC0+bmV3 ICgpOwo+IG15ICRlbnRyeSA9IEd0azI6OkVudHJ5LT5uZXcgKCk7Cj4gJGVudHJ5LT5zZXRfdGV4 dCAoJ2h0dHA6Ly93d3cucGVybC5jb20vaW1hZ2VzLzc1LWxvZ28uanBnJyk7Cj4gJGhib3gtPnBh Y2tfc3RhcnQgKCRlbnRyeSwgMSwgMSwgMCk7Cj4gbXkgJGJ1dHRvbiA9IEd0azI6OkJ1dHRvbi0+ bmV3X2Zyb21fc3RvY2sgKCdndGstYXBwbHknKTsKPiAkYnV0dG9uLT5jYW5fZm9jdXMgKDApOwo+ ICRidXR0b24gLT4gc2lnbmFsX2Nvbm5lY3QgKCdyZWxlYXNlZCcsIFwmZ2V0X3VybF9jb250ZW50 KTsKPiAkaGJveC0+cGFja19zdGFydCAoJGJ1dHRvbiwgMCwgMCwgMCk7Cj4gJGRsZy0+dmJveC0+ YWRkICgkaGJveCk7Cj4gJGRsZy0+YWRkX2J1dHRvbiAoJ2d0ay1jbG9zZScgPT4gJ2Nsb3NlJyk7 Cj4gJGRsZy0+c2hvd19hbGwgKCk7Cj4gJGRsZy0+cnVuICgpOwo+Cj4KPiBzdWIgZ2V0aW1nCj4g ewo+IG15ICRmaWxlID0gc2hpZnQ7Cj4gbXkgJGE7Cj4gZXZhbCAoJyRhID0gR3RrMjo6R2RrOjpQ aXhidWYtPm5ld19mcm9tX2ZpbGUgKCRmaWxlKTsnKTsKPiBpZiAoJEApCj4gewo+IHJldHVybiAk cGl4YnVmX2Zyb21feHBtX2RhdGE7Cj4gfSBlbHNlIHsKPiByZXR1cm4gJGE7Cj4gfQo+IH0KPgo+ IHN1YiBnZXRfdXJsX2NvbnRlbnQKPiB7Cj4gbXkgJHVybCA9ICRlbnRyeS0+Z2V0X3RleHQgKCk7 Cj4gbXkgJHJlc3AgPSAkdWEtPmdldCAoJHVybCk7Cj4gdW5sZXNzICgkcmVzcC0+aXNfc3VjY2Vz cyAoKSkKPiB7Cj4gbXkgJGVycm9yX2RpYWxvZyA9IEd0azI6Ok1lc3NhZ2VEaWFsb2ctPm5ldyAo dW5kZWYsICdtb2RhbCcsICdlcnJvcicsCj4gJ2Nsb3NlJywgJ0ZpbGUgbm90IGZvdW5kIScpOwo+ IGlmICgkZXJyb3JfZGlhbG9nLT5ydW4gKCkpCj4gewo+ICRlcnJvcl9kaWFsb2ctPmRlc3Ryb3kg KCk7Cj4gfQo+IHJldHVybiA7Cj4gfQo+IG15ICRmaWxlID0gJHJlc3AtPmNvbnRlbnQ7Cj4gJHVy bCA9IHVucGFjayAoJ0gqJywgJHVybCk7Cj4gJHVybCA9fiBzLyguLikvXCUkMS9nOwo+IG9wZW4g KG15ICRGSUxFLCAnPicsICR1cmwpOwo+IGJpbm1vZGUgKCRGSUxFKTsKPiBwcmludCAkRklMRSAk ZmlsZTsKPiBjbG9zZSAoJEZJTEUpOwo+ICRkbGctPnZib3gtPmFkZCAoR3RrMjo6SW1hZ2UtPm5l d19mcm9tX3BpeGJ1ZiAoJmdldGltZyAoJHVybCkpKTsKPiAkZGxnLT5zaG93X2FsbDsKPiByZXR1 cm4gOwo+IH0KPiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4KPgo+Cj4KPiAj zOHN4tSSo6ye6cqy/E6yu9axvdPKudPDIFRrIMSjvU3E2KO/Cj4KPgo+IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBUaGlzIFNGLm5ldCBl bWFpbCBpcyBzcG9uc29yZWQgYnk6IFNwbHVuayBJbmMuIERvIHlvdSBncmVwIHRocm91Z2ggbG9n IGZpbGVzCj4gZm9yIHByb2JsZW1zPyAgU3RvcCEgIERvd25sb2FkIHRoZSBuZXcgQUpBWCBzZWFy Y2ggZW5naW5lIHRoYXQgbWFrZXMKPiBzZWFyY2hpbmcgeW91ciBsb2cgZmlsZXMgYXMgZWFzeSBh cyBzdXJmaW5nIHRoZSAgd2ViLiAgRE9XTkxPQUQgU1BMVU5LIQo+IGh0dHA6Ly9hZHMub3Nkbi5j b20vP2FkX2lkPTc2MzcmYWxsb2NfaWQ9MTY4NjUmb3A9Y2xpY2sKPgo+CgoKLS0KKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfEJ5IEFsZXhlIChodHRwOi8v d3d3LmFsZXhlLmNuKXwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKwo= |
|
From: Anthony WU <ant...@gm...> - 2005-12-25 17:01:34
|
汗...才的那段是我第一次GTK(著perl-GTK 的例作修改而已)...我GUI
有感冒的...只在VB 上GUI而已...
但是即即用方面我比可以吧...
ale...@gm... 提到:
>Anthony WU ,不好意思,抱歉,这两天都在休息白天没太工作,你稍微慢一下,由于程序大结构还没写完,所以你现在的代码很有可能无法正常使用。
>TK模组很早我就关注了,但是根据我的测试它的显示效果,易用性后期的延展等各方面都不利于建造一个成熟软件。我们是使用gtk2-perl来写,后期我们可以有能力变换底层的显示,例如使用cairo,更容易显示向量图形等等,毕竟这是现在持续开发的项目,比tk这种老古董要好的多。
>
>还有,我看你对gtk2-perl挺熟的,是吗?如果可以的话那就专门写显示支持的部分如何?
>如果你认为可以的话,咱们可以专门的讨论一下关于这方面如何来写,然后我们再动手。
>其他的工作方面有http数据的收发(https的支持,proxy的支持),
>html数据的解析。
>
>明天我就可以正式的工作了,我是这个项目的全职,所以时间充裕,我现在在整理目录。
>
>2005/12/26, Anthony WU <ant...@gm...>:
>
>
>>在所使用的 my $buffer=Gtk2::TextBuffer->new(); 不支援片示,估要重
>>我的片解概念代是
>>
>>##################################
>>use Gtk2 -init;
>>use LWP::UserAgent;
>>my $ua = LWP::UserAgent->new ();
>>$ua->timeout (30);
>>
>>my @question_xpm = (
>>'24 24 12 1',
>>' c Black',
>>'. c #b2b2b2',
>>'X c Gray100',
>>'o c #808080',
>>'O c #c0c0c0',
>>'+ c #008000',
>>'@ c Green',
>>'# c Blue',
>>'$ c Red',
>>'% c Cyan',
>>'& c Magenta',
>>'* c #000080',
>>' .',
>>' XXXXXXXXXXXXXXXXXXXXXX.',
>>' XXXXXXXXXXXXXXXXXXXXXX.',
>>' XXXXXXXXXXXXXXXXXXXXXX.',
>>' XXX oXXXXXXXX.',
>>' XXX XXXXXXXXXooXXXXXXX.',
>>' XXX XOOOOOOOOoXoXXXXXX.',
>>' XXX XOOO++OOOoXXoXXXXX.',
>>' XXX XOO+@+ OO XXXXX.',
>>' XXX XOO+++ OOOOX XXXXX.',
>>' XXX XOOO OOOOOX XXXXX.',
>>' XXX XOOOOOO### XXXXXXX.',
>>' XXX XO$OOOO#%# XXXXXXX.',
>>' XXX XO&$OOO##*XXXXXXXX.',
>>' XXX XO&&$OO XXX XXXXX.',
>>' XXX XO&&&$OXXXOX XXXXX.',
>>' XXX XO XXXXXOX XXXXX.',
>>' XXX XOOXXXXXOOOX XXXXX.',
>>' XXX XXXXXXXXXXXX XXXXX.',
>>' XXX XXXXXX XXXXX.',
>>' XXXXXXXXXXXXXXXXXXXXXX.',
>>' XXXXXXXXXXXXXXXXXXXXXX.',
>>' XXXXXXXXXXXXXXXXXXXXXX.',
>>' .......................');
>>my $pixbuf_from_xpm_data = Gtk2::Gdk::Pixbuf->new_from_xpm_data
>>(@question_xpm);
>>$dlg = Gtk2::Dialog->new ();
>>my $hbox = Gtk2::HBox->new ();
>>my $entry = Gtk2::Entry->new ();
>>$entry->set_text ('http://www.perl.com/images/75-logo.jpg');
>>$hbox->pack_start ($entry, 1, 1, 0);
>>my $button = Gtk2::Button->new_from_stock ('gtk-apply');
>>$button->can_focus (0);
>>$button -> signal_connect ('released', \&get_url_content);
>>$hbox->pack_start ($button, 0, 0, 0);
>>$dlg->vbox->add ($hbox);
>>$dlg->add_button ('gtk-close' => 'close');
>>$dlg->show_all ();
>>$dlg->run ();
>>
>>
>>sub getimg
>>{
>>my $file = shift;
>>my $a;
>>eval ('$a = Gtk2::Gdk::Pixbuf->new_from_file ($file);');
>>if ($@)
>>{
>>return $pixbuf_from_xpm_data;
>>} else {
>>return $a;
>>}
>>}
>>
>>sub get_url_content
>>{
>>my $url = $entry->get_text ();
>>my $resp = $ua->get ($url);
>>unless ($resp->is_success ())
>>{
>>my $error_dialog = Gtk2::MessageDialog->new (undef, 'modal', 'error',
>>'close', 'File not found!');
>>if ($error_dialog->run ())
>>{
>>$error_dialog->destroy ();
>>}
>>return ;
>>}
>>my $file = $resp->content;
>>$url = unpack ('H*', $url);
>>$url =~ s/(..)/\%$1/g;
>>open (my $FILE, '>', $url);
>>binmode ($FILE);
>>print $FILE $file;
>>close ($FILE);
>>$dlg->vbox->add (Gtk2::Image->new_from_pixbuf (&getimg ($url)));
>>$dlg->show_all;
>>return ;
>>}
>>##################################
>>
>>
>>
>>
>>#提外,什不直接使用 Tk 模呢?
>>
>>
>>-------------------------------------------------------
>>This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
>>for problems? Stop! Download the new AJAX search engine that makes
>>searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
>>http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
>>
>>
>>
>>
>
>
>--
>+--------------------------------------------+
> |By Alexe (http://www.alexe.cn)|
>+--------------------------------------------+
>NY薜'
>蕈㈣!kC 濉蘩@^^j!2㈥澧辨,悍a{,H蛟4i(辟堍o'锃Yhr'庄:rX===
>
|
|
From: <ale...@gm...> - 2005-12-25 17:10:04
|
OinvvIzpgqPkuZ/lvojlpb3pmL/jgILotbfnoIHkvaDnkIbop6PkuIDkuptndWnnmoTlhpnms5Xv vIzogIzkuJTlvojlv6vlsLHog73mlLnlh7roh6rlt7HnmoTkuJzopb/kuobjgIIK5LuK5aSp5bCx 5Yiw6L+Z6YeM5LqG77yM5Zuw5LqG77yM6KaB552h6KeJ77yM5piO5aSp6L+Y5pyJ5b6I5aSa6KaB 5a6M5oiQ55qE44CCCmN2c+aIkeW3sue7j+abtOaWsOS6hu+8jOWGmeS6huS6m3RvZG/vvIxyZWFk bWXvvIxjaGFuZ2Vsb2fvvIzov5jmnInmlbTnkIbkuobkuIDkuIvnm67lvZXvvIzkuIrkvKDkuobm nIDmlrDnmoR3ZWJfYnJvd3Nlci5wbOi/memHjOa3u+WKoOS6huWvueS6juWkmuWbveivreiogOaU r+aMgeeahOWIneatpeahhuaetuOAggoKQW50aG9ueSBXVeWmguaenOWPr+S7peeahOivne+8jOS9 oOWPr+S7pee7p+e7reeGn+aCieS4gOS4i2d0azItcGVybOS4reeahOWQhOS4quaOp+S7tuOAggoK 5ZyoIDA1LTEyLTI277yMQW50aG9ueSBXVTxhbnRob255d3V5MmtAZ21haWwuY29tPiDlhpnpgZPv vJoKPiDmsZcuLi7liZvmiY3nmoTpgqPmrrXmmK/miJHnrKzkuIDmrKHlr6tHVEso5bCN6JGXcGVy bC1HVEsg55qE56+E5L6L5L2c5L+u5pS56ICM5beyKS4uLuaIkeWwjUdVSQo+IOacieaEn+WGkuea hC4uLuWPquWcqFZCIOS4iuWvq+mBjkdVSeiAjOW3si4uLgo+IOS9huaYr+WNs+WtuOWNs+eUqOaW uemdouaIkeavlOi8g+WPr+S7peWQpy4uLgo+Cj4KPiBhbGV4ZS5jbkBnbWFpbC5jb20g5o+Q5Yiw Ogo+Cj4gPkFudGhvbnkgV1Ug77yM5LiN5aW95oSP5oCd77yM5oqx5q2J77yM6L+Z5Lik5aSp6YO9 5Zyo5LyR5oGv55m95aSp5rKh5aSq5bel5L2c77yM5L2g56iN5b6u5oWi5LiA5LiL77yM55Sx5LqO 56iL5bqP5aSn57uT5p6E6L+Y5rKh5YaZ5a6M77yM5omA5Lul5L2g546w5Zyo55qE5Luj56CB5b6I 5pyJ5Y+v6IO95peg5rOV5q2j5bi45L2/55So44CCCj4gPlRL5qih57uE5b6I5pep5oiR5bCx5YWz 5rOo5LqG77yM5L2G5piv5qC55o2u5oiR55qE5rWL6K+V5a6D55qE5pi+56S65pWI5p6c77yM5piT 55So5oCn5ZCO5pyf55qE5bu25bGV562J5ZCE5pa56Z2i6YO95LiN5Yip5LqO5bu66YCg5LiA5Liq 5oiQ54af6L2v5Lu244CC5oiR5Lus5piv5L2/55SoZ3RrMi1wZXJs5p2l5YaZ77yM5ZCO5pyf5oiR 5Lus5Y+v5Lul5pyJ6IO95Yqb5Y+Y5o2i5bqV5bGC55qE5pi+56S677yM5L6L5aaC5L2/55SoY2Fp cm/vvIzmm7TlrrnmmJPmmL7npLrlkJHph4/lm77lvaLnrYnnrYnvvIzmr5Xnq5/ov5nmmK/njrDl nKjmjIHnu63lvIDlj5HnmoTpobnnm67vvIzmr5R0a+i/meenjeiAgeWPpOiRo+imgeWlveeahOWk muOAggo+ID4KPiA+6L+Y5pyJ77yM5oiR55yL5L2g5a+5Z3RrMi1wZXJs5oy654af55qE77yM5piv 5ZCX77yf5aaC5p6c5Y+v5Lul55qE6K+d6YKj5bCx5LiT6Zeo5YaZ5pi+56S65pSv5oyB55qE6YOo 5YiG5aaC5L2V77yfCj4gPuWmguaenOS9oOiupOS4uuWPr+S7peeahOivne+8jOWSseS7rOWPr+S7 peS4k+mXqOeahOiuqOiuuuS4gOS4i+WFs+S6jui/meaWuemdouWmguS9leadpeWGme+8jOeEtuWQ juaIkeS7rOWGjeWKqOaJi+OAggo+ID7lhbbku5bnmoTlt6XkvZzmlrnpnaLmnIlodHRw5pWw5o2u 55qE5pS25Y+R77yIaHR0cHPnmoTmlK/mjIHvvIxwcm94eeeahOaUr+aMge+8ie+8jAo+ID5odG1s 5pWw5o2u55qE6Kej5p6Q44CCCj4gPgo+ID7mmI7lpKnmiJHlsLHlj6/ku6XmraPlvI/nmoTlt6Xk vZzkuobvvIzmiJHmmK/ov5nkuKrpobnnm67nmoTlhajogYzvvIzmiYDku6Xml7bpl7TlhYXoo5Xv vIzmiJHnjrDlnKjlnKjmlbTnkIbnm67lvZXjgIIKPiA+Cj4gPjIwMDUvMTIvMjYsIEFudGhvbnkg V1UgPGFudGhvbnl3dXkya0BnbWFpbC5jb20+Ogo+ID4KPiA+Cj4gPj7nj77lnKjmiYDkvb/nlKjn moQgbXkgJGJ1ZmZlcj1HdGsyOjpUZXh0QnVmZmVyLT5uZXcoKTsg5LiN5pSv5o+05ZyW54mH6aGv 56S677yM5Lyw6KiI6KaB6YeN5a+rCj4gPj7miJHmmqvmmYLnmoTlnJbniYfop6Pph4vmpoLlv7Xk u6PnorzmmK/pgJnmqKMKPiA+Pgo+ID4+IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Iwo+ID4+dXNlIEd0azIgLWluaXQ7Cj4gPj51c2UgTFdQOjpVc2VyQWdlbnQ7Cj4gPj5teSAkdWEg PSBMV1A6OlVzZXJBZ2VudC0+bmV3ICgpOwo+ID4+JHVhLT50aW1lb3V0ICgzMCk7Cj4gPj4KPiA+ Pm15IEBxdWVzdGlvbl94cG0gPSAoCj4gPj4nMjQgMjQgMTIgMScsCj4gPj4nIGMgQmxhY2snLAo+ ID4+Jy4gYyAjYjJiMmIyJywKPiA+PidYIGMgR3JheTEwMCcsCj4gPj4nbyBjICM4MDgwODAnLAo+ ID4+J08gYyAjYzBjMGMwJywKPiA+PicrIGMgIzAwODAwMCcsCj4gPj4nQCBjIEdyZWVuJywKPiA+ PicjIGMgQmx1ZScsCj4gPj4nJCBjIFJlZCcsCj4gPj4nJSBjIEN5YW4nLAo+ID4+JyYgYyBNYWdl bnRhJywKPiA+PicqIGMgIzAwMDA4MCcsCj4gPj4nIC4nLAo+ID4+JyBYWFhYWFhYWFhYWFhYWFhY WFhYWFhYLicsCj4gPj4nIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFguJywKPiA+PicgWFhYWFhYWFhY WFhYWFhYWFhYWFhYWC4nLAo+ID4+JyBYWFggb1hYWFhYWFhYLicsCj4gPj4nIFhYWCBYWFhYWFhY WFhvb1hYWFhYWFguJywKPiA+PicgWFhYIFhPT09PT09PT29Yb1hYWFhYWC4nLAo+ID4+JyBYWFgg WE9PTysrT09Pb1hYb1hYWFhYLicsCj4gPj4nIFhYWCBYT08rQCsgT08gWFhYWFguJywKPiA+Picg WFhYIFhPTysrKyBPT09PWCBYWFhYWC4nLAo+ID4+JyBYWFggWE9PTyBPT09PT1ggWFhYWFguJywK PiA+PicgWFhYIFhPT09PT08jIyMgWFhYWFhYWC4nLAo+ID4+JyBYWFggWE8kT09PTyMlIyBYWFhY WFhYLicsCj4gPj4nIFhYWCBYTyYkT09PIyMqWFhYWFhYWFguJywKPiA+PicgWFhYIFhPJiYkT08g WFhYIFhYWFhYLicsCj4gPj4nIFhYWCBYTyYmJiRPWFhYT1ggWFhYWFguJywKPiA+PicgWFhYIFhP IFhYWFhYT1ggWFhYWFguJywKPiA+PicgWFhYIFhPT1hYWFhYT09PWCBYWFhYWC4nLAo+ID4+JyBY WFggWFhYWFhYWFhYWFhYIFhYWFhYLicsCj4gPj4nIFhYWCBYWFhYWFggWFhYWFguJywKPiA+Picg WFhYWFhYWFhYWFhYWFhYWFhYWFhYWC4nLAo+ID4+JyBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYLics Cj4gPj4nIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFguJywKPiA+PicgLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4nKTsKPiA+Pm15ICRwaXhidWZfZnJvbV94cG1fZGF0YSA9IEd0azI6Okdkazo6UGl4YnVm LT5uZXdfZnJvbV94cG1fZGF0YQo+ID4+KEBxdWVzdGlvbl94cG0pOwo+ID4+JGRsZyA9IEd0azI6 OkRpYWxvZy0+bmV3ICgpOwo+ID4+bXkgJGhib3ggPSBHdGsyOjpIQm94LT5uZXcgKCk7Cj4gPj5t eSAkZW50cnkgPSBHdGsyOjpFbnRyeS0+bmV3ICgpOwo+ID4+JGVudHJ5LT5zZXRfdGV4dCAoJ2h0 dHA6Ly93d3cucGVybC5jb20vaW1hZ2VzLzc1LWxvZ28uanBnJyk7Cj4gPj4kaGJveC0+cGFja19z dGFydCAoJGVudHJ5LCAxLCAxLCAwKTsKPiA+Pm15ICRidXR0b24gPSBHdGsyOjpCdXR0b24tPm5l d19mcm9tX3N0b2NrICgnZ3RrLWFwcGx5Jyk7Cj4gPj4kYnV0dG9uLT5jYW5fZm9jdXMgKDApOwo+ ID4+JGJ1dHRvbiAtPiBzaWduYWxfY29ubmVjdCAoJ3JlbGVhc2VkJywgXCZnZXRfdXJsX2NvbnRl bnQpOwo+ID4+JGhib3gtPnBhY2tfc3RhcnQgKCRidXR0b24sIDAsIDAsIDApOwo+ID4+JGRsZy0+ dmJveC0+YWRkICgkaGJveCk7Cj4gPj4kZGxnLT5hZGRfYnV0dG9uICgnZ3RrLWNsb3NlJyA9PiAn Y2xvc2UnKTsKPiA+PiRkbGctPnNob3dfYWxsICgpOwo+ID4+JGRsZy0+cnVuICgpOwo+ID4+Cj4g Pj4KPiA+PnN1YiBnZXRpbWcKPiA+PnsKPiA+Pm15ICRmaWxlID0gc2hpZnQ7Cj4gPj5teSAkYTsK PiA+PmV2YWwgKCckYSA9IEd0azI6Okdkazo6UGl4YnVmLT5uZXdfZnJvbV9maWxlICgkZmlsZSk7 Jyk7Cj4gPj5pZiAoJEApCj4gPj57Cj4gPj5yZXR1cm4gJHBpeGJ1Zl9mcm9tX3hwbV9kYXRhOwo+ ID4+fSBlbHNlIHsKPiA+PnJldHVybiAkYTsKPiA+Pn0KPiA+Pn0KPiA+Pgo+ID4+c3ViIGdldF91 cmxfY29udGVudAo+ID4+ewo+ID4+bXkgJHVybCA9ICRlbnRyeS0+Z2V0X3RleHQgKCk7Cj4gPj5t eSAkcmVzcCA9ICR1YS0+Z2V0ICgkdXJsKTsKPiA+PnVubGVzcyAoJHJlc3AtPmlzX3N1Y2Nlc3Mg KCkpCj4gPj57Cj4gPj5teSAkZXJyb3JfZGlhbG9nID0gR3RrMjo6TWVzc2FnZURpYWxvZy0+bmV3 ICh1bmRlZiwgJ21vZGFsJywgJ2Vycm9yJywKPiA+PidjbG9zZScsICdGaWxlIG5vdCBmb3VuZCEn KTsKPiA+PmlmICgkZXJyb3JfZGlhbG9nLT5ydW4gKCkpCj4gPj57Cj4gPj4kZXJyb3JfZGlhbG9n LT5kZXN0cm95ICgpOwo+ID4+fQo+ID4+cmV0dXJuIDsKPiA+Pn0KPiA+Pm15ICRmaWxlID0gJHJl c3AtPmNvbnRlbnQ7Cj4gPj4kdXJsID0gdW5wYWNrICgnSConLCAkdXJsKTsKPiA+PiR1cmwgPX4g cy8oLi4pL1wlJDEvZzsKPiA+Pm9wZW4gKG15ICRGSUxFLCAnPicsICR1cmwpOwo+ID4+YmlubW9k ZSAoJEZJTEUpOwo+ID4+cHJpbnQgJEZJTEUgJGZpbGU7Cj4gPj5jbG9zZSAoJEZJTEUpOwo+ID4+ JGRsZy0+dmJveC0+YWRkIChHdGsyOjpJbWFnZS0+bmV3X2Zyb21fcGl4YnVmICgmZ2V0aW1nICgk dXJsKSkpOwo+ID4+JGRsZy0+c2hvd19hbGw7Cj4gPj5yZXR1cm4gOwo+ID4+fQo+ID4+IyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ID4+Cj4gPj4KPiA+Pgo+ID4+Cj4gPj4j5o+Q 5aSW6Kmx77yM54K65LuA6bq85LiN55u05o6l5L2/55SoIFRrIOaooee1hOWRou+8nwo+ID4+Cj4g Pj4KPiA+Pi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiA+PlRoaXMgU0YubmV0IGVtYWlsIGlzIHNwb25zb3JlZCBieTogU3BsdW5rIEluYy4g RG8geW91IGdyZXAgdGhyb3VnaCBsb2cgZmlsZXMKPiA+PmZvciBwcm9ibGVtcz8gIFN0b3AhICBE b3dubG9hZCB0aGUgbmV3IEFKQVggc2VhcmNoIGVuZ2luZSB0aGF0IG1ha2VzCj4gPj5zZWFyY2hp bmcgeW91ciBsb2cgZmlsZXMgYXMgZWFzeSBhcyBzdXJmaW5nIHRoZSAgd2ViLiAgRE9XTkxPQUQg U1BMVU5LIQo+ID4+aHR0cDovL2Fkcy5vc2RuLmNvbS8/YWRfaWQ9NzYzNyZhbGxvY19pZD0xNjg2 NSZvcD1jbGljawo+ID4+Cj4gPj4KPiA+Pgo+ID4+Cj4gPgo+ID4KPiA+LS0KPiA+Ky0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4gfEJ5IEFsZXhlIChodHRw Oi8vd3d3LmFsZXhlLmNuKXwKPiA+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwo+ID5OGOeQgFnolpzpl4Xlpajug43vv71/J+efiOi+tee0pe6bge6dleWjvg7l sJDvv71/Cj4gPuiViOixruOIoyHmnoUf5aWn55GN5amH55Wj6Y2FaxLnp7pD77+9fyAgICAgIOa/ ie6cs+WRtOiYqQJAXuiPpO6FgV7vv71/CO6dgOixmOenhO6YoO+/vX8eau+/vX8h5aacMuOIpea+ pwfpiLrvv71/Gui+qO6DpO+/vX8s5oKN6YmDC2F7B++/vX8M6Y2XLO+/vX8DSOibnzTilannqJvv v71/ae+/vX8o6L6f5aCNb+i2mCfplIPpuZlZaHIn5bqEOumOtnJY5riSPT09Cj4gPgo+Cj4KPgo+ IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K PiBUaGlzIFNGLm5ldCBlbWFpbCBpcyBzcG9uc29yZWQgYnk6IFNwbHVuayBJbmMuIERvIHlvdSBn cmVwIHRocm91Z2ggbG9nIGZpbGVzCj4gZm9yIHByb2JsZW1zPyAgU3RvcCEgIERvd25sb2FkIHRo ZSBuZXcgQUpBWCBzZWFyY2ggZW5naW5lIHRoYXQgbWFrZXMKPiBzZWFyY2hpbmcgeW91ciBsb2cg ZmlsZXMgYXMgZWFzeSBhcyBzdXJmaW5nIHRoZSAgd2ViLiAgRE9XTkxPQUQgU1BMVU5LIQo+IGh0 dHA6Ly9hZHMub3Nkbi5jb20vP2FkX2lkPTc2MzcmYWxsb2NfaWQ9MTY4NjUmb3A9Y2xpY2sKPgo+ CgoKLS0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfEJ5 IEFsZXhlIChodHRwOi8vd3d3LmFsZXhlLmNuKXwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKwo= |