From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: nly@disroot.org Newsgroups: gmane.lisp.guile.devel Subject: [PATCH] add SRFI: srfi-121; generators Date: Mon, 01 Jul 2019 00:09:08 +0000 Message-ID: <3fb6ac24483457821130185b0e1f277c@disroot.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="--=_RainLoop_730_418439822.1561939748" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="15369"; mail-complaints-to="usenet@blaine.gmane.org" To: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Mon Jul 01 02:53:08 2019 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hhkZ8-0003rK-O9 for guile-devel@m.gmane.org; Mon, 01 Jul 2019 02:53:07 +0200 Original-Received: from localhost ([::1]:47064 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hhkZ7-0002OL-A7 for guile-devel@m.gmane.org; Sun, 30 Jun 2019 20:53:05 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:45055) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hhk0h-0004OS-FA for guile-devel@gnu.org; Sun, 30 Jun 2019 20:17:33 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hhk0g-0005SH-JJ for guile-devel@gnu.org; Sun, 30 Jun 2019 20:17:31 -0400 Original-Received: from [178.21.23.139] (port=33210 helo=knopi.disroot.org) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hhk0f-0005Qx-HX for guile-devel@gnu.org; Sun, 30 Jun 2019 20:17:30 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id F109335B74 for ; Mon, 1 Jul 2019 02:09:09 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at disroot.org Original-Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2yRltl2_JWVB for ; Mon, 1 Jul 2019 02:09:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1561939748; bh=ZGjGlpN5e/V/Q4iaAh2I5JyOz0wJtpFV874WGfyGA2c=; h=Date:From:Subject:To; b=ESJ1i+Xq1Z+joz87wAqghnQVr1U0FXJtYsr3NiHdR/WhUyb4IP7214O/g8iilPxH8 mQvCciFHdDMUniVuZlSNXOG7k/xiMkAeQBQGy2NowIfSqhzKthetdjaYIBdJYPI3RY NVE5chRPvrTHZnAAq6+KcZCM5SvhapSjZEN1HuYZXGwSjPEqZcWH/08ID/iy0PXiQA Z964i6rPia55kb83zt/HVLVZKIWtTyoNH/hOVkm9YxSHE0I3sGzmudZutnBy2/Eo/L WSLDI9kd9MTrsa8st/H0OinV8+49/7WkH8ECk80gW61c2ZI52OQOT1+eNd9tAFssrd pacuQG9VoxnOQ== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 178.21.23.139 X-Mailman-Approved-At: Sun, 30 Jun 2019 20:53:02 -0400 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Original-Sender: "guile-devel" Xref: news.gmane.org gmane.lisp.guile.devel:19996 Archived-At: ----=_RainLoop_730_418439822.1561939748 Content-Type: multipart/alternative; boundary="--=_RainLoop_407_108306673.1561939748" ----=_RainLoop_407_108306673.1561939748 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable SRFI-121 Generators.=0A=0AAll tests(49/49) are passing in my testing. I a= m not sure if the tests=0Afile is put in the correct place. ----=_RainLoop_407_108306673.1561939748 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable
=
SRFI-121 Generators.

