From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI autolearn=ham autolearn_force=no version=3.4.4 Received: from cgl.ntg.nl (Cgl.ntg.nl [5.39.185.202]) by inbox.vuxu.org (Postfix) with ESMTP id AC98225A50 for ; Tue, 14 Jan 2025 11:02:09 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by cgl.ntg.nl (Postfix) with ESMTP id 730FF485427 for ; Tue, 14 Jan 2025 11:01:23 +0100 (CET) Authentication-Results: cgl.ntg.nl (amavisd-new); dkim=pass (1024-bit key) reason="pass (just generated, assumed good)" header.d=ntg.nl DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ntg.nl; h= list-unsubscribe:list-subscribe:list-post:list-owner:list-help :list-archive:archived-at:list-id:subject:subject:reply-to :precedence:in-reply-to:from:from:references:user-agent :mime-version:date:date:message-id:content-type:content-type :received:received:received:received:received:received:received; s=cgl; t=1736848881; x=1739440882; bh=iNm23zFmyHirV0xZWd9iz3HQh Ap/W1/L4TEr9qNguP0=; b=AWNNd2OacQPvbVX5sFNhHDpQtteeAs3tZ5//6MFm9 b7K5yilCT0DMpNuKacoPnFQn6ot0eamEpXex8v4L+Nkl35Qwc/PyNO+7a9XrU3zp rJ8RW+NCRlOpq6FVAh/qtdCX7YkfH+BFcRuwxUR/s3JeLf9GFKdW7pS8kyMSONNb gA= X-Virus-Scanned: Debian amavisd-new at cgl.ntg.nl Authentication-Results: cgl.ntg.nl (amavisd-new); dkim=fail (2048-bit key) reason="fail (message has been altered)" header.d=gmail.com Received: from cgl.ntg.nl ([127.0.0.1]) by localhost (cgl.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id C-X2otyq1Kfj for ; Tue, 14 Jan 2025 11:01:21 +0100 (CET) Received: from cgl.ntg.nl (localhost [127.0.0.1]) by cgl.ntg.nl (Postfix) with ESMTP id F0C42485431 for ; Tue, 14 Jan 2025 10:58:13 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by cgl.ntg.nl (Postfix) with ESMTP id 5C64648059E for ; Mon, 13 Jan 2025 20:09:42 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at cgl.ntg.nl Received: from cgl.ntg.nl ([127.0.0.1]) by localhost (cgl.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id e1w-RvdDDqOm for ; Mon, 13 Jan 2025 20:09:40 +0100 (CET) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=209.85.208.45; helo=mail-ed1-f45.google.com; envelope-from=wolfgang.schuster.lists@gmail.com; receiver= Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by cgl.ntg.nl (Postfix) with ESMTPS id 9C09248059D for ; Mon, 13 Jan 2025 20:09:40 +0100 (CET) Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-5d96944401dso7883249a12.0 for ; Mon, 13 Jan 2025 11:09:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736795380; x=1737400180; darn=ntg.nl; h=in-reply-to:from:references:to:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=0yY4nYkLtjlOa4uPsolTCixsHZDqSm2xW0GpyIF9F4Q=; b=Hlae4OwFLQlrHo6RGr+NwYSF+cpLCkcuKcOsIc3CjnqD54QIcqdLMHGWzStQjdfQK2 nBeGwKWOiPqORCGwOdCYSjwXD/s6WSy54qN8IxW0sNbXYPvYyaz27JF01ARz9j4zsET4 hLBSIMa5rxs/4cZ8VD1VcRONLThZm59doJXrYN2oGeBN4PufxH9z1x6AQbHQ7+9ZAz/r v7oiuGRoe+wOeXGxvL05tPvVmo3LhP/ivil7qw6X55joTd0MsvWIyFwMG955WDQYU3om cYxqSTAkkAItXevUBOHeXP/RKOQypC1wnLrp+1jYyRlSlq3uOUceaij6iOtVx5m/Rrm5 /NUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736795380; x=1737400180; h=in-reply-to:from:references:to:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=0yY4nYkLtjlOa4uPsolTCixsHZDqSm2xW0GpyIF9F4Q=; b=TImMPDXy2sbrdDqTdrscs3DEAK2NnTN5q6afybEwNeMFo3Dxf0eo3o8qYXFD55xyxu B8oVb46KWzAH4b7vHusapvdAHAN873iTgndUZCKgLkaIbCs8r5xHOGr+ccYFd22CVVe1 AGyyzz8nKakS+56zcDNGzr+jRegwK+19PgbwsGduhGjfQz/7sgd0wdPmOfne3vP3erSK NgH2IzfL1i/32a/xUwtjw2CDZiQY+zlmLJMGn6EvjmmZLizTcwYcviGQJ9bZQQ8+dNVC wF86UGfSt9vZm4bYdiikZu9CW1hhjsNMqbAbC19DE0wM6QbqhHm/0WxNXTc7mK85loPv NjGQ== X-Gm-Message-State: AOJu0YxTynDjPXKnttqOGkUViObVtjLP1fOodXxMP7LZhw2KJc56xvKy 91K+X0PRQ26AItPU2QbOsxKFZP5JLZotxlfio+vpI+MuEJN9SyZBrGo69fkj X-Gm-Gg: ASbGncuXty4S5yUDcad43S3UTqfB/MSTpFOyqkIiD4s3bxutVdhI6kSFVLBZBljolBE 0hUpMEr8GyVwlihgzd67Y6pbL71vzz1izROc7p0042hLejbI4h1Y9c+FgUd23xZLSQptbzGjIaN uh7xULrbqVRXX3w0plqo2WmljkK4gZCOyH2SHijiCoxnY1eQy00m9FlCBoTdOQXgIzi1nC8I7ZB 5233WOiIv3BtB1lGl4ecoWu5hQIQ0iGCV4z4DkhmERCmtduvuFQM9ooIY67PhEi7DbIlEW79izG c/90iiF/Q++rYRki8RTco3qUU8xxruUbWnNCtNWtMY4qpuabJr4W X-Google-Smtp-Source: AGHT+IFExwyqrc1ZuD7yz3YuUt8L5jvpgIUPadagatPgpxrjefLEewQkQsRXd4prXwNtwH8CaUwBSA== X-Received: by 2002:a05:6402:2681:b0:5d0:214b:96b0 with SMTP id 4fb4d7f45d1cf-5d972dfbc21mr20321525a12.1.1736795379496; Mon, 13 Jan 2025 11:09:39 -0800 (PST) Received: from ?IPV6:2a02:810d:a8c0:7ec:f8c0:fe38:8ef7:3615? ([2a02:810d:a8c0:7ec:f8c0:fe38:8ef7:3615]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5d9f05e49b0sm473385a12.31.2025.01.13.11.09.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 13 Jan 2025 11:09:38 -0800 (PST) Content-Type: multipart/mixed; boundary="------------1THcyOpfvDot0O2b9L7Z00gV" Message-ID: <96dda98f-5b5d-4801-95ae-b470b6daadeb@gmail.com> Date: Mon, 13 Jan 2025 20:09:39 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: mailing list for ConTeXt users , Hans Hagen References: <231b160a-cb78-4128-90e6-8b78e7b20b6e@gmail.com> <173665901037.1761.13304785472595597880@cgl.ntg.nl> <41e33f72-d501-47c0-aff7-0ba3ea44011c@gmail.com> <93f2ca42-9693-4a63-8949-ac3092a4632b@xs4all.nl> From: Wolfgang Schuster In-Reply-To: <93f2ca42-9693-4a63-8949-ac3092a4632b@xs4all.nl> X-MailFrom: wolfgang.schuster.lists@gmail.com X-Mailman-Rule-Hits: max-size X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; news-moderation; no-subject; digests; suspicious-header Message-ID-Hash: DTGY6XKNPDUBU4ECEV7KU5BPTNIZ6FFR X-Message-ID-Hash: DTGY6XKNPDUBU4ECEV7KU5BPTNIZ6FFR X-Mailman-Approved-At: Tue, 14 Jan 2025 10:57:51 +0100 X-Mailman-Version: 3.3.9 Precedence: list Reply-To: mailing list for ConTeXt users Subject: [NTG-context] Re: Weird date output List-Id: mailing list for ConTeXt users Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: This is a multi-part message in MIME format. --------------1THcyOpfvDot0O2b9L7Z00gV Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Am 13.01.2025 um 19:02 schrieb Hans Hagen: > On 1/13/2025 5:43 PM, Wolfgang Schuster wrote: >> Am 12.01.2025 um 06:16 schrieb autumnus: >>> Thank you for your explanation. >>> Regarding the space after the month, >>> will it be added to the ConTeXt in the future? >>> I'm worried that after I patch it, >>> it will be overwritten when I update it later. >> >> It depends whether Hans includes the fix or not. >=20 > You mean this? >=20 > \c!date=3D{\v!year,=E5=B9=B4,\space,\v!month,\v!day,=E6=97=A5} >=20 > It also depends on Tomas who deals with languages, No, I sent a patched core-con.lmt in a previous mail where I added local packed =3D { ["cn"] =3D true } on line 1881 and changed line 1916 from if not auto and spaced[tag] then to if not auto and not packed[currentlanguage] and spaced[tag] then Wolfgang --------------1THcyOpfvDot0O2b9L7Z00gV Content-Type: text/plain; charset=UTF-8; name="core-con.lmt" Content-Disposition: attachment; filename="core-con.lmt" Content-Transfer-Encoding: base64 aWYgbm90IG1vZHVsZXMgdGhlbiBtb2R1bGVzID0geyB9IGVuZCBtb2R1bGVzIFsnY29yZS1j b24nXSA9IHsKICAgIHZlcnNpb24gICA9IDEuMDAxLAogICAgY29tbWVudCAgID0gImNvbXBh bmlvbiB0byBjb3JlLWNvbi5ta2l2IiwKICAgIGF1dGhvciAgICA9ICJIYW5zIEhhZ2VuLCBQ UkFHTUEtQURFLCBIYXNzZWx0IE5MIiwKICAgIGNvcHlyaWdodCA9ICJQUkFHTUEgQURFIC8g Q29uVGVYdCBEZXZlbG9wbWVudCBUZWFtIiwKICAgIGxpY2Vuc2UgICA9ICJzZWUgY29udGV4 dCByZWxhdGVkIHJlYWRtZSBmaWxlcyIKfQoKLS0gdG9kbzogc3BsaXQgaW50byBsYW5nLWNv bi5sdWEgYW5kIGNvcmUtY29uLmx1YQoKLS0gVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhIGJ1 bmNoIG9mIGNvbnZlcnNpb25zLiBTb21lIGFyZSBtb3JlIGVmZmljaWVudCB0aGFuIHRoZWly Ci0tIFRlWCBjb3VudGVycGFydCwgc29tZSBhcmUgZXZlbiBzbG93ZXIgYnV0IGxvb2sgbmlj ZXIgdGhpcyB3YXkuIFNvbWUgY29kZSBtYXkgbW92ZQotLSB0byBhIG1vZHVsZSBpbiB0aGUg bGFuZ3VhZ2UgbmFtZXNwYWNlLgoKbG9jYWwgZmxvb3IgPSBtYXRoLmZsb29yCmxvY2FsIG9z ZGF0ZSwgb3N0aW1lLCBvc3RpbWV6b25lID0gb3MuZGF0ZSwgb3MudGltZSwgb3MudGltZXpv bmUKbG9jYWwgY29uY2F0LCBpbnNlcnQsIHJldmVyc2UgPSB0YWJsZS5jb25jYXQsIHRhYmxl Lmluc2VydCwgdGFibGUucmV2ZXJzZQpsb2NhbCBsb3dlciwgdXBwZXIsIHJlcCwgbWF0Y2gs IGdzdWIsIGdtYXRjaCA9IHN0cmluZy5sb3dlciwgc3RyaW5nLnVwcGVyLCBzdHJpbmcucmVw LCBzdHJpbmcubWF0Y2gsIHN0cmluZy5nc3ViLCBzdHJpbmcuZ21hdGNoCmxvY2FsIHV0ZmNo YXIsIHV0ZmJ5dGUgPSB1dGYuY2hhciwgdXRmLmJ5dGUKbG9jYWwgdG9udW1iZXIsIHRvc3Ry aW5nLCB0eXBlLCByYXdzZXQgPSB0b251bWJlciwgdG9zdHJpbmcsIHR5cGUsIHJhd3NldAps b2NhbCBQLCBTLCBSLCBDYywgQ3QsIENzLCBDLCBWLCBDYXJnID0gbHBlZy5QLCBscGVnLlMs IGxwZWcuUiwgbHBlZy5DYywgbHBlZy5DdCwgbHBlZy5DcywgbHBlZy5DLCBscGVnLlYsIGxw ZWcuQ2FyZwotLS0tLSBDZiwgQ2cgPSBscGVnLkNmLCBscGVnLkNnCmxvY2FsIGxwZWdtYXRj aCwgbHBlZ3BhdHRlcm5zID0gbHBlZy5tYXRjaCwgbHBlZy5wYXR0ZXJucwpsb2NhbCBkaXYs IG1vZCA9IG1hdGguZGl2LCBtYXRoLm1vZAoKbG9jYWwgY29udGV4dCAgICAgICAgICAgID0g Y29udGV4dApsb2NhbCBjb21tYW5kcyAgICAgICAgICAgPSBjb21tYW5kcwpsb2NhbCBpbXBs ZW1lbnQgICAgICAgICAgPSBpbnRlcmZhY2VzLmltcGxlbWVudAoKbG9jYWwgc2V0dGluZ3Nf dG9fYXJyYXkgID0gdXRpbGl0aWVzLnBhcnNlcnMuc2V0dGluZ3NfdG9fYXJyYXkKbG9jYWwg YWxsb2NhdGUgICAgICAgICAgID0gdXRpbGl0aWVzLnN0b3JhZ2UuYWxsb2NhdGUKbG9jYWwg c2V0bWV0YXRhYmxlaW5kZXggID0gdGFibGUuc2V0bWV0YXRhYmxlaW5kZXgKbG9jYWwgZm9y bWF0dGVycyAgICAgICAgID0gc3RyaW5nLmZvcm1hdHRlcnMKbG9jYWwgdmFyaWFibGVzICAg ICAgICAgID0gaW50ZXJmYWNlcy52YXJpYWJsZXMKbG9jYWwgY29uc3RhbnRzICAgICAgICAg ID0gaW50ZXJmYWNlcy5jb25zdGFudHMKbG9jYWwgYWRkZm9ybWF0dGVyICAgICAgID0gdXRp bGl0aWVzLnN0cmluZ3MuZm9ybWF0dGVycy5hZGQKCmxvY2FsIHRleHNldCAgICAgICAgICAg ICA9IHRleC5zZXQKCmNvbnZlcnRlcnMgICAgICAgICAgICAgICA9IGNvbnZlcnRlcnMgb3Ig eyB9CmxvY2FsIGNvbnZlcnRlcnMgICAgICAgICA9IGNvbnZlcnRlcnMKCmxhbmd1YWdlcyAg ICAgICAgICAgICAgICA9IGxhbmd1YWdlcyAgb3IgeyB9CmxvY2FsIGxhbmd1YWdlcyAgICAg ICAgICA9IGxhbmd1YWdlcwoKbG9jYWwgaGVscGVycyAgICAgICAgICAgID0gY29udmVydGVy cy5oZWxwZXJzIG9yIHsgfQpjb252ZXJ0ZXJzLmhlbHBlcnMgICAgICAgPSBoZWxwZXJzCgps b2NhbCBjdHhfbGFiZWx0ZXh0ICAgICAgPSBjb250ZXh0LmxhYmVsdGV4dApsb2NhbCBjdHhf TEFCRUxURVhUICAgICAgPSBjb250ZXh0LkxBQkVMVEVYVApsb2NhbCBjdHhfc3BhY2UgICAg ICAgICAgPSBjb250ZXh0LnNwYWNlCmxvY2FsIGN0eF9jb252ZXJ0bnVtYmVyICA9IGNvbnRl eHQuY29udmVydG51bWJlcgpsb2NhbCBjdHhfaGlnaG9yZGluYWxzdHIgPSBjb250ZXh0Lmhp Z2hvcmRpbmFsc3RyCgpjb252ZXJ0ZXJzLm51bWJlciAgPSB0b251bWJlcgpjb252ZXJ0ZXJz Lm51bWJlcnMgPSB0b251bWJlcgoKaW1wbGVtZW50IHsgbmFtZSA9ICJudW1iZXIiLCAgYWN0 aW9ucyA9IGNvbnRleHQgfQppbXBsZW1lbnQgeyBuYW1lID0gIm51bWJlcnMiLCBhY3Rpb25z ID0gY29udGV4dCB9CgotLSB0byBiZSByZWNvbnNpZGVyZWQgLi4uIGxhbmd1YWdlcyBuYW1l c3BhY2UgaGVyZSwgbWlnaHQgYmVjb21lIGxvY2FsIHBsdXMgYSByZWdpc3RlciBjb21tYW5k Cgpsb2NhbCBjb3VudGVycyA9IGFsbG9jYXRlIHsKICAgIFsnZGVmYXVsdCddID0geyAtLSBu byBtZXRhdGFibGUgYXMgd2UgZG8gYSB0ZXN0IG9uIGtleXMKICAgICAgICAweDAwNjEsIDB4 MDA2MiwgMHgwMDYzLCAweDAwNjQsIDB4MDA2NSwKICAgICAgICAweDAwNjYsIDB4MDA2Nywg MHgwMDY4LCAweDAwNjksIDB4MDA2QSwKICAgICAgICAweDAwNkIsIDB4MDA2QywgMHgwMDZE LCAweDAwNkUsIDB4MDA2RiwKICAgICAgICAweDAwNzAsIDB4MDA3MSwgMHgwMDcyLCAweDAw NzMsIDB4MDA3NCwKICAgICAgICAweDAwNzUsIDB4MDA3NiwgMHgwMDc3LCAweDAwNzgsIDB4 MDA3OSwKICAgICAgICAweDAwN0EKICAgIH0sCiAgICBbJ3Nsb3ZlbmlhbiddID0gewogICAg ICAgIDB4MDA2MSwgMHgwMDYyLCAweDAwNjMsIDB4MDEwRCwgMHgwMDY0LAogICAgICAgIDB4 MDA2NSwgMHgwMDY2LCAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LAogICAgICAgIDB4MDA2QSwg MHgwMDZCLCAweDAwNkMsIDB4MDA2RCwgMHgwMDZFLAogICAgICAgIDB4MDA2RiwgMHgwMDcw LCAweDAwNzIsIDB4MDA3MywgMHgwMTYxLAogICAgICAgIDB4MDA3NCwgMHgwMDc1LCAweDAw NzYsIDB4MDA3QSwgMHgwMTdFCiAgICB9LAogICAgWydzcGFuaXNoJ10gPSB7CiAgICAgICAg MHgwMDYxLCAweDAwNjIsIDB4MDA2MywgMHgwMDY0LCAweDAwNjUsCiAgICAgICAgMHgwMDY2 LCAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LCAweDAwNkEsCiAgICAgICAgMHgwMDZCLCAweDAw NkMsIDB4MDA2RCwgMHgwMDZFLCAweDAwRjEsCiAgICAgICAgMHgwMDZGLCAweDAwNzAsIDB4 MDA3MSwgMHgwMDcyLCAweDAwNzMsCiAgICAgICAgMHgwMDc0LCAweDAwNzUsIDB4MDA3Niwg MHgwMDc3LCAweDAwNzgsCiAgICAgICAgMHgwMDc5LCAweDAwN0EKICAgIH0sCiAgICBbJ3J1 c3NpYW4nXSA9IHsKICAgICAgICAweDA0MzAsIDB4MDQzMSwgMHgwNDMyLCAweDA0MzMsIDB4 MDQzNCwKICAgICAgICAweDA0MzUsIDB4MDQzNiwgMHgwNDM3LCAweDA0MzgsIDB4MDQzYSwK ICAgICAgICAweDA0M2IsIDB4MDQzYywgMHgwNDNkLCAweDA0M2UsIDB4MDQzZiwKICAgICAg ICAweDA0NDAsIDB4MDQ0MSwgMHgwNDQyLCAweDA0NDMsIDB4MDQ0NCwKICAgICAgICAweDA0 NDUsIDB4MDQ0NiwgMHgwNDQ3LCAweDA0NDgsIDB4MDQ0OSwKICAgICAgICAweDA0NGQsIDB4 MDQ0ZSwgMHgwNDRmCiAgICB9LAogICAgWydncmVlayddID0geyAtLSB0aGlzIHNob3VsZCBi ZSB0aGUgbG93ZXJjYXNlIHRhYmxlCiAgICAgLS0gMHgwMzkxLCAweDAzOTIsIDB4MDM5Mywg MHgwMzk0LCAweDAzOTUsCiAgICAgLS0gMHgwMzk2LCAweDAzOTcsIDB4MDM5OCwgMHgwMzk5 LCAweDAzOUEsCiAgICAgLS0gMHgwMzlCLCAweDAzOUMsIDB4MDM5RCwgMHgwMzlFLCAweDAz OUYsCiAgICAgLS0gMHgwM0EwLCAweDAzQTEsIDB4MDNBMywgMHgwM0E0LCAweDAzQTUsCiAg ICAgLS0gMHgwM0E2LCAweDAzQTcsIDB4MDNBOCwgMHgwM0E5CiAgICAgICAgMHgwM0IxLCAw eDAzQjIsIDB4MDNCMywgMHgwM0I0LCAweDAzQjUsCiAgICAgICAgMHgwM0I2LCAweDAzQjcs IDB4MDNCOCwgMHgwM0I5LCAweDAzQkEsCiAgICAgICAgMHgwM0JCLCAweDAzQkMsIDB4MDNC RCwgMHgwM0JFLCAweDAzQkYsCiAgICAgICAgMHgwM0MwLCAweDAzQzEsIDB4MDNDMywgMHgw M0M0LCAweDAzQzUsCiAgICAgICAgMHgwM0M2LCAweDAzQzcsIDB4MDNDOCwgMHgwM0M5LAog ICAgfSwKICAgIFsnYXJhYmljJ10gPSB7CiAgICAgICAgMHgwNjI3LCAweDA2MjgsIDB4MDYy QywgMHgwNjJGLCAweDA2NDcsCiAgICAgICAgMHgwNjQ4LCAweDA2MzIsIDB4MDYyRCwgMHgw NjM3LCAweDA2NDksCiAgICAgICAgMHgwNjQzLCAweDA2NDQsIDB4MDY0NSwgMHgwNjQ2LCAw eDA2MzMsCiAgICAgICAgMHgwNjM5LCAweDA2NDEsIDB4MDYzNSwgMHgwNjQyLCAweDA2MzEs CiAgICAgICAgMHgwNjM0LCAweDA2MkEsIDB4MDYyQiwgMHgwNjJFLCAweDA2MzAsCiAgICAg ICAgMHgwNjM2LCAweDA2MzgsIDB4MDYzQSwKICAgIH0sCiAgICBbJ3BlcnNpYW4nXSA9IHsK ICAgICAgICAweDA2MjcsIDB4MDYyOCwgMHgwNjJDLCAweDA2MkYsIDB4MDY0NywKICAgICAg ICAweDA2NDgsIDB4MDYzMiwgMHgwNjJELCAweDA2MzcsIDB4MDY0OSwKICAgICAgICAweDA2 QTksIDB4MDY0NCwgMHgwNjQ1LCAweDA2NDYsIDB4MDYzMywKICAgICAgICAweDA2MzksIDB4 MDY0MSwgMHgwNjM1LCAweDA2NDIsIDB4MDYzMSwKICAgICAgICAweDA2MzQsIDB4MDYyQSwg MHgwNjJCLCAweDA2MkUsIDB4MDYzMCwKICAgICAgICAweDA2MzYsIDB4MDYzOCwgMHgwNjNB LAogICAgfSwKICAgIFsndGhhaSddID0gewogICAgICAgIDB4RTA1MCwgMHhFMDUxLCAweEUw NTIsIDB4RTA1MywgMHhFMDU0LAogICAgICAgIDB4RTA1NSwgMHhFMDU2LCAweEUwNTcsIDB4 RTA1OCwgMHhFMDU5CiAgICB9LAogICAgWydkZXZhbmFnYXJpJ10gPSB7CiAgICAgLS0g4KWm IOClpyDgpagg4KWpIOClqiDgpasg4KWsIOClrSDgpa4g4KWvCiAgICAgICAgMHgwOTY2LCAw eDA5NjcsIDB4MDk2OCwgMHgwOTY5LCAweDA5NkEsCiAgICAgICAgMHgwOTZCLCAweDA5NkMs IDB4MDk2RCwgMHgwOTZFLCAweDA5NkYKICAgIH0sCiAgICBbJ2d1cm11cmtoaSddID0gewog ICAgICAgIDB4MEE2NiwgMHgwQTY3LCAweDBBNjgsIDB4MEE2OSwgMHgwQTZBLAogICAgICAg IDB4MEE2QiwgMHgwQTZDLCAweDBBNkQsIDB4MEE2RSwgMHgwQTZGCiAgICB9LAogICAgWydn dWphcmF0aSddID0gewogICAgICAgIDB4MEFFNiwgMHgwQUU3LCAweDBBRTgsIDB4MEFFOSwg MHgwQUVBLAogICAgICAgIDB4MEFFQiwgMHgwQUVDLCAweDBBRUQsIDB4MEFFRSwgMHgwQUVG CiAgICB9LAogICAgWyd0aWJldGFuJ10gPSB7CiAgICAgICAgMHgwRjIwLCAweDBGMjEsIDB4 MEYyMiwgMHgwRjIzLCAweDBGMjQsCiAgICAgICAgMHgwRjI1LCAweDBGMjYsIDB4MEYyNywg MHgwRjI4LCAweDBGMjkKICAgIH0sCiAgICBbJ2tvcmVhbiddID0gewogICAgICAgIDB4MzEz MSwgMHgzMTM0LCAweDMxMzcsIDB4MzEzOSwgMHgzMTQxLAogICAgICAgIDB4MzE0MiwgMHgz MTQ1LCAweDMxNDcsIDB4MzE0OCwgMHgzMTRBLAogICAgICAgIDB4MzE0QiwgMHgzMTRDLCAw eDMxNEQsIDB4MzE0RQogICAgfSwKICAgIFsna29yZWFuLXBhcmVudGhlc2lzJ10gPSB7IC0t CiAgICAgICAgMHgzMjAwLCAweDMyMDEsIDB4MzIwMiwgMHgzMjAzLCAweDMyMDQsCiAgICAg ICAgMHgzMjA1LCAweDMyMDYsIDB4MzIwNywgMHgzMjA4LCAweDMyMDksCiAgICAgICAgMHgz MjBBLCAweDMyMEIsIDB4MzIwQywgMHgzMjBECiAgICB9LAogICAgWydrb3JlYW4tY2lyY2xl J10gPSB7IC0tIGNpcmNsZWQKICAgICAgICAweDMyNjAsIDB4MzI2MSwgMHgzMjYyLCAweDMy NjMsIDB4MzI2NCwKICAgICAgICAweDMyNjUsIDB4MzI2NiwgMHgzMjY3LCAweDMyNjgsIDB4 MzI2OSwKICAgICAgICAweDMyNkEsIDB4MzI2QiwgMHgzMjZDLCAweDMyNkQKICAgIH0sCiAg ICBbJ2hpcmFnYW5hJ10gPSB7CiAgICAgICAgMHgzMDQyLCAweDMwNDQsIDB4MzA0NiwgMHgz MDQ4LCAweDMwNEEsCiAgICAgICAgMHgzMDRCLCAweDMwNEQsIDB4MzA0RiwgMHgzMDUxLCAw eDMwNTMsCiAgICAgICAgMHgzMDU1LCAweDMwNTcsIDB4MzA1OSwgMHgzMDVCLCAweDMwNUQs CiAgICAgICAgMHgzMDVGLCAweDMwNjEsIDB4MzA2NCwgMHgzMDY2LCAweDMwNjgsCiAgICAg ICAgMHgzMDZBLCAweDMwNkIsIDB4MzA2QywgMHgzMDZELCAweDMwNkUsCiAgICAgICAgMHgz MDZGLCAweDMwNzIsIDB4MzA3NSwgMHgzMDc4LCAweDMwN0IsCiAgICAgICAgMHgzMDdFLCAw eDMwN0YsIDB4MzA4MCwgMHgzMDgxLCAweDMwODIsCiAgICAgICAgMHgzMDg0LCAgICAgICAg IDB4MzA4NiwgICAgICAgICAweDMwODgsCiAgICAgICAgMHgzMDg5LCAweDMwOEEsIDB4MzA4 QiwgMHgzMDhDLCAweDMwOEQsCiAgICAgICAgMHgzMDhGLCAweDMwOTAsICAgICAgICAgMHgz MDkxLCAweDMwOTIsCiAgICAgICAgMHgzMDkzCiAgICB9LAogICAgWydoaXJhZ2FuYS1pcm9o YSddID0gewogICAgICAgIDB4MzA0NCwgMHgzMDhELCAweDMwNkYsIDB4MzA2QiwgMHgzMDdC LCAweDMwNzgsIDB4MzA2OCwKICAgICAgICAweDMwNjEsIDB4MzA4QSwgMHgzMDZDLCAweDMw OEIsIDB4MzA5MiwKICAgICAgICAweDMwOEYsIDB4MzA0QiwgMHgzMDg4LCAweDMwNUYsIDB4 MzA4QywgMHgzMDVELAogICAgICAgIDB4MzA2NCwgMHgzMDZELCAweDMwNkEsIDB4MzA4OSwg MHgzMDgwLAogICAgICAgIDB4MzA0NiwgMHgzMDkwLCAweDMwNkUsIDB4MzA0QSwgMHgzMDRG LCAweDMwODQsIDB4MzA3RSwKICAgICAgICAweDMwNTEsIDB4MzA3NSwgMHgzMDUzLCAweDMw NDgsIDB4MzA2NiwKICAgICAgICAweDMwNDIsIDB4MzA1NSwgMHgzMDRELCAweDMwODYsIDB4 MzA4MSwgMHgzMDdGLCAweDMwNTcsCiAgICAgICAgMHgzMDkxLCAweDMwNzIsIDB4MzA4Miwg MHgzMDVCLCAweDMwNTkKICAgIH0sCiAgICBbJ2thdGFrYW5hJ10gPSB7CiAgICAgICAgMHgz MEEyLCAweDMwQTQsIDB4MzBBNiwgMHgzMEE4LCAweDMwQUEsCiAgICAgICAgMHgzMEFCLCAw eDMwQUQsIDB4MzBBRiwgMHgzMEIxLCAweDMwQjMsCiAgICAgICAgMHgzMEI1LCAweDMwQjcs IDB4MzBCOSwgMHgzMEJCLCAweDMwQkQsCiAgICAgICAgMHgzMEJGLCAweDMwQzEsIDB4MzBD NCwgMHgzMEM2LCAweDMwQzgsCiAgICAgICAgMHgzMENBLCAweDMwQ0IsIDB4MzBDQywgMHgz MENELCAweDMwQ0UsCiAgICAgICAgMHgzMENGLCAweDMwRDIsIDB4MzBENSwgMHgzMEQ4LCAw eDMwREIsCiAgICAgICAgMHgzMERFLCAweDMwREYsIDB4MzBFMCwgMHgzMEUxLCAweDMwRTIs CiAgICAgICAgMHgzMEU0LCAgICAgICAgIDB4MzBFNiwgICAgICAgICAweDMwRTgsCiAgICAg ICAgMHgzMEU5LCAweDMwRUEsIDB4MzBFQiwgMHgzMEVDLCAweDMwRUQsCiAgICAgICAgMHgz MEVGLCAweDMwRjAsICAgICAgICAgMHgzMEYxLCAweDMwRjIsCiAgICAgICAgMHgzMEYzCiAg ICB9LAogICAgWydrYXRha2FuYS1pcm9oYSddID0gewogICAgICAgIDB4MzBBNCwgMHgzMEVE LCAweDMwQ0YsIDB4MzBDQiwgMHgzMERCLCAweDMwRDgsIDB4MzBDOCwKICAgICAgICAweDMw QzEsIDB4MzBFQSwgMHgzMENDLCAweDMwRUIsIDB4MzBGMiwKICAgICAgICAweDMwRUYsIDB4 MzBBQiwgMHgzMEU4LCAweDMwQkYsIDB4MzBFQywgMHgzMEJELAogICAgICAgIDB4MzBDNCwg MHgzMENELCAweDMwQ0EsIDB4MzBFOSwgMHgzMEUwLAogICAgICAgIDB4MzBBNiwgMHgzMEYw LCAweDMwQ0UsIDB4MzBBQSwgMHgzMEFGLCAweDMwRTQsIDB4MzBERSwKICAgICAgICAweDMw QjEsIDB4MzBENSwgMHgzMEIzLCAweDMwQTgsIDB4MzBDNiwKICAgICAgICAweDMwQTIsIDB4 MzBCNSwgMHgzMEFELCAweDMwRTYsIDB4MzBFMSwgMHgzMERGLCAweDMwQjcsCiAgICAgICAg MHgzMEYxLCAweDMwRDIsIDB4MzBFMiwgMHgzMEJCLCAweDMwQjkKICAgIH0sCn0KCmxhbmd1 YWdlcy5jb3VudGVycyA9IGNvdW50ZXJzCgpjb3VudGVyc1snYXInXSAgICAgICAgICAgICAg ICAgICAgICAgID0gY291bnRlcnNbJ2FyYWJpYyddCmNvdW50ZXJzWydnciddICAgICAgICAg ICAgICAgICAgICAgICAgPSBjb3VudGVyc1snZ3JlZWsnXQpjb3VudGVyc1snZyddICAgICAg ICAgICAgICAgICAgICAgICAgID0gY291bnRlcnNbJ2dyZWVrJ10KY291bnRlcnNbJ3NsJ10g ICAgICAgICAgICAgICAgICAgICAgICA9IGNvdW50ZXJzWydzbG92ZW5pYW4nXQpjb3VudGVy c1snZXMnXSAgICAgICAgICAgICAgICAgICAgICAgID0gY291bnRlcnNbJ3NwYW5pc2gnXQpj b3VudGVyc1sncnUnXSAgICAgICAgICAgICAgICAgICAgICAgID0gY291bnRlcnNbJ3J1c3Np YW4nXQpjb3VudGVyc1sna3InXSAgICAgICAgICAgICAgICAgICAgICAgID0gY291bnRlcnNb J2tvcmVhbiddCmNvdW50ZXJzWydrci1wJ10gICAgICAgICAgICAgICAgICAgICAgPSBjb3Vu dGVyc1sna29yZWFuLXBhcmVudGhlc2lzJ10KY291bnRlcnNbJ2tyLWMnXSAgICAgICAgICAg ICAgICAgICAgICA9IGNvdW50ZXJzWydrb3JlYW4tY2lyY2xlJ10KCmNvdW50ZXJzWyd0aGFp bnVtZXJhbHMnXSAgICAgICAgICAgICAgPSBjb3VudGVyc1sndGhhaSddCmNvdW50ZXJzWydk ZXZhbmFnYXJpbnVtZXJhbHMnXSAgICAgICAgPSBjb3VudGVyc1snZGV2YW5hZ2FyaSddCmNv dW50ZXJzWydndXJtdXJraGludW1lcmFscyddICAgICAgICAgPSBjb3VudGVyc1snZ3VybXVy a2hpJ10KY291bnRlcnNbJ2d1amFyYXRpbnVtZXJhbHMnXSAgICAgICAgICA9IGNvdW50ZXJz WydndWphcmF0aSddCmNvdW50ZXJzWyd0aWJldGFubnVtZXJhbHMnXSAgICAgICAgICAgPSBj b3VudGVyc1sndGliZXRhbiddCmNvdW50ZXJzWydncmVla251bWVyYWxzJ10gICAgICAgICAg ICAgPSBjb3VudGVyc1snZ3JlZWsnXQpjb3VudGVyc1snYXJhYmljbnVtZXJhbHMnXSAgICAg ICAgICAgID0gY291bnRlcnNbJ2FyYWJpYyddCmNvdW50ZXJzWydwZXJzaWFubnVtZXJhbHMn XSAgICAgICAgICAgPSBjb3VudGVyc1sncGVyc2lhbiddCmNvdW50ZXJzWydhcmFiaWNleG51 bWVyYWxzJ10gICAgICAgICAgPSBjb3VudGVyc1sncGVyc2lhbiddCmNvdW50ZXJzWydrb3Jl YW5udW1lcmFscyddICAgICAgICAgICAgPSBjb3VudGVyc1sna29yZWFuJ10KY291bnRlcnNb J2tvcmVhbnBhcmVudGhlc2lzbnVtZXJhbHMnXSA9IGNvdW50ZXJzWydrb3JlYW4tcGFyZW50 aGVzaXMnXQpjb3VudGVyc1sna29yZWFuY2lyY2xlbnVtZXJhbHMnXSAgICAgID0gY291bnRl cnNbJ2tvcmVhbi1jaXJjbGUnXQoKY291bnRlcnNbJ3Nsb3Zlbmlhbm51bWVyYWxzJ10gICAg ICAgICA9IGNvdW50ZXJzWydzbG92ZW5pYW4nXQpjb3VudGVyc1snc3BhbmlzaG51bWVyYWxz J10gICAgICAgICAgID0gY291bnRlcnNbJ3NwYW5pc2gnXQpjb3VudGVyc1sncnVzc2lhbm51 bWVyYWxzJ10gICAgICAgICAgID0gY291bnRlcnNbJ3J1c3NpYW4nXQoKbG9jYWwgZGVjaW1h bHMgPSBhbGxvY2F0ZSB7CiAgICBbJ2FyYWJpYyddID0gewogICAgICAgIFsiMCJdID0gItmg IiwgWyIxIl0gPSAi2aEiLCBbIjIiXSA9ICLZoiIsIFsiMyJdID0gItmjIiwgWyI0Il0gPSAi 2aQiLAogICAgICAgIFsiNSJdID0gItmlIiwgWyI2Il0gPSAi2aYiLCBbIjciXSA9ICLZpyIs IFsiOCJdID0gItmoIiwgWyI5Il0gPSAi2akiLAogICAgfSwKICAgIFsncGVyc2lhbiddID0g ewogICAgICAgIFsiMCJdID0gItuwIiwgWyIxIl0gPSAi27EiLCBbIjIiXSA9ICLbsiIsIFsi MyJdID0gItuzIiwgWyI0Il0gPSAi27QiLAogICAgICAgIFsiNSJdID0gItu1IiwgWyI2Il0g PSAi27YiLCBbIjciXSA9ICLbtyIsIFsiOCJdID0gItu4IiwgWyI5Il0gPSAi27kiLAogICAg fSwKICAgIFsnZGV2YW5hZ2FyaSddID0gewogICAgICAgIFsiMCJdID0gIuClpiIsIFsiMSJd ID0gIuClpyIsIFsiMiJdID0gIuClqCIsIFsiMyJdID0gIuClqSIsIFsiNCJdID0gIuClqiIs CiAgICAgICAgWyI1Il0gPSAi4KWrIiwgWyI2Il0gPSAi4KWsIiwgWyI3Il0gPSAi4KWtIiwg WyI4Il0gPSAi4KWuIiwgWyI5Il0gPSAi4KWvIiwKICAgIH0sCiAgICBbJ21hbGF5YWxhbSdd ID0gewogICAgICAgIFsiMCJdID0gIuC1piIsIFsiMSJdID0gIuC1pyIsIFsiMiJdID0gIuC1 qCIsIFsiMyJdID0gIuC1qSIsIFsiNCJdID0gIuC1qiIsCiAgICAgICAgWyI1Il0gPSAi4LWr IiwgWyI2Il0gPSAi4LWsIiwgWyI3Il0gPSAi4LWtIiwgWyI4Il0gPSAi4LWuIiwgWyI5Il0g PSAi4LWvIiwKICAgIH0sCiAgICBbJ3RhbWlsJ10gPSB7CiAgICAgICAgWyIwIl0gPSAi4K+m IiwgWyIxIl0gPSAi4K+nIiwgWyIyIl0gPSAi4K+oIiwgWyIzIl0gPSAi4K+pIiwgWyI0Il0g PSAi4K+qIiwKICAgICAgICBbIjUiXSA9ICLgr6siLCBbIjYiXSA9ICLgr6wiLCBbIjciXSA9 ICLgr60iLCBbIjgiXSA9ICLgr64iLCBbIjkiXSA9ICLgr68iLAogICAgfSwKICAgIFsna2Fu bmFkYSddID0gewogICAgICAgIFsiMCJdID0gIuCzpiIsIFsiMSJdID0gIuCzpyIsIFsiMiJd ID0gIuCzqCIsIFsiMyJdID0gIuCzqSIsIFsiNCJdID0gIuCzqiIsCiAgICAgICAgWyI1Il0g PSAi4LOrIiwgWyI2Il0gPSAi4LOsIiwgWyI3Il0gPSAi4LOtIiwgWyI4Il0gPSAi4LOuIiwg WyI5Il0gPSAi4LOvIiwKICAgIH0sCiAgICBbJ3RlbHVndSddID0gewogICAgICAgIFsiMCJd ID0gIuCxpiIsIFsiMSJdID0gIuCxpyIsIFsiMiJdID0gIuCxqCIsIFsiMyJdID0gIuCxqSIs IFsiNCJdID0gIuCxqiIsCiAgICAgICAgWyI1Il0gPSAi4LGrIiwgWyI2Il0gPSAi4LGsIiwg WyI3Il0gPSAi4LGtIiwgWyI4Il0gPSAi4LGuIiwgWyI5Il0gPSAi4LGvIiwKICAgIH0sCiAg ICBbJ2JlbmdhbGknXSA9IHsKICAgICAgICBbIjAiXSA9ICLgp6YiLCBbIjEiXSA9ICLgp6ci LCBbIjIiXSA9ICLgp6giLCBbIjMiXSA9ICLgp6kiLCBbIjQiXSA9ICLgp6oiLAogICAgICAg IFsiNSJdID0gIuCnqyIsIFsiNiJdID0gIuCnrCIsIFsiNyJdID0gIuCnrSIsIFsiOCJdID0g IuCnriIsIFsiOSJdID0gIuCnryIsCiAgICB9LAogICAgWydndWphcmF0aSddID0gewogICAg ICAgIFsiMCJdID0gIuCrpiIsIFsiMSJdID0gIuCrpyIsIFsiMiJdID0gIuCrqCIsIFsiMyJd ID0gIuCrqSIsIFsiNCJdID0gIuCrqiIsCiAgICAgICAgWyI1Il0gPSAi4KurIiwgWyI2Il0g PSAi4KusIiwgWyI3Il0gPSAi4KutIiwgWyI4Il0gPSAi4KuuIiwgWyI5Il0gPSAi4KuvIiwK ICAgIH0sCiAgICBbJ2d1cm11cmtoaSddID0gewogICAgICAgIFsiMCJdID0gIuCppiIsIFsi MSJdID0gIuCppyIsIFsiMiJdID0gIuCpqCIsIFsiMyJdID0gIuCpqSIsIFsiNCJdID0gIuCp qiIsCiAgICAgICAgWyI1Il0gPSAi4KmrIiwgWyI2Il0gPSAi4KmsIiwgWyI3Il0gPSAi4Kmt IiwgWyI4Il0gPSAi4KmuIiwgWyI5Il0gPSAi4KmvIiwKICAgIH0sCn0KCmxhbmd1YWdlcy5k ZWNpbWFscyA9IGRlY2ltYWxzCgpsb2NhbCBmYWxsYmFjayA9IHV0ZmJ5dGUoJzAnKQoKbG9j YWwgZnVuY3Rpb24gY2hyKG4sbSkKICAgIHJldHVybiAobiA+IDAgYW5kIG4gPCAyNyBhbmQg dXRmY2hhcihuK20pKSBvciAiIgplbmQKCmxvY2FsIGZ1bmN0aW9uIGNocnMobixtLHQpCiAg ICBpZiBub3QgdCB0aGVuCiAgICAgICAgdCA9IHsgfQogICAgZW5kCiAgICBpZiBuID4gMjYg dGhlbgogICAgICAgIGNocnMoZmxvb3IoKG4tMSkvMjYpLG0sdCkKICAgICAgICBuID0gKG4t MSklMjYgKyAxCiAgICBlbmQKICAgIGlmIG4gfj0gMCB0aGVuCiAgICAgICAgdFsjdCsxXSA9 IHV0ZmNoYXIobittKQogICAgZW5kCiAgICBpZiBuIDw9IDI2IHRoZW4KICAgICAgICByZXR1 cm4gY29uY2F0KHQpCiAgICBlbmQKZW5kCgpsb2NhbCBmdW5jdGlvbiBtYXhjaHJzKG4sbSxj bWQsdCkKICAgIGlmIG5vdCB0IHRoZW4KICAgICAgICB0ID0geyB9CiAgICBlbmQKICAgIGlm IG4gPiBtIHRoZW4KICAgICAgICBtYXhjaHJzKGZsb29yKChuLTEpL20pLG0sY21kKQogICAg ICAgIG4gPSAobi0xKSVtICsgMQogICAgZW5kCiAgICB0WyN0KzFdID0gZm9ybWF0dGVyc1si JXN7JXN9Il0oY21kLG4pCiAgICBpZiBuIDw9IG0gdGhlbgogICAgICAgIHJldHVybiBjb25j YXQodCkKICAgIGVuZAplbmQKCmNvbnZlcnRlcnMuY2hyICAgICA9IGNocgpjb252ZXJ0ZXJz LmNocnMgICAgPSBjaHJzCmNvbnZlcnRlcnMubWF4Y2hycyA9IG1heGNocnMKCmxvY2FsIGxv d2VyY2hhcmFjdGVyID0gY2hhcmFjdGVycy5sY2NoYXJzCmxvY2FsIHVwcGVyY2hhcmFjdGVy ID0gY2hhcmFjdGVycy51Y2NoYXJzCgpsb2NhbCBkZWZhdWx0Y291bnRlciA9IGNvdW50ZXJz LmRlZmF1bHQKCmxvY2FsIGZ1bmN0aW9uIGRvX2FscGhhYmV0aWMobixtYXBwaW5nLG1hcHBl cix0KSAtLSB0b2RvOiBtYWtlIHplcm8gYmFzZWQgdmFyaWFudCAoaW5pdGlhbCBuICsgMSkK ICAgIGlmIG5vdCB0IHRoZW4KICAgICAgICB0ID0geyB9CiAgICBlbmQKICAgIGxvY2FsIG1h eCA9ICNtYXBwaW5nCiAgICBpZiBuID4gbWF4IHRoZW4KICAgICAgICBkb19hbHBoYWJldGlj KGZsb29yKChuLTEpL21heCksbWFwcGluZyxtYXBwZXIsdCkKICAgICAgICBuID0gKG4tMSkg JSBtYXggKyAxCiAgICBlbmQKICAgIGxvY2FsIGNociA9IG1hcHBpbmdbbl0gb3IgZmFsbGJh Y2sKICAgIHRbI3QrMV0gPSBtYXBwZXIgYW5kIG1hcHBlcltjaHJdIG9yIGNocgogICAgaWYg biA8PSBtYXggdGhlbgogICAgICAgIHJldHVybiBjb25jYXQodCkKICAgIGVuZAplbmQKCmxv Y2FsIGZ1bmN0aW9uIGFscGhhYmV0aWMobixjb2RlKQogICAgcmV0dXJuIGRvX2FscGhhYmV0 aWMobixjb2RlIGFuZCBjb2RlIH49ICIiIGFuZCBjb3VudGVyc1tjb2RlXSBvciBkZWZhdWx0 Y291bnRlcixsb3dlcmNoYXJhY3RlcikKZW5kCgpsb2NhbCBmdW5jdGlvbiBBbHBoYWJldGlj KG4sY29kZSkKICAgIHJldHVybiBkb19hbHBoYWJldGljKG4sY29kZSBhbmQgY29kZSB+PSAi IiBhbmQgY291bnRlcnNbY29kZV0gb3IgZGVmYXVsdGNvdW50ZXIsdXBwZXJjaGFyYWN0ZXIp CmVuZAoKY29udmVydGVycy5hbHBoYWJldGljID0gYWxwaGFiZXRpYwpjb252ZXJ0ZXJzLkFs cGhhYmV0aWMgPSBBbHBoYWJldGljCgotLSB3ZSBjb3VsZCBtYWtlIGEgcmVwbGFjZXIKCmxv Y2FsIGZ1bmN0aW9uIHRvZGVjaW1hbHMobixuYW1lKQogICAgbG9jYWwgc3RyZWFtICA9IHRv c3RyaW5nKG4pCiAgICBsb2NhbCBtYXBwaW5nID0gZGVjaW1hbHNbbmFtZV0KICAgIHJldHVy biBtYXBwaW5nIGFuZCBnc3ViKHN0cmVhbSwiLiIsbWFwcGluZykgb3Igc3RyZWFtCmVuZAoK Y29udmVydGVycy5kZWNpbWFscyA9IHRvZGVjaW1hbHMKCmxvY2FsIGxvd2VyX29mZnNldCA9 IDk2CmxvY2FsIHVwcGVyX29mZnNldCA9IDY0CgpmdW5jdGlvbiBjb252ZXJ0ZXJzLmNoYXJh Y3RlciAobikgcmV0dXJuIGNociAobixsb3dlcl9vZmZzZXQpIGVuZApmdW5jdGlvbiBjb252 ZXJ0ZXJzLkNoYXJhY3RlciAobikgcmV0dXJuIGNociAobix1cHBlcl9vZmZzZXQpIGVuZApm dW5jdGlvbiBjb252ZXJ0ZXJzLmNoYXJhY3RlcnMobikgcmV0dXJuIGNocnMobixsb3dlcl9v ZmZzZXQpIGVuZApmdW5jdGlvbiBjb252ZXJ0ZXJzLkNoYXJhY3RlcnMobikgcmV0dXJuIGNo cnMobix1cHBlcl9vZmZzZXQpIGVuZAoKaW1wbGVtZW50IHsgbmFtZSA9ICJhbHBoYWJldGlj IiwgYWN0aW9ucyA9IHsgYWxwaGFiZXRpYywgY29udGV4dCB9LCBhcmd1bWVudHMgPSB7ICJp bnRlZ2VyIiwgInN0cmluZyIgfSB9CmltcGxlbWVudCB7IG5hbWUgPSAiQWxwaGFiZXRpYyIs IGFjdGlvbnMgPSB7IEFscGhhYmV0aWMsIGNvbnRleHQgfSwgYXJndW1lbnRzID0geyAiaW50 ZWdlciIsICJzdHJpbmciIH0gfQoKaW1wbGVtZW50IHsgbmFtZSA9ICJjaGFyYWN0ZXIiLCAg YWN0aW9ucyA9IHsgY2hyLCAgY29udGV4dCB9LCBhcmd1bWVudHMgPSB7ICJpbnRlZ2VyIiwg bG93ZXJfb2Zmc2V0IH0gfQppbXBsZW1lbnQgeyBuYW1lID0gIkNoYXJhY3RlciIsICBhY3Rp b25zID0geyBjaHIsICBjb250ZXh0IH0sIGFyZ3VtZW50cyA9IHsgImludGVnZXIiLCB1cHBl cl9vZmZzZXQgfSB9CmltcGxlbWVudCB7IG5hbWUgPSAiY2hhcmFjdGVycyIsIGFjdGlvbnMg PSB7IGNocnMsIGNvbnRleHQgfSwgYXJndW1lbnRzID0geyAiaW50ZWdlciIsIGxvd2VyX29m ZnNldCB9IH0KaW1wbGVtZW50IHsgbmFtZSA9ICJDaGFyYWN0ZXJzIiwgYWN0aW9ucyA9IHsg Y2hycywgY29udGV4dCB9LCBhcmd1bWVudHMgPSB7ICJpbnRlZ2VyIiwgdXBwZXJfb2Zmc2V0 IH0gfQoKaW1wbGVtZW50IHsgbmFtZSA9ICJkZWNpbWFscyIsICAgYWN0aW9ucyA9IHsgdG9k ZWNpbWFscywgY29udGV4dCB9LCBhcmd1bWVudHMgPSB7ICJpbnRlZ2VyIiwgInN0cmluZyIg fSB9Cgpsb2NhbCB3ZWVrZGF5ICAgID0gb3Mud2Vla2RheSAgICAtLSBtb3ZlZCB0byBsLW9z CmxvY2FsIGlzbGVhcHllYXIgPSBvcy5pc2xlYXB5ZWFyIC0tIG1vdmVkIHRvIGwtb3MKbG9j YWwgbm9mZGF5cyAgICA9IG9zLm5vZmRheXMgICAgLS0gbW92ZWQgdG8gbC1vcwoKbG9jYWwg ZnVuY3Rpb24gbGVhcHllYXIoeWVhcikKICAgIHJldHVybiBpc2xlYXB5ZWFyKHllYXIpIGFu ZCAxIG9yIDAKZW5kCgpsb2NhbCBmdW5jdGlvbiB0ZXh0aW1lKCkKICAgIHJldHVybiB0b251 bWJlcihvc2RhdGUoIiVIIikpICogNjAgKyB0b251bWJlcihvc2RhdGUoIiVNIikpCmVuZAoK LS0gRm9yIGNvbnNpc3RlbnR5IHdlIG5lZWQgdG8gYWRkIGRheSBoZXJlIGJ1dCB0aGF0IGNv bmZsaWN0cyB3aXRoIHRoZSBjdXJyZW50Ci0tIHNlcmlhbGl6ZXIgc28gdGhlbiBiZXN0IGlz IHRvIGhhdmUgbm9uZSBmcm9tIG5vdyBvbjoKCi0tIGZ1bmN0aW9uIGNvbnZlcnRlcnMueWVh ciAgKCkgcmV0dXJuIG9zZGF0ZSgiJVkiKSBlbmQKLS0gZnVuY3Rpb24gY29udmVydGVycy5t b250aCAoKSByZXR1cm4gb3NkYXRlKCIlbSIpIGVuZCAtLSBhbHdheXMgdHdvIGRpZ2l0cwot LSBmdW5jdGlvbiBjb252ZXJ0ZXJzLmRheSAgICgpIHJldHVybiBvc2RhdGUoIiVkIikgZW5k IC0tIGNvbmZsaWN0cwotLSBmdW5jdGlvbiBjb252ZXJ0ZXJzLmhvdXIgICgpIHJldHVybiBv c2RhdGUoIiVIIikgZW5kCi0tIGZ1bmN0aW9uIGNvbnZlcnRlcnMubWludXRlKCkgcmV0dXJu IG9zZGF0ZSgiJU0iKSBlbmQKLS0gZnVuY3Rpb24gY29udmVydGVycy5zZWNvbmQoKSByZXR1 cm4gb3NkYXRlKCIlUyIpIGVuZAoKY29udmVydGVycy53ZWVrZGF5ICAgID0gd2Vla2RheQpj b252ZXJ0ZXJzLmlzbGVhcHllYXIgPSBpc2xlYXB5ZWFyCmNvbnZlcnRlcnMubGVhcHllYXIg ICA9IGxlYXB5ZWFyCmNvbnZlcnRlcnMubm9mZGF5cyAgICA9IG5vZmRheXMKY29udmVydGVy cy50ZXh0aW1lICAgID0gdGV4dGltZQoKaW1wbGVtZW50IHsgbmFtZSA9ICJ3ZWVrZGF5Iiwg IGFjdGlvbnMgPSB7IHdlZWtkYXksICBjb250ZXh0IH0sIGFyZ3VtZW50cyA9IHsgImludGVn ZXIiLCAiaW50ZWdlciIsICJpbnRlZ2VyIiB9IH0KaW1wbGVtZW50IHsgbmFtZSA9ICJsZWFw eWVhciIsIGFjdGlvbnMgPSB7IGxlYXB5ZWFyLCBjb250ZXh0IH0sIGFyZ3VtZW50cyA9ICJp bnRlZ2VyIiB9CmltcGxlbWVudCB7IG5hbWUgPSAibm9mZGF5cyIsICBhY3Rpb25zID0geyBu b2ZkYXlzLCAgY29udGV4dCB9LCBhcmd1bWVudHMgPSB7ICJpbnRlZ2VyIiwgImludGVnZXIi IH0gfQoKaW1wbGVtZW50IHsgbmFtZSA9ICJ5ZWFyIiwgICAgIGFjdGlvbnMgPSB7IG9zZGF0 ZSwgICBjb250ZXh0IH0sIGFyZ3VtZW50cyA9ICInJVknIiB9CmltcGxlbWVudCB7IG5hbWUg PSAibW9udGgiLCAgICBhY3Rpb25zID0geyBvc2RhdGUsICAgY29udGV4dCB9LCBhcmd1bWVu dHMgPSAiJyVtJyIgfQppbXBsZW1lbnQgeyBuYW1lID0gImRheSIsICAgICAgYWN0aW9ucyA9 IHsgb3NkYXRlLCAgIGNvbnRleHQgfSwgYXJndW1lbnRzID0gIiclZCciIH0KaW1wbGVtZW50 IHsgbmFtZSA9ICJob3VyIiwgICAgIGFjdGlvbnMgPSB7IG9zZGF0ZSwgICBjb250ZXh0IH0s IGFyZ3VtZW50cyA9ICInJUgnIiB9CmltcGxlbWVudCB7IG5hbWUgPSAibWludXRlIiwgICBh Y3Rpb25zID0geyBvc2RhdGUsICAgY29udGV4dCB9LCBhcmd1bWVudHMgPSAiJyVNJyIgfQpp bXBsZW1lbnQgeyBuYW1lID0gInNlY29uZCIsICAgYWN0aW9ucyA9IHsgb3NkYXRlLCAgIGNv bnRleHQgfSwgYXJndW1lbnRzID0gIiclUyciIH0KaW1wbGVtZW50IHsgbmFtZSA9ICJ0ZXh0 aW1lIiwgIGFjdGlvbnMgPSB7IHRleHRpbWUsICBjb250ZXh0IH0gfQoKaW1wbGVtZW50IHsK ICAgIG5hbWUgICAgICA9ICJkb2lmZWxzZWxlYXB5ZWFyIiwKICAgIGFjdGlvbnMgICA9IHsg aXNsZWFweWVhciwgY29tbWFuZHMuZG9pZmVsc2UgfSwKICAgIGFyZ3VtZW50cyA9ICJpbnRl Z2VyIgp9Cgpsb2NhbCByb21hbiA9IHsKICAgIHsgWzBdID0gJycsICdJJywgJ0lJJywgJ0lJ SScsICdJVicsICdWJywgJ1ZJJywgJ1ZJSScsICdWSUlJJywgJ0lYJyB9LAogICAgeyBbMF0g PSAnJywgJ1gnLCAnWFgnLCAnWFhYJywgJ1hMJywgJ0wnLCAnTFgnLCAnTFhYJywgJ0xYWFgn LCAnWEMnIH0sCiAgICB7IFswXSA9ICcnLCAnQycsICdDQycsICdDQ0MnLCAnQ0QnLCAnRCcs ICdEQycsICdEQ0MnLCAnRENDQycsICdDTScgfSwKfQoKbG9jYWwgZnVuY3Rpb24gdG9yb21h bihuKQogICAgaWYgbiA+PSA0MDAwIHRoZW4KICAgICAgICByZXR1cm4gdG9yb21hbihmbG9v cihuLzEwMDApKSAuLiAiICIgLi4gdG9yb21hbihuJTEwMDApCiAgICBlbHNlCiAgICAgICAg cmV0dXJuIHJlcCgiTSIsZmxvb3Iobi8xMDAwKSkgLi4gcm9tYW5bM11bZmxvb3IoKG4lMTAw MCkvMTAwKV0gLi4gcm9tYW5bMl1bZmxvb3IoKG4lMTAwKS8xMCldIC4uIHJvbWFuWzFdW2Zs b29yKChuJTEwKS8xKV0KICAgIGVuZAplbmQKCmNvbnZlcnRlcnMudG9yb21hbiAgICAgICA9 IHRvcm9tYW4KY29udmVydGVycy5Sb21hbm51bWVyYWxzID0gdG9yb21hbgpjb252ZXJ0ZXJz LnJvbWFubnVtZXJhbHMgPSBmdW5jdGlvbihuKSByZXR1cm4gbG93ZXIodG9yb21hbihuKSkg ZW5kCgpjb252ZXJ0ZXJzWydpJ10gID0gY29udmVydGVycy5yb21hbm51bWVyYWxzCmNvbnZl cnRlcnNbJ0knXSAgPSBjb252ZXJ0ZXJzLlJvbWFubnVtZXJhbHMKY29udmVydGVyc1sncidd ICA9IGNvbnZlcnRlcnMucm9tYW5udW1lcmFscwpjb252ZXJ0ZXJzWydSJ10gID0gY29udmVy dGVycy5Sb21hbm51bWVyYWxzCmNvbnZlcnRlcnNbJ0tSJ10gPSBjb252ZXJ0ZXJzLlJvbWFu bnVtZXJhbHMKY29udmVydGVyc1snUksnXSA9IGNvbnZlcnRlcnMuUm9tYW5udW1lcmFscwoK aW1wbGVtZW50IHsKICAgIG5hbWUgICAgICA9ICJyb21hbm51bWVyYWxzIiwKICAgIGFjdGlv bnMgICA9IHsgdG9yb21hbiwgbG93ZXIsIGNvbnRleHQgfSwKICAgIGFyZ3VtZW50cyA9ICJp bnRlZ2VyIiwKfQoKaW1wbGVtZW50IHsKICAgIG5hbWUgICAgICA9ICJSb21hbm51bWVyYWxz IiwKICAgIGFjdGlvbnMgICA9IHsgdG9yb21hbiwgY29udGV4dCB9LAogICAgYXJndW1lbnRz ID0gImludGVnZXIiLAp9CgotLX4gbG9jYWwgc21hbGwgPSB7Ci0tfiAgICAgMHgwNjI3LCAw eDA2NkUsIDB4MDYyRCwgMHgwNjJGLCAweDA2NDcsIDB4MDY0OCwgMHgwNjMxCi0tfiB9Cgot LX4gbG9jYWwgbGFyZ2UgPSB7Ci0tfiAgICAgeyAweDA2MjcsIDB4MDYyOCwgMHgwNjJDLCAw eDA2MkYsIDB4MDY0NywgMHgwNjQ4LCAweDA2MzIsIDB4MDYyRCwgMHgwNjM3LCB9LAotLX4g ICAgIHsgMHgwNjRBLCAweDA2NDMsIDB4MDY0NCwgMHgwNjQ1LCAweDA2NDYsIDB4MDYzMywg MHgwNjM5LCAweDA2NDEsIDB4MDYzNSwgfSwKLS1+ICAgICB7IDB4MDY0MiwgMHgwNjMxLCAw eDA2MzQsIDB4MDYyQSwgMHgwNjJCLCAweDA2MkUsIDB4MDYzMCwgMHgwNjM2LCAweDA2Mzgs IH0sCi0tfiAgICAgeyAweDA2M0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotLX4gfQoKbG9jYWwgc21hbGwg PSB7CiAgICAi2KciLCAi2a4iLCAi2K0iLCAi2K8iLCAi2YciLCAi2YgiLCAi2LEiLAp9Cgps b2NhbCBtZWRpdW0gPSB7CiAgICAgItinIiwgItioIiwgItisIiwgItivIiwgItmHIiwgItmI Iiwi2LIiLCAi2K0iLCAi2LciICwKICAgICAi2YoiLCAi2YMiLCAi2YQiLCAi2YUiLCAi2YYi LCAi2LMiLCAi2LkiLCAi2YEiLCAi2LUiICwKICAgICAi2YIiLCAi2LEiLCAi2LQiLCAi2Koi LCAi2KsiLCAi2K4iLCAi2LAiLCAi2LYiLCAi2LgiICwKICAgICAi2LoiICwKfQoKbG9jYWwg bGFyZ2UgPSB7CiAgICB7ICLYpyIsICLYqCIsICLYrCIsICLYryIsICLZhyIsICLZiCIsItiy IiwgItitIiwgIti3IiB9LAogICAgeyAi2YoiLCAi2YMiLCAi2YQiLCAi2YUiLCAi2YYiLCAi 2LMiLCAi2LkiLCAi2YEiLCAi2LUiIH0sCiAgICB7ICLZgiIsICLYsSIsICLYtCIsICLYqiIs ICLYqyIsICLYriIsICLYsCIsICLYtiIsICLYuCIgfSwKICAgIHsgIti6IiB9LAp9Cgpsb2Nh bCBmdW5jdGlvbiB0b2FiamFkKG4sd2hhdCkKICAgIGlmIG4gPD0gMCBvciBuID49IDIwMDAg dGhlbgogICAgICAgIHJldHVybiB0b3N0cmluZyhuKQogICAgZWxzZWlmIHdoYXQgPT0gMiBh bmQgbiA8PSA3IHRoZW4KICAgICAgICByZXR1cm4gc21hbGxbbl0KICAgIGVsc2VpZiB3aGF0 ID09IDMgYW5kIG4gPD0gMjggdGhlbgogICAgICAgIHJldHVybiBtZWRpdW1bbl0KICAgIGVs c2UKICAgICAgICBsb2NhbCBhLCBiLCBjLCBkCiAgICAgICAgYSwgbiA9IGZsb29yKG4vMTAw MCksIG4gJSAxMDAwIC0tIG1vZChuLDEwMDApCiAgICAgICAgYiwgbiA9IGZsb29yKG4vIDEw MCksIG4gJSAgMTAwIC0tIG1vZChuLCAxMDApCiAgICAgICAgYywgbiA9IGZsb29yKG4vICAx MCksIG4gJSAgIDEwIC0tIG1vZChuLCAgMTApCiAgICAgICAgZCwgbiA9IGZsb29yKG4vICAg MSksIG4gJSAgICAxIC0tIG1vZChuLCAgIDEpCiAgICAgICAgcmV0dXJuIChsYXJnZVs0XVth XSBvciAiIikgLi4gKGxhcmdlWzNdW2JdIG9yICIiKSAuLiAobGFyZ2VbMl1bY10gb3IgIiIp IC4uIChsYXJnZVsxXVtkXSBvciAiIikKICAgIGVuZAplbmQKCmNvbnZlcnRlcnMudG9hYmph ZCA9IHRvYWJqYWQKCmZ1bmN0aW9uIGNvbnZlcnRlcnMuYWJqYWRudW1lcmFscyAgICAgKG4p IHJldHVybiB0b2FiamFkKG4sZmFsc2UpIGVuZApmdW5jdGlvbiBjb252ZXJ0ZXJzLmFiamFk bm9kb3RudW1lcmFscyhuKSByZXR1cm4gdG9hYmphZChuLHRydWUgKSBlbmQKCmltcGxlbWVu dCB7CiAgICBuYW1lICAgICAgPSAiYWJqYWRudW1lcmFscyIsCiAgICBhY3Rpb25zICAgPSB7 IHRvYWJqYWQsIGNvbnRleHQgfSwKICAgIGFyZ3VtZW50cyA9IHsgImludGVnZXIiLCBmYWxz ZSB9Cn0KCmltcGxlbWVudCB7CiAgICBuYW1lICAgICAgPSAiYWJqYWRub2RvdG51bWVyYWxz IiwKICAgIGFjdGlvbnMgICA9IHsgdG9hYmphZCwgY29udGV4dCB9LAogICAgYXJndW1lbnRz ID0geyAiaW50ZWdlciIsIHRydWUgfQp9CgotLSAtLSAtIGhlYnJldyBhbmQgamlkZGlzaCAt LSAtLSAtLQoKbG9jYWwgdHJhY2VfaGVicmV3ICB0cmFja2Vycy5yZWdpc3RlcigiY29udmVy dGVycy5oZWJyZXciLCBmdW5jdGlvbih2KQogICAgdHJhY2VfaGVicmV3ID0gdgplbmQpCgps b2NhbCBsaXN0ID0gewogICAgeyA0MDAsICLXqiIgfSwgeyAzMDAsICLXqSIgfSwgeyAyMDAs ICLXqCIgfSwgeyAxMDAsICLXpyIgfSwKICAgIHsgIDkwLCAi16YiIH0sIHsgODAsICLXpCIg fSwgeyA3MCwgIteiIiB9LCB7IDYwLCAi16EgIn0sIHsgNTAsICLXoCIgfSwgeyA0MCwgItee IiB9LCB7IDMwLCAi15wiIH0sIHsgMjAsICLXmyIgfSwgeyAxMCwgIteZIiB9LAogICAgeyAg IDksICLXmCIgfSwgeyA4LCAi15ciIH0sIHsgNywgIteWIiwgfSwgeyA2LCAi15UiLCB9LCB7 IDUsICLXlCIgfSwgeyA0LCAi15MiIH0sIHsgMywgIteSIiB9LCB7IDIsICLXkSIgfSwgeyAx LCAi15AiIH0sCn0KCmxvY2FsIHNwZWNpYWwgPSB7CiAgICBbMTVdID0gIteY17TXlSIsIC0t IGV4Y2VwdGlvbjogYXZvaWQgbWl4dXAgd2l0aCBHb2Qg15nXlAogICAgWzE2XSA9ICLXmNe0 15YiLCAtLSBleGNlcHRpb246IGF2b2lkIG1peHVwIHdpdGggR29kINeZ15UKfQoKbG9jYWwg ZnVuY3Rpb24gdG9oZWJyZXcobixnZXJzaGF5aW0sZ2VyZXNoKQogICAgbG9jYWwgc3BsaXQg PSB7IH0KICAgIGxvY2FsIHNpemUgID0gMAogICAgd2hpbGUgbiA+IDEwMDAgZG8KICAgICAg ICBzaXplID0gc2l6ZSArIDEKICAgICAgICBzcGxpdFtzaXplXSA9IG4gJSAxMDAwCiAgICAg ICAgbiA9IGZsb29yKG4vMTAwMCkKICAgIGVuZAogICAgc2l6ZSA9IHNpemUgKyAxCiAgICBz cGxpdFtzaXplXSA9IG4KICAgIGZvciBpPTEsc2l6ZSBkbwogICAgICAgIGxvY2FsIHQgPSB7 IH0KICAgICAgICBsb2NhbCBuID0gMAogICAgICAgIGxvY2FsIHMgPSBzcGxpdFtpXQogICAg ICAgIHdoaWxlIHMgPiAwIGRvCiAgICAgICAgICAgIGZvciBpPTEsI2xpc3QgZG8KICAgICAg ICAgICAgICA6OmFnYWluOjoKICAgICAgICAgICAgICAgIGxvY2FsIGxpID0gbGlzdFtpXQog ICAgICAgICAgICAgICAgbG9jYWwgbDEgPSBsaVsxXQogICAgICAgICAgICAgICAgbG9jYWwg czEgPSBzcGVjaWFsW2wxXQogICAgICAgICAgICAgICAgaWYgczEgdGhlbgogICAgICAgICAg ICAgICAgICAgIHMgPSBzIC0gbDEKICAgICAgICAgICAgICAgICAgICBuID0gbiArIDEKICAg ICAgICAgICAgICAgICAgICB0W25dID0gczEKICAgICAgICAgICAgICAgICAgICBnb3RvIGFn YWluCiAgICAgICAgICAgICAgICBlbHNlaWYgcyA+PSBsMSB0aGVuCiAgICAgICAgICAgICAg ICAgICAgcyA9IHMgLSBsMQogICAgICAgICAgICAgICAgICAgIG4gPSBuICsgMQogICAgICAg ICAgICAgICAgICAgIHRbbl0gPSBsaVsyXQogICAgICAgICAgICAgICAgICAgIGdvdG8gYWdh aW4KICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAg ICAgICA6OmRvbmU6OgogICAgICAgIHNwbGl0W2ldID0gdAogICAgZW5kCiAgICBpZiBnZXJz aGF5aW0gdGhlbgogICAgICAgIGZvciBpPTEsc2l6ZSBkbwogICAgICAgICAgICBsb2NhbCBz aSA9IHNwbGl0W2ldCiAgICAgICAgICAgIGxvY2FsIG5pID0gI3NpCiAgICAgICAgICAgIGlm IG5pID49IDIgdGhlbgogICAgICAgICAgICAgICAgbG9jYWwgcyA9ICLXtCIKICAgICAgICAg ICAgICAgIGluc2VydChzcGxpdFtpXSxuaSx0cmFjZV9oZWJyZXcgYW5kICgie1xccmVkICIu LnMuLiJ9Iikgb3IgcykKICAgICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICBlbmQKICAg IGlmIGdlcmVzaCB0aGVuCiAgICAgICAgZm9yIGk9Miwjc3BsaXQgZG8KICAgICAgICAgICAg bG9jYWwgcyA9IHJlcCgi17MiLGktMSkKICAgICAgICAgICAgaW5zZXJ0KHNwbGl0W2ldLHRy YWNlX2hlYnJldyBhbmQgKCJ7XFxibHVlICIuLnMuLiJ9Iikgb3IgcykKICAgICAgICBlbmQK ICAgIGVuZAogICAgZm9yIGk9MSxzaXplIGRvCiAgICAgICAgc3BsaXRbaV0gPSBjb25jYXQo c3BsaXRbaV0pCiAgICBlbmQKICAgIHJldHVybiBjb25jYXQocmV2ZXJzZShzcGxpdCkpCmVu ZAoKY29udmVydGVycy50b2hlYnJldyAgICAgICA9IHRvaGVicmV3CmNvbnZlcnRlcnMuaGVi cmV3bnVtZXJhbHMgPSBjb252ZXJ0ZXJzLnRvaGVicmV3CgotLSBjb252ZXJ0ZXJzWydhbHBo YWJldGljOmhiJ10gPSBjb252ZXJ0ZXJzLmhlYnJld251bWVyYWxzCgppbnRlcmZhY2VzLmlt cGxlbWVudCB7CiAgICBuYW1lICAgICAgPSAiaGVicmV3bnVtZXJhbHMiLAogICAgYWN0aW9u cyAgID0geyB0b2hlYnJldywgY29udGV4dCB9LAogICAgYXJndW1lbnRzID0geyAiaW50ZWdl ciIsIHRydWUsIHRydWUgfQp9CgotLSAtLSAtLQoKbG9jYWwgdmVjdG9yID0gewogICAgbm9y bWFsID0gewogICAgICAgICAgICAgICAgWzBdID0gIuOAhyIsCiAgICAgICAgICAgICAgICBb MV0gPSAi5LiAIiwKICAgICAgICAgICAgICAgIFsyXSA9ICLkuowiLAogICAgICAgICAgICAg ICAgWzNdID0gIuS4iSIsCiAgICAgICAgICAgICAgICBbNF0gPSAi5ZubIiwKICAgICAgICAg ICAgICAgIFs1XSA9ICLkupQiLAogICAgICAgICAgICAgICAgWzZdID0gIuWFrSIsCiAgICAg ICAgICAgICAgICBbN10gPSAi5LiDIiwKICAgICAgICAgICAgICAgIFs4XSA9ICLlhasiLAog ICAgICAgICAgICAgICAgWzldID0gIuS5nSIsCiAgICAgICAgICAgICAgIFsxMF0gPSAi5Y2B IiwKICAgICAgICAgICAgICBbMTAwXSA9ICLnmb4iLAogICAgICAgICAgICAgWzEwMDBdID0g IuWNgyIsCiAgICAgICAgICAgIFsxMDAwMF0gPSAi5LiHIiwKICAgICAgICBbMTAwMDAwMDAw XSA9ICLkur8iLAogICAgfSwKICAgIGNhcCA9IHsKICAgICAgICAgICAgICAgIFswXSA9ICLp m7YiLAogICAgICAgICAgICAgICAgWzFdID0gIuWjuSIsCiAgICAgICAgICAgICAgICBbMl0g PSAi6LSwIiwKICAgICAgICAgICAgICAgIFszXSA9ICLlj4EiLAogICAgICAgICAgICAgICAg WzRdID0gIuiChiIsCiAgICAgICAgICAgICAgICBbNV0gPSAi5LyNIiwKICAgICAgICAgICAg ICAgIFs2XSA9ICLpmYYiLAogICAgICAgICAgICAgICAgWzddID0gIuafkiIsCiAgICAgICAg ICAgICAgICBbOF0gPSAi5o2MIiwKICAgICAgICAgICAgICAgIFs5XSA9ICLnjpYiLAogICAg ICAgICAgICAgICBbMTBdID0gIuaLviIsCiAgICAgICAgICAgICAgWzEwMF0gPSAi5L2wIiwK ICAgICAgICAgICAgIFsxMDAwXSA9ICLku58iLAogICAgICAgICAgICBbMTAwMDBdID0gIuiQ rCIsCiAgICAgICAgWzEwMDAwMDAwMF0gPSAi5Lq/IiwKICAgIH0sCiAgICBhbGwgPSB7CiAg ICAgICAgICAgICAgICBbMF0gPSAi44CHIiwKICAgICAgICAgICAgICAgIFsxXSA9ICLkuIAi LAogICAgICAgICAgICAgICAgWzJdID0gIuS6jCIsCiAgICAgICAgICAgICAgICBbM10gPSAi 5LiJIiwKICAgICAgICAgICAgICAgIFs0XSA9ICLlm5siLAogICAgICAgICAgICAgICAgWzVd ID0gIuS6lCIsCiAgICAgICAgICAgICAgICBbNl0gPSAi5YWtIiwKICAgICAgICAgICAgICAg IFs3XSA9ICLkuIMiLAogICAgICAgICAgICAgICAgWzhdID0gIuWFqyIsCiAgICAgICAgICAg ICAgICBbOV0gPSAi5LmdIiwKICAgICAgICAgICAgICAgWzEwXSA9ICLljYEiLAogICAgICAg ICAgICAgICBbMjBdID0gIuW7vyIsCiAgICAgICAgICAgICAgIFszMF0gPSAi5Y2FIiwKICAg ICAgICAgICAgICBbMTAwXSA9ICLnmb4iLAogICAgICAgICAgICAgWzEwMDBdID0gIuWNgyIs CiAgICAgICAgICAgIFsxMDAwMF0gPSAi5LiHIiwKICAgICAgICBbMTAwMDAwMDAwXSA9ICLk ur8iLAogICAgfQp9Cgpsb2NhbCBmdW5jdGlvbiB0b2NoaW5lc2UobixuYW1lKSAtLSBub3Jt YWwsIGNhcHMsIGFsbCwgZGF0ZQogLS0gaW1wcm92ZWQgdmVyc2lvbiBieSBMaSBZYW5ydWks IFNvbmcgWWloYW4KICAgIGxvY2FsIHJlc3VsdCwgciA9IHsgfSwgMAoKICAgIGlmIG5hbWUg PT0gImRhdGUiIHRoZW4KICAgICAgICAtLSBXZSBjb3VsZCBkbyBzb21lIG51bWJlciBqdWdn bGluZyBpbnN0ZWFkIGJ1dCB0aGlzIGlzIGZhc3QgZW5vdWdoLiBUaGVyZSBpcwogICAgICAg IC0tIG5vIGVycm9yIGNoZWNraW5nIGhlcmUgc28gd2UgYXNzdW1lIGEgcHJvcGVyIHllYXIu IE1heWJlIGEgYmV0dGVyIG5hbWUgaXMKICAgICAgICAtLSBhc2lzIChzbyB0aGF0IGl0IGNh biBiZSB1c2VkIGZvciBtb3JlIHRoYW4gZGF0ZXMpLgogICAgICAgIGxvY2FsIHZlY3RvciA9 IHZlY3Rvci5ub3JtYWwKICAgICAgICBmb3IgcyBpbiBnbWF0Y2godG9zdHJpbmcobiksIi4i KSBkbwogICAgICAgICAgICByID0gciArIDEgOyByZXN1bHRbcl0gPSB2ZWN0b3JbdG9udW1i ZXIocyldCiAgICAgICAgZW5kCiAgICAgICAgcmV0dXJuIGNvbmNhdChyZXN1bHQpCiAgICBl bmQKCiAgICBsb2NhbCB2ZWN0b3IgPSB2ZWN0b3JbbmFtZV0gb3IgdmVjdG9yLm5vcm1hbAog ICAgd2hpbGUgdHJ1ZSBkbwogICAgICAgIGlmIG4gPT0gMCB0aGVuCiAgICAgICAgICAgIGJy ZWFrCiAgICAgICAgZWxzZWlmIG4gPj0gMTAwMDAwMDAwIHRoZW4KICAgICAgICAgICAgbG9j YWwgbSA9IGZsb29yKG4vMTAwMDAwMDAwKQogICAgICAgICAgICByID0gciArIDEgOyByZXN1 bHRbcl0gPSB0b2NoaW5lc2UobSxuYW1lKQogICAgICAgICAgICByID0gciArIDEgOyByZXN1 bHRbcl0gPSB2ZWN0b3JbMTAwMDAwMDAwXQogICAgICAgICAgICBsb2NhbCB6ID0gbiAtIG0g KiAxMDAwMDAwMDAKICAgICAgICAgICAgaWYgeiA+IDAgYW5kIHogPCAxMDAwMDAwMCB0aGVu IHIgPSByICsgMSA7IHJlc3VsdFtyXSA9IHZlY3RvclswXSBlbmQKICAgICAgICAgICAgbiA9 IG4gJSAxMDAwMDAwMDAKICAgICAgICBlbHNlaWYgbiA+PSAxMDAwMDAwMCB0aGVuCiAgICAg ICAgICAgIGxvY2FsIG0gPSBmbG9vcihuLzEwMDAwKQogICAgICAgICAgICByID0gciArIDEg OyByZXN1bHRbcl0gPSB0b2NoaW5lc2UobSxuYW1lKQogICAgICAgICAgICByID0gciArIDEg OyByZXN1bHRbcl0gPSB2ZWN0b3JbMTAwMDBdCiAgICAgICAgICAgIGxvY2FsIHogPSBuIC0g bSAqIDEwMDAwCiAgICAgICAgICAgIGlmIHogPiAwIGFuZCB6IDwgMTAwMCB0aGVuIHIgPSBy ICsgMSA7IHJlc3VsdFtyXSA9IHZlY3RvclswXSBlbmQKICAgICAgICAgICAgbiA9IG4gJSAx MDAwMAogICAgICAgIGVsc2VpZiBuID49IDEwMDAwMDAgdGhlbgogICAgICAgICAgICBsb2Nh bCBtID0gZmxvb3Iobi8xMDAwMCkKICAgICAgICAgICAgciA9IHIgKyAxIDsgcmVzdWx0W3Jd ID0gdG9jaGluZXNlKG0sbmFtZSkKICAgICAgICAgICAgciA9IHIgKyAxIDsgcmVzdWx0W3Jd ID0gdmVjdG9yWzEwMDAwXQogICAgICAgICAgICBsb2NhbCB6ID0gbiAtIG0gKiAxMDAwMAog ICAgICAgICAgICBpZiB6ID4gMCBhbmQgeiA8IDEwMDAgdGhlbiByID0gciArIDEgOyByZXN1 bHRbcl0gPSB2ZWN0b3JbMF0gZW5kCiAgICAgICAgICAgIG4gPSBuICUgMTAwMDAKICAgICAg ICBlbHNlaWYgbiA+PSAxMDAwMDAgdGhlbgogICAgICAgICAgICBsb2NhbCBtID0gZmxvb3Io bi8xMDAwMCkKICAgICAgICAgICAgciA9IHIgKyAxIDsgcmVzdWx0W3JdID0gdG9jaGluZXNl KG0sbmFtZSkKICAgICAgICAgICAgciA9IHIgKyAxIDsgcmVzdWx0W3JdID0gdmVjdG9yWzEw MDAwXQogICAgICAgICAgICBsb2NhbCB6ID0gbiAtIG0gKiAxMDAwMAogICAgICAgICAgICBp ZiB6ID4gMCBhbmQgeiA8IDEwMDAgdGhlbiByID0gciArIDEgOyByZXN1bHRbcl0gPSB2ZWN0 b3JbMF0gZW5kCiAgICAgICAgICAgIG4gPSBuICUgMTAwMDAKICAgICAgICAgZWxzZWlmIG4g Pj0gMTAwMDAgdGhlbgogICAgICAgICAgICBsb2NhbCBtID0gZmxvb3Iobi8xMDAwMCkKICAg ICAgICAgICAgciA9IHIgKyAxIDsgcmVzdWx0W3JdID0gdmVjdG9yW21dCiAgICAgICAgICAg IHIgPSByICsgMSA7IHJlc3VsdFtyXSA9IHZlY3RvclsxMDAwMF0KICAgICAgICAgICAgbG9j YWwgeiA9IG4gLSBtICogMTAwMDAKICAgICAgICAgICAgaWYgeiA+IDAgYW5kIHogPCAxMDAw IHRoZW4gciA9IHIgKyAxIDsgcmVzdWx0W3JdID0gdmVjdG9yWzBdIGVuZAogICAgICAgICAg ICBuID0gbiAlIDEwMDAwCiAgICAgICAgIGVsc2VpZiBuID49IDEwMDAgdGhlbgogICAgICAg ICAgICBsb2NhbCBtID0gZmxvb3Iobi8xMDAwKQogICAgICAgICAgICByID0gciArIDEgOyBy ZXN1bHRbcl0gPSB2ZWN0b3JbbV0KICAgICAgICAgICAgciA9IHIgKyAxIDsgcmVzdWx0W3Jd ID0gdmVjdG9yWzEwMDBdCiAgICAgICAgICAgIGxvY2FsIHogPSAgbiAtIG0gKiAxMDAwCiAg ICAgICAgICAgIGlmIHogPiAwIGFuZCB6IDwgMTAwIHRoZW4gciA9IHIgKyAxIDsgcmVzdWx0 W3JdID0gdmVjdG9yWzBdIGVuZAogICAgICAgICAgICBuID0gbiAlIDEwMDAKICAgICAgICAg ZWxzZWlmIG4gPj0gMTAwIHRoZW4KICAgICAgICAgICAgbG9jYWwgbSA9IGZsb29yKG4vMTAw KQogICAgICAgICAgICByID0gciArIDEgOyByZXN1bHRbcl0gPSB2ZWN0b3JbbV0KICAgICAg ICAgICAgciA9IHIgKyAxIDsgcmVzdWx0W3JdID0gdmVjdG9yWzEwMF0KICAgICAgICAgICAg bG9jYWwgeiA9IG4gLSBtICogMTAwCiAgICAgICAgICAgIGlmIHogPiAwIGFuZCB6IDwgMTAg dGhlbiByID0gciArIDEgOyByZXN1bHRbcl0gPSB2ZWN0b3JbMF0gZW5kCiAgICAgICAgICAg IG4gPSBuICUgMTAwCiAgICAgICAgIGVsc2VpZiBuID49IDEwIHRoZW4KICAgICAgICAgICAg bG9jYWwgbSA9IGZsb29yKG4vMTApCiAgICAgICAgICAgIGlmIG0gPiAxIGFuZCB2ZWN0b3Jb bSoxMF0gdGhlbgogICAgICAgICAgICAgICAgciA9IHIgKyAxIDsgcmVzdWx0W3JdID0gdmVj dG9yW20qMTBdCiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHIgPSByICsgMSA7 IHJlc3VsdFtyXSA9IHZlY3RvclttXQogICAgICAgICAgICAgICAgciA9IHIgKyAxIDsgcmVz dWx0W3JdID0gdmVjdG9yWzEwXQogICAgICAgICAgICBlbmQKICAgICAgICAgICAgbiA9IG4g JSAxMAogICAgICAgIGVsc2UKICAgICAgICAgICAgciA9IHIgKyAxIDsgcmVzdWx0W3JdID0g dmVjdG9yW25dCiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZW5kCiAgICBlbmQKICAgIGlm IChyZXN1bHRbMV0gPT0gdmVjdG9yWzFdIGFuZCByZXN1bHRbMl0gPT0gdmVjdG9yWzEwXSkg dGhlbgogICAgICAgIHJlc3VsdFsxXSA9ICIiCiAgICBlbmQKICAgIHJldHVybiBjb25jYXQo cmVzdWx0KQplbmQKCi0tIGxvY2FsIHQgPSB7IDEsMTAsMTUsMjUsMzUsNDUsMTEsMTAwLDEx MSwxMTExLDEwMDAwLDExMTExLDEwMDAwMCwxMTExMTEsMTExMTExMSwxMTExMTExMSwxMTEx MTExMTEsMTAwMDAwMDAwLDExMTExMTExMTEsMTExMTExMTExMTEsMTExMTExMTExMTExLDEx MTExMTExMTExMTEgfQotLSBmb3Igaz0xLCN0IGRvCi0tIGxvY2FsIHYgPSB0W2tdCi0tICAg ICBwcmludCh2LHRvY2hpbmVzZSh2KSx0b2NoaW5lc2UodiwiYWxsIiksdG9jaGluZXNlKHYs ImNhcCIpKQotLSBlbmQKCmNvbnZlcnRlcnMudG9jaGluZXNlID0gdG9jaGluZXNlCgpmdW5j dGlvbiBjb252ZXJ0ZXJzLmNoaW5lc2VudW1lcmFscyAgIChuLGhvdykgcmV0dXJuIHRvY2hp bmVzZShuLGhvdyBvciAibm9ybWFsIikgZW5kCmZ1bmN0aW9uIGNvbnZlcnRlcnMuY2hpbmVz ZWNhcG51bWVyYWxzKG4pICAgICByZXR1cm4gdG9jaGluZXNlKG4sImNhcCIpIGVuZApmdW5j dGlvbiBjb252ZXJ0ZXJzLmNoaW5lc2VhbGxudW1lcmFscyhuKSAgICAgcmV0dXJuIHRvY2hp bmVzZShuLCJhbGwiKSBlbmQKZnVuY3Rpb24gY29udmVydGVycy5jaGluZXNlZGF0ZW51bWVy YWxzKG4pICAgIHJldHVybiB0b2NoaW5lc2UobiwiZGF0ZSIpIGVuZAoKY29udmVydGVyc1sn Y24nXSAgID0gY29udmVydGVycy5jaGluZXNlbnVtZXJhbHMKY29udmVydGVyc1snY24tYydd ID0gY29udmVydGVycy5jaGluZXNlY2FwbnVtZXJhbHMKY29udmVydGVyc1snY24tYSddID0g Y29udmVydGVycy5jaGluZXNlYWxsbnVtZXJhbHMKY29udmVydGVyc1snY24tZCddID0gY29u dmVydGVycy5jaGluZXNlZGF0ZW51bWVyYWxzCgppbXBsZW1lbnQgewogICAgbmFtZSAgICAg ID0gImNoaW5lc2VudW1lcmFscyIsCiAgICBhY3Rpb25zICAgPSB7IHRvY2hpbmVzZSwgY29u dGV4dCB9LAogICAgYXJndW1lbnRzID0geyAiaW50ZWdlciIsICJzdHJpbmciIH0KfQoKLS0g dGhpcyBpcyBhIHRlbXBvcmFyeSBzb2x1dGlvbjogd2UgbmVlZCBhIGJldHRlciBzb2x1dGlv biB3aGVuIHdlIGhhdmUKLS0gbW9yZSBsYW5ndWFnZXMKCmNvbnZlcnRlcnNbJ2EnXSAgPSBj b252ZXJ0ZXJzLmNoYXJhY3RlcnMKY29udmVydGVyc1snQSddICA9IGNvbnZlcnRlcnMuQ2hh cmFjdGVycwpjb252ZXJ0ZXJzWydBSyddID0gY29udmVydGVycy5DaGFyYWN0ZXJzIC0tIG9i c29sZXRlCmNvbnZlcnRlcnNbJ0tBJ10gPSBjb252ZXJ0ZXJzLkNoYXJhY3RlcnMgLS0gb2Jz b2xldGUKCmZ1bmN0aW9uIGNvbnZlcnRlcnMuc3BhbmlzaG51bWVyYWxzICAobikgcmV0dXJu IGFscGhhYmV0aWMobiwiZXMiKSBlbmQKZnVuY3Rpb24gY29udmVydGVycy5TcGFuaXNobnVt ZXJhbHMgIChuKSByZXR1cm4gQWxwaGFiZXRpYyhuLCJlcyIpIGVuZApmdW5jdGlvbiBjb252 ZXJ0ZXJzLnNsb3Zlbmlhbm51bWVyYWxzKG4pIHJldHVybiBhbHBoYWJldGljKG4sInNsIikg ZW5kCmZ1bmN0aW9uIGNvbnZlcnRlcnMuU2xvdmVuaWFubnVtZXJhbHMobikgcmV0dXJuIEFs cGhhYmV0aWMobiwic2wiKSBlbmQKZnVuY3Rpb24gY29udmVydGVycy5ydXNzaWFubnVtZXJh bHMgIChuKSByZXR1cm4gYWxwaGFiZXRpYyhuLCJydSIpIGVuZApmdW5jdGlvbiBjb252ZXJ0 ZXJzLlJ1c3NpYW5udW1lcmFscyAgKG4pIHJldHVybiBBbHBoYWJldGljKG4sInJ1IikgZW5k Cgpjb252ZXJ0ZXJzWydhbHBoYWJldGljOmVzJ10gPSBjb252ZXJ0ZXJzLnNwYW5pc2hudW1l cmFscwpjb252ZXJ0ZXJzWydhbHBoYWJldGljOnNsJ10gPSBjb252ZXJ0ZXJzLnNsb3Zlbmlh bm51bWVyYWxzCmNvbnZlcnRlcnNbJ2FscGhhYmV0aWM6cnUnXSA9IGNvbnZlcnRlcnMucnVz c2lhbm51bWVyYWxzCgpjb252ZXJ0ZXJzWydBbHBoYWJldGljOmVzJ10gPSBjb252ZXJ0ZXJz LlNwYW5pc2hudW1lcmFscwpjb252ZXJ0ZXJzWydBbHBoYWJldGljOnNsJ10gPSBjb252ZXJ0 ZXJzLlNsb3Zlbmlhbm51bWVyYWxzCmNvbnZlcnRlcnNbJ0FscGhhYmV0aWM6cnUnXSA9IGNv bnZlcnRlcnMuUnVzc2lhbm51bWVyYWxzCgotLSBib251cwoKY29udmVydGVyc1snYTplcydd ICA9IGNvbnZlcnRlcnMuc3BhbmlzaG51bWVyYWxzCmNvbnZlcnRlcnNbJ2E6c2wnXSAgPSBj b252ZXJ0ZXJzLnNsb3Zlbmlhbm51bWVyYWxzCmNvbnZlcnRlcnNbJ2E6cnUnXSAgPSBjb252 ZXJ0ZXJzLnJ1c3NpYW5udW1lcmFscwpjb252ZXJ0ZXJzWydBOmVzJ10gID0gY29udmVydGVy cy5TcGFuaXNobnVtZXJhbHMKY29udmVydGVyc1snQTpzbCddICA9IGNvbnZlcnRlcnMuU2xv dmVuaWFubnVtZXJhbHMKY29udmVydGVyc1snQTpydSddICA9IGNvbnZlcnRlcnMuUnVzc2lh bm51bWVyYWxzCgotLSBlbmQgb2YgYm9udXMKCmNvbnZlcnRlcnMuc2VxdWVuY2VzID0gY29u dmVydGVycy5zZXF1ZW5jZXMgb3IgeyB9CmxvY2FsIHNlcXVlbmNlcyAgICAgID0gY29udmVy dGVycy5zZXF1ZW5jZXMKCnN0b3JhZ2UucmVnaXN0ZXIoImNvbnZlcnRlcnMvc2VxdWVuY2Vz Iiwgc2VxdWVuY2VzLCAiY29udmVydGVycy5zZXF1ZW5jZXMiKQoKZnVuY3Rpb24gY29udmVy dGVycy5kZWZpbmUobmFtZSxzZXQpIC0tICxsYW5ndWFnZSkKIC0tIGlmIGxhbmd1YWdlIHRo ZW4KIC0tICAgICBuYW1lID0gbmFtZSAuLiAiOiIgLi4gbGFuZ3VhZ2UKIC0tIGVuZAogICAg c2VxdWVuY2VzW25hbWVdID0gc2V0dGluZ3NfdG9fYXJyYXkoc2V0KQplbmQKCmZ1bmN0aW9u IGNvbnZlcnRlcnMubWF4KG5hbWUpCiAgICBsb2NhbCBzID0gc2VxdWVuY2VzW25hbWVdCiAg ICByZXR1cm4gcyBhbmQgI3Mgb3IgMAplbmQKCmltcGxlbWVudCB7CiAgICBuYW1lICAgICAg PSAiZGVmaW5lY29udmVyc2lvbiIsCiAgICBhY3Rpb25zICAgPSBjb252ZXJ0ZXJzLmRlZmlu ZSwKICAgIGFyZ3VtZW50cyA9ICIyIHN0cmluZ3MiLAp9CgppbXBsZW1lbnQgewogICAgbmFt ZSAgICAgID0gIm5vZmNvbnZlcnNpb25zIiwKICAgIGFjdGlvbnMgICA9IHsgY29udmVydGVy cy5tYXgsIGNvbnRleHQgfSwKICAgIGFyZ3VtZW50cyA9ICJzdHJpbmciLAp9Cgpsb2NhbCBm dW5jdGlvbiBjb252ZXJ0KG1ldGhvZCxuLGxhbmd1YWdlKQogICAgbG9jYWwgY29udmVydGVy ID0gbGFuZ3VhZ2UgYW5kIGNvbnZlcnRlcnNbbWV0aG9kLi4iOiIuLmxhbmd1YWdlXSBvciBj b252ZXJ0ZXJzW21ldGhvZF0KICAgIGlmIGNvbnZlcnRlciB0aGVuCiAgICAgICAgcmV0dXJu IGNvbnZlcnRlcihuKQogICAgZWxzZQogICAgICAgIGxvY2FsIGxvd2VybWV0aG9kID0gbG93 ZXIobWV0aG9kKQogICAgICAgIGxvY2FsIGxpbmd1aXN0aWMgID0gY291bnRlcnNbbG93ZXJt ZXRob2RdCiAgICAgICAgaWYgbGluZ3Vpc3RpYyB0aGVuCiAgICAgICAgICAgIHJldHVybiBk b19hbHBoYWJldGljKG4sbGluZ3Vpc3RpYyxsb3dlcm1ldGhvZCA9PSBtZXRob2QgYW5kIGxv d2VyY2hhcmFjdGVyIG9yIHVwcGVyY2hhcmFjdGVyKQogICAgICAgIGVuZAogICAgICAgIGxv Y2FsIHNlcXVlbmNlID0gc2VxdWVuY2VzW21ldGhvZF0KICAgICAgICBpZiBzZXF1ZW5jZSB0 aGVuCiAgICAgICAgICAgIGxvY2FsIG1heCA9ICNzZXF1ZW5jZQogICAgICAgICAgICBpZiBu ID4gbWF4IHRoZW4KICAgICAgICAgICAgICAgIHJldHVybiBzZXF1ZW5jZVsobi0xKSAlIG1h eCArIDFdCiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJldHVybiBzZXF1ZW5j ZVtuXQogICAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgICAgICByZXR1cm4gbgogICAg ZW5kCmVuZAoKY29udmVydGVycy5jb252ZXJ0ID0gY29udmVydAoKbG9jYWwgZnVuY3Rpb24g dmFsaWQobWV0aG9kLGxhbmd1YWdlKQogICAgcmV0dXJuIGNvbnZlcnRlcnNbbWV0aG9kLi4i OiIuLmxhbmd1YWdlXSBvciBjb252ZXJ0ZXJzW21ldGhvZF0gb3Igc2VxdWVuY2VzW21ldGhv ZF0KZW5kCgppbXBsZW1lbnQgewogICAgbmFtZSAgICAgID0gImRvaWZlbHNlY29udmVydGVy IiwKICAgIGFjdGlvbnMgICA9IHsgdmFsaWQsIGNvbW1hbmRzLmRvaWZlbHNlIH0sCiAgICBh cmd1bWVudHMgPSAiMiBzdHJpbmdzIiwKfQoKaW1wbGVtZW50IHsKICAgIG5hbWUgICAgICA9 ICJjaGVja2VkY29udmVyc2lvbiIsCiAgICBhY3Rpb25zICAgPSB7IGNvbnZlcnQsIGNvbnRl eHQgfSwKICAgIGFyZ3VtZW50cyA9IHsgInN0cmluZyIsICJpbnRlZ2VyIiB9Cn0KCi0tIGhl YnJldyBkYXRhIGNvbnZlcnNpb24KCmxvY2FsIGdyZWdvcmlhbl90b19oZWJyZXcgIGRvCgog ICAgLS0gVGhlIG5leHQgY29kZSBpcyBiYXNlZCBvbiB0aGUgYyBjb2RlIGF0IGh0dHBzOi8v Z2l0aHViLmNvbS9oZWJjYWwvaGViY2FsCiAgICAtLQogICAgLS0gSGViY2FsICAgICA6IEEg SmV3aXNoIENhbGVuZGFyIEdlbmVyYXRvcgogICAgLS0gQ29weXJpZ2h0ICA6IDE5OTQgLSAy MDA0IERhbm55IFNhZGlub2ZmLCAyMDAyIE1pY2hhZWwgSi4gUmFkd2luCiAgICAtLSBMaWNl bnNlICAgIDogR1BMCiAgICAtLQogICAgLS0gQmVjYXVzZSB3ZSBvbmx5IG5lZWQgc2ltcGxl IGRhdGVzLCB3ZSB1c2UgcGFydCBvZiB0aGUgY29kZS4gVGhlcmUgaXMgbW9yZQogICAgLS0g YXQgdGhhdCBnaXRodWIgcGxhY2UuCiAgICAtLQogICAgLS0gVGhlIG51bWJlciBvZiBkYXlz IGVsYXBzZWQgYmV0d2VlbiB0aGUgR3JlZ29yaWFuIGRhdGUgMTIvMzEvMSBCQyBhbmQgREFU RS4KICAgIC0tIFRoZSBHcmVnb3JpYW4gZGF0ZSBTdW5kYXksIERlY2VtYmVyIDMxLCAxIEJD IGlzIGltYWdpbmFyeS4KICAgIC0tCiAgICAtLSBUaGUgY29kZSBpcyBsdWFmaWVkIGFuZCBh IGxpdHRsZSBkaWZmZXJlbnQgYmVjYXVzZSB3ZSBoYXZlIG5vIGFzc2lnbm1lbnRzCiAgICAt LSBpbiBsb29wcyBhbmQgc3VjaC4gV2UgY291bGQgc3BlZWQgdXAgdGhlIGNvZGUgYnV0IHRo ZW4gd2UgZGl2ZXJ0IGZyb20gdGhlCiAgICAtLSBvcmlnaW5hbC4gVGhpcyBpcyBub3QgdGhh dCBjcml0aWNhbCBhbnl3YXkuCgogICAgbG9jYWwgTklTQU4gICAgPSAgMQogICAgbG9jYWwg SVlZQVIgICAgPSAgMgogICAgbG9jYWwgU0lWQU4gICAgPSAgMwogICAgbG9jYWwgVEFNVVog ICAgPSAgNAogICAgbG9jYWwgQVYgICAgICAgPSAgNQogICAgbG9jYWwgRUxVTCAgICAgPSAg NgogICAgbG9jYWwgVElTSFJFSSAgPSAgNwogICAgbG9jYWwgQ0hFU0hWQU4gPSAgOAogICAg bG9jYWwgS0lTTEVWICAgPSAgOQogICAgbG9jYWwgVEVWRVQgICAgPSAxMAogICAgbG9jYWwg U0hWQVQgICAgPSAxMQogICAgbG9jYWwgQURBUl9JICAgPSAxMgogICAgbG9jYWwgQURBUl9J SSAgPSAxMwoKICAgIGxvY2FsIG1tYXAgPSB7CiAgICAgICAgS0lTTEVWLAogICAgICAgIFRF VkVULAogICAgICAgIFNIVkFULAogICAgICAgIEFEQVJfSSwKICAgICAgICBOSVNBTiwKICAg ICAgICBJWVlBUiwKICAgICAgICBTSVZBTiwKICAgICAgICBUQU1VWiwKICAgICAgICBUSVNI UkVJLAogICAgICAgIFRJU0hSRUksCiAgICAgICAgVElTSFJFSSwKICAgICAgICBDSEVTSFZB TgogICAgfQoKICAgIGxvY2FsIGZ1bmN0aW9uIGdyZWcyYWJzKHllYXIsbW9udGgsZGF5KQog ICAgICAgIGxvY2FsIHkgPSB5ZWFyIC0gMQogICAgICAgIHJldHVybiB5ICogMzY1ICsgZGl2 KHksNCktIGRpdih5LDEwMCkgKyBkaXYoeSw0MDApICsgb3Mubm9mZGF5cyh5ZWFyLG1vbnRo LGRheSkKICAgIGVuZAoKICAgIGxvY2FsIGZ1bmN0aW9uIGFiczJncmVnKGFicykKCiAgICAg ICAgbG9jYWwgZDAgICA9IGFicyAtIDEKCiAgICAgICAgbG9jYWwgbjQwMCA9IGRpdihkMCwg MTQ2MDk3KQogICAgICAgIGxvY2FsIGQxICAgPSBtb2QoZDAsIDE0NjA5NykKICAgICAgICBs b2NhbCBuMTAwID0gZGl2KGQxLCAgMzY1MjQpCiAgICAgICAgbG9jYWwgZDIgICA9IG1vZChk MSwgIDM2NTI0KQogICAgICAgIGxvY2FsIG40ICAgPSBkaXYoZDIsICAgMTQ2MSkKICAgICAg ICBsb2NhbCBkMyAgID0gbW9kKGQyLCAgIDE0NjEpCiAgICAgICAgbG9jYWwgbjEgICA9IGRp dihkMywgICAgMzY1KQoKICAgICAgICBsb2NhbCBkYXkgID0gbW9kKGQzLCAzNjUpICsgMQog ICAgICAgIGxvY2FsIHllYXIgPSA0MDAgKiBuNDAwICsgMTAwICogbjEwMCArIDQgKiBuNCAr IG4xCgogICAgICAgIGlmIG4xMDAgPT0gNCBvciBuMSA9PSA0IHRoZW4KICAgICAgICAgICAg cmV0dXJuIHllYXIsIDEyLCAzMQogICAgICAgIGVsc2UKICAgICAgICAgICAgeWVhciA9IHll YXIgKyAxCiAgICAgICAgICAgIG1vbnRoID0gMQogICAgICAgICAgICB3aGlsZSB0cnVlIGRv CiAgICAgICAgICAgICAgICBsb2NhbCBtbGVuID0gb3Mubm9mZGF5cyh5ZWFyLG1vbnRoKQog ICAgICAgICAgICAgICAgaWYgbWxlbiA8IGRheSB0aGVuCiAgICAgICAgICAgICAgICAgICAg ZGF5ICAgPSBkYXkgLSBtbGVuCiAgICAgICAgICAgICAgICAgICAgbW9udGggPSBtb250aCAr IDEKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBicmVhawogICAg ICAgICAgICAgICAgZW5kCiAgICAgICAgICAgIGVuZAogICAgICAgICAgICByZXR1cm4geWVh ciwgbW9udGgsIGRheQogICAgICAgIGVuZAogICAgZW5kCgogICAgbG9jYWwgZnVuY3Rpb24g aGVicmV3X2xlYXB5ZWFyKHllYXIpCiAgICAgICAgcmV0dXJuIG1vZCgxICsgeWVhciAqIDcs IDE5KSA8IDcKICAgIGVuZAoKICAgIGxvY2FsIGZ1bmN0aW9uIGhlYnJld19tb250aHNfaW5f eWVhcih5ZWFyKQogICAgICAgIHJldHVybiBoZWJyZXdfbGVhcHllYXIoeWVhcikgYW5kIDEz IG9yIDEyCiAgICBlbmQKCiAgICBsb2NhbCBmdW5jdGlvbiBoZWJyZXdfZWxhcHNlZF9kYXlz KHllYXIpCiAgICAgICAgbG9jYWwgeSAgICAgICAgID0geWVhciAtIDEKICAgICAgICBsb2Nh bCBtX2VsYXBzZWQgPSAyMzUgKiBkaXYoeSwxOSkgKyAxMiAqIG1vZCh5LDE5KSArIGRpdigo KG1vZCh5LDE5KSAqIDcpICsgMSksMTkpCiAgICAgICAgbG9jYWwgcF9lbGFwc2VkID0gMjA0 ICsgNzkzICogbW9kKG1fZWxhcHNlZCwxMDgwKQogICAgICAgIGxvY2FsIGhfZWxhcHNlZCA9 IDUgKyAxMiAqIG1fZWxhcHNlZCArIDc5MyAqIGRpdihtX2VsYXBzZWQsMTA4MCkgKyBkaXYo cF9lbGFwc2VkLDEwODApCiAgICAgICAgbG9jYWwgcGFydHMgICAgID0gbW9kKHBfZWxhcHNl ZCwxMDgwKSArIDEwODAgKiBtb2QoaF9lbGFwc2VkLDI0KQogICAgICAgIGxvY2FsIGRheSAg ICAgICA9IDEgKyAyOSAqIG1fZWxhcHNlZCArIGRpdihoX2VsYXBzZWQsMjQpCiAgICAgICAg bG9jYWwgZCAgICAgICAgID0gbW9kKGRheSw3KQogICAgICAgIGxvY2FsIGFsdF9kYXkgICA9 IGRheQogICAgICAgIGlmICAgICAgIHBhcnRzID49IDE5NDQwCiAgICAgICAgICAgICBvciAo cGFydHMgPj0gIDk5MjQgYW5kIGQgPT0gMiBhbmQgbm90IChoZWJyZXdfbGVhcHllYXIoeWVh cikpKQogICAgICAgICAgICAgb3IgKHBhcnRzID49IDE2Nzg5IGFuZCBkID09IDEgYW5kICAg ICAgaGVicmV3X2xlYXB5ZWFyKHkgICApKSB0aGVuCiAgICAgICAgICAgIGFsdF9kYXkgPSBh bHRfZGF5ICsgMQogICAgICAgIGVuZAogICAgICAgIGQgPSBtb2QoYWx0X2RheSw3KQogICAg ICAgIGlmIGQgPT0gMCBvciBkID09IDMgb3IgZCA9PSA1IHRoZW4KICAgICAgICAgICAgYWx0 X2RheSA9IGFsdF9kYXkgKyAxCiAgICAgICAgZW5kCiAgICAgICAgcmV0dXJuIGFsdF9kYXkK ICAgIGVuZAoKICAgIGxvY2FsIGZ1bmN0aW9uIGRheXNfaW5faGVicmV3X3llYXIoeWVhcikK ICAgICAgICByZXR1cm4gaGVicmV3X2VsYXBzZWRfZGF5cyh5ZWFyICsgMSkgLSBoZWJyZXdf ZWxhcHNlZF9kYXlzKHllYXIpCiAgICBlbmQKCiAgICBsb2NhbCBmdW5jdGlvbiBsb25nX2No ZXNodmFuKHllYXIpCiAgICAgICAgcmV0dXJuIG1vZChkYXlzX2luX2hlYnJld195ZWFyKHll YXIpLDEwKSA9PSA1CiAgICBlbmQKCiAgICBsb2NhbCBmdW5jdGlvbiBzaG9ydF9raXNsZXYo eWVhcikKICAgICAgICByZXR1cm4gbW9kKGRheXNfaW5faGVicmV3X3llYXIoeWVhciksMTAp ID09IDMKICAgIGVuZAoKICAgIGxvY2FsIGZ1bmN0aW9uIG1heF9kYXlzX2luX2hlYl9tb250 aChtb250aCx5ZWFyKQogICAgICAgIGlmIG1vbnRoID09IElZWUFSIG9yIG1vbnRoID09IFRB TVVaIG9yIG1vbnRoID09IEVMVUwgb3IgbW9udGggPT0gVEVWRVQgb3IgbW9udGggPT0gQURB Ul9JSSBvcgogICAgICAgICAgIChtb250aCA9PSBBREFSX0kgICBhbmQgbm90IGhlYnJld19s ZWFweWVhcih5ZWFyKSkgb3IKICAgICAgICAgICAobW9udGggPT0gQ0hFU0hWQU4gYW5kIG5v dCBsb25nX2NoZXNodmFuKHllYXIpKSAgIG9yCiAgICAgICAgICAgKG1vbnRoID09IEtJU0xF ViAgIGFuZCAgICAgc2hvcnRfa2lzbGV2ICh5ZWFyKSkgICB0aGVuCiAgICAgICAgICAgIHJl dHVybiAyOQogICAgICAgIGVsc2UKICAgICAgICAgICAgcmV0dXJuIDMwCiAgICAgICAgZW5k CiAgICBlbmQKCiAgICBsb2NhbCBmdW5jdGlvbiBoZWJyZXcyYWJzKHllYXIsbW9udGgsZGF5 KQogICAgICAgIGlmIG1vbnRoIDwgVElTSFJFSSB0aGVuCiAgICAgICAgICAgIGZvciBtPVRJ U0hSRUksIGhlYnJld19tb250aHNfaW5feWVhcih5ZWFyKSwgMSBkbwogICAgICAgICAgICAg ICAgZGF5ID0gZGF5ICsgbWF4X2RheXNfaW5faGViX21vbnRoKG0seWVhcikKICAgICAgICAg ICAgZW5kCiAgICAgICAgICAgIGZvciBtPU5JU0FOLCBtb250aCAtIDEsIDEgZG8KICAgICAg ICAgICAgICAgIGRheSA9IGRheSArIG1heF9kYXlzX2luX2hlYl9tb250aChtLHllYXIpCiAg ICAgICAgICAgIGVuZAogICAgICAgIGVsc2UKICAgICAgICAgICAgZm9yIG09VElTSFJFSSwg bW9udGggLSAxLCAxIGRvCiAgICAgICAgICAgICAgICBkYXkgPSBkYXkgKyBtYXhfZGF5c19p bl9oZWJfbW9udGgobSx5ZWFyKQogICAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgICAg ICByZXR1cm4gaGVicmV3X2VsYXBzZWRfZGF5cyh5ZWFyKSAtIDEzNzM0MjkgKyBkYXkKICAg IGVuZAoKICAgIGxvY2FsIGZ1bmN0aW9uIGFiczJoZWJyZXcoYWJzKQogICAgICAgIGxvY2Fs IHl5LCBtbSwgZGQgPSBhYnMyZ3JlZyhhYnMpCiAgICAgICAgbG9jYWwgZGF5ICAgPSAxCiAg ICAgICAgbG9jYWwgbW9udGggPSBUSVNIUkVJCiAgICAgICAgbG9jYWwgeWVhciAgPSAzNzYw ICsgeXkKICAgICAgICB3aGlsZSBhYnMgPj0gaGVicmV3MmFicyh5ZWFyKzEsbW9udGgsZGF5 KSBkbwogICAgICAgICAgICB5ZWFyID0geWVhciArIDEKICAgICAgICBlbmQKICAgICAgICBp ZiB5ZWFyID49IDQ2MzUgYW5kIHllYXIgPCAxMDY2NiB0aGVuCiAgICAgICAgICAgIG1vbnRo ID0gbW1hcFttbV0KICAgICAgICBlbmQKICAgICAgICB3aGlsZSBhYnMgPiBoZWJyZXcyYWJz KHllYXIsbW9udGgsbWF4X2RheXNfaW5faGViX21vbnRoKG1vbnRoLHllYXIpKSBkbwogICAg ICAgICAgICBtb250aCA9IG1vZChtb250aCxoZWJyZXdfbW9udGhzX2luX3llYXIoeWVhcikp ICsgMQogICAgICAgIGVuZAogICAgICAgIGRheSA9IGFicyAtIGhlYnJldzJhYnMoeWVhcixt b250aCwxKSArIDEKICAgICAgICByZXR1cm4geWVhciwgbW9udGgsIGRheQogICAgZW5kCgog ICAgLS0gbW9udGhzID0geyAi16DXmdeh158iICLXkNeZ15nXqCIgIteh15nXldefIiAi16rX nteV15YiICLXkNeRIiAi15DXnNeV15wiICLXqtep16jXmSIgIteX16nXldefIiAi15vXodec 15UiICLXmNeR16oiICLXqdeR15giIH0KCiAgICBncmVnb3JpYW5fdG9faGVicmV3ID0gZnVu Y3Rpb24oeSxtLGQpCiAgICAgICAgcmV0dXJuIGFiczJoZWJyZXcoZ3JlZzJhYnMoeSxtLGQp KQogICAgZW5kCgogICAgY29udmVydGVycy5ncmVnb3JpYW5fdG9faGVicmV3ID0gZ3JlZ29y aWFuX3RvX2hlYnJldwoKZW5kCgpsb2NhbCBncmVnb3JpYW5fdG9famFsYWxpLCBqYWxhbGlf dG9fZ3JlZ29yaWFuIGRvCgogICAgLS0gV2VsbCwgc2luY2UgdGhlIG9uZSBhc2tpbmcgZm9y IHRoaXMgZGlkbid0IHRlc3QgaXQgdGhlIGZvbGxvd2luZyBjb2RlIGlzIG5vdAogICAgLS0g ZW5hYmxlZC4KICAgIC0tCiAgICAtLSAtLSBUaGlzIEx1YSB2ZXJzaW9uIGlzIGJhc2VkIG9u IGEgSmF2YXNjcmlwdCBieSBCZWhkYWQgRXNmYWhib2Qgd2hpY2ggaW4gdHVybgogICAgLS0g LS0gaXMgYmFzZWQgb24gR1BMJ2QgY29kZSBieSBSb296YmVoIFBvdXJuYWRlciBvZiB0aGUg VGhlIEZhcnNpV2ViIFByb2plY3QKICAgIC0tIC0tIEdyb3VwOiBodHRwOi8vd3d3LmZhcnNp d2ViLmluZm8vamFsYWxpL2phbGFsaS5qcy4KICAgIC0tIC0tCiAgICAtLSAtLSBXZSBzdGFy dCB0YWJsZXMgYXQgb25lLCBJIGtlcHQgaXQgemVybyBiYXNlZCBpbiBvcmRlciB0byBzdGF5 IGNsb3NlIHRvCiAgICAtLSAtLSB0aGUgb3JpZ2luYWwuCiAgICAtLSAtLQogICAgLS0gLS0g Q29udmVyc2lvbiBieSBIYW5zIEhhZ2VuCgogICAgbG9jYWwgZ19kYXlzX2luX21vbnRoID0g eyBbMF0gPSAzMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMx IH0KICAgIGxvY2FsIGpfZGF5c19pbl9tb250aCA9IHsgWzBdID0gMzEsIDMxLCAzMSwgMzEs IDMxLCAzMSwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyOSB9CgoKICAgIGdyZWdvcmlhbl90b19q YWxhbGkgPSBmdW5jdGlvbihneSxnbSxnZCkKICAgICAgICBsb2NhbCBqeSwgam0sIGpkLCBn X2RheV9ubywgal9kYXlfbm8sIGpfbnAsIGkKICAgICAgICBneSwgZ20sIGdkID0gZ3kgLSAx NjAwLCBnbSAtIDEsIGdkIC0gMQogICAgICAgIGdfZGF5X25vID0gMzY1Kmd5ICsgZGl2KChn eSszKSw0KSAtIGRpdigoZ3krOTkpLDEwMCkgKyBkaXYoKGd5KzM5OSksNDAwKQogICAgICAg IGkgPSAwCiAgICAgICAgd2hpbGUgaSA8IGdtIGRvCiAgICAgICAgICAgIGdfZGF5X25vID0g Z19kYXlfbm8gKyBnX2RheXNfaW5fbW9udGhbaV0KICAgICAgICAgICAgaSA9IGkgKyAxCiAg ICAgICAgZW5kCiAgICAgICAgaWYgKGdtPjEgYW5kICgoZ3klND09MCBhbmQgZ3klMTAwfj0w KSBvciAoZ3klNDAwPT0wKSkpIHRoZW4KICAgICAgICAgICAgZ19kYXlfbm8gPSBnX2RheV9u byArIDEKICAgICAgICBlbmQKICAgICAgICBnX2RheV9ubyA9IGdfZGF5X25vICsgZ2QKICAg ICAgICBqX2RheV9ubyA9IGdfZGF5X25vIC0gNzkKICAgICAgICBqX25wID0gZGl2KGpfZGF5 X25vLDEyMDUzKQogICAgICAgIGpfZGF5X25vID0gbW9kKGpfZGF5X25vLDEyMDUzKQogICAg ICAgIGp5ID0gOTc5ICsgMzMqal9ucCArIDQqZGl2KGpfZGF5X25vLDE0NjEpCiAgICAgICAg al9kYXlfbm8gPSBtb2Qoal9kYXlfbm8sMTQ2MSkKICAgICAgICBpZiBqX2RheV9ubyA+PSAz NjYgdGhlbgogICAgICAgICAgICBqeSA9IGp5ICsgZGl2KChqX2RheV9uby0xKSwzNjUpCiAg ICAgICAgICAgIGpfZGF5X25vID0gbW9kKChqX2RheV9uby0xKSwzNjUpCiAgICAgICAgZW5k CiAgICAgICAgaSA9IDAKICAgICAgICB3aGlsZSBpIDwgMTEgYW5kIGpfZGF5X25vID49IGpf ZGF5c19pbl9tb250aFtpXSBkbwogICAgICAgICAgICBqX2RheV9ubyA9IGpfZGF5X25vIC0g al9kYXlzX2luX21vbnRoW2ldCiAgICAgICAgICAgIGkgPSBpICsgMQogICAgICAgIGVuZAog ICAgICAgIGptID0gaSArIDEKICAgICAgICBqZCA9IGpfZGF5X25vICsgMQogICAgICAgIHJl dHVybiBqeSwgam0sIGpkCiAgICBlbmQKCiAgICBqYWxhbGlfdG9fZ3JlZ29yaWFuID0gZnVu Y3Rpb24oanksam0samQpCiAgICAgICAgbG9jYWwgZ3ksIGdtLCBnZCwgZ19kYXlfbm8sIGpf ZGF5X25vLCBsZWFwLCBpCiAgICAgICAganksIGptLCBqZCA9IGp5IC0gOTc5LCBqbSAtIDEs IGpkIC0gMQogICAgICAgIGpfZGF5X25vID0gMzY1Kmp5ICsgZGl2KGp5LDMzKSo4ICsgZGl2 KChtb2QoanksMzMpKzMpLDQpCiAgICAgICAgZm9yIGk9MCxqbS0xLDEgZG8KICAgICAgICAg ICAgal9kYXlfbm8gPSBqX2RheV9ubyArIGpfZGF5c19pbl9tb250aFtpXQogICAgICAgIGVu ZAogICAgICAgIGpfZGF5X25vID0gal9kYXlfbm8gKyBqZAogICAgICAgIGdfZGF5X25vID0g al9kYXlfbm8gKyA3OQogICAgICAgIGd5ID0gMTYwMCArIDQwMCpkaXYoZ19kYXlfbm8sMTQ2 MDk3KQogICAgICAgIGdfZGF5X25vID0gbW9kKGdfZGF5X25vLCAxNDYwOTcpCiAgICAgICAg bGVhcCA9IDEKICAgICAgICBpZiBnX2RheV9ubyA+PSAzNjUyNSB0aGVuCiAgICAgICAgICAg IGdfZGF5X25vID0gZ19kYXlfbm8gLSAxCiAgICAgICAgICAgIGd5ID0gZ3kgKyAxMDAqZGl2 KGdfZGF5X25vLDM2NTI0KQogICAgICAgICAgICBnX2RheV9ubyA9IG1vZChnX2RheV9ubywg MzY1MjQpCiAgICAgICAgICAgIGlmIGdfZGF5X25vID49IDM2NSB0aGVuCiAgICAgICAgICAg ICAgICBnX2RheV9ubyA9IGdfZGF5X25vICsgMQogICAgICAgICAgICBlbHNlCiAgICAgICAg ICAgICAgICBsZWFwID0gMAogICAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgICAgICBn eSA9IGd5ICArIDQqZGl2KGdfZGF5X25vLDE0NjEpCiAgICAgICAgZ19kYXlfbm8gPSBtb2Qo Z19kYXlfbm8sIDE0NjEpCiAgICAgICAgaWYgZ19kYXlfbm8gPj0gMzY2IHRoZW4KICAgICAg ICAgICAgbGVhcCA9IDAKICAgICAgICAgICAgZ19kYXlfbm8gPSBnX2RheV9ubyAtIDEKICAg ICAgICAgICAgZ3kgPSBneSArIGRpdihnX2RheV9ubywgMzY1KQogICAgICAgICAgICBnX2Rh eV9ubyA9IG1vZChnX2RheV9ubywgMzY1KQogICAgICAgIGVuZAogICAgICAgIGkgPSAwCiAg ICAgICAgd2hpbGUgdHJ1ZSBkbwogICAgICAgICAgICBsb2NhbCBkID0gZ19kYXlzX2luX21v bnRoW2ldICsgKChpID09IDEgYW5kIGxlYXApIG9yIDApCiAgICAgICAgICAgIGlmIGdfZGF5 X25vID49IGQgdGhlbgogICAgICAgICAgICAgICAgZ19kYXlfbm8gPSBnX2RheV9ubyAtIGQK ICAgICAgICAgICAgICAgIGkgPSBpICsgMQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAg ICAgICBicmVhawogICAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgICAgICBnbSA9IGkg KyAxCiAgICAgICAgZ2QgPSBnX2RheV9ubyArIDEKICAgICAgICByZXR1cm4gZ3ksIGdtLCBn ZAogICAgZW5kCgogICAgLS0gbG9jYWwgZnVuY3Rpb24gdGVzdCh5ZyxtZyxkZyx5aixtaixk aikKICAgIC0tICAgICBsb2NhbCB5MSwgbTEsIGQxID0gamFsYWxpX3RvX2dyZWdvcmlhbih5 aixtaixkaikKICAgIC0tICAgICBsb2NhbCB5MiwgbTIsIGQyID0gZ3JlZ29yaWFuX3RvX2ph bGFsaSh5ZyxtZyxkZykKICAgIC0tICAgICBwcmludCh5MSA9PSB5ZyBhbmQgbTEgPT0gbWcg YW5kIGQxID09IGRnLCB5ZyxtZyxkZywgeTEsbTEsZDEpCiAgICAtLSAgICAgcHJpbnQoeTIg PT0geWogYW5kIG0yID09IG1qIGFuZCBkMiA9PSBkaiwgeWosbWosZGosIHkyLG0yLGQyKQog ICAgLS0gZW5kCgogICAgLS0gdGVzdCgxOTUzLDA4LDE5LCAxMzMyLDA1LDI4KQogICAgLS0g dGVzdCgxOTc5LDAyLDExLCAxMzU3LDExLDIyKQogICAgLS0gdGVzdCgyMDAwLDAyLDI4LCAx Mzc4LDEyLDA5KQogICAgLS0gdGVzdCgyMDAwLDAzLDAxLCAxMzc4LDEyLDExKQogICAgLS0g dGVzdCgyMDA5LDAyLDI0LCAxMzg3LDEyLDA2KQogICAgLS0gdGVzdCgyMDE1LDAzLDIxLCAx Mzk0LDAxLDAxKQogICAgLS0gdGVzdCgyMDE2LDAzLDIwLCAxMzk1LDAxLDAxKQoKICAgIGNv bnZlcnRlcnMuZ3JlZ29yaWFuX3RvX2phbGFsaSA9IGdyZWdvcmlhbl90b19qYWxhbGkKICAg IGNvbnZlcnRlcnMuamFsYWxpX3RvX2dyZWdvcmlhbiA9IGphbGFsaV90b19ncmVnb3JpYW4K CmVuZAoKLS0gLS0gbW9yZSBlZmZpY2llbnQgYnV0IG5lZWRzIHRlc3RpbmcKCi0tIGxvY2Fs IGVzY2FwZXMgPSBjaGFyYWN0ZXJzLmZpbHRlcnMudXRmLnByaXZhdGUuZXNjYXBlcwoKLS0g bG9jYWwgZnVuY3Rpb24gZG9fYWxwaGFiZXRpYyhuLG1hcHBpbmcsY2hyKQotLSAgICAgbG9j YWwgbWF4ID0gI21hcHBpbmcKLS0gICAgIGlmIG4gPiBtYXggdGhlbgotLSAgICAgICAgIGRv X2FscGhhYmV0aWMoZmxvb3IoKG4tMSkvbWF4KSxtYXBwaW5nLGNocikKLS0gICAgICAgICBu ID0gKG4tMSklbWF4KzEKLS0gICAgIGVuZAotLSAgICAgbiA9IGNocihuLG1hcHBpbmcpCi0t ICAgICBjb250ZXh0KGVzY2FwZXNbbl0gb3IgdXRmY2hhcihuKSkKLS0gZW5kCgotLSBsb2Nh bCBsY2NvZGVzLCB1Y2NvZGVzLCBzYWZlY2hhciA9IGNoYXJhY3RlcnMubGNjb2RlLCBjaGFy YWN0ZXJzLnVjY29kZSwgY29tbWFuZHMuc2FmZWNoYXIKCi0tIGxvY2FsIGZ1bmN0aW9uIGRv X2FscGhhYmV0aWMobixtYXBwaW5nLGNocikKLS0gICAgIGxvY2FsIG1heCA9ICNtYXBwaW5n Ci0tICAgICBpZiBuID4gbWF4IHRoZW4KLS0gICAgICAgICBkb19hbHBoYWJldGljKGZsb29y KChuLTEpL21heCksbWFwcGluZyxjaHIpCi0tICAgICAgICAgbiA9IChuLTEpJW1heCsxCi0t ICAgICBlbmQKLS0gICAgIHNhZmVjaGFyKGNocihuLG1hcHBpbmcpKQotLSBlbmQKCi0tIGxv Y2FsIGZ1bmN0aW9uIGxvd2VyY2FzZWQobixtYXBwaW5nKSByZXR1cm4gY2hhcmFjdGVycy5s Y2NvZGUobWFwcGluZ1tuXSBvciBmYWxsYmFjaykgZW5kCi0tIGxvY2FsIGZ1bmN0aW9uIHVw cGVyY2FzZWQobixtYXBwaW5nKSByZXR1cm4gY2hhcmFjdGVycy51Y2NvZGUobWFwcGluZ1tu XSBvciBmYWxsYmFjaykgZW5kCgotLSBmdW5jdGlvbiBjb252ZXJ0ZXJzLmFscGhhYmV0aWMo bixjb2RlKQotLSAgICAgZG9fYWxwaGFiZXRpYyhuLGNvdW50ZXJzW2NvZGVdIG9yIGNvdW50 ZXJzLmRlZmF1bHQsbG93ZXJjYXNlZCkgLS0gbGNjb2RlIGNhdGNoZXMgd3JvbmcgdGFibGVz Ci0tIGVuZAoKLS0gZnVuY3Rpb24gY29udmVydGVycy5BbHBoYWJldGljKG4sY29kZSkKLS0g ICAgIGRvX2FscGhhYmV0aWMobixjb3VudGVyc1tjb2RlXSBvciBjb3VudGVycy5kZWZhdWx0 LHVwcGVyY2FzZWQpCi0tIGVuZAoKbG9jYWwgb3JkaW5hbHMgPSB7CiAgICBlbmdsaXNoID0g ZnVuY3Rpb24obikKICAgICAgICBsb2NhbCB0d28gPSBuICUgMTAwCiAgICAgICAgaWYgdHdv ID09IDExIG9yIHR3byA9PSAxMiBvciB0d28gPT0gMTMgdGhlbgogICAgICAgICAgICByZXR1 cm4gInRoIgogICAgICAgIGVsc2UKICAgICAgICAgICAgbG9jYWwgb25lID0gbiAlIDEwCiAg ICAgICAgICAgIGlmIG9uZSA9PSAxIHRoZW4KICAgICAgICAgICAgICAgIHJldHVybiAic3Qi CiAgICAgICAgICAgIGVsc2VpZiBvbmUgPT0gMiB0aGVuCiAgICAgICAgICAgICAgICByZXR1 cm4gIm5kIgogICAgICAgICAgICBlbHNlaWYgb25lID09IDMgdGhlbgogICAgICAgICAgICAg ICAgcmV0dXJuICJyZCIKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJu ICJ0aCIKICAgICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICBlbmQsCiAgICBkdXRjaCA9 IGZ1bmN0aW9uKG4pCiAgICAgICAgcmV0dXJuICJlIgogICAgZW5kLAogICAgZnJlbmNoID0g ZnVuY3Rpb24obikKICAgICAgICBpZiBuID09IDEgdGhlbgogICAgICAgICAgICByZXR1cm4g ImVyIgogICAgICAgIGVsc2UKICAgICAgICAgICAgcmV0dXJuICJlIgogICAgICAgIGVuZAog ICAgZW5kLAp9CgpvcmRpbmFscy5lbiA9IG9yZGluYWxzLmVuZ2xpc2gKb3JkaW5hbHMubmwg PSBvcmRpbmFscy5kdXRjaApvcmRpbmFscy5mciA9IG9yZGluYWxzLmZyZW5jaAoKZnVuY3Rp b24gY29udmVydGVycy5vcmRpbmFsKG4sbGFuZ3VhZ2UpCiAgICBsb2NhbCB0ID0gbGFuZ3Vh Z2UgYW5kIG9yZGluYWxzW2xhbmd1YWdlXQogICAgcmV0dXJuIHQgYW5kIHQobikKZW5kCgps b2NhbCBmdW5jdGlvbiBjdHhvcmRpbmFsKG4sbGFuZ3VhZ2UpCiAgICBsb2NhbCB0ID0gbGFu Z3VhZ2UgYW5kIG9yZGluYWxzW2xhbmd1YWdlXQogICAgbG9jYWwgbyA9IHQgYW5kIHQobikK ICAgIGNvbnRleHQobikKICAgIGlmIG8gdGhlbgogICAgICAgIGN0eF9oaWdob3JkaW5hbHN0 cihvKQogICAgZW5kCmVuZAoKaW1wbGVtZW50IHsKICAgIG5hbWUgICAgICA9ICJvcmRpbmFs IiwKICAgIGFjdGlvbnMgICA9IGN0eG9yZGluYWwsCiAgICBhcmd1bWVudHMgPSB7ICJpbnRl Z2VyIiwgInN0cmluZyIgfQp9CgotLSB2ZXJib3NlIG51bWJlcnMKCmxvY2FsIGRhdGEgICAg ICAgICA9IGFsbG9jYXRlKCkKbG9jYWwgdmVyYm9zZSAgICAgID0geyBkYXRhID0gZGF0YSB9 CmNvbnZlcnRlcnMudmVyYm9zZSA9IHZlcmJvc2UKCi0tIHZlcmJvc2UgZW5nbGlzaAoKbG9j YWwgd29yZHMgPSB7CiAgICAgICAgICAgICAgIFswXSA9ICJ6ZXJvIiwKICAgICAgICAgICAg ICAgWzFdID0gIm9uZSIsCiAgICAgICAgICAgICAgIFsyXSA9ICJ0d28iLAogICAgICAgICAg ICAgICBbM10gPSAidGhyZWUiLAogICAgICAgICAgICAgICBbNF0gPSAiZm91ciIsCiAgICAg ICAgICAgICAgIFs1XSA9ICJmaXZlIiwKICAgICAgICAgICAgICAgWzZdID0gInNpeCIsCiAg ICAgICAgICAgICAgIFs3XSA9ICJzZXZlbiIsCiAgICAgICAgICAgICAgIFs4XSA9ICJlaWdo dCIsCiAgICAgICAgICAgICAgIFs5XSA9ICJuaW5lIiwKICAgICAgICAgICAgICBbMTBdID0g InRlbiIsCiAgICAgICAgICAgICAgWzExXSA9ICJlbGV2ZW4iLAogICAgICAgICAgICAgIFsx Ml0gPSAidHdlbHZlIiwKICAgICAgICAgICAgICBbMTNdID0gInRoaXJ0ZWVuIiwKICAgICAg ICAgICAgICBbMTRdID0gImZvdXJ0ZWVuIiwKICAgICAgICAgICAgICBbMTVdID0gImZpZnRl ZW4iLAogICAgICAgICAgICAgIFsxNl0gPSAic2l4dGVlbiIsCiAgICAgICAgICAgICAgWzE3 XSA9ICJzZXZlbnRlZW4iLAogICAgICAgICAgICAgIFsxOF0gPSAiZWlnaHRlZW4iLAogICAg ICAgICAgICAgIFsxOV0gPSAibmluZXRlZW4iLAogICAgICAgICAgICAgIFsyMF0gPSAidHdl bnR5IiwKICAgICAgICAgICAgICBbMzBdID0gInRoaXJ0eSIsCiAgICAgICAgICAgICAgWzQw XSA9ICJmb3J0eSIsCiAgICAgICAgICAgICAgWzUwXSA9ICJmaWZ0eSIsCiAgICAgICAgICAg ICAgWzYwXSA9ICJzaXh0eSIsCiAgICAgICAgICAgICAgWzcwXSA9ICJzZXZlbnR5IiwKICAg ICAgICAgICAgICBbODBdID0gImVpZ2h0eSIsCiAgICAgICAgICAgICAgWzkwXSA9ICJuaW5l dHkiLAogICAgICAgICAgICAgWzEwMF0gPSAiaHVuZHJlZCIsCiAgICAgICAgICAgIFsxMDAw XSA9ICJ0aG91c2FuZCIsCiAgICAgICAgIFsxMDAwMDAwXSA9ICJtaWxsaW9uIiwKICAgICAg WzEwMDAwMDAwMDBdID0gImJpbGxpb24iLAogICBbMTAwMDAwMDAwMDAwMF0gPSAidHJpbGxp b24iLAp9Cgpsb2NhbCBmdW5jdGlvbiB0cmFuc2xhdGUobixjb25uZWN0b3IpCiAgICBsb2Nh bCB3ID0gd29yZHNbbl0KICAgIGlmIHcgdGhlbgogICAgICAgIHJldHVybiB3CiAgICBlbmQK ICAgIGxvY2FsIHQgPSB7IH0KICAgIGxvY2FsIGZ1bmN0aW9uIGNvbXBvc2Vfb25lKG4pCiAg ICAgICAgbG9jYWwgdyA9IHdvcmRzW25dCiAgICAgICAgaWYgdyB0aGVuCiAgICAgICAgICAg IHRbI3QrMV0gPSB3CiAgICAgICAgICAgIHJldHVybgogICAgICAgIGVuZAogICAgICAgIGxv Y2FsIGEsIGIgPSBmbG9vcihuLzEwMCksIG4gJSAxMDAKICAgICAgICBpZiBhID09IDEwIHRo ZW4KICAgICAgICAgICAgdFsjdCsxXSA9IHdvcmRzWzFdCiAgICAgICAgICAgIHRbI3QrMV0g PSB3b3Jkc1sxMDAwXQogICAgICAgIGVsc2VpZiBhID4gMCB0aGVuCiAgICAgICAgICAgIHRb I3QrMV0gPSB3b3Jkc1thXQogICAgICAgICAgICB0WyN0KzFdID0gd29yZHNbMTAwXQogICAg ICAgICAgICAtLSBkb24ndCBzYXkgJ25pbmUgaHVuZHJlZCB6ZXJvJwogICAgICAgICAgICBp ZiBiID09IDAgdGhlbgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGVuZAog ICAgICAgIGVuZAogICAgICAgIGlmIHdvcmRzW2JdIHRoZW4KICAgICAgICAgICAgdFsjdCsx XSA9IHdvcmRzW2JdCiAgICAgICAgZWxzZQogICAgICAgICAgICBhLCBiID0gZmxvb3IoYi8x MCksIG4gJSAxMAogICAgICAgICAgICB0WyN0KzFdID0gd29yZHNbYSoxMF0KICAgICAgICAg ICAgdFsjdCsxXSA9IHdvcmRzW2JdCiAgICAgICAgZW5kCiAgICBlbmQKICAgIGxvY2FsIGZ1 bmN0aW9uIGNvbXBvc2VfdHdvKG4sbSkKICAgICAgICBpZiBuID4gKG0tMSkgdGhlbgogICAg ICAgICAgICBsb2NhbCBhLCBiID0gZmxvb3Iobi9tKSwgbiAlIG0KICAgICAgICAgICAgaWYg YSA+IDAgdGhlbgogICAgICAgICAgICAgICAgY29tcG9zZV9vbmUoYSkKICAgICAgICAgICAg ZW5kCiAgICAgICAgICAgIHRbI3QrMV0gPSB3b3Jkc1ttXQogICAgICAgICAgICBuID0gYgog ICAgICAgIGVuZAogICAgICAgIHJldHVybiBuCiAgICBlbmQKICAgIG4gPSBjb21wb3NlX3R3 byhuLDEwMDAwMDAwMDAwMDApCiAgICBuID0gY29tcG9zZV90d28obiwxMDAwMDAwMDAwKQog ICAgbiA9IGNvbXBvc2VfdHdvKG4sMTAwMDAwMCkKICAgIG4gPSBjb21wb3NlX3R3byhuLDEw MDApCiAgICBpZiBuID4gMCB0aGVuCiAgICAgICAgY29tcG9zZV9vbmUobikKICAgIGVuZAog ICAgcmV0dXJuICN0ID4gMCBhbmQgY29uY2F0KHQsY29ubmVjdG9yIG9yICIgIikgb3IgdG9z dHJpbmcobikKZW5kCgpkYXRhLmVuZ2xpc2ggPSB7CiAgICB3b3JkcyAgICAgPSB3b3JkcywK ICAgIHRyYW5zbGF0ZSA9IHRyYW5zbGF0ZSwKfQoKZGF0YS5lbiA9IGRhdGEuZW5nbGlzaAoK LS0gcHJpbnQodHJhbnNsYXRlKDExMTExMTExKSkKLS0gcHJpbnQodHJhbnNsYXRlKDIyMjEx MDEpKQotLSBwcmludCh0cmFuc2xhdGUoMTExMSkpCi0tIHByaW50KHRyYW5zbGF0ZSgxMjE4 KSkKLS0gcHJpbnQodHJhbnNsYXRlKDEyMzQpKQotLSBwcmludCh0cmFuc2xhdGUoMTIzNDUp KQotLSBwcmludCh0cmFuc2xhdGUoMTIzNDU2Nzg5MDAwMDApKQoKLS0gdmVyYm9zZSBzcGFu aXNoICh1bmNoZWNrZWQpCgpsb2NhbCB3b3JkcyA9IHsKICAgICAgICAgICAgICAgWzFdID0g InVubyIsCiAgICAgICAgICAgICAgIFsyXSA9ICJkb3MiLAogICAgICAgICAgICAgICBbM10g PSAidHJlcyIsCiAgICAgICAgICAgICAgIFs0XSA9ICJjdWF0cm8iLAogICAgICAgICAgICAg ICBbNV0gPSAiY2luY28iLAogICAgICAgICAgICAgICBbNl0gPSAic2VpcyIsCiAgICAgICAg ICAgICAgIFs3XSA9ICJzaWV0ZSIsCiAgICAgICAgICAgICAgIFs4XSA9ICJvY2hvIiwKICAg ICAgICAgICAgICAgWzldID0gIm51ZXZlIiwKICAgICAgICAgICAgICBbMTBdID0gImRpZXoi LAogICAgICAgICAgICAgIFsxMV0gPSAib25jZSIsCiAgICAgICAgICAgICAgWzEyXSA9ICJk b2NlIiwKICAgICAgICAgICAgICBbMTNdID0gInRyZWNlIiwKICAgICAgICAgICAgICBbMTRd ID0gImNhdG9yY2UiLAogICAgICAgICAgICAgIFsxNV0gPSAicXVpbmNlIiwKICAgICAgICAg ICAgICBbMTZdID0gImRpZWNpc8OpaXMiLAogICAgICAgICAgICAgIFsxN10gPSAiZGllY2lz aWV0ZSIsCiAgICAgICAgICAgICAgWzE4XSA9ICJkaWVjaW9jaG8iLAogICAgICAgICAgICAg IFsxOV0gPSAiZGllY2ludWV2ZSIsCiAgICAgICAgICAgICAgWzIwXSA9ICJ2ZWludGUiLAog ICAgICAgICAgICAgIFsyMV0gPSAidmVpbnRpdW5vIiwKICAgICAgICAgICAgICBbMjJdID0g InZlaW50aWTDs3MiLAogICAgICAgICAgICAgIFsyM10gPSAidmVpbnRpdHLDqXMiLAogICAg ICAgICAgICAgIFsyNF0gPSAidmVpbnRpY3VhdHJvIiwKICAgICAgICAgICAgICBbMjVdID0g InZlaW50aWNpbmNvIiwKICAgICAgICAgICAgICBbMjZdID0gInZlaW50aXPDqWlzIiwKICAg ICAgICAgICAgICBbMjddID0gInZlaW50aXNpZXRlIiwKICAgICAgICAgICAgICBbMjhdID0g InZlaW50aW9jaG8iLAogICAgICAgICAgICAgIFsyOV0gPSAidmVpbnRpbnVldmUiLAogICAg ICAgICAgICAgIFszMF0gPSAidHJlaW50YSIsCiAgICAgICAgICAgICAgWzQwXSA9ICJjdWFy ZW50YSIsCiAgICAgICAgICAgICAgWzUwXSA9ICJjaW5jdWVudGEiLAogICAgICAgICAgICAg IFs2MF0gPSAic2VzZW50YSIsCiAgICAgICAgICAgICAgWzcwXSA9ICJzZXRlbnRhIiwKICAg ICAgICAgICAgICBbODBdID0gIm9jaGVudGEiLAogICAgICAgICAgICAgIFs5MF0gPSAibm92 ZW50YSIsCiAgICAgICAgICAgICBbMTAwXSA9ICJjaWVudG8iLAogICAgICAgICAgICAgWzIw MF0gPSAiZG9zY2llbnRvcyIsCiAgICAgICAgICAgICBbMzAwXSA9ICJ0cmVzY2llbnRvcyIs CiAgICAgICAgICAgICBbNDAwXSA9ICJjdWF0cm9jaWVudG9zIiwKICAgICAgICAgICAgIFs1 MDBdID0gInF1aW5pZW50b3MiLAogICAgICAgICAgICAgWzYwMF0gPSAic2Vpc2NpZW50b3Mi LAogICAgICAgICAgICAgWzcwMF0gPSAic2V0ZWNpZW50b3MiLAogICAgICAgICAgICAgWzgw MF0gPSAib2Nob2NpZW50b3MiLAogICAgICAgICAgICAgWzkwMF0gPSAibm92ZWNpZW50b3Mi LAogICAgICAgICAgICBbMTAwMF0gPSAibWlsIiwKICAgICAgICAgWzEwMDAwMDBdID0gIm1p bGzDs24iLAogICAgICBbMTAwMDAwMDAwMF0gPSAibWlsIG1pbGxvbmVzIiwKICAgWzEwMDAw MDAwMDAwMDBdID0gImJpbGzDs24iLAp9Cgpsb2NhbCBmdW5jdGlvbiB0cmFuc2xhdGUobixj b25uZWN0b3IpCiAgICBsb2NhbCB3ID0gd29yZHNbbl0KICAgIGlmIHcgdGhlbgogICAgICAg IHJldHVybiB3CiAgICBlbmQKICAgIGxvY2FsIHQgPSB7IH0KICAgIGxvY2FsIGZ1bmN0aW9u IGNvbXBvc2Vfb25lKG4pCiAgICAgICAgbG9jYWwgdyA9IHdvcmRzW25dCiAgICAgICAgaWYg dyB0aGVuCiAgICAgICAgICAgIHRbI3QrMV0gPSB3CiAgICAgICAgICAgIHJldHVybgogICAg ICAgIGVuZAogICAgICAgIC0tIGEsIGIgPSBodW5kcmVkcywgcmVtYWluZGVyCiAgICAgICAg bG9jYWwgYSwgYiA9IGZsb29yKG4vMTAwKSwgbiAlIDEwMAogICAgICAgIC0tIG9uZSB0aG91 c2FuZAogICAgICAgIGlmIGEgPT0gMTAgdGhlbgogICAgICAgICAgICB0WyN0KzFdID0gd29y ZHNbMV0KICAgICAgICAgICAgdFsjdCsxXSA9IHdvcmRzWzEwMDBdCiAgICAgICAgLS0geCBo dW5kcmVkIChuLmIuIHRoaXMgd2lsbCBub3QgZ2l2ZSB0aGlydGVlbiBodW5kcmVkIGJlY2F1 c2UKICAgICAgICAtLSBjb21wb3NlX29uZShuKSBpcyBvbmx5IGNhbGxlZCBhZnRlcgogICAg ICAgIC0tIG4gPSBjb21wb3NlKHR3byhuLCAxMDAwKSkKICAgICAgICBlbHNlaWYgYSA+IDAg dGhlbgogICAgICAgICAgICB0WyN0KzFdID0gd29yZHNbYSoxMDBdCiAgICAgICAgZW5kCiAg ICAgICAgLS0gdGhlIHJlbWFpbmRlcgogICAgICAgIGlmIHdvcmRzW2JdIHRoZW4KICAgICAg ICAgICAgdFsjdCsxXSA9IHdvcmRzW2JdCiAgICAgICAgZWxzZQogICAgICAgICAgICAtLSBh LCBiID0gdGVucywgcmVtYWluZGVyCiAgICAgICAgICAgIGEsIGIgPSBmbG9vcihiLzEwKSwg biAlIDEwCiAgICAgICAgICAgIHRbI3QrMV0gPSB3b3Jkc1thKjEwXQogICAgICAgICAgICB0 WyN0KzFdID0gInkiCiAgICAgICAgICAgIHRbI3QrMV0gPSB3b3Jkc1tiXQogICAgICAgIGVu ZAogICAgZW5kCiAgICAtLSBjb21wb3NlX3R3byBoYW5kbGVzIHggYmlsbGlvbiwgLi4uIHgg dGhvdXNhbmQuIFdoZW4gMTAwMCBvciBsZXNzIGlzCiAgICAtLSBsZWZ0LCBjb21wb3NlX29u ZSB0YWtlcyBvdmVyLgogICAgbG9jYWwgZnVuY3Rpb24gY29tcG9zZV90d28obixtKQogICAg ICAgIGlmIG4gPiAobS0xKSB0aGVuCiAgICAgICAgICAgIGxvY2FsIGEsIGIgPSBmbG9vcihu L20pLCBuICUgbQogICAgICAgICAgICBpZiBhID4gMCB0aGVuCiAgICAgICAgICAgICAgICBj b21wb3NlX29uZShhKQogICAgICAgICAgICBlbmQKICAgICAgICAgICAgdFsjdCsxXSA9IHdv cmRzW21dCiAgICAgICAgICAgIG4gPSBiCiAgICAgICAgZW5kCiAgICAgICAgcmV0dXJuIG4K ICAgIGVuZAogICAgbiA9IGNvbXBvc2VfdHdvKG4sMTAwMDAwMDAwMDAwMCkKICAgIG4gPSBj b21wb3NlX3R3byhuLDEwMDAwMDAwMDApCiAgICBuID0gY29tcG9zZV90d28obiwxMDAwMDAw KQogICAgbiA9IGNvbXBvc2VfdHdvKG4sMTAwMCkKICAgIGlmIG4gPiAwIHRoZW4KICAgICAg ICBjb21wb3NlX29uZShuKQogICAgZW5kCiAgICByZXR1cm4gI3QgPiAwIGFuZCBjb25jYXQo dCxjb25uZWN0b3Igb3IgIiAiKSBvciB0b3N0cmluZyhuKQplbmQKCmRhdGEuc3BhbmlzaCA9 IHsKICAgIHdvcmRzICAgICA9IHdvcmRzLAogICAgdHJhbnNsYXRlID0gdHJhbnNsYXRlLAp9 CgpkYXRhLmVzID0gZGF0YS5zcGFuaXNoCgotLSBwcmludCh0cmFuc2xhdGUoMzEpKQotLSBw cmludCh0cmFuc2xhdGUoMTAxKSkKLS0gcHJpbnQodHJhbnNsYXRlKDE5OSkpCgotLSB2ZXJi b3NlIHN3ZWRpc2ggYnkgUGV0ZXIgS3ZpbGxlZ2FyZAoKZG8KCiAgICBsb2NhbCB3b3JkcyA9 IHsKICAgICAgICAgICAgWzBdID0gIm5vbGwiLAogICAgICAgICAgICBbMV0gPSAiZXR0IiwK ICAgICAgICAgICAgWzJdID0gInR2w6UiLAogICAgICAgICAgICBbM10gPSAidHJlIiwKICAg ICAgICAgICAgWzRdID0gImZ5cmEiLAogICAgICAgICAgICBbNV0gPSAiZmVtIiwKICAgICAg ICAgICAgWzZdID0gInNleCIsCiAgICAgICAgICAgIFs3XSA9ICJzanUiLAogICAgICAgICAg ICBbOF0gPSAiw6V0dGEiLAogICAgICAgICAgICBbOV0gPSAibmlvIiwKICAgICAgICAgICBb MTBdID0gInRpbyIsCiAgICAgICAgICAgWzExXSA9ICJlbHZhIiwKICAgICAgICAgICBbMTJd ID0gInRvbHYiLAogICAgICAgICAgIFsxM10gPSAidHJldHRvbiIsCiAgICAgICAgICAgWzE0 XSA9ICJmam9ydG9uIiwKICAgICAgICAgICBbMTVdID0gImZlbXRvbiIsCiAgICAgICAgICAg WzE2XSA9ICJzZXh0b24iLAogICAgICAgICAgIFsxN10gPSAic2p1dHRvbiIsCiAgICAgICAg ICAgWzE4XSA9ICJhcnRvbiIsCiAgICAgICAgICAgWzE5XSA9ICJuaXR0b24iLAogICAgICAg ICAgIFsyMF0gPSAidGp1Z28iLAogICAgICAgICAgIFszMF0gPSAidHJldHRpbyIsCiAgICAg ICAgICAgWzQwXSA9ICJmeXJ0aW8iLAogICAgICAgICAgIFs1MF0gPSAiZmVtdGlvIiwKICAg ICAgICAgICBbNjBdID0gInNleHRpbyIsCiAgICAgICAgICAgWzcwXSA9ICJzanV0dGlvIiwK ICAgICAgICAgICBbODBdID0gIsOldHRpbyIsCiAgICAgICAgICAgWzkwXSA9ICJuaXR0aW8i LAogICAgICAgICAgWzEwMF0gPSAiaHVuZHJhIiwKICAgICAgICAgWzEwXjNdID0gInR1c2Vu IiwKICAgICAgICAgWzEwXjZdID0gIm1pbGpvbiIsCiAgICAgICAgIFsxMF45XSA9ICJtaWxq YXJkIiwKICAgICAgICBbMTBeMTJdID0gImJpbGpvbiIsCiAgICAgICAgWzEwXjE1XSA9ICJi aWxqYXJkIiwKICAgIH0KCiAgICBsb2NhbCBmdW5jdGlvbiB0cmFuc2xhdGUobixjb25uZWN0 b3IpCiAgICAgICAgbG9jYWwgdyA9IHdvcmRzW25dCiAgICAgICAgaWYgdyB0aGVuCiAgICAg ICAgICAgIHJldHVybiB3CiAgICAgICAgZWxzZQogICAgICAgICAgICBsb2NhbCB0ID0geyB9 CiAgICAgICAgICAgIGxvY2FsIGwgPSAwCiAgICAgICAgICAgIC0tIGdyb3VwIG9mIHRocmVl IGRpZ2l0cyB0byB3b3JkcywgZS5nLiAxMjMgLT4gZXR0aHVuZHJhdGp1Z290cmUKICAgICAg ICAgICAgbG9jYWwgZnVuY3Rpb24gdHJpcGxldHMobikKICAgICAgICAgICAgICAgIGlmIGZs b29yKG4vMTAwKSA+IDAgdGhlbgogICAgICAgICAgICAgICAgICAgIGwgPSBsICsgMSA7IHRb bF0gPSB3b3Jkc1tmbG9vcihuLzEwMCldCiAgICAgICAgICAgICAgICAgICAgbCA9IGwgKyAx IDsgdFtsXSA9IHdvcmRzWzEwMF0KICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAg ICAgaWYgbiUxMDAgPiAyMCB0aGVuCiAgICAgICAgICAgICAgICAgICAgbCA9IGwgKyAxIDsg dFtsXSA9IHdvcmRzW24lMTAwLW4lMTBdCiAgICAgICAgICAgICAgICAgICAgaWYgbiUxMCA+ IDAgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBsID0gbCArIDEgOyB0W2xdID0gd29y ZHNbbiUxMF0KICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgIGVsc2Vp ZiBuJTEwMCA+IDAgdGhlbgogICAgICAgICAgICAgICAgICAgIGwgPSBsICsgMSA7IHRbbF0g PSB3b3Jkc1tuJTEwMF0KICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICBlbmQKICAg ICAgICAgICAgLS0gbG9vcHMgdGhyb3VnaCAxMF4xNSwxMF4xMiwuLi4xMF4zLCBleHRyYWN0 aW5nIGdyb3VwcyBvZiB0aHJlZSBkaWdpdHMKICAgICAgICAgICAgLS0gdG8gbWFrZSB3b3Jk cyBmcm9tLCB0aGVuIGFkZGluZyBuYW1lcyBmb3Igb3JkZXIgb2YgbWFnbml0dWRlCiAgICAg ICAgICAgIGZvciBpPTE1LDMsLTMgZG8KICAgICAgICAgICAgICAgIGxvY2FsIHRyaXBsZXQg PSBmbG9vcihuLzEwXmkpJTEwXjMKICAgICAgICAgICAgICAgIGlmIHRyaXBsZXQgPiAwIHRo ZW4KICAgICAgICAgICAgICAgICAgICAtLSBncmFtbWFyOiAiZW4iIGluc3RlYWQgb2YgImV0 dCIKICAgICAgICAgICAgICAgICAgICBpZiBpID4gMyBhbmQgdHJpcGxldCA9PSAxIHRoZW4K ICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGwgKyAxIDsgdFtsXSA9ICJlbiIKICAgICAg ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaXBsZXRzKHRy aXBsZXQpCiAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgICAgLS0g Z3JhbW1hcjogcGx1cmFsIGZvcm0gb2YgIm1pbGxpb25zIiBldGMKICAgICAgICAgICAgICAg ICAgICBsID0gbCArIDEgOyB0W2xdID0gd29yZHNbMTBeaV0KICAgICAgICAgICAgICAgICAg ICBpZiBpID4gMyBhbmQgdHJpcGxldCA+IDEgdGhlbgogICAgICAgICAgICAgICAgICAgICAg ICBsID0gbCArIDEgOyB0W2xdID0gImVyIgogICAgICAgICAgICAgICAgICAgIGVuZAogICAg ICAgICAgICAgICAgZW5kCiAgICAgICAgICAgIGVuZAogICAgICAgICAgICAtLSBhZGQgbGFz dCBncm91cCBvZiB0aHJlZSBudW1iZXJzIChubyB3b3JkIGZvciBtYWduaXR1ZGUpCiAgICAg ICAgICAgIG4gPSBuJTEwMDAKICAgICAgICAgICAgaWYgbiA+IDAgdGhlbgogICAgICAgICAg ICAgICAgdHJpcGxldHMobikKICAgICAgICAgICAgZW5kCiAgICAgICAgICAgIHQgPSBjb25j YXQodCwiICIpCiAgICAgICAgICAgIC0tIGdyYW1tYXI6IHNwYWNpbmcgZm9yIG51bWJlcnMg PCAxMF42IGFuZCByZXBlYXRlZCBsZXR0ZXJzCiAgICAgICAgICAgIGlmIG4gPCAxMF42IHRo ZW4KICAgICAgICAgICAgICAgIHQgPSBnc3ViKHQsIiVzdHVzZW4lcyIsInR1c2VuIikKICAg ICAgICAgICAgICAgIHQgPSBnc3ViKHQsImV0dHR1c2VuIiwiZXR0dXNlbiIpCiAgICAgICAg ICAgIGVuZAogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIGVuZAogICAgZW5kCgogICAg ZGF0YS5zd2VkaXNoID0gewogICAgICAgIHdvcmRzICAgICA9IHdvcmRzLAogICAgICAgIHRy YW5zbGF0ZSA9IHRyYW5zbGF0ZSwKICAgIH0KCiAgICBkYXRhLnN2ID0gZGF0YS5zd2VkaXNo CgplbmQKCi0tIHZlcmJvc2UgaGFuZGxlcjoKCmZ1bmN0aW9uIGNvbnZlcnRlcnMudmVyYm9z ZS50cmFuc2xhdGUobixsYW5ndWFnZSxjb25uZWN0b3IpCiAgICBsb2NhbCB0ID0gbGFuZ3Vh Z2UgYW5kIGRhdGFbbGFuZ3VhZ2VdCiAgICByZXR1cm4gdCBhbmQgdC50cmFuc2xhdGUobixj b25uZWN0b3IpIG9yIG4KZW5kCgpsb2NhbCBmdW5jdGlvbiB2ZXJib3NlKG4sbGFuZ3VhZ2Us Y29ubmVjdG9yKQogICAgbG9jYWwgdCA9IGxhbmd1YWdlIGFuZCBkYXRhW2xhbmd1YWdlXQog ICAgY29udGV4dCh0IGFuZCB0LnRyYW5zbGF0ZShuLGNvbm5lY3Rvcikgb3IgbikKZW5kCgpp bXBsZW1lbnQgewogICAgbmFtZSAgICAgID0gInZlcmJvc2UiLAogICAgYWN0aW9ucyAgID0g dmVyYm9zZSwKICAgIGFyZ3VtZW50cyA9IHsgImludGVnZXIiLCAic3RyaW5nIiwgInN0cmlu ZyIgfQp9CgotLSBUaGVzZSBhcmUganVzdCBoZWxwZXJzIGJ1dCBub3QgcmVhbGx5IGZvciB0 aGUgdGV4IGVuZC4gRG8gd2UgaGF2ZSB0bwotLSB1c2UgdHJhbnNsYXRlIGhlcmU/Cgpsb2Nh bCB3aGl0ZXNwYWNlICA9IGxwZWdwYXR0ZXJucy53aGl0ZXNwYWNlCmxvY2FsIHdvcmQgICAg ICAgID0gbHBlZ3BhdHRlcm5zLnV0Zjh1cHBlcmNoYXJhY3Rlcl4tMSAqICgxLXdoaXRlc3Bh Y2UpXjEKbG9jYWwgcGF0dGVybl9vbmUgPSBDcyggd2hpdGVzcGFjZV4wICogd29yZF4tMSAq IFAoMSleMCkKbG9jYWwgcGF0dGVybl9hbGwgPSBDcygod2hpdGVzcGFjZV4xICsgd29yZCle MSkKCmZ1bmN0aW9uIGNvbnZlcnRlcnMud29yZCAocykgcmV0dXJuIHMgZW5kIC0tIGR1bW1p ZXMgZm9yIHR5cG9zCmZ1bmN0aW9uIGNvbnZlcnRlcnMud29yZHMocykgcmV0dXJuIHMgZW5k IC0tIGR1bW1pZXMgZm9yIHR5cG9zCgpsb2NhbCBmdW5jdGlvbiBXb3JkIChzKSByZXR1cm4g bHBlZ21hdGNoKHBhdHRlcm5fb25lLHMpIG9yIHMgZW5kCmxvY2FsIGZ1bmN0aW9uIFdvcmRz KHMpIHJldHVybiBscGVnbWF0Y2gocGF0dGVybl9hbGwscykgb3IgcyBlbmQKCmNvbnZlcnRl cnMuV29yZCAgPSBXb3JkCmNvbnZlcnRlcnMuV29yZHMgPSBXb3JkcwoKY29udmVydGVycy51 cHBlciA9IGNoYXJhY3RlcnMudXBwZXIKY29udmVydGVycy5sb3dlciA9IGNoYXJhY3RlcnMu bG93ZXIKCi0tIHByaW50KGNvbnZlcnRlcnMuV29yZCgiZm9vIGJhciIpKQotLSBwcmludChj b252ZXJ0ZXJzLldvcmQoIiBmb28gYmFyIikpCi0tIHByaW50KGNvbnZlcnRlcnMuV29yZCgi MTIzIGZvbyBiYXIiKSkKLS0gcHJpbnQoY29udmVydGVycy5Xb3JkKCIgMTIzIGZvbyBiYXIi KSkKCi0tIHByaW50KGNvbnZlcnRlcnMuV29yZHMoImZvbyBiYXIiKSkKLS0gcHJpbnQoY29u dmVydGVycy5Xb3JkcygiIGZvbyBiYXIiKSkKLS0gcHJpbnQoY29udmVydGVycy5Xb3Jkcygi MTIzIGZvbyBiYXIiKSkKLS0gcHJpbnQoY29udmVydGVycy5Xb3JkcygiIDEyMyBmb28gYmFy IikpCgotLSAtLQoKbG9jYWwgdl9kYXkgICAgICA8Y29uc3Q+ID0gdmFyaWFibGVzLmRheQps b2NhbCB2X3llYXIgICAgIDxjb25zdD4gPSB2YXJpYWJsZXMueWVhcgpsb2NhbCB2X21vbnRo ICAgIDxjb25zdD4gPSB2YXJpYWJsZXMubW9udGgKbG9jYWwgdl93ZWVrZGF5ICA8Y29uc3Q+ ID0gdmFyaWFibGVzLndlZWtkYXkKbG9jYWwgdl9yZWZlcnJhbCA8Y29uc3Q+ID0gdmFyaWFi bGVzLnJlZmVycmFsCmxvY2FsIHZfc3BhY2UgICAgPGNvbnN0PiA9IHZhcmlhYmxlcy5zcGFj ZQoKbG9jYWwgdl9NT05USCAgICA9IHVwcGVyKHZfbW9udGgpCmxvY2FsIHZfV0VFS0RBWSAg PSB1cHBlcih2X3dlZWtkYXkpCgpsb2NhbCBjb252ZXJ0ID0gY29udmVydGVycy5jb252ZXJ0 Cgpsb2NhbCBkYXlzID0geyAtLSBub3QgdmFyaWFibGVzCiAgICAic3VuZGF5IiwKICAgICJt b25kYXkiLAogICAgInR1ZXNkYXkiLAogICAgIndlZG5lc2RheSIsCiAgICAidGh1cnNkYXki LAogICAgImZyaWRheSIsCiAgICAic2F0dXJkYXkiLAp9Cgpsb2NhbCBtb250aHMgPSB7IC0t IG5vdCB2YXJpYWJsZXMKICAgICJqYW51YXJ5IiwKICAgICJmZWJydWFyeSIsCiAgICAibWFy Y2giLAogICAgImFwcmlsIiwKICAgICJtYXkiLAogICAgImp1bmUiLAogICAgImp1bHkiLAog ICAgImF1Z3VzdCIsCiAgICAic2VwdGVtYmVyIiwKICAgICJvY3RvYmVyIiwKICAgICJub3Zl bWJlciIsCiAgICAiZGVjZW1iZXIiLAp9Cgpsb2NhbCBtb250aG1uZW1zID0geyAtLSBub3Qg dmFyaWFibGVzCiAgICAtLSB2aXJ0dWFsIHRhYmxlCn0KCmxvY2FsIGRheW1uZW1zID0geyAt LSBub3QgdmFyaWFibGVzCiAgICAtLSB2aXJ0dWFsIHRhYmxlCn0KCnNldG1ldGF0YWJsZWlu ZGV4KGRheXMsICAgICAgIGZ1bmN0aW9uKHQsaykgcmV0dXJuICJ1bmtub3duIiBlbmQpCnNl dG1ldGF0YWJsZWluZGV4KGRheW1uZW1zLCAgIGZ1bmN0aW9uKHQsaykgcmV0dXJuIGRheXNb a10gLi4gIjptbmVtIiBlbmQpCnNldG1ldGF0YWJsZWluZGV4KG1vbnRocywgICAgIGZ1bmN0 aW9uKHQsaykgcmV0dXJuICJ1bmtub3duIiBlbmQpCnNldG1ldGF0YWJsZWluZGV4KG1vbnRo bW5lbXMsIGZ1bmN0aW9uKHQsaykgcmV0dXJuIG1vbnRoc1trXSAuLiAiOm1uZW0iIGVuZCkK CmRvCgogICAgbG9jYWwgZnVuY3Rpb24gZGF5bmFtZShuKQogICAgICAgIGN0eF9sYWJlbHRl eHQoZGF5c1tuXSkKICAgIGVuZAoKICAgIGxvY2FsIGZ1bmN0aW9uIGRheW1uZW0obikKICAg ICAgICBjdHhfbGFiZWx0ZXh0KGRheW1uZW1zW25dKQogICAgZW5kCgogICAgbG9jYWwgZnVu Y3Rpb24gd2Vla2RheW5hbWUoZGF5LG1vbnRoLHllYXIpCiAgICAgICAgY3R4X2xhYmVsdGV4 dChkYXlzW3dlZWtkYXkoZGF5LG1vbnRoLHllYXIpXSkKICAgIGVuZAoKICAgIGxvY2FsIGZ1 bmN0aW9uIG1vbnRobmFtZShuKQogICAgICAgIGN0eF9sYWJlbHRleHQobW9udGhzW25dKQog ICAgZW5kCgogICAgbG9jYWwgZnVuY3Rpb24gbW9udGhtbmVtKG4pCiAgICAgICAgY3R4X2xh YmVsdGV4dChtb250aG1uZW1zW25dKQogICAgZW5kCgogICAgaW1wbGVtZW50IHsKICAgICAg ICBuYW1lICAgICAgPSAiZGF5bmFtZSIsCiAgICAgICAgYWN0aW9ucyAgID0gZGF5bmFtZSwK ICAgICAgICBhcmd1bWVudHMgPSAiaW50ZWdlciIsCiAgICB9CgogICAgaW1wbGVtZW50IHsK ICAgICAgICBuYW1lICAgICAgPSAiZGF5bW5lbSIsCiAgICAgICAgYWN0aW9ucyAgID0gZGF5 bW5lbSwKICAgICAgICBhcmd1bWVudHMgPSAiaW50ZWdlciIsCiAgICB9CgogICAgaW1wbGVt ZW50IHsKICAgICAgICBuYW1lICAgICAgPSAid2Vla2RheW5hbWUiLAogICAgICAgIGFjdGlv bnMgICA9IHdlZWtkYXluYW1lLAogICAgICAgIGFyZ3VtZW50cyA9IHsgImludGVnZXIiLCAi aW50ZWdlciIsICJpbnRlZ2VyIiB9CiAgICB9CgogICAgaW1wbGVtZW50IHsKICAgICAgICBu YW1lICAgICAgPSAibW9udGhuYW1lIiwKICAgICAgICBhY3Rpb25zICAgPSBtb250aG5hbWUs CiAgICAgICAgYXJndW1lbnRzID0gImludGVnZXIiLAogICAgfQoKICAgIGltcGxlbWVudCB7 CiAgICAgICAgbmFtZSAgICAgID0gIm1vbnRobW5lbSIsCiAgICAgICAgYWN0aW9ucyAgID0g bW9udGhtbmVtLAogICAgICAgIGFyZ3VtZW50cyA9ICJpbnRlZ2VyIiwKICAgIH0KCiAgICAt LSB0b2RvIDogc2hvcnQgd2VlayBkYXlzCgogICAgbG9jYWwgZl9tb250aGxvbmcgICAgPSBm b3JtYXR0ZXJzWyJcXG1vbnRobG9uZ3slc30iXQogICAgbG9jYWwgZl9tb250aHNob3J0ICAg PSBmb3JtYXR0ZXJzWyJcXG1vbnRoc2hvcnR7JXN9Il0KICAgIGxvY2FsIGZfZGF5bG9uZyAg ICAgID0gZm9ybWF0dGVyc1siXFxkYXlsb25neyVzfSJdCiAgICBsb2NhbCBmX2RheXNob3J0 ICAgICA9IGZvcm1hdHRlcnNbIlxcZGF5c2hvcnR7JXN9Il0KICAgIGxvY2FsIGZfd2Vla2Rh eSAgICAgID0gZm9ybWF0dGVyc1siXFx3ZWVrZGF5eyVzfSJdCiAgICBsb2NhbCBmX2RheW9m dGhld2VlayA9IGZvcm1hdHRlcnNbIlxcZGF5b2Z0aGV3ZWVreyVzfXslc317JXN9Il0KCiAg ICBsb2NhbCBmdW5jdGlvbiB0b21vbnRobG9uZyAobSkgcmV0dXJuIGZfbW9udGhsb25nICh0 b251bWJlcihtKSBvciAxKSBlbmQKICAgIGxvY2FsIGZ1bmN0aW9uIHRvbW9udGhzaG9ydCht KSByZXR1cm4gZl9tb250aHNob3J0KHRvbnVtYmVyKG0pIG9yIDEpIGVuZAogICAgbG9jYWwg ZnVuY3Rpb24gdG9kYXlsb25nICAgKGQpIHJldHVybiBmX2RheWxvbmcgICAodG9udW1iZXIo ZCkgb3IgMSkgZW5kCiAgICBsb2NhbCBmdW5jdGlvbiB0b2RheXNob3J0ICAoZCkgcmV0dXJu IGZfZGF5c2hvcnQgICh0b251bWJlcihkKSBvciAxKSBlbmQKICAgIGxvY2FsIGZ1bmN0aW9u IHRvd2Vla2RheSAgIChkKSByZXR1cm4gZl93ZWVrZGF5ICAgKHRvbnVtYmVyKGQpIG9yIDEp IGVuZAoKICAgIGxvY2FsIGZ1bmN0aW9uIHRvZGF5b2Z0aGV3ZWVrKGQsbSx5KQogICAgICAg IHJldHVybiBmX2RheW9mdGhld2Vlayh0b251bWJlcihkKSBvciAxLHRvbnVtYmVyKG0pIG9y IDEsdG9udW1iZXIoeSkgb3IgMjAwMCkKICAgIGVuZAoKICAgIGFkZGZvcm1hdHRlcihmb3Jt YXR0ZXJzLCJtb250aGxvbmciLCAgIFtbdG9tb250aGxvbmcoJXMpXV0sICAgICAgICAgeyB0 b21vbnRobG9uZyAgICA9IHRvbW9udGhsb25nICAgIH0pCiAgICBhZGRmb3JtYXR0ZXIoZm9y bWF0dGVycywibW9udGhzaG9ydCIsICBbW3RvbW9udGhzaG9ydCglcyldXSwgICAgICAgIHsg dG9tb250aHNob3J0ICAgPSB0b21vbnRoc2hvcnQgICB9KQogICAgYWRkZm9ybWF0dGVyKGZv cm1hdHRlcnMsImRheWxvbmciLCAgICAgW1t0b2RheWxvbmcoJXMpXV0sICAgICAgICAgICB7 IHRvZGF5bG9uZyAgICAgID0gdG9kYXlsb25nICAgICAgfSkKICAgIGFkZGZvcm1hdHRlcihm b3JtYXR0ZXJzLCJkYXlzaG9ydCIsICAgIFtbdG9kYXlzaG9ydCglcyldXSwgICAgICAgICAg eyB0b2RheXNob3J0ICAgICA9IHRvZGF5c2hvcnQgICAgIH0pCiAgICBhZGRmb3JtYXR0ZXIo Zm9ybWF0dGVycywid2Vla2RheSIsICAgICBbW3Rvd2Vla2RheSglcyldXSwgICAgICAgICAg IHsgdG93ZWVrZGF5ICAgICAgPSB0b3dlZWtkYXkgICAgICB9KQogICAgYWRkZm9ybWF0dGVy KGZvcm1hdHRlcnMsImRheW9mdGhld2VlayIsW1t0b2RheW9mdGhld2Vlayglcywlcywlcyld XSx7IHRvZGF5b2Z0aGV3ZWVrID0gdG9kYXlvZnRoZXdlZWsgfSkKCiAgICAtLSB1c2luZyAl dCBpcyBzbG93ZXIsIGV2ZW4gd2l0aCBjYWNoaW5nIGFzIHdlIHNlbGRvbSB1c2UgPiAzIGl0 ZW1zIHBlciBlcG9jaAoKICAgIGxvY2FsIGZ1bmN0aW9uIHRvZXllYXIgIChlKSByZXR1cm4g b3NkYXRlKCIlWSIsdG9udW1iZXIoZSkpICBlbmQKICAgIGxvY2FsIGZ1bmN0aW9uIHRvZW1v bnRoIChlKSByZXR1cm4gb3NkYXRlKCIlbSIsdG9udW1iZXIoZSkpICBlbmQKICAgIGxvY2Fs IGZ1bmN0aW9uIHRvZWRheSAgIChlKSByZXR1cm4gb3NkYXRlKCIlZCIsdG9udW1iZXIoZSkp ICBlbmQKICAgIGxvY2FsIGZ1bmN0aW9uIHRvZW1pbnV0ZShlKSByZXR1cm4gb3NkYXRlKCIl TSIsdG9udW1iZXIoZSkpICBlbmQKICAgIGxvY2FsIGZ1bmN0aW9uIHRvZXNlY29uZChlKSBy ZXR1cm4gb3NkYXRlKCIlUyIsdG9udW1iZXIoZSkpICBlbmQKCiAgICBsb2NhbCBmdW5jdGlv biB0b2Vtb250aGxvbmcoZSkKICAgICAgICByZXR1cm4gZl9tb250aGxvbmcodG9udW1iZXIo b3NkYXRlKCIlbSIsdG9udW1iZXIoZSkpKSkKICAgIGVuZAoKICAgIGxvY2FsIGZ1bmN0aW9u IHRvZW1vbnRoc2hvcnQoZSkKICAgICAgICByZXR1cm4gZl9tb250aHNob3J0KHRvbnVtYmVy KG9zZGF0ZSgiJW0iLHRvbnVtYmVyKGUpKSkpCiAgICBlbmQKCiAgICBsb2NhbCBmdW5jdGlv biB0b2VkYXlsb25nKGUpCiAgICAgICAgcmV0dXJuIGZfZGF0bG9uZyh0b251bWJlcihvc2Rh dGUoIiV3Iix0b251bWJlcihlKSkpKQogICAgZW5kCgogICAgbG9jYWwgZnVuY3Rpb24gdG9l ZGF5c2hvcnQoZSkKICAgICAgICByZXR1cm4gZl9kYXlzaG9ydCh0b251bWJlcihvc2RhdGUo IiV3Iix0b251bWJlcihlKSkpKQogICAgZW5kCgogICAgbG9jYWwgZnVuY3Rpb24gdG9ld2Vl ayhlKSAtLSB3ZSBydW4gZnJvbSAxLTcgbm90IDAtNgogICAgICAgIHJldHVybiB0b3N0cmlu Zyh0b251bWJlcihvc2RhdGUoIiV3Iix0b251bWJlcihlKSkpKzEpCiAgICBlbmQKCiAgICBs b2NhbCBmdW5jdGlvbiB0b2V3ZWVrZGF5KGUpCiAgICAgICAgcmV0dXJuIGZfd2Vla2RheSh0 b251bWJlcihvc2RhdGUoIiV3Iix0b251bWJlcihlKSkpKzEpCiAgICBlbmQKCiAgICBsb2Nh bCBmdW5jdGlvbiB0b2VkYXRlKGZvcm1hdCxlKQogICAgICAgIHJldHVybiBvc2RhdGUoZm9y bWF0LHRvbnVtYmVyKGUpKQogICAgZW5kCgogICAgYWRkZm9ybWF0dGVyKGZvcm1hdHRlcnMs ImV5ZWFyIiwgICAgICAgIFtbdG9leWVhciglcyldXSwgICAgICAgIHsgdG9leWVhciAgICAg ICAgID0gdG9leWVhciAgICAgICB9KQogICAgYWRkZm9ybWF0dGVyKGZvcm1hdHRlcnMsImVt b250aCIsICAgICAgIFtbdG9lbW9udGgoJXMpXV0sICAgICAgIHsgdG9lbW9udGggICAgICAg ID0gdG9lbW9udGggICAgICB9KQogICAgYWRkZm9ybWF0dGVyKGZvcm1hdHRlcnMsImVkYXki LCAgICAgICAgIFtbdG9lZGF5KCVzKV1dLCAgICAgICAgIHsgdG9lZGF5ICAgICAgICAgID0g dG9lZGF5ICAgICAgICB9KQogICAgYWRkZm9ybWF0dGVyKGZvcm1hdHRlcnMsImV3ZWVrIiwg ICAgICAgIFtbdG9ld2VlayglcyldXSwgICAgICAgIHsgdG9ld2VlayAgICAgICAgID0gdG9l d2VlayAgICAgICB9KQogICAgYWRkZm9ybWF0dGVyKGZvcm1hdHRlcnMsImVtaW51dGUiLCAg ICAgIFtbdG9lbWludXRlKCVzKV1dLCAgICAgIHsgdG9lbWludXRlICAgICAgID0gdG9lbWlu dXRlICAgICB9KQogICAgYWRkZm9ybWF0dGVyKGZvcm1hdHRlcnMsImVzZWNvbmQiLCAgICAg IFtbdG9lc2Vjb25kKCVzKV1dLCAgICAgIHsgdG9lc2Vjb25kICAgICAgID0gdG9lc2Vjb25k ICAgICB9KQoKICAgIGFkZGZvcm1hdHRlcihmb3JtYXR0ZXJzLCJlbW9udGhsb25nIiwgICBb W3RvZW1vbnRobG9uZyglcyldXSwgICB7IHRvZW1vbnRobG9uZyAgICA9IHRvZW1vbnRobG9u ZyAgfSkKICAgIGFkZGZvcm1hdHRlcihmb3JtYXR0ZXJzLCJlbW9udGhzaG9ydCIsICBbW3Rv ZW1vbnRoc2hvcnQoJXMpXV0sICB7IHRvZW1vbnRoc2hvcnQgICA9IHRvZW1vbnRoc2hvcnQg fSkKICAgIGFkZGZvcm1hdHRlcihmb3JtYXR0ZXJzLCJlZGF5bG9uZyIsICAgICBbW3RvZWRh eWxvbmcoJXMpXV0sICAgICB7IHRvZWRheWxvbmcgICAgICA9IHRvZWRheWxvbmcgICAgfSkK ICAgIGFkZGZvcm1hdHRlcihmb3JtYXR0ZXJzLCJlZGF5c2hvcnQiLCAgICBbW3RvZWRheXNo b3J0KCVzKV1dLCAgICB7IHRvZWRheXNob3J0ICAgICA9IHRvZWRheXNob3J0ICAgfSkKICAg IGFkZGZvcm1hdHRlcihmb3JtYXR0ZXJzLCJld2Vla2RheSIsICAgICBbW3RvZXdlZWtkYXko JXMpXV0sICAgICB7IHRvZXdlZWtkYXkgICAgICA9IHRvZXdlZWtkYXkgICAgfSkKCiAgICBh ZGRmb3JtYXR0ZXIoZm9ybWF0dGVycywiZWRhdGUiLCAgICAgICAgW1t0b2VkYXRlKCVzLCVz KV1dLCAgICAgeyB0b2VkYXRlICAgICAgICAgPSB0b2VkYXRlICAgICAgIH0pCgplbmQKCi0t IGEgcHJlbHVkZSB0byBhIGZ1bmN0aW9uIHRoYXQgd2UgY2FuIHVzZSBhdCB0aGUgbHVhIGVu ZAoKLS0gZGF5Om9yZCBtb250aDptbWVtCi0tIGogYW5kIGpqIG9ic29sZXRlCgpsb2NhbCBz cGFjZWQgPSB7CiAgICBbdl95ZWFyXSAgICA9IHRydWUsCiAgICBbdl9tb250aF0gICA9IHRy dWUsCiAgICBbdl9NT05USF0gICA9IHRydWUsCiAgICBbdl9kYXldICAgICA9IHRydWUsCiAg ICBbdl93ZWVrZGF5XSA9IHRydWUsCiAgICBbdl9XRUVLREFZXSA9IHRydWUsCn0KCmxvY2Fs IGRhdGVjb252ZXJ0ZXJzID0gewogICAgWyJoZWJyZXc6dG8iXSAgID0gZ3JlZ29yaWFuX3Rv X2hlYnJldywKICAgIFsiamFsYWxpOnRvIl0gICA9IGdyZWdvcmlhbl90b19qYWxhbGksCiAg ICBbImphbGFsaTpmcm9tIl0gPSBqYWxhbGlfdG9fZ3JlZ29yaWFuLAp9Cgpsb2NhbCB2YXJp YW50cyA9IHsKICAgIG1uZW0gICA9IHsKICAgICAgICBtb250aCA9IG1vbnRobW5lbXMsCiAg ICAgICAgZGF5ICAgPSBkYXltbmVtcywKICAgIH0sCiAgICBoZWJyZXcgPSB7CiAgICAgICAg bW9udGggPSBzZXRtZXRhdGFibGVpbmRleChmdW5jdGlvbih0LGspIHJldHVybiBtb250aHNb a10gLi4gIjpoZWJyZXciIGVuZCksCiAgICAgICAgZGF5ICAgPSBzZXRtZXRhdGFibGVpbmRl eChmdW5jdGlvbih0LGspIHJldHVybiBkYXlzICBba10gLi4gIjpoZWJyZXciIGVuZCksCiAg ICB9LAogICAgamFsYWxpID0gewogICAgICAgIG1vbnRoID0gc2V0bWV0YXRhYmxlaW5kZXgo ZnVuY3Rpb24odCxrKSByZXR1cm4gbW9udGhzW2tdIC4uICI6amFsYWxpIiBlbmQpLAogICAg ICAgIGRheSAgID0gc2V0bWV0YXRhYmxlaW5kZXgoZnVuY3Rpb24odCxrKSByZXR1cm4gZGF5 cyAgW2tdIC4uICI6amFsYWxpIiBlbmQpLAogICAgfSwKfQoKbG9jYWwgcGFja2VkID0gewog ICAgWyJjbiJdID0gdHJ1ZSwKICAgIFsianAiXSA9IHRydWUsCn0KCmRvCgogICAgbG9jYWwg ZnVuY3Rpb24gY3VycmVudGRhdGUoc3RyLGN1cnJlbnRsYW5ndWFnZSx5ZWFyLG1vbnRoLGRh eSkgLS0gc2Vjb25kIGFyZ3VtZW50IGZhbHNlIDogbm8gbGFiZWwKICAgICAgICBsb2NhbCBs aXN0ICAgICAgID0gdXRpbGl0aWVzLnBhcnNlcnMuc2V0dGluZ3NfdG9fYXJyYXkoc3RyKQog ICAgICAgIGxvY2FsIHNwbGl0bGFiZWwgPSBsYW5ndWFnZXMubGFiZWxzLnNwbGl0IG9yIHN0 cmluZy5pdHNlbGYgLS0gd2UgbmVlZCB0byBnZXQgdGhlIGxvYWRpbmcgb3JkZXIgcmlnaHQK ICAgICAtLSBsb2NhbCB5ZWFyICAgICAgID0gdGV4LnllYXIKICAgICAtLSBsb2NhbCBtb250 aCAgICAgID0gdGV4Lm1vbnRoCiAgICAgLS0gbG9jYWwgZGF5ICAgICAgICA9IHRleC5kYXkK ICAgICAgICBsb2NhbCBhdXRvICAgICAgID0gdHJ1ZQogICAgICAgIGlmIGN1cnJlbnRsYW5n dWFnZSA9PSAiIiB0aGVuCiAgICAgICAgICAgIGN1cnJlbnRsYW5ndWFnZSA9IGZhbHNlCiAg ICAgICAgZW5kCiAgICAgICAgZm9yIGk9MSwjbGlzdCBkbwogICAgICAgICAgICBsb2NhbCBl bnRyeSA9IGxpc3RbaV0KICAgICAgICAgICAgbG9jYWwgY29udmVydCA9IGRhdGVjb252ZXJ0 ZXJzW2VudHJ5XQogICAgICAgICAgICBpZiBjb252ZXJ0IHRoZW4KICAgICAgICAgICAgICAg IHllYXIsIG1vbnRoLCBkYXkgPSBjb252ZXJ0KHllYXIsbW9udGgsZGF5KQogICAgICAgICAg ICBlbHNlCiAgICAgICAgICAgICAgICBsb2NhbCB0YWcsIHBsdXMgPSBzcGxpdGxhYmVsKGVu dHJ5KQogICAgICAgICAgICAgICAgbG9jYWwgb3JkaW5hbCwgbW5lbW9uaWMsIHdoYXRvcmRp bmFsLCBoaWdob3JkaW5hbCA9IGZhbHNlLCBmYWxzZSwgbmlsLCBmYWxzZQogICAgICAgICAg ICAgICAgaWYgbm90IHRhZyB0aGVuCiAgICAgICAgICAgICAgICAgICAgdGFnID0gZW50cnkK ICAgICAgICAgICAgICAgIGVsc2VpZiBwbHVzID09ICIrIiBvciBwbHVzID09ICJvcmQiIHRo ZW4KICAgICAgICAgICAgICAgICAgICBvcmRpbmFsID0gdHJ1ZQogICAgICAgICAgICAgICAg ZWxzZWlmIHBsdXMgPT0gIisrIiBvciBwbHVzID09ICJoaWdob3JkIiB0aGVuCiAgICAgICAg ICAgICAgICAgICAgb3JkaW5hbCA9IHRydWUKICAgICAgICAgICAgICAgICAgICBoaWdob3Jk aW5hbCA9IHRydWUKICAgICAgICAgICAgICAgIGVsc2VpZiBwbHVzIHRoZW4gLS0gbW5lbSBN TkVNIGV0YwogICAgICAgICAgICAgICAgICAgIG1uZW1vbmljID0gdmFyaWFudHNbcGx1c10K ICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgaWYgbm90IGF1dG8gYW5kIG5v dCBwYWNrZWRbY3VycmVudGxhbmd1YWdlXSBhbmQgc3BhY2VkW3RhZ10gdGhlbgogICAgICAg ICAgICAgICAgICAgIGN0eF9zcGFjZSgpCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAg ICAgICAgIGF1dG8gPSBmYWxzZQogICAgICAgICAgICAgICAgaWYgdGFnID09IHZfeWVhciBv ciB0YWcgPT0gInkiIG9yIHRhZyA9PSAiWSIgdGhlbgogICAgICAgICAgICAgICAgICAgIGlm IHBsdXMgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBwbHVzID0gY29udmVydGVyc1tw bHVzXQogICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgIGlmIHBs dXMgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0KHBsdXMoeWVhcikpCiAg ICAgICAgICAgICAgICAgICAgZWxzZWlmIGN1cnJlbnRsYW5ndWFnZSA9PSBmYWxzZSB0aGVu CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQoeWVhcikKICAgICAgICAgICAgICAg ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGN0eF9jb252ZXJ0bnVtYmVyKHZf eWVhcix5ZWFyKQogICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgZWxz ZWlmIHRhZyA9PSAieXkiIG9yIHRhZyA9PSAiWVkiIHRoZW4KICAgICAgICAgICAgICAgICAg ICBjb250ZXh0KCIlMDJpIix5ZWFyICUgMTAwKQogICAgICAgICAgICAgICAgZWxzZWlmIHRh ZyA9PSB2X21vbnRoIG9yIHRhZyA9PSAibSIgdGhlbgogICAgICAgICAgICAgICAgICAgIGlm IGN1cnJlbnRsYW5ndWFnZSA9PSBmYWxzZSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAg IGNvbnRleHQoV29yZChtb250aHNbbW9udGhdKSkKICAgICAgICAgICAgICAgICAgICBlbHNl CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUobW5lbW9uaWMpID09ICJ0YWJsZSIg dGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW5lbW9uaWMgPSBtbmVtb25pYy5t b250aAogICAgICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAg ICAgaWYgbW5lbW9uaWMgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4X2xh YmVsdGV4dCh2YXJpYWJsZXNbbW5lbW9uaWNbbW9udGhdXSkKICAgICAgICAgICAgICAgICAg ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4X2xhYmVsdGV4dCh2 YXJpYWJsZXNbbW9udGhzW21vbnRoXV0pCiAgICAgICAgICAgICAgICAgICAgICAgIGVuZAog ICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgZWxzZWlmIHRhZyA9PSB2 X01PTlRIIHRoZW4KICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50bGFuZ3VhZ2UgPT0g ZmFsc2UgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0KFdvcmQodmFyaWFi bGVzW21vbnRoc1ttb250aF1dKSkKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg ICAgICAgICAgICAgICAgIGlmIHR5cGUobW5lbW9uaWMpID09ICJ0YWJsZSIgdGhlbgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgbW5lbW9uaWMgPSBtbmVtb25pYy5tb250aAogICAg ICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgbW5l bW9uaWMgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4X0xBQkVMVEVYVCh2 YXJpYWJsZXNbbW5lbW9uaWNbbW9udGhdXSkKICAgICAgICAgICAgICAgICAgICAgICAgZWxz ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4X0xBQkVMVEVYVCh2YXJpYWJsZXNb bW9udGhzW21vbnRoXV0pCiAgICAgICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAg ICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgZWxzZWlmIHRhZyA9PSAibW0iIHRoZW4K ICAgICAgICAgICAgICAgICAgICBjb250ZXh0KCIlMDJpIixtb250aCkKICAgICAgICAgICAg ICAgIGVsc2VpZiB0YWcgPT0gIk0iIHRoZW4KICAgICAgICAgICAgICAgICAgICBjb250ZXh0 KG1vbnRoKQogICAgICAgICAgICAgICAgZWxzZWlmIHRhZyA9PSB2X2RheSBvciB0YWcgPT0g ImQiIHRoZW4KICAgICAgICAgICAgICAgICAgICBpZiBwbHVzIHRoZW4KICAgICAgICAgICAg ICAgICAgICAgICAgcGx1cyA9IGNvbnZlcnRlcnNbcGx1c10KICAgICAgICAgICAgICAgICAg ICBlbmQKICAgICAgICAgICAgICAgICAgICBpZiBwbHVzIHRoZW4KICAgICAgICAgICAgICAg ICAgICAgICAgY29udGV4dChwbHVzKGRheSkpCiAgICAgICAgICAgICAgICAgICAgZWxzZWlm IGN1cnJlbnRsYW5ndWFnZSA9PSBmYWxzZSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAg IGNvbnRleHQoZGF5KQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg ICAgICAgICAgY3R4X2NvbnZlcnRudW1iZXIodl9kYXksZGF5KQogICAgICAgICAgICAgICAg ICAgIGVuZAogICAgICAgICAgICAgICAgICAgIHdoYXRvcmRpbmFsID0gZGF5CiAgICAgICAg ICAgICAgICBlbHNlaWYgdGFnID09ICJkZCIgdGhlbgogICAgICAgICAgICAgICAgICAgIGNv bnRleHQoIiUwMmkiLGRheSkKICAgICAgICAgICAgICAgICAgICB3aGF0b3JkaW5hbCA9IGRh eQogICAgICAgICAgICAgICAgZWxzZWlmIHRhZyA9PSAiRCIgdGhlbgogICAgICAgICAgICAg ICAgICAgIGNvbnRleHQoZGF5KQogICAgICAgICAgICAgICAgICAgIHdoYXRvcmRpbmFsID0g ZGF5CiAgICAgICAgICAgICAgICBlbHNlaWYgdGFnID09IHZfd2Vla2RheSBvciB0YWcgPT0g InciIHRoZW4KICAgICAgICAgICAgICAgICAgICBsb2NhbCB3ZCA9IHdlZWtkYXkoZGF5LG1v bnRoLHllYXIpCiAgICAgICAgICAgICAgICAgICAgaWYgY3VycmVudGxhbmd1YWdlID09IGZh bHNlIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dChXb3JkKGRheXNbd2Rd KSkKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGlm IHR5cGUobW5lbW9uaWMpID09ICJ0YWJsZSIgdGhlbgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgbW5lbW9uaWMgPSBtbmVtb25pYy5kYXkKICAgICAgICAgICAgICAgICAgICAgICAg ZW5kCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1uZW1vbmljIHRoZW4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGN0eF9sYWJlbHRleHQodmFyaWFibGVzW21uZW1vbmljW3dk XV0pCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGN0eF9sYWJlbHRleHQodmFyaWFibGVzW2RheXNbd2RdXSkKICAgICAgICAgICAg ICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAg ICBlbHNlaWYgdGFnID09IHZfV0VFS0RBWSB0aGVuCiAgICAgICAgICAgICAgICAgICAgbG9j YWwgd2QgPSB3ZWVrZGF5KGRheSxtb250aCx5ZWFyKQogICAgICAgICAgICAgICAgICAgIGlm IGN1cnJlbnRsYW5ndWFnZSA9PSBmYWxzZSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAg IGNvbnRleHQoV29yZChkYXlzW3dkXSkpCiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAg ICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKG1uZW1vbmljKSA9PSAidGFibGUiIHRoZW4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1uZW1vbmljID0gbW5lbW9uaWMuZGF5CiAg ICAgICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgICAgICBpZiBt bmVtb25pYyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHhfTEFCRUxURVhU KHZhcmlhYmxlc1ttbmVtb25pY1t3ZF1dKQogICAgICAgICAgICAgICAgICAgICAgICBlbHNl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHhfTEFCRUxURVhUKHZhcmlhYmxlc1tk YXlzW3dkXV0pCiAgICAgICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAg ICAgIGVuZAogICAgICAgICAgICAgICAgZWxzZWlmIHRhZyA9PSAiVyIgdGhlbgogICAgICAg ICAgICAgICAgICAgIGNvbnRleHQod2Vla2RheShkYXksbW9udGgseWVhcikpCiAgICAgICAg ICAgICAgICBlbHNlaWYgdGFnID09IHZfcmVmZXJyYWwgdGhlbgogICAgICAgICAgICAgICAg ICAgIGNvbnRleHQoIiUwNGklMDJpJTAyaSIseWVhcixtb250aCxkYXkpCiAgICAgICAgICAg ICAgICBlbHNlaWYgdGFnID09IHZfc3BhY2Ugb3IgdGFnID09ICJcXCAiIHRoZW4KICAgICAg ICAgICAgICAgICAgICBjdHhfc3BhY2UoKQogICAgICAgICAgICAgICAgICAgIGF1dG8gPSB0 cnVlCiAgICAgICAgICAgICAgICBlbHNlaWYgdGFnIH49ICIiIHRoZW4KICAgICAgICAgICAg ICAgICAgICBjb250ZXh0KHRhZykKICAgICAgICAgICAgICAgICAgICBhdXRvID0gdHJ1ZQog ICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICBpZiBvcmRpbmFsIGFuZCB3aGF0 b3JkaW5hbCB0aGVuCiAgICAgICAgICAgICAgICAgICAgaWYgY3VycmVudGxhbmd1YWdlID09 IGZhbHNlIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgLS0gaWdub3JlCiAgICAgICAg ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0W2hpZ2hv cmRpbmFsIGFuZCAiaGlnaG9yZGluYWxzdHIiIG9yICJvcmRpbmFsc3RyIl0oY29udmVydGVy cy5vcmRpbmFsKHdoYXRvcmRpbmFsLGN1cnJlbnRsYW5ndWFnZSkpCiAgICAgICAgICAgICAg ICAgICAgZW5kCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgZW5kCiAgICAgICAg ZW5kCiAgICBlbmQKCiAgICBpbXBsZW1lbnQgewogICAgICAgIG5hbWUgICAgICA9ICJjdXJy ZW50ZGF0ZSIsCiAgICAgICAgYXJndW1lbnRzID0geyAic3RyaW5nIiwgInN0cmluZyIsICJz dHJpbmciLCAiaW50ZWdlciIsICJpbnRlZ2VyIiwgImludGVnZXIiIH0sCiAgICAgICAgYWN0 aW9ucyAgID0gZnVuY3Rpb24ocGF0dGVybixkZWZhdWx0LGxhbmd1YWdlLHllYXIsbW9udGgs ZGF5KQogICAgICAgICAgICBjdXJyZW50ZGF0ZSgKICAgICAgICAgICAgICAgIHBhdHRlcm4g ID09ICIiIGFuZCBkZWZhdWx0IG9yIHBhdHRlcm4sCiAgICAgICAgICAgICAgICBsYW5ndWFn ZSA9PSAiIiBhbmQgZmFsc2UgICBvciBsYW5ndWFnZSwKICAgICAgICAgICAgICAgIHllYXIs IG1vbnRoLCBkYXkKICAgICAgICAgICAgKQogICAgICAgIGVuZCwKICAgIH0KCiAgICBsb2Nh bCBmdW5jdGlvbiB0b2RhdGUocyx5LG0sZCkKICAgICAgICBpZiB5IG9yIG0gb3IgZCB0aGVu CiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZXJzWyJcXGRhdGVbeT0lcyxtPSVzLGQ9JXNd WyVzXVxccmVsYXgiXSh5IG9yICIiLG0gb3IgIiIsZCBvciAiIixzIG9yICIiKQogICAgICAg IGVsc2UKICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlcnNbIlxcY3VycmVudGRhdGVbJXNd XFxyZWxheCJdKHMpCiAgICAgICAgZW5kCiAgICBlbmQKCiAgICBhZGRmb3JtYXR0ZXIoZm9y bWF0dGVycywiZGF0ZSIsIFtbdG9kYXRlKC4uLildXSwgeyB0b2RhdGUgPSB0b2RhdGUgfSkK CiAgICAtLSBjb250ZXh0KCJvbmU6ICU0IWRhdGUhIiwiTU9OVEgiLDIwMjAsMTIsMTEpICAg ICAgICAgIGNvbnRleHQucGFyKCkKICAgIC0tIGNvbnRleHQoIm9uZTogJTQhZGF0ZSEiLCJt b250aCIsMjAyMCwxMiwxMSkgICAgICAgICAgY29udGV4dC5wYXIoKQogICAgLS0gY29udGV4 dCgib25lOiAlNCFkYXRlISIsInllYXIsLSxtbSwtLGRkIiwyMDIwLDEyLDExKSBjb250ZXh0 LnBhcigpCgogICAgLS0gY29udGV4dCgidHdvOiAlMyFkYXRlISIsIk1PTlRIIixmYWxzZSwx MikgICAgICAgICAgY29udGV4dC5wYXIoKQogICAgLS0gY29udGV4dCgidHdvOiAlMyFkYXRl ISIsIm1vbnRoIixmYWxzZSwxMikgICAgICAgICAgY29udGV4dC5wYXIoKQogICAgLS0gY29u dGV4dCgidHdvOiAlMyFkYXRlISIsInllYXIsLSxtbSwtLGRkIixmYWxzZSwxMikgY29udGV4 dC5wYXIoKQoKZW5kCgppbXBsZW1lbnQgewogICAgbmFtZSAgICAgID0gInVuaWhleCIsCiAg ICBhcmd1bWVudHMgPSAiaW50ZWdlciIsCiAgICBhY3Rpb25zICAgPSB7IGZvcm1hdHRlcnNb IlUrJTA1WCJdLCBjb250ZXh0IH0sCn0KCi0tIHRvdGltZSBtaWdodCBtb3ZlIHRvIHV0aWxp dGllcy5wYXJzZXJzIGFzIG1vcmUgZ2VuZXJhbCBoZWxwZXIKCmxvY2FsIG4gPSBSKCIwOSIp XjEgLyB0b251bWJlciAtLSBscGVncGF0dGVybnMuZGlnaXQKCi0tIGxvY2FsIHAgPSBDZigg Q3QoIiIpCi0tICAgICAtLSB5ZWFyIGlzIG1hbmRhdGUsIG1vbnRoIGFuZCBkYXkgYXJlIG9w dGlvbmFsCi0tICAgICAqIENnKENjKCJ5ZWFyIikgKiBuKQotLSAgICAgKiBTKCItLyIpXi0x Ci0tICAgICAqIENnKENjKCJtb250aCIpICogKG4gKyBDYygxKSkpCi0tICAgICAqIFMoIi0v IileLTEKLS0gICAgICogQ2coQ2MoImRheSIpICogKG4gKyBDYygxKSkpCi0tICAgICAtLSB0 aW1lIGlzIG9wdGlvbmFsLCBob3VyIGFuZCBtaW51dGEgYXJlIG1hbmRhdGUsIHNlY29uZHMg YXJlIG9wdGlvbmFsCi0tICAgICAqICgKLS0gICAgICAgICAgIHdoaXRlc3BhY2VeMAotLSAg ICAgICAgICogUCgiVCIpXi0xCi0tICAgICAgICAgKiB3aGl0ZXNwYWNlXjAKLS0gICAgICAg ICAqIENnKENjKCJob3VyIikgKiBuKQotLSAgICAgICAgICogUCgiOiIpXi0xCi0tICAgICAg ICAgKiBDZyhDYygibWluIikgKiBuKQotLSAgICAgICAgICogUCgiOiIpXi0xCi0tICAgICAg ICAgKiBDZyhDYygic2VjIikgKiAobiArIENjKDApKSkKLS0gICAgICleLTEKLS0gICAgIC0t IHpvbmUgaXMgb3B0aW9uYWwsIGhvdXIgaXMgbWFuZGF0ZSwgbWludXRlcyBhcmUgb3B0aW9u YWwKLS0gICAgICogKAotLSAgICAgICAgICAgd2hpdGVzcGFjZV4wCi0tICAgICAgICAgKiBD ZyhDYygidHpzIikgKiAoUCgiKyIpICogQ2MoMSkgKyBQKCItIikgKiBDYygtMSkgKyBDYygx KSkpCi0tICAgICAgICAgKiB3aGl0ZXNwYWNlXjAKLS0gICAgICAgICAqIENnKENjKCJ0emgi KSAqIG4pCi0tICAgICAgICAgKiBQKCI6IileLTEKLS0gICAgICAgICAqIENnKENjKCJ0em0i KSAqIChuICsgQ2MoMCkpKQotLSAgICAgKV4tMQotLSAgICAgLCByYXdzZXQpCgpsb2NhbCBw ID0gQ3QoIiIpICogKAogICAgLS0geWVhciBpcyBtYW5kYXRlLCBtb250aCBhbmQgZGF5IGFy ZSBvcHRpb25hbAogICAgICAoQ2MoInllYXIiKSAqIG4pICUgcmF3c2V0CiAgICAqIFMoIi0v IileLTEKICAgICogKENjKCJtb250aCIpICogKG4gKyBDYygxKSkpICUgcmF3c2V0CiAgICAq IFMoIi0vIileLTEKICAgICogKENjKCJkYXkiKSAqIChuICsgQ2MoMSkpKSAlIHJhd3NldAog ICAgLS0gdGltZSBpcyBvcHRpb25hbCwgaG91ciBhbmQgbWludXRhIGFyZSBtYW5kYXRlLCBz ZWNvbmRzIGFyZSBvcHRpb25hbAogICAgKiAoCiAgICAgICAgICB3aGl0ZXNwYWNlXjAKICAg ICAgICAqIFAoIlQiKV4tMQogICAgICAgICogd2hpdGVzcGFjZV4wCiAgICAgICAgKiAoQ2Mo ImhvdXIiKSAqIG4pICUgcmF3c2V0CiAgICAgICAgKiBQKCI6IileLTEKICAgICAgICAqIChD YygibWluIikgKiBuKSAlIHJhd3NldAogICAgICAgICogUCgiOiIpXi0xCiAgICAgICAgKiAo Q2MoInNlYyIpICogKG4gKyBDYygwKSkpICUgcmF3c2V0CiAgICApXi0xCiAgICAtLSB6b25l IGlzIG9wdGlvbmFsLCBob3VyIGlzIG1hbmRhdGUsIG1pbnV0ZXMgYXJlIG9wdGlvbmFsCiAg ICAqICgKICAgICAgICAgIHdoaXRlc3BhY2VeMAogICAgICAgICogKENjKCJ0enMiKSAqIChQ KCIrIikgKiBDYygxKSArIFAoIi0iKSAqIENjKC0xKSArIENjKDEpKSkgJSByYXdzZXQKICAg ICAgICAqIHdoaXRlc3BhY2VeMAogICAgICAgICogKENjKCJ0emgiKSAqIG4pICUgcmF3c2V0 CiAgICAgICAgKiBQKCI6IileLTEKICAgICAgICAqIChDYygidHptIikgKiAobiArIENjKDAp KSkgJSByYXdzZXQKICAgICleLTEKKQoKZnVuY3Rpb24gY29udmVydGVycy50b3RpbWUocykK ICAgIGlmIG5vdCBzIHRoZW4KICAgICAgICByZXR1cm4KICAgIGVsc2VpZiB0eXBlKHMpID09 ICJ0YWJsZSIgdGhlbgogICAgICAgIHJldHVybiBzCiAgICBlbHNlaWYgdHlwZShzKSA9PSAi c3RyaW5nIiB0aGVuCiAgICAgICAgbG9jYWwgdCA9IGxwZWdtYXRjaChwLHMpCiAgICAgICAg aWYgbm90IHQgdGhlbgogICAgICAgICAgICBsb2dzLnJlcG9ydCgic3lzdGVtIiwiaW52YWxp ZCB0aW1lIHNwZWNpZmljYXRpb24gJWEiLHMpCiAgICAgICAgZWxzZWlmIHQudHpoIHRoZW4K ICAgICAgICAgICAgbG9jYWwgbG9jYWx0emgsIGxvY2FsdHptID0gb3N0aW1lem9uZSh0cnVl KQogICAgICAgICAgICB0LmhvdXIgPSB0LmhvdXIgKyBsb2NhbHR6aCAtIHQudHpzICogdC50 emgKICAgICAgICAgICAgdC5taW4gID0gdC5taW4gICsgbG9jYWx0em0gLSB0LnR6cyAqIHQu dHptCiAgICAgICAgZW5kCiAgICAgICAgcmV0dXJuIHQKICAgIGVuZAogICAgbG9jYWwgbiA9 IHRvbnVtYmVyKHMpCiAgICBpZiBuIGFuZCBuID49IDAgdGhlbgogICAgICAgIHJldHVybiBv c2RhdGUoIip0IixuKQogICAgZW5kCmVuZAoKZnVuY3Rpb24gY29udmVydGVycy5zZXR0aW1l KHQpCiAgICBpZiB0eXBlKHQpIH49ICJ0YWJsZSIgdGhlbgogICAgICAgIHQgPSBjb252ZXJ0 ZXJzLnRvdGltZSh0KQogICAgZW5kCiAgICBpZiB0IHRoZW4KICAgICAgICB0ZXhzZXQoInll YXIiLCB0LnllYXIgb3IgMTAwMCkKICAgICAgICB0ZXhzZXQoIm1vbnRoIiwgdC5tb250aCBv ciAxKQogICAgICAgIHRleHNldCgiZGF5IiwgdC5kYXkgb3IgMSkKICAgICAgICB0ZXhzZXQo InRpbWUiLCAodC5ob3VyIG9yIDApICogNjAgKyAodC5taW4gb3IgMCkpCiAgICBlbmQKZW5k CgotLSB0YWtlbiBmcm9tIHgtYXNjaWltYXRoICh3aGVyZSB3ZSBuZWVkZWQgaXQgZm9yIGEg cHJvamVjdCkKCmxvY2FsIGRfb25lICAgICAgICAgPSBscGVncGF0dGVybnMuZGlnaXQKbG9j YWwgZF90d28gICAgICAgICA9IGRfb25lICogZF9vbmUKbG9jYWwgZF90aHJlZSAgICAgICA9 IGRfdHdvICogZF9vbmUKbG9jYWwgZF9mb3VyICAgICAgICA9IGRfdGhyZWUgKiBkX29uZQps b2NhbCBkX3NwbGl0ICAgICAgID0gUCgtMSkgKyBDYXJnKDIpICogKGxwZWdwYXR0ZXJucy5w ZXJpb2QgLyIiKQoKbG9jYWwgZF9zcGFjZWQgICAgICA9IChDYXJnKDEpICogZF90aHJlZSle MQoKbG9jYWwgZGlnaXRpemVkXzEgICA9IENzICggKAogICAgICAgICAgICAgICAgICAgICAg ICBkX3RocmVlICogZF9zcGFjZWQgKiBkX3NwbGl0ICsKICAgICAgICAgICAgICAgICAgICAg ICAgZF90d28gICAqIGRfc3BhY2VkICogZF9zcGxpdCArCiAgICAgICAgICAgICAgICAgICAg ICAgIGRfb25lICAgKiBkX3NwYWNlZCAqIGRfc3BsaXQgKwogICAgICAgICAgICAgICAgICAg ICAgICBQKDEpCiAgICAgICAgICAgICAgICAgICAgICApXjEgKQoKbG9jYWwgcF9mb3VyYmVm b3JlICA9IGRfZm91ciAqIGRfc3BsaXQKbG9jYWwgcF9mb3VyYWZ0ZXIgICA9IGRfZm91ciAq IFAoLTEpCgpsb2NhbCBwX2JlZm9yZXNwbGl0ID0gZF90aHJlZSAqIGRfc3BhY2VkXjAgKiBk X3NwbGl0CiAgICAgICAgICAgICAgICAgICAgKyBkX3R3byAgICogZF9zcGFjZWReMCAqIGRf c3BsaXQKICAgICAgICAgICAgICAgICAgICArIGRfb25lICAgKiBkX3NwYWNlZF4wICogZF9z cGxpdAogICAgICAgICAgICAgICAgICAgICsgZF9vbmUgICAqIGRfc3BsaXQKCmxvY2FsIHBf YWZ0ZXJzcGxpdCAgPSBwX2ZvdXJhZnRlcgogICAgICAgICAgICAgICAgICAgICsgZF90aHJl ZSAqIGRfc3BhY2VkCiAgICAgICAgICAgICAgICAgICAgKyBkX3R3byAgICogZF9zcGFjZWQK ICAgICAgICAgICAgICAgICAgICArIGRfb25lICAgKiBkX3NwYWNlZAoKbG9jYWwgZGlnaXRp emVkXzIgICA9IENzICgKICAgICAgICAgICAgICAgICAgICAgICAgIHBfZm91cmJlZm9yZSAg KiAgKHBfYWZ0ZXJzcGxpdF4wKSArCiAgICAgICAgICAgICAgICAgICAgICAgICBwX2JlZm9y ZXNwbGl0ICogKChwX2FmdGVyc3BsaXQgKyBkX29uZV4xKV4wKQogICAgICAgICAgICAgICAg ICAgICAgKQoKbG9jYWwgcF9mb3VyYmVmb3JlICA9IGRfZm91ciAqIGRfc3BsaXQKbG9jYWwg cF9mb3VyYWZ0ZXIgICA9IGRfZm91cgpsb2NhbCBkX3NwYWNlZCAgICAgID0gKENhcmcoMSkg KiAoZF90aHJlZSArIGRfdHdvICsgZF9vbmUpKV4xCmxvY2FsIHBfYWZ0ZXJzcGxpdCAgPSBw X2ZvdXJhZnRlciAqIFAoLTEpCiAgICAgICAgICAgICAgICAgICAgKyBkX3RocmVlICogZF9z cGFjZWQgKiBQKDEpXjAKICAgICAgICAgICAgICAgICAgICArIGRfb25lXjEKCmxvY2FsIGRp Z2l0aXplZF8zICAgPSBDcygocF9mb3VyYmVmb3JlICsgcF9iZWZvcmVzcGxpdCkgKiBwX2Fm dGVyc3BsaXReMCkKCmxvY2FsIGRpZ2l0c19zcGFjZSAgPSB1dGZjaGFyKDB4MjAwOCkKCmxv Y2FsIHNwbGl0bWV0aG9kcyAgPSB7CiAgICBkaWdpdGl6ZWRfMSwKICAgIGRpZ2l0aXplZF8y LAogICAgZGlnaXRpemVkXzMsCn0KCmxvY2FsIHJlcGxhY2VycyAgICAgPSB0YWJsZS5zZXRt ZXRhdGFibGVpbmRleChmdW5jdGlvbih0LGspCiAgICBsb2NhbCB2ID0gbHBlZy5yZXBsYWNl cigiLiIsaykKICAgIHRba10gPSB2CiAgICByZXR1cm4gdgplbmQpCgpmdW5jdGlvbiBjb252 ZXJ0ZXJzLnNwYWNlZGRpZ2l0cyhzZXR0aW5ncyxkYXRhKQogICAgbG9jYWwgZGF0YSA9IHRv c3RyaW5nKGRhdGEgb3Igc2V0dGluZ3MuZGF0YSBvciAiIikKICAgIGlmIGRhdGEgfj0gIiIg dGhlbgogICAgICAgIGxvY2FsIG1ldGhvZCA9IHNldHRpbmdzLm1ldGhvZAogICAgICAgIGxv Y2FsIHNwbGl0ICA9IHNwbGl0bWV0aG9kc1t0b251bWJlcihtZXRob2QpIG9yIDFdCiAgICAg ICAgaWYgc3BsaXQgdGhlbgogICAgICAgICAgICBsb2NhbCBzeW1ib2wgICAgPSBzZXR0aW5n cy5zeW1ib2wKICAgICAgICAgICAgbG9jYWwgc2VwYXJhdG9yID0gc2V0dGluZ3Muc2VwYXJh dG9yCiAgICAgICAgICAgIGlmIG5vdCBzeW1ib2wgb3Igc3ltYm9sID09ICIiIHRoZW4KICAg ICAgICAgICAgICAgIHN5bWJvbCA9ICIuIgogICAgICAgICAgICBlbmQKICAgICAgICAgICAg aWYgdHlwZShzZXBhcmF0b3IpIH49ICJzdHJpbmciIG9yIHNlcGFyYXRvciA9PSAiIiB0aGVu CiAgICAgICAgICAgICAgICBzZXBhcmF0b3IgPSBkaWdpdHNfc3BhY2UKICAgICAgICAgICAg ZW5kCiAgICAgICAgICAgIGxvY2FsIHJlc3VsdCA9IGxwZWdtYXRjaChzcGxpdCxkYXRhLDEs c2VwYXJhdG9yLHN5bWJvbCkKICAgICAgICAgICAgaWYgbm90IHJlc3VsdCBhbmQgc3ltYm9s IH49ICIuIiB0aGVuCiAgICAgICAgICAgICAgICByZXN1bHQgPSBscGVnbWF0Y2gocmVwbGFj ZXJzW3N5bWJvbF0sZGF0YSkKICAgICAgICAgICAgZW5kCiAgICAgICAgICAgIGlmIHJlc3Vs dCB0aGVuCiAgICAgICAgICAgICAtLSBwcmludChtZXRob2Qsc3ltYm9sLHNlcGFyYXRvcixk YXRhLHJlc3VsdCkKICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKICAgICAgICAgICAg ZW5kCiAgICAgICAgZW5kCiAgICBlbmQKICAgIHJldHVybiBzdHIKZW5kCgotLSBtZXRob2Qg MiA6IHNwbGl0IDMgYmVmb3JlIGFuZCAzIGFmdGVyCi0tIG1ldGhvZCAzIDogc3BsaXQgMyBi ZWZvcmUgYW5kIDMgYWZ0ZXIgd2l0aCA+IDQgYmVmb3JlCgotLSBzeW1ib2xzIGlzIGV4dHJh IHNwbGl0IChpbiBhZGRpdGlvbiB0byBwZXJpb2QpCgotLSBsb2NhbCBzZXR1cCA9IHsgc3Bs aXRtZXRob2QgPSAzLCBzeW1ib2wgPSAiLCIgfQotLSBsb2NhbCBzZXR1cCA9IHsgc3BsaXRt ZXRob2QgPSAyLCBzeW1ib2wgPSAiLCIgfQotLSBsb2NhbCBzZXR1cCA9IHsgc3BsaXRtZXRo b2QgPSAxLCBzeW1ib2wgPSAiLCIgfQotLQotLSBsb2NhbCB0ID0gewotLSAgICAgIjAuMDAw MDIiLAotLSAgICAgIjEiLCAiMTIiLCAiMTIzIiwgIjEyMzQiLCAiMTIzNDUiLCAiMTIzNDU2 IiwgIjEyMzQ1NjciLCAiMTIzNDU2NzgiLCAiMTIzNDU2Nzg5IiwKLS0gICAgICIxLjEiLAot LSAgICAgIjEyLjEyIiwKLS0gICAgICIxMjMuMTIzIiwKLS0gICAgICIxMjM0LjEyMyIsCi0t ICAgICAiMTIzNC4xMjM0IiwKLS0gICAgICIxMjM0NS4xMjM0IiwKLS0gICAgICIxMjM0LjEy MzQ1IiwKLS0gICAgICIxMjM0NS4xMjM0NSIsCi0tICAgICAiMTIzNDU2LjEyMzQ1NiIsCi0t ICAgICAiMTIzNDU2Ny4xMjM0NTY3IiwKLS0gICAgICIxMjM0NTY3OC4xMjM0NTY3OCIsCi0t ICAgICAiMTIzNDU2Nzg5LjEyMzQ1Njc4OSIsCi0tICAgICAiMC4xMjM0IiwKLS0gICAgICIx MjM0LjAiLAotLSAgICAgIjEyMzQuMDAiLAotLSAgICAgIjAuMTIzNDU2Nzg5IiwKLS0gICAg ICIxMDAuMDAwMDUiLAotLSAgICAgIjAuODAwMTgiLAotLSAgICAgIjEwLjgwMDE4IiwKLS0g ICAgICIxMDAuODAwMTgiLAotLSAgICAgIjEwMDAuODAwMTgiLAotLSAgICAgIjEwMDAwLjgw MDE4IiwKLS0gfQotLQotLSBmb3IgaT0xLCN0IGRvCi0tICAgICBwcmludChmb3JtYXR0ZXJz WyIlLTIwcyA6IFslc10iXSh0W2ldLGNvbnZlcnRlcnMuc3BhY2VkZGlnaXRzKHNldHVwLHRb aV0pKSkKLS0gZW5kCgppbXBsZW1lbnQgewogICAgbmFtZSAgICAgID0gInNwYWNlZGRpZ2l0 cyIsCiAgICBhY3Rpb25zICAgPSB7IGNvbnZlcnRlcnMuc3BhY2VkZGlnaXRzLCBjb250ZXh0 IH0sCiAgICBhcmd1bWVudHMgPSB7CiAgICAgICAgewogICAgICAgICAgICB7ICJzeW1ib2wi IH0sCiAgICAgICAgICAgIHsgInNlcGFyYXRvciIgfSwKICAgICAgICAgICAgeyAiZGF0YSIg fSwKICAgICAgICAgICAgeyAibWV0aG9kIiB9LAogICAgICAgIH0KICAgIH0KfQoKbG9jYWwg ZnVuY3Rpb24gZmllbGQobikgcmV0dXJuIGNvbnRleHQob3NkYXRlKCIqdCIpW25dKSBlbmQK CmltcGxlbWVudCB7IG5hbWUgPSAiYWN0dWFsZGF5IiwgICBwdWJsaWMgPSB0cnVlLCBhY3Rp b25zID0gZnVuY3Rpb24oKSBmaWVsZCgiZGF5IikgICBlbmQgfQppbXBsZW1lbnQgeyBuYW1l ID0gImFjdHVhbG1vbnRoIiwgcHVibGljID0gdHJ1ZSwgYWN0aW9ucyA9IGZ1bmN0aW9uKCkg ZmllbGQoIm1vbnRoIikgZW5kIH0KaW1wbGVtZW50IHsgbmFtZSA9ICJhY3R1YWx5ZWFyIiwg IHB1YmxpYyA9IHRydWUsIGFjdGlvbnMgPSBmdW5jdGlvbigpIGZpZWxkKCJ5ZWFyIikgIGVu ZCB9CgppbXBsZW1lbnQgewogICAgbmFtZSAgICA9ICJ1dWlkIiwKICAgIHB1YmxpYyAgPSB0 cnVlLAogICAgYWN0aW9ucyA9IHsgb3MudXVpZCwgY29udGV4dCB9LAp9Cg== --------------1THcyOpfvDot0O2b9L7Z00gV Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___________________________________________________________________________________ --------------1THcyOpfvDot0O2b9L7Z00gV--