Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w000I-001W2k-1p for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Mar 2026 16:32:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w000F-004Y00-1S for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Mar 2026 16:32:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w000E-004Xzs-2v for pgsql-hackers@lists.postgresql.org; Tue, 10 Mar 2026 16:32:15 +0000 Received: from mail-oa1-x32.google.com ([2001:4860:4864:20::32]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w000D-00000001TYA-0qbC for pgsql-hackers@lists.postgresql.org; Tue, 10 Mar 2026 16:32:14 +0000 Received: by mail-oa1-x32.google.com with SMTP id 586e51a60fabf-4171451e89aso1747892fac.3 for ; Tue, 10 Mar 2026 09:32:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773160331; cv=none; d=google.com; s=arc-20240605; b=ZEN4N6pCBdACUH7igrTOiQqWj32K/XCpjsdR+Vs1oXxFQUsPXOSfN43tq7THD2HNuw 3kIhsk1madE6SLNDn2HuXRLfMBG7kj8goWo6qmHI6GACbxaS0ob+CkoY+eWJBTYs8Bli xe8qanf4QeH8K8w7H/V33BbjQuFLTcEM29WCds5A7aBnbwyZKPdvwKAw8FZqa9daBPvz BSsrA66DoVXO3OMKtXs6fkcy4qLpUyMWMs0UhnGCCpko2CdmQ2o/Jf1sVBkYrIef2L+V rfbT6rIJ3qLaTF3H75FK4sIN7U/XKozx6zZMPHlHNMS4AE5TLfSigmsYcU86eWmhlA/I 9s3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=pxSDbB2okDCVsBmpR67FrGamEq1Ph/sACf8DrzL2RQk=; fh=qau0P7ny56wCSSjdZJ6KwctdnQX8zRgSOYLlT23xjRY=; b=DQu7PZCM2ZMkqejAtGo/nnueXnaJ9tdtOOCJvKqVqltQ0NfxpcGWIt3uFPKF1sPmOF NcF9DMR3Q8OJZfyLhqRc2Hgm9zDB9AULROqHLjUj2Aeit/89a64pbZNZp6FRDhgoOmmP 4VdQpal0Aq2Q4hEWi/1u0XH/tnZWoUNyd4zq6Cfb3tEuHnxXjvYJMofjIXijud7lNPjH muco7YfxlobZ2IPUMgq5EsMZsc5SxKpui6O96BoFmP9EdV5XAM4XSVK6UW2325CeXMcU 1TC66O8W+ygG9DQ6Vk19mLg7eiA0F5tRO/m27HxWJAbL5jyYBPfES2UX/cp1qeOZAFxD Vl3w==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1773160331; x=1773765131; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=pxSDbB2okDCVsBmpR67FrGamEq1Ph/sACf8DrzL2RQk=; b=jdyn6ZXhzqh2vmDiFrHEVLlotO9EAHEjkV8okWbva963kzwV82bkzU1I+18m2bToxj SepdvgyCdjo6HjkadGi8/bmCQEKVXQDbxeUZpVw2733c5prlHLT+UOApMKFeuF5wz9C8 0j6DOHb/VegnMjX9ssmx1ls8wF2IPahHvl06pRnbQ2MYj+hptcAGLgZF/VOWiuH3BYHQ 9HK5DXffv0/lrnVN3Drxx4NVDmd3lTXpatgqB0xI71znNZ7znjRljcbgnQYRXgbLM6zT QHKvMnyfV8dps7es8oy9nXK+nwNFi1R5rEhnm3wXdID/1vq1DX6mGE6508CTtVwF7cBe 4MDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773160331; x=1773765131; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=pxSDbB2okDCVsBmpR67FrGamEq1Ph/sACf8DrzL2RQk=; b=oNk6Je5TusbPI7Sk/ung94NIK9rqWZ16XzLKeJIz0BBp1591DubEee/NxxMIMYJ3a1 EQgru+9W+f4HyMiOxg5EgisxXg36W8177vmBQCM68gk1bWPw/ffu3sxL+bYN6eXZdSba 5yPKVSAHJ9alo3987YsWuruO23BL5kdKCEkvQKN8v3oXm4zP/hMUm1iFsb1AvMTDz80S LS25gvlZxNNbgVFcWnr9ZUHxj5lx8H37rzu5X81E/F2asiQoU1yPBzHm+/bNw51LYLDM 3ceqGgoq++OqSkkA91xbPy9ntXfefxGS42Azcoo8ojk76FW14l2lW8n3WLagr4wlzp91 lm8w== X-Gm-Message-State: AOJu0YzZTYekTj5evFbvfFR/7l/ahLi2O2aTlvf0Ujo61ySCF/4cT+Lf +ruCe+pZUXL4I6BasfLPOPrKwybXOAMW5MfkRSiVQ394o/9c0TLJgIdceSpBE0gx8hoNhWWTUCy Fv0tSZQ1yAnftIVBm+TBzfTpLKb8/LeNhoPmviY5+nA== X-Gm-Gg: ATEYQzxbQ0/GQel25fcgUWWnpsiZH1zYJZgtZ8xJn2KxHjpQ1Wu2B9DwYUvnqAoI+S4 esZ8lnP9LLiTtQr4og5pFVttS44RS3+q80oT/iIcpWKFEE0cWsbnK7c03b9KganGUOe3wW6L6Q6 r++Bw8oZmzE0iUK+vuyjF0qmD/mwGl2C+HicterXk5FyXAuIcn/Hk3uv/UdkB5P/QcG5jdaMIdv n95b0+hF20zQZagS/Fr96PahM0LEcDsMzFwTgBjdsJVd4XfYy3UHkdM47RfssQQmVNzxS6aYNUV igZR X-Received: by 2002:a05:6820:4b95:b0:678:f8f3:d6dd with SMTP id 006d021491bc7-67b9bc6663fmr11007940eaf.8.1773160330989; Tue, 10 Mar 2026 09:32:10 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Paul A Jungwirth Date: Tue, 10 Mar 2026 09:31:58 -0700 X-Gm-Features: AaiRm50SoKReVl5TdBLzxXiGaRasRSDU9nkshzjmpjHO4rgsCY4oIJqwceOPoAI Message-ID: Subject: Re: domain for WITHOUT OVERLAPS To: jian he Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000a8b9df064cae0fa5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a8b9df064cae0fa5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Mar 10, 2026 at 12:42=E2=80=AFAM jian he wrote: > > Hi. > > V4 looks good to me. Thanks for taking a look! > One minor question regarding comments in transformIndexConstraint: > /* > * The WITHOUT OVERLAPS part (if any) must be a range or > * multirange type. > */ > > Should we change it to: > > /* > * The WITHOUT OVERLAPS part (if any) base type must be a range or > * multirange type. > */ Sure. Here is an updated patch. It has some comment adjustments based on Kirill's feedback too. Yours, -- Paul ~{:-) pj@illuminatedcomputing.com --000000000000a8b9df064cae0fa5 Content-Type: application/octet-stream; name="v5-0001-Add-support-for-domain-types-in-WITHOUT-OVERLAPS.patch" Content-Disposition: attachment; filename="v5-0001-Add-support-for-domain-types-in-WITHOUT-OVERLAPS.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmktv5cg0 RnJvbSA5Y2M4ODE3NDdjNjg3ZGExMjc4NWUwOTBiYzU2YTMyZjIwYmIwMjFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjkgRGVjIDIwMjUgMTU6MTU6MjMgKzA4MDAKU3ViamVjdDogW1BBVENIIHY1 XSBBZGQgc3VwcG9ydCBmb3IgZG9tYWluIHR5cGVzIGluIFdJVEhPVVQgT1ZFUkxBUFMKClRoaXMg Y29tbWl0IGFsbG93cyBkb21haW4gdHlwZXMgdG8gd29yayB3aXRoIHRoZSBXSVRIT1VUIE9WRVJM QVBTIGNvbnN0cmFpbnQuCkRvbWFpbnMgb3ZlciByYW5nZSB0eXBlcyBhbmQgZG9tYWlucyBvdmVy IG11bHRpcmFuZ2UgdHlwZXMgYXJlIGJvdGggc3VwcG9ydGVkLgpVc2VyLWRlZmluZWQgcmFuZ2Ug dHlwZXMgd2hvc2Ugc3VidHlwZSBpcyBhIGRvbWFpbiBhcmUgYWxzbyBzdXBwb3J0ZWQuCgpjb21t aXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNjI4MQpkaXNj dXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQ0p1ZnhHb0FtTl8waUo9aGpURzB2R3BPU095 eS12WXlmRSstcTBBV3hycTJfcDVYUUBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNJbmRleGluZy5jICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC91dGls cy9jYWNoZS90eXBjYWNoZS5jICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvdXRpbHMv dHlwY2FjaGUuaCAgICAgICAgICAgICAgICAgIHwgICA1ICstCiAuLi4vcmVncmVzcy9leHBlY3Rl ZC93aXRob3V0X292ZXJsYXBzLm91dCAgICAgfCAxNzggKysrKysrKysrKysrKysrKystCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAxNTIgKysrKysrKysr KysrKystCiA2IGZpbGVzIGNoYW5nZWQsIDM0MiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggOWQwNzFlNDk1YzYuLjk4NGI4 NTljNzZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpAQCAtNzUxLDEzICs3NTEs MTkgQEAgY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LAogCiAJCWlmICghaXNudWxsW2luZG5rZXlhdHRzIC0gMV0pCiAJCXsK KwkJCWNoYXIgCQl0eXB0eXBlOwogCQkJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdldERl c2NyKGhlYXApOwogCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cih0dXBk ZXNjLCBhdHRubyAtIDEpOwotCQkJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlID0gbG9va3VwX3R5 cGVfY2FjaGUoYXR0LT5hdHR0eXBpZCwgMCk7CisJCQlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUg PSBsb29rdXBfdHlwZV9jYWNoZShhdHQtPmF0dHR5cGlkLCBUWVBFQ0FDSEVfRE9NQUlOX0JBU0Vf SU5GTyk7CisKKwkJCWlmIChPaWRJc1ZhbGlkKHR5cGNhY2hlLT5kb21haW5CYXNlVHlwZSkpCisJ CQkJdHlwdHlwZSA9IHR5cGNhY2hlLT5kb21haW5CYXNlVHlwdHlwZTsKKwkJCWVsc2UKKwkJCQl0 eXB0eXBlID0gdHlwY2FjaGUtPnR5cHR5cGU7CiAKIAkJCUV4ZWNXaXRob3V0T3ZlcmxhcHNOb3RF bXB0eShoZWFwLCBhdHQtPmF0dG5hbWUsCiAJCQkJCQkJCQkJdmFsdWVzW2luZG5rZXlhdHRzIC0g MV0sCi0JCQkJCQkJCQkJdHlwY2FjaGUtPnR5cHR5cGUsIGF0dC0+YXR0dHlwaWQpOworCQkJCQkJ CQkJCXR5cHR5cGUsIGF0dC0+YXR0dHlwaWQpOwogCQl9CiAJfQogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3V0aWxjbWQuYwppbmRleCBjYzI0NGM0OWU5ZS4uNDNjNDliODVlZDUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuYwpAQCAtMjc2NCw3ICsyNzY0LDcgQEAgdHJhbnNmb3JtSW5kZXhDb25z dHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsIENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpCiAJ CQl9CiAKIAkJCS8qCi0JCQkgKiBUaGUgV0lUSE9VVCBPVkVSTEFQUyBwYXJ0IChpZiBhbnkpIG11 c3QgYmUgYSByYW5nZSBvcgorCQkJICogVGhlIFdJVEhPVVQgT1ZFUkxBUFMgcGFydCAoaWYgYW55 KSBiYXNlIHR5cGUgbXVzdCBiZSBhIHJhbmdlIG9yCiAJCQkgKiBtdWx0aXJhbmdlIHR5cGUuCiAJ CQkgKi8KIAkJCWlmIChjb25zdHJhaW50LT53aXRob3V0X292ZXJsYXBzICYmIGxjID09IGxpc3Rf bGFzdF9jZWxsKGNvbnN0cmFpbnQtPmtleXMpKQpAQCAtMjc5OSw2ICsyNzk5LDggQEAgdHJhbnNm b3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsIENyZWF0ZVN0bXRDb250 ZXh0ICpjeHQpCiAJCQkJCWlmICghT2lkSXNWYWxpZCh0eXBpZCkgJiYgY29sdW1uKQogCQkJCQkJ dHlwaWQgPSB0eXBlbmFtZVR5cGVJZChOVUxMLCBjb2x1bW4tPnR5cGVOYW1lKTsKIAorCQkJCQl0 eXBpZCA9IGdldEJhc2VUeXBlKHR5cGlkKTsKKwogCQkJCQlpZiAoIU9pZElzVmFsaWQodHlwaWQp IHx8ICEodHlwZV9pc19yYW5nZSh0eXBpZCkgfHwgdHlwZV9pc19tdWx0aXJhbmdlKHR5cGlkKSkp CiAJCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBF X01JU01BVENIKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hl LmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCmluZGV4IDYyN2U1MzQ2MDlh Li5lMDllNWI0ZDRlMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2Fj aGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC05NDcsNiAr OTQ3LDggQEAgbG9va3VwX3R5cGVfY2FjaGUoT2lkIHR5cGVfaWQsIGludCBmbGFncykKIAkJdHlw ZW50cnktPmRvbWFpbkJhc2VUeXBtb2QgPSAtMTsKIAkJdHlwZW50cnktPmRvbWFpbkJhc2VUeXBl ID0KIAkJCWdldEJhc2VUeXBlQW5kVHlwbW9kKHR5cGVfaWQsICZ0eXBlbnRyeS0+ZG9tYWluQmFz ZVR5cG1vZCk7CisJCXR5cGVudHJ5LT5kb21haW5CYXNlVHlwdHlwZSA9CisJCQlnZXRfdHlwdHlw ZSh0eXBlbnRyeS0+ZG9tYWluQmFzZVR5cGUpOwogCX0KIAlpZiAoKGZsYWdzICYgVFlQRUNBQ0hF X0RPTUFJTl9DT05TVFJfSU5GTykgJiYKIAkJKHR5cGVudHJ5LT5mbGFncyAmIFRDRkxBR1NfQ0hF Q0tFRF9ET01BSU5fQ09OU1RSQUlOVFMpID09IDAgJiYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL3R5cGNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oCmluZGV4IDBl Mzk0NWFhMjQ0Li40MDcwODYyMWFmZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlw Y2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oCkBAIC0xMDksMTEgKzEw OSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBUeXBlQ2FjaGVFbnRyeQogCXN0cnVjdCBUeXBlQ2FjaGVF bnRyeSAqcm5ndHlwZTsgLyogbXVsdGlyYW5nZSdzIHJhbmdlIHVuZGVybHlpbmcgdHlwZSAqLwog CiAJLyoKLQkgKiBEb21haW4ncyBiYXNlIHR5cGUgYW5kIHR5cG1vZCBpZiBpdCdzIGEgZG9tYWlu IHR5cGUuICBaZXJvZXMgaWYgbm90Ci0JICogZG9tYWluLCBvciBpZiBpbmZvcm1hdGlvbiBoYXNu J3QgYmVlbiByZXF1ZXN0ZWQuCisJICogRG9tYWluJ3MgYmFzZSB0eXBlLCB0eXBtb2QsIGFuZCB0 eXB0eXBlIGlmIGl0J3MgYSBkb21haW4gdHlwZS4KKwkgKiBaZXJvZXMgaWYgbm90IGRvbWFpbiwg b3IgaWYgaW5mb3JtYXRpb24gaGFzbid0IGJlZW4gcmVxdWVzdGVkLgogCSAqLwogCU9pZAkJCWRv bWFpbkJhc2VUeXBlOwogCWludDMyCQlkb21haW5CYXNlVHlwbW9kOworCWNoYXIJCWRvbWFpbkJh c2VUeXB0eXBlOwogCiAJLyoKIAkgKiBEb21haW4gY29uc3RyYWludCBkYXRhIGlmIGl0J3MgYSBk b21haW4gdHlwZS4gIE5VTEwgaWYgbm90IGRvbWFpbiwgb3IKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IDA2ZjZmZDJjOGM1Li42ZGU0NDRk NDYyMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJs YXBzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMu b3V0CkBAIC0xNjIsNyArMTYyLDE3OSBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCiAp OwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nMyBEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5n M19wazsKIERST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKLURST1AgVFlQRSB0ZXh0cmFuZ2UyOwor LS0KKy0tIHRlc3QgUFJJTUFSWSBLRVkgYW5kIFVOSVFVRSBjb25zdHJhaW50IGludGVyYWN0aW9u IHdpdGggZG9tYWluczoKKy0tCitDUkVBVEUgRE9NQUlOIGludDRfZCBhcyBpbnRlZ2VyIGNoZWNr ICh2YWx1ZSA8PiAxMCk7CistLSByYW5nZSBvdmVyIGRvbWFpbjoKK0NSRUFURSBUWVBFIGludDRf ZF9yYW5nZSBhcyByYW5nZSAoc3VidHlwZSA9IGludDRfZCk7CistLSBkb21haW4gb3ZlciBidWls dC1pbiByYW5nZToKK0NSRUFURSBET01BSU4gaW50NHJhbmdlX2QgQVMgaW50NHJhbmdlIENIRUNL IChWQUxVRSA8PiAnWzEwLDExKScpOworLS0gZG9tYWluIG92ZXIgY3VzdG9tIHJhbmdlIChub3Qg dGVzdGVkIGRpcmVjdGx5KToKK0NSRUFURSBET01BSU4gdGV4dHJhbmdlMl9kIEFTIHRleHRyYW5n ZTIgQ0hFQ0sgKFZBTFVFIDw+ICdbYyxkKScpOworLS0gZG9tYWluIG92ZXIgZG9tYWluIG92ZXIg Y3VzdG9tIHJhbmdlOgorQ1JFQVRFIERPTUFJTiB0ZXh0cmFuZ2UyX2RkIEFTIHRleHRyYW5nZTJf ZDsKKy0tIGRvbWFpbiBvdmVyIGJ1aWx0LWluIG11bHRpcmFuZ2U6CitDUkVBVEUgRE9NQUlOIGlu dDRtdWx0aXJhbmdlX2QgYXMgaW50NG11bHRpcmFuZ2UgY2hlY2sgKHZhbHVlIDw+ICd7WzEwLDEx KX0nKTsKKy0tIGRvbWFpbiBvdmVyIGN1c3RvbSBtdWx0aXJhbmdlOgorQ1JFQVRFIERPTUFJTiB0 ZXh0bXVsdGlyYW5nZTJfZCBBUyB0ZXh0bXVsdGlyYW5nZTIgQ0hFQ0sgKFZBTFVFIDw+ICd7W2Ms ZCl9Jyk7CistLSBXZSBhbHNvIHRlc3QgYSBtdWx0aXJhbmdlIG92ZXIgYSBkb21haW4gc3VidHlw ZSAoYmVsb3cpLgorLS0gV2UgY2FuJ3QgdGVzdCBhIG11bHRpcmFuZ2Ugd2hvc2UgcmFuZ2V0eXBl IGlzIGEgZG9tYWluLAorLS0gYmVjYXVzZSBkZWZpbmluZyBhIGRvbWFpbiBvbiBhIHJhbmdldHlw ZSBkb2Vzbid0IGNyZWF0ZSBhIG5ldyBtdWx0aXJhbmdldHlwZQorLS0gKG9yIG5ldyByYW5nZSBj b25zdHJ1Y3RvcnMsIHBnX3JhbmdlIGVudHJ5LCBldGMuKS4KKy0tIFRoZSByYW5nZSdzIHN1YnR5 cGUgaXMgYSBkb21haW46CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nNCAoCisgIGlkIGludDRy YW5nZSwKKyAgdmFsaWRfYXQgaW50NF9kX3JhbmdlLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX3Ju ZzRfcGsgUFJJTUFSWSBLRVkoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nNCBWQUxVRVMgKCdbMSwxMSknLCAnWzksMTApJyk7IC0tIHN0 YXJ0IGJvdW5kIHZpb2xhdGVzIGRvbWFpbgorRVJST1I6ICB2YWx1ZSBmb3IgZG9tYWluIGludDRf ZCB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJpbnQ0X2RfY2hlY2siCitMSU5FIDE6IElOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzQgVkFMVUVTICgnWzEsMTEpJywgJ1s5LDEwKScpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZzQgVkFMVUVTICgnWzEsMiknLCAnWzEwLDExKScpOyAtLSBlbmQgYm91 bmQgdmlvbGF0ZXMgZG9tYWluCitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gaW50NF9kIHZpb2xh dGVzIGNoZWNrIGNvbnN0cmFpbnQgImludDRfZF9jaGVjayIKK0xJTkUgMTogSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nNCBWQUxVRVMgKCdbMSwyKScsICdbMTAsMTEpJyk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmc0IFZBTFVFUyAoJ1sxLDIpJywgJ1sxLDEzKScpLCAoJ1sxLDIpJywgJ1syLDUpJyk7 IC0tIG92ZXJsYXBzCitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNs dXNpb24gY29uc3RyYWludCAidGVtcG9yYWxfcm5nNF9wayIKK0RFVEFJTDogIEtleSAoaWQsIHZh bGlkX2F0KT0oWzEsMiksIFsyLDUpKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGlkLCB2 YWxpZF9hdCk9KFsxLDIpLCBbMSwxMykpLgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nNCBWQUxV RVMgKCdbMSwyKScsICdbMSwxMyknKSwgKCdbMSwyKScsICdbMjAsMjMpJyk7IC0tIG9rYXkKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZzQgVkFMVUVTICgnWzEsMiknLCAnWzMwLCknKTsgLS0gbnVs bCBib3VuZCBpcyBva2F5CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzQ7CistLSBUaGUgZG9tYWlu IGlzIG92ZXIgYSBidWlsdC1pbiByYW5nZSB0eXBlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Ju ZzQgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IGludDRyYW5nZV9kLAorICBDT05TVFJB SU5UIHRlbXBvcmFsX3JuZzRfcGsgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmc0IFZBTFVFUyAoJ1sxLDIpJywgJ1sxMCwx MSknKTsgLS0gdmlvbGF0ZXMgZG9tYWluCitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gaW50NHJh bmdlX2QgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAiaW50NHJhbmdlX2RfY2hlY2siCitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmc0IFZBTFVFUyAoJ1sxLDIpJywgJ1sxLDEzKScpLCAoJ1sxLDIp JywgJ1syLDEzKScpOyAtLSBvdmVybGFwcworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUg dmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgInRlbXBvcmFsX3JuZzRfcGsiCitERVRBSUw6 ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbMiwxMykpIGNvbmZsaWN0cyB3aXRoIGV4aXN0 aW5nIGtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIFsxLDEzKSkuCitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmc0IFZBTFVFUyAoJ1sxLDIpJywgJ1sxLDEzKScpLCAoJ1sxLDIpJywgJ1syMCwyMykn KTsgLS0gb2theQorRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmc0OworLS0gVGhlIGRvbWFpbiBpcyBv dmVyIGFub3RoZXIgZG9tYWluIHdoaWNoIGlzIG92ZXIgYSB1c2VyLWRlZmluZWQgcmFuZ2UgdHlw ZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmc0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxp ZF9hdCB0ZXh0cmFuZ2UyX2RkLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzRfcGsgVU5JUVVF IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmc0IFZBTFVFUyAoJ1sxLDIpJywgTlVMTCksIChOVUxMLCAnWzEsMiknKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZzQgVkFMVUVTICgnWzEsMiknLCAnW2MsZCknKTsgLS0gdmlvbGF0ZXMg ZG9tYWluCitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gdGV4dHJhbmdlMl9kZCB2aW9sYXRlcyBj aGVjayBjb25zdHJhaW50ICJ0ZXh0cmFuZ2UyX2RfY2hlY2siCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmc0IFZBTFVFUyAoJ1sxLDIpJywgJ1thLGQpJyk7IC0tIG9rYXkKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZzQgVkFMVUVTICgnWzEsMiknLCAnW2IsYyknKTsgLS0gb3ZlcmxhcHMKK0VSUk9S OiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0 ZW1wb3JhbF9ybmc0X3BrIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgW2Is YykpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIFth LGQpKS4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzQgVkFMVUVTICgnWzIsMyknLCAnW0IsQykn KSwgKCdbMiwzKScsICdbQSxDKScpOyAtLSBvdmVybGFwcworRVJST1I6ICBjb25mbGljdGluZyBr ZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgInRlbXBvcmFsX3JuZzRfcGsi CitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFsyLDMpLCBbQSxDKSkgY29uZmxpY3RzIHdp dGggZXhpc3Rpbmcga2V5IChpZCwgdmFsaWRfYXQpPShbMiwzKSwgW0IsQykpLgorLS0gSXQgaXMg YSBtdWx0aXJhbmdlIHR5cGUgcmF0aGVyIHRoYW4gYSBkb21haW4gdHlwZTsgaG93ZXZlciwgdGhl IG11bHRpcmFuZ2UKKy0tIHR5cGXigJlzIHN1YnR5cGUgaXMgYSBkb21haW4gdHlwZS4KK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF9tbHRybmc0ICgKKyAgaWQgIGludDRyYW5nZSwKKyAgdmFsaWRfYXQg aW50NF9kX211bHRpcmFuZ2UsCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfbWx0cm5nNF9wayBQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8g dGVtcG9yYWxfbWx0cm5nNCBWQUxVRVMgKCdbMSwyKScsICd7WzEwLDExKX0nKTsgLS0gdmlvbGF0 ZXMgZG9tYWluCitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gaW50NF9kIHZpb2xhdGVzIGNoZWNr IGNvbnN0cmFpbnQgImludDRfZF9jaGVjayIKK0xJTkUgMTogSU5TRVJUIElOVE8gdGVtcG9yYWxf bWx0cm5nNCBWQUxVRVMgKCdbMSwyKScsICd7WzEwLDExKX0nKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0lOU0VSVCBJTlRPIHRlbXBv cmFsX21sdHJuZzQgVkFMVUVTICgnWzEsMiknLCAne1sxLDEzKX0nKSwgKCdbMSwyKScsICd7WzIs MTMpfScpOyAtLSBvdmVybGFwcworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlvbGF0 ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgInRlbXBvcmFsX21sdHJuZzRfcGsiCitERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCB7WzIsMTMpfSkgY29uZmxpY3RzIHdpdGggZXhpc3Rp bmcga2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwge1sxLDEzKX0pLgorSU5TRVJUIElOVE8gdGVt cG9yYWxfbWx0cm5nNCBWQUxVRVMgKCdbMSwyKScsICd7WzEsMTMpfScpLCAoJ1sxLDIpJywgJ3tb MjAsMjMpfScpOyAtLSBva2F5CitEUk9QIFRBQkxFIHRlbXBvcmFsX21sdHJuZzQ7CistLSBUaGUg ZG9tYWluIGlzIG92ZXIgYSBidWlsdC1pbiBtdWx0aXJhbmdlIHR5cGUuCitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfbWx0cm5nNCAoCisgIGlkICBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IGludDRtdWx0 aXJhbmdlX2QsCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfbWx0cm5nNF9wayBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gdGVtcG9yYWxf bWx0cm5nNCBWQUxVRVMgKCdbMSwyKScsICd7WzEwLDExKX0nKTsgLS0gdmlvbGF0ZXMgZG9tYWlu CitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gaW50NG11bHRpcmFuZ2VfZCB2aW9sYXRlcyBjaGVj ayBjb25zdHJhaW50ICJpbnQ0bXVsdGlyYW5nZV9kX2NoZWNrIgorSU5TRVJUIElOVE8gdGVtcG9y YWxfbWx0cm5nNCBWQUxVRVMgKCdbMSwyKScsICd7WzEsMTMpfScpLCAoJ1sxLDIpJywgJ3tbMiwx Myl9Jyk7IC0tIG92ZXJsYXBzCitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRl cyBleGNsdXNpb24gY29uc3RyYWludCAidGVtcG9yYWxfbWx0cm5nNF9wayIKK0RFVEFJTDogIEtl eSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIHtbMiwxMyl9KSBjb25mbGljdHMgd2l0aCBleGlzdGlu ZyBrZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCB7WzEsMTMpfSkuCitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9tbHRybmc0IFZBTFVFUyAoJ1sxLDIpJywgJ3tbMSwxMyl9JyksICgnWzEsMiknLCAne1sy MCwyMyl9Jyk7IC0tIG9rYXkKK0RST1AgVEFCTEUgdGVtcG9yYWxfbWx0cm5nNDsKKy0tIFRoZSBk b21haW4gaXMgb3ZlciBhIHVzZXItZGVmaW5lZCBtdWx0aXJhbmdlIHR5cGUuCitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfbWx0cm5nNCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQgdGV4dG11 bHRpcmFuZ2UyX2QsCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfbWx0cm5nNF9wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gdGVtcG9y YWxfbWx0cm5nNCBWQUxVRVMgKCdbMSwyKScsICd7W2MsZCl9Jyk7IC0tIHZpb2xhdGVzIGRvbWFp bgorRVJST1I6ICB2YWx1ZSBmb3IgZG9tYWluIHRleHRtdWx0aXJhbmdlMl9kIHZpb2xhdGVzIGNo ZWNrIGNvbnN0cmFpbnQgInRleHRtdWx0aXJhbmdlMl9kX2NoZWNrIgorSU5TRVJUIElOVE8gdGVt cG9yYWxfbWx0cm5nNCBWQUxVRVMgKCdbMSwyKScsICd7W2EsZyl9Jyk7IC0tIG9rYXkKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX21sdHJuZzQgVkFMVUVTICgnWzEsMiknLCAne1tiLGMpfScpOyAtLSBv dmVybGFwcworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVzaW9u IGNvbnN0cmFpbnQgInRlbXBvcmFsX21sdHJuZzRfcGsiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxp ZF9hdCk9KFsxLDIpLCB7W2IsYyl9KSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGlkLCB2 YWxpZF9hdCk9KFsxLDIpLCB7W2EsZyl9KS4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZzQg VkFMVUVTICgnWzIsMyknLCAne1tCLEMpfScpLCAoJ1syLDMpJywgJ3tbQSxDKX0nKTsgLS0gb3Zl cmxhcHMKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBj b25zdHJhaW50ICJ0ZW1wb3JhbF9tbHRybmc0X3BrIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRf YXQpPShbMiwzKSwge1tBLEMpfSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChpZCwgdmFs aWRfYXQpPShbMiwzKSwge1tCLEMpfSkuCistLSB0ZXN0IGZvcmVpZ24ga2V5IGludGVyYWN0aW9u cyB3aXRoIGRvbWFpbnM6CistLSBkb21haW4gcmVmZXJlbmNlcyBkb21haW46CitVUERBVEUgdGVt cG9yYWxfbWx0cm5nNCBTRVQgdmFsaWRfYXQgPSAne1thLGcpfSc7IC0tIHJlc2V0CitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfbWx0cm5nZmsgKAorICBwYXJlbnRfaWQgaW50NHJhbmdlLAorICBpZCBp bnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRleHRtdWx0aXJhbmdlMl9kLAorICBDT05TVFJBSU5UIHRl bXBvcmFsX21sdHJuZ2ZrX2ZrCisgICAgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorICAgIFJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nNAorKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX21sdHJuZ2ZrIFZBTFVFUyAoJ1sxLDIpJywgJ1syLDMpJywgJ3tbZCxlKX0nKTsK K1VQREFURSB0ZW1wb3JhbF9tbHRybmc0IFNFVCB2YWxpZF9hdCA9ICd7W2MsZCl9JzsgLS0gdmlv bGF0ZXMgZG9tYWluCitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gdGV4dG11bHRpcmFuZ2UyX2Qg dmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidGV4dG11bHRpcmFuZ2UyX2RfY2hlY2siCitVUERB VEUgdGVtcG9yYWxfbWx0cm5nNCBTRVQgdmFsaWRfYXQgPSAne1thLGgpfSc7IC0tIG9rYXkKK1VQ REFURSB0ZW1wb3JhbF9tbHRybmc0IFNFVCB2YWxpZF9hdCA9ICd7W2YsZyl9JzsgLS0gdmlvbGF0 ZXMgcmVmZXJlbmNlCitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFs X21sdHJuZzQiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX21sdHJu Z2ZrX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfbWx0cm5nZmsiCitERVRBSUw6ICBLZXkgKGlkLCB2 YWxpZF9hdCk9KFsxLDIpLCB7W2EsaCl9KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUg InRlbXBvcmFsX21sdHJuZ2ZrIi4KK0RST1AgVEFCTEUgdGVtcG9yYWxfbWx0cm5nZms7CistLSBu b24tZG9tYWluIHJlZmVyZW5jZXMgZG9tYWluOgorVVBEQVRFIHRlbXBvcmFsX21sdHJuZzQgU0VU IHZhbGlkX2F0ID0gJ3tbYSxnKX0nOyAtLSByZXNldAorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX21s dHJuZ2ZrICgKKyAgcGFyZW50X2lkIGludDRyYW5nZSwKKyAgaWQgaW50NHJhbmdlLAorICB2YWxp ZF9hdCB0ZXh0bXVsdGlyYW5nZTIsCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfbWx0cm5nZmtfZmsK KyAgICBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisgICAgUkVGRVJF TkNFUyB0ZW1wb3JhbF9tbHRybmc0CispOworSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nZmsg VkFMVUVTICgnWzEsMiknLCAnWzIsMyknLCAne1tkLGUpfScpOworVVBEQVRFIHRlbXBvcmFsX21s dHJuZzQgU0VUIHZhbGlkX2F0ID0gJ3tbYyxkKX0nOyAtLSB2aW9sYXRlcyBkb21haW4KK0VSUk9S OiAgdmFsdWUgZm9yIGRvbWFpbiB0ZXh0bXVsdGlyYW5nZTJfZCB2aW9sYXRlcyBjaGVjayBjb25z dHJhaW50ICJ0ZXh0bXVsdGlyYW5nZTJfZF9jaGVjayIKK1VQREFURSB0ZW1wb3JhbF9tbHRybmc0 IFNFVCB2YWxpZF9hdCA9ICd7W2EsaCl9JzsgLS0gb2theQorVVBEQVRFIHRlbXBvcmFsX21sdHJu ZzQgU0VUIHZhbGlkX2F0ID0gJ3tbZixnKX0nOyAtLSB2aW9sYXRlcyByZWZlcmVuY2UKK0VSUk9S OiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfbWx0cm5nNCIgdmlvbGF0ZXMg Zm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfbWx0cm5nZmtfZmsiIG9uIHRhYmxlICJ0 ZW1wb3JhbF9tbHRybmdmayIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIHtb YSxoKX0pIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfbWx0cm5nZmsi LgorRFJPUCBUQUJMRSB0ZW1wb3JhbF9tbHRybmdmazsKKy0tIGRvbWFpbiByZWZlcmVuY2VzIG5v bi1kb21haW46CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfbWx0cm5nMyAoCisgIGlkIGludDRyYW5n ZSwKKyAgdmFsaWRfYXQgdGV4dG11bHRpcmFuZ2UyCispOworSU5TRVJUIElOVE8gdGVtcG9yYWxf bWx0cm5nMyBWQUxVRVMgKCdbMSwyKScsICd7W2EsZyl9Jyk7CitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfbWx0cm5nZmsgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHBhcmVudF9pZCBpbnQ0cmFuZ2UsCisg IHZhbGlkX2F0IHRleHRtdWx0aXJhbmdlMl9kLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX21sdHJu Z2ZrX2ZrCisgICAgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorICAg IFJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nNAorKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21s dHJuZ2ZrIFZBTFVFUyAoJ1sxLDIpJywgJ1sxLDIpJywgJ3tbZCxlKX0nKTsKK1VQREFURSB0ZW1w b3JhbF9tbHRybmc0IFNFVCB2YWxpZF9hdCA9ICd7W2MsZCl9JzsgLS0gdmlvbGF0ZXMgZG9tYWlu CitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gdGV4dG11bHRpcmFuZ2UyX2QgdmlvbGF0ZXMgY2hl Y2sgY29uc3RyYWludCAidGV4dG11bHRpcmFuZ2UyX2RfY2hlY2siCitVUERBVEUgdGVtcG9yYWxf bWx0cm5nNCBTRVQgdmFsaWRfYXQgPSAne1thLGgpfSc7IC0tIG9rYXkKK1VQREFURSB0ZW1wb3Jh bF9tbHRybmc0IFNFVCB2YWxpZF9hdCA9ICd7W2YsZyl9JzsgLS0gdmlvbGF0ZXMgcmVmZXJlbmNl CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX21sdHJuZzQiIHZp b2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX21sdHJuZ2ZrX2ZrIiBvbiB0 YWJsZSAidGVtcG9yYWxfbWx0cm5nZmsiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFsx LDIpLCB7W2EsaCl9KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX21s dHJuZ2ZrIi4KK0RST1AgVEFCTEUgdGVtcG9yYWxfbWx0cm5nMywgdGVtcG9yYWxfbWx0cm5nZms7 CitEUk9QIFRBQkxFIHRlbXBvcmFsX21sdHJuZzQsIHRlbXBvcmFsX3JuZzQ7CiAtLSBQSyB3aXRo IG9uZSBjb2x1bW4gcGx1cyBhIG11bHRpcmFuZ2U6CiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfbWx0 cm5nICgKICAgaWQgaW50NHJhbmdlLApAQCAtMzAxLDcgKzQ3Myw2IEBAIFNFTEVDVCBwZ19nZXRf aW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25u YW1lID0gJ3RlCiAKIERST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKIC0tIFVOSVFVRSB3aXRoIGEg Y3VzdG9tIHJhbmdlIHR5cGU6Ci1DUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJhbmdlIChzdWJ0 eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAog ICBpZCBpbnQ0cmFuZ2UsCiAgIHZhbGlkX2F0IHRleHRyYW5nZTIsCkBAIC0zMDksNiArNDgwLDkg QEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAogKTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFs X3JuZzMgRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXE7CiBEUk9QIFRBQkxFIHRlbXBv cmFsX3JuZzM7CitEUk9QIFRZUEUgaW50NF9kX3JhbmdlOworRFJPUCBET01BSU4gaW50NHJhbmdl X2QsIHRleHRyYW5nZTJfZGQsIHRleHRyYW5nZTJfZCwKKyAgICAgICAgICAgIHRleHRtdWx0aXJh bmdlMl9kLCBpbnQ0bXVsdGlyYW5nZV9kLCBpbnQ0X2Q7CiBEUk9QIFRZUEUgdGV4dHJhbmdlMjsK IC0tCiAtLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCmluZGV4IDc3YmU2OTUzNTc1Li40MjM0MTllMTFmMSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKQEAgLTEwMCw3ICsx MDAsMTUzIEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKICk7CiBBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ybmczIERST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3BrOwogRFJPUCBUQUJM RSB0ZW1wb3JhbF9ybmczOwotRFJPUCBUWVBFIHRleHRyYW5nZTI7CisKKy0tCistLSB0ZXN0IFBS SU1BUlkgS0VZIGFuZCBVTklRVUUgY29uc3RyYWludCBpbnRlcmFjdGlvbiB3aXRoIGRvbWFpbnM6 CistLQorQ1JFQVRFIERPTUFJTiBpbnQ0X2QgYXMgaW50ZWdlciBjaGVjayAodmFsdWUgPD4gMTAp OworLS0gcmFuZ2Ugb3ZlciBkb21haW46CitDUkVBVEUgVFlQRSBpbnQ0X2RfcmFuZ2UgYXMgcmFu Z2UgKHN1YnR5cGUgPSBpbnQ0X2QpOworLS0gZG9tYWluIG92ZXIgYnVpbHQtaW4gcmFuZ2U6CitD UkVBVEUgRE9NQUlOIGludDRyYW5nZV9kIEFTIGludDRyYW5nZSBDSEVDSyAoVkFMVUUgPD4gJ1sx MCwxMSknKTsKKy0tIGRvbWFpbiBvdmVyIGN1c3RvbSByYW5nZSAobm90IHRlc3RlZCBkaXJlY3Rs eSk6CitDUkVBVEUgRE9NQUlOIHRleHRyYW5nZTJfZCBBUyB0ZXh0cmFuZ2UyIENIRUNLIChWQUxV RSA8PiAnW2MsZCknKTsKKy0tIGRvbWFpbiBvdmVyIGRvbWFpbiBvdmVyIGN1c3RvbSByYW5nZToK K0NSRUFURSBET01BSU4gdGV4dHJhbmdlMl9kZCBBUyB0ZXh0cmFuZ2UyX2Q7CistLSBkb21haW4g b3ZlciBidWlsdC1pbiBtdWx0aXJhbmdlOgorQ1JFQVRFIERPTUFJTiBpbnQ0bXVsdGlyYW5nZV9k IGFzIGludDRtdWx0aXJhbmdlIGNoZWNrICh2YWx1ZSA8PiAne1sxMCwxMSl9Jyk7CistLSBkb21h aW4gb3ZlciBjdXN0b20gbXVsdGlyYW5nZToKK0NSRUFURSBET01BSU4gdGV4dG11bHRpcmFuZ2Uy X2QgQVMgdGV4dG11bHRpcmFuZ2UyIENIRUNLIChWQUxVRSA8PiAne1tjLGQpfScpOworLS0gV2Ug YWxzbyB0ZXN0IGEgbXVsdGlyYW5nZSBvdmVyIGEgZG9tYWluIHN1YnR5cGUgKGJlbG93KS4KKy0t IFdlIGNhbid0IHRlc3QgYSBtdWx0aXJhbmdlIHdob3NlIHJhbmdldHlwZSBpcyBhIGRvbWFpbiwK Ky0tIGJlY2F1c2UgZGVmaW5pbmcgYSBkb21haW4gb24gYSByYW5nZXR5cGUgZG9lc24ndCBjcmVh dGUgYSBuZXcgbXVsdGlyYW5nZXR5cGUKKy0tIChvciBuZXcgcmFuZ2UgY29uc3RydWN0b3JzLCBw Z19yYW5nZSBlbnRyeSwgZXRjLikuCisKKy0tIFRoZSByYW5nZSdzIHN1YnR5cGUgaXMgYSBkb21h aW46CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nNCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFs aWRfYXQgaW50NF9kX3JhbmdlLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzRfcGsgUFJJTUFS WSBLRVkoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nNCBWQUxVRVMgKCdbMSwxMSknLCAnWzksMTApJyk7IC0tIHN0YXJ0IGJvdW5kIHZp b2xhdGVzIGRvbWFpbgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nNCBWQUxVRVMgKCdbMSwyKScs ICdbMTAsMTEpJyk7IC0tIGVuZCBib3VuZCB2aW9sYXRlcyBkb21haW4KK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZzQgVkFMVUVTICgnWzEsMiknLCAnWzEsMTMpJyksICgnWzEsMiknLCAnWzIsNSkn KTsgLS0gb3ZlcmxhcHMKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzQgVkFMVUVTICgnWzEsMikn LCAnWzEsMTMpJyksICgnWzEsMiknLCAnWzIwLDIzKScpOyAtLSBva2F5CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmc0IFZBTFVFUyAoJ1sxLDIpJywgJ1szMCwpJyk7IC0tIG51bGwgYm91bmQgaXMg b2theQorRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmc0OworCistLSBUaGUgZG9tYWluIGlzIG92ZXIg YSBidWlsdC1pbiByYW5nZSB0eXBlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzQgKAorICBp ZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IGludDRyYW5nZV9kLAorICBDT05TVFJBSU5UIHRlbXBv cmFsX3JuZzRfcGsgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmc0IFZBTFVFUyAoJ1sxLDIpJywgJ1sxMCwxMSknKTsgLS0g dmlvbGF0ZXMgZG9tYWluCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmc0IFZBTFVFUyAoJ1sxLDIp JywgJ1sxLDEzKScpLCAoJ1sxLDIpJywgJ1syLDEzKScpOyAtLSBvdmVybGFwcworSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nNCBWQUxVRVMgKCdbMSwyKScsICdbMSwxMyknKSwgKCdbMSwyKScsICdb MjAsMjMpJyk7IC0tIG9rYXkKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nNDsKKworLS0gVGhlIGRv bWFpbiBpcyBvdmVyIGFub3RoZXIgZG9tYWluIHdoaWNoIGlzIG92ZXIgYSB1c2VyLWRlZmluZWQg cmFuZ2UgdHlwZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmc0ICgKKyAgaWQgaW50NHJhbmdl LAorICB2YWxpZF9hdCB0ZXh0cmFuZ2UyX2RkLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzRf cGsgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmc0IFZBTFVFUyAoJ1sxLDIpJywgTlVMTCksIChOVUxMLCAnWzEsMiknKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzQgVkFMVUVTICgnWzEsMiknLCAnW2MsZCknKTsgLS0g dmlvbGF0ZXMgZG9tYWluCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmc0IFZBTFVFUyAoJ1sxLDIp JywgJ1thLGQpJyk7IC0tIG9rYXkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzQgVkFMVUVTICgn WzEsMiknLCAnW2IsYyknKTsgLS0gb3ZlcmxhcHMKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzQg VkFMVUVTICgnWzIsMyknLCAnW0IsQyknKSwgKCdbMiwzKScsICdbQSxDKScpOyAtLSBvdmVybGFw cworCistLSBJdCBpcyBhIG11bHRpcmFuZ2UgdHlwZSByYXRoZXIgdGhhbiBhIGRvbWFpbiB0eXBl OyBob3dldmVyLCB0aGUgbXVsdGlyYW5nZQorLS0gdHlwZeKAmXMgc3VidHlwZSBpcyBhIGRvbWFp biB0eXBlLgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX21sdHJuZzQgKAorICBpZCAgaW50NHJhbmdl LAorICB2YWxpZF9hdCBpbnQ0X2RfbXVsdGlyYW5nZSwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9t bHRybmc0X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmc0IFZBTFVFUyAoJ1sxLDIpJywgJ3tbMTAsMTEp fScpOyAtLSB2aW9sYXRlcyBkb21haW4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZzQgVkFM VUVTICgnWzEsMiknLCAne1sxLDEzKX0nKSwgKCdbMSwyKScsICd7WzIsMTMpfScpOyAtLSBvdmVy bGFwcworSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nNCBWQUxVRVMgKCdbMSwyKScsICd7WzEs MTMpfScpLCAoJ1sxLDIpJywgJ3tbMjAsMjMpfScpOyAtLSBva2F5CitEUk9QIFRBQkxFIHRlbXBv cmFsX21sdHJuZzQ7CisKKy0tIFRoZSBkb21haW4gaXMgb3ZlciBhIGJ1aWx0LWluIG11bHRpcmFu Z2UgdHlwZS4KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9tbHRybmc0ICgKKyAgaWQgIGludDRyYW5n ZSwKKyAgdmFsaWRfYXQgaW50NG11bHRpcmFuZ2VfZCwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9t bHRybmc0X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmc0IFZBTFVFUyAoJ1sxLDIpJywgJ3tbMTAsMTEp fScpOyAtLSB2aW9sYXRlcyBkb21haW4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZzQgVkFM VUVTICgnWzEsMiknLCAne1sxLDEzKX0nKSwgKCdbMSwyKScsICd7WzIsMTMpfScpOyAtLSBvdmVy bGFwcworSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nNCBWQUxVRVMgKCdbMSwyKScsICd7WzEs MTMpfScpLCAoJ1sxLDIpJywgJ3tbMjAsMjMpfScpOyAtLSBva2F5CitEUk9QIFRBQkxFIHRlbXBv cmFsX21sdHJuZzQ7CisKKy0tIFRoZSBkb21haW4gaXMgb3ZlciBhIHVzZXItZGVmaW5lZCBtdWx0 aXJhbmdlIHR5cGUuCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfbWx0cm5nNCAoCisgIGlkIGludDRy YW5nZSwKKyAgdmFsaWRfYXQgdGV4dG11bHRpcmFuZ2UyX2QsCisgIENPTlNUUkFJTlQgdGVtcG9y YWxfbWx0cm5nNF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CispOworSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nNCBWQUxVRVMgKCdbMSwyKScsICd7W2Ms ZCl9Jyk7IC0tIHZpb2xhdGVzIGRvbWFpbgorSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nNCBW QUxVRVMgKCdbMSwyKScsICd7W2EsZyl9Jyk7IC0tIG9rYXkKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X21sdHJuZzQgVkFMVUVTICgnWzEsMiknLCAne1tiLGMpfScpOyAtLSBvdmVybGFwcworSU5TRVJU IElOVE8gdGVtcG9yYWxfbWx0cm5nNCBWQUxVRVMgKCdbMiwzKScsICd7W0IsQyl9JyksICgnWzIs MyknLCAne1tBLEMpfScpOyAtLSBvdmVybGFwcworCistLSB0ZXN0IGZvcmVpZ24ga2V5IGludGVy YWN0aW9ucyB3aXRoIGRvbWFpbnM6CisKKy0tIGRvbWFpbiByZWZlcmVuY2VzIGRvbWFpbjoKK1VQ REFURSB0ZW1wb3JhbF9tbHRybmc0IFNFVCB2YWxpZF9hdCA9ICd7W2EsZyl9JzsgLS0gcmVzZXQK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9tbHRybmdmayAoCisgIHBhcmVudF9pZCBpbnQ0cmFuZ2Us CisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQgdGV4dG11bHRpcmFuZ2UyX2QsCisgIENPTlNU UkFJTlQgdGVtcG9yYWxfbWx0cm5nZmtfZmsKKyAgICBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisgICAgUkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRybmc0CispOworSU5T RVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nZmsgVkFMVUVTICgnWzEsMiknLCAnWzIsMyknLCAne1tk LGUpfScpOworVVBEQVRFIHRlbXBvcmFsX21sdHJuZzQgU0VUIHZhbGlkX2F0ID0gJ3tbYyxkKX0n OyAtLSB2aW9sYXRlcyBkb21haW4KK1VQREFURSB0ZW1wb3JhbF9tbHRybmc0IFNFVCB2YWxpZF9h dCA9ICd7W2EsaCl9JzsgLS0gb2theQorVVBEQVRFIHRlbXBvcmFsX21sdHJuZzQgU0VUIHZhbGlk X2F0ID0gJ3tbZixnKX0nOyAtLSB2aW9sYXRlcyByZWZlcmVuY2UKK0RST1AgVEFCTEUgdGVtcG9y YWxfbWx0cm5nZms7CisKKy0tIG5vbi1kb21haW4gcmVmZXJlbmNlcyBkb21haW46CitVUERBVEUg dGVtcG9yYWxfbWx0cm5nNCBTRVQgdmFsaWRfYXQgPSAne1thLGcpfSc7IC0tIHJlc2V0CitDUkVB VEUgVEFCTEUgdGVtcG9yYWxfbWx0cm5nZmsgKAorICBwYXJlbnRfaWQgaW50NHJhbmdlLAorICBp ZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRleHRtdWx0aXJhbmdlMiwKKyAgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9tbHRybmdma19maworICAgIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKyAgICBSRUZFUkVOQ0VTIHRlbXBvcmFsX21sdHJuZzQKKyk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9tbHRybmdmayBWQUxVRVMgKCdbMSwyKScsICdbMiwzKScsICd7W2QsZSl9Jyk7 CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nNCBTRVQgdmFsaWRfYXQgPSAne1tjLGQpfSc7IC0tIHZp b2xhdGVzIGRvbWFpbgorVVBEQVRFIHRlbXBvcmFsX21sdHJuZzQgU0VUIHZhbGlkX2F0ID0gJ3tb YSxoKX0nOyAtLSBva2F5CitVUERBVEUgdGVtcG9yYWxfbWx0cm5nNCBTRVQgdmFsaWRfYXQgPSAn e1tmLGcpfSc7IC0tIHZpb2xhdGVzIHJlZmVyZW5jZQorRFJPUCBUQUJMRSB0ZW1wb3JhbF9tbHRy bmdmazsKKworLS0gZG9tYWluIHJlZmVyZW5jZXMgbm9uLWRvbWFpbjoKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9tbHRybmczICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0ZXh0bXVsdGly YW5nZTIKKyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmczIFZBTFVFUyAoJ1sxLDIpJywg J3tbYSxnKX0nKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9tbHRybmdmayAoCisgIGlkIGludDRy YW5nZSwKKyAgcGFyZW50X2lkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQgdGV4dG11bHRpcmFuZ2Uy X2QsCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfbWx0cm5nZmtfZmsKKyAgICBGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisgICAgUkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRy bmc0CispOworSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nZmsgVkFMVUVTICgnWzEsMiknLCAn WzEsMiknLCAne1tkLGUpfScpOworVVBEQVRFIHRlbXBvcmFsX21sdHJuZzQgU0VUIHZhbGlkX2F0 ID0gJ3tbYyxkKX0nOyAtLSB2aW9sYXRlcyBkb21haW4KK1VQREFURSB0ZW1wb3JhbF9tbHRybmc0 IFNFVCB2YWxpZF9hdCA9ICd7W2EsaCl9JzsgLS0gb2theQorVVBEQVRFIHRlbXBvcmFsX21sdHJu ZzQgU0VUIHZhbGlkX2F0ID0gJ3tbZixnKX0nOyAtLSB2aW9sYXRlcyByZWZlcmVuY2UKK0RST1Ag VEFCTEUgdGVtcG9yYWxfbWx0cm5nMywgdGVtcG9yYWxfbWx0cm5nZms7CisKK0RST1AgVEFCTEUg dGVtcG9yYWxfbWx0cm5nNCwgdGVtcG9yYWxfcm5nNDsKIAogLS0gUEsgd2l0aCBvbmUgY29sdW1u IHBsdXMgYSBtdWx0aXJhbmdlOgogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX21sdHJuZyAoCkBAIC0x NzAsNyArMzE2LDYgQEAgU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkg RlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGUKIERST1AgVEFCTEUgdGVtcG9y YWxfcm5nMzsKIAogLS0gVU5JUVVFIHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZToKLUNSRUFURSBU WVBFIHRleHRyYW5nZTIgQVMgcmFuZ2UgKHN1YnR5cGU9dGV4dCwgY29sbGF0aW9uPSJDIik7CiBD UkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCiAgIGlkIGludDRyYW5nZSwKICAgdmFsaWRfYXQg dGV4dHJhbmdlMiwKQEAgLTE3OCw2ICszMjMsOSBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5n MyAoCiApOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nMyBEUk9QIENPTlNUUkFJTlQgdGVtcG9y YWxfcm5nM191cTsKIERST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKK0RST1AgVFlQRSBpbnQ0X2Rf cmFuZ2U7CitEUk9QIERPTUFJTiBpbnQ0cmFuZ2VfZCwgdGV4dHJhbmdlMl9kZCwgdGV4dHJhbmdl Ml9kLAorICAgICAgICAgICAgdGV4dG11bHRpcmFuZ2UyX2QsIGludDRtdWx0aXJhbmdlX2QsIGlu dDRfZDsKIERST1AgVFlQRSB0ZXh0cmFuZ2UyOwogCiAtLQotLSAKMi40NS4wCgo= --000000000000a8b9df064cae0fa5--