All tests(49/49) are passing in my testin= g. I am not sure if the tests
file is put in the correct place.
----=_RainLoop_407_108306673.1561939748-- ----=_RainLoop_730_418439822.1561939748 Content-Type: application/octet-stream; name="0001-add-SRFI-srfi-121-generators.patch" Content-Disposition: attachment; filename="0001-add-SRFI-srfi-121-generators.patch" Content-Transfer-Encoding: base64 RnJvbSAwMzUyZjliZTEzYWJhMWU4YWNjOWE4ZjcwMGYzNjczMzM0ZDQ4ZDI4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbWFyIFNpbmdoIDxubHlAZGlzcm9vdC5vcmc+CkRh dGU6IE1vbiwgMSBKdWwgMjAxOSAwNToxNDo1MyArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIGFk ZCBTUkZJOiBzcmZpLTEyMTsgZ2VuZXJhdG9ycwoKLS0tCiBtb2R1bGUvc3JmaS9zcmZpLTEy MS5zY20gICAgICAgfCA0NTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0 ZXN0LXN1aXRlL3Rlc3RzL3NyZmktMTIxLnRlc3QgfCAxNDUgKysrKysrKysrKysKIDIgZmls ZXMgY2hhbmdlZCwgNjAzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBtb2R1 bGUvc3JmaS9zcmZpLTEyMS5zY20KIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0LXN1aXRlL3Rl c3RzL3NyZmktMTIxLnRlc3QKCmRpZmYgLS1naXQgYS9tb2R1bGUvc3JmaS9zcmZpLTEyMS5z Y20gYi9tb2R1bGUvc3JmaS9zcmZpLTEyMS5zY20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwLi5kZmJkNzJkNzEKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUvc3Jm aS9zcmZpLTEyMS5zY20KQEAgLTAsMCArMSw0NTggQEAKKzs7IENvcHlyaWdodCAoQykgSm9o biBDb3dhbiAoMjAxNikuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCis7OyBDb3B5cmlnaHQgKEMp IDIwMTkgYnkgQW1hciBTaW5naDxubHlAZGlzcm9vdC5vcmc+CisKKzs7IFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZworOzsgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlCis7OyAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29m dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCis7OyB3aXRob3V0IGxpbWl0 YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs Cis7OyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhl IFNvZnR3YXJlLCBhbmQgdG8KKzs7IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworOzsgdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorCis7OyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQorOzsgaW5jbHVkZWQgaW4gYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKzs7IFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELAorOzsgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GCis7OyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorOzsgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUworOzsgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVS IElOIEFOCis7OyBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HIEZST00sIE9VVCBPRiBPUiBJTgorOzsgQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorOzsgU09GVFdBUkUuCisK KyhkZWZpbmUtbW9kdWxlIChzcmZpIHNyZmktMTIxKQorICAjOnVzZS1tb2R1bGUgKGd1aWxl KQorICAjOnVzZS1tb2R1bGUgKGljZS05IHJkZWxpbSkKKyAgIzp1c2UtbW9kdWxlICgoc3Jm aSBzcmZpLTQpICM6c2VsZWN0ICh1OHZlY3Rvci1yZWYgdTh2ZWN0b3ItbGVuZ3RoKSkKKyAg IzpleHBvcnQgKGdlbmVyYXRvciBtYWtlLWlvdGEtZ2VuZXJhdG9yIG1ha2UtcmFuZ2UtZ2Vu ZXJhdG9yCisgICAgICAgICAgICAgICAgICAgICAgbWFrZS1jb3JvdXRpbmUtZ2VuZXJhdG9y IGxpc3QtPmdlbmVyYXRvciB2ZWN0b3ItPmdlbmVyYXRvcgorICAgICAgICAgICAgICAgICAg ICAgIHJldmVyc2UtdmVjdG9yLT5nZW5lcmF0b3Igc3RyaW5nLT5nZW5lcmF0b3IKKyAgICAg ICAgICAgICAgICAgICAgICBieXRldmVjdG9yLT5nZW5lcmF0b3IKKyAgICAgICAgICAgICAg ICAgICAgICBtYWtlLWZvci1lYWNoLWdlbmVyYXRvciBtYWtlLXVuZm9sZC1nZW5lcmF0b3IK KyAgICAgICAgICAgICAgICAgICAgICBnY29ucyogZ2FwcGVuZCBnY29tYmluZSBnZmlsdGVy IGdyZW1vdmUKKyAgICAgICAgICAgICAgICAgICAgICBndGFrZSBnZHJvcCBndGFrZS13aGls ZSBnZHJvcC13aGlsZQorICAgICAgICAgICAgICAgICAgICAgIGdkZWxldGUgZ2RlbGV0ZS1u ZWlnaGJvci1kdXBzIGdpbmRleCBnc2VsZWN0CisgICAgICAgICAgICAgICAgICAgICAgZ2Vu ZXJhdG9yLT5saXN0IGdlbmVyYXRvci0+cmV2ZXJzZS1saXN0CisgICAgICAgICAgICAgICAg ICAgICAgZ2VuZXJhdG9yLT52ZWN0b3IgZ2VuZXJhdG9yLT52ZWN0b3IhICBnZW5lcmF0b3It PnN0cmluZworICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci1mb2xkIGdlbmVyYXRv ci1mb3ItZWFjaCBnZW5lcmF0b3ItZmluZAorICAgICAgICAgICAgICAgICAgICAgIGdlbmVy YXRvci1jb3VudCBnZW5lcmF0b3ItYW55IGdlbmVyYXRvci1ldmVyeSBnZW5lcmF0b3ItdW5m b2xkKSkKKworKGRlZmluZSAqZW9mLW9iamVjdCogKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5n ICIiKSkpCisoZGVmaW5lIChlb2Ytb2JqZWN0KSAqZW9mLW9iamVjdCopCisoZGVmaW5lIChi eXRldmVjdG9yLXU4LXJlZiBidiBpKSAodTh2ZWN0b3ItcmVmIGJ2IGkpKQorKGRlZmluZSAo Ynl0ZXZlY3Rvci1sZW5ndGggYnYpICh1OHZlY3Rvci1sZW5ndGggYnYpKQorKGRlZmluZSAo dHJ1bmNhdGUvIG4xIG4yKSAodmFsdWVzIChxdW90aWVudCBuMSBuMikgKHJlbWFpbmRlciBu MSBuMikpKQorCisKKzs7IENoaWJpIFNjaGVtZSB2ZXJzaW9ucyBvZiBhbnkgYW5kIGV2ZXJ5 CisKKyhkZWZpbmUgKGFueSBwcmVkIGxzKQorICAoaWYgKG51bGw/IChjZHIgbHMpKQorICAg IChwcmVkIChjYXIgbHMpKQorICAgICgobGFtYmRhICh4KSAoaWYgeCB4IChhbnkgcHJlZCAo Y2RyIGxzKSkpKSAocHJlZCAoY2FyIGxzKSkpKSkKKworKGRlZmluZSAoZXZlcnkgcHJlZCBs cykKKyAgKGlmIChudWxsPyAoY2RyIGxzKSkKKyAgICAocHJlZCAoY2FyIGxzKSkKKyAgICAo aWYgKHByZWQgKGNhciBscykpIChldmVyeSBwcmVkIChjZHIgbHMpKSAjZikpKQorCisKKwor OzsgZ2VuZXJhdG9yCisoZGVmaW5lIChnZW5lcmF0b3IgLiBhcmdzKQorICAobGFtYmRhICgp IChpZiAobnVsbD8gYXJncykKKyAgICAgICAgICAgICAgIChlb2Ytb2JqZWN0KQorICAgICAg ICAgICAgICAgKGxldCAoKG5leHQgKGNhciBhcmdzKSkpCisgICAgICAgICAgICAgICAgKHNl dCEgYXJncyAoY2RyIGFyZ3MpKQorICAgICAgICAgICAgICAgIG5leHQpKSkpCisKKworOzsg bWFrZS1pb3RhLWdlbmVyYXRvcgorKGRlZmluZSBtYWtlLWlvdGEtZ2VuZXJhdG9yCisgIChj YXNlLWxhbWJkYSAoKGNvdW50KSAobWFrZS1pb3RhLWdlbmVyYXRvciBjb3VudCAwIDEpKQor ICAgICAgICAgICAgICAgKChjb3VudCBzdGFydCkgKG1ha2UtaW90YS1nZW5lcmF0b3IgY291 bnQgc3RhcnQgMSkpCisgICAgICAgICAgICAgICAoKGNvdW50IHN0YXJ0IHN0ZXApIChtYWtl LWlvdGEgY291bnQgc3RhcnQgc3RlcCkpKSkKKworOzsgbWFrZS1pb3RhCisoZGVmaW5lICht YWtlLWlvdGEgY291bnQgc3RhcnQgc3RlcCkKKyAgKGxhbWJkYSAoKQorICAgIChjb25kCisg ICAgICAoKDw9IGNvdW50IDApCisgICAgICAgKGVvZi1vYmplY3QpKQorICAgICAgKGVsc2UK KyAgICAgICAgKGxldCAoKHJlc3VsdCBzdGFydCkpCisgICAgICAgICAoc2V0ISBjb3VudCAo LSBjb3VudCAxKSkKKyAgICAgICAgIChzZXQhIHN0YXJ0ICgrIHN0YXJ0IHN0ZXApKQorICAg ICAgICAgcmVzdWx0KSkpKSkKKworCis7OyBtYWtlLXJhbmdlLWdlbmVyYXRvcgorKGRlZmlu ZSBtYWtlLXJhbmdlLWdlbmVyYXRvcgorICAoY2FzZS1sYW1iZGEgKChzdGFydCBlbmQpICht YWtlLXJhbmdlLWdlbmVyYXRvciBzdGFydCBlbmQgMSkpCisgICAgICAgICAgICAgICAoKHN0 YXJ0KSAobWFrZS1pbmZpbml0ZS1yYW5nZS1nZW5lcmF0b3Igc3RhcnQpKQorICAgICAgICAg ICAgICAgKChzdGFydCBlbmQgc3RlcCkKKyAgICAgICAgICAgICAgICAoc2V0ISBzdGFydCAo LSAoKyBzdGFydCBzdGVwKSBzdGVwKSkKKyAgICAgICAgICAgICAgICAobGFtYmRhICgpIChp ZiAoPCBzdGFydCBlbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKCh2 IHN0YXJ0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQhIHN0YXJ0ICgr IHN0YXJ0IHN0ZXApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGVvZi1vYmplY3QpKSkpKSkKKworKGRlZmluZSAo bWFrZS1pbmZpbml0ZS1yYW5nZS1nZW5lcmF0b3Igc3RhcnQpCisgIChsYW1iZGEgKCkKKyAg ICAobGV0ICgocmVzdWx0IHN0YXJ0KSkKKyAgICAgKHNldCEgc3RhcnQgKCsgc3RhcnQgMSkp CisgICAgIHJlc3VsdCkpKQorCisKKworOzsgbWFrZS1jb3JvdXRpbmUtZ2VuZXJhdG9yCiso ZGVmaW5lIChtYWtlLWNvcm91dGluZS1nZW5lcmF0b3IgcHJvYykKKyAgKGRlZmluZSByZXR1 cm4gI2YpCisgIChkZWZpbmUgcmVzdW1lICNmKQorICAoZGVmaW5lIHlpZWxkIChsYW1iZGEg KHYpIChjYWxsL2NjIChsYW1iZGEgKHIpIChzZXQhIHJlc3VtZSByKSAocmV0dXJuIHYpKSkp KQorICAobGFtYmRhICgpIChjYWxsL2NjIChsYW1iZGEgKGNjKSAoc2V0ISByZXR1cm4gY2Mp CisgICAgICAgICAgICAgICAgICAgICAgICAoaWYgcmVzdW1lCisgICAgICAgICAgICAgICAg ICAgICAgICAgIChyZXN1bWUgKGlmICNmICNmKSkgIDsgdm9pZD8gb3IgeWllbGQgYWdhaW4/ CisgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbiAocHJvYyB5aWVsZCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQhIHJlc3VtZSAobGFtYmRhICh2KSAo cmV0dXJuIChlb2Ytb2JqZWN0KSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHJldHVybiAoZW9mLW9iamVjdCkpKSkpKSkpCisKKworOzsgbGlzdC0+Z2VuZXJhdG9y CisoZGVmaW5lIChsaXN0LT5nZW5lcmF0b3IgbHN0KQorICAobGFtYmRhICgpIChpZiAobnVs bD8gbHN0KQorICAgICAgICAgICAgICAgKGVvZi1vYmplY3QpCisgICAgICAgICAgICAgICAo bGV0ICgobmV4dCAoY2FyIGxzdCkpKQorICAgICAgICAgICAgICAgIChzZXQhIGxzdCAoY2Ry IGxzdCkpCisgICAgICAgICAgICAgICAgbmV4dCkpKSkKKworCis7OyB2ZWN0b3ItPmdlbmVy YXRvcgorKGRlZmluZSB2ZWN0b3ItPmdlbmVyYXRvcgorICAoY2FzZS1sYW1iZGEgKCh2ZWMp ICh2ZWN0b3ItPmdlbmVyYXRvciB2ZWMgMCAodmVjdG9yLWxlbmd0aCB2ZWMpKSkKKyAgICAg ICAgICAgICAgICgodmVjIHN0YXJ0KSAodmVjdG9yLT5nZW5lcmF0b3IgdmVjIHN0YXJ0ICh2 ZWN0b3ItbGVuZ3RoIHZlYykpKQorICAgICAgICAgICAgICAgKCh2ZWMgc3RhcnQgZW5kKQor ICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKGlmICg+PSBzdGFydCBlbmQpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlb2Ytb2JqZWN0KQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobGV0ICgobmV4dCAodmVjdG9yLXJlZiB2ZWMgc3RhcnQpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQhIHN0YXJ0ICgrIHN0YXJ0IDEpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCkpKSkpKQorCisKKzs7IHJldmVyc2Ut dmVjdG9yLT5nZW5lcmF0b3IKKyhkZWZpbmUgcmV2ZXJzZS12ZWN0b3ItPmdlbmVyYXRvcgor ICAoY2FzZS1sYW1iZGEgKCh2ZWMpIChyZXZlcnNlLXZlY3Rvci0+Z2VuZXJhdG9yIHZlYyAw ICh2ZWN0b3ItbGVuZ3RoIHZlYykpKQorICAgICAgICAgICAgICAgKCh2ZWMgc3RhcnQpIChy ZXZlcnNlLXZlY3Rvci0+Z2VuZXJhdG9yIHZlYyBzdGFydCAodmVjdG9yLWxlbmd0aCB2ZWMp KSkKKyAgICAgICAgICAgICAgICgodmVjIHN0YXJ0IGVuZCkKKyAgICAgICAgICAgICAgICAo bGFtYmRhICgpIChpZiAoPj0gc3RhcnQgZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZW9mLW9iamVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAo KG5leHQgKHZlY3Rvci1yZWYgdmVjICgtIGVuZCAxKSkpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHNldCEgZW5kICgtIGVuZCAxKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5leHQpKSkpKSkKKworCis7OyBzdHJpbmctPmdlbmVyYXRvcgorKGRlZmlu ZSBzdHJpbmctPmdlbmVyYXRvcgorICAoY2FzZS1sYW1iZGEgKChzdHIpIChzdHJpbmctPmdl bmVyYXRvciBzdHIgMCAoc3RyaW5nLWxlbmd0aCBzdHIpKSkKKyAgICAgICAgICAgICAgICgo c3RyIHN0YXJ0KSAoc3RyaW5nLT5nZW5lcmF0b3Igc3RyIHN0YXJ0IChzdHJpbmctbGVuZ3Ro IHN0cikpKQorICAgICAgICAgICAgICAgKChzdHIgc3RhcnQgZW5kKQorICAgICAgICAgICAg ICAgIChsYW1iZGEgKCkgKGlmICg+PSBzdGFydCBlbmQpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChlb2Ytb2JqZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bGV0ICgobmV4dCAoc3RyaW5nLXJlZiBzdHIgc3RhcnQpKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChzZXQhIHN0YXJ0ICgrIHN0YXJ0IDEpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbmV4dCkpKSkpKQorCisKKzs7IGJ5dGV2ZWN0b3ItPmdlbmVyYXRv cgorKGRlZmluZSBieXRldmVjdG9yLT5nZW5lcmF0b3IKKyAgKGNhc2UtbGFtYmRhICgoc3Ry KSAoYnl0ZXZlY3Rvci0+Z2VuZXJhdG9yIHN0ciAwIChieXRldmVjdG9yLWxlbmd0aCBzdHIp KSkKKyAgICAgICAgICAgICAgICgoc3RyIHN0YXJ0KSAoYnl0ZXZlY3Rvci0+Z2VuZXJhdG9y IHN0ciBzdGFydCAoYnl0ZXZlY3Rvci1sZW5ndGggc3RyKSkpCisgICAgICAgICAgICAgICAo KHN0ciBzdGFydCBlbmQpCisgICAgICAgICAgICAgICAgKGxhbWJkYSAoKSAoaWYgKD49IHN0 YXJ0IGVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVvZi1vYmplY3QpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChuZXh0IChieXRldmVjdG9yLXU4 LXJlZiBzdHIgc3RhcnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQh IHN0YXJ0ICgrIHN0YXJ0IDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4 dCkpKSkpKQorCisKKzs7IG1ha2UtZm9yLWVhY2gtZ2VuZXJhdG9yCis7RklYTUU6IHNlZW1z IHRvIGZhaWwgdGVzdAorKGRlZmluZSAobWFrZS1mb3ItZWFjaC1nZW5lcmF0b3IgZm9yLWVh Y2ggb2JqKQorICAobWFrZS1jb3JvdXRpbmUtZ2VuZXJhdG9yIChsYW1iZGEgKHlpZWxkKSAo Zm9yLWVhY2ggeWllbGQgb2JqKSkpKQorCisKKzs7IG1ha2UtdW5mb2xkLWdlbmVyYXRvcgor KGRlZmluZSAobWFrZS11bmZvbGQtZ2VuZXJhdG9yIHN0b3A/IG1hcHBlciBzdWNjZXNzb3Ig c2VlZCkKKyAgKG1ha2UtY29yb3V0aW5lLWdlbmVyYXRvciAobGFtYmRhICh5aWVsZCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9vcCAoKHMgc2VlZCkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdG9wPyBzKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGlmICNmICNmKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGJlZ2luICh5aWVsZCAobWFwcGVyIHMpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsb29wIChzdWNjZXNzb3IgcykpKSkpKSkpCisK KworOzsgZ2NvbnMqCisoZGVmaW5lIChnY29ucyogLiBhcmdzKQorICAobGFtYmRhICgpIChp ZiAobnVsbD8gYXJncykKKyAgICAgICAgICAgICAgIChlb2Ytb2JqZWN0KQorICAgICAgICAg ICAgICAgKGlmICg9IChsZW5ndGggYXJncykgMSkKKyAgICAgICAgICAgICAgICAgKChjYXIg YXJncykpCisgICAgICAgICAgICAgICAgIChsZXQgKCh2IChjYXIgYXJncykpKQorICAgICAg ICAgICAgICAgICAgKHNldCEgYXJncyAoY2RyIGFyZ3MpKQorICAgICAgICAgICAgICAgICAg dikpKSkpCisKKworOzsgZ2FwcGVuZAorKGRlZmluZSAoZ2FwcGVuZCAuIGFyZ3MpCisgIChs YW1iZGEgKCkgKGlmIChudWxsPyBhcmdzKQorICAgICAgICAgICAgICAgKGVvZi1vYmplY3Qp CisgICAgICAgICAgICAgICAobGV0IGxvb3AgKCh2ICgoY2FyIGFyZ3MpKSkpCisgICAgICAg ICAgICAgICAgKGlmIChlb2Ytb2JqZWN0PyB2KQorICAgICAgICAgICAgICAgICAgKGJlZ2lu IChzZXQhIGFyZ3MgKGNkciBhcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWYg KG51bGw/IGFyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW9mLW9iamVjdCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb29wICgoY2FyIGFyZ3MpKSkpKQorICAg ICAgICAgICAgICAgICAgdikpKSkpCisKKworCis7OyBnY29tYmluZQorKGRlZmluZSAoZ2Nv bWJpbmUgcHJvYyBzZWVkIC4gZ2VucykKKyAgKGxhbWJkYSAoKQorICAgIChkZWZpbmUgaXRl bXMgKG1hcCAobGFtYmRhICh4KSAoeCkpIGdlbnMpKQorICAgIChpZiAoYW55IGVvZi1vYmpl Y3Q/IGl0ZW1zKQorICAgICAgKGVvZi1vYmplY3QpCisgICAgICAobGV0ICgpCisgICAgICAg KGRlZmluZS12YWx1ZXMgKHZhbHVlIG5ld3NlZWQpIChhcHBseSBwcm9jIChhcHBlbmQgaXRl bXMgKGxpc3Qgc2VlZCkpKSkKKyAgICAgICAoc2V0ISBzZWVkIG5ld3NlZWQpCisgICAgICAg dmFsdWUpKSkpCisKKzs7IGdmaWx0ZXIKKyhkZWZpbmUgKGdmaWx0ZXIgcHJlZCBnZW4pCisg IChsYW1iZGEgKCkgKGxldCBsb29wICgpCisgICAgICAgICAgICAgIChsZXQgKChuZXh0IChn ZW4pKSkKKyAgICAgICAgICAgICAgIChpZiAob3IgKGVvZi1vYmplY3Q/IG5leHQpCisgICAg ICAgICAgICAgICAgICAgICAgIChwcmVkIG5leHQpKQorICAgICAgICAgICAgICAgICBuZXh0 CisgICAgICAgICAgICAgICAgIChsb29wKSkpKSkpCisKKworCis7OyBncmVtb3ZlCisoZGVm aW5lIChncmVtb3ZlIHByZWQgZ2VuKQorICAoZ2ZpbHRlciAobGFtYmRhICh2KSAobm90IChw cmVkIHYpKSkgZ2VuKSkKKworCisKKzs7IGd0YWtlCisoZGVmaW5lIGd0YWtlCisgIChjYXNl LWxhbWJkYSAoKGdlbiBrKSAoZ3Rha2UgZ2VuIGsgKGVvZi1vYmplY3QpKSkKKyAgICAgICAg ICAgICAgICgoZ2VuIGsgcGFkZGluZykKKyAgICAgICAgICAgICAgICAobWFrZS1jb3JvdXRp bmUtZ2VuZXJhdG9yIChsYW1iZGEgKHlpZWxkKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoaWYgKD4gayAwKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9vcCAoKGkgMCkgKHYgKGdlbikpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW4g KGlmIChlb2Ytb2JqZWN0PyB2KSAoeWllbGQgcGFkZGluZykgKHlpZWxkIHYpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmICg8 ICgrIDEgaSkgaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxvb3AgKCsgMSBpKSAoZ2VuKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVvZi1vYmplY3QpKSkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVvZi1v YmplY3QpKSkpKSkpCisKKworCis7OyBnZHJvcAorKGRlZmluZSAoZ2Ryb3AgZ2VuIGspCisg IChsYW1iZGEgKCkgKGRvICgpICgoPD0gayAwKSkgKHNldCEgayAoLSBrIDEpKSAoZ2VuKSkK KyAgICAoZ2VuKSkpCisKKworCis7OyBnZHJvcC13aGlsZQorKGRlZmluZSAoZ2Ryb3Atd2hp bGUgcHJlZCBnZW4pCisgIChkZWZpbmUgZm91bmQgI2YpCisgIChsYW1iZGEgKCkKKyAgICAo bGV0IGxvb3AgKCkKKyAgICAgKGxldCAoKHZhbCAoZ2VuKSkpCisgICAgICAoY29uZCAoZm91 bmQgdmFsKQorICAgICAgICAgICAgKChhbmQgKG5vdCAoZW9mLW9iamVjdD8gdmFsKSkgKHBy ZWQgdmFsKSkgKGxvb3ApKQorICAgICAgICAgICAgKGVsc2UgKHNldCEgZm91bmQgI3QpIHZh bCkpKSkpKQorCisKKzs7IGd0YWtlLXdoaWxlCisoZGVmaW5lIChndGFrZS13aGlsZSBwcmVk IGdlbikKKyAgKGxhbWJkYSAoKSAobGV0ICgobmV4dCAoZ2VuKSkpCisgICAgICAgICAgICAg IChpZiAoZW9mLW9iamVjdD8gbmV4dCkKKyAgICAgICAgICAgICAgICBuZXh0CisgICAgICAg ICAgICAgICAgKGlmIChwcmVkIG5leHQpCisgICAgICAgICAgICAgICAgICBuZXh0CisgICAg ICAgICAgICAgICAgICAoYmVnaW4gKHNldCEgZ2VuIChnZW5lcmF0b3IpKQorICAgICAgICAg ICAgICAgICAgICAgICAgIChnZW4pKSkpKSkpCisKKworCis7OyBnZGVsZXRlCisoZGVmaW5l IGdkZWxldGUKKyAgKGNhc2UtbGFtYmRhICgoaXRlbSBnZW4pIChnZGVsZXRlIGl0ZW0gZ2Vu IGVxdWFsPykpCisgICAgICAgICAgICAgICAoKGl0ZW0gZ2VuID09KQorICAgICAgICAgICAg ICAgIChsYW1iZGEgKCkgKGxldCBsb29wICgodiAoZ2VuKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZW9m LW9iamVjdD8gdikgKGVvZi1vYmplY3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKCg9PSBpdGVtIHYpIChsb29wIChnZW4pKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChlbHNlIHYpKSkpKSkpCisKKworCis7OyBnZGVsZXRlLW5laWdoYm9yLWR1cHMK KyhkZWZpbmUgZ2RlbGV0ZS1uZWlnaGJvci1kdXBzCisgIChjYXNlLWxhbWJkYSAoKGdlbikK KyAgICAgICAgICAgICAgICAoZ2RlbGV0ZS1uZWlnaGJvci1kdXBzIGdlbiBlcXVhbD8pKQor ICAgICAgICAgICAgICAgKChnZW4gPT0pCisgICAgICAgICAgICAgICAgKGRlZmluZSBmaXJz dHRpbWUgI3QpCisgICAgICAgICAgICAgICAgKGRlZmluZSBwcmV2ICNmKQorICAgICAgICAg ICAgICAgIChsYW1iZGEgKCkgKGlmIGZpcnN0dGltZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoYmVnaW4gKHNldCEgZmlyc3R0aW1lICNmKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldCEgcHJldiAoZ2VuKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHByZXYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChsZXQgbG9vcCAoKHYgKGdlbikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNvbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChlb2Ytb2JqZWN0PyB2 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCg9PSBwcmV2IHYpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobG9vcCAoZ2VuKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldCEgcHJl diB2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYpKSkpKSkpKQorCisK Kzs7IGdpbmRleAorKGRlZmluZSAoZ2luZGV4IHZhbHVlLWdlbiBpbmRleC1nZW4pCisgIChs ZXQgKChkb25lPyAjZikgKGNvdW50IDApKQorICAgKGxhbWJkYSAoKQorICAgICAoaWYgZG9u ZT8KKyAgICAgICAoZW9mLW9iamVjdCkKKyAgICAgICAobGV0IGxvb3AgKCh2YWx1ZSAodmFs dWUtZ2VuKSkgKGluZGV4IChpbmRleC1nZW4pKSkKKyAgICAgICAgKGNvbmQKKyAgICAgICAg ICAoKG9yIChlb2Ytb2JqZWN0PyB2YWx1ZSkgKGVvZi1vYmplY3Q/IGluZGV4KSkKKyAgICAg ICAgICAgKHNldCEgZG9uZT8gI3QpCisgICAgICAgICAgIChlb2Ytb2JqZWN0KSkKKyAgICAg ICAgICAoKD0gaW5kZXggY291bnQpCisgICAgICAgICAgIChzZXQhIGNvdW50ICgrIGNvdW50 IDEpKQorICAgICAgICAgICB2YWx1ZSkKKyAgICAgICAgICAoZWxzZQorICAgICAgICAgICAg KHNldCEgY291bnQgKCsgY291bnQgMSkpCisgICAgICAgICAgICAobG9vcCAodmFsdWUtZ2Vu KSBpbmRleCkpKSkpKSkpCisKKworOzsgZ3NlbGVjdAorKGRlZmluZSAoZ3NlbGVjdCB2YWx1 ZS1nZW4gdHJ1dGgtZ2VuKQorICAobGV0ICgoZG9uZT8gI2YpKQorICAgKGxhbWJkYSAoKQor ICAgICAoaWYgZG9uZT8KKyAgICAgICAoZW9mLW9iamVjdCkKKyAgICAgICAobGV0IGxvb3Ag KCh2YWx1ZSAodmFsdWUtZ2VuKSkgKHRydXRoICh0cnV0aC1nZW4pKSkKKyAgICAgICAgKGNv bmQKKyAgICAgICAgICAoKG9yIChlb2Ytb2JqZWN0PyB2YWx1ZSkgKGVvZi1vYmplY3Q/IHRy dXRoKSkKKyAgICAgICAgICAgKHNldCEgZG9uZT8gI3QpCisgICAgICAgICAgIChlb2Ytb2Jq ZWN0KSkKKyAgICAgICAgICAodHJ1dGggdmFsdWUpCisgICAgICAgICAgKGVsc2UgKGxvb3Ag KHZhbHVlLWdlbikgKHRydXRoLWdlbikpKSkpKSkpKQorCis7OyBnZW5lcmF0b3ItPmxpc3QK KyhkZWZpbmUgZ2VuZXJhdG9yLT5saXN0CisgIChjYXNlLWxhbWJkYSAoKGdlbiBuKQorCQko Z2VuZXJhdG9yLT5saXN0IChndGFrZSBnZW4gbikpKQorICAgICAgICAgICAgICAgKChnZW4p CisJCShyZXZlcnNlIChnZW5lcmF0b3ItPnJldmVyc2UtbGlzdCBnZW4pKSkpKQorCis7OyBn ZW5lcmF0b3ItPnJldmVyc2UtbGlzdAorKGRlZmluZSBnZW5lcmF0b3ItPnJldmVyc2UtbGlz dAorICAoY2FzZS1sYW1iZGEgKChnZW4gbikKKwkJKGdlbmVyYXRvci0+cmV2ZXJzZS1saXN0 IChndGFrZSBnZW4gbikpKQorICAgICAgICAgICAgICAgKChnZW4pCisJCShnZW5lcmF0b3It Zm9sZCBjb25zICcoKSBnZW4pKSkpCisKKzs7IGdlbmVyYXRvci0+dmVjdG9yCisoZGVmaW5l IGdlbmVyYXRvci0+dmVjdG9yCisgIChjYXNlLWxhbWJkYSAoKGdlbikgKGxpc3QtPnZlY3Rv ciAoZ2VuZXJhdG9yLT5saXN0IGdlbikpKQorICAgICAgICAgICAgICAgKChnZW4gbikgKGxp c3QtPnZlY3RvciAoZ2VuZXJhdG9yLT5saXN0IGdlbiBuKSkpKSkKKworCis7OyBnZW5lcmF0 b3ItPnZlY3RvciEKKyhkZWZpbmUgKGdlbmVyYXRvci0+dmVjdG9yISB2ZWN0b3IgYXQgZ2Vu KQorICAobGV0IGxvb3AgKCh2YWx1ZSAoZ2VuKSkgKGNvdW50IDApIChhdCBhdCkpCisgICAo Y29uZAorICAgICAoKGVvZi1vYmplY3Q/IHZhbHVlKSBjb3VudCkKKyAgICAgKCg+PSBhdCAo dmVjdG9yLWxlbmd0aCB2ZWN0b3IpKSBjb3VudCkKKyAgICAgKGVsc2UgKGJlZ2luCisgICAg ICAgICAgICAgKHZlY3Rvci1zZXQhIHZlY3RvciBhdCB2YWx1ZSkKKyAgICAgICAgICAgICAo bG9vcCAoZ2VuKSAoKyBjb3VudCAxKSAoKyBhdCAxKSkpKSkpKQorCisKKzs7IGdlbmVyYXRv ci0+c3RyaW5nCisoZGVmaW5lIGdlbmVyYXRvci0+c3RyaW5nCisgIChjYXNlLWxhbWJkYSAo KGdlbikgKGxpc3QtPnN0cmluZyAoZ2VuZXJhdG9yLT5saXN0IGdlbikpKQorICAgICAgICAg ICAgICAgKChnZW4gbikgKGxpc3QtPnN0cmluZyAoZ2VuZXJhdG9yLT5saXN0IGdlbiBuKSkp KSkKKworCisKKworOzsgZ2VuZXJhdG9yLWZvbGQKKyhkZWZpbmUgKGdlbmVyYXRvci1mb2xk IGYgc2VlZCAuIGdzKQorICAoZGVmaW5lIChpbm5lci1mb2xkIHNlZWQpCisgICAgKGxldCAo KHZzIChtYXAgKGxhbWJkYSAoZykgKGcpKSBncykpKQorICAgICAoaWYgKGFueSBlb2Ytb2Jq ZWN0PyB2cykKKyAgICAgICBzZWVkCisgICAgICAgKGlubmVyLWZvbGQgKGFwcGx5IGYgKGFw cGVuZCB2cyAobGlzdCBzZWVkKSkpKSkpKQorICAoaW5uZXItZm9sZCBzZWVkKSkKKworCisK Kzs7IGdlbmVyYXRvci1mb3ItZWFjaAorKGRlZmluZSAoZ2VuZXJhdG9yLWZvci1lYWNoIGYg LiBncykKKyAgKGxldCBsb29wICgpCisgICAobGV0ICgodnMgKG1hcCAobGFtYmRhIChnKSAo ZykpIGdzKSkpCisgICAgKGlmIChhbnkgZW9mLW9iamVjdD8gdnMpCisgICAgICAoaWYgI2Yg I2YpCisgICAgICAoYmVnaW4gKGFwcGx5IGYgdnMpCisgICAgICAgICAgICAgKGxvb3ApKSkp KSkKKworCis7OyBnZW5lcmF0b3ItZmluZAorKGRlZmluZSAoZ2VuZXJhdG9yLWZpbmQgcHJl ZCBnKQorICAobGV0IGxvb3AgKCh2IChnKSkpCisgICA7IEEgbGl0ZXJhbCBpbnRlcnByZXRh dGlvbiBtaWdodCBzYXkgaXQgb25seSB0ZXJtaW5hdGVzIG9uICNlb2YgaWYgKHByZWQgI2Vv ZikgYnV0IEkgdGhpbmsgdGhpcyBtYWtlcyBtb3JlIHNlbnNlLi4uCisgICAoaWYgKG9yIChw cmVkIHYpIChlb2Ytb2JqZWN0PyB2KSkKKyAgICAgdgorICAgICAobG9vcCAoZykpKSkpCisK KworOzsgZ2VuZXJhdG9yLWNvdW50CisoZGVmaW5lIChnZW5lcmF0b3ItY291bnQgcHJlZCBn KQorICAoZ2VuZXJhdG9yLWZvbGQgKGxhbWJkYSAodiBuKSAoaWYgKHByZWQgdikgKCsgMSBu KSBuKSkgMCBnKSkKKworCis7OyBnZW5lcmF0b3ItYW55CisoZGVmaW5lIChnZW5lcmF0b3It YW55IHByZWQgZykKKyAgKGxldCBsb29wICgodiAoZykpKQorICAgKGlmIChlb2Ytb2JqZWN0 PyB2KQorICAgICAjZgorICAgICAoaWYgKHByZWQgdikKKyAgICAgICAjdAorICAgICAgIChs b29wIChnKSkpKSkpCisKKworOzsgZ2VuZXJhdG9yLWV2ZXJ5CisoZGVmaW5lIChnZW5lcmF0 b3ItZXZlcnkgcHJlZCBnKQorICAobGV0IGxvb3AgKCh2IChnKSkpCisgICAoaWYgKGVvZi1v YmplY3Q/IHYpCisgICAgICN0CisgICAgIChpZiAocHJlZCB2KQorICAgICAgIChsb29wIChn KSkKKyAgICAgICAjZiA7IHRoZSBzcGVjIHdvdWxkIGhhdmUgbWUgcmV0dXJuICNmLCBidXQg SSB0aGluayBpdCBtdXN0IHNpbXBseSBiZSB3cm9uZy4uLgorICAgICAgICkpKSkKKworCis7 OyBnZW5lcmF0b3ItdW5mb2xkCisoZGVmaW5lIChnZW5lcmF0b3ItdW5mb2xkIGcgdW5mb2xk IC4gYXJncykKKyAgKGFwcGx5IHVuZm9sZCBlb2Ytb2JqZWN0PyAobGFtYmRhICh4KSB4KSAo bGFtYmRhICh4KSAoZykpIChnKSBhcmdzKSkKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvdGVz dHMvc3JmaS0xMjEudGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjEudGVzdApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjE0NGNmYWVkNQotLS0gL2Rldi9u dWxsCisrKyBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjEudGVzdApAQCAtMCwwICsxLDE0 NSBAQAorOzsgQ29weXJpZ2h0IChDKSBKb2huIENvd2FuICgyMDE2KS4gQWxsIFJpZ2h0cyBS ZXNlcnZlZC4KKzs7IENvcHlyaWdodCAoQykgMjAxOSBieSBBbWFyIFNpbmdoPG5seUBkaXNy b290Lm9yZz4KKworOzsgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCis7OyBhIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKzs7ICJTb2Z0 d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcKKzs7IHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKzs7IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us IGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworOzsgcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvCis7OyB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKzs7IFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl Cis7OyBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZSBTb2Z0d2FyZS4KKworOzsgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCis7OyBFWFBSRVNTIE9SIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKzs7IE1F UkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECis7 OyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENP UFlSSUdIVCBIT0xERVJTCis7OyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4KKzs7IEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCis7OyBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElO R1MgSU4gVEhFCis7OyBTT0ZUV0FSRS4KKworKGRlZmluZS1tb2R1bGUgKHNyZmkgc3JmaS0x MjEgdGVzdHMpCisgICM6dXNlLW1vZHVsZSAoKHNyZmkgc3JmaS0xKSAjOnNlbGVjdCAodW5m b2xkKSkKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktNCkKKyAgIzp1c2UtbW9kdWxlIChz cmZpIHNyZmktMTEpCisgICM6dXNlLW1vZHVsZSAoKHNyZmkgc3JmaS0xMykgIzpzZWxlY3Qg KHN0cmluZy1mb3ItZWFjaCkpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTY0KQorICAj OnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xMjEpKQorCisoZGVmaW5lLXN5bnRheCB0ZXN0Cisg IChzeW50YXgtcnVsZXMgKCkKKyAgICAoKF8gYXJncyAuLi4pCisgICAgICh0ZXN0LWVxdWFs IGFyZ3MgLi4uKSkpKQorCisodGVzdC1iZWdpbiAiZ2VuZXJhdG9ycyIpCisKKyh0ZXN0LWdy b3VwICJnZW5lcmF0b3JzIgorICAodGVzdC1ncm91cCAiZ2VuZXJhdG9ycy9jb25zdHJ1Y3Rv cnMiCisgICAgKHRlc3QgJygpIChnZW5lcmF0b3ItPmxpc3QgKGdlbmVyYXRvcikpKQorICAg ICh0ZXN0ICcoMSAyIDMpIChnZW5lcmF0b3ItPmxpc3QgKGdlbmVyYXRvciAxIDIgMykpKQor ICAgICh0ZXN0ICcoOCA5IDEwKSAoZ2VuZXJhdG9yLT5saXN0IChtYWtlLWlvdGEtZ2VuZXJh dG9yIDMgOCkpKQorICAgICh0ZXN0ICcoOCAxMCAxMikgKGdlbmVyYXRvci0+bGlzdCAobWFr ZS1pb3RhLWdlbmVyYXRvciAzIDggMikpKQorICAgICh0ZXN0ICcoMyA0IDUgNikgKGdlbmVy YXRvci0+bGlzdCAobWFrZS1yYW5nZS1nZW5lcmF0b3IgMykgNCkpCisgICAgKHRlc3QgJygz IDQgNSA2IDcpIChnZW5lcmF0b3ItPmxpc3QgKG1ha2UtcmFuZ2UtZ2VuZXJhdG9yIDMgOCkp KQorICAgICh0ZXN0ICcoMyA1IDcpIChnZW5lcmF0b3ItPmxpc3QgKG1ha2UtcmFuZ2UtZ2Vu ZXJhdG9yIDMgOCAyKSkpCisgICAgKGxldCAoKGcgKG1ha2UtY29yb3V0aW5lLWdlbmVyYXRv cgorICAgICAgICAgICAgKGxhbWJkYSAoeWllbGQpIChsZXQgbG9vcCAoKGkgMCkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoPCBpIDMpICh5aWVsZCBpKSAobG9v cCAoKyBpIDEpKSkpKSkpKQorICAgICAgKHRlc3QgJygwIDEgMikgKGdlbmVyYXRvci0+bGlz dCBnKSkKKyAgICAgICh0ZXN0ICcoMSAyIDMgNCA1KSAoZ2VuZXJhdG9yLT5saXN0IChsaXN0 LT5nZW5lcmF0b3IgJygxIDIgMyA0IDUpKSkpCisgICAgICAodGVzdCAnKDEgMiAzIDQgNSkg KGdlbmVyYXRvci0+bGlzdCAodmVjdG9yLT5nZW5lcmF0b3IgJyMoMSAyIDMgNCA1KSkpKQor ICAgICAgKHRlc3QgJyg1IDQgMyAyIDEpIChnZW5lcmF0b3ItPmxpc3QgKHJldmVyc2UtdmVj dG9yLT5nZW5lcmF0b3IgJyMoMSAyIDMgNCA1KSkpKQorICAgICAgKHRlc3QgJygjXGEgI1xi ICNcYyAjXGQgI1xlKSAoZ2VuZXJhdG9yLT5saXN0IChzdHJpbmctPmdlbmVyYXRvciAiYWJj ZGUiKSkpCisgICAgICAodGVzdCAnKDEwIDIwIDMwKSAoZ2VuZXJhdG9yLT5saXN0IChieXRl dmVjdG9yLT5nZW5lcmF0b3IgKHU4dmVjdG9yIDEwIDIwIDMwKSkpKQorICAgICAgKGxldHJl YyAoKGZvci1lYWNoLWRpZ2l0IChsYW1iZGEgKHByb2MgbikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh3aGVuICg+IG4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxldC12YWx1ZXMgKCgoZGl2IHJlbSkgKHRydW5jYXRlLyBuIDEwKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2MgcmVtKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChmb3ItZWFjaC1kaWdpdCBwcm9jIGRpdikpKSkpKQor ICAgICAgICAodGVzdCAnKDUgNCAzIDIgMSkgKGdlbmVyYXRvci0+bGlzdAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChtYWtlLWZvci1lYWNoLWdlbmVyYXRvciBmb3ItZWFjaC1k aWdpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAxMjM0NSkpKQorICAgICAgICAodGVzdCAnKDAgMiA0IDYgOCAxMCkgKGdlbmVyYXRv ci0+bGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLXVuZm9sZC1n ZW5lcmF0b3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAocykg KD4gcyA1KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAocykg KCogcyAyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAocykg KCsgcyAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkpKSkpCisgICkg OyBlbmQgImdlbmVyYXRvcnMvY29uc3RydWN0b3JzIgorCisgICh0ZXN0LWdyb3VwICJnZW5l cmF0b3JzL29wZXJhdG9ycyIKKyAgICAodGVzdCAnKGEgYiAwIDEpIChnZW5lcmF0b3ItPmxp c3QgKGdjb25zKiAnYSAnYiAobWFrZS1yYW5nZS1nZW5lcmF0b3IgMCAyKSkpKQorICAgICh0 ZXN0ICcoMCAxIDIgMCAxKSAoZ2VuZXJhdG9yLT5saXN0IChnYXBwZW5kIChtYWtlLXJhbmdl LWdlbmVyYXRvciAwIDMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1ha2UtcmFuZ2UtZ2VuZXJhdG9yIDAgMikpKSkKKyAgICAodGVzdCAn KCkgKGdlbmVyYXRvci0+bGlzdCAoZ2FwcGVuZCkpKQorICAgIChsZXQgKChnMSAoZ2VuZXJh dG9yIDEgMiAzKSkKKyAgICAgICAgICAoZzIgKGdlbmVyYXRvciA0IDUgNiA3KSkKKyAgICAg ICAgICAocHJvYyAobGFtYmRhKiAoIzpyZXN0IGFyZ3MpICh2YWx1ZXMgKGFwcGx5ICsgYXJn cykgKGFwcGx5ICsgYXJncykpKSkpCisgICAgICAodGVzdCAnKDE1IDIyIDMxKSAoZ2VuZXJh dG9yLT5saXN0IChnY29tYmluZSBwcm9jIDEwIGcxIGcyKSkpCisgICAgICAodGVzdCAnKDEg MyA1IDcgOSkgKGdlbmVyYXRvci0+bGlzdCAoZ2ZpbHRlcgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9kZD8KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobWFrZS1yYW5nZS1nZW5lcmF0b3IgMSAxMSkpKSkKKyAg ICAgICh0ZXN0ICcoMiA0IDYgOCAxMCkgKGdlbmVyYXRvci0+bGlzdCAoZ3JlbW92ZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZGQ/CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLXJhbmdlLWdlbmVy YXRvciAxIDExKSkpKQorICAgICAgKGxldCAoKGcgKG1ha2UtcmFuZ2UtZ2VuZXJhdG9yIDEg NSkpKQorICAgICAgICAodGVzdCAnKDEgMiAzKSAoZ2VuZXJhdG9yLT5saXN0IChndGFrZSBn IDMpKSkKKyAgICAgICAgKHRlc3QgJyg0KSAoZ2VuZXJhdG9yLT5saXN0IGcpKQorICAgICAg ICAodGVzdCAnKDEgMikgKGdlbmVyYXRvci0+bGlzdCAoZ3Rha2UgKG1ha2UtcmFuZ2UtZ2Vu ZXJhdG9yIDEgMykgMykpKQorICAgICAgICAodGVzdCAnKDEgMiAwKSAoZ2VuZXJhdG9yLT5s aXN0IChndGFrZSAobWFrZS1yYW5nZS1nZW5lcmF0b3IgMSAzKSAzIDApKSkKKyAgICAgICAg KHRlc3QgJygzIDQpIChnZW5lcmF0b3ItPmxpc3QgKGdkcm9wIChtYWtlLXJhbmdlLWdlbmVy YXRvciAxIDUpIDIpKSkKKyAgICAgICAgKGxldCAoKGcgKG1ha2UtcmFuZ2UtZ2VuZXJhdG9y IDEgNSkpCisgICAgICAgICAgICAgIChzbWFsbD8gKGxhbWJkYSAoeCkgKDwgeCAzKSkpKQor ICAgICAgICAgICh0ZXN0ICcoMSAyKSAoZ2VuZXJhdG9yLT5saXN0IChndGFrZS13aGlsZSBz bWFsbD8gZykpKQorICAgICAgICAgIChsZXQgKChnIChtYWtlLXJhbmdlLWdlbmVyYXRvciAx IDUpKSkKKyAgICAgICAgICAgICh0ZXN0ICcoMyA0KSAoZ2VuZXJhdG9yLT5saXN0IChnZHJv cC13aGlsZSBzbWFsbD8gZykpKQorICAgICAgICAgICAgKHRlc3QgJygpIChnZW5lcmF0b3It Pmxpc3QgKGdkcm9wLXdoaWxlIChsYW1iZGEgYXJncyAjdCkgKGdlbmVyYXRvciAxIDIgMykp KSkKKyAgICAgICAgICAgICh0ZXN0ICcoMC4wIDEuMCAwIDIpIChnZW5lcmF0b3ItPmxpc3Qg KGdkZWxldGUgMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZ2VuZXJhdG9yIDAuMCAxLjAgMCAxIDIpKSkpCisgICAgICAg ICAgICAodGVzdCAnKDAuMCAwIDIpIChnZW5lcmF0b3ItPmxpc3QgKGdkZWxldGUgMQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChn ZW5lcmF0b3IgMC4wIDEuMCAwIDEgMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA9KSkpCisgICAgICAgICAgICAodGVzdCAnKGEg YyBlKSAoZ2VuZXJhdG9yLT5saXN0IChnaW5kZXggKGxpc3QtPmdlbmVyYXRvciAnKGEgYiBj IGQgZSBmKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobGlzdC0+Z2VuZXJhdG9yICcoMCAyIDQpKSkpKQorICAgICAgICAgICAgKHRl c3QgJyhhIGQgZSkgKGdlbmVyYXRvci0+bGlzdCAoZ3NlbGVjdCAobGlzdC0+Z2VuZXJhdG9y ICcoYSBiIGMgZCBlIGYpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobGlzdC0+Z2VuZXJhdG9yICcoI3QgI2YgI2YgI3QgI3QgI2Yp KSkpKQorICAgICAgICAgICAgKHRlc3QgJygxIDIgMykgKGdlbmVyYXRvci0+bGlzdCAoZ2Rl bGV0ZS1uZWlnaGJvci1kdXBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoZ2VuZXJhdG9yIDEgMSAyIDMgMyAzKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSkpKQorICAgICAgICAgICAgKHRlc3QgJygx KSAoZ2VuZXJhdG9yLT5saXN0IChnZGVsZXRlLW5laWdoYm9yLWR1cHMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdlbmVyYXRvciAxIDIgMykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSBhcmdzICN0KSkp KSkpKSkKKyAgKSA7IGVuZCAiZ2VuZXJhdG9ycy9vcGVyYXRvcnMiCisKKyAgKHRlc3QtZ3Jv dXAgImdlbmVyYXRvcnMvY29uc3VtZXJzIgorICAgIDs7IG5vIHRlc3QgZm9yIHBsYWluIGdl bmVyYXRvci0+bGlzdCAodXNlZCB0aHJvdWdob3V0KQorICAgICh0ZXN0ICcoMSAyIDMpIChn ZW5lcmF0b3ItPmxpc3QgKGdlbmVyYXRvciAxIDIgMyA0IDUpIDMpKQorICAgICh0ZXN0ICco NSA0IDMgMiAxKSAoZ2VuZXJhdG9yLT5yZXZlcnNlLWxpc3QgKGdlbmVyYXRvciAxIDIgMyA0 IDUpKSkKKyAgICAodGVzdCAnIygxIDIgMyA0IDUpIChnZW5lcmF0b3ItPnZlY3RvciAoZ2Vu ZXJhdG9yIDEgMiAzIDQgNSkpKQorICAgICh0ZXN0ICcjKDEgMiAzKSAoZ2VuZXJhdG9yLT52 ZWN0b3IgKGdlbmVyYXRvciAxIDIgMyA0IDUpIDMpKQorICAgICh0ZXN0ICJhYmMiIChnZW5l cmF0b3ItPnN0cmluZyAoZ2VuZXJhdG9yICNcYSAjXGIgI1xjKSkpCisgICAgKHRlc3QgJyhl IGQgYyBiIGEgLiB6KSAod2l0aC1pbnB1dC1mcm9tLXN0cmluZyAiYSBiIGMgZCBlIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgpIChnZW5lcmF0b3ItZm9sZCBj b25zICd6IHJlYWQpKSkpCisKKyAgICAobGV0ICgobiAwKSkKKyAgICAgIChnZW5lcmF0b3It Zm9yLWVhY2ggKGxhbWJkYSB2YWx1ZXMgKHNldCEgbiAoYXBwbHkgKyB2YWx1ZXMpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgKGdlbmVyYXRvciAxKSAoZ2VuZXJhdG9yIDIpIChn ZW5lcmF0b3IgMykpCisgICAgICAodGVzdCA2IG4pCisgICAgICAodGVzdCAzIChnZW5lcmF0 b3ItZmluZCAobGFtYmRhICh4KSAoPiB4IDIpKSAobWFrZS1yYW5nZS1nZW5lcmF0b3IgMSA1 KSkpCisgICAgICAodGVzdCAyIChnZW5lcmF0b3ItY291bnQgb2RkPyAobWFrZS1yYW5nZS1n ZW5lcmF0b3IgMSA1KSkpCisgICAgICAobGV0ICgoZyAobWFrZS1yYW5nZS1nZW5lcmF0b3Ig MiA1KSkpCisgICAgICAgICh0ZXN0ICN0IChnZW5lcmF0b3ItYW55IG9kZD8gZykpCisgICAg ICAgICh0ZXN0ICcoNCkgKGdlbmVyYXRvci0+bGlzdCBnKSkKKyAgICAgICAgKGxldCAoKGcg KG1ha2UtcmFuZ2UtZ2VuZXJhdG9yIDIgNSkpKQorICAgICAgICAgICh0ZXN0ICNmIChnZW5l cmF0b3ItZXZlcnkgb2RkPyBnKSkKKyAgICAgICAgICAodGVzdCAnKDMgNCkgKGdlbmVyYXRv ci0+bGlzdCBnKSkKKyAgICAgICAgICAodGVzdCAnKCNcYSAjXGIgI1xjKSAoZ2VuZXJhdG9y LXVuZm9sZCAobWFrZS1mb3ItZWFjaC1nZW5lcmF0b3Igc3RyaW5nLWZvci1lYWNoICJhYmMi KSB1bmZvbGQpKSkpKQorCisgICkgOyBlbmQgImdlbmVyYXRvcnMvY29uc3VtZXJzIgorCisp IDsgZW5kICJnZW5lcmF0b3JzIgorCisodGVzdC1lbmQgImdlbmVyYXRvcnMiKQotLSAKMi4y Mi4wCgo= ----=_RainLoop_730_418439822.1561939748--