From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/2468 Path: news.gmane.org!not-for-mail From: ojab Newsgroups: gmane.linux.lib.musl.general Subject: spandsp build, lrint/sqrt/pow issue Date: Fri, 14 Dec 2012 13:49:57 +0400 Message-ID: <50CAF645.9000804@ojab.ru> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------070405000602000301060701" X-Trace: ger.gmane.org 1355478618 29179 80.91.229.3 (14 Dec 2012 09:50:18 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 14 Dec 2012 09:50:18 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-2469-gllmg-musl=m.gmane.org@lists.openwall.com Fri Dec 14 10:50:31 2012 Return-path: Envelope-to: gllmg-musl@plane.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1TjRuX-0003NJ-Nc for gllmg-musl@plane.gmane.org; Fri, 14 Dec 2012 10:50:30 +0100 Original-Received: (qmail 8168 invoked by uid 550); 14 Dec 2012 09:50:15 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 8157 invoked from network); 14 Dec 2012 09:50:15 -0000 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject :content-type:x-gm-message-state; bh=Aka9cNQmUIL2loAg4USy3mHGGRBk6df0JnBWToaHrBs=; b=WvGpeLhgJSW3907EyLB8s8wbIHNfoFe39rn09/UHY361WWdtMureB1irQv0MJ5TfTW 9HaKYKhEOflSjBVaiADSf+pWBC3xeFSHG2qQKLzYtqrWmEmeIyHquY0t4lAST8InqVJH NzdFo5D58nV7O7m28zuErpAH3M1u2kK1x2iS4oDir5Prq+371Bi+SnZ9ozXR0p24/jsx kFCRUhb9h7W0JPcdrv561QCqaOVMhJFSLCrbLmBf3Dhq+HrFCHufUO2d1GxTqYAn80+N 83pWI1pQtmaxDMKEL0/dK19JWsfErlu2MpbQtbtXm8/ntLbdwVZUJJOPv5JDoxlMu+lR fW+A== User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:20.0) Gecko/20100101 Thunderbird/20.0a1 X-Gm-Message-State: ALoCoQlF8OWpJuQDJFtohWkFLMw2LRKRPN641J4HVdipU+BQusRwZ5oYRpclUyVQ7GRQDkExiPBD Xref: news.gmane.org gmane.linux.lib.musl.general:2468 Archived-At: This is a multi-part message in MIME format. --------------070405000602000301060701 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi list, spandsp library (which is used in FreeSWITCH/Asterisk/Yate/many commercial solutions/etc) build fails with (first error): > In file included from awgn.c:59:0: > spandsp/saturated.h: In function 'fsaturate': > spandsp/saturated.h:184:22: warning: cast to pointer from integer of different size > spandsp/saturated.h:184:22: warning: cast to pointer from integer of different size > spandsp/saturated.h:184:5: error: invalid use of void expression line 184 is return statement in > static __inline__ int16_t fsaturate(double damp) > { > if (damp > (double) INT16_MAX) > return INT16_MAX; > if (damp < (double) INT16_MIN) > return INT16_MIN; > return (int16_t) lrint(damp); > } awgn.i can be found in the attached file. The same errors happens with pow() and sqrt() functions. Unfortunately my knowledge is insufficient to debug further (because I don't quite understand how lrint() can unfold to that), please assist. I'm using sabotage-0.9.7 x86_64 image with musl updated to 0.9.8 (you can download it http://ojab.ru/sabotage-0.9.7-x86_64_spandsp.img.xz and `cd ~/spandsp && make`), please drop me a private mail if the ssh access to qemu instance is needed. //wbr ojab --------------070405000602000301060701 Content-Type: text/plain; charset=UTF-8; name="awgn.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="awgn.i" IyAxICJhd2duLmMiCiMgMSAiL3Jvb3Qvc3BhbmRzcC9zcmMvLyIKIyAxICI8YnVpbHQtaW4+ IgojIDEgIjxjb21tYW5kLWxpbmU+IgojIDEgImF3Z24uYyIKIyA0NCAiYXdnbi5jIgojIDEg ImNvbmZpZy5oIiAxCiMgNDUgImF3Z24uYyIgMgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxp Yi5oIiAxIDMgNAoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzIDQK IyA5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CiMgMjAgIi91c3IvaW5jbHVkZS9z dGRsaWIuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvYWxsdHlwZXMuaCIgMSAzIDQK Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgc2l6ZV90OwojIDI1ICIvdXNyL2luY2x1ZGUvYml0 cy9hbGx0eXBlcy5oIiAzIDQKdHlwZWRlZiBpbnQgd2NoYXJfdDsKIyAyMSAiL3Vzci9pbmNs dWRlL3N0ZGxpYi5oIiAyIDMgNAoKaW50IGF0b2kgKGNvbnN0IGNoYXIgKik7CmxvbmcgYXRv bCAoY29uc3QgY2hhciAqKTsKbG9uZyBsb25nIGF0b2xsIChjb25zdCBjaGFyICopOwpkb3Vi bGUgYXRvZiAoY29uc3QgY2hhciAqKTsKCmZsb2F0IHN0cnRvZiAoY29uc3QgY2hhciAqcmVz dHJpY3QsIGNoYXIgKipyZXN0cmljdCk7CmRvdWJsZSBzdHJ0b2QgKGNvbnN0IGNoYXIgKnJl c3RyaWN0LCBjaGFyICoqcmVzdHJpY3QpOwpsb25nIGRvdWJsZSBzdHJ0b2xkIChjb25zdCBj aGFyICpyZXN0cmljdCwgY2hhciAqKnJlc3RyaWN0KTsKCmxvbmcgc3RydG9sIChjb25zdCBj aGFyICpyZXN0cmljdCwgY2hhciAqKnJlc3RyaWN0LCBpbnQpOwp1bnNpZ25lZCBsb25nIHN0 cnRvdWwgKGNvbnN0IGNoYXIgKnJlc3RyaWN0LCBjaGFyICoqcmVzdHJpY3QsIGludCk7Cmxv bmcgbG9uZyBzdHJ0b2xsIChjb25zdCBjaGFyICpyZXN0cmljdCwgY2hhciAqKnJlc3RyaWN0 LCBpbnQpOwp1bnNpZ25lZCBsb25nIGxvbmcgc3RydG91bGwgKGNvbnN0IGNoYXIgKnJlc3Ry aWN0LCBjaGFyICoqcmVzdHJpY3QsIGludCk7CgppbnQgcmFuZCAodm9pZCk7CnZvaWQgc3Jh bmQgKHVuc2lnbmVkKTsKCnZvaWQgKm1hbGxvYyAoc2l6ZV90KTsKdm9pZCAqY2FsbG9jIChz aXplX3QsIHNpemVfdCk7CnZvaWQgKnJlYWxsb2MgKHZvaWQgKiwgc2l6ZV90KTsKdm9pZCBm cmVlICh2b2lkICopOwp2b2lkICphbGlnbmVkX2FsbG9jKHNpemVfdCBhbGlnbm1lbnQsIHNp emVfdCBzaXplKTsKCl9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpIHZvaWQgYWJvcnQg KHZvaWQpOwppbnQgYXRleGl0ICh2b2lkICgqKSAodm9pZCkpOwpfX2F0dHJpYnV0ZV9fKChf X25vcmV0dXJuX18pKSB2b2lkIGV4aXQgKGludCk7Cl9fYXR0cmlidXRlX18oKF9fbm9yZXR1 cm5fXykpIHZvaWQgX0V4aXQgKGludCk7CmludCBhdF9xdWlja19leGl0ICh2b2lkICgqKSAo dm9pZCkpOwpfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKSB2b2lkIHF1aWNrX2V4aXQg KGludCk7CgpjaGFyICpnZXRlbnYgKGNvbnN0IGNoYXIgKik7CgppbnQgc3lzdGVtIChjb25z dCBjaGFyICopOwoKdm9pZCAqYnNlYXJjaCAoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICos IHNpemVfdCwgc2l6ZV90LCBpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7 CnZvaWQgcXNvcnQgKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIGludCAoKikoY29uc3Qgdm9p ZCAqLCBjb25zdCB2b2lkICopKTsKCmludCBhYnMgKGludCk7CmxvbmcgbGFicyAobG9uZyk7 CmxvbmcgbG9uZyBsbGFicyAobG9uZyBsb25nKTsKCnR5cGVkZWYgc3RydWN0IHsgaW50IHF1 b3QsIHJlbTsgfSBkaXZfdDsKdHlwZWRlZiBzdHJ1Y3QgeyBsb25nIHF1b3QsIHJlbTsgfSBs ZGl2X3Q7CnR5cGVkZWYgc3RydWN0IHsgbG9uZyBsb25nIHF1b3QsIHJlbTsgfSBsbGRpdl90 OwoKZGl2X3QgZGl2IChpbnQsIGludCk7CmxkaXZfdCBsZGl2IChsb25nLCBsb25nKTsKbGxk aXZfdCBsbGRpdiAobG9uZyBsb25nLCBsb25nIGxvbmcpOwoKaW50IG1ibGVuIChjb25zdCBj aGFyICosIHNpemVfdCk7CmludCBtYnRvd2MgKHdjaGFyX3QgKnJlc3RyaWN0LCBjb25zdCBj aGFyICpyZXN0cmljdCwgc2l6ZV90KTsKaW50IHdjdG9tYiAoY2hhciAqLCB3Y2hhcl90KTsK c2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpyZXN0cmljdCwgY29uc3QgY2hhciAqcmVzdHJp Y3QsIHNpemVfdCk7CnNpemVfdCB3Y3N0b21icyAoY2hhciAqcmVzdHJpY3QsIGNvbnN0IHdj aGFyX3QgKnJlc3RyaWN0LCBzaXplX3QpOwojIDk5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi IDMgNAppbnQgcG9zaXhfbWVtYWxpZ24gKHZvaWQgKiosIHNpemVfdCwgc2l6ZV90KTsKaW50 IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CmludCB1bnNldGVu diAoY29uc3QgY2hhciAqKTsKaW50IG1rc3RlbXAgKGNoYXIgKik7CmNoYXIgKm1rZHRlbXAg KGNoYXIgKik7CmludCBnZXRzdWJvcHQgKGNoYXIgKiosIGNoYXIgKmNvbnN0ICosIGNoYXIg KiopOwppbnQgcmFuZF9yICh1bnNpZ25lZCAqKTsKCgoKCgoKY2hhciAqcmVhbHBhdGggKGNv bnN0IGNoYXIgKnJlc3RyaWN0LCBjaGFyICpyZXN0cmljdCk7CmxvbmcgaW50IHJhbmRvbSAo dm9pZCk7CnZvaWQgc3JhbmRvbSAodW5zaWduZWQgaW50KTsKY2hhciAqaW5pdHN0YXRlICh1 bnNpZ25lZCBpbnQsIGNoYXIgKiwgc2l6ZV90KTsKY2hhciAqc2V0c3RhdGUgKGNoYXIgKik7 CgoKCmludCBwdXRlbnYgKGNoYXIgKik7CmludCBwb3NpeF9vcGVucHQgKGludCk7CmludCBn cmFudHB0IChpbnQpOwppbnQgdW5sb2NrcHQgKGludCk7CmNoYXIgKnB0c25hbWUgKGludCk7 CmNoYXIgKmw2NGEgKGxvbmcpOwpsb25nIGE2NGwgKGNvbnN0IGNoYXIgKik7CnZvaWQgc2V0 a2V5IChjb25zdCBjaGFyICopOwpkb3VibGUgZHJhbmQ0OCAodm9pZCk7CmRvdWJsZSBlcmFu ZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOwpsb25nIGludCBscmFuZDQ4ICh2b2lkKTsKbG9u ZyBpbnQgbnJhbmQ0OCAodW5zaWduZWQgc2hvcnQgWzNdKTsKbG9uZyBtcmFuZDQ4ICh2b2lk KTsKbG9uZyBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOwp2b2lkIHNyYW5kNDggKGxv bmcpOwp1bnNpZ25lZCBzaG9ydCAqc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOwp2b2lk IGxjb25nNDggKHVuc2lnbmVkIHNob3J0IFs3XSk7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Fs bG9jYS5oIiAxIDMgNAojIDkgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMyA0CiMgMSAiL3Vz ci9pbmNsdWRlL2JpdHMvYWxsdHlwZXMuaCIgMSAzIDQKIyAxMCAiL3Vzci9pbmNsdWRlL2Fs bG9jYS5oIiAyIDMgNAoKdm9pZCAqYWxsb2NhKHNpemVfdCk7CiMgMTQxICIvdXNyL2luY2x1 ZGUvc3RkbGliLmgiIDIgMyA0CmNoYXIgKm1rdGVtcCAoY2hhciAqKTsKdm9pZCAqdmFsbG9j IChzaXplX3QpOwp2b2lkICptZW1hbGlnbihzaXplX3QsIHNpemVfdCk7CiMgNDggImF3Z24u YyIgMgojIDEgIi91c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAxIDMgNAojIDkgIi91c3IvaW5j bHVkZS9pbnR0eXBlcy5oIiAzIDQKIyAxICIvb3B0L2djYzQvYmluLy4uL2xpYi9nY2MveDg2 XzY0LXVua25vd24tbGludXgtZ251LzQuNS40L2luY2x1ZGUvc3RkaW50LmgiIDEgMyA0CgoK IyAxICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDEgMyA0CiMgMjcgIi91c3IvaW5jbHVkZS9z dGRpbnQuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvYWxsdHlwZXMuaCIgMSAzIDQK IyA0NyAiL3Vzci9pbmNsdWRlL2JpdHMvYWxsdHlwZXMuaCIgMyA0CnR5cGVkZWYgc2lnbmVk IGNoYXIgaW50OF90OwoKCgoKdHlwZWRlZiBzaG9ydCBpbnQxNl90OwoKCgoKdHlwZWRlZiBp bnQgaW50MzJfdDsKCgoKCnR5cGVkZWYgbG9uZyBpbnQ2NF90OwoKCgoKCnR5cGVkZWYgdW5z aWduZWQgY2hhciB1aW50OF90OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50MTZf dDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90OwoKCgoKdHlwZWRlZiB1bnNp Z25lZCBsb25nIHVpbnQ2NF90OwojIDEwNSAiL3Vzci9pbmNsdWRlL2JpdHMvYWxsdHlwZXMu aCIgMyA0CnR5cGVkZWYgaW50OF90IGludF9mYXN0OF90OwoKCgoKdHlwZWRlZiBpbnQgaW50 X2Zhc3QxNl90OwoKCgoKdHlwZWRlZiBpbnQgaW50X2Zhc3QzMl90OwoKCgoKdHlwZWRlZiBp bnQ2NF90IGludF9mYXN0NjRfdDsKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludF9m YXN0OF90OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9mYXN0MTZfdDsKCgoKCnR5 cGVkZWYgdW5zaWduZWQgaW50IHVpbnRfZmFzdDMyX3Q7CgoKCgp0eXBlZGVmIHVpbnQ2NF90 IHVpbnRfZmFzdDY0X3Q7CgoKCgoKdHlwZWRlZiBsb25nIGludHB0cl90OwoKCgoKdHlwZWRl ZiB1bnNpZ25lZCBsb25nIHVpbnRwdHJfdDsKIyAyOCAiL3Vzci9pbmNsdWRlL3N0ZGludC5o IiAyIDMgNAoKdHlwZWRlZiBpbnQ4X3QgaW50X2xlYXN0OF90Owp0eXBlZGVmIGludDE2X3Qg aW50X2xlYXN0MTZfdDsKdHlwZWRlZiBpbnQzMl90IGludF9sZWFzdDMyX3Q7CnR5cGVkZWYg aW50NjRfdCBpbnRfbGVhc3Q2NF90OwoKdHlwZWRlZiB1aW50OF90IHVpbnRfbGVhc3Q4X3Q7 CnR5cGVkZWYgdWludDE2X3QgdWludF9sZWFzdDE2X3Q7CnR5cGVkZWYgdWludDMyX3QgdWlu dF9sZWFzdDMyX3Q7CnR5cGVkZWYgdWludDY0X3QgdWludF9sZWFzdDY0X3Q7Cgp0eXBlZGVm IGxvbmcgbG9uZyBpbnRtYXhfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWludG1h eF90OwojIDgxICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDMgNAojIDEgIi91c3IvaW5jbHVk ZS9iaXRzL3djaGFyLmgiIDEgMyA0CiMgODIgIi91c3IvaW5jbHVkZS9zdGRpbnQuaCIgMiAz IDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpbnQuaCIgMSAzIDQKIyA4MyAiL3Vzci9p bmNsdWRlL3N0ZGludC5oIiAyIDMgNAojIDQgIi9vcHQvZ2NjNC9iaW4vLi4vbGliL2djYy94 ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC41LjQvaW5jbHVkZS9zdGRpbnQuaCIgMiAzIDQK IyAxMCAiL3Vzci9pbmNsdWRlL2ludHR5cGVzLmgiIDIgMyA0CgoKIyAxICIvdXNyL2luY2x1 ZGUvYml0cy9hbGx0eXBlcy5oIiAxIDMgNAojIDEzICIvdXNyL2luY2x1ZGUvaW50dHlwZXMu aCIgMiAzIDQKCnR5cGVkZWYgc3RydWN0IHsgaW50bWF4X3QgcXVvdCwgcmVtOyB9IGltYXhk aXZfdDsKCmludG1heF90IGltYXhhYnMoaW50bWF4X3QpOwppbWF4ZGl2X3QgaW1heGRpdihp bnRtYXhfdCwgaW50bWF4X3QpOwoKaW50bWF4X3Qgc3RydG9pbWF4KGNvbnN0IGNoYXIgKnJl c3RyaWN0LCBjaGFyICoqcmVzdHJpY3QsIGludCk7CnVpbnRtYXhfdCBzdHJ0b3VtYXgoY29u c3QgY2hhciAqcmVzdHJpY3QsIGNoYXIgKipyZXN0cmljdCwgaW50KTsKCmludG1heF90IHdj c3RvaW1heChjb25zdCB3Y2hhcl90ICpyZXN0cmljdCwgd2NoYXJfdCAqKnJlc3RyaWN0LCBp bnQpOwp1aW50bWF4X3Qgd2NzdG91bWF4KGNvbnN0IHdjaGFyX3QgKnJlc3RyaWN0LCB3Y2hh cl90ICoqcmVzdHJpY3QsIGludCk7CiMgNDkgImF3Z24uYyIgMgoKIyAxICIvdXNyL2luY2x1 ZGUvdGdtYXRoLmgiIDEgMyA0CiMgMTMgIi91c3IvaW5jbHVkZS90Z21hdGguaCIgMyA0CiMg MSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMSAzIDQKIyAxNSAiL3Vzci9pbmNsdWRlL21hdGgu aCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvYWxsdHlwZXMuaCIgMSAzIDQKIyA4OSAi L3Vzci9pbmNsdWRlL2JpdHMvYWxsdHlwZXMuaCIgMyA0CnR5cGVkZWYgdW5zaWduZWQgc2hv cnQgX191aW50MTZfdDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgoK Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191aW50NjRfdDsKIyAxNTggIi91c3IvaW5jbHVk ZS9iaXRzL2FsbHR5cGVzLmgiIDMgNAp0eXBlZGVmIGRvdWJsZSBmbG9hdF90OwoKCgoKdHlw ZWRlZiBkb3VibGUgZG91YmxlX3Q7CiMgMTYgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMyA0 CiMgNDIgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMgNAppbnQgX19mcGNsYXNzaWZ5KGRvdWJs ZSk7CmludCBfX2ZwY2xhc3NpZnlmKGZsb2F0KTsKaW50IF9fZnBjbGFzc2lmeWwobG9uZyBk b3VibGUpOwoKdW5pb24gX19mbG9hdF9yZXByIHsgZmxvYXQgX19mOyBfX3VpbnQzMl90IF9f aTsgfTsKdW5pb24gX19kb3VibGVfcmVwciB7IGRvdWJsZSBfX2Y7IF9fdWludDY0X3QgX19p OyB9OwojIDc3ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKaW50IF9fc2lnbmJpdChkb3Vi bGUpOwppbnQgX19zaWduYml0ZihmbG9hdCk7CmludCBfX3NpZ25iaXRsKGxvbmcgZG91Ymxl KTsKIyA5MiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMyA0CnN0YXRpYyBpbmxpbmUgaW50IF9f aXNsZXNzZihmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gISgoIHNpemVvZigoX194 KSkgPT0gc2l6ZW9mKGZsb2F0KSA/ICgoKCh1bmlvbiBfX2Zsb2F0X3JlcHIpeyAoZmxvYXQp KChfX3gpKSB9KS5fX2kpICYgMHg3ZmZmZmZmZikgPiAweDdmODAwMDAwIDogc2l6ZW9mKChf X3gpKSA9PSBzaXplb2YoZG91YmxlKSA/ICgoKCh1bmlvbiBfX2RvdWJsZV9yZXByKXsgKGRv dWJsZSkoKF9feCkpIH0pLl9faSkgJiAoX191aW50NjRfdCktMT4+MSkgPiAoX191aW50NjRf dCkweDdmZjw8NTIgOiBfX2ZwY2xhc3NpZnlsKChfX3gpKSA9PSAwKSA/ICgodm9pZCkoX195 KSwxKSA6ICggc2l6ZW9mKChfX3kpKSA9PSBzaXplb2YoZmxvYXQpID8gKCgoKHVuaW9uIF9f ZmxvYXRfcmVwcil7IChmbG9hdCkoKF9feSkpIH0pLl9faSkgJiAweDdmZmZmZmZmKSA+IDB4 N2Y4MDAwMDAgOiBzaXplb2YoKF9feSkpID09IHNpemVvZihkb3VibGUpID8gKCgoKHVuaW9u IF9fZG91YmxlX3JlcHIpeyAoZG91YmxlKSgoX195KSkgfSkuX19pKSAmIChfX3VpbnQ2NF90 KS0xPj4xKSA+IChfX3VpbnQ2NF90KTB4N2ZmPDw1MiA6IF9fZnBjbGFzc2lmeWwoKF9feSkp ID09IDApKSAmJiBfX3ggPCBfX3k7IH0Kc3RhdGljIGlubGluZSBpbnQgX19pc2xlc3MoZG91 YmxlIF9feCwgZG91YmxlIF9feSkgeyByZXR1cm4gISgoIHNpemVvZigoX194KSkgPT0gc2l6 ZW9mKGZsb2F0KSA/ICgoKCh1bmlvbiBfX2Zsb2F0X3JlcHIpeyAoZmxvYXQpKChfX3gpKSB9 KS5fX2kpICYgMHg3ZmZmZmZmZikgPiAweDdmODAwMDAwIDogc2l6ZW9mKChfX3gpKSA9PSBz aXplb2YoZG91YmxlKSA/ICgoKCh1bmlvbiBfX2RvdWJsZV9yZXByKXsgKGRvdWJsZSkoKF9f eCkpIH0pLl9faSkgJiAoX191aW50NjRfdCktMT4+MSkgPiAoX191aW50NjRfdCkweDdmZjw8 NTIgOiBfX2ZwY2xhc3NpZnlsKChfX3gpKSA9PSAwKSA/ICgodm9pZCkoX195KSwxKSA6ICgg c2l6ZW9mKChfX3kpKSA9PSBzaXplb2YoZmxvYXQpID8gKCgoKHVuaW9uIF9fZmxvYXRfcmVw cil7IChmbG9hdCkoKF9feSkpIH0pLl9faSkgJiAweDdmZmZmZmZmKSA+IDB4N2Y4MDAwMDAg OiBzaXplb2YoKF9feSkpID09IHNpemVvZihkb3VibGUpID8gKCgoKHVuaW9uIF9fZG91Ymxl X3JlcHIpeyAoZG91YmxlKSgoX195KSkgfSkuX19pKSAmIChfX3VpbnQ2NF90KS0xPj4xKSA+ IChfX3VpbnQ2NF90KTB4N2ZmPDw1MiA6IF9fZnBjbGFzc2lmeWwoKF9feSkpID09IDApKSAm JiBfX3ggPCBfX3k7IH0Kc3RhdGljIGlubGluZSBpbnQgX19pc2xlc3NsKGxvbmcgZG91Ymxl IF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJldHVybiAhKCggc2l6ZW9mKChfX3gpKSA9PSBz aXplb2YoZmxvYXQpID8gKCgoKHVuaW9uIF9fZmxvYXRfcmVwcil7IChmbG9hdCkoKF9feCkp IH0pLl9faSkgJiAweDdmZmZmZmZmKSA+IDB4N2Y4MDAwMDAgOiBzaXplb2YoKF9feCkpID09 IHNpemVvZihkb3VibGUpID8gKCgoKHVuaW9uIF9fZG91YmxlX3JlcHIpeyAoZG91YmxlKSgo X194KSkgfSkuX19pKSAmIChfX3VpbnQ2NF90KS0xPj4xKSA+IChfX3VpbnQ2NF90KTB4N2Zm PDw1MiA6IF9fZnBjbGFzc2lmeWwoKF9feCkpID09IDApID8gKCh2b2lkKShfX3kpLDEpIDog KCBzaXplb2YoKF9feSkpID09IHNpemVvZihmbG9hdCkgPyAoKCgodW5pb24gX19mbG9hdF9y ZXByKXsgKGZsb2F0KSgoX195KSkgfSkuX19pKSAmIDB4N2ZmZmZmZmYpID4gMHg3ZjgwMDAw MCA6IHNpemVvZigoX195KSkgPT0gc2l6ZW9mKGRvdWJsZSkgPyAoKCgodW5pb24gX19kb3Vi bGVfcmVwcil7IChkb3VibGUpKChfX3kpKSB9KS5fX2kpICYgKF9fdWludDY0X3QpLTE+PjEp ID4gKF9fdWludDY0X3QpMHg3ZmY8PDUyIDogX19mcGNsYXNzaWZ5bCgoX195KSkgPT0gMCkp ICYmIF9feCA8IF9feTsgfQpzdGF0aWMgaW5saW5lIGludCBfX2lzbGVzc2VxdWFsZihmbG9h dCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gISgoIHNpemVvZigoX194KSkgPT0gc2l6ZW9m KGZsb2F0KSA/ICgoKCh1bmlvbiBfX2Zsb2F0X3JlcHIpeyAoZmxvYXQpKChfX3gpKSB9KS5f X2kpICYgMHg3ZmZmZmZmZikgPiAweDdmODAwMDAwIDogc2l6ZW9mKChfX3gpKSA9PSBzaXpl b2YoZG91YmxlKSA/ICgoKCh1bmlvbiBfX2RvdWJsZV9yZXByKXsgKGRvdWJsZSkoKF9feCkp IH0pLl9faSkgJiAoX191aW50NjRfdCktMT4+MSkgPiAoX191aW50NjRfdCkweDdmZjw8NTIg OiBfX2ZwY2xhc3NpZnlsKChfX3gpKSA9PSAwKSA/ICgodm9pZCkoX195KSwxKSA6ICggc2l6 ZW9mKChfX3kpKSA9PSBzaXplb2YoZmxvYXQpID8gKCgoKHVuaW9uIF9fZmxvYXRfcmVwcil7 IChmbG9hdCkoKF9feSkpIH0pLl9faSkgJiAweDdmZmZmZmZmKSA+IDB4N2Y4MDAwMDAgOiBz aXplb2YoKF9feSkpID09IHNpemVvZihkb3VibGUpID8gKCgoKHVuaW9uIF9fZG91YmxlX3Jl cHIpeyAoZG91YmxlKSgoX195KSkgfSkuX19pKSAmIChfX3VpbnQ2NF90KS0xPj4xKSA+IChf X3VpbnQ2NF90KTB4N2ZmPDw1MiA6IF9fZnBjbGFzc2lmeWwoKF9feSkpID09IDApKSAmJiBf X3ggPD0gX195OyB9CnN0YXRpYyBpbmxpbmUgaW50IF9faXNsZXNzZXF1YWwoZG91YmxlIF9f eCwgZG91YmxlIF9feSkgeyByZXR1cm4gISgoIHNpemVvZigoX194KSkgPT0gc2l6ZW9mKGZs b2F0KSA/ICgoKCh1bmlvbiBfX2Zsb2F0X3JlcHIpeyAoZmxvYXQpKChfX3gpKSB9KS5fX2kp ICYgMHg3ZmZmZmZmZikgPiAweDdmODAwMDAwIDogc2l6ZW9mKChfX3gpKSA9PSBzaXplb2Yo ZG91YmxlKSA/ICgoKCh1bmlvbiBfX2RvdWJsZV9yZXByKXsgKGRvdWJsZSkoKF9feCkpIH0p Ll9faSkgJiAoX191aW50NjRfdCktMT4+MSkgPiAoX191aW50NjRfdCkweDdmZjw8NTIgOiBf X2ZwY2xhc3NpZnlsKChfX3gpKSA9PSAwKSA/ICgodm9pZCkoX195KSwxKSA6ICggc2l6ZW9m KChfX3kpKSA9PSBzaXplb2YoZmxvYXQpID8gKCgoKHVuaW9uIF9fZmxvYXRfcmVwcil7IChm bG9hdCkoKF9feSkpIH0pLl9faSkgJiAweDdmZmZmZmZmKSA+IDB4N2Y4MDAwMDAgOiBzaXpl b2YoKF9feSkpID09IHNpemVvZihkb3VibGUpID8gKCgoKHVuaW9uIF9fZG91YmxlX3JlcHIp eyAoZG91YmxlKSgoX195KSkgfSkuX19pKSAmIChfX3VpbnQ2NF90KS0xPj4xKSA+IChfX3Vp bnQ2NF90KTB4N2ZmPDw1MiA6IF9fZnBjbGFzc2lmeWwoKF9feSkpID09IDApKSAmJiBfX3gg PD0gX195OyB9CnN0YXRpYyBpbmxpbmUgaW50IF9faXNsZXNzZXF1YWxsKGxvbmcgZG91Ymxl IF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJldHVybiAhKCggc2l6ZW9mKChfX3gpKSA9PSBz aXplb2YoZmxvYXQpID8gKCgoKHVuaW9uIF9fZmxvYXRfcmVwcil7IChmbG9hdCkoKF9feCkp IH0pLl9faSkgJiAweDdmZmZmZmZmKSA+IDB4N2Y4MDAwMDAgOiBzaXplb2YoKF9feCkpID09 IHNpemVvZihkb3VibGUpID8gKCgoKHVuaW9uIF9fZG91YmxlX3JlcHIpeyAoZG91YmxlKSgo X194KSkgfSkuX19pKSAmIChfX3VpbnQ2NF90KS0xPj4xKSA+IChfX3VpbnQ2NF90KTB4N2Zm PDw1MiA6IF9fZnBjbGFzc2lmeWwoKF9feCkpID09IDApID8gKCh2b2lkKShfX3kpLDEpIDog KCBzaXplb2YoKF9feSkpID09IHNpemVvZihmbG9hdCkgPyAoKCgodW5pb24gX19mbG9hdF9y ZXByKXsgKGZsb2F0KSgoX195KSkgfSkuX19pKSAmIDB4N2ZmZmZmZmYpID4gMHg3ZjgwMDAw MCA6IHNpemVvZigoX195KSkgPT0gc2l6ZW9mKGRvdWJsZSkgPyAoKCgodW5pb24gX19kb3Vi bGVfcmVwcil7IChkb3VibGUpKChfX3kpKSB9KS5fX2kpICYgKF9fdWludDY0X3QpLTE+PjEp ID4gKF9fdWludDY0X3QpMHg3ZmY8PDUyIDogX19mcGNsYXNzaWZ5bCgoX195KSkgPT0gMCkp ICYmIF9feCA8PSBfX3k7IH0Kc3RhdGljIGlubGluZSBpbnQgX19pc2xlc3NncmVhdGVyZihm bG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gISgoIHNpemVvZigoX194KSkgPT0gc2l6 ZW9mKGZsb2F0KSA/ICgoKCh1bmlvbiBfX2Zsb2F0X3JlcHIpeyAoZmxvYXQpKChfX3gpKSB9 KS5fX2kpICYgMHg3ZmZmZmZmZikgPiAweDdmODAwMDAwIDogc2l6ZW9mKChfX3gpKSA9PSBz aXplb2YoZG91YmxlKSA/ICgoKCh1bmlvbiBfX2RvdWJsZV9yZXByKXsgKGRvdWJsZSkoKF9f eCkpIH0pLl9faSkgJiAoX191aW50NjRfdCktMT4+MSkgPiAoX191aW50NjRfdCkweDdmZjw8 NTIgOiBfX2ZwY2xhc3NpZnlsKChfX3gpKSA9PSAwKSA/ICgodm9pZCkoX195KSwxKSA6ICgg c2l6ZW9mKChfX3kpKSA9PSBzaXplb2YoZmxvYXQpID8gKCgoKHVuaW9uIF9fZmxvYXRfcmVw cil7IChmbG9hdCkoKF9feSkpIH0pLl9faSkgJiAweDdmZmZmZmZmKSA+IDB4N2Y4MDAwMDAg OiBzaXplb2YoKF9feSkpID09IHNpemVvZihkb3VibGUpID8gKCgoKHVuaW9uIF9fZG91Ymxl X3JlcHIpeyAoZG91YmxlKSgoX195KSkgfSkuX19pKSAmIChfX3VpbnQ2NF90KS0xPj4xKSA+ IChfX3VpbnQ2NF90KTB4N2ZmPDw1MiA6IF9fZnBjbGFzc2lmeWwoKF9feSkpID09IDApKSAm JiBfX3ggIT0gX195OyB9CnN0YXRpYyBpbmxpbmUgaW50IF9faXNsZXNzZ3JlYXRlcihkb3Vi bGUgX194LCBkb3VibGUgX195KSB7IHJldHVybiAhKCggc2l6ZW9mKChfX3gpKSA9PSBzaXpl b2YoZmxvYXQpID8gKCgoKHVuaW9uIF9fZmxvYXRfcmVwcil7IChmbG9hdCkoKF9feCkpIH0p Ll9faSkgJiAweDdmZmZmZmZmKSA+IDB4N2Y4MDAwMDAgOiBzaXplb2YoKF9feCkpID09IHNp emVvZihkb3VibGUpID8gKCgoKHVuaW9uIF9fZG91YmxlX3JlcHIpeyAoZG91YmxlKSgoX194 KSkgfSkuX19pKSAmIChfX3VpbnQ2NF90KS0xPj4xKSA+IChfX3VpbnQ2NF90KTB4N2ZmPDw1 MiA6IF9fZnBjbGFzc2lmeWwoKF9feCkpID09IDApID8gKCh2b2lkKShfX3kpLDEpIDogKCBz aXplb2YoKF9feSkpID09IHNpemVvZihmbG9hdCkgPyAoKCgodW5pb24gX19mbG9hdF9yZXBy KXsgKGZsb2F0KSgoX195KSkgfSkuX19pKSAmIDB4N2ZmZmZmZmYpID4gMHg3ZjgwMDAwMCA6 IHNpemVvZigoX195KSkgPT0gc2l6ZW9mKGRvdWJsZSkgPyAoKCgodW5pb24gX19kb3VibGVf cmVwcil7IChkb3VibGUpKChfX3kpKSB9KS5fX2kpICYgKF9fdWludDY0X3QpLTE+PjEpID4g KF9fdWludDY0X3QpMHg3ZmY8PDUyIDogX19mcGNsYXNzaWZ5bCgoX195KSkgPT0gMCkpICYm IF9feCAhPSBfX3k7IH0Kc3RhdGljIGlubGluZSBpbnQgX19pc2xlc3NncmVhdGVybChsb25n IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgeyByZXR1cm4gISgoIHNpemVvZigoX194 KSkgPT0gc2l6ZW9mKGZsb2F0KSA/ICgoKCh1bmlvbiBfX2Zsb2F0X3JlcHIpeyAoZmxvYXQp KChfX3gpKSB9KS5fX2kpICYgMHg3ZmZmZmZmZikgPiAweDdmODAwMDAwIDogc2l6ZW9mKChf X3gpKSA9PSBzaXplb2YoZG91YmxlKSA/ICgoKCh1bmlvbiBfX2RvdWJsZV9yZXByKXsgKGRv dWJsZSkoKF9feCkpIH0pLl9faSkgJiAoX191aW50NjRfdCktMT4+MSkgPiAoX191aW50NjRf dCkweDdmZjw8NTIgOiBfX2ZwY2xhc3NpZnlsKChfX3gpKSA9PSAwKSA/ICgodm9pZCkoX195 KSwxKSA6ICggc2l6ZW9mKChfX3kpKSA9PSBzaXplb2YoZmxvYXQpID8gKCgoKHVuaW9uIF9f ZmxvYXRfcmVwcil7IChmbG9hdCkoKF9feSkpIH0pLl9faSkgJiAweDdmZmZmZmZmKSA+IDB4 N2Y4MDAwMDAgOiBzaXplb2YoKF9feSkpID09IHNpemVvZihkb3VibGUpID8gKCgoKHVuaW9u IF9fZG91YmxlX3JlcHIpeyAoZG91YmxlKSgoX195KSkgfSkuX19pKSAmIChfX3VpbnQ2NF90 KS0xPj4xKSA+IChfX3VpbnQ2NF90KTB4N2ZmPDw1MiA6IF9fZnBjbGFzc2lmeWwoKF9feSkp ID09IDApKSAmJiBfX3ggIT0gX195OyB9CnN0YXRpYyBpbmxpbmUgaW50IF9faXNncmVhdGVy ZihmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gISgoIHNpemVvZigoX194KSkgPT0g c2l6ZW9mKGZsb2F0KSA/ICgoKCh1bmlvbiBfX2Zsb2F0X3JlcHIpeyAoZmxvYXQpKChfX3gp KSB9KS5fX2kpICYgMHg3ZmZmZmZmZikgPiAweDdmODAwMDAwIDogc2l6ZW9mKChfX3gpKSA9 PSBzaXplb2YoZG91YmxlKSA/ICgoKCh1bmlvbiBfX2RvdWJsZV9yZXByKXsgKGRvdWJsZSko KF9feCkpIH0pLl9faSkgJiAoX191aW50NjRfdCktMT4+MSkgPiAoX191aW50NjRfdCkweDdm Zjw8NTIgOiBfX2ZwY2xhc3NpZnlsKChfX3gpKSA9PSAwKSA/ICgodm9pZCkoX195KSwxKSA6 ICggc2l6ZW9mKChfX3kpKSA9PSBzaXplb2YoZmxvYXQpID8gKCgoKHVuaW9uIF9fZmxvYXRf cmVwcil7IChmbG9hdCkoKF9feSkpIH0pLl9faSkgJiAweDdmZmZmZmZmKSA+IDB4N2Y4MDAw MDAgOiBzaXplb2YoKF9feSkpID09IHNpemVvZihkb3VibGUpID8gKCgoKHVuaW9uIF9fZG91 YmxlX3JlcHIpeyAoZG91YmxlKSgoX195KSkgfSkuX19pKSAmIChfX3VpbnQ2NF90KS0xPj4x KSA+IChfX3VpbnQ2NF90KTB4N2ZmPDw1MiA6IF9fZnBjbGFzc2lmeWwoKF9feSkpID09IDAp KSAmJiBfX3ggPiBfX3k7IH0Kc3RhdGljIGlubGluZSBpbnQgX19pc2dyZWF0ZXIoZG91Ymxl IF9feCwgZG91YmxlIF9feSkgeyByZXR1cm4gISgoIHNpemVvZigoX194KSkgPT0gc2l6ZW9m KGZsb2F0KSA/ICgoKCh1bmlvbiBfX2Zsb2F0X3JlcHIpeyAoZmxvYXQpKChfX3gpKSB9KS5f X2kpICYgMHg3ZmZmZmZmZikgPiAweDdmODAwMDAwIDogc2l6ZW9mKChfX3gpKSA9PSBzaXpl b2YoZG91YmxlKSA/ICgoKCh1bmlvbiBfX2RvdWJsZV9yZXByKXsgKGRvdWJsZSkoKF9feCkp IH0pLl9faSkgJiAoX191aW50NjRfdCktMT4+MSkgPiAoX191aW50NjRfdCkweDdmZjw8NTIg OiBfX2ZwY2xhc3NpZnlsKChfX3gpKSA9PSAwKSA/ICgodm9pZCkoX195KSwxKSA6ICggc2l6 ZW9mKChfX3kpKSA9PSBzaXplb2YoZmxvYXQpID8gKCgoKHVuaW9uIF9fZmxvYXRfcmVwcil7 IChmbG9hdCkoKF9feSkpIH0pLl9faSkgJiAweDdmZmZmZmZmKSA+IDB4N2Y4MDAwMDAgOiBz aXplb2YoKF9feSkpID09IHNpemVvZihkb3VibGUpID8gKCgoKHVuaW9uIF9fZG91YmxlX3Jl cHIpeyAoZG91YmxlKSgoX195KSkgfSkuX19pKSAmIChfX3VpbnQ2NF90KS0xPj4xKSA+IChf X3VpbnQ2NF90KTB4N2ZmPDw1MiA6IF9fZnBjbGFzc2lmeWwoKF9feSkpID09IDApKSAmJiBf X3ggPiBfX3k7IH0Kc3RhdGljIGlubGluZSBpbnQgX19pc2dyZWF0ZXJsKGxvbmcgZG91Ymxl IF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJldHVybiAhKCggc2l6ZW9mKChfX3gpKSA9PSBz aXplb2YoZmxvYXQpID8gKCgoKHVuaW9uIF9fZmxvYXRfcmVwcil7IChmbG9hdCkoKF9feCkp IH0pLl9faSkgJiAweDdmZmZmZmZmKSA+IDB4N2Y4MDAwMDAgOiBzaXplb2YoKF9feCkpID09 IHNpemVvZihkb3VibGUpID8gKCgoKHVuaW9uIF9fZG91YmxlX3JlcHIpeyAoZG91YmxlKSgo X194KSkgfSkuX19pKSAmIChfX3VpbnQ2NF90KS0xPj4xKSA+IChfX3VpbnQ2NF90KTB4N2Zm PDw1MiA6IF9fZnBjbGFzc2lmeWwoKF9feCkpID09IDApID8gKCh2b2lkKShfX3kpLDEpIDog KCBzaXplb2YoKF9feSkpID09IHNpemVvZihmbG9hdCkgPyAoKCgodW5pb24gX19mbG9hdF9y ZXByKXsgKGZsb2F0KSgoX195KSkgfSkuX19pKSAmIDB4N2ZmZmZmZmYpID4gMHg3ZjgwMDAw MCA6IHNpemVvZigoX195KSkgPT0gc2l6ZW9mKGRvdWJsZSkgPyAoKCgodW5pb24gX19kb3Vi bGVfcmVwcil7IChkb3VibGUpKChfX3kpKSB9KS5fX2kpICYgKF9fdWludDY0X3QpLTE+PjEp ID4gKF9fdWludDY0X3QpMHg3ZmY8PDUyIDogX19mcGNsYXNzaWZ5bCgoX195KSkgPT0gMCkp ICYmIF9feCA+IF9feTsgfQpzdGF0aWMgaW5saW5lIGludCBfX2lzZ3JlYXRlcmVxdWFsZihm bG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gISgoIHNpemVvZigoX194KSkgPT0gc2l6 ZW9mKGZsb2F0KSA/ICgoKCh1bmlvbiBfX2Zsb2F0X3JlcHIpeyAoZmxvYXQpKChfX3gpKSB9 KS5fX2kpICYgMHg3ZmZmZmZmZikgPiAweDdmODAwMDAwIDogc2l6ZW9mKChfX3gpKSA9PSBz aXplb2YoZG91YmxlKSA/ICgoKCh1bmlvbiBfX2RvdWJsZV9yZXByKXsgKGRvdWJsZSkoKF9f eCkpIH0pLl9faSkgJiAoX191aW50NjRfdCktMT4+MSkgPiAoX191aW50NjRfdCkweDdmZjw8 NTIgOiBfX2ZwY2xhc3NpZnlsKChfX3gpKSA9PSAwKSA/ICgodm9pZCkoX195KSwxKSA6ICgg c2l6ZW9mKChfX3kpKSA9PSBzaXplb2YoZmxvYXQpID8gKCgoKHVuaW9uIF9fZmxvYXRfcmVw cil7IChmbG9hdCkoKF9feSkpIH0pLl9faSkgJiAweDdmZmZmZmZmKSA+IDB4N2Y4MDAwMDAg OiBzaXplb2YoKF9feSkpID09IHNpemVvZihkb3VibGUpID8gKCgoKHVuaW9uIF9fZG91Ymxl X3JlcHIpeyAoZG91YmxlKSgoX195KSkgfSkuX19pKSAmIChfX3VpbnQ2NF90KS0xPj4xKSA+ IChfX3VpbnQ2NF90KTB4N2ZmPDw1MiA6IF9fZnBjbGFzc2lmeWwoKF9feSkpID09IDApKSAm JiBfX3ggPj0gX195OyB9CnN0YXRpYyBpbmxpbmUgaW50IF9faXNncmVhdGVyZXF1YWwoZG91 YmxlIF9feCwgZG91YmxlIF9feSkgeyByZXR1cm4gISgoIHNpemVvZigoX194KSkgPT0gc2l6 ZW9mKGZsb2F0KSA/ICgoKCh1bmlvbiBfX2Zsb2F0X3JlcHIpeyAoZmxvYXQpKChfX3gpKSB9 KS5fX2kpICYgMHg3ZmZmZmZmZikgPiAweDdmODAwMDAwIDogc2l6ZW9mKChfX3gpKSA9PSBz aXplb2YoZG91YmxlKSA/ICgoKCh1bmlvbiBfX2RvdWJsZV9yZXByKXsgKGRvdWJsZSkoKF9f eCkpIH0pLl9faSkgJiAoX191aW50NjRfdCktMT4+MSkgPiAoX191aW50NjRfdCkweDdmZjw8 NTIgOiBfX2ZwY2xhc3NpZnlsKChfX3gpKSA9PSAwKSA/ICgodm9pZCkoX195KSwxKSA6ICgg c2l6ZW9mKChfX3kpKSA9PSBzaXplb2YoZmxvYXQpID8gKCgoKHVuaW9uIF9fZmxvYXRfcmVw cil7IChmbG9hdCkoKF9feSkpIH0pLl9faSkgJiAweDdmZmZmZmZmKSA+IDB4N2Y4MDAwMDAg OiBzaXplb2YoKF9feSkpID09IHNpemVvZihkb3VibGUpID8gKCgoKHVuaW9uIF9fZG91Ymxl X3JlcHIpeyAoZG91YmxlKSgoX195KSkgfSkuX19pKSAmIChfX3VpbnQ2NF90KS0xPj4xKSA+ IChfX3VpbnQ2NF90KTB4N2ZmPDw1MiA6IF9fZnBjbGFzc2lmeWwoKF9feSkpID09IDApKSAm JiBfX3ggPj0gX195OyB9CnN0YXRpYyBpbmxpbmUgaW50IF9faXNncmVhdGVyZXF1YWxsKGxv bmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJldHVybiAhKCggc2l6ZW9mKChf X3gpKSA9PSBzaXplb2YoZmxvYXQpID8gKCgoKHVuaW9uIF9fZmxvYXRfcmVwcil7IChmbG9h dCkoKF9feCkpIH0pLl9faSkgJiAweDdmZmZmZmZmKSA+IDB4N2Y4MDAwMDAgOiBzaXplb2Yo KF9feCkpID09IHNpemVvZihkb3VibGUpID8gKCgoKHVuaW9uIF9fZG91YmxlX3JlcHIpeyAo ZG91YmxlKSgoX194KSkgfSkuX19pKSAmIChfX3VpbnQ2NF90KS0xPj4xKSA+IChfX3VpbnQ2 NF90KTB4N2ZmPDw1MiA6IF9fZnBjbGFzc2lmeWwoKF9feCkpID09IDApID8gKCh2b2lkKShf X3kpLDEpIDogKCBzaXplb2YoKF9feSkpID09IHNpemVvZihmbG9hdCkgPyAoKCgodW5pb24g X19mbG9hdF9yZXByKXsgKGZsb2F0KSgoX195KSkgfSkuX19pKSAmIDB4N2ZmZmZmZmYpID4g MHg3ZjgwMDAwMCA6IHNpemVvZigoX195KSkgPT0gc2l6ZW9mKGRvdWJsZSkgPyAoKCgodW5p b24gX19kb3VibGVfcmVwcil7IChkb3VibGUpKChfX3kpKSB9KS5fX2kpICYgKF9fdWludDY0 X3QpLTE+PjEpID4gKF9fdWludDY0X3QpMHg3ZmY8PDUyIDogX19mcGNsYXNzaWZ5bCgoX195 KSkgPT0gMCkpICYmIF9feCA+PSBfX3k7IH0KIyAxMTkgIi91c3IvaW5jbHVkZS9tYXRoLmgi IDMgNApkb3VibGUgYWNvcyhkb3VibGUpOwpmbG9hdCBhY29zZihmbG9hdCk7CmxvbmcgZG91 YmxlIGFjb3NsKGxvbmcgZG91YmxlKTsKCmRvdWJsZSBhY29zaChkb3VibGUpOwpmbG9hdCBh Y29zaGYoZmxvYXQpOwpsb25nIGRvdWJsZSBhY29zaGwobG9uZyBkb3VibGUpOwoKZG91Ymxl IGFzaW4oZG91YmxlKTsKZmxvYXQgYXNpbmYoZmxvYXQpOwpsb25nIGRvdWJsZSBhc2lubChs b25nIGRvdWJsZSk7Cgpkb3VibGUgYXNpbmgoZG91YmxlKTsKZmxvYXQgYXNpbmhmKGZsb2F0 KTsKbG9uZyBkb3VibGUgYXNpbmhsKGxvbmcgZG91YmxlKTsKCmRvdWJsZSBhdGFuKGRvdWJs ZSk7CmZsb2F0IGF0YW5mKGZsb2F0KTsKbG9uZyBkb3VibGUgYXRhbmwobG9uZyBkb3VibGUp OwoKZG91YmxlIGF0YW4yKGRvdWJsZSwgZG91YmxlKTsKZmxvYXQgYXRhbjJmKGZsb2F0LCBm bG9hdCk7CmxvbmcgZG91YmxlIGF0YW4ybChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOwoK ZG91YmxlIGF0YW5oKGRvdWJsZSk7CmZsb2F0IGF0YW5oZihmbG9hdCk7CmxvbmcgZG91Ymxl IGF0YW5obChsb25nIGRvdWJsZSk7Cgpkb3VibGUgY2JydChkb3VibGUpOwpmbG9hdCBjYnJ0 ZihmbG9hdCk7CmxvbmcgZG91YmxlIGNicnRsKGxvbmcgZG91YmxlKTsKCmRvdWJsZSBjZWls KGRvdWJsZSk7CmZsb2F0IGNlaWxmKGZsb2F0KTsKbG9uZyBkb3VibGUgY2VpbGwobG9uZyBk b3VibGUpOwoKZG91YmxlIGNvcHlzaWduKGRvdWJsZSwgZG91YmxlKTsKZmxvYXQgY29weXNp Z25mKGZsb2F0LCBmbG9hdCk7CmxvbmcgZG91YmxlIGNvcHlzaWdubChsb25nIGRvdWJsZSwg bG9uZyBkb3VibGUpOwoKZG91YmxlIGNvcyhkb3VibGUpOwpmbG9hdCBjb3NmKGZsb2F0KTsK bG9uZyBkb3VibGUgY29zbChsb25nIGRvdWJsZSk7Cgpkb3VibGUgY29zaChkb3VibGUpOwpm bG9hdCBjb3NoZihmbG9hdCk7CmxvbmcgZG91YmxlIGNvc2hsKGxvbmcgZG91YmxlKTsKCmRv dWJsZSBlcmYoZG91YmxlKTsKZmxvYXQgZXJmZihmbG9hdCk7CmxvbmcgZG91YmxlIGVyZmwo bG9uZyBkb3VibGUpOwoKZG91YmxlIGVyZmMoZG91YmxlKTsKZmxvYXQgZXJmY2YoZmxvYXQp Owpsb25nIGRvdWJsZSBlcmZjbChsb25nIGRvdWJsZSk7Cgpkb3VibGUgZXhwKGRvdWJsZSk7 CmZsb2F0IGV4cGYoZmxvYXQpOwpsb25nIGRvdWJsZSBleHBsKGxvbmcgZG91YmxlKTsKCmRv dWJsZSBleHAyKGRvdWJsZSk7CmZsb2F0IGV4cDJmKGZsb2F0KTsKbG9uZyBkb3VibGUgZXhw MmwobG9uZyBkb3VibGUpOwoKZG91YmxlIGV4cG0xKGRvdWJsZSk7CmZsb2F0IGV4cG0xZihm bG9hdCk7CmxvbmcgZG91YmxlIGV4cG0xbChsb25nIGRvdWJsZSk7Cgpkb3VibGUgZmFicyhk b3VibGUpOwpmbG9hdCBmYWJzZihmbG9hdCk7CmxvbmcgZG91YmxlIGZhYnNsKGxvbmcgZG91 YmxlKTsKCmRvdWJsZSBmZGltKGRvdWJsZSwgZG91YmxlKTsKZmxvYXQgZmRpbWYoZmxvYXQs IGZsb2F0KTsKbG9uZyBkb3VibGUgZmRpbWwobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsK CmRvdWJsZSBmbG9vcihkb3VibGUpOwpmbG9hdCBmbG9vcmYoZmxvYXQpOwpsb25nIGRvdWJs ZSBmbG9vcmwobG9uZyBkb3VibGUpOwoKZG91YmxlIGZtYShkb3VibGUsIGRvdWJsZSwgZG91 YmxlKTsKZmxvYXQgZm1hZihmbG9hdCwgZmxvYXQsIGZsb2F0KTsKbG9uZyBkb3VibGUgZm1h bChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsKCmRvdWJsZSBmbWF4 KGRvdWJsZSwgZG91YmxlKTsKZmxvYXQgZm1heGYoZmxvYXQsIGZsb2F0KTsKbG9uZyBkb3Vi bGUgZm1heGwobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsKCmRvdWJsZSBmbWluKGRvdWJs ZSwgZG91YmxlKTsKZmxvYXQgZm1pbmYoZmxvYXQsIGZsb2F0KTsKbG9uZyBkb3VibGUgZm1p bmwobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsKCmRvdWJsZSBmbW9kKGRvdWJsZSwgZG91 YmxlKTsKZmxvYXQgZm1vZGYoZmxvYXQsIGZsb2F0KTsKbG9uZyBkb3VibGUgZm1vZGwobG9u ZyBkb3VibGUsIGxvbmcgZG91YmxlKTsKCmRvdWJsZSBmcmV4cChkb3VibGUsIGludCAqKTsK ZmxvYXQgZnJleHBmKGZsb2F0LCBpbnQgKik7CmxvbmcgZG91YmxlIGZyZXhwbChsb25nIGRv dWJsZSwgaW50ICopOwoKZG91YmxlIGh5cG90KGRvdWJsZSwgZG91YmxlKTsKZmxvYXQgaHlw b3RmKGZsb2F0LCBmbG9hdCk7CmxvbmcgZG91YmxlIGh5cG90bChsb25nIGRvdWJsZSwgbG9u ZyBkb3VibGUpOwoKaW50IGlsb2diKGRvdWJsZSk7CmludCBpbG9nYmYoZmxvYXQpOwppbnQg aWxvZ2JsKGxvbmcgZG91YmxlKTsKCmRvdWJsZSBsZGV4cChkb3VibGUsIGludCk7CmZsb2F0 IGxkZXhwZihmbG9hdCwgaW50KTsKbG9uZyBkb3VibGUgbGRleHBsKGxvbmcgZG91YmxlLCBp bnQpOwoKZG91YmxlIGxnYW1tYShkb3VibGUpOwpmbG9hdCBsZ2FtbWFmKGZsb2F0KTsKbG9u ZyBkb3VibGUgbGdhbW1hbChsb25nIGRvdWJsZSk7Cgpsb25nIGxvbmcgbGxyaW50KGRvdWJs ZSk7CmxvbmcgbG9uZyBsbHJpbnRmKGZsb2F0KTsKbG9uZyBsb25nIGxscmludGwobG9uZyBk b3VibGUpOwoKbG9uZyBsb25nIGxscm91bmQoZG91YmxlKTsKbG9uZyBsb25nIGxscm91bmRm KGZsb2F0KTsKbG9uZyBsb25nIGxscm91bmRsKGxvbmcgZG91YmxlKTsKCmRvdWJsZSBsb2co ZG91YmxlKTsKZmxvYXQgbG9nZihmbG9hdCk7CmxvbmcgZG91YmxlIGxvZ2wobG9uZyBkb3Vi bGUpOwoKZG91YmxlIGxvZzEwKGRvdWJsZSk7CmZsb2F0IGxvZzEwZihmbG9hdCk7Cmxvbmcg ZG91YmxlIGxvZzEwbChsb25nIGRvdWJsZSk7Cgpkb3VibGUgbG9nMXAoZG91YmxlKTsKZmxv YXQgbG9nMXBmKGZsb2F0KTsKbG9uZyBkb3VibGUgbG9nMXBsKGxvbmcgZG91YmxlKTsKCmRv dWJsZSBsb2cyKGRvdWJsZSk7CmZsb2F0IGxvZzJmKGZsb2F0KTsKbG9uZyBkb3VibGUgbG9n MmwobG9uZyBkb3VibGUpOwoKZG91YmxlIGxvZ2IoZG91YmxlKTsKZmxvYXQgbG9nYmYoZmxv YXQpOwpsb25nIGRvdWJsZSBsb2dibChsb25nIGRvdWJsZSk7Cgpsb25nIGxyaW50KGRvdWJs ZSk7CmxvbmcgbHJpbnRmKGZsb2F0KTsKbG9uZyBscmludGwobG9uZyBkb3VibGUpOwoKbG9u ZyBscm91bmQoZG91YmxlKTsKbG9uZyBscm91bmRmKGZsb2F0KTsKbG9uZyBscm91bmRsKGxv bmcgZG91YmxlKTsKCmRvdWJsZSBtb2RmKGRvdWJsZSwgZG91YmxlICopOwpmbG9hdCBtb2Rm ZihmbG9hdCwgZmxvYXQgKik7CmxvbmcgZG91YmxlIG1vZGZsKGxvbmcgZG91YmxlLCBsb25n IGRvdWJsZSAqKTsKCmRvdWJsZSBuYW4oY29uc3QgY2hhciAqKTsKZmxvYXQgbmFuZihjb25z dCBjaGFyICopOwpsb25nIGRvdWJsZSBuYW5sKGNvbnN0IGNoYXIgKik7Cgpkb3VibGUgbmVh cmJ5aW50KGRvdWJsZSk7CmZsb2F0IG5lYXJieWludGYoZmxvYXQpOwpsb25nIGRvdWJsZSBu ZWFyYnlpbnRsKGxvbmcgZG91YmxlKTsKCmRvdWJsZSBuZXh0YWZ0ZXIoZG91YmxlLCBkb3Vi bGUpOwpmbG9hdCBuZXh0YWZ0ZXJmKGZsb2F0LCBmbG9hdCk7CmxvbmcgZG91YmxlIG5leHRh ZnRlcmwobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsKCmRvdWJsZSBuZXh0dG93YXJkKGRv dWJsZSwgbG9uZyBkb3VibGUpOwpmbG9hdCBuZXh0dG93YXJkZihmbG9hdCwgbG9uZyBkb3Vi bGUpOwpsb25nIGRvdWJsZSBuZXh0dG93YXJkbChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUp OwoKZG91YmxlIHBvdyhkb3VibGUsIGRvdWJsZSk7CmZsb2F0IHBvd2YoZmxvYXQsIGZsb2F0 KTsKbG9uZyBkb3VibGUgcG93bChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOwoKZG91Ymxl IHJlbWFpbmRlcihkb3VibGUsIGRvdWJsZSk7CmZsb2F0IHJlbWFpbmRlcmYoZmxvYXQsIGZs b2F0KTsKbG9uZyBkb3VibGUgcmVtYWluZGVybChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUp OwoKZG91YmxlIHJlbXF1byhkb3VibGUsIGRvdWJsZSwgaW50ICopOwpmbG9hdCByZW1xdW9m KGZsb2F0LCBmbG9hdCwgaW50ICopOwpsb25nIGRvdWJsZSByZW1xdW9sKGxvbmcgZG91Ymxl LCBsb25nIGRvdWJsZSwgaW50ICopOwoKZG91YmxlIHJpbnQoZG91YmxlKTsKZmxvYXQgcmlu dGYoZmxvYXQpOwpsb25nIGRvdWJsZSByaW50bChsb25nIGRvdWJsZSk7Cgpkb3VibGUgcm91 bmQoZG91YmxlKTsKZmxvYXQgcm91bmRmKGZsb2F0KTsKbG9uZyBkb3VibGUgcm91bmRsKGxv bmcgZG91YmxlKTsKCmRvdWJsZSBzY2FsYmxuKGRvdWJsZSwgbG9uZyk7CmZsb2F0IHNjYWxi bG5mKGZsb2F0LCBsb25nKTsKbG9uZyBkb3VibGUgc2NhbGJsbmwobG9uZyBkb3VibGUsIGxv bmcpOwoKZG91YmxlIHNjYWxibihkb3VibGUsIGludCk7CmZsb2F0IHNjYWxibmYoZmxvYXQs IGludCk7CmxvbmcgZG91YmxlIHNjYWxibmwobG9uZyBkb3VibGUsIGludCk7Cgpkb3VibGUg c2luKGRvdWJsZSk7CmZsb2F0IHNpbmYoZmxvYXQpOwpsb25nIGRvdWJsZSBzaW5sKGxvbmcg ZG91YmxlKTsKCmRvdWJsZSBzaW5oKGRvdWJsZSk7CmZsb2F0IHNpbmhmKGZsb2F0KTsKbG9u ZyBkb3VibGUgc2luaGwobG9uZyBkb3VibGUpOwoKZG91YmxlIHNxcnQoZG91YmxlKTsKZmxv YXQgc3FydGYoZmxvYXQpOwpsb25nIGRvdWJsZSBzcXJ0bChsb25nIGRvdWJsZSk7Cgpkb3Vi bGUgdGFuKGRvdWJsZSk7CmZsb2F0IHRhbmYoZmxvYXQpOwpsb25nIGRvdWJsZSB0YW5sKGxv bmcgZG91YmxlKTsKCmRvdWJsZSB0YW5oKGRvdWJsZSk7CmZsb2F0IHRhbmhmKGZsb2F0KTsK bG9uZyBkb3VibGUgdGFuaGwobG9uZyBkb3VibGUpOwoKZG91YmxlIHRnYW1tYShkb3VibGUp OwpmbG9hdCB0Z2FtbWFmKGZsb2F0KTsKbG9uZyBkb3VibGUgdGdhbW1hbChsb25nIGRvdWJs ZSk7Cgpkb3VibGUgdHJ1bmMoZG91YmxlKTsKZmxvYXQgdHJ1bmNmKGZsb2F0KTsKbG9uZyBk b3VibGUgdHJ1bmNsKGxvbmcgZG91YmxlKTsKIyAzNjcgIi91c3IvaW5jbHVkZS9tYXRoLmgi IDMgNApleHRlcm4gaW50IHNpZ25nYW07Cgpkb3VibGUgajAoZG91YmxlKTsKZG91YmxlIGox KGRvdWJsZSk7CmRvdWJsZSBqbihpbnQsIGRvdWJsZSk7Cgpkb3VibGUgeTAoZG91YmxlKTsK ZG91YmxlIHkxKGRvdWJsZSk7CmRvdWJsZSB5bihpbnQsIGRvdWJsZSk7CgoKCgoKZG91Ymxl IHNjYWxiKGRvdWJsZSwgZG91YmxlKTsKZmxvYXQgc2NhbGJmKGZsb2F0LCBmbG9hdCk7Cgpk b3VibGUgc2lnbmlmaWNhbmQoZG91YmxlKTsKZmxvYXQgc2lnbmlmaWNhbmRmKGZsb2F0KTsK CmRvdWJsZSBsZ2FtbWFfcihkb3VibGUsIGludCopOwpmbG9hdCBsZ2FtbWFmX3IoZmxvYXQs IGludCopOwoKZmxvYXQgajBmKGZsb2F0KTsKZmxvYXQgajFmKGZsb2F0KTsKZmxvYXQgam5m KGludCwgZmxvYXQpOwoKZmxvYXQgeTBmKGZsb2F0KTsKZmxvYXQgeTFmKGZsb2F0KTsKZmxv YXQgeW5mKGludCwgZmxvYXQpOwojIDE0ICIvdXNyL2luY2x1ZGUvdGdtYXRoLmgiIDIgMyA0 CiMgMSAiL3Vzci9pbmNsdWRlL2NvbXBsZXguaCIgMSAzIDQKIyAxNiAiL3Vzci9pbmNsdWRl L2NvbXBsZXguaCIgMyA0CmRvdWJsZSBfQ29tcGxleCBjYWNvcyhkb3VibGUgX0NvbXBsZXgp OwpmbG9hdCBfQ29tcGxleCBjYWNvc2YoZmxvYXQgX0NvbXBsZXgpOwpsb25nIGRvdWJsZSBf Q29tcGxleCBjYWNvc2wobG9uZyBkb3VibGUgX0NvbXBsZXgpOwoKZG91YmxlIF9Db21wbGV4 IGNhc2luKGRvdWJsZSBfQ29tcGxleCk7CmZsb2F0IF9Db21wbGV4IGNhc2luZihmbG9hdCBf Q29tcGxleCk7CmxvbmcgZG91YmxlIF9Db21wbGV4IGNhc2lubChsb25nIGRvdWJsZSBfQ29t cGxleCk7Cgpkb3VibGUgX0NvbXBsZXggY2F0YW4oZG91YmxlIF9Db21wbGV4KTsKZmxvYXQg X0NvbXBsZXggY2F0YW5mKGZsb2F0IF9Db21wbGV4KTsKbG9uZyBkb3VibGUgX0NvbXBsZXgg Y2F0YW5sKGxvbmcgZG91YmxlIF9Db21wbGV4KTsKCmRvdWJsZSBfQ29tcGxleCBjY29zKGRv dWJsZSBfQ29tcGxleCk7CmZsb2F0IF9Db21wbGV4IGNjb3NmKGZsb2F0IF9Db21wbGV4KTsK bG9uZyBkb3VibGUgX0NvbXBsZXggY2Nvc2wobG9uZyBkb3VibGUgX0NvbXBsZXgpOwoKZG91 YmxlIF9Db21wbGV4IGNzaW4oZG91YmxlIF9Db21wbGV4KTsKZmxvYXQgX0NvbXBsZXggY3Np bmYoZmxvYXQgX0NvbXBsZXgpOwpsb25nIGRvdWJsZSBfQ29tcGxleCBjc2lubChsb25nIGRv dWJsZSBfQ29tcGxleCk7Cgpkb3VibGUgX0NvbXBsZXggY3Rhbihkb3VibGUgX0NvbXBsZXgp OwpmbG9hdCBfQ29tcGxleCBjdGFuZihmbG9hdCBfQ29tcGxleCk7CmxvbmcgZG91YmxlIF9D b21wbGV4IGN0YW5sKGxvbmcgZG91YmxlIF9Db21wbGV4KTsKCmRvdWJsZSBfQ29tcGxleCBj YWNvc2goZG91YmxlIF9Db21wbGV4KTsKZmxvYXQgX0NvbXBsZXggY2Fjb3NoZihmbG9hdCBf Q29tcGxleCk7CmxvbmcgZG91YmxlIF9Db21wbGV4IGNhY29zaGwobG9uZyBkb3VibGUgX0Nv bXBsZXgpOwoKZG91YmxlIF9Db21wbGV4IGNhc2luaChkb3VibGUgX0NvbXBsZXgpOwpmbG9h dCBfQ29tcGxleCBjYXNpbmhmKGZsb2F0IF9Db21wbGV4KTsKbG9uZyBkb3VibGUgX0NvbXBs ZXggY2FzaW5obChsb25nIGRvdWJsZSBfQ29tcGxleCk7Cgpkb3VibGUgX0NvbXBsZXggY2F0 YW5oKGRvdWJsZSBfQ29tcGxleCk7CmZsb2F0IF9Db21wbGV4IGNhdGFuaGYoZmxvYXQgX0Nv bXBsZXgpOwpsb25nIGRvdWJsZSBfQ29tcGxleCBjYXRhbmhsKGxvbmcgZG91YmxlIF9Db21w bGV4KTsKCmRvdWJsZSBfQ29tcGxleCBjY29zaChkb3VibGUgX0NvbXBsZXgpOwpmbG9hdCBf Q29tcGxleCBjY29zaGYoZmxvYXQgX0NvbXBsZXgpOwpsb25nIGRvdWJsZSBfQ29tcGxleCBj Y29zaGwobG9uZyBkb3VibGUgX0NvbXBsZXgpOwoKZG91YmxlIF9Db21wbGV4IGNzaW5oKGRv dWJsZSBfQ29tcGxleCk7CmZsb2F0IF9Db21wbGV4IGNzaW5oZihmbG9hdCBfQ29tcGxleCk7 CmxvbmcgZG91YmxlIF9Db21wbGV4IGNzaW5obChsb25nIGRvdWJsZSBfQ29tcGxleCk7Cgpk b3VibGUgX0NvbXBsZXggY3RhbmgoZG91YmxlIF9Db21wbGV4KTsKZmxvYXQgX0NvbXBsZXgg Y3RhbmhmKGZsb2F0IF9Db21wbGV4KTsKbG9uZyBkb3VibGUgX0NvbXBsZXggY3RhbmhsKGxv bmcgZG91YmxlIF9Db21wbGV4KTsKCmRvdWJsZSBfQ29tcGxleCBjZXhwKGRvdWJsZSBfQ29t cGxleCk7CmZsb2F0IF9Db21wbGV4IGNleHBmKGZsb2F0IF9Db21wbGV4KTsKbG9uZyBkb3Vi bGUgX0NvbXBsZXggY2V4cGwobG9uZyBkb3VibGUgX0NvbXBsZXgpOwoKZG91YmxlIF9Db21w bGV4IGNsb2coZG91YmxlIF9Db21wbGV4KTsKZmxvYXQgX0NvbXBsZXggY2xvZ2YoZmxvYXQg X0NvbXBsZXgpOwpsb25nIGRvdWJsZSBfQ29tcGxleCBjbG9nbChsb25nIGRvdWJsZSBfQ29t cGxleCk7Cgpkb3VibGUgY2Ficyhkb3VibGUgX0NvbXBsZXgpOwpmbG9hdCBjYWJzZihmbG9h dCBfQ29tcGxleCk7CmxvbmcgZG91YmxlIGNhYnNsKGxvbmcgZG91YmxlIF9Db21wbGV4KTsK CmRvdWJsZSBfQ29tcGxleCBjcG93KGRvdWJsZSBfQ29tcGxleCwgZG91YmxlIF9Db21wbGV4 KTsKZmxvYXQgX0NvbXBsZXggY3Bvd2YoZmxvYXQgX0NvbXBsZXgsIGZsb2F0IF9Db21wbGV4 KTsKbG9uZyBkb3VibGUgX0NvbXBsZXggY3Bvd2wobG9uZyBkb3VibGUgX0NvbXBsZXgsIGxv bmcgZG91YmxlIF9Db21wbGV4KTsKCmRvdWJsZSBfQ29tcGxleCBjc3FydChkb3VibGUgX0Nv bXBsZXgpOwpmbG9hdCBfQ29tcGxleCBjc3FydGYoZmxvYXQgX0NvbXBsZXgpOwpsb25nIGRv dWJsZSBfQ29tcGxleCBjc3FydGwobG9uZyBkb3VibGUgX0NvbXBsZXgpOwoKZG91YmxlIGNh cmcoZG91YmxlIF9Db21wbGV4KTsKZmxvYXQgY2FyZ2YoZmxvYXQgX0NvbXBsZXgpOwpsb25n IGRvdWJsZSBjYXJnbChsb25nIGRvdWJsZSBfQ29tcGxleCk7Cgpkb3VibGUgY2ltYWcoZG91 YmxlIF9Db21wbGV4KTsKZmxvYXQgY2ltYWdmKGZsb2F0IF9Db21wbGV4KTsKbG9uZyBkb3Vi bGUgY2ltYWdsKGxvbmcgZG91YmxlIF9Db21wbGV4KTsKCmRvdWJsZSBfQ29tcGxleCBjb25q KGRvdWJsZSBfQ29tcGxleCk7CmZsb2F0IF9Db21wbGV4IGNvbmpmKGZsb2F0IF9Db21wbGV4 KTsKbG9uZyBkb3VibGUgX0NvbXBsZXggY29uamwobG9uZyBkb3VibGUgX0NvbXBsZXgpOwoK ZG91YmxlIF9Db21wbGV4IGNwcm9qKGRvdWJsZSBfQ29tcGxleCk7CmZsb2F0IF9Db21wbGV4 IGNwcm9qZihmbG9hdCBfQ29tcGxleCk7CmxvbmcgZG91YmxlIF9Db21wbGV4IGNwcm9qbChs b25nIGRvdWJsZSBfQ29tcGxleCk7Cgpkb3VibGUgY3JlYWwoZG91YmxlIF9Db21wbGV4KTsK ZmxvYXQgY3JlYWxmKGZsb2F0IF9Db21wbGV4KTsKbG9uZyBkb3VibGUgY3JlYWxsKGxvbmcg ZG91YmxlIF9Db21wbGV4KTsKIyAxNSAiL3Vzci9pbmNsdWRlL3RnbWF0aC5oIiAyIDMgNAoj IDUxICJhd2duLmMiIDIKCgoKCiMgMSAiZmxvYXRpbmdfZnVkZ2UuaCIgMQojIDU2ICJhd2du LmMiIDIKCiMgMSAic3BhbmRzcC90ZWxlcGhvbnkuaCIgMQojIDU5ICJzcGFuZHNwL3RlbGVw aG9ueS5oIgp0eXBlZGVmIGludCAoKnNwYW5fcnhfaGFuZGxlcl90KSh2b2lkICpzLCBjb25z dCBpbnQxNl90IGFtcFtdLCBpbnQgbGVuKTsKCgp0eXBlZGVmIGludCAoKnNwYW5fbW9kX2hh bmRsZXJfdCkodm9pZCAqcywgaW50MTZfdCBhbXBbXSwgaW50IGxlbik7CgoKdHlwZWRlZiBp bnQgKCpzcGFuX3J4X2ZpbGxpbl9oYW5kbGVyX3QpKHZvaWQgKnMsIGludCBsZW4pOwoKCnR5 cGVkZWYgaW50ICgqc3Bhbl90eF9oYW5kbGVyX3QpKHZvaWQgKnMsIGludDE2X3QgYW1wW10s IGludCBtYXhfbGVuKTsKIyA1OCAiYXdnbi5jIiAyCiMgMSAic3BhbmRzcC9mYXN0X2NvbnZl cnQuaCIgMQojIDE4OSAic3BhbmRzcC9mYXN0X2NvbnZlcnQuaCIKICAgIHN0YXRpYyBfX2lu bGluZV9fIGxvbmcgaW50IGxmYXN0cmludChkb3VibGUgeCkKICAgIHsKICAgICAgICByZXR1 cm4gKGxvbmcgaW50KSAoeCk7CiAgICB9CgogICAgc3RhdGljIF9faW5saW5lX18gbG9uZyBp bnQgbGZhc3RyaW50ZihmbG9hdCB4KQogICAgewogICAgICAgIHJldHVybiAobG9uZyBpbnQp ICh4KTsKICAgIH0KIyA1OSAiYXdnbi5jIiAyCiMgMSAic3BhbmRzcC9zYXR1cmF0ZWQuaCIg MQojIDQ2ICJzcGFuZHNwL3NhdHVyYXRlZC5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQxNl90 IHNhdHVyYXRlKGludDMyX3QgYW1wKQp7CiMgNTggInNwYW5kc3Avc2F0dXJhdGVkLmgiCiAg ICBpbnQxNl90IHo7CgoKICAgIHogPSAoaW50MTZfdCkgYW1wOwogICAgaWYgKGFtcCA9PSB6 KQogICAgICAgIHJldHVybiB6OwogICAgaWYgKGFtcCA+ICgweDdmZmYpKQogICAgICAgIHJl dHVybiAoMHg3ZmZmKTsKICAgIHJldHVybiAoLTEtMHg3ZmZmKTsKCn0KCgpzdGF0aWMgX19p bmxpbmVfXyBpbnQxNl90IHNhdHVyYXRlMTYoaW50MzJfdCBhbXApCnsKIyA4MyAic3BhbmRz cC9zYXR1cmF0ZWQuaCIKICAgIGludDE2X3QgejsKCgogICAgeiA9IChpbnQxNl90KSBhbXA7 CiAgICBpZiAoYW1wID09IHopCiAgICAgICAgcmV0dXJuIHo7CiAgICBpZiAoYW1wID4gKDB4 N2ZmZikpCiAgICAgICAgcmV0dXJuICgweDdmZmYpOwogICAgcmV0dXJuICgtMS0weDdmZmYp OwoKfQoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQxNl90IHNhdHVyYXRlMTUoaW50MzJfdCBh bXApCnsKIyAxMDkgInNwYW5kc3Avc2F0dXJhdGVkLmgiCiAgICBpZiAoYW1wID4gMTYzODMp CiAgICAgICAgcmV0dXJuIDE2MzgzOwogICAgaWYgKGFtcCA8IC0xNjM4NCkKICAgICAgICBy ZXR1cm4gLTE2Mzg0OwogICAgcmV0dXJuIChpbnQxNl90KSBhbXA7Cgp9CgoKc3RhdGljIF9f aW5saW5lX18gdWludDE2X3Qgc2F0dXJhdGV1MTYoaW50MzJfdCBhbXApCnsKIyAxMzAgInNw YW5kc3Avc2F0dXJhdGVkLmgiCiAgICB1aW50MTZfdCB6OwoKCiAgICB6ID0gKHVpbnQxNl90 KSBhbXA7CiAgICBpZiAoYW1wID09IHopCiAgICAgICAgcmV0dXJuIHo7CiAgICBpZiAoYW1w ID4gKDB4ZmZmZikpCiAgICAgICAgcmV0dXJuICgweGZmZmYpOwogICAgcmV0dXJuIDA7Cgp9 CgoKc3RhdGljIF9faW5saW5lX18gdWludDhfdCBzYXR1cmF0ZXU4KGludDMyX3QgYW1wKQp7 CiMgMTU1ICJzcGFuZHNwL3NhdHVyYXRlZC5oIgogICAgdWludDhfdCB6OwoKCiAgICB6ID0g KHVpbnQ4X3QpIGFtcDsKICAgIGlmIChhbXAgPT0geikKICAgICAgICByZXR1cm4gejsKICAg IGlmIChhbXAgPiAoMHhmZikpCiAgICAgICAgcmV0dXJuICgweGZmKTsKICAgIHJldHVybiAw OwoKfQoKCnN0YXRpYyBfX2lubGluZV9fIGludDE2X3QgZnNhdHVyYXRlZihmbG9hdCBmYW1w KQp7CiAgICBpZiAoZmFtcCA+IChmbG9hdCkgKDB4N2ZmZikpCiAgICAgICAgcmV0dXJuICgw eDdmZmYpOwogICAgaWYgKGZhbXAgPCAoZmxvYXQpICgtMS0weDdmZmYpKQogICAgICAgIHJl dHVybiAoLTEtMHg3ZmZmKTsKICAgIHJldHVybiAoaW50MTZfdCkgbHJpbnRmKGZhbXApOwp9 CgoKc3RhdGljIF9faW5saW5lX18gaW50MTZfdCBmc2F0dXJhdGUoZG91YmxlIGRhbXApCnsK ICAgIGlmIChkYW1wID4gKGRvdWJsZSkgKDB4N2ZmZikpCiAgICAgICAgcmV0dXJuICgweDdm ZmYpOwogICAgaWYgKGRhbXAgPCAoZG91YmxlKSAoLTEtMHg3ZmZmKSkKICAgICAgICByZXR1 cm4gKC0xLTB4N2ZmZik7CiAgICByZXR1cm4gKGludDE2X3QpICgoX190eXBlb2ZfXygqKCAw ID8gKF9fdHlwZW9mX18oMCA/IChkb3VibGUgKikwIDogKHZvaWQgKikhISgoMT8xOigoZGFt cCkpKS8yKSkpMCA6IChfX3R5cGVvZl9fKDAgPyAoX190eXBlb2ZfXygoZGFtcCkpICopMCA6 ICh2b2lkICopISEhKCgxPzE6KChkYW1wKSkpLzIpKSkwICkpKSggKCghISgoMT8xOigoZGFt cCkpKS8yKSAmJiAyKnNpemVvZigoZGFtcCkpID09IHNpemVvZigoKGRhbXApKSsoX19leHRl bnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKGRhbXApKSA9PSBzaXplb2YoZmxvYXQpKSA/ IGxyaW50ZiAoKGRhbXApKSA6ICgoISEoKDE/MTooKGRhbXApKSkvMikgJiYgMipzaXplb2Yo KGRhbXApKSA9PSBzaXplb2YoKChkYW1wKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYg c2l6ZW9mKChkYW1wKSkgPT0gc2l6ZW9mKGxvbmcgZG91YmxlKSAmJiBzaXplb2YobG9uZyBk b3VibGUpICE9IHNpemVvZihkb3VibGUpKSA/IGxyaW50bCAoKGRhbXApKSA6IGxyaW50KChk YW1wKSkgKSk7Cn0KCgoKc3RhdGljIF9faW5saW5lX18gaW50MTZfdCBmZmFzdHNhdHVyYXRl ZihmbG9hdCBmYW1wKQp7CiAgICBpZiAoZmFtcCA+IChmbG9hdCkgKDB4N2ZmZikpCiAgICAg ICAgcmV0dXJuICgweDdmZmYpOwogICAgaWYgKGZhbXAgPCAoZmxvYXQpICgtMS0weDdmZmYp KQogICAgICAgIHJldHVybiAoLTEtMHg3ZmZmKTsKICAgIHJldHVybiAoaW50MTZfdCkgbGZh c3RyaW50ZihmYW1wKTsKfQoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQxNl90IGZmYXN0c2F0 dXJhdGUoZG91YmxlIGRhbXApCnsKICAgIGlmIChkYW1wID4gKGRvdWJsZSkgKDB4N2ZmZikp CiAgICAgICAgcmV0dXJuICgweDdmZmYpOwogICAgaWYgKGRhbXAgPCAoZG91YmxlKSAoLTEt MHg3ZmZmKSkKICAgICAgICByZXR1cm4gKC0xLTB4N2ZmZik7CiAgICByZXR1cm4gKGludDE2 X3QpIGxmYXN0cmludChkYW1wKTsKfQoKCgpzdGF0aWMgX19pbmxpbmVfXyBmbG9hdCBmZnNh dHVyYXRlZihmbG9hdCBmYW1wKQp7CiAgICBpZiAoZmFtcCA+IChmbG9hdCkgKDB4N2ZmZikp CiAgICAgICAgcmV0dXJuIChmbG9hdCkgKDB4N2ZmZik7CiAgICBpZiAoZmFtcCA8IChmbG9h dCkgKC0xLTB4N2ZmZikpCiAgICAgICAgcmV0dXJuIChmbG9hdCkgKC0xLTB4N2ZmZik7CiAg ICByZXR1cm4gZmFtcDsKfQoKCgpzdGF0aWMgX19pbmxpbmVfXyBkb3VibGUgZmZzYXR1cmF0 ZShkb3VibGUgZmFtcCkKewogICAgaWYgKGZhbXAgPiAoZG91YmxlKSAoMHg3ZmZmKSkKICAg ICAgICByZXR1cm4gKGRvdWJsZSkgKDB4N2ZmZik7CiAgICBpZiAoZmFtcCA8IChkb3VibGUp ICgtMS0weDdmZmYpKQogICAgICAgIHJldHVybiAoZG91YmxlKSAoLTEtMHg3ZmZmKTsKICAg IHJldHVybiBmYW1wOwp9CgoKc3RhdGljIF9faW5saW5lX18gaW50MTZfdCBzYXR1cmF0ZWRf YWRkMTYoaW50MTZfdCBhLCBpbnQxNl90IGIpCnsKCiAgICBfX2FzbV9fIF9fdm9sYXRpbGVf XygKICAgICAgICAiIGFkZHcgJTIsJTA7XG4iCiAgICAgICAgIiBqbm8gMGY7XG4iCiAgICAg ICAgIiBtb3Z3ICQweDdmZmYsJTA7XG4iCiAgICAgICAgIiBhZGN3ICQwLCUwO1xuIgogICAg ICAgICIwOiIKICAgICAgICA6ICI9ciIgKGEpCiAgICAgICAgOiAiMCIgKGEpLCAiaXIiIChi KQogICAgICAgIDogImNjIgogICAgKTsKICAgIHJldHVybiBhOwojIDI1OCAic3BhbmRzcC9z YXR1cmF0ZWQuaCIKfQoKCnN0YXRpYyBfX2lubGluZV9fIGludDMyX3Qgc2F0dXJhdGVkX2Fk ZDMyKGludDMyX3QgYSwgaW50MzJfdCBiKQp7CgogICAgX19hc21fXyBfX3ZvbGF0aWxlX18o CiAgICAgICAgIiBhZGRsICUyLCUwO1xuIgogICAgICAgICIgam5vIDBmO1xuIgogICAgICAg ICIgbW92bCAkMHg3ZmZmZmZmZiwlMDtcbiIKICAgICAgICAiIGFkY2wgJDAsJTA7XG4iCiAg ICAgICAgIjA6IgogICAgICAgIDogIj1yIiAoYSkKICAgICAgICA6ICIwIiAoYSksICJpciIg KGIpCiAgICAgICAgOiAiY2MiCiAgICApOwogICAgcmV0dXJuIGE7CiMgMjk1ICJzcGFuZHNw L3NhdHVyYXRlZC5oIgp9CgoKc3RhdGljIF9faW5saW5lX18gaW50MTZfdCBzYXR1cmF0ZWRf c3ViMTYoaW50MTZfdCBhLCBpbnQxNl90IGIpCnsKCiAgICBfX2FzbV9fIF9fdm9sYXRpbGVf XygKICAgICAgICAiIHN1YncgJTIsJTA7XG4iCiAgICAgICAgIiBqbm8gMGY7XG4iCiAgICAg ICAgIiBtb3Z3ICQweDgwMDAsJTA7XG4iCiAgICAgICAgIiBzYmJ3ICQwLCUwO1xuIgogICAg ICAgICIwOiIKICAgICAgICA6ICI9ciIgKGEpCiAgICAgICAgOiAiMCIgKGEpLCAiaXIiIChi KQogICAgICAgIDogImNjIgogICAgKTsKICAgIHJldHVybiBhOwojIDMyNCAic3BhbmRzcC9z YXR1cmF0ZWQuaCIKfQoKCnN0YXRpYyBfX2lubGluZV9fIGludDMyX3Qgc2F0dXJhdGVkX3N1 YjMyKGludDMyX3QgYSwgaW50MzJfdCBiKQp7CgogICAgX19hc21fXyBfX3ZvbGF0aWxlX18o CiAgICAgICAgIiBzdWJsICUyLCUwO1xuIgogICAgICAgICIgam5vIDBmO1xuIgogICAgICAg ICIgbW92bCAkMHg4MDAwMDAwMCwlMDtcbiIKICAgICAgICAiIHNiYmwgJDAsJTA7XG4iCiAg ICAgICAgIjA6IgogICAgICAgIDogIj1yIiAoYSkKICAgICAgICA6ICIwIiAoYSksICJpciIg KGIpCiAgICAgICAgOiAiY2MiCiAgICApOwogICAgcmV0dXJuIGE7CiMgMzYxICJzcGFuZHNw L3NhdHVyYXRlZC5oIgp9CgoKc3RhdGljIF9faW5saW5lX18gaW50MTZfdCBzYXR1cmF0ZWRf bXVsMTYoaW50MTZfdCBhLCBpbnQxNl90IGIpCnsKICAgIGlmIChhID09ICgtMS0weDdmZmYp ICYmIGIgPT0gKC0xLTB4N2ZmZikpCiAgICAgICAgcmV0dXJuICgweDdmZmYpOwoKICAgIHJl dHVybiAoaW50MTZfdCkgKCgoaW50MzJfdCkgYSooaW50MzJfdCkgYikgPj4gMTUpOwp9CgoK c3RhdGljIF9faW5saW5lX18gaW50MzJfdCBzYXR1cmF0ZWRfbXVsMTZfMzIoaW50MTZfdCBh LCBpbnQxNl90IGIpCnsKICAgIHJldHVybiAoKGludDMyX3QpIGEqKGludDMyX3QpIGIpIDw8 IDE7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQxNl90IHNhdHVyYXRlZF9hYnMxNihpbnQx Nl90IGEpCnsKICAgIHJldHVybiAoYSA9PSAoLTEtMHg3ZmZmKSkgPyAoMHg3ZmZmKSA6IChp bnQxNl90KSBhYnMoYSk7Cn0KIyA2MCAiYXdnbi5jIiAyCiMgMSAic3BhbmRzcC9hd2duLmgi IDEKIyA3MiAic3BhbmRzcC9hd2duLmgiCnR5cGVkZWYgc3RydWN0IGF3Z25fc3RhdGVfcyBh d2duX3N0YXRlX3Q7CgoKCgoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi KSkpIGF3Z25fc3RhdGVfdCAqIGF3Z25faW5pdF9kYm0wKGF3Z25fc3RhdGVfdCAqcywgaW50 IGlkdW0sIGZsb2F0IGxldmVsKTsKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1 bHQiKSkpIGF3Z25fc3RhdGVfdCAqIGF3Z25faW5pdF9kYm92KGF3Z25fc3RhdGVfdCAqcywg aW50IGlkdW0sIGZsb2F0IGxldmVsKTsKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl ZmF1bHQiKSkpIGludCBhd2duX3JlbGVhc2UoYXdnbl9zdGF0ZV90ICpzKTsKCl9fYXR0cmli dXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGludCBhd2duX2ZyZWUoYXdnbl9zdGF0 ZV90ICpzKTsKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGludDE2 X3QgYXdnbihhd2duX3N0YXRlX3QgKnMpOwojIDYxICJhd2duLmMiIDIKCiMgMSAic3BhbmRz cC9wcml2YXRlL2F3Z24uaCIgMQojIDMyICJzcGFuZHNwL3ByaXZhdGUvYXdnbi5oIgpzdHJ1 Y3QgYXdnbl9zdGF0ZV9zCnsKICAgIGRvdWJsZSBybXM7CiAgICBsb25nIGludCBpeDE7CiAg ICBsb25nIGludCBpeDI7CiAgICBsb25nIGludCBpeDM7CiAgICBkb3VibGUgcls5OF07CiAg ICBkb3VibGUgZ3NldDsKICAgIGludCBpc2V0Owp9OwojIDYzICJhd2duLmMiIDIKIyA3NyAi YXdnbi5jIgpzdGF0aWMgZG91YmxlIHJhbjEoYXdnbl9zdGF0ZV90ICpzKQp7CiAgICBkb3Vi bGUgdGVtcDsKICAgIGludCBqOwoKICAgIHMtPml4MSA9ICg3MTQxKnMtPml4MSArIDU0Nzcz KSUyNTkyMDA7CiAgICBzLT5peDIgPSAoODEyMSpzLT5peDIgKyAyODQxMSklMTM0NDU2Owog ICAgcy0+aXgzID0gKDQ1NjEqcy0+aXgzICsgNTEzNDkpJTI0MzAwMDsKICAgIGogPSAxICsg KCg5NypzLT5peDMpLzI0MzAwMCk7CiAgICBpZiAoaiA+IDk3IHx8IGogPCAxKQogICAgewoK ICAgICAgICByZXR1cm4gLTE7CiAgICB9CiAgICB0ZW1wID0gcy0+cltqXTsKICAgIHMtPnJb al0gPSAocy0+aXgxICsgcy0+aXgyKigxLjAvMTM0NDU2KSkqKDEuMC8yNTkyMDApOwogICAg cmV0dXJuIHRlbXA7Cn0KCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp KSBhd2duX3N0YXRlX3QgKiBhd2duX2luaXRfZGJvdihhd2duX3N0YXRlX3QgKnMsIGludCBp ZHVtLCBmbG9hdCBsZXZlbCkKewogICAgaW50IGo7CgogICAgaWYgKHMgPT0gKCh2b2lkKikw KSkKICAgIHsKICAgICAgICBpZiAoKHMgPSAoYXdnbl9zdGF0ZV90ICopIG1hbGxvYyhzaXpl b2YoKnMpKSkgPT0gKCh2b2lkKikwKSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCopMCk7 CiAgICB9CiAgICBpZiAoaWR1bSA8IDApCiAgICAgICAgaWR1bSA9IC1pZHVtOwoKICAgIHMt PnJtcyA9ICgoX190eXBlb2ZfXygqKCAwID8gKF9fdHlwZW9mX18oMCA/IChkb3VibGUgKikw IDogKHZvaWQgKikhKCghISEoKDE/MTooKDEwLjApKSkvMikgfHwgISEhKCgxPzE6KChsZXZl bC8yMC4wKSkpLzIpKSAmJiAoKCEhKCgxPzE6KCgoMTAuMCkpKygobGV2ZWwvMjAuMCkpKzEu MGYpKS8yKSAmJiAyKnNpemVvZigoKDEwLjApKSsoKGxldmVsLzIwLjApKSsxLjBmKSA9PSBz aXplb2YoKCgoMTAuMCkpKygobGV2ZWwvMjAuMCkpKzEuMGYpKyhfX2V4dGVuc2lvbl9fIDEu MGZpKSkpICYmIHNpemVvZigoKDEwLjApKSsoKGxldmVsLzIwLjApKSsxLjBmKSA9PSBzaXpl b2YoZmxvYXQpKSkpKTAgOiAwID8gKF9fdHlwZW9mX18oMCA/IChkb3VibGUgX0NvbXBsZXgg KikwIDogKHZvaWQgKikhKCghISEoKDE/MTooKDEwLjApKSkvMikgfHwgISEhKCgxPzE6KChs ZXZlbC8yMC4wKSkpLzIpKSAmJiAoKCEhKCgxPzE6KCgoMTAuMCkpKygobGV2ZWwvMjAuMCkp KSkvMikgJiYgc2l6ZW9mKCgoMTAuMCkpKygobGV2ZWwvMjAuMCkpKSA9PSBzaXplb2YoKCgo MTAuMCkpKygobGV2ZWwvMjAuMCkpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXpl b2YoKCgxMC4wKSkrKChsZXZlbC8yMC4wKSkpID09IHNpemVvZihmbG9hdCBfQ29tcGxleCkp KSkpMCA6IChfX3R5cGVvZl9fKDAgPyAoX190eXBlb2ZfXygoKDEwLjApKSsoKGxldmVsLzIw LjApKSkgKikwIDogKHZvaWQgKikoKCEhISgoMT8xOigoMTAuMCkpKS8yKSB8fCAhISEoKDE/ MTooKGxldmVsLzIwLjApKSkvMikpICYmICgoKCEhKCgxPzE6KCgoMTAuMCkpKygobGV2ZWwv MjAuMCkpKzEuMGYpKS8yKSAmJiAyKnNpemVvZigoKDEwLjApKSsoKGxldmVsLzIwLjApKSsx LjBmKSA9PSBzaXplb2YoKCgoMTAuMCkpKygobGV2ZWwvMjAuMCkpKzEuMGYpKyhfX2V4dGVu c2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigoKDEwLjApKSsoKGxldmVsLzIwLjApKSsxLjBm KSA9PSBzaXplb2YoZmxvYXQpKSB8fCAoKCEhKCgxPzE6KCgoMTAuMCkpKygobGV2ZWwvMjAu MCkpKSkvMikgJiYgc2l6ZW9mKCgoMTAuMCkpKygobGV2ZWwvMjAuMCkpKSA9PSBzaXplb2Yo KCgoMTAuMCkpKygobGV2ZWwvMjAuMCkpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBz aXplb2YoKCgxMC4wKSkrKChsZXZlbC8yMC4wKSkpID09IHNpemVvZihmbG9hdCBfQ29tcGxl eCkpKSkpKTAgKSkpKCAoKCEhKCgxPzE6KCgoMTAuMCkpKygobGV2ZWwvMjAuMCkpKSkvMikg JiYgc2l6ZW9mKCgoMTAuMCkpKygobGV2ZWwvMjAuMCkpKSA9PSBzaXplb2YoKCgoMTAuMCkp KygobGV2ZWwvMjAuMCkpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKCgx MC4wKSkrKChsZXZlbC8yMC4wKSkpID09IHNpemVvZihmbG9hdCBfQ29tcGxleCkpICYmICEh KCgxPzE6KCgxMC4wKSkpLzIpICYmICEhKCgxPzE6KChsZXZlbC8yMC4wKSkpLzIpID8gY3Bv d2YoKDEwLjApLCAobGV2ZWwvMjAuMCkpIDogKCghISgoMT8xOigoKDEwLjApKSsoKGxldmVs LzIwLjApKSkpLzIpICYmIHNpemVvZigoKDEwLjApKSsoKGxldmVsLzIwLjApKSkgPT0gc2l6 ZW9mKCgoKDEwLjApKSsoKGxldmVsLzIwLjApKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkg JiYgc2l6ZW9mKCgoMTAuMCkpKygobGV2ZWwvMjAuMCkpKSA9PSBzaXplb2YoZmxvYXQgX0Nv bXBsZXgpKSA/IGNwb3coKDEwLjApLCAobGV2ZWwvMjAuMCkpIDogKCghISgoMT8xOigoKDEw LjApKSsoKGxldmVsLzIwLjApKSkpLzIpICYmIHNpemVvZigoKDEwLjApKSsoKGxldmVsLzIw LjApKSkgPT0gc2l6ZW9mKCgoKDEwLjApKSsoKGxldmVsLzIwLjApKSkrKF9fZXh0ZW5zaW9u X18gMS4wZmkpKSkgJiYgc2l6ZW9mKCgoMTAuMCkpKygobGV2ZWwvMjAuMCkpKSA9PSBzaXpl b2YoZG91YmxlIF9Db21wbGV4KSkgPyBjcG93KCgxMC4wKSwgKGxldmVsLzIwLjApKSA6ICgo ISEoKDE/MTooKCgxMC4wKSkrKChsZXZlbC8yMC4wKSkpKS8yKSAmJiBzaXplb2YoKCgxMC4w KSkrKChsZXZlbC8yMC4wKSkpID09IHNpemVvZigoKCgxMC4wKSkrKChsZXZlbC8yMC4wKSkp KyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigoKDEwLjApKSsoKGxldmVsLzIw LjApKSkgPT0gc2l6ZW9mKGxvbmcgZG91YmxlIF9Db21wbGV4KSAmJiBzaXplb2YobG9uZyBk b3VibGUpICE9IHNpemVvZihkb3VibGUpKSA/IGNwb3dsKCgxMC4wKSwgKGxldmVsLzIwLjAp KSA6ICgoISEoKDE/MTooKDEwLjApKSkvMikgJiYgMipzaXplb2YoKDEwLjApKSA9PSBzaXpl b2YoKCgxMC4wKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKCgxMC4wKSkg PT0gc2l6ZW9mKGZsb2F0KSkgJiYgKCghISgoMT8xOigobGV2ZWwvMjAuMCkpKS8yKSAmJiAy KnNpemVvZigobGV2ZWwvMjAuMCkpID09IHNpemVvZigoKGxldmVsLzIwLjApKSsoX19leHRl bnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKGxldmVsLzIwLjApKSA9PSBzaXplb2YoZmxv YXQpKSA/IHBvd2YoKDEwLjApLCAobGV2ZWwvMjAuMCkpIDogKCghISgoMT8xOigoKDEwLjAp KSsoKGxldmVsLzIwLjApKSkpLzIpICYmIDIqc2l6ZW9mKCgoMTAuMCkpKygobGV2ZWwvMjAu MCkpKSA9PSBzaXplb2YoKCgoMTAuMCkpKygobGV2ZWwvMjAuMCkpKSsoX19leHRlbnNpb25f XyAxLjBmaSkpKSAmJiBzaXplb2YoKCgxMC4wKSkrKChsZXZlbC8yMC4wKSkpID09IHNpemVv Zihsb25nIGRvdWJsZSkgJiYgc2l6ZW9mKGxvbmcgZG91YmxlKSAhPSBzaXplb2YoZG91Ymxl KSkgPyBwb3dsKCgxMC4wKSwgKGxldmVsLzIwLjApKSA6IHBvdygoMTAuMCksIChsZXZlbC8y MC4wKSkgKSkqMzI3NjguMDsKCiAgICBzLT5peDEgPSAoNTQ3NzMgKyBpZHVtKSUyNTkyMDA7 CiAgICBzLT5peDEgPSAoNzE0MSpzLT5peDEgKyA1NDc3MyklMjU5MjAwOwogICAgcy0+aXgy ID0gcy0+aXgxJTEzNDQ1NjsKICAgIHMtPml4MSA9ICg3MTQxKnMtPml4MSArIDU0NzczKSUy NTkyMDA7CiAgICBzLT5peDMgPSBzLT5peDElMjQzMDAwOwogICAgcy0+clswXSA9IDAuMDsK ICAgIGZvciAoaiA9IDE7IGogPD0gOTc7IGorKykKICAgIHsKICAgICAgICBzLT5peDEgPSAo NzE0MSpzLT5peDEgKyA1NDc3MyklMjU5MjAwOwogICAgICAgIHMtPml4MiA9ICg4MTIxKnMt Pml4MiArIDI4NDExKSUxMzQ0NTY7CiAgICAgICAgcy0+cltqXSA9IChzLT5peDEgKyBzLT5p eDIqKDEuMC8xMzQ0NTYpKSooMS4wLzI1OTIwMCk7CiAgICB9CiAgICBzLT5nc2V0ID0gMC4w OwogICAgcy0+aXNldCA9IDA7CiAgICByZXR1cm4gczsKfQoKCl9fYXR0cmlidXRlX18oKHZp c2liaWxpdHkoImRlZmF1bHQiKSkpIGF3Z25fc3RhdGVfdCAqIGF3Z25faW5pdF9kYm0wKGF3 Z25fc3RhdGVfdCAqcywgaW50IGlkdW0sIGZsb2F0IGxldmVsKQp7CiAgICByZXR1cm4gYXdn bl9pbml0X2Rib3YocywgaWR1bSwgbGV2ZWwgLSAoMy4xNGYgKyAzLjAyZikpOwp9CgoKX19h dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW50IGF3Z25fcmVsZWFzZShh d2duX3N0YXRlX3QgKnMpCnsKICAgIHJldHVybiAwOwp9CgoKX19hdHRyaWJ1dGVfXygodmlz aWJpbGl0eSgiZGVmYXVsdCIpKSkgaW50IGF3Z25fZnJlZShhd2duX3N0YXRlX3QgKnMpCnsK ICAgIGZyZWUocyk7CiAgICByZXR1cm4gMDsKfQoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxp dHkoImRlZmF1bHQiKSkpIGludDE2X3QgYXdnbihhd2duX3N0YXRlX3QgKnMpCnsKICAgIGRv dWJsZSBmYWM7CiAgICBkb3VibGUgcjsKICAgIGRvdWJsZSB2MTsKICAgIGRvdWJsZSB2MjsK ICAgIGRvdWJsZSBhbXA7CgogICAgaWYgKHMtPmlzZXQgPT0gMCkKICAgIHsKICAgICAgICBk bwogICAgICAgIHsKICAgICAgICAgICAgdjEgPSAyLjAqcmFuMShzKSAtIDEuMDsKICAgICAg ICAgICAgdjIgPSAyLjAqcmFuMShzKSAtIDEuMDsKICAgICAgICAgICAgciA9IHYxKnYxICsg djIqdjI7CiAgICAgICAgfQogICAgICAgIHdoaWxlIChyID49IDEuMCk7CiAgICAgICAgZmFj ID0gKChfX3R5cGVvZl9fKCooIDAgPyAoX190eXBlb2ZfXygwID8gKGRvdWJsZSAqKTAgOiAo dm9pZCAqKSEhKCgxPzE6KCgtMi4wKigoX190eXBlb2ZfXygqKCAwID8gKF9fdHlwZW9mX18o MCA/IChkb3VibGUgKikwIDogKHZvaWQgKikhISgoMT8xOigocikpKS8yKSkpMCA6IChfX3R5 cGVvZl9fKDAgPyAoX190eXBlb2ZfXygocikpICopMCA6ICh2b2lkICopISEhKCgxPzE6KChy KSkpLzIpKSkwICkpKSggKCghISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBz aXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0g c2l6ZW9mKGZsb2F0IF9Db21wbGV4KSkgPyBjbG9nZiAoKHIpKSA6ICgoISEoKDE/MTooKHIp KSkvMikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEu MGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihkb3VibGUgX0NvbXBsZXgpKSA/IGNs b2cgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVv ZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXpl b2YobG9uZyBkb3VibGUgX0NvbXBsZXgpICYmIHNpemVvZihsb25nIGRvdWJsZSkgIT0gc2l6 ZW9mKGRvdWJsZSkpID8gY2xvZ2wgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIpICYmIDIq c2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYm IHNpemVvZigocikpID09IHNpemVvZihmbG9hdCkpID8gbG9nZiAoKHIpKSA6ICgoISEoKDE/ MTooKHIpKSkvMikgJiYgMipzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5z aW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGxvbmcgZG91YmxlKSAm JiBzaXplb2YobG9uZyBkb3VibGUpICE9IHNpemVvZihkb3VibGUpKSA/IGxvZ2wgKChyKSkg OiBsb2coKHIpKSApKS9yKSkpLzIpKSkwIDogKF9fdHlwZW9mX18oMCA/IChfX3R5cGVvZl9f KCgtMi4wKigoX190eXBlb2ZfXygqKCAwID8gKF9fdHlwZW9mX18oMCA/IChkb3VibGUgKikw IDogKHZvaWQgKikhISgoMT8xOigocikpKS8yKSkpMCA6IChfX3R5cGVvZl9fKDAgPyAoX190 eXBlb2ZfXygocikpICopMCA6ICh2b2lkICopISEhKCgxPzE6KChyKSkpLzIpKSkwICkpKSgg KCghISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9f ZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGZsb2F0IF9D b21wbGV4KSkgPyBjbG9nZiAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9m KChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVv ZigocikpID09IHNpemVvZihkb3VibGUgX0NvbXBsZXgpKSA/IGNsb2cgKChyKSkgOiAoKCEh KCgxPzE6KChyKSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRl bnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YobG9uZyBkb3VibGUg X0NvbXBsZXgpICYmIHNpemVvZihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8g Y2xvZ2wgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIpICYmIDIqc2l6ZW9mKChyKSkgPT0g c2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09 IHNpemVvZihmbG9hdCkpID8gbG9nZiAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYg MipzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkg JiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGxvbmcgZG91YmxlKSAmJiBzaXplb2YobG9uZyBk b3VibGUpICE9IHNpemVvZihkb3VibGUpKSA/IGxvZ2wgKChyKSkgOiBsb2coKHIpKSApKS9y KSkgKikwIDogKHZvaWQgKikhISEoKDE/MTooKC0yLjAqKChfX3R5cGVvZl9fKCooIDAgPyAo X190eXBlb2ZfXygwID8gKGRvdWJsZSAqKTAgOiAodm9pZCAqKSEhKCgxPzE6KChyKSkpLzIp KSkwIDogKF9fdHlwZW9mX18oMCA/IChfX3R5cGVvZl9fKChyKSkgKikwIDogKHZvaWQgKikh ISEoKDE/MTooKHIpKSkvMikpKTAgKSkpKCAoKCEhKCgxPzE6KChyKSkpLzIpICYmIHNpemVv ZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXpl b2YoKHIpKSA9PSBzaXplb2YoZmxvYXQgX0NvbXBsZXgpKSA/IGNsb2dmICgocikpIDogKCgh ISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0 ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGRvdWJsZSBfQ29t cGxleCkpID8gY2xvZyAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChy KSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigo cikpID09IHNpemVvZihsb25nIGRvdWJsZSBfQ29tcGxleCkgJiYgc2l6ZW9mKGxvbmcgZG91 YmxlKSAhPSBzaXplb2YoZG91YmxlKSkgPyBjbG9nbCAoKHIpKSA6ICgoISEoKDE/MTooKHIp KSkvMikgJiYgMipzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18g MS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGZsb2F0KSkgPyBsb2dmICgocikp IDogKCghISgoMT8xOigocikpKS8yKSAmJiAyKnNpemVvZigocikpID09IHNpemVvZigoKHIp KSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YobG9u ZyBkb3VibGUpICYmIHNpemVvZihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8g bG9nbCAoKHIpKSA6IGxvZygocikpICkpL3IpKSkvMikpKTAgKSkpKCAoKCEhKCgxPzE6KCgt Mi4wKigoX190eXBlb2ZfXygqKCAwID8gKF9fdHlwZW9mX18oMCA/IChkb3VibGUgKikwIDog KHZvaWQgKikhISgoMT8xOigocikpKS8yKSkpMCA6IChfX3R5cGVvZl9fKDAgPyAoX190eXBl b2ZfXygocikpICopMCA6ICh2b2lkICopISEhKCgxPzE6KChyKSkpLzIpKSkwICkpKSggKCgh ISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0 ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGZsb2F0IF9Db21w bGV4KSkgPyBjbG9nZiAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChy KSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigo cikpID09IHNpemVvZihkb3VibGUgX0NvbXBsZXgpKSA/IGNsb2cgKChyKSkgOiAoKCEhKCgx PzE6KChyKSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNp b25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YobG9uZyBkb3VibGUgX0Nv bXBsZXgpICYmIHNpemVvZihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8gY2xv Z2wgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIpICYmIDIqc2l6ZW9mKChyKSkgPT0gc2l6 ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNp emVvZihmbG9hdCkpID8gbG9nZiAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgMipz aXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYg c2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGxvbmcgZG91YmxlKSAmJiBzaXplb2YobG9uZyBkb3Vi bGUpICE9IHNpemVvZihkb3VibGUpKSA/IGxvZ2wgKChyKSkgOiBsb2coKHIpKSApKS9yKSkp LzIpICYmIHNpemVvZigoLTIuMCooKF9fdHlwZW9mX18oKiggMCA/IChfX3R5cGVvZl9fKDAg PyAoZG91YmxlICopMCA6ICh2b2lkICopISEoKDE/MTooKHIpKSkvMikpKTAgOiAoX190eXBl b2ZfXygwID8gKF9fdHlwZW9mX18oKHIpKSAqKTAgOiAodm9pZCAqKSEhISgoMT8xOigocikp KS8yKSkpMCApKSkoICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6 ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNp emVvZihmbG9hdCBfQ29tcGxleCkpID8gY2xvZ2YgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkp LzIpICYmIHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBm aSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoZG91YmxlIF9Db21wbGV4KSkgPyBjbG9n ICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2Yo KChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9m KGxvbmcgZG91YmxlIF9Db21wbGV4KSAmJiBzaXplb2YobG9uZyBkb3VibGUpICE9IHNpemVv Zihkb3VibGUpKSA/IGNsb2dsICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiAyKnNp emVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBz aXplb2YoKHIpKSA9PSBzaXplb2YoZmxvYXQpKSA/IGxvZ2YgKChyKSkgOiAoKCEhKCgxPzE6 KChyKSkpLzIpICYmIDIqc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lv bl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihsb25nIGRvdWJsZSkgJiYg c2l6ZW9mKGxvbmcgZG91YmxlKSAhPSBzaXplb2YoZG91YmxlKSkgPyBsb2dsICgocikpIDog bG9nKChyKSkgKSkvcikpID09IHNpemVvZigoKC0yLjAqKChfX3R5cGVvZl9fKCooIDAgPyAo X190eXBlb2ZfXygwID8gKGRvdWJsZSAqKTAgOiAodm9pZCAqKSEhKCgxPzE6KChyKSkpLzIp KSkwIDogKF9fdHlwZW9mX18oMCA/IChfX3R5cGVvZl9fKChyKSkgKikwIDogKHZvaWQgKikh ISEoKDE/MTooKHIpKSkvMikpKTAgKSkpKCAoKCEhKCgxPzE6KChyKSkpLzIpICYmIHNpemVv ZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXpl b2YoKHIpKSA9PSBzaXplb2YoZmxvYXQgX0NvbXBsZXgpKSA/IGNsb2dmICgocikpIDogKCgh ISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0 ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGRvdWJsZSBfQ29t cGxleCkpID8gY2xvZyAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChy KSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigo cikpID09IHNpemVvZihsb25nIGRvdWJsZSBfQ29tcGxleCkgJiYgc2l6ZW9mKGxvbmcgZG91 YmxlKSAhPSBzaXplb2YoZG91YmxlKSkgPyBjbG9nbCAoKHIpKSA6ICgoISEoKDE/MTooKHIp KSkvMikgJiYgMipzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18g MS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGZsb2F0KSkgPyBsb2dmICgocikp IDogKCghISgoMT8xOigocikpKS8yKSAmJiAyKnNpemVvZigocikpID09IHNpemVvZigoKHIp KSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YobG9u ZyBkb3VibGUpICYmIHNpemVvZihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8g bG9nbCAoKHIpKSA6IGxvZygocikpICkpL3IpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAm JiBzaXplb2YoKC0yLjAqKChfX3R5cGVvZl9fKCooIDAgPyAoX190eXBlb2ZfXygwID8gKGRv dWJsZSAqKTAgOiAodm9pZCAqKSEhKCgxPzE6KChyKSkpLzIpKSkwIDogKF9fdHlwZW9mX18o MCA/IChfX3R5cGVvZl9fKChyKSkgKikwIDogKHZvaWQgKikhISEoKDE/MTooKHIpKSkvMikp KTAgKSkpKCAoKCEhKCgxPzE6KChyKSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVvZigo KHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2Yo ZmxvYXQgX0NvbXBsZXgpKSA/IGNsb2dmICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAm JiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkg JiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGRvdWJsZSBfQ29tcGxleCkpID8gY2xvZyAoKHIp KSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikp KyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihsb25n IGRvdWJsZSBfQ29tcGxleCkgJiYgc2l6ZW9mKGxvbmcgZG91YmxlKSAhPSBzaXplb2YoZG91 YmxlKSkgPyBjbG9nbCAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgMipzaXplb2Yo KHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9m KChyKSkgPT0gc2l6ZW9mKGZsb2F0KSkgPyBsb2dmICgocikpIDogKCghISgoMT8xOigocikp KS8yKSAmJiAyKnNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAx LjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YobG9uZyBkb3VibGUpICYmIHNpemVv Zihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8gbG9nbCAoKHIpKSA6IGxvZygo cikpICkpL3IpKSA9PSBzaXplb2YoZmxvYXQgX0NvbXBsZXgpKSA/IGNzcXJ0ZiAoKC0yLjAq KChfX3R5cGVvZl9fKCooIDAgPyAoX190eXBlb2ZfXygwID8gKGRvdWJsZSAqKTAgOiAodm9p ZCAqKSEhKCgxPzE6KChyKSkpLzIpKSkwIDogKF9fdHlwZW9mX18oMCA/IChfX3R5cGVvZl9f KChyKSkgKikwIDogKHZvaWQgKikhISEoKDE/MTooKHIpKSkvMikpKTAgKSkpKCAoKCEhKCgx PzE6KChyKSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNp b25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoZmxvYXQgX0NvbXBsZXgp KSA/IGNsb2dmICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9 PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkg PT0gc2l6ZW9mKGRvdWJsZSBfQ29tcGxleCkpID8gY2xvZyAoKHIpKSA6ICgoISEoKDE/MToo KHIpKSkvMikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9f IDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihsb25nIGRvdWJsZSBfQ29tcGxl eCkgJiYgc2l6ZW9mKGxvbmcgZG91YmxlKSAhPSBzaXplb2YoZG91YmxlKSkgPyBjbG9nbCAo KHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgMipzaXplb2YoKHIpKSA9PSBzaXplb2Yo KChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9m KGZsb2F0KSkgPyBsb2dmICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiAyKnNpemVv ZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXpl b2YoKHIpKSA9PSBzaXplb2YobG9uZyBkb3VibGUpICYmIHNpemVvZihsb25nIGRvdWJsZSkg IT0gc2l6ZW9mKGRvdWJsZSkpID8gbG9nbCAoKHIpKSA6IGxvZygocikpICkpL3IpKSA6ICgo ISEoKDE/MTooKC0yLjAqKChfX3R5cGVvZl9fKCooIDAgPyAoX190eXBlb2ZfXygwID8gKGRv dWJsZSAqKTAgOiAodm9pZCAqKSEhKCgxPzE6KChyKSkpLzIpKSkwIDogKF9fdHlwZW9mX18o MCA/IChfX3R5cGVvZl9fKChyKSkgKikwIDogKHZvaWQgKikhISEoKDE/MTooKHIpKSkvMikp KTAgKSkpKCAoKCEhKCgxPzE6KChyKSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVvZigo KHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2Yo ZmxvYXQgX0NvbXBsZXgpKSA/IGNsb2dmICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAm JiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkg JiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGRvdWJsZSBfQ29tcGxleCkpID8gY2xvZyAoKHIp KSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikp KyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihsb25n IGRvdWJsZSBfQ29tcGxleCkgJiYgc2l6ZW9mKGxvbmcgZG91YmxlKSAhPSBzaXplb2YoZG91 YmxlKSkgPyBjbG9nbCAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgMipzaXplb2Yo KHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9m KChyKSkgPT0gc2l6ZW9mKGZsb2F0KSkgPyBsb2dmICgocikpIDogKCghISgoMT8xOigocikp KS8yKSAmJiAyKnNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAx LjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YobG9uZyBkb3VibGUpICYmIHNpemVv Zihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8gbG9nbCAoKHIpKSA6IGxvZygo cikpICkpL3IpKSkvMikgJiYgc2l6ZW9mKCgtMi4wKigoX190eXBlb2ZfXygqKCAwID8gKF9f dHlwZW9mX18oMCA/IChkb3VibGUgKikwIDogKHZvaWQgKikhISgoMT8xOigocikpKS8yKSkp MCA6IChfX3R5cGVvZl9fKDAgPyAoX190eXBlb2ZfXygocikpICopMCA6ICh2b2lkICopISEh KCgxPzE6KChyKSkpLzIpKSkwICkpKSggKCghISgoMT8xOigocikpKS8yKSAmJiBzaXplb2Yo KHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9m KChyKSkgPT0gc2l6ZW9mKGZsb2F0IF9Db21wbGV4KSkgPyBjbG9nZiAoKHIpKSA6ICgoISEo KDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVu c2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihkb3VibGUgX0NvbXBs ZXgpKSA/IGNsb2cgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIpICYmIHNpemVvZigocikp ID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIp KSA9PSBzaXplb2YobG9uZyBkb3VibGUgX0NvbXBsZXgpICYmIHNpemVvZihsb25nIGRvdWJs ZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8gY2xvZ2wgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkp LzIpICYmIDIqc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEu MGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihmbG9hdCkpID8gbG9nZiAoKHIpKSA6 ICgoISEoKDE/MTooKHIpKSkvMikgJiYgMipzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkr KF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGxvbmcg ZG91YmxlKSAmJiBzaXplb2YobG9uZyBkb3VibGUpICE9IHNpemVvZihkb3VibGUpKSA/IGxv Z2wgKChyKSkgOiBsb2coKHIpKSApKS9yKSkgPT0gc2l6ZW9mKCgoLTIuMCooKF9fdHlwZW9m X18oKiggMCA/IChfX3R5cGVvZl9fKDAgPyAoZG91YmxlICopMCA6ICh2b2lkICopISEoKDE/ MTooKHIpKSkvMikpKTAgOiAoX190eXBlb2ZfXygwID8gKF9fdHlwZW9mX18oKHIpKSAqKTAg OiAodm9pZCAqKSEhISgoMT8xOigocikpKS8yKSkpMCApKSkoICgoISEoKDE/MTooKHIpKSkv MikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZp KSkpICYmIHNpemVvZigocikpID09IHNpemVvZihmbG9hdCBfQ29tcGxleCkpID8gY2xvZ2Yg KChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVvZigo KHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2Yo ZG91YmxlIF9Db21wbGV4KSkgPyBjbG9nICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAm JiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkg JiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGxvbmcgZG91YmxlIF9Db21wbGV4KSAmJiBzaXpl b2YobG9uZyBkb3VibGUpICE9IHNpemVvZihkb3VibGUpKSA/IGNsb2dsICgocikpIDogKCgh ISgoMT8xOigocikpKS8yKSAmJiAyKnNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19l eHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoZmxvYXQpKSA/ IGxvZ2YgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIpICYmIDIqc2l6ZW9mKChyKSkgPT0g c2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09 IHNpemVvZihsb25nIGRvdWJsZSkgJiYgc2l6ZW9mKGxvbmcgZG91YmxlKSAhPSBzaXplb2Yo ZG91YmxlKSkgPyBsb2dsICgocikpIDogbG9nKChyKSkgKSkvcikpKyhfX2V4dGVuc2lvbl9f IDEuMGZpKSkpICYmIHNpemVvZigoLTIuMCooKF9fdHlwZW9mX18oKiggMCA/IChfX3R5cGVv Zl9fKDAgPyAoZG91YmxlICopMCA6ICh2b2lkICopISEoKDE/MTooKHIpKSkvMikpKTAgOiAo X190eXBlb2ZfXygwID8gKF9fdHlwZW9mX18oKHIpKSAqKTAgOiAodm9pZCAqKSEhISgoMT8x OigocikpKS8yKSkpMCApKSkoICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkg PT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikp ID09IHNpemVvZihmbG9hdCBfQ29tcGxleCkpID8gY2xvZ2YgKChyKSkgOiAoKCEhKCgxPzE6 KChyKSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25f XyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoZG91YmxlIF9Db21wbGV4KSkg PyBjbG9nICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBz aXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0g c2l6ZW9mKGxvbmcgZG91YmxlIF9Db21wbGV4KSAmJiBzaXplb2YobG9uZyBkb3VibGUpICE9 IHNpemVvZihkb3VibGUpKSA/IGNsb2dsICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAm JiAyKnNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkp KSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoZmxvYXQpKSA/IGxvZ2YgKChyKSkgOiAoKCEh KCgxPzE6KChyKSkpLzIpICYmIDIqc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4 dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihsb25nIGRvdWJs ZSkgJiYgc2l6ZW9mKGxvbmcgZG91YmxlKSAhPSBzaXplb2YoZG91YmxlKSkgPyBsb2dsICgo cikpIDogbG9nKChyKSkgKSkvcikpID09IHNpemVvZihkb3VibGUgX0NvbXBsZXgpKSA/IGNz cXJ0ICgoLTIuMCooKF9fdHlwZW9mX18oKiggMCA/IChfX3R5cGVvZl9fKDAgPyAoZG91Ymxl ICopMCA6ICh2b2lkICopISEoKDE/MTooKHIpKSkvMikpKTAgOiAoX190eXBlb2ZfXygwID8g KF9fdHlwZW9mX18oKHIpKSAqKTAgOiAodm9pZCAqKSEhISgoMT8xOigocikpKS8yKSkpMCAp KSkoICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikp KyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihmbG9h dCBfQ29tcGxleCkpID8gY2xvZ2YgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIpICYmIHNp emVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBz aXplb2YoKHIpKSA9PSBzaXplb2YoZG91YmxlIF9Db21wbGV4KSkgPyBjbG9nICgocikpIDog KCghISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9f ZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGxvbmcgZG91 YmxlIF9Db21wbGV4KSAmJiBzaXplb2YobG9uZyBkb3VibGUpICE9IHNpemVvZihkb3VibGUp KSA/IGNsb2dsICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiAyKnNpemVvZigocikp ID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIp KSA9PSBzaXplb2YoZmxvYXQpKSA/IGxvZ2YgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIp ICYmIDIqc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZp KSkpICYmIHNpemVvZigocikpID09IHNpemVvZihsb25nIGRvdWJsZSkgJiYgc2l6ZW9mKGxv bmcgZG91YmxlKSAhPSBzaXplb2YoZG91YmxlKSkgPyBsb2dsICgocikpIDogbG9nKChyKSkg KSkvcikpIDogKCghISgoMT8xOigoLTIuMCooKF9fdHlwZW9mX18oKiggMCA/IChfX3R5cGVv Zl9fKDAgPyAoZG91YmxlICopMCA6ICh2b2lkICopISEoKDE/MTooKHIpKSkvMikpKTAgOiAo X190eXBlb2ZfXygwID8gKF9fdHlwZW9mX18oKHIpKSAqKTAgOiAodm9pZCAqKSEhISgoMT8x OigocikpKS8yKSkpMCApKSkoICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkg PT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikp ID09IHNpemVvZihmbG9hdCBfQ29tcGxleCkpID8gY2xvZ2YgKChyKSkgOiAoKCEhKCgxPzE6 KChyKSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25f XyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoZG91YmxlIF9Db21wbGV4KSkg PyBjbG9nICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBz aXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0g c2l6ZW9mKGxvbmcgZG91YmxlIF9Db21wbGV4KSAmJiBzaXplb2YobG9uZyBkb3VibGUpICE9 IHNpemVvZihkb3VibGUpKSA/IGNsb2dsICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAm JiAyKnNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkp KSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoZmxvYXQpKSA/IGxvZ2YgKChyKSkgOiAoKCEh KCgxPzE6KChyKSkpLzIpICYmIDIqc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4 dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihsb25nIGRvdWJs ZSkgJiYgc2l6ZW9mKGxvbmcgZG91YmxlKSAhPSBzaXplb2YoZG91YmxlKSkgPyBsb2dsICgo cikpIDogbG9nKChyKSkgKSkvcikpKS8yKSAmJiBzaXplb2YoKC0yLjAqKChfX3R5cGVvZl9f KCooIDAgPyAoX190eXBlb2ZfXygwID8gKGRvdWJsZSAqKTAgOiAodm9pZCAqKSEhKCgxPzE6 KChyKSkpLzIpKSkwIDogKF9fdHlwZW9mX18oMCA/IChfX3R5cGVvZl9fKChyKSkgKikwIDog KHZvaWQgKikhISEoKDE/MTooKHIpKSkvMikpKTAgKSkpKCAoKCEhKCgxPzE6KChyKSkpLzIp ICYmIHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkp KSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoZmxvYXQgX0NvbXBsZXgpKSA/IGNsb2dmICgo cikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChy KSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGRv dWJsZSBfQ29tcGxleCkpID8gY2xvZyAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYg c2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYm IHNpemVvZigocikpID09IHNpemVvZihsb25nIGRvdWJsZSBfQ29tcGxleCkgJiYgc2l6ZW9m KGxvbmcgZG91YmxlKSAhPSBzaXplb2YoZG91YmxlKSkgPyBjbG9nbCAoKHIpKSA6ICgoISEo KDE/MTooKHIpKSkvMikgJiYgMipzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0 ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGZsb2F0KSkgPyBs b2dmICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiAyKnNpemVvZigocikpID09IHNp emVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBz aXplb2YobG9uZyBkb3VibGUpICYmIHNpemVvZihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRv dWJsZSkpID8gbG9nbCAoKHIpKSA6IGxvZygocikpICkpL3IpKSA9PSBzaXplb2YoKCgtMi4w KigoX190eXBlb2ZfXygqKCAwID8gKF9fdHlwZW9mX18oMCA/IChkb3VibGUgKikwIDogKHZv aWQgKikhISgoMT8xOigocikpKS8yKSkpMCA6IChfX3R5cGVvZl9fKDAgPyAoX190eXBlb2Zf XygocikpICopMCA6ICh2b2lkICopISEhKCgxPzE6KChyKSkpLzIpKSkwICkpKSggKCghISgo MT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5z aW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGZsb2F0IF9Db21wbGV4 KSkgPyBjbG9nZiAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkg PT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikp ID09IHNpemVvZihkb3VibGUgX0NvbXBsZXgpKSA/IGNsb2cgKChyKSkgOiAoKCEhKCgxPzE6 KChyKSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25f XyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YobG9uZyBkb3VibGUgX0NvbXBs ZXgpICYmIHNpemVvZihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8gY2xvZ2wg KChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIpICYmIDIqc2l6ZW9mKChyKSkgPT0gc2l6ZW9m KCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVv ZihmbG9hdCkpID8gbG9nZiAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgMipzaXpl b2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6 ZW9mKChyKSkgPT0gc2l6ZW9mKGxvbmcgZG91YmxlKSAmJiBzaXplb2YobG9uZyBkb3VibGUp ICE9IHNpemVvZihkb3VibGUpKSA/IGxvZ2wgKChyKSkgOiBsb2coKHIpKSApKS9yKSkrKF9f ZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKCgtMi4wKigoX190eXBlb2ZfXygqKCAw ID8gKF9fdHlwZW9mX18oMCA/IChkb3VibGUgKikwIDogKHZvaWQgKikhISgoMT8xOigocikp KS8yKSkpMCA6IChfX3R5cGVvZl9fKDAgPyAoX190eXBlb2ZfXygocikpICopMCA6ICh2b2lk ICopISEhKCgxPzE6KChyKSkpLzIpKSkwICkpKSggKCghISgoMT8xOigocikpKS8yKSAmJiBz aXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYg c2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGZsb2F0IF9Db21wbGV4KSkgPyBjbG9nZiAoKHIpKSA6 ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhf X2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihkb3VibGUg X0NvbXBsZXgpKSA/IGNsb2cgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIpICYmIHNpemVv ZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXpl b2YoKHIpKSA9PSBzaXplb2YobG9uZyBkb3VibGUgX0NvbXBsZXgpICYmIHNpemVvZihsb25n IGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8gY2xvZ2wgKChyKSkgOiAoKCEhKCgxPzE6 KChyKSkpLzIpICYmIDIqc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lv bl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihmbG9hdCkpID8gbG9nZiAo KHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgMipzaXplb2YoKHIpKSA9PSBzaXplb2Yo KChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9m KGxvbmcgZG91YmxlKSAmJiBzaXplb2YobG9uZyBkb3VibGUpICE9IHNpemVvZihkb3VibGUp KSA/IGxvZ2wgKChyKSkgOiBsb2coKHIpKSApKS9yKSkgPT0gc2l6ZW9mKGxvbmcgZG91Ymxl IF9Db21wbGV4KSAmJiBzaXplb2YobG9uZyBkb3VibGUpICE9IHNpemVvZihkb3VibGUpKSA/ IGNzcXJ0bCAoKC0yLjAqKChfX3R5cGVvZl9fKCooIDAgPyAoX190eXBlb2ZfXygwID8gKGRv dWJsZSAqKTAgOiAodm9pZCAqKSEhKCgxPzE6KChyKSkpLzIpKSkwIDogKF9fdHlwZW9mX18o MCA/IChfX3R5cGVvZl9fKChyKSkgKikwIDogKHZvaWQgKikhISEoKDE/MTooKHIpKSkvMikp KTAgKSkpKCAoKCEhKCgxPzE6KChyKSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVvZigo KHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2Yo ZmxvYXQgX0NvbXBsZXgpKSA/IGNsb2dmICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAm JiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkg JiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGRvdWJsZSBfQ29tcGxleCkpID8gY2xvZyAoKHIp KSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikp KyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihsb25n IGRvdWJsZSBfQ29tcGxleCkgJiYgc2l6ZW9mKGxvbmcgZG91YmxlKSAhPSBzaXplb2YoZG91 YmxlKSkgPyBjbG9nbCAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgMipzaXplb2Yo KHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9m KChyKSkgPT0gc2l6ZW9mKGZsb2F0KSkgPyBsb2dmICgocikpIDogKCghISgoMT8xOigocikp KS8yKSAmJiAyKnNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAx LjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YobG9uZyBkb3VibGUpICYmIHNpemVv Zihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8gbG9nbCAoKHIpKSA6IGxvZygo cikpICkpL3IpKSA6ICgoISEoKDE/MTooKC0yLjAqKChfX3R5cGVvZl9fKCooIDAgPyAoX190 eXBlb2ZfXygwID8gKGRvdWJsZSAqKTAgOiAodm9pZCAqKSEhKCgxPzE6KChyKSkpLzIpKSkw IDogKF9fdHlwZW9mX18oMCA/IChfX3R5cGVvZl9fKChyKSkgKikwIDogKHZvaWQgKikhISEo KDE/MTooKHIpKSkvMikpKTAgKSkpKCAoKCEhKCgxPzE6KChyKSkpLzIpICYmIHNpemVvZigo cikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2Yo KHIpKSA9PSBzaXplb2YoZmxvYXQgX0NvbXBsZXgpKSA/IGNsb2dmICgocikpIDogKCghISgo MT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5z aW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGRvdWJsZSBfQ29tcGxl eCkpID8gY2xvZyAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkg PT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikp ID09IHNpemVvZihsb25nIGRvdWJsZSBfQ29tcGxleCkgJiYgc2l6ZW9mKGxvbmcgZG91Ymxl KSAhPSBzaXplb2YoZG91YmxlKSkgPyBjbG9nbCAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkv MikgJiYgMipzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4w ZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGZsb2F0KSkgPyBsb2dmICgocikpIDog KCghISgoMT8xOigocikpKS8yKSAmJiAyKnNpemVvZigocikpID09IHNpemVvZigoKHIpKSso X19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YobG9uZyBk b3VibGUpICYmIHNpemVvZihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8gbG9n bCAoKHIpKSA6IGxvZygocikpICkpL3IpKSkvMikgJiYgMipzaXplb2YoKC0yLjAqKChfX3R5 cGVvZl9fKCooIDAgPyAoX190eXBlb2ZfXygwID8gKGRvdWJsZSAqKTAgOiAodm9pZCAqKSEh KCgxPzE6KChyKSkpLzIpKSkwIDogKF9fdHlwZW9mX18oMCA/IChfX3R5cGVvZl9fKChyKSkg KikwIDogKHZvaWQgKikhISEoKDE/MTooKHIpKSkvMikpKTAgKSkpKCAoKCEhKCgxPzE6KChy KSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAx LjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoZmxvYXQgX0NvbXBsZXgpKSA/IGNs b2dmICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXpl b2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6 ZW9mKGRvdWJsZSBfQ29tcGxleCkpID8gY2xvZyAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkv MikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZp KSkpICYmIHNpemVvZigocikpID09IHNpemVvZihsb25nIGRvdWJsZSBfQ29tcGxleCkgJiYg c2l6ZW9mKGxvbmcgZG91YmxlKSAhPSBzaXplb2YoZG91YmxlKSkgPyBjbG9nbCAoKHIpKSA6 ICgoISEoKDE/MTooKHIpKSkvMikgJiYgMipzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkr KF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGZsb2F0 KSkgPyBsb2dmICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiAyKnNpemVvZigocikp ID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIp KSA9PSBzaXplb2YobG9uZyBkb3VibGUpICYmIHNpemVvZihsb25nIGRvdWJsZSkgIT0gc2l6 ZW9mKGRvdWJsZSkpID8gbG9nbCAoKHIpKSA6IGxvZygocikpICkpL3IpKSA9PSBzaXplb2Yo KCgtMi4wKigoX190eXBlb2ZfXygqKCAwID8gKF9fdHlwZW9mX18oMCA/IChkb3VibGUgKikw IDogKHZvaWQgKikhISgoMT8xOigocikpKS8yKSkpMCA6IChfX3R5cGVvZl9fKDAgPyAoX190 eXBlb2ZfXygocikpICopMCA6ICh2b2lkICopISEhKCgxPzE6KChyKSkpLzIpKSkwICkpKSgg KCghISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9f ZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGZsb2F0IF9D b21wbGV4KSkgPyBjbG9nZiAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9m KChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVv ZigocikpID09IHNpemVvZihkb3VibGUgX0NvbXBsZXgpKSA/IGNsb2cgKChyKSkgOiAoKCEh KCgxPzE6KChyKSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRl bnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YobG9uZyBkb3VibGUg X0NvbXBsZXgpICYmIHNpemVvZihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8g Y2xvZ2wgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIpICYmIDIqc2l6ZW9mKChyKSkgPT0g c2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09 IHNpemVvZihmbG9hdCkpID8gbG9nZiAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYg MipzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkg JiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGxvbmcgZG91YmxlKSAmJiBzaXplb2YobG9uZyBk b3VibGUpICE9IHNpemVvZihkb3VibGUpKSA/IGxvZ2wgKChyKSkgOiBsb2coKHIpKSApKS9y KSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKCgtMi4wKigoX190eXBlb2Zf XygqKCAwID8gKF9fdHlwZW9mX18oMCA/IChkb3VibGUgKikwIDogKHZvaWQgKikhISgoMT8x OigocikpKS8yKSkpMCA6IChfX3R5cGVvZl9fKDAgPyAoX190eXBlb2ZfXygocikpICopMCA6 ICh2b2lkICopISEhKCgxPzE6KChyKSkpLzIpKSkwICkpKSggKCghISgoMT8xOigocikpKS8y KSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkp KSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGZsb2F0IF9Db21wbGV4KSkgPyBjbG9nZiAo KHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgo cikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihk b3VibGUgX0NvbXBsZXgpKSA/IGNsb2cgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIpICYm IHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAm JiBzaXplb2YoKHIpKSA9PSBzaXplb2YobG9uZyBkb3VibGUgX0NvbXBsZXgpICYmIHNpemVv Zihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8gY2xvZ2wgKChyKSkgOiAoKCEh KCgxPzE6KChyKSkpLzIpICYmIDIqc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4 dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihmbG9hdCkpID8g bG9nZiAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgMipzaXplb2YoKHIpKSA9PSBz aXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0g c2l6ZW9mKGxvbmcgZG91YmxlKSAmJiBzaXplb2YobG9uZyBkb3VibGUpICE9IHNpemVvZihk b3VibGUpKSA/IGxvZ2wgKChyKSkgOiBsb2coKHIpKSApKS9yKSkgPT0gc2l6ZW9mKGZsb2F0 KSkgPyBzcXJ0ZiAoKC0yLjAqKChfX3R5cGVvZl9fKCooIDAgPyAoX190eXBlb2ZfXygwID8g KGRvdWJsZSAqKTAgOiAodm9pZCAqKSEhKCgxPzE6KChyKSkpLzIpKSkwIDogKF9fdHlwZW9m X18oMCA/IChfX3R5cGVvZl9fKChyKSkgKikwIDogKHZvaWQgKikhISEoKDE/MTooKHIpKSkv MikpKTAgKSkpKCAoKCEhKCgxPzE6KChyKSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVv ZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXpl b2YoZmxvYXQgX0NvbXBsZXgpKSA/IGNsb2dmICgocikpIDogKCghISgoMT8xOigocikpKS8y KSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkp KSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGRvdWJsZSBfQ29tcGxleCkpID8gY2xvZyAo KHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgo cikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihs b25nIGRvdWJsZSBfQ29tcGxleCkgJiYgc2l6ZW9mKGxvbmcgZG91YmxlKSAhPSBzaXplb2Yo ZG91YmxlKSkgPyBjbG9nbCAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgMipzaXpl b2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6 ZW9mKChyKSkgPT0gc2l6ZW9mKGZsb2F0KSkgPyBsb2dmICgocikpIDogKCghISgoMT8xOigo cikpKS8yKSAmJiAyKnNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25f XyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YobG9uZyBkb3VibGUpICYmIHNp emVvZihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8gbG9nbCAoKHIpKSA6IGxv ZygocikpICkpL3IpKSA6ICgoISEoKDE/MTooKC0yLjAqKChfX3R5cGVvZl9fKCooIDAgPyAo X190eXBlb2ZfXygwID8gKGRvdWJsZSAqKTAgOiAodm9pZCAqKSEhKCgxPzE6KChyKSkpLzIp KSkwIDogKF9fdHlwZW9mX18oMCA/IChfX3R5cGVvZl9fKChyKSkgKikwIDogKHZvaWQgKikh ISEoKDE/MTooKHIpKSkvMikpKTAgKSkpKCAoKCEhKCgxPzE6KChyKSkpLzIpICYmIHNpemVv ZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXpl b2YoKHIpKSA9PSBzaXplb2YoZmxvYXQgX0NvbXBsZXgpKSA/IGNsb2dmICgocikpIDogKCgh ISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0 ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGRvdWJsZSBfQ29t cGxleCkpID8gY2xvZyAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChy KSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigo cikpID09IHNpemVvZihsb25nIGRvdWJsZSBfQ29tcGxleCkgJiYgc2l6ZW9mKGxvbmcgZG91 YmxlKSAhPSBzaXplb2YoZG91YmxlKSkgPyBjbG9nbCAoKHIpKSA6ICgoISEoKDE/MTooKHIp KSkvMikgJiYgMipzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18g MS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGZsb2F0KSkgPyBsb2dmICgocikp IDogKCghISgoMT8xOigocikpKS8yKSAmJiAyKnNpemVvZigocikpID09IHNpemVvZigoKHIp KSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YobG9u ZyBkb3VibGUpICYmIHNpemVvZihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8g bG9nbCAoKHIpKSA6IGxvZygocikpICkpL3IpKSkvMikgJiYgMipzaXplb2YoKC0yLjAqKChf X3R5cGVvZl9fKCooIDAgPyAoX190eXBlb2ZfXygwID8gKGRvdWJsZSAqKTAgOiAodm9pZCAq KSEhKCgxPzE6KChyKSkpLzIpKSkwIDogKF9fdHlwZW9mX18oMCA/IChfX3R5cGVvZl9fKChy KSkgKikwIDogKHZvaWQgKikhISEoKDE/MTooKHIpKSkvMikpKTAgKSkpKCAoKCEhKCgxPzE6 KChyKSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25f XyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoZmxvYXQgX0NvbXBsZXgpKSA/ IGNsb2dmICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBz aXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0g c2l6ZW9mKGRvdWJsZSBfQ29tcGxleCkpID8gY2xvZyAoKHIpKSA6ICgoISEoKDE/MTooKHIp KSkvMikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEu MGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihsb25nIGRvdWJsZSBfQ29tcGxleCkg JiYgc2l6ZW9mKGxvbmcgZG91YmxlKSAhPSBzaXplb2YoZG91YmxlKSkgPyBjbG9nbCAoKHIp KSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgMipzaXplb2YoKHIpKSA9PSBzaXplb2YoKChy KSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGZs b2F0KSkgPyBsb2dmICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiAyKnNpemVvZigo cikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2Yo KHIpKSA9PSBzaXplb2YobG9uZyBkb3VibGUpICYmIHNpemVvZihsb25nIGRvdWJsZSkgIT0g c2l6ZW9mKGRvdWJsZSkpID8gbG9nbCAoKHIpKSA6IGxvZygocikpICkpL3IpKSA9PSBzaXpl b2YoKCgtMi4wKigoX190eXBlb2ZfXygqKCAwID8gKF9fdHlwZW9mX18oMCA/IChkb3VibGUg KikwIDogKHZvaWQgKikhISgoMT8xOigocikpKS8yKSkpMCA6IChfX3R5cGVvZl9fKDAgPyAo X190eXBlb2ZfXygocikpICopMCA6ICh2b2lkICopISEhKCgxPzE6KChyKSkpLzIpKSkwICkp KSggKCghISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkr KF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGZsb2F0 IF9Db21wbGV4KSkgPyBjbG9nZiAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6 ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNp emVvZigocikpID09IHNpemVvZihkb3VibGUgX0NvbXBsZXgpKSA/IGNsb2cgKChyKSkgOiAo KCEhKCgxPzE6KChyKSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19l eHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YobG9uZyBkb3Vi bGUgX0NvbXBsZXgpICYmIHNpemVvZihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkp ID8gY2xvZ2wgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIpICYmIDIqc2l6ZW9mKChyKSkg PT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikp ID09IHNpemVvZihmbG9hdCkpID8gbG9nZiAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikg JiYgMipzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkp KSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGxvbmcgZG91YmxlKSAmJiBzaXplb2YobG9u ZyBkb3VibGUpICE9IHNpemVvZihkb3VibGUpKSA/IGxvZ2wgKChyKSkgOiBsb2coKHIpKSAp KS9yKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKCgtMi4wKigoX190eXBl b2ZfXygqKCAwID8gKF9fdHlwZW9mX18oMCA/IChkb3VibGUgKikwIDogKHZvaWQgKikhISgo MT8xOigocikpKS8yKSkpMCA6IChfX3R5cGVvZl9fKDAgPyAoX190eXBlb2ZfXygocikpICop MCA6ICh2b2lkICopISEhKCgxPzE6KChyKSkpLzIpKSkwICkpKSggKCghISgoMT8xOigocikp KS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4w ZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGZsb2F0IF9Db21wbGV4KSkgPyBjbG9n ZiAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9m KCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVv Zihkb3VibGUgX0NvbXBsZXgpKSA/IGNsb2cgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIp ICYmIHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkp KSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YobG9uZyBkb3VibGUgX0NvbXBsZXgpICYmIHNp emVvZihsb25nIGRvdWJsZSkgIT0gc2l6ZW9mKGRvdWJsZSkpID8gY2xvZ2wgKChyKSkgOiAo KCEhKCgxPzE6KChyKSkpLzIpICYmIDIqc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhf X2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihmbG9hdCkp ID8gbG9nZiAoKHIpKSA6ICgoISEoKDE/MTooKHIpKSkvMikgJiYgMipzaXplb2YoKHIpKSA9 PSBzaXplb2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkg PT0gc2l6ZW9mKGxvbmcgZG91YmxlKSAmJiBzaXplb2YobG9uZyBkb3VibGUpICE9IHNpemVv Zihkb3VibGUpKSA/IGxvZ2wgKChyKSkgOiBsb2coKHIpKSApKS9yKSkgPT0gc2l6ZW9mKGxv bmcgZG91YmxlKSAmJiBzaXplb2YobG9uZyBkb3VibGUpICE9IHNpemVvZihkb3VibGUpKSA/ IHNxcnRsICgoLTIuMCooKF9fdHlwZW9mX18oKiggMCA/IChfX3R5cGVvZl9fKDAgPyAoZG91 YmxlICopMCA6ICh2b2lkICopISEoKDE/MTooKHIpKSkvMikpKTAgOiAoX190eXBlb2ZfXygw ID8gKF9fdHlwZW9mX18oKHIpKSAqKTAgOiAodm9pZCAqKSEhISgoMT8xOigocikpKS8yKSkp MCApKSkoICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgo cikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihm bG9hdCBfQ29tcGxleCkpID8gY2xvZ2YgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkpLzIpICYm IHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAm JiBzaXplb2YoKHIpKSA9PSBzaXplb2YoZG91YmxlIF9Db21wbGV4KSkgPyBjbG9nICgocikp IDogKCghISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoKChyKSkr KF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKGxvbmcg ZG91YmxlIF9Db21wbGV4KSAmJiBzaXplb2YobG9uZyBkb3VibGUpICE9IHNpemVvZihkb3Vi bGUpKSA/IGNsb2dsICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiAyKnNpemVvZigo cikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAmJiBzaXplb2Yo KHIpKSA9PSBzaXplb2YoZmxvYXQpKSA/IGxvZ2YgKChyKSkgOiAoKCEhKCgxPzE6KChyKSkp LzIpICYmIDIqc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEu MGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihsb25nIGRvdWJsZSkgJiYgc2l6ZW9m KGxvbmcgZG91YmxlKSAhPSBzaXplb2YoZG91YmxlKSkgPyBsb2dsICgocikpIDogbG9nKChy KSkgKSkvcikpIDogc3FydCgoLTIuMCooKF9fdHlwZW9mX18oKiggMCA/IChfX3R5cGVvZl9f KDAgPyAoZG91YmxlICopMCA6ICh2b2lkICopISEoKDE/MTooKHIpKSkvMikpKTAgOiAoX190 eXBlb2ZfXygwID8gKF9fdHlwZW9mX18oKHIpKSAqKTAgOiAodm9pZCAqKSEhISgoMT8xOigo cikpKS8yKSkpMCApKSkoICgoISEoKDE/MTooKHIpKSkvMikgJiYgc2l6ZW9mKChyKSkgPT0g c2l6ZW9mKCgocikpKyhfX2V4dGVuc2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09 IHNpemVvZihmbG9hdCBfQ29tcGxleCkpID8gY2xvZ2YgKChyKSkgOiAoKCEhKCgxPzE6KChy KSkpLzIpICYmIHNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAx LjBmaSkpKSAmJiBzaXplb2YoKHIpKSA9PSBzaXplb2YoZG91YmxlIF9Db21wbGV4KSkgPyBj bG9nICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiBzaXplb2YoKHIpKSA9PSBzaXpl b2YoKChyKSkrKF9fZXh0ZW5zaW9uX18gMS4wZmkpKSkgJiYgc2l6ZW9mKChyKSkgPT0gc2l6 ZW9mKGxvbmcgZG91YmxlIF9Db21wbGV4KSAmJiBzaXplb2YobG9uZyBkb3VibGUpICE9IHNp emVvZihkb3VibGUpKSA/IGNsb2dsICgocikpIDogKCghISgoMT8xOigocikpKS8yKSAmJiAy KnNpemVvZigocikpID09IHNpemVvZigoKHIpKSsoX19leHRlbnNpb25fXyAxLjBmaSkpKSAm JiBzaXplb2YoKHIpKSA9PSBzaXplb2YoZmxvYXQpKSA/IGxvZ2YgKChyKSkgOiAoKCEhKCgx PzE6KChyKSkpLzIpICYmIDIqc2l6ZW9mKChyKSkgPT0gc2l6ZW9mKCgocikpKyhfX2V4dGVu c2lvbl9fIDEuMGZpKSkpICYmIHNpemVvZigocikpID09IHNpemVvZihsb25nIGRvdWJsZSkg JiYgc2l6ZW9mKGxvbmcgZG91YmxlKSAhPSBzaXplb2YoZG91YmxlKSkgPyBsb2dsICgocikp IDogbG9nKChyKSkgKSkvcikpICkpOwogICAgICAgIHMtPmdzZXQgPSB2MSpmYWM7CiAgICAg ICAgcy0+aXNldCA9IDE7CiAgICAgICAgYW1wID0gdjIqZmFjKnMtPnJtczsKICAgIH0KICAg IGVsc2UKICAgIHsKICAgICAgICBzLT5pc2V0ID0gMDsKICAgICAgICBhbXAgPSBzLT5nc2V0 KnMtPnJtczsKICAgIH0KICAgIHJldHVybiBmc2F0dXJhdGUoYW1wKTsKfQo= --------------070405000602000301060701--