<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>80547</bug_id>
          
          <creation_ts>2012-03-07 15:13:02 -0800</creation_ts>
          <short_desc>IndexedDB: Creating a transaction from within a transaction callback should fail</short_desc>
          <delta_ts>2012-06-14 01:06:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>jsbell</cc>
    
    <cc>michaeln</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>573284</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-07 15:13:02 -0800</bug_when>
    <thetext>IndexedDB: Creating a transaction from within a transaction callback should fail</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573292</commentid>
    <comment_count>1</comment_count>
      <attachid>130709</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-07 15:16:29 -0800</bug_when>
    <thetext>Created attachment 130709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573303</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-07 15:30:27 -0800</bug_when>
    <thetext>Given that this is likely to break user code, I&apos;m not sure we should land this before the onupgradeneeded change. That said, we would like to support both setVersion() and onupgradeneeded, so maybe it&apos;s okay to land this first, with sufficient warning on the mailing lists.

And *that* said, I&apos;m not entirely sure this is correct. As written, the patch only applies to VERSION_CHANGE transactions, i.e. those created in response to setVersion() calls. It precludes calling IDBDatabase.transaction as long as the VERSION_CHANGE transaction is active on the IDBDatabase, regardless of whether it&apos;s within the IDBVersionChangeRequest&apos;s callback or a dependent IDBRequest&apos;s callback. The text in https://www.w3.org/Bugs/Public/show_bug.cgi?id=11401 only applies to the Sync API. 

I&apos;ll follow up on the mailing list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573311</commentid>
    <comment_count>3</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-07 15:40:38 -0800</bug_when>
    <thetext>Ah, the spec now says re: IDBDatabase.transaction()

&quot;This method must throw a DOMException of type InvalidStateError if called before the success event for a open call has been dispatched.&quot;

That applies to the newfangled approach:

req = indexedDB.open(name, version);
req.onupgradeneeded = function () {
   var db = req.result;
   // better not call db.transaction here
   var putreq = db.createObjectStore(...).put(...);
   putreq.onsuccess = function () {
     // better not call db.transaction here
   };
};
req.onsuccess = function () {
   var db = req.result;
   // you can finally call db.transaction now
};

The upshot being that you can&apos;t call db.transaction while a VERSION_CHANGE transaction is running. This matches the patch&apos;s behavior change in spirit, even though the API is radically different.

So I&apos;m okay with landing this, now or later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574222</commentid>
    <comment_count>4</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-08 14:37:15 -0800</bug_when>
    <thetext>LGTM

(I looked through this last night but forgot to LGTM it.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580711</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-16 11:23:45 -0700</bug_when>
    <thetext>tony@, r?

Opinions on landing this now? I&apos;m still torn between inflicting pain now vs. later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580757</commentid>
    <comment_count>6</comment_count>
      <attachid>132339</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-16 11:58:59 -0700</bug_when>
    <thetext>Created attachment 132339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580758</commentid>
    <comment_count>7</comment_count>
      <attachid>132339</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-16 12:00:14 -0700</bug_when>
    <thetext>Comment on attachment 132339
Patch

FYI, latest patch is just a rebase/merge against the recent test refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580813</commentid>
    <comment_count>8</comment_count>
      <attachid>132339</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-16 12:37:33 -0700</bug_when>
    <thetext>Comment on attachment 132339
Patch

The code looks fine.  I defer to your judgement about whether to land now or after onupgradeneeded is supported.  If there aren&apos;t that many clients, it might be OK to land this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584735</commentid>
    <comment_count>9</comment_count>
      <attachid>133135</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-21 16:05:32 -0700</bug_when>
    <thetext>Created attachment 133135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584740</commentid>
    <comment_count>10</comment_count>
      <attachid>133135</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-21 16:09:04 -0700</bug_when>
    <thetext>Comment on attachment 133135
Patch

Just a rebase on top of r111225 which took care of the test updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596070</commentid>
    <comment_count>11</comment_count>
      <attachid>135709</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-04 16:22:13 -0700</bug_when>
    <thetext>Created attachment 135709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596892</commentid>
    <comment_count>12</comment_count>
      <attachid>135709</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-04-05 14:00:23 -0700</bug_when>
    <thetext>Comment on attachment 135709
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604898</commentid>
    <comment_count>13</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-18 11:04:42 -0700</bug_when>
    <thetext>Handing this off to dgrogan@ - let&apos;s land it at the same time as onupgradeneeded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643915</commentid>
    <comment_count>14</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-07 14:27:30 -0700</bug_when>
    <thetext>Alec&apos;s going to take ownership of this w/ the error cleanup he&apos;s doing, and probably slip this in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648365</commentid>
    <comment_count>15</comment_count>
      <attachid>147390</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-13 12:32:53 -0700</bug_when>
    <thetext>Created attachment 147390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648402</commentid>
    <comment_count>16</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-13 13:23:52 -0700</bug_when>
    <thetext>jsbell@ / dgrogan@ - mind taking a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648431</commentid>
    <comment_count>17</comment_count>
      <attachid>147390</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-13 13:51:31 -0700</bug_when>
    <thetext>Comment on attachment 147390
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=147390&amp;action=review

overall lgtm

&gt; Source/WebCore/Modules/indexeddb/IDBTransaction.cpp:86
&gt; +    , m_mode(mode)

Add ASSERT in constructor that m_mode == m_backend-&gt;mode() ?

&gt; LayoutTests/storage/indexeddb/mozilla/resources/remove-objectstore.js:-47
&gt; -            if (++addedCount == 100) {

Remove other uses of addedCount in this file (and -expected.txt)

&gt; LayoutTests/storage/indexeddb/resources/database-basics.js:32
&gt; +

Nit: remove blank line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648544</commentid>
    <comment_count>18</comment_count>
      <attachid>147435</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-13 15:57:46 -0700</bug_when>
    <thetext>Created attachment 147435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648545</commentid>
    <comment_count>19</comment_count>
      <attachid>147435</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-13 15:58:34 -0700</bug_when>
    <thetext>Comment on attachment 147435
Patch

jsbell&apos;s issues addressed.

tony@ - r? cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648548</commentid>
    <comment_count>20</comment_count>
      <attachid>147436</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-13 15:59:46 -0700</bug_when>
    <thetext>Created attachment 147436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648550</commentid>
    <comment_count>21</comment_count>
      <attachid>147436</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-13 16:00:08 -0700</bug_when>
    <thetext>Comment on attachment 147436
Patch

ooops, forgot to update expectations.

new patch, tony@ - r? cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648916</commentid>
    <comment_count>22</comment_count>
      <attachid>147436</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-14 01:06:22 -0700</bug_when>
    <thetext>Comment on attachment 147436
Patch

Clearing flags on attachment: 147436

Committed r120295: &lt;http://trac.webkit.org/changeset/120295&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648917</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-14 01:06:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130709</attachid>
            <date>2012-03-07 15:16:29 -0800</date>
            <delta_ts>2012-03-16 11:58:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80547-20120307151628.patch</filename>
            <type>text/plain</type>
            <size>18753</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZkN2U1NjU4ZTIyYWZj
NmUxMjc1ZjlkNzk2ZTUxNTk0NjcyNGMwNy4uOGQ2YWM5ODZlYzhmZGMwMjQ2YTkzY2I2ZWQyM2E3
NjI1NWZkYmJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAzLTA3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDcmVh
dGluZyBhIHRyYW5zYWN0aW9uIGZyb20gd2l0aGluIGEgdHJhbnNhY3Rpb24gY2FsbGJhY2sgc2hv
dWxkIGZhaWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgwNTQ3CisKKyAgICAgICAgVGhlIHNwZWMgcHJlY2x1ZGVzIGNyZWF0aW5nIGEgdHJhbnNhY3Rp
b24gd2l0aGluIGFub3RoZXIgdHJhbnNhY3Rpb24ncyBjYWxsYmFjazsKKyAgICAgICAgd2l0aCB0
aGUgYXN5bmMgQVBJLCB0aGlzIGFwcGVhcnMgdG8gb25seSBhcHBseSB0byB0aGUgY2FsbGJhY2sg
b2YgYSB2ZXJzaW9uIGNoYW5nZQorICAgICAgICB0cmFuc2FjdGlvbi4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRk
Yi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRy
YW5zYWN0aW9uKToKKwogMjAxMi0wMy0wNyAgQXJ1biBQYXRvbGUgIDxibWY4MzRAbW90b3JvbGEu
Y29tPgogCiAgICAgICAgIEhUTUxUcmFja0VsZW1lbnQuaWRsIGRvZXNuJ3QgaGF2ZSBkZWZhdWx0
IGF0dHJpYnV0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlLmNwcAppbmRleCBjYzUzYTg4MmFmMzNkOTk0OTg1ZWUyZjNlY2QxY2UxZmQ2MDJjMTky
Li45YmJhYzkzYjIzYjMxOTAxMjA4OWNkOTU1ZjI4Y2FhZjcwM2FiZmEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0xNTIsNiAr
MTUyLDExIEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2Fj
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAorICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikgeworICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKwogICAgIGlmIChtb2RlICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRFICYm
IG1vZGUgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSkgewogICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpOT05fVFJBTlNJRU5UX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggZjMyMzMxMmY3NDhlMjgyYzAwZjQ3MGVlNzJlYzY2YWZkY2ZjNzA3ZS4uNGQ2YzE5YzBi
MmM4ZWJlODk3MTU3YjViMmY0OTdhZjUzYTI2NjVmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisy
MDEyLTAzLTA3ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
SW5kZXhlZERCOiBDcmVhdGluZyBhIHRyYW5zYWN0aW9uIGZyb20gd2l0aGluIGEgdHJhbnNhY3Rp
b24gY2FsbGJhY2sgc2hvdWxkIGZhaWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgwNTQ3CisKKyAgICAgICAgVXBkYXRlZCB0ZXN0cyB0aGF0IHZpb2xh
dGUgdGhlIHNwZWMgcmVzdHJpY3Rpb24uIFRoZXkgbmVlZCB0byBkZWZlciBjcmVhdGlvbgorICAg
ICAgICBvZiBsYXRlciB0cmFuc2FjdGlvbnMgdW50aWwgdGhlICJjb21wbGV0ZSIgZXZlbnQgb2Yg
dGhlIHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1y
ZW1vdmUtb2JqZWN0LXN0b3JlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Jl
YXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvYXV0b2luY3JlbWVudC1pbmRleGVzLmh0bWw6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9jbGVhci5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvaW5kZXhlcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvcmVhZG9ubHktdHJhbnNhY3Rpb25zLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZWFkd3JpdGUtdHJhbnNhY3Rpb25zLmh0bWw6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY2xlYXIuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLWNy
b3NzLWZyYW1lLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
YWJvcnQtd2l0aC1qcy1yZWN1cnNpb24uaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3R3by12ZXJzaW9uLWNoYW5nZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sOgorCiAyMDEyLTAz
LTA3ICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gTWFya2luZyBmaWxlLXdyaXRlci1ldmVudHMuaHRtbCBhcyBmbGFreS1jcmFz
aGluZyBvbiBXaW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
cmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9yZS5odG1sCmluZGV4IDMyYmFl
MWQzMTE2ZWU5NDM0YzM3YzdhZWQzOGMzMDMxNzJkNGYzNTUuLmRiNDEwNmJiNDFkOWFhODlmZDkx
ODZmMzUxYzRkZGIwOWNhYzVmM2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9yZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9yZS5odG1s
CkBAIC00NCw3ICs0NCwxMSBAQCBmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKIAogICAgIG9zID0g
ZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIik7CiAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwgIndlYmtpdElEQkRh
dGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisgICAgZXZlbnQudGFyZ2V0LnJlc3Vs
dC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQogCitmdW5jdGlvbiBzZXRWZXJz
aW9uQ29tcGxldGUoKQorewogICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihbJ3RtcCddKSIpOwogICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmpl
Y3RTdG9yZSgndG1wJykuZ2V0KDApIik7CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0cnlPbmNl
TW9yZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1v
YmplY3Qtc3RvcmUtb3B0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWwKaW5kZXggN2E4YWZmNGY1NTJkNzA4ZTdl
NmNmNGQ0MTE1YmQ3OWM0MmMzNDQ0Mi4uZDRlNmRhMDhjMmNkNmI4YTdiYzI0YTUwN2VhY2VjOGJh
MmQ1NjMxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRl
LW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWwKQEAgLTQwLDcgKzQwLDExIEBA
IGZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQogCiAgICAgZGVidWcoImRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdjJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsiKTsKICAgICBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnYycsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7CisgICAgZXZlbnQudGFyZ2V0LnJlc3Vs
dC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQogCitmdW5jdGlvbiBzZXRWZXJz
aW9uQ29tcGxldGUoKQorewogICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihbJ2EnLCAnYiddLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwog
ICAgIHNob3VsZEJlKCJ0cmFucy5tb2RlIiwgIndlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJ
VEUiKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9y
eS1kZWxldGVkYXRhYmFzZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFj
dG9yeS1kZWxldGVkYXRhYmFzZS5odG1sCmluZGV4IDViNzk5NTdhNWRhOTVlNmUwMjQ0OTFjOTNh
ZjFlYjQ3Y2ZiYTQwMjIuLjRkMGMzZThjMjIyNGEwODQ0NWU0Yjg1MjdlOTQzODE0YzY4M2Y1OWEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktZGVsZXRl
ZGF0YWJhc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5
LWRlbGV0ZWRhdGFiYXNlLmh0bWwKQEAgLTM5LDggKzM5LDggQEAgZnVuY3Rpb24gZGVsZXRlRXhp
c3RpbmcoKQogICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5k
ZXhOYW1lJykiKTsKIAogICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVl
JywgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRWYWx1ZTsKICAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBs
ZXRlID0gZ2V0VmFsdWU7CiB9CiAKIGZ1bmN0aW9uIGdldFZhbHVlKCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYXV0b2luY3JlbWVudC1pbmRleGVz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2F1dG9pbmNyZW1l
bnQtaW5kZXhlcy5odG1sCmluZGV4IDJmYjkxZGE2ODJmNzQ4MzYxMWIyMWU0MTQxZTI1MWUxNWNm
Mjg2NWYuLjcyMzhiMTIyYjYzMjdhYTU4OWUwYTEzODliNzI2NTE5ODgwNWJhZDggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYXV0b2luY3JlbWVudC1p
bmRleGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9h
dXRvaW5jcmVtZW50LWluZGV4ZXMuaHRtbApAQCAtNDQsNiArNDQsNyBAQCBmdW5jdGlvbiBvcGVu
U3VjY2VzcygpCiAKIGZ1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmUoKQogeworICAgIHRyYW5zID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogCiAg
ICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7
CkBAIC02MCw3ICs2MSwxMSBAQCBmdW5jdGlvbiBzZXR1cEluZGV4ZXMoKQogewogICAgIGtleSA9
IGV2YWxBbmRMb2coImtleSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CiAgICAgc2hvdWxkQmVG
YWxzZSgia2V5ID09IG51bGwiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNv
bXBsZXRlOworfQogCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQorewogICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbignZm9vJyku
b2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwogICAgIGZpcnN0ID0gZXZhbEFuZExvZygiZmlyc3QgPSBv
YmplY3RTdG9yZS5pbmRleCgnZmlyc3QnKTsiKTsKICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGZpcnN0LmdldCgnZm9vJyk7Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwKaW5kZXggMTg1MTY5Y2YyNDBiMzExZWQwYWNm
ZjVlOGQwYTg5ODE1ZjhhNGM2YS4uNGI1NDg1ODBkMTMxODRkNGUyN2E0YTc0MTM3YjI3M2JlMDhi
MGIzNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9j
bGVhci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xl
YXIuaHRtbApAQCAtNTAsOCArNTAsOCBAQCBmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKIAogICAg
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnZm9vJywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwogICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9KTsiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNsZWFyOwogICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IGNsZWFyOwog
fQogCiBmdW5jdGlvbiBjbGVhcigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2luZGV4ZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvaW5kZXhlcy5odG1sCmluZGV4IDUwMjEzYjM0MTU1ODUxMjU3NzdiZGE4NzU4
OTUwM2FhMjMxNmQ1NjEuLjQ4Mjg5MmVjNTY5N2UyZjQzYzI1OGVlMjI4YzU5NmQzODNmMGJlMjMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXhl
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXhl
cy5odG1sCkBAIC05Niw2ICs5Niw3IEBAIGZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKIGZ1bmN0aW9u
IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQogewogICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisgICAgdHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0OwogCiAgICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9i
amVjdFN0b3JlTmFtZSk7Iik7CiAKQEAgLTExOSw3ICsxMjAsMTEgQEAgZnVuY3Rpb24gY3JlYXRl
SW5kZXhlcygpCiAgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRl
eERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25z
KTsiKTsKICAgICB9CiAgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3Ro
IiwgImluZGV4RGF0YS5sZW5ndGgiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lv
bkNvbXBsZXRlOworfQogCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQorewogICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmpl
Y3RTdG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CiAKICAgICAvLyBD
aGVjayBnbG9iYWwgcHJvcGVydGllcyB0byBtYWtlIHN1cmUgdGhleSBhcmUgY29ycmVjdC4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZG9ubHkt
dHJhbnNhY3Rpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5odG1sCmluZGV4IDA2MmI3MjhhNzlhODc3YWQyMDc3MTc3
NDQ0YmNjNjc0ZjU1MjQ2MzYuLmNkZmM3YTZjMTBjOWRjMWM5MGQ1NWMwNmJlY2VlODcyMTJkNjIx
MDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVh
ZG9ubHktdHJhbnNhY3Rpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9yZWFkb25seS10cmFuc2FjdGlvbnMuaHRtbApAQCAtNDgsNiArNDgsMTEgQEAg
ZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCiAKICAgICBvc05hbWUgPSAidGVzdCBzdG9yZSI7CiAg
ICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKG9zTmFtZSwgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworICAgIGV2ZW50LnRh
cmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rp
b24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJk
Yi50cmFuc2FjdGlvbihbb3NOYW1lXSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7CiAgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24ob3NOYW1lKS5vYmplY3RTdG9yZShvc05hbWUpLmFkZCh7
fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKICAgICBrZXkxID0g
ZXZhbEFuZExvZygia2V5MSA9IDE7Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR3cml0ZS10cmFuc2FjdGlvbnMuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHdyaXRlLXRyYW5zYWN0aW9ucy5odG1s
CmluZGV4IGVjYjEzNmQ1YjlhN2JkNTE3NjU2YzE5YzBiYmE0NTlmZjJmZWFhMTMuLjBlOGU0NThh
OGI4MjA0MzhlZjFmMmUxMjdiYWVjMDY0ODc1NDk4N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHdyaXRlLXRyYW5zYWN0aW9ucy5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHdyaXRlLXRyYW5z
YWN0aW9ucy5odG1sCkBAIC01MCw2ICs1MCwxMSBAQCBmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkK
IAogICAgIG9zTmFtZSA9ICJ0ZXN0IHN0b3JlIjsKICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob3NOYW1lLCB7IGF1dG9JbmNy
ZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0g
c2V0VmVyc2lvbkNvbXBsZXRlOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQor
ewogICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oW29z
TmFtZV0sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKG9zTmFtZSkuYWRk
KHt9KTsiKTsKICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7CiAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jbGVhci5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY2xlYXIuaHRtbAppbmRleCA5ZjU1ZTcxNzY3
MmY4NWI4ZTcyMzlmN2MxMTE3ZTdmYWVlN2ZkNTU2Li4xOTRjOGQzZWVlZjYyMjFiYzE4YzQxM2Ey
YjI2YTExOGU5MGY5YzZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vYmplY3RzdG9yZS1jbGVhci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29iamVjdHN0b3JlLWNsZWFyLmh0bWwKQEAgLTg0LDcgKzg0LDExIEBAIGZ1bmN0aW9uIG9w
ZW5LZXlDdXJzb3JTdWNjZXNzKCkKIHsKICAgICBkZWJ1Zygib3BlbktleUN1cnNvclN1Y2Nlc3Mo
KToiKTsKICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICB0cmFu
cy5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQogCitmdW5jdGlvbiBzZXRWZXJz
aW9uQ29tcGxldGUoKQorewogICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNh
Y3Rpb24oWydvdGhlclN0b3JlTmFtZSddKSIpOwogICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKICAgICB2YXIgb3RoZXJTdG9yZSA9IGV2YWxBbmRMb2co
Im90aGVyU3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnb3RoZXJTdG9yZU5hbWUnKSIp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUt
cmVtb3Zlb2JqZWN0c3RvcmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLmh0bWwKaW5kZXggYTZkNjkyZWNiMDdmZWRjOTU2
YTczYTI1OWU4NzEyNTVkNTZmMGZkZS4uZTI4NTEwYjgwNWI1MjI5NjVmNGJjNmZlNDlkNGNhMjcw
NzAzZjAwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0
c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5odG1sCkBAIC00MSw4ICs0MSw4
IEBAIGZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKICAgICBzaG91bGRCZVRydWUoInN0b3JlLmlu
ZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIik7CiAKICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygic3RvcmUuYWRkKCd2YWx1ZScsICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZ2V0VmFsdWU7CiAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGdldFZhbHVlOwogfQogCiBmdW5jdGlvbiBnZXRW
YWx1ZSgpCkBAIC03OCw3ICs3OCw3IEBAIGZ1bmN0aW9uIGRlbGV0ZU9iamVjdFN0b3JlKCkKIGZ1
bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlQWdhaW4oKQogewogICAgIGV2YWxBbmRMb2coImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotICAgIGdldFZhbHVlQWdhaW4o
KTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gZ2V0VmFsdWVBZ2FpbjsKIH0KIAogZnVuY3Rpb24g
Z2V0VmFsdWVBZ2FpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1y
ZWN1cnNpb24tY3Jvc3MtZnJhbWUuaHRtbAppbmRleCBiMjc4NTY1YzRiMTJmMjNlMTFmODU0OWUw
YzBhOTZlY2M4MDk1YThmLi5lYWZjZTVmNmYxMDk2ZDE1ODRkMDY2NmE5ODM2M2MxNjEzYjFlYzA1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1h
Ym9ydC13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLWNy
b3NzLWZyYW1lLmh0bWwKQEAgLTMzLDEyICszMywxNiBAQCBmdW5jdGlvbiBzZXR1cCgpIHsKIGZ1
bmN0aW9uIHNldFZlcnNpb24oKSB7CiAgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xpY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKIH0KIAotZnVuY3Rpb24gY2xpY2soKSB7CitmdW5j
dGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpIHsKICAgICBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdvYmplY3RTdG9yZScsIG51bGwpOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21w
bGV0ZSA9IGNsaWNrOworfQorCitmdW5jdGlvbiBjbGljaygpIHsKICAgICBib2R5Lm9uY2xpY2sg
PSB0ZXN0OwogICAgIHZhciBwZW5kaW5nVHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJwZW5kaW5n
VHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sIHdlYmtpdElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CiAgICAgcGVuZGluZ1RyYW5zYWN0aW9uLm9uc3VjY2Vz
cyA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24uaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMt
cmVjdXJzaW9uLmh0bWwKaW5kZXggMDAxYjUzNzAzY2M2NzZhMjFhNDA1MDQ5NDA1MWVhMjE4ZDFh
YTFhYy4uZWE2NjY5YzM1ZDkyMDI5OTcyNTQ1ODUzOWE3NzgzZDJmN2E1NjhmZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1q
cy1yZWN1cnNpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi5odG1sCkBAIC0yOSwxMiArMjksMTggQEAg
ZnVuY3Rpb24gc2V0dXAoKSB7CiBmdW5jdGlvbiBzZXRWZXJzaW9uKCkgew0KICAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOw0KICAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOw0KLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNsaWNrOw0KKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNj
ZXNzOw0KICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCiB9
DQogDQotZnVuY3Rpb24gY2xpY2soKSB7DQorZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQ0K
K3sNCiAgICAgc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnb2JqZWN0U3RvcmUnLCBudWxs
KTsNCisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gY2xpY2s7DQorfQ0KKw0K
K2Z1bmN0aW9uIGNsaWNrKCkgDQorew0KICAgICBib2R5Lm9uY2xpY2sgPSB0ZXN0Ow0KICAgICB2
YXIgcGVuZGluZ1RyYW5zYWN0aW9uID0gZXZhbEFuZExvZygicGVuZGluZ1RyYW5zYWN0aW9uID0g
ZGIudHJhbnNhY3Rpb24oWydvYmplY3RTdG9yZSddLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFKSIpOw0KICAgICBwZW5kaW5nVHJhbnNhY3Rpb24ub25zdWNjZXNzID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNyYXNoLW9uLWFib3J0Lmh0bWwKaW5kZXggODBjMmQxM2Y3
YWNlNmJiNzZiN2U3NDRkYjJhMmMzNTNjNzU3YmVhYi4uNTFiYWNmZGQ2NmNiYjIyYTg5MzVkN2Y3
N2M2ZDZhM2FlNzQ3ODJiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5odG1sCkBAIC0zNCw2ICsz
NCwxMSBAQCBmdW5jdGlvbiBvcGVuU3VjY2VzcygpCiBmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2Vz
cygpCiB7CiAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpIik7Cisg
ICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOwor
fQorCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQorewogICAgIGV2YWxBbmRMb2coImRi
LnRyYW5zYWN0aW9uKCdmb28nKSIpOwogICAgIGV2YWxBbmRMb2coIndpbmRvdy5nYygpIik7CiAg
ICAgZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHdv
LXZlcnNpb24tY2hhbmdlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHdv
LXZlcnNpb24tY2hhbmdlcy5odG1sCmluZGV4IGRjMDM5NWQyNGRkNzc0ZmUxOGQ3ZTk1ZDgzODdj
NmNhMTUyMTY1MWMuLmZkMDQ1MGUxMzcwOTM0ODg2ZjNmMmFkYzhkOWVlNDQ2MWU3MjM0MzIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3R3by12ZXJzaW9uLWNoYW5n
ZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90d28tdmVyc2lvbi1j
aGFuZ2VzLmh0bWwKQEAgLTQ5LDYgKzQ5LDcgQEAgZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQogZnVu
Y3Rpb24gaW5TZXRWZXJzaW9uMSgpCiB7CiAgICAgZGVidWcoInNldFZlcnNpb24oKSAjMSBjYWxs
YmFjayIpOworICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICBldmFsQW5kTG9n
KCJ3aW5kb3cuc3RvcmUxID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUxJykiKTsK
ICAgICBzaG91bGRCZSgiKyt3aW5kb3cuc3RhdGUiLCAiMSIpOwogICAgIHZhciByZXEgPSBldmFs
QW5kTG9nKCJ3aW5kb3cuc3RvcmUxLnB1dCgnYWFhJywgMTExKSIpOwpAQCAtNjIsNiArNjMsNyBA
QCBmdW5jdGlvbiBpblNldFZlcnNpb24xKCkKIGZ1bmN0aW9uIGluU2V0VmVyc2lvbjIoKQogewog
ICAgIGRlYnVnKCJzZXRWZXJzaW9uKCkgIzIgY2FsbGJhY2siKTsKKyAgICB0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7CiAgICAgc2hvdWxkQmUoIisrd2luZG93LnN0YXRlIiwgIjQiKTsKICAg
ICBldmFsQW5kTG9nKCJ3aW5kb3cuc3RvcmUyID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qt
c3RvcmUyJykiKTsKIApAQCAtODgsNiArOTAsMTEgQEAgZnVuY3Rpb24gaGFsZndheURvbmUoKQog
CiBmdW5jdGlvbiBjaGVja1Jlc3VsdHMoKSB7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3
aW5kb3cuZGIudmVyc2lvbiIsICJ2ZXJzaW9uIDIiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0g
c2V0VmVyc2lvbkNvbXBsZXRlOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQor
ewogICAgIHRyYW5zID0gZXZhbEFuZExvZygid2luZG93LnRyYW5zID0gZGIudHJhbnNhY3Rpb24o
Wyd0ZXN0LXN0b3JlMScsICd0ZXN0LXN0b3JlMiddKSIpOwogICAgIHN0b3JlID0gZXZhbEFuZExv
Zygid2luZG93LnN0b3JlID0gd2luZG93LnRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlMScp
Iik7CiAgICAgcmVxID0gZXZhbEFuZExvZygid2luZG93LnJlcSA9IHdpbmRvdy5zdG9yZS5nZXQo
MTExKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lv
bi1jaGFuZ2UtZXhjbHVzaXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS1leHBlY3RlZC50eHQKaW5kZXggMzg5ZTY3
YjZmOTBlYjBkMjE2MTFlN2FlZmJmYjFkMWY1MDg3NDNlZi4uNTdmOWY1NDNhMzg3M2NhOWI0ODM1
Y2FhNTI4NDQxMWQ4OTYwYzc4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUtZXhwZWN0ZWQu
dHh0CkBAIC01LDYgKzUsOCBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBpbmRleGVkREIg
PSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1v
ekluZGV4ZWREQjsKIFBBU1MgaW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK0lEQkRhdGFiYXNl
RXhjZXB0aW9uID0gd2luZG93LklEQkRhdGFiYXNlRXhjZXB0aW9uIHx8IHdpbmRvdy53ZWJraXRJ
REJEYXRhYmFzZUV4Y2VwdGlvbjsKK1BBU1MgSURCRGF0YWJhc2VFeGNlcHRpb24gPT0gbnVsbCBp
cyBmYWxzZQogd2luZG93LnN0YXRlID0gJ3N0YXJ0aW5nJwogaW5kZXhlZERCLm9wZW4oJ3ZlcnNp
b24tY2hhbmdlLWV4Y2x1c2l2ZScpCiBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKQEAgLTE2LDYg
KzE4LDkgQEAgc2V0VmVyc2lvbigpIGNhbGxiYWNrCiBzdGFydGluZyB3b3JrIGluIFZFUlNJT05f
Q0hBTkdFIHRyYW5zYWN0aW9uCiB3aW5kb3cuc3RhdGUgPSAnVkVSU0lPTl9DSEFOR0Ugc3RhcnRl
ZCcKIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUnKQorRXhwZWN0aW5n
IGV4Y2VwdGlvbiBmcm9tIGRiLnRyYW5zYWN0aW9uKCd0ZXN0LXN0b3JlJykKK1BBU1MgRXhjZXB0
aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FM
TE9XRURfRVJSCiBzdG9yZS5wdXQoMCwgMCkKIGluIHB1dCdzIG9uc3VjY2Vzcwogc3RvcmUucHV0
KDEsIDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9u
LWNoYW5nZS1leGNsdXNpdmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Zl
cnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCmluZGV4IDgxNTg4MDZkZmRjZGQ2YTVlZDgzYjBh
NWMxYjdlMDI2MzJlOGZlZWMuLjlkY2Y5MDVjMWEwYjNmOGIxNmNhNWIwNjljYzhmOTNkNDc0ZTUx
MDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hh
bmdlLWV4Y2x1c2l2ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Zl
cnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCkBAIC0xNiw2ICsxNiw4IEBAIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCiBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGluZGV4ZWREQiA9
IGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtp
dEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOwogICAgIHNob3VsZEJlRmFsc2Uo
ImluZGV4ZWREQiA9PSBudWxsIik7CisgICAgSURCRGF0YWJhc2VFeGNlcHRpb24gPSBldmFsQW5k
TG9nKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9IHdpbmRvdy5JREJEYXRhYmFzZUV4Y2VwdGlvbiB8
fCB3aW5kb3cud2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb247Iik7CisgICAgc2hvdWxkQmVGYWxz
ZSgiSURCRGF0YWJhc2VFeGNlcHRpb24gPT0gbnVsbCIpOwogICAgIG9wZW5EQkNvbm5lY3Rpb24o
KTsKIH0KIApAQCAtNTEsNiArNTMsOSBAQCBmdW5jdGlvbiBpblNldFZlcnNpb24oKQogICAgIGV2
YWxBbmRMb2coIndpbmRvdy5zdGF0ZSA9ICdWRVJTSU9OX0NIQU5HRSBzdGFydGVkJyIpOwogCiAg
ICAgd2luZG93LnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgndGVzdC1zdG9yZScpIik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFu
c2FjdGlvbigndGVzdC1zdG9yZScpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VE
X0VSUiIpOworCiAgICAgd2luZG93LmNvdW50ID0gMDsKICAgICBkb19hc3luY19wdXRzKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132339</attachid>
            <date>2012-03-16 11:58:59 -0700</date>
            <delta_ts>2012-03-21 16:05:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80547-20120316115858.patch</filename>
            <type>text/plain</type>
            <size>17909</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwOTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWZiODQ0ZGUzZjIwNzU2
ODVlYzYyY2E5MDBiNTljN2YxMTRkZDg3MC4uZDJiMTJhMjQxOGIxYzRmYzJhYzU4NjQ1YjE1Nzgy
OWMzMzQzMDhhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAzLTE2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDcmVh
dGluZyBhIHRyYW5zYWN0aW9uIGZyb20gd2l0aGluIGEgdHJhbnNhY3Rpb24gY2FsbGJhY2sgc2hv
dWxkIGZhaWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgwNTQ3CisKKyAgICAgICAgVGhlIHNwZWMgcHJlY2x1ZGVzIGNyZWF0aW5nIGEgdHJhbnNhY3Rp
b24gd2l0aGluIGFub3RoZXIgdHJhbnNhY3Rpb24ncyBjYWxsYmFjazsKKyAgICAgICAgd2l0aCB0
aGUgYXN5bmMgQVBJLCB0aGlzIGFwcGVhcnMgdG8gb25seSBhcHBseSB0byB0aGUgY2FsbGJhY2sg
b2YgYSB2ZXJzaW9uIGNoYW5nZQorICAgICAgICB0cmFuc2FjdGlvbi4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRk
Yi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRy
YW5zYWN0aW9uKToKKwogMjAxMi0wMy0xNSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1vdmUgb3ZlcmRyYXcgbWV0cmljcyBpbnRvIGEg
dGVtcGxhdGVkIGNsYXNzIGZvciBib3RoIHBhaW50IGFuZCBkcmF3IG1ldHJpY3MuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggY2E2
NTkwN2ZiMzkxMjQ3ZWE2MTE0NWEzMjJmMDg5YWM0ZDhiZjk1My4uNzI4NjQ4MTQyYmU4ZThjMTBm
MGI1YmY2ODdmOTNhYzUxYjcxNWJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMTUyLDYgKzE1MiwxMSBAQCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBpZiAobV92ZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24pIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6Tk9UX0FMTE9XRURfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAo
bW9kZSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURSAmJiBtb2RlICE9IElEQlRyYW5zYWN0
aW9uOjpSRUFEX09OTFkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9O
X1RSQU5TSUVOVF9FUlI7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJlNWUwMDFlZDU5YmMw
MzgwYTg2YzBmMmQ4NjQ3NDQxMWQ3ODlkYTAuLmE2NjRhMjEyOWNlNmU0ZWI4N2I1OWIzNzhmZjg1
ZDk2MmVjOWRhNjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wMy0xNiAgSm9zaHVhIEJl
bGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ3JlYXRpbmcg
YSB0cmFuc2FjdGlvbiBmcm9tIHdpdGhpbiBhIHRyYW5zYWN0aW9uIGNhbGxiYWNrIHNob3VsZCBm
YWlsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDU0
NworCisgICAgICAgIFVwZGF0ZWQgdGVzdHMgdGhhdCB2aW9sYXRlIHRoZSBzcGVjIHJlc3RyaWN0
aW9uLiBUaGV5IG5lZWQgdG8gZGVmZXIgY3JlYXRpb24KKyAgICAgICAgb2YgbGF0ZXIgdHJhbnNh
Y3Rpb25zIHVudGlsIHRoZSAiY29tcGxldGUiIGV2ZW50IG9mIHRoZSB2ZXJzaW9uIGNoYW5nZSB0
cmFuc2FjdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9yZS5o
dG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0
aW9ucy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0
YWJhc2UuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2F1dG9pbmNy
ZW1lbnQtaW5kZXhlcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
Y2xlYXIuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4ZXMu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWRvbmx5LXRyYW5z
YWN0aW9ucy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHdy
aXRlLXRyYW5zYWN0aW9ucy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLWNsZWFyLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3Rv
cmUtcmVtb3Zlb2JqZWN0c3RvcmUuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJz
aW9uLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gt
b24tYWJvcnQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90d28tdmVyc2lvbi1j
aGFuZ2VzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2Ut
ZXhjbHVzaXZlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi92ZXJz
aW9uLWNoYW5nZS1leGNsdXNpdmUuaHRtbDoKKwogMjAxMi0wMy0xNSAgTGV2aSBXZWludHJhdWIg
IDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuIEZp
eGluZyBDaHJvbWl1bSBleHBlY3RhdGlvbnMgYWZ0ZXIgd2UgYmVnYW4gZmFsbGluZyBiYWNrIHRv
IHRoZSBmYWlsaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
cmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9yZS5odG1sCmluZGV4IDU1NDAz
OWU4ZGQzY2QzZDdjYmY1YmU5ZDU5YzU2ZjRlZjY2OWFkODcuLjc5MDcwYWYxMDAwOWVjMjQxZjZm
MzczMDczMzU2NTliZThlZjA2YzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9yZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9yZS5odG1s
CkBAIC00Myw3ICs0MywxMSBAQCBmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKIAogICAgIG9zID0g
ZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIik7CiAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNv
bXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQogCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29t
cGxldGUoKQorewogICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ3RtcCddKSIpOwogICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9y
ZSgndG1wJykuZ2V0KDApIik7CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0cnlPbmNlTW9yZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1vYmplY3Qt
c3RvcmUtb3B0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRl
LW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWwKaW5kZXggYmY5NGQzNjZlMGEwMjE0ODI4ZjE0OGI3
Yjg2ZGE4Nzg1ZTVjMGI3Yy4uNDM0YTk2NDFhYmE5NGU1ZTA0ZDJiMmYxODhkMjRmOTc1YzgwZjFm
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLW9iamVj
dC1zdG9yZS1vcHRpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWwKQEAgLTM3LDcgKzM3LDExIEBAIGZ1bmN0
aW9uIGNsZWFuRGF0YWJhc2UoKQogCiAgICAgZGVidWcoImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdj
Jywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsiKTsKICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
YycsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7CisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNv
bXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQogCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29t
cGxldGUoKQorewogICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ2EnLCAnYiddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwogICAgIHNob3VsZEJl
KCJ0cmFucy5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVkYXRhYmFz
ZS5odG1sCmluZGV4IDQ3YjZhOWUzNTMyOWI2ODVjODdmYzk5ZWZkOTE2MzBiMzhhNTQ5YzQuLmE2
YzVhYjdiOTRmYWNkMWNlMWY1ZDc4ODZjODUwMWFjMWFjN2JiZWQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLmh0
bWwKQEAgLTM4LDggKzM4LDggQEAgZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQogICAgIHNob3Vs
ZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKIAogICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVlJywgJ2tleScpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRWYWx1ZTsKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gZ2V0VmFsdWU7CiB9
CiAKIGZ1bmN0aW9uIGdldFZhbHVlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvYXV0b2luY3JlbWVudC1pbmRleGVzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5odG1sCmlu
ZGV4IDM1ZmRmMDIzMDljOGRjZDBhMjFiYTEzMTFjYjE4ZDUyM2VkMGM2NjIuLmQ1YmQxZjRmZmFm
MTEwMGMyY2YzNTBlY2IzY2M1NzFkZTE0YmU5ZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYXV0b2luY3JlbWVudC1pbmRleGVzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hdXRvaW5jcmVtZW50LWluZGV4
ZXMuaHRtbApAQCAtMzksNiArMzksNyBAQCBmdW5jdGlvbiBvcGVuU3VjY2VzcygpCiAKIGZ1bmN0
aW9uIHNldHVwT2JqZWN0U3RvcmUoKQogeworICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsKICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogCiAgICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtl
eVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CkBAIC01NSw3ICs1NiwxMSBA
QCBmdW5jdGlvbiBzZXR1cEluZGV4ZXMoKQogewogICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CiAgICAgc2hvdWxkQmVGYWxzZSgia2V5ID09IG51bGwi
KTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQogCitmdW5j
dGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQorewogICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2Zvbycp
OyIpOwogICAgIGZpcnN0ID0gZXZhbEFuZExvZygiZmlyc3QgPSBvYmplY3RTdG9yZS5pbmRleCgn
Zmlyc3QnKTsiKTsKICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGZpcnN0Lmdl
dCgnZm9vJyk7Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2NsZWFyLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2NsZWFyLmh0bWwKaW5kZXggM2QyNzM4NjlkZWViZDQ0ZmQ4MDZiZDI3ODdlYTA5ZjkyNjYwNTAw
NC4uNTVlYjYxMGI1MmJjODc5NjA5MTMyZTQ4M2Y5NGI2NTk2NjdkNDBlMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jbGVhci5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXIuaHRtbApAQCAtNDMsOCAr
NDMsOCBAQCBmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKIAogICAgIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBhdXRv
SW5jcmVtZW50OiB0cnVlIH0pOyIpOwogICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKHt9KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFy
OwogICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGV2
ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IGNsZWFyOwogfQogCiBmdW5jdGlvbiBjbGVh
cigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2lu
ZGV4ZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXhl
cy5odG1sCmluZGV4IDgzZWQ4MzlmM2YzMWNjOTZiYWQxZWJjYjY0MGJmOGU5YmM3MDhhYzQuLmI1
OTJmOTk4NTBiMzE0OTNkZDdjOTg4NDA2YmFiNWYzYmRlOWFlZjAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXhlcy5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXhlcy5odG1sCkBAIC04NSw2ICs4
NSw3IEBAIGZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKIGZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRl
T2JqZWN0U3RvcmUoKQogewogICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgdHJh
bnMgPSBldmVudC50YXJnZXQucmVzdWx0OwogCiAgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7
CiAKQEAgLTEwOCw3ICsxMDksMTEgQEAgZnVuY3Rpb24gY3JlYXRlSW5kZXhlcygpCiAgICAgICBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5k
ZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsiKTsKICAgICB9CiAgICAg
c2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgImluZGV4RGF0YS5sZW5n
dGgiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQogCitm
dW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQorewogICAgIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVj
dFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CiAKICAgICAvLyBDaGVjayBnbG9iYWwgcHJvcGVy
dGllcyB0byBtYWtlIHN1cmUgdGhleSBhcmUgY29ycmVjdC4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZG9ubHktdHJhbnNhY3Rpb25zLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWRvbmx5LXRyYW5zYWN0
aW9ucy5odG1sCmluZGV4IGQzMTk0MjEyMjU3YzYwMWI1MWU0YTc3MDIwNTkyYzMyYzg1MjE4Yzgu
LmYwNzMwZGY0YTg1NTlhMWRmNDlmMWEwODI3NWM3ZmYyNTQ2MmNmOGEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZG9ubHktdHJhbnNhY3Rpb25z
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkb25s
eS10cmFuc2FjdGlvbnMuaHRtbApAQCAtNDMsNiArNDMsMTEgQEAgZnVuY3Rpb24gY2xlYW5EYXRh
YmFzZSgpCiAKICAgICBvc05hbWUgPSAidGVzdCBzdG9yZSI7CiAgICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9zTmFtZSwgeyBh
dXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21w
bGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBs
ZXRlKCkKK3sKICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbb3NO
YW1lXSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5SRUFEX09OTFlfRVJSIik7CiAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNh
Y3Rpb24ob3NOYW1lKS5vYmplY3RTdG9yZShvc05hbWUpLmFkZCh7fSk7IiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKICAgICBrZXkxID0gZXZhbEFuZExvZygia2V5MSA9
IDE7Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3JlYWR3cml0ZS10cmFuc2FjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVhZHdyaXRlLXRyYW5zYWN0aW9ucy5odG1sCmluZGV4IDI4MTMzNDI2YjU0
NzMxMzQ1ZjJhMGFkYmQ4ZjQwN2VmYjBlYmFkZGUuLmIxMzYzZDE2OGY5MDI2MDJjMWUxOTM1OWY5
N2NhMTNkYWE0NDAwYzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcmVhZHdyaXRlLXRyYW5zYWN0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHdyaXRlLXRyYW5zYWN0aW9ucy5odG1sCkBAIC00
Myw2ICs0MywxMSBAQCBmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKIAogICAgIG9zTmFtZSA9ICJ0
ZXN0IHN0b3JlIjsKICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUob3NOYW1lLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7
CisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRl
OworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQorewogICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oW29zTmFtZV0sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKG9zTmFtZSkuYWRkKHt9KTsiKTsKICAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7CiAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vYmplY3RzdG9yZS1jbGVhci5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtY2xlYXIuaHRtbAppbmRleCA5YzZlYzMyNDRkMjVjMjQ5NjI3MTE3MjNmMDBk
NzhmZjlhYTNmOGI1Li5kOWMzZjIyNGM0OWE4MjU4MGI1NmViMzNjMTQzN2NlMzQ5YzFiZDMzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jbGVh
ci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNs
ZWFyLmh0bWwKQEAgLTgzLDcgKzgzLDExIEBAIGZ1bmN0aW9uIG9wZW5LZXlDdXJzb3JTdWNjZXNz
KCkKIHsKICAgICBkZWJ1Zygib3BlbktleUN1cnNvclN1Y2Nlc3MoKToiKTsKICAgICBzaG91bGRC
ZU51bGwoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0
VmVyc2lvbkNvbXBsZXRlOworfQogCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQorewog
ICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydvdGhlclN0b3Jl
TmFtZSddKSIpOwogICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKICAgICB2YXIgb3RoZXJTdG9yZSA9IGV2YWxBbmRMb2coIm90aGVyU3RvcmUgPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZSgnb3RoZXJTdG9yZU5hbWUnKSIpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLXJlbW92ZW9i
amVjdHN0b3JlLmh0bWwKaW5kZXggZmIzMTZmZDJlMmM5ZjdmZDRhYTRiMzFmNmE4MjBjZjRhYmNj
MTRlNC4uNWZmZjY0Y2Y0MDJmMjExNjA3N2QwMjEzYTU0YjAzMDQyODZlOTU2NyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0
c3RvcmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9y
ZS1yZW1vdmVvYmplY3RzdG9yZS5odG1sCkBAIC00MCw4ICs0MCw4IEBAIGZ1bmN0aW9uIGRlbGV0
ZUV4aXN0aW5nKCkKICAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMo
J2luZGV4TmFtZScpIik7CiAKICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKCd2
YWx1ZScsICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0VmFsdWU7CiAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25j
b21wbGV0ZSA9IGdldFZhbHVlOwogfQogCiBmdW5jdGlvbiBnZXRWYWx1ZSgpCkBAIC03Nyw3ICs3
Nyw3IEBAIGZ1bmN0aW9uIGRlbGV0ZU9iamVjdFN0b3JlKCkKIGZ1bmN0aW9uIGNyZWF0ZU9iamVj
dFN0b3JlQWdhaW4oKQogewogICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnLCBudWxsKSIpOwotICAgIGdldFZhbHVlQWdhaW4oKTsKKyAgICB0cmFucy5vbmNv
bXBsZXRlID0gZ2V0VmFsdWVBZ2FpbjsKIH0KIAogZnVuY3Rpb24gZ2V0VmFsdWVBZ2FpbigpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9y
dC13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJh
bWUuaHRtbAppbmRleCAwNzlkMTJiODQ0ZWVjOWEwZGIxZDQxZmQyOGM4MzE5ZTc5NWQyZjg5Li4z
MjliNWY1NGM1OTQ1Mzc3NjliYTNhMjVmMjVhMjU2NWY1NmUyYjlkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vy
c2lvbi1jcm9zcy1mcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLmh0bWwKQEAg
LTI5LDEyICsyOSwxNiBAQCBmdW5jdGlvbiBzZXR1cCgpIHsKIGZ1bmN0aW9uIHNldFZlcnNpb24o
KSB7CiAgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKICAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xpY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
ZXRWZXJzaW9uU3VjY2VzczsKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKIH0KIAotZnVuY3Rpb24gY2xpY2soKSB7CitmdW5jdGlvbiBzZXRWZXJzaW9uU3Vj
Y2VzcygpIHsKICAgICBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScs
IG51bGwpOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IGNsaWNrOworfQor
CitmdW5jdGlvbiBjbGljaygpIHsKICAgICBib2R5Lm9uY2xpY2sgPSB0ZXN0OwogICAgIHZhciBw
ZW5kaW5nVHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJwZW5kaW5nVHJhbnNhY3Rpb24gPSBkYi50
cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7
CiAgICAgcGVuZGluZ1RyYW5zYWN0aW9uLm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLmh0bWwKaW5kZXggNzk4
ZTgyNzAzZjg2YzhiMDhmNmRlNDcxZTU2YzFmYzUwYTRmMmQ4Mi4uODRhYjcxMTkwOWRiZDUxOWI4
NGFjZTE4MDFlZDk2ZWU4ZmU1OTA2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24uaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJl
Y3Vyc2lvbi5odG1sCkBAIC0yNiwxMiArMjYsMTggQEAgZnVuY3Rpb24gc2V0dXAoKSB7CiBmdW5j
dGlvbiBzZXRWZXJzaW9uKCkgew0KICAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOw0KICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsaWNrOw0KKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOw0KICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCiB9DQogDQotZnVuY3Rpb24gY2xpY2soKSB7
DQorZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQ0KK3sNCiAgICAgc3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnb2JqZWN0U3RvcmUnLCBudWxsKTsNCisgICAgZXZlbnQudGFyZ2V0LnJl
c3VsdC5vbmNvbXBsZXRlID0gY2xpY2s7DQorfQ0KKw0KK2Z1bmN0aW9uIGNsaWNrKCkgDQorew0K
ICAgICBib2R5Lm9uY2xpY2sgPSB0ZXN0Ow0KICAgICB2YXIgcGVuZGluZ1RyYW5zYWN0aW9uID0g
ZXZhbEFuZExvZygicGVuZGluZ1RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydvYmplY3RT
dG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOw0KICAgICBwZW5kaW5nVHJhbnNh
Y3Rpb24ub25zdWNjZXNzID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNyYXNoLW9u
LWFib3J0Lmh0bWwKaW5kZXggMzk1MzM3OWQzNzI5YTAyZTgyNTgzNGUwOGQzZWZmOTA1MzQzMmRi
NC4uMGMzODZiYjBhYzM3NTJlN2M3Yzg5ZDVhNDBhOWJkYTg1MGIwZGNmZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jcmFz
aC1vbi1hYm9ydC5odG1sCkBAIC0zMSw2ICszMSwxMSBAQCBmdW5jdGlvbiBvcGVuU3VjY2Vzcygp
CiBmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCiB7CiAgICAgZXZhbEFuZExvZygiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ2ZvbycpIik7CisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBs
ZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxl
dGUoKQorewogICAgIGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKCdmb28nKSIpOwogICAgIGV2
YWxBbmRMb2coIndpbmRvdy5nYygpIik7CiAgICAgZmluaXNoSlNUZXN0KCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90d28tdmVyc2lvbi1jaGFuZ2VzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90d28tdmVyc2lvbi1jaGFuZ2VzLmh0bWwK
aW5kZXggZTgwZWFmZTBiYzhhMDY5MTRkMDVhNjY3MjM2YTZhNmFlNjNlZWI5My4uODgyOWJiZTNk
ODgyN2EyODZlMTE4M2RmYWM2MjA4N2U0NmRmYjhlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHdvLXZlcnNpb24tY2hhbmdlcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3R3by12ZXJzaW9uLWNoYW5nZXMuaHRtbApAQCAtNDYsNiAr
NDYsNyBAQCBmdW5jdGlvbiBvcGVuU3VjY2VzcygpCiBmdW5jdGlvbiBpblNldFZlcnNpb24xKCkK
IHsKICAgICBkZWJ1Zygic2V0VmVyc2lvbigpICMxIGNhbGxiYWNrIik7CisgICAgdHJhbnMgPSBl
dmVudC50YXJnZXQucmVzdWx0OwogICAgIGV2YWxBbmRMb2coIndpbmRvdy5zdG9yZTEgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgndGVzdC1zdG9yZTEnKSIpOwogICAgIHNob3VsZEJlKCIrK3dpbmRv
dy5zdGF0ZSIsICIxIik7CiAgICAgdmFyIHJlcSA9IGV2YWxBbmRMb2coIndpbmRvdy5zdG9yZTEu
cHV0KCdhYWEnLCAxMTEpIik7CkBAIC01OSw2ICs2MCw3IEBAIGZ1bmN0aW9uIGluU2V0VmVyc2lv
bjEoKQogZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpCiB7CiAgICAgZGVidWcoInNldFZlcnNpb24o
KSAjMiBjYWxsYmFjayIpOworICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICBz
aG91bGRCZSgiKyt3aW5kb3cuc3RhdGUiLCAiNCIpOwogICAgIGV2YWxBbmRMb2coIndpbmRvdy5z
dG9yZTIgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgndGVzdC1zdG9yZTInKSIpOwogCkBAIC04NSw2
ICs4NywxMSBAQCBmdW5jdGlvbiBoYWxmd2F5RG9uZSgpCiAKIGZ1bmN0aW9uIGNoZWNrUmVzdWx0
cygpIHsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5kYi52ZXJzaW9uIiwgInZl
cnNpb24gMiIpOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Cit9
CisKK2Z1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCit7CiAgICAgdHJhbnMgPSBldmFsQW5k
TG9nKCJ3aW5kb3cudHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3Qtc3RvcmUxJywgJ3Rlc3Qt
c3RvcmUyJ10pIik7CiAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJ3aW5kb3cuc3RvcmUgPSB3aW5k
b3cudHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUxJykiKTsKICAgICByZXEgPSBldmFsQW5k
TG9nKCJ3aW5kb3cucmVxID0gd2luZG93LnN0b3JlLmdldCgxMTEpIik7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2Ut
ZXhjbHVzaXZlLWV4cGVjdGVkLnR4dAppbmRleCBiMWNlN2QwNTA3MTlhYWU4ODQ5NzQxMGJiYTE3
OWJlMDlmZDZjZjk5Li41ODJjMmNiYWRlZDNlMmJmMzJkODM2MTE3ZGIzMzg4ZDYyODk2Mzc3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1l
eGNsdXNpdmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS1leHBlY3RlZC50eHQKQEAgLTE3LDYgKzE3LDkgQEAg
c2V0VmVyc2lvbigpIGNhbGxiYWNrCiBzdGFydGluZyB3b3JrIGluIFZFUlNJT05fQ0hBTkdFIHRy
YW5zYWN0aW9uCiB3aW5kb3cuc3RhdGUgPSAnVkVSU0lPTl9DSEFOR0Ugc3RhcnRlZCcKIHN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUnKQorRXhwZWN0aW5nIGV4Y2VwdGlv
biBmcm9tIGRiLnRyYW5zYWN0aW9uKCd0ZXN0LXN0b3JlJykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0
aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJS
CiBzdG9yZS5wdXQoMCwgMCkKIGluIHB1dCdzIG9uc3VjY2Vzcwogc3RvcmUucHV0KDEsIDEpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1l
eGNsdXNpdmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hh
bmdlLWV4Y2x1c2l2ZS5odG1sCmluZGV4IDhkZGI2MmMyZmVjODg3NDkxMTE2M2IyNTk2ZTg1ZGJj
MjAxN2U1Y2EuLmE5YThlYTIwOTA1NzljMDhlN2ZmOGFjYzM3NzE1NjRiZWMzMDk3OTAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1
c2l2ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hh
bmdlLWV4Y2x1c2l2ZS5odG1sCkBAIC00OCw2ICs0OCw5IEBAIGZ1bmN0aW9uIGluU2V0VmVyc2lv
bigpCiAgICAgZXZhbEFuZExvZygid2luZG93LnN0YXRlID0gJ1ZFUlNJT05fQ0hBTkdFIHN0YXJ0
ZWQnIik7CiAKICAgICB3aW5kb3cuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlJykiKTsKKworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oImRiLnRyYW5zYWN0aW9uKCd0ZXN0LXN0b3JlJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0FMTE9XRURfRVJSIik7CisKICAgICB3aW5kb3cuY291bnQgPSAwOwogICAgIGRvX2FzeW5j
X3B1dHMoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133135</attachid>
            <date>2012-03-21 16:05:32 -0700</date>
            <delta_ts>2012-04-04 16:22:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80547-20120321160531.patch</filename>
            <type>text/plain</type>
            <size>3902</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmM2YzQ2YzhjZDUzODcw
OWI5OWMwYzEwZjY4MTU4ZTA0YjQwYjkwNy4uZjgwZWI2MmUzODlkZWVjM2U0YzU1NWI0NTU5YzZk
NzZkZDcwZmY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAzLTE5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDcmVh
dGluZyBhIHRyYW5zYWN0aW9uIGZyb20gd2l0aGluIGEgdHJhbnNhY3Rpb24gY2FsbGJhY2sgc2hv
dWxkIGZhaWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgwNTQ3CisKKyAgICAgICAgVGhlIHNwZWMgcHJlY2x1ZGVzIGNyZWF0aW5nIGEgdHJhbnNhY3Rp
b24gd2l0aGluIGFub3RoZXIgdHJhbnNhY3Rpb24ncyBjYWxsYmFjazsKKyAgICAgICAgd2l0aCB0
aGUgYXN5bmMgQVBJLCB0aGlzIG9ubHkgYXBwbGllcyB0byB0aGUgY2FsbGJhY2sgb2YgYSB2ZXJz
aW9uIGNoYW5nZSB0cmFuc2FjdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2Ut
ZXhjbHVzaXZlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbik6CisKIDIw
MTItMDMtMjEgIFhpbmduYW4gV2FuZyAgPHhpbmduYW4ud2FuZ0BpbnRlbC5jb20+CiAKICAgICAg
ICAgV2ViIGF1ZGlvIGxheW91dCB0ZXN0IGZhaWxlZCBpbiBkZWJ1ZyB3aXRoIGFuIEFTU0VSVCBl
cnJvciBpbiBSZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCBjYTY1OTA3ZmIzOTEyNDdlYTYx
MTQ1YTMyMmYwODlhYzRkOGJmOTUzLi43Mjg2NDgxNDJiZThlOGMxMGYwYjViZjY4N2Y5M2FjNTFi
NzE1YmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuY3BwCkBAIC0xNTIsNiArMTUyLDExIEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+
IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbikgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9F
UlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmIChtb2RlICE9IElEQlRyYW5z
YWN0aW9uOjpSRUFEX1dSSVRFICYmIG1vZGUgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSkg
ewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT05fVFJBTlNJRU5UX0VSUjsK
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjY2ZWVlMjNiNGRiNzkzZDM2N2M5YmY3YTk1MTA3
MDg2MmU4MDkyOC4uZWI0MmYxYzAzM2Q0MzVhZjUzYzFhZjFiOTMzYjdiOTgwMTQ0YjZhOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAzLTE5ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDcmVhdGluZyBhIHRyYW5zYWN0aW9uIGZy
b20gd2l0aGluIGEgdHJhbnNhY3Rpb24gY2FsbGJhY2sgc2hvdWxkIGZhaWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNTQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi92
ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sOgorCiAyMDEyLTAzLTIxICBY
aWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEZvbnQg
ZmFsbGJhY2sgaW4gY3Itd2luIGlzIHdyb25nIGZvciBzdHJpbmcgY29udGFpbnMgemVyby13aWR0
aC1zcGFjZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNp
b24tY2hhbmdlLWV4Y2x1c2l2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUtZXhwZWN0ZWQudHh0CmluZGV4IDcxMjA5
OWZkODUyYWRiZGQ0YzhkYzlkYTkzODJkNjk2NDEzY2E3ZWIuLmM0MTZmMTFhNWE1YjhiNDY4MmFl
YjExNWI0N2ZkYzExNmRlMDY1YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLWV4cGVjdGVk
LnR4dApAQCAtMTcsNiArMTcsOSBAQCBzZXRWZXJzaW9uKCkgY2FsbGJhY2sKIHN0YXJ0aW5nIHdv
cmsgaW4gVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24KIHNlbGYuc3RhdGUgPSAnVkVSU0lPTl9D
SEFOR0Ugc3RhcnRlZCcKIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUn
KQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLnRyYW5zYWN0aW9uKCd0ZXN0LXN0b3JlJykK
K1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNl
cHRpb24uTk9UX0FMTE9XRURfRVJSCiBzdG9yZS5wdXQoMCwgMCkKIGluIHB1dCdzIG9uc3VjY2Vz
cwogc3RvcmUucHV0KDEsIDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCmluZGV4IDQ5NDk2ZGViMjRh
Yjk4N2QxM2E2ODE0MTRiNmVlNThjM2Y5ZWU1MzIuLmY4ZjFjNWZiNmNlYmVkMjA2NDhkM2NiZjgy
ZjNlZjIwOGNmYTU4MzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCkBAIC00Niw2ICs0Niw5IEBA
IGZ1bmN0aW9uIGluU2V0VmVyc2lvbigpCiAgICAgZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9ICdW
RVJTSU9OX0NIQU5HRSBzdGFydGVkJyIpOwogCiAgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUnKSIpOworCisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oJ3Rlc3Qtc3RvcmUnKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKwogICAgIHNlbGYuY291bnQgPSAw
OwogICAgIGRvX2FzeW5jX3B1dHMoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135709</attachid>
            <date>2012-04-04 16:22:13 -0700</date>
            <delta_ts>2012-06-13 12:32:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80547-20120404162212.patch</filename>
            <type>text/plain</type>
            <size>3895</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkyOGRkY2NiODM2N2E5
ZjM5NTk3NmFlOTE5YTFmODI3MzEwN2U2ZS4uOWVhOTZhYmVkNzllZWRmN2JiMWE2YjVjYWMzNDIz
NDkxOTI1YmM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAzLTE5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDcmVh
dGluZyBhIHRyYW5zYWN0aW9uIGZyb20gd2l0aGluIGEgdHJhbnNhY3Rpb24gY2FsbGJhY2sgc2hv
dWxkIGZhaWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgwNTQ3CisKKyAgICAgICAgVGhlIHNwZWMgcHJlY2x1ZGVzIGNyZWF0aW5nIGEgdHJhbnNhY3Rp
b24gd2l0aGluIGFub3RoZXIgdHJhbnNhY3Rpb24ncyBjYWxsYmFjazsKKyAgICAgICAgd2l0aCB0
aGUgYXN5bmMgQVBJLCB0aGlzIG9ubHkgYXBwbGllcyB0byB0aGUgY2FsbGJhY2sgb2YgYSB2ZXJz
aW9uIGNoYW5nZSB0cmFuc2FjdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2Ut
ZXhjbHVzaXZlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbik6CisKIDIw
MTItMDQtMDQgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IENhbGwgc2FuZGJveEVuYWJsZWQgZGlyZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCBjYTY1OTA3ZmIzOTEyNDdlYTYxMTQ1
YTMyMmYwODlhYzRkOGJmOTUzLi43Mjg2NDgxNDJiZThlOGMxMGYwYjViZjY4N2Y5M2FjNTFiNzE1
YmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuY3BwCkBAIC0xNTIsNiArMTUyLDExIEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElE
QkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bikgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmIChtb2RlICE9IElEQlRyYW5zYWN0
aW9uOjpSRUFEX1dSSVRFICYmIG1vZGUgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSkgewog
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT05fVFJBTlNJRU5UX0VSUjsKICAg
ICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDczM2RlOGY5NGIzYzc2ODVkMjE4YjdjMTRkODU4Zjg3
ZjMxZTA2Yy4uMmE1ZWMyNGYxMGM2MjEwMTI3YTc4YTI5NTU1MmZjNTdjMDI5OTUwMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDEyLTAzLTE5ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDcmVhdGluZyBhIHRyYW5zYWN0aW9uIGZyb20g
d2l0aGluIGEgdHJhbnNhY3Rpb24gY2FsbGJhY2sgc2hvdWxkIGZhaWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNTQ3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpzOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS1leHBlY3RlZC50eHQ6CisKIDIwMTItMDQt
MDQgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Q2hyb21pdW1dIE1hcmsgc3ZnL2FzLWltYWdlL2FuaW1hdGVkLXN2Zy1hcy1pbWFnZS1uby1maXhl
ZC1pbnRyaW5zaWMtc2l6ZS5odG1sIGFzIGZsYWt5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZlcnNpb24tY2hhbmdlLWV4
Y2x1c2l2ZS5qcwppbmRleCA4MWFhNThhODgzMjk1ZTQ3MTI3ZDZhOTMxNjRiYmNlZDgzOWIwOTFh
Li5mNWQzMzlmMjE0ZWY0ZjQ1NDQ4ODVmNzU2YjBmYjA3ZTdiMzFhZWM5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhj
bHVzaXZlLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92
ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuanMKQEAgLTQyLDYgKzQyLDcgQEAgZnVuY3Rpb24gaW5T
ZXRWZXJzaW9uKCkKICAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0gJ1ZFUlNJT05fQ0hBTkdF
IHN0YXJ0ZWQnIik7CiAKICAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgndGVzdC1zdG9yZScpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigiZGIudHJhbnNhY3Rpb24oJ3Rlc3Qtc3RvcmUnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT1RfQUxMT1dFRF9FUlIiKTsKICAgICBzZWxmLmNvdW50ID0gMDsKICAgICBkb19hc3luY19w
dXRzKCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNp
b24tY2hhbmdlLWV4Y2x1c2l2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUtZXhwZWN0ZWQudHh0CmluZGV4IGYzMDUx
NGQzMjE2NTA0Yjg3ZTIzMDc0MGE3YjRkZjFkZTE1YTIwYzQuLjU1YjA2NzY3MmJhYTkyMGFmNTk2
YmFlY2E3NTA2YTI2MWQ4MzYzMjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLWV4cGVjdGVk
LnR4dApAQCAtMTYsNiArMTYsOSBAQCBzZXRWZXJzaW9uKCkgY2FsbGJhY2sKIHN0YXJ0aW5nIHdv
cmsgaW4gVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24KIHNlbGYuc3RhdGUgPSAnVkVSU0lPTl9D
SEFOR0Ugc3RhcnRlZCcKIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUn
KQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLnRyYW5zYWN0aW9uKCd0ZXN0LXN0b3JlJykK
K1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNl
cHRpb24uTk9UX0FMTE9XRURfRVJSCiBzdG9yZS5wdXQoMCwgMCkKIGluIHB1dCdzIG9uc3VjY2Vz
cwogc3RvcmUucHV0KDEsIDEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147390</attachid>
            <date>2012-06-13 12:32:53 -0700</date>
            <delta_ts>2012-06-13 15:57:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80547-20120613123252.patch</filename>
            <type>text/plain</type>
            <size>30799</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVmOWQ2NmJiMjA3ZmMw
NTI3Y2I2NzQ3YzA1NWNjYTY5NTA3NGNiYi4uMzNjNmEzMDUwZDViMmVlNmRjNDQ2ZWUyMWU3NDBj
ZjFlNmIxNjYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA2LTEzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IENy
ZWF0aW5nIGEgdHJhbnNhY3Rpb24gZnJvbSB3aXRoaW4gYSB0cmFuc2FjdGlvbiBjYWxsYmFjayBz
aG91bGQgZmFpbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA1NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcmV2ZW50IGNyZWF0aW9uIG9mIGEgdHJhbnNhY3Rpb24sIHZpYSBJREJEYXRhYmFzZS50cmFu
c2FjdGlvbigpCisgICAgICAgIG9yIElEQkRhdGFiYXNlLnNldFZlcnNpb24oKSwgZnJvbSBpbnNp
ZGUgYSBzZXRWZXJzaW9uKCkKKyAgICAgICAgdHJhbnNhY3Rpb24sIGFzIHBlciBzcGVjLiBVcGRh
dGUgbWFueSB0ZXN0cyB0byBkZWFsIHdpdGggdGhpcy4KKworICAgICAgICBUZXN0IHJlc3RydWN0
dXJpbmcgdW5jb3ZlcmVkIHNvbWUgaW5jb25zaXN0ZW5jaWVzIGluIHRyYW5zYWN0aW9uCisgICAg
ICAgIG1vZGUgaGFuZGxpbmcuIFNvIGFsc28gZG8gc29tZSBtaW5vciBjbGVhbnVwIGluIHRoZSB3
YXkgdGhlCisgICAgICAgIHRyYW5zYWN0aW9uIG1vZGUgaXMgcGFzc2VkIGJldHdlZW4gdGhlIGZy
b250ZW5kIGFuZCBiYWNrZW5kCisgICAgICAgIHRyYW5zYWN0aW9uIG9iamVjdHMsIGFuZCBhZGQg
YWRkaXRpb25hbCBhc3NlcnRzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dXBkYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6dXBkYXRlKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJhbnNhY3Rp
b24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0
SW50ZXJuYWwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpJ
REJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c3RyaW5n
VG9Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjptb2RlVG9TdHJpbmcp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAg
IChJREJUcmFuc2FjdGlvbik6CisKIDIwMTItMDYtMTIgIFdlaSBKYW1lcyAgPGphbWVzLndlaUBp
bnRlbC5jb20+CiAKICAgICAgICAgd2ViY29yZSBzaG91bGQgZGVwZW5kIG9uIHdlYmNvcmVfYXJt
X25lb24gZm9yIG9ubHkgYXJtIHRhcmdldF9hcmNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCBmYzc5Mzc1MGMxOTI5NzZjMTg4MTMxN2Jl
ZjQ5NjRjZWU4NzNjMmY3Li45ZDIxM2Y0NjBiNDQxNjM1ZDU2ZWNmMDlkYjM3NTNlNmVmN2VmMDlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAK
QEAgLTEyOCw2ICsxMjgsMTIgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVw
ZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmUKICAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CisKKyAgICBpZiAobV90cmFuc2FjdGlvbi0+aXNSZWFkT25seSgpKSB7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHZhbHVlID0gcHJwVmFsdWU7CiAgICAgaWYgKHZhbHVlLT5ibG9iVVJMcygpLnNpemUoKSA+IDAp
IHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBCbG9iL0ZpbGUvRmlsZUxpc3Qgc3VwcG9ydApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFj
a2VuZEltcGwuY3BwCmluZGV4IDEwZDJkYWUwMzgyMWY2MTM1YTI2OWI5ZDQ2OTRjN2QxZWYzNzg4
ZGIuLmY1NDhjNmFhMDllOTQyNDkyZTYzZDVkMDgzMzE0ODIxZjI2MTE0N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW1wbC5jcHAKQEAgLTkyLDYgKzkyLDcgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IElEQkN1cnNvckJhY2tlbmRJbXBsOjp2YWx1ZSgpIGNvbnN0CiB2b2lkIElEQkN1cnNvckJh
Y2tlbmRJbXBsOjp1cGRhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVl
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjp1cGRhdGUiKTsKKyAgICBB
U1NFUlQobV90cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkp
OwogICAgIGlmICghbV9jdXJzb3IgfHwgbV9jdXJzb3JUeXBlID09IEluZGV4S2V5Q3Vyc29yKSB7
CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VS
UjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IDUwMTU4YTFmYmU2ZGZmOTkyYjYwNDY0YmIyMjVmNjRk
ZTNiODA1ZGMuLmYyZGZlNDFjYjYzNzliZjU1N2Y4ZTg1NGZiYWEyOGEwOGRmOTM5YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAg
LTE2MCw2ICsxNjAsMTEgQEAgUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gSURC
RGF0YWJhc2U6OnNldFZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGUKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCisgICAgaWYgKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKSB7CisgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0PiByZXF1ZXN0ID0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJ
REJBbnk6OmNyZWF0ZSh0aGlzKSwgdmVyc2lvbik7CiAgICAgbV9iYWNrZW5kLT5zZXRWZXJzaW9u
KHZlcnNpb24sIHJlcXVlc3QsIG1fZGF0YWJhc2VDYWxsYmFja3MsIGVjKTsKICAgICByZXR1cm4g
cmVxdWVzdDsKQEAgLTE3MywxMSArMTc4LDExIEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+
IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHVuc2lnbmVkIHNob3J0IG1vZGUgPSBJREJU
cmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKG1vZGVTdHJpbmcsIGVjKTsKKyAgICBJREJUcmFuc2Fj
dGlvbjo6TW9kZSBtb2RlID0gSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShtb2RlU3RyaW5n
LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChtX2Nsb3Nl
UGVuZGluZykgeworICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBtX2Nsb3Nl
UGVuZGluZykgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJ
RF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE5MSw3ICsxOTYsNyBA
QCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udAogICAgICAgICBBU1NFUlQoZWMpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9
IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoY29udGV4dCwgdHJhbnNhY3Rpb25CYWNrZW5kLCB0aGlz
KTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rp
b246OmNyZWF0ZShjb250ZXh0LCB0cmFuc2FjdGlvbkJhY2tlbmQsIG1vZGUsIHRoaXMpOwogICAg
IHRyYW5zYWN0aW9uQmFja2VuZC0+c2V0Q2FsbGJhY2tzKHRyYW5zYWN0aW9uLmdldCgpKTsKICAg
ICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQpAQCAtMjE0LDcgKzIxOSw3IEBAIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGNvbnNvbGVNZXNzYWdlLCAoIk51bWVyaWMgdHJhbnNhY3Rpb24gbW9kZXMgYXJlIGRlcHJlY2F0
ZWQgaW4gSURCRGF0YWJhc2UudHJhbnNhY3Rpb24uIFVzZSBcInJlYWRvbmx5XCIgb3IgXCJyZWFk
d3JpdGVcIi4iKSk7CiAgICAgY29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291
cmNlLCBMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2Up
OwotICAgIEF0b21pY1N0cmluZyBtb2RlU3RyaW5nID0gSURCVHJhbnNhY3Rpb246Om1vZGVUb1N0
cmluZyhtb2RlLCBlYyk7CisgICAgQXRvbWljU3RyaW5nIG1vZGVTdHJpbmcgPSBJREJUcmFuc2Fj
dGlvbjo6bW9kZVRvU3RyaW5nKElEQlRyYW5zYWN0aW9uOjpNb2RlKG1vZGUpLCBlYyk7CiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApp
bmRleCA3NDMzODhhZTE3ZjVkNzc2MmUzM2ZlMjRiYmM0YTQ3NDJlODE4OTU4Li5kYzQxMzQzOWE3
ZTVmY2VmY2Q3MWJhMTFlOWVhMzZiN2ZiN2MwY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmNwcApAQCAtMjExLDYgKzIxMSw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
cmV2ZXJ0QXV0b0luY3JlbWVudEtleUNhY2hlKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURC
S2V5PiBwcnBLZXksIFB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5z
YWN0aW9uKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0
SW50ZXJuYWwiKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2Fj
dGlvbjo6UkVBRF9PTkxZKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1
ZSA9IHBycFZhbHVlOwogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCAxYWVl
YWZkYmVmOTc4ZDNlMWM5MDUzNGI2YjUxM2QxMWNlMjczZWMxLi43NjYyMTViYjljMDA1ZGFlOWEz
YjAxN2Y1YmU5N2I3MmI5MzJkYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgSURCUmVxdWVz
dDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBw
cnBCYWNrZW5kCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIGJhY2tlbmQsIG1fc291cmNlLT5pZGJEYXRhYmFzZSgpLmdldCgpKTsKKyAgICBS
ZWZQdHI8SURCVHJhbnNhY3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJhY2tlbmQsIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9O
X0NIQU5HRSwgbV9zb3VyY2UtPmlkYkRhdGFiYXNlKCkuZ2V0KCkpOwogICAgIGJhY2tlbmQtPnNl
dENhbGxiYWNrcyhmcm9udGVuZC5nZXQoKSk7CiAgICAgbV90cmFuc2FjdGlvbiA9IGZyb250ZW5k
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHAKaW5kZXggYmM2NTU1NDE0OTcwMDU2NWZjZTAwMWU2OTA5ZGM5ZWQ2NTA1NTAyMC4u
MzFlMDk0NmUzYjlkMzNlZjAzYmZmMmEwYWMzMTExZjUyYmFlNDk2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtNDEs
OSArNDEsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQs
IElEQkRhdGFiYXNlKiBkYikKK1Bhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlRyYW5zYWN0
aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQlRyYW5zYWN0aW9uOjpN
b2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYikKIHsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+
IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBiYWNrZW5k
LCBkYikpKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVm
KG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBiYWNrZW5kLCBtb2RlLCBkYikpKTsKICAgICB0
cmFuc2FjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJl
bGVhc2UoKTsKIH0KQEAgLTc5LDExICs3OSwxMSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIElEQlRy
YW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlTGVnYWN5KCkKIH0KIAogCi1JREJUcmFuc2FjdGlvbjo6
SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQkRhdGFiYXNlKiBk
YikKK0lEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFj
a2VuZCwgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiKQogICAgIDog
QWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2JhY2tlbmQoYmFja2VuZCkK
ICAgICAsIG1fZGF0YWJhc2UoZGIpCi0gICAgLCBtX21vZGUobV9iYWNrZW5kLT5tb2RlKCkpCisg
ICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1fdHJhbnNhY3Rpb25GaW5pc2hlZChmYWxzZSkKICAg
ICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiB7CkBAIC0yNjIsNyArMjYyLDcgQEAgYm9vbCBJ
REJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKICAgICByZXR1cm4gIW1f
dHJhbnNhY3Rpb25GaW5pc2hlZCB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0
eSgpOwogfQogCi11bnNpZ25lZCBzaG9ydCBJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKGNv
bnN0IFN0cmluZyYgbW9kZVN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCitJREJUcmFuc2FjdGlv
bjo6TW9kZSBJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0
cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1vZGVTdHJpbmcuaXNOdWxsKCkK
ICAgICAgICAgfHwgbW9kZVN0cmluZyA9PSBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRPbmx5KCkp
CkBAIC0yNzAsMTAgKzI3MCwxMCBAQCB1bnNpZ25lZCBzaG9ydCBJREJUcmFuc2FjdGlvbjo6c3Ry
aW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgRXhjZXB0aW9uQwogICAgIGlmICht
b2RlU3RyaW5nID09IElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlKCkpCiAgICAgICAgIHJl
dHVybiBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURTsKICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpJREJfVFlQRV9FUlI7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIElEQlRyYW5z
YWN0aW9uOjpSRUFEX09OTFk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rp
b246Om1vZGVUb1N0cmluZyh1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2RlJiBlYykK
K2NvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVUb1N0cmluZyhJREJUcmFu
c2FjdGlvbjo6TW9kZSBtb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBzd2l0Y2ggKG1v
ZGUpIHsKICAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFk6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCAyZjdiYWJm
YzRiMWNkOTEyZWQ2Y2RiZDg0MDc0NTA5MWVhZDdhZjNlLi40Zjk1ZjViMTlkMDk0OThiOGMwM2Fj
NjJlODE2ZTk3ODM4ODIzMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTQ4LDIzICs0OCwyMyBAQCBjbGFzcyBJREJPYmpl
Y3RTdG9yZTsKIAogY2xhc3MgSURCVHJhbnNhY3Rpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25D
YWxsYmFja3MsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+LCBJREJEYXRhYmFzZSopOwotICAgIHZpcnR1YWwgfklEQlRyYW5zYWN0aW9uKCk7Ci0K
ICAgICBlbnVtIE1vZGUgewogICAgICAgICBSRUFEX09OTFkgPSAwLAogICAgICAgICBSRUFEX1dS
SVRFID0gMSwKICAgICAgICAgVkVSU0lPTl9DSEFOR0UgPSAyCiAgICAgfTsKIAorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgTW9kZSwgSURC
RGF0YWJhc2UqKTsKKyAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlvbigpOworCiAgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVJlYWRPbmx5KCk7CiAgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgbW9kZVJlYWRXcml0ZSgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIG1vZGVWZXJzaW9uQ2hhbmdlKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
bW9kZVJlYWRPbmx5TGVnYWN5KCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9k
ZVJlYWRXcml0ZUxlZ2FjeSgpOwogCi0gICAgc3RhdGljIHVuc2lnbmVkIHNob3J0IHN0cmluZ1Rv
TW9kZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgbW9kZVRvU3RyaW5nKHVuc2lnbmVkIHNob3J0LCBFeGNlcHRpb25Db2RlJik7
CisgICAgc3RhdGljIE1vZGUgc3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlVG9TdHJpbmcoTW9kZSwg
RXhjZXB0aW9uQ29kZSYpOwogCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiBi
YWNrZW5kKCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29uc3Q7CkBAIC0xMTcsNyAr
MTE3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb25DYWxs
YmFja3M+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
LCBJREJEYXRhYmFzZSopOworICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIE1vZGUsIElE
QkRhdGFiYXNlKik7CiAKICAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7
CiAgICAgdm9pZCBjbG9zZU9wZW5DdXJzb3JzKCk7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0
ZToKIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2Vu
ZDsKICAgICBSZWZQdHI8SURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7Ci0gICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgbV9tb2RlOworICAgIGNvbnN0IE1vZGUgbV9tb2RlOwogICAgIGJvb2wgbV90cmFu
c2FjdGlvbkZpbmlzaGVkOyAvLyBJcyBpdCBwb3NzaWJsZSB0aGF0IHdlJ2xsIGZpcmUgYW55IG1v
cmUgZXZlbnRzIG9yIGFsbG93IGFueSBuZXcgcmVxdWVzdHM/IElmIG5vdCwgd2UncmUgZmluaXNo
ZWQuCiAgICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkOwogICAgIFJlZlB0cjxET01FcnJvcj4gbV9l
cnJvcjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAyMWNjYWQyZmFkYzUxYzE5NGZjNDFlODFhMjllNjg5ZjA4MTdlZjk3Li5l
MjI3MTc2YmQ2NTk4ZmNmNWFjYzE2YWZmYzMyYWUzMjUzYmVhMGNkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzkgQEAKKzIwMTItMDYtMTMgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEluZGV4ZWREQjogQ3JlYXRpbmcgYSB0cmFuc2FjdGlvbiBmcm9tIHdpdGhpbiBh
IHRyYW5zYWN0aW9uIGNhbGxiYWNrIHNob3VsZCBmYWlsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDU0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0
ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFz
aWNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1
cnNvci11cGRhdGUtdXBkYXRlcy1pbmRleGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXVwZGF0ZXMtaW5k
ZXhlcy5qczoKKyAgICAgICAgKHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleEFuZEFkZC50
cmFuc2FjdGlvbi5vbmNvbXBsZXRlKToKKyAgICAgICAgKHNldHVwT2JqZWN0U3RvcmVBbmRDcmVh
dGVJbmRleEFuZEFkZCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvb2JqZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMuanM6CisgICAgICAgIChjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChmaW5hbENoZWNrKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZW1vdmUtb2JqZWN0c3RvcmUuanM6CisgICAgICAgIChj
cmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKHBvc3RTZXRWZXJzaW9uMi5y
ZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChwb3N0U2V0VmVyc2lvbjIpOgorICAgICAgICAo
ZGVsZXRlU2Vjb25kT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9jdXJzb3ItdXBkYXRlLmpzOgorICAgICAgICAob3BlbkJhc2ljQ3Vyc29yKToKKyAg
ICAgICAgKGtleUN1cnNvcik6CisgICAgICAgICh0ZXN0UmVhZE9ubHkpOgorICAgICAgICAoYXR0
ZW1wdFVwZGF0ZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFi
YXNlLWJhc2ljcy5qczoKKyAgICAgICAgKG9wZW5TdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToK
KyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25TdWNjZXNzLnJlcXVl
c3Qub25zdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25TdWNjZXNzKToKKyAgICAgICAgKGNy
ZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
dmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpzOgorICAgICAgICAodGVzdCk6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLWV4cGVjdGVkLnR4dDoK
KwogMjAxMi0wNi0xMiAgRWRhZW5hIFNhbGluYXMgSmFzc28gIDxlZGFlbmFAYXBwbGUuY29tPgog
CiAgICAgICAgIENhbid0IHNldCBlbC50eXBlIG9uIGEgPGJ1dHRvbj4gZWxlbWVudApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLWV4cGVj
dGVkLnR4dAppbmRleCA1NWQ5NTY2OGQ5ZWU2ZDRhYWY4MTI4ZGJkOTQ5NDEwYzlkYmE1YmRkLi41
NzEyMjg3MTUyZmM0NzRhZjJiNWVlOTUwYjcxYjIwM2Y5OTg3NWFlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLWV4cGVjdGVkLnR4
dApAQCAtMTY2LDYgKzE2Niw3IEBAIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBldmVudC50YXJn
ZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IGNvdW50ZXIsIG51bWJlcjogY291bnRlCiBQQVNTIEV4Y2Vw
dGlvbiB3YXMgdGhyb3duLgogUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRF
X0VSUgogUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitldmVudC50YXJnZXQucmVz
dWx0LmNvbnRpbnVlKCk7CiBrZXlDdXJzb3IoKQogUEFTUyBldmVudC50YXJnZXQucmVzdWx0Lmtl
eSBpcyBjb3VudGVyICsgMTAwCiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSBp
cyBjb3VudGVyCkBAIC0xNzMsNiArMTc0LDcgQEAgRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGV2
ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKHtpZDogY291bnRlciwgbnVtYmVyOiBjb3VudGUKIFBB
U1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCiBQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFM
SURfU1RBVEVfRVJSCiBQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK2V2ZW50LnRh
cmdldC5yZXN1bHQuY29udGludWUoKTsKIGtleUN1cnNvcigpCiBQQVNTIGV2ZW50LnRhcmdldC5y
ZXN1bHQua2V5IGlzIGNvdW50ZXIgKyAxMDAKIFBBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmlt
YXJ5S2V5IGlzIGNvdW50ZXIKQEAgLTE4MCw2ICsxODIsNyBAQCBFeHBlY3RpbmcgZXhjZXB0aW9u
IGZyb20gZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lkOiBjb3VudGVyLCBudW1iZXI6IGNv
dW50ZQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KIFBBU1MgY29kZSBpcyBET01FeGNlcHRp
b24uSU5WQUxJRF9TVEFURV9FUlIKIFBBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJwor
ZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpOwoga2V5Q3Vyc29yKCkKIFBBU1MgZXZlbnQu
dGFyZ2V0LnJlc3VsdC5rZXkgaXMgY291bnRlciArIDEwMAogUEFTUyBldmVudC50YXJnZXQucmVz
dWx0LnByaW1hcnlLZXkgaXMgY291bnRlcgpAQCAtMTg3LDggKzE5MCwzOCBAQCBFeHBlY3Rpbmcg
ZXhjZXB0aW9uIGZyb20gZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lkOiBjb3VudGVyLCBu
dW1iZXI6IGNvdW50ZQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KIFBBU1MgY29kZSBpcyBE
T01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKIFBBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0
ZUVycm9yJworZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpOwoga2V5Q3Vyc29yKCkKIFBB
U1MgY291bnRlciBpcyA1CitvcGVuQmFzaWNDdXJzb3IoKQordHJhbnMgPSBkYi50cmFuc2FjdGlv
bignYmFzaWNTdG9yZScpCit0cmFucy5vYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpCitvYmplY3RT
dG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlKQorYXR0ZW1wdFVwZGF0ZSgpCitFeHBlY3RpbmcgZXhj
ZXB0aW9uIGZyb20gY3Vyc29yLnVwZGF0ZSgnbXlVcGRhdGVkVmFsdWUnKQorUEFTUyBFeGNlcHRp
b24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09O
TFlfRVJSCitQQVNTIGVuYW1lIGlzICdSZWFkT25seUVycm9yJworY3Vyc29yLmNvbnRpbnVlKCkK
K2F0dGVtcHRVcGRhdGUoKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGN1cnNvci51cGRhdGUo
J215VXBkYXRlZFZhbHVlJykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUg
aXMgSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUgorUEFTUyBlbmFtZSBpcyAnUmVh
ZE9ubHlFcnJvcicKK2N1cnNvci5jb250aW51ZSgpCithdHRlbXB0VXBkYXRlKCkKK0V4cGVjdGlu
ZyBleGNlcHRpb24gZnJvbSBjdXJzb3IudXBkYXRlKCdteVVwZGF0ZWRWYWx1ZScpCitQQVNTIEV4
Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlJF
QURfT05MWV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1JlYWRPbmx5RXJyb3InCitjdXJzb3IuY29udGlu
dWUoKQorYXR0ZW1wdFVwZGF0ZSgpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gY3Vyc29yLnVw
ZGF0ZSgnbXlVcGRhdGVkVmFsdWUnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1Mg
Y29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSCitQQVNTIGVuYW1lIGlz
ICdSZWFkT25seUVycm9yJworY3Vyc29yLmNvbnRpbnVlKCkKK2F0dGVtcHRVcGRhdGUoKQogdHJh
bnNhY3Rpb25Db21wbGV0ZSgpCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWJhc2ljcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1iYXNp
Y3MtZXhwZWN0ZWQudHh0CmluZGV4IDhiMDYxNGVhMjQ2MmZiNmJkYjU4ZTIxMmFiNzZjZjIzMzRi
ZGM1YzAuLjc5MGYyMGM3ODNlNThhY2FmOTVkZDQzMGZiYjUyZWY1OWIyMDdhNDggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWJhc2ljcy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNz
LWV4cGVjdGVkLnR4dApAQCAtOCwxMiArOCwxNCBAQCBpbmRleGVkREIgPSBzZWxmLmluZGV4ZWRE
QiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLgog
aW5kZXhlZERCLm9wZW4oJ2RhdGFiYXNlLWJhc2ljcycpCiBkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQKIGRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykKLXNldFZlcnNpb25TdWNjZXNzKCk6Ci10
cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQKLVBBU1MgdHJhbnMgaXMgbm9uLW51bGwuCiBEZWxl
dGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc2V0VmVyc2lvblN1Y2Nlc3MoKToKIFRlc3Rpbmcgc2V0
VmVyc2lvbi4KLWRiLnNldFZlcnNpb24oInZlcnNpb24gYSIpCityZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbigidmVyc2lvbiBhIikKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi5zZXRWZXJzaW9u
KCJ2ZXJzaW9uIGIiKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBE
T01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0
ZUVycm9yJwogZGIuc2V0VmVyc2lvbigidmVyc2lvbiBiIikKIFBBU1MgZGIudmVyc2lvbiBpcyAi
dmVyc2lvbiBiIgogUEFTUyBkYi5uYW1lIGlzICJkYXRhYmFzZS1iYXNpY3MiCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci11cGRhdGUtdXBk
YXRlcy1pbmRleGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMtZXhwZWN0ZWQudHh0CmluZGV4
IDBkNTBiNjM1YTBjMzRiZWI0YzA1YWNjMWE5MTk2YjI2ODM2MjMxZGMuLjY1YTg5YWRlNmI3YTZk
ZWI2NGM2ODkwYjUyNTkyMDdmZjdlY2UwYjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29y
LXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMtZXhwZWN0ZWQudHh0CkBAIC0yOSw2ICsyOSwxMCBAQCBv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25z
KTsKIGluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2RhdGFfaW5kZXgnLCAnZGF0YScs
IHsgdW5pcXVlOiBmYWxzZSB9KTsKIHVuaXF1ZUluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5k
ZXgoJ3VuaXF1ZV9kYXRhX2luZGV4JywgJ2RhdGEnLCB7IHVuaXF1ZTogdHJ1ZSB9KTsKIHJlcXVl
c3QgPSBvYmplY3RTdG9yZS5hZGQoaW5mby5lbnRyeSwgaW5mby5rZXkpOwordHJhbnMgPSBkYi50
cmFuc2FjdGlvbihpbmZvLm5hbWUsICdyZWFkd3JpdGUnKQorb2JqZWN0U3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZShpbmZvLm5hbWUpCitpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KCdkYXRhX2lu
ZGV4JykKK3VuaXF1ZUluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3VuaXF1ZV9kYXRhX2luZGV4
JykKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7CiBjdXJzb3IgPSByZXF1ZXN0
LnJlc3VsdDsKIHZhbHVlID0gY3Vyc29yLnZhbHVlOwpAQCAtNDcsNiArNTEsMTAgQEAgb2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7CiBp
bmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdkYXRhX2luZGV4JywgJ2RhdGEnLCB7IHVu
aXF1ZTogZmFsc2UgfSk7CiB1bmlxdWVJbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd1
bmlxdWVfZGF0YV9pbmRleCcsICdkYXRhJywgeyB1bmlxdWU6IHRydWUgfSk7CiByZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKGluZm8uZW50cnkpOwordHJhbnMgPSBkYi50cmFuc2FjdGlvbihpbmZv
Lm5hbWUsICdyZWFkd3JpdGUnKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShpbmZv
Lm5hbWUpCitpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KCdkYXRhX2luZGV4JykKK3VuaXF1ZUlu
ZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3VuaXF1ZV9kYXRhX2luZGV4JykKIHJlcXVlc3QgPSBv
YmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7CiBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsKIHZhbHVl
ID0gY3Vyc29yLnZhbHVlOwpAQCAtNjUsNiArNzMsMTAgQEAgb2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7CiBpbmRleCA9IG9iamVjdFN0
b3JlLmNyZWF0ZUluZGV4KCdkYXRhX2luZGV4JywgJ2RhdGEnLCB7IHVuaXF1ZTogZmFsc2UgfSk7
CiB1bmlxdWVJbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd1bmlxdWVfZGF0YV9pbmRl
eCcsICdkYXRhJywgeyB1bmlxdWU6IHRydWUgfSk7CiByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KGluZm8uZW50cnkpOwordHJhbnMgPSBkYi50cmFuc2FjdGlvbihpbmZvLm5hbWUsICdyZWFkd3Jp
dGUnKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShpbmZvLm5hbWUpCitpbmRleCA9
IG9iamVjdFN0b3JlLmluZGV4KCdkYXRhX2luZGV4JykKK3VuaXF1ZUluZGV4ID0gb2JqZWN0U3Rv
cmUuaW5kZXgoJ3VuaXF1ZV9kYXRhX2luZGV4JykKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVu
Q3Vyc29yKCk7CiBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsKIHZhbHVlID0gY3Vyc29yLnZhbHVl
OwpAQCAtODMsNiArOTUsMTAgQEAgb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShp
bmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7CiBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4
KCdkYXRhX2luZGV4JywgJ2RhdGEnLCB7IHVuaXF1ZTogZmFsc2UgfSk7CiB1bmlxdWVJbmRleCA9
IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd1bmlxdWVfZGF0YV9pbmRleCcsICdkYXRhJywgeyB1
bmlxdWU6IHRydWUgfSk7CiByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGluZm8uZW50cnkpOwor
dHJhbnMgPSBkYi50cmFuc2FjdGlvbihpbmZvLm5hbWUsICdyZWFkd3JpdGUnKQorb2JqZWN0U3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZShpbmZvLm5hbWUpCitpbmRleCA9IG9iamVjdFN0b3JlLmlu
ZGV4KCdkYXRhX2luZGV4JykKK3VuaXF1ZUluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3VuaXF1
ZV9kYXRhX2luZGV4JykKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7CiBjdXJz
b3IgPSByZXF1ZXN0LnJlc3VsdDsKIHZhbHVlID0gY3Vyc29yLnZhbHVlOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29yLXVw
ZGF0ZS11cGRhdGVzLWluZGV4ZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXVwZGF0ZXMtaW5kZXhlcy5qcwppbmRleCBl
YzdkOWJiOWJiNjZlZTRlMzUzNzhlOWNhYjhhZGZiOTEzYzFiYzkwLi45NWIwMzlhMGUzM2ZlMWM2
YTViOGU2ZTk2MTk5MzM5YjdiZTg0NzhjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXVwZGF0ZXMtaW5kZXhl
cy5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNl
cy9jdXJzb3ItdXBkYXRlLXVwZGF0ZXMtaW5kZXhlcy5qcwpAQCAtNTYsNiArNTYsNyBAQCBmdW5j
dGlvbiBzZXRWZXJzaW9uKCkKIAogZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUlu
ZGV4QW5kQWRkKCkKIHsKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0
OwogICAgIGRlYnVnKCJzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXgoKToiKTsKICAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogCkBAIC02OCw4ICs2OSwxNSBAQCBmdW5jdGlvbiBz
ZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXhBbmRBZGQoKQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGluZm8u
ZW50cnkpOyIpOwogICAgIH0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3I7CiAg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisKKyAgICB0cmFu
c2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24gKCkgeworICAgICAgICBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKGluZm8ubmFtZSwgJ3JlYWR3cml0ZScpIik7CisgICAgICAg
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoaW5mby5uYW1lKSIp
OworICAgICAgICBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KCdkYXRhX2lu
ZGV4JykiKTsKKyAgICAgICAgZXZhbEFuZExvZygidW5pcXVlSW5kZXggPSBvYmplY3RTdG9yZS5p
bmRleCgndW5pcXVlX2RhdGFfaW5kZXgnKSIpOworICAgICAgICBvcGVuQ3Vyc29yKCk7CisgICAg
fTsKIH0KIAogZnVuY3Rpb24gb3BlbkN1cnNvcigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3Qtc3RvcmUtcmVtb3ZlLXZh
bHVlcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2Vz
L29iamVjdC1zdG9yZS1yZW1vdmUtdmFsdWVzLmpzCmluZGV4IDJhMGRlYTc5ZmVmYjhiMDE1N2Jl
ZmVhYWZhOTcwOTE4ZTRmMjk0N2UuLmQ2NjExMWY5ZDZmOWM4NDJmNDUxM2MyNjZiNmE2MmEzNDM4
MmExMmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
cmVzb3VyY2VzL29iamVjdC1zdG9yZS1yZW1vdmUtdmFsdWVzLmpzCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1zdG9yZS1yZW1vdmUt
dmFsdWVzLmpzCkBAIC03MSw2ICs3MSw3IEBAIGZ1bmN0aW9uIHNldFZlcnNpb24oKQogCiBmdW5j
dGlvbiBjcmVhdGVPYmplY3RTdG9yZSgpCiB7CisgICAgdHJhbnNhY3Rpb24gPSBldmVudC50YXJn
ZXQucmVzdWx0OwogICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CiAKICAgICBpZiAodGVz
dC5rZXlOYW1lKSB7CkBAIC0xMTUsNyArMTE2LDcgQEAgZnVuY3Rpb24gZmluYWxDaGVjaygpCiB7
CiAgICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSB1bmRlZmluZWQiKTsK
ICAgICBpKys7Ci0gICAgc2V0VmVyc2lvbigpOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSBzZXRWZXJzaW9uOwogfQogCiB0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJj
ZXMvcmVtb3ZlLW9iamVjdHN0b3JlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9yZXNvdXJjZXMvcmVtb3ZlLW9iamVjdHN0b3JlLmpzCmluZGV4IDc3NzBlMDhkZGU4
ZGRjZmQ4MmYwZTI0MmUyYzFmZWM1MDFkNWMzYWQuLmQ3ZDZkZDI0NjU3MDgyZGNhYmZhZjA0ZGRj
M2FkZTQ0NDcyNGQ5MmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcmVzb3VyY2VzL3JlbW92ZS1vYmplY3RzdG9yZS5qcworKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZW1vdmUtb2JqZWN0c3RvcmUu
anMKQEAgLTM0LDYgKzM0LDcgQEAgZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQogCiBmdW5jdGlvbiBj
cmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKIHsKKyAgICB2YXIgdjFfdHJhbnNhY3Rpb24g
PSBldmVudC50YXJnZXQucmVzdWx0OwogICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CiAK
ICAgICBvYmplY3RTdG9yZU5hbWUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZU5hbWUgPSAnT2Jq
ZWN0cyc7Iik7CkBAIC00MywxMiArNDQsOCBAQCBmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlKCkKICAgICBmb3IgKGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKICAgICAgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe2ZvbzogaX0pOyIp
OwogICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAg
aWYgKCsrYWRkZWRDb3VudCA9PSAxMDApIHsKLSAgICAgICAgICAgICAgICBjaGVja09iamVjdFN0
b3JlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICB9CisgICAgdjFfdHJhbnNhY3Rp
b24ub25jb21wbGV0ZSA9IGNoZWNrT2JqZWN0U3RvcmU7CiB9CiAKIGZ1bmN0aW9uIGNoZWNrT2Jq
ZWN0U3RvcmUoKQpAQCAtNjMsNiArNjAsNyBAQCBmdW5jdGlvbiBjaGVja09iamVjdFN0b3JlKCkK
IAogZnVuY3Rpb24gcG9zdFNldFZlcnNpb24yKCkKIHsKKyAgICB2YXIgdjJfdHJhbnNhY3Rpb24g
PSBldmVudC50YXJnZXQucmVzdWx0OwogICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0
b3JlKG9iamVjdFN0b3JlLm5hbWUpOyIpOwogICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5h
bWVzLmxlbmd0aCIsICIwIik7CiAKQEAgLTc1LDE0ICs3MywxNCBAQCBmdW5jdGlvbiBwb3N0U2V0
VmVyc2lvbjIoKQogICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKICAg
ICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAibnVsbCIpOwogICAgICAgICBk
ZWxldGVTZWNvbmRPYmplY3RTdG9yZSgpOwotICAgIH0KKyAgICB9OworICAgIHYyX3RyYW5zYWN0
aW9uLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uMzsKIH0KIAogZnVuY3Rpb24gZGVsZXRlU2Vjb25k
T2JqZWN0U3RvcmUoKQogewogICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKG9i
amVjdFN0b3JlLm5hbWUpOyIpOwogICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxl
bmd0aCIsICIwIik7Ci0gICAgc2V0VmVyc2lvbjMoKTsKIH0KIAogZnVuY3Rpb24gc2V0VmVyc2lv
bjMoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2N1cnNvci11cGRhdGUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3Vyc29yLXVwZGF0ZS5qcwppbmRleCBkMDJjNjI1NDMzMzgwMTEyODExMjEwZGQ4MzQzMzRk
NjU0Yjg0OTUyLi43ODllNjJkODljN2U1Njg1OTViZWUyZGY4YTA0ZGE4ZmMwNGY4YzIxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVw
ZGF0ZS5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vy
c29yLXVwZGF0ZS5qcwpAQCAtNTksNyArNTksNyBAQCBmdW5jdGlvbiBvcGVuQmFzaWNDdXJzb3Io
KQogICAgIGRlYnVnKCJvcGVuQmFzaWNDdXJzb3IoKSIpOwogICAgIGV2YWxBbmRMb2coInRyYW5z
ID0gZGIudHJhbnNhY3Rpb24oWydiYXNpY1N0b3JlJywgJ2F1dG9JbmNyZW1lbnRTdG9yZScsICdr
ZXlQYXRoU3RvcmUnXSwgJ3JlYWR3cml0ZScpIik7CiAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNv
bXBsZXRlOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0UmVhZE9ubHk7CiAKICAgICBrZXlS
YW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5MSIpOwogICAgIHNlbGYub2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpIik7CkBA
IC0yMDAsNyArMjAwLDMyIEBAIGZ1bmN0aW9uIGtleUN1cnNvcigpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSIiwgIidJbnZhbGlkU3Rh
dGVFcnJvciciKTsKIAogICAgIGNvdW50ZXIrKzsKLSAgICBldmVudC50YXJnZXQucmVzdWx0LmNv
bnRpbnVlKCk7CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgp
OyIpOworfQorCitmdW5jdGlvbiB0ZXN0UmVhZE9ubHkoKQoreworICAgIGRlYnVnKCJvcGVuQmFz
aWNDdXJzb3IoKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ2Jh
c2ljU3RvcmUnKSIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZTsKKworICAgIGtl
eVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgibXlLZXkxIik7CisgICAgc2VsZi5vYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5n
ZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGF0dGVtcHRVcGRhdGU7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGF0dGVt
cHRVcGRhdGUoKQoreworICAgIGRlYnVnKCJhdHRlbXB0VXBkYXRlKCkiKTsKKyAgICBzZWxmLmN1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgaWYgKHNlbGYuY3Vyc29yKSB7CisgICAg
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImN1cnNvci51cGRhdGUoJ215VXBkYXRlZFZhbHVl
JykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5SRUFEX09OTFlfRVJSIiwgIidSZWFkT25seUVycm9yJyIpOworICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUoKSIpOworICAgIH0KIH0KIAogZnVuY3Rpb24gdHJhbnNhY3Rpb25D
b21wbGV0ZSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvZGF0YWJhc2UtYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2RhdGFiYXNlLWJhc2ljcy5qcwppbmRleCBiMmRmNzM5ODhjZWNiZmQ3MDQyMjhj
NzAyOTNkOWRhZTRjNWZhMDk1Li4wMWEwNjUwOGNiMzA0NWQ2MTZiYmZjMDY5YWIwMDIzMGYyNDZh
OGFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
ZGF0YWJhc2UtYmFzaWNzLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9kYXRhYmFzZS1iYXNpY3MuanMKQEAgLTE5LDIyICsxOSwzMSBAQCBmdW5jdGlvbiBv
cGVuU3VjY2VzcygpCiAgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwogCiAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25l
dyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNz
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7CisKKyAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKKyAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHNldFZlcnNpb25T
dWNjZXNzOworICAgICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgfTsKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKIH0KIAorCiBmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCiB7CiAgICAgZGVidWco
InNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlTm9uTnVsbCgidHJhbnMi
KTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0KLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogCiAgICAgZGVidWcoIlRlc3Rpbmcgc2V0VmVyc2lv
bi4iKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVyc2lvbigidmVyc2lvbiBh
IiknKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25BZ2FpbjsKKyAgICBldmFs
QW5kTG9nKCdyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigidmVyc2lvbiBhIiknKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisKKyAgICAgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbignZGIuc2V0VmVyc2lvbigidmVyc2lvbiBiIiknLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFs
aWRTdGF0ZUVycm9yJyIpOworICAgICAgICB2YXIgdHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQu
cmVzdWx0OworICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkFnYWlu
OworICAgICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgfTsKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
IH0KIApAQCAtNTcsNyArNjYsMTAgQEAgZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmUoKQogCiAg
ICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdDEy
MyIpJyk7CiAgICAgY2hlY2tPYmplY3RTdG9yZSgpOwotICAgIGNvbW1pdEFuZENvbnRpbnVlKCk7
CisKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0U2V0VmVyc2lvbkFib3J0OworICAgIHRyYW5zYWN0aW9u
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKIH0KIAogZnVuY3Rpb24gY2hlY2tP
YmplY3RTdG9yZSgpCkBAIC02OSwxMCArODEsNiBAQCBmdW5jdGlvbiBjaGVja09iamVjdFN0b3Jl
KCkKICAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygndGVzdDEyMycp
IiwgInRydWUiKTsKIH0KIAotZnVuY3Rpb24gY29tbWl0QW5kQ29udGludWUoKQotewotICAgIHNl
bGYuc2V0VGltZW91dCh0ZXN0U2V0VmVyc2lvbkFib3J0LCAwKTsKLX0KIAogZnVuY3Rpb24gdGVz
dFNldFZlcnNpb25BYm9ydCgpCiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5q
cwppbmRleCA4MWFhNThhODgzMjk1ZTQ3MTI3ZDZhOTMxNjRiYmNlZDgzOWIwOTFhLi44NmUyNGNl
Y2M0MjMzYjhjNzhkNjI5NmFmOTk1MjkwNjNmMzRjNTllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpz
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNo
YW5nZS1leGNsdXNpdmUuanMKQEAgLTUsNyArNSw4IEBAIGlmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKIAogZGVzY3JpcHRpb24oIkVuc3VyZSBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiBkb2Vz
bid0IHJ1biBjb25jdXJyZW50bHkgd2l0aCBvdGhlciB0cmFuc2FjdGlvbnMiKTsKIAotZnVuY3Rp
b24gdGVzdCgpIHsKK2Z1bmN0aW9uIHRlc3QoKQorewogICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CiAgICAgb3BlbkRCQ29ubmVjdGlvbigpOwogfQpAQCAtNDIsMTAgKzQzLDEyIEBAIGZ1bmN0
aW9uIGluU2V0VmVyc2lvbigpCiAgICAgZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9ICdWRVJTSU9O
X0NIQU5HRSBzdGFydGVkJyIpOwogCiAgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUnKSIpOworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKCd0ZXN0LXN0b3JlJykiLCAiRE9NRXhjZXB0aW9u
LklOVkFMSURfU1RBVEVfRVJSIiwgIidJbnZhbGlkU3RhdGVFcnJvciciKTsKICAgICBzZWxmLmNv
dW50ID0gMDsKICAgICBkb19hc3luY19wdXRzKCk7CiAKLSAgICBmdW5jdGlvbiBkb19hc3luY19w
dXRzKCkgeworICAgIGZ1bmN0aW9uIGRvX2FzeW5jX3B1dHMoKQorICAgIHsKICAgICAgICAgdmFy
IHJlcSA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCgiICsgY291bnQgKyAiLCAiICsgY291bnQgKyAi
KSIpOwogICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogICAg
ICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNp
dmUtZXhwZWN0ZWQudHh0CmluZGV4IGYzMDUxNGQzMjE2NTA0Yjg3ZTIzMDc0MGE3YjRkZjFkZTE1
YTIwYzQuLjZjNWEzMzk1NWQ2MWFhY2Q2ZTIyM2RlMzk5ZmEyYmY3NTVhNjY4MDQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2
ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lv
bi1jaGFuZ2UtZXhjbHVzaXZlLWV4cGVjdGVkLnR4dApAQCAtMTYsNiArMTYsMTAgQEAgc2V0VmVy
c2lvbigpIGNhbGxiYWNrCiBzdGFydGluZyB3b3JrIGluIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0
aW9uCiBzZWxmLnN0YXRlID0gJ1ZFUlNJT05fQ0hBTkdFIHN0YXJ0ZWQnCiBzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlJykKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBk
Yi50cmFuc2FjdGlvbigndGVzdC1zdG9yZScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgor
UEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBp
cyAnSW52YWxpZFN0YXRlRXJyb3InCiBzdG9yZS5wdXQoMCwgMCkKIGluIHB1dCdzIG9uc3VjY2Vz
cwogc3RvcmUucHV0KDEsIDEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147435</attachid>
            <date>2012-06-13 15:57:46 -0700</date>
            <delta_ts>2012-06-13 15:59:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80547-20120613155745.patch</filename>
            <type>text/plain</type>
            <size>31141</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVmOWQ2NmJiMjA3ZmMw
NTI3Y2I2NzQ3YzA1NWNjYTY5NTA3NGNiYi4uMzNjNmEzMDUwZDViMmVlNmRjNDQ2ZWUyMWU3NDBj
ZjFlNmIxNjYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA2LTEzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IENy
ZWF0aW5nIGEgdHJhbnNhY3Rpb24gZnJvbSB3aXRoaW4gYSB0cmFuc2FjdGlvbiBjYWxsYmFjayBz
aG91bGQgZmFpbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA1NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcmV2ZW50IGNyZWF0aW9uIG9mIGEgdHJhbnNhY3Rpb24sIHZpYSBJREJEYXRhYmFzZS50cmFu
c2FjdGlvbigpCisgICAgICAgIG9yIElEQkRhdGFiYXNlLnNldFZlcnNpb24oKSwgZnJvbSBpbnNp
ZGUgYSBzZXRWZXJzaW9uKCkKKyAgICAgICAgdHJhbnNhY3Rpb24sIGFzIHBlciBzcGVjLiBVcGRh
dGUgbWFueSB0ZXN0cyB0byBkZWFsIHdpdGggdGhpcy4KKworICAgICAgICBUZXN0IHJlc3RydWN0
dXJpbmcgdW5jb3ZlcmVkIHNvbWUgaW5jb25zaXN0ZW5jaWVzIGluIHRyYW5zYWN0aW9uCisgICAg
ICAgIG1vZGUgaGFuZGxpbmcuIFNvIGFsc28gZG8gc29tZSBtaW5vciBjbGVhbnVwIGluIHRoZSB3
YXkgdGhlCisgICAgICAgIHRyYW5zYWN0aW9uIG1vZGUgaXMgcGFzc2VkIGJldHdlZW4gdGhlIGZy
b250ZW5kIGFuZCBiYWNrZW5kCisgICAgICAgIHRyYW5zYWN0aW9uIG9iamVjdHMsIGFuZCBhZGQg
YWRkaXRpb25hbCBhc3NlcnRzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dXBkYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6dXBkYXRlKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJhbnNhY3Rp
b24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0
SW50ZXJuYWwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpJ
REJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c3RyaW5n
VG9Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjptb2RlVG9TdHJpbmcp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAg
IChJREJUcmFuc2FjdGlvbik6CisKIDIwMTItMDYtMTIgIFdlaSBKYW1lcyAgPGphbWVzLndlaUBp
bnRlbC5jb20+CiAKICAgICAgICAgd2ViY29yZSBzaG91bGQgZGVwZW5kIG9uIHdlYmNvcmVfYXJt
X25lb24gZm9yIG9ubHkgYXJtIHRhcmdldF9hcmNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCBmYzc5Mzc1MGMxOTI5NzZjMTg4MTMxN2Jl
ZjQ5NjRjZWU4NzNjMmY3Li45ZDIxM2Y0NjBiNDQxNjM1ZDU2ZWNmMDlkYjM3NTNlNmVmN2VmMDlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAK
QEAgLTEyOCw2ICsxMjgsMTIgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVw
ZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmUKICAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CisKKyAgICBpZiAobV90cmFuc2FjdGlvbi0+aXNSZWFkT25seSgpKSB7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHZhbHVlID0gcHJwVmFsdWU7CiAgICAgaWYgKHZhbHVlLT5ibG9iVVJMcygpLnNpemUoKSA+IDAp
IHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBCbG9iL0ZpbGUvRmlsZUxpc3Qgc3VwcG9ydApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFj
a2VuZEltcGwuY3BwCmluZGV4IDEwZDJkYWUwMzgyMWY2MTM1YTI2OWI5ZDQ2OTRjN2QxZWYzNzg4
ZGIuLmY1NDhjNmFhMDllOTQyNDkyZTYzZDVkMDgzMzE0ODIxZjI2MTE0N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW1wbC5jcHAKQEAgLTkyLDYgKzkyLDcgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IElEQkN1cnNvckJhY2tlbmRJbXBsOjp2YWx1ZSgpIGNvbnN0CiB2b2lkIElEQkN1cnNvckJh
Y2tlbmRJbXBsOjp1cGRhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVl
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjp1cGRhdGUiKTsKKyAgICBB
U1NFUlQobV90cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkp
OwogICAgIGlmICghbV9jdXJzb3IgfHwgbV9jdXJzb3JUeXBlID09IEluZGV4S2V5Q3Vyc29yKSB7
CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VS
UjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IDUwMTU4YTFmYmU2ZGZmOTkyYjYwNDY0YmIyMjVmNjRk
ZTNiODA1ZGMuLmYyZGZlNDFjYjYzNzliZjU1N2Y4ZTg1NGZiYWEyOGEwOGRmOTM5YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAg
LTE2MCw2ICsxNjAsMTEgQEAgUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gSURC
RGF0YWJhc2U6OnNldFZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGUKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCisgICAgaWYgKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKSB7CisgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0PiByZXF1ZXN0ID0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJ
REJBbnk6OmNyZWF0ZSh0aGlzKSwgdmVyc2lvbik7CiAgICAgbV9iYWNrZW5kLT5zZXRWZXJzaW9u
KHZlcnNpb24sIHJlcXVlc3QsIG1fZGF0YWJhc2VDYWxsYmFja3MsIGVjKTsKICAgICByZXR1cm4g
cmVxdWVzdDsKQEAgLTE3MywxMSArMTc4LDExIEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+
IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHVuc2lnbmVkIHNob3J0IG1vZGUgPSBJREJU
cmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKG1vZGVTdHJpbmcsIGVjKTsKKyAgICBJREJUcmFuc2Fj
dGlvbjo6TW9kZSBtb2RlID0gSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShtb2RlU3RyaW5n
LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChtX2Nsb3Nl
UGVuZGluZykgeworICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBtX2Nsb3Nl
UGVuZGluZykgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJ
RF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE5MSw3ICsxOTYsNyBA
QCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udAogICAgICAgICBBU1NFUlQoZWMpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9
IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoY29udGV4dCwgdHJhbnNhY3Rpb25CYWNrZW5kLCB0aGlz
KTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rp
b246OmNyZWF0ZShjb250ZXh0LCB0cmFuc2FjdGlvbkJhY2tlbmQsIG1vZGUsIHRoaXMpOwogICAg
IHRyYW5zYWN0aW9uQmFja2VuZC0+c2V0Q2FsbGJhY2tzKHRyYW5zYWN0aW9uLmdldCgpKTsKICAg
ICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQpAQCAtMjE0LDcgKzIxOSw3IEBAIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGNvbnNvbGVNZXNzYWdlLCAoIk51bWVyaWMgdHJhbnNhY3Rpb24gbW9kZXMgYXJlIGRlcHJlY2F0
ZWQgaW4gSURCRGF0YWJhc2UudHJhbnNhY3Rpb24uIFVzZSBcInJlYWRvbmx5XCIgb3IgXCJyZWFk
d3JpdGVcIi4iKSk7CiAgICAgY29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291
cmNlLCBMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2Up
OwotICAgIEF0b21pY1N0cmluZyBtb2RlU3RyaW5nID0gSURCVHJhbnNhY3Rpb246Om1vZGVUb1N0
cmluZyhtb2RlLCBlYyk7CisgICAgQXRvbWljU3RyaW5nIG1vZGVTdHJpbmcgPSBJREJUcmFuc2Fj
dGlvbjo6bW9kZVRvU3RyaW5nKElEQlRyYW5zYWN0aW9uOjpNb2RlKG1vZGUpLCBlYyk7CiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApp
bmRleCA3NDMzODhhZTE3ZjVkNzc2MmUzM2ZlMjRiYmM0YTQ3NDJlODE4OTU4Li5kYzQxMzQzOWE3
ZTVmY2VmY2Q3MWJhMTFlOWVhMzZiN2ZiN2MwY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmNwcApAQCAtMjExLDYgKzIxMSw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
cmV2ZXJ0QXV0b0luY3JlbWVudEtleUNhY2hlKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURC
S2V5PiBwcnBLZXksIFB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5z
YWN0aW9uKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0
SW50ZXJuYWwiKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2Fj
dGlvbjo6UkVBRF9PTkxZKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1
ZSA9IHBycFZhbHVlOwogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCAxYWVl
YWZkYmVmOTc4ZDNlMWM5MDUzNGI2YjUxM2QxMWNlMjczZWMxLi43NjYyMTViYjljMDA1ZGFlOWEz
YjAxN2Y1YmU5N2I3MmI5MzJkYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgSURCUmVxdWVz
dDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBw
cnBCYWNrZW5kCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIGJhY2tlbmQsIG1fc291cmNlLT5pZGJEYXRhYmFzZSgpLmdldCgpKTsKKyAgICBS
ZWZQdHI8SURCVHJhbnNhY3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJhY2tlbmQsIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9O
X0NIQU5HRSwgbV9zb3VyY2UtPmlkYkRhdGFiYXNlKCkuZ2V0KCkpOwogICAgIGJhY2tlbmQtPnNl
dENhbGxiYWNrcyhmcm9udGVuZC5nZXQoKSk7CiAgICAgbV90cmFuc2FjdGlvbiA9IGZyb250ZW5k
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHAKaW5kZXggYmM2NTU1NDE0OTcwMDU2NWZjZTAwMWU2OTA5ZGM5ZWQ2NTA1NTAyMC4u
ODUyYTAxYmM2NzgzYWQ2MGFhMDMxMTM3ZTI0ZTIzZTc4NjVkODM2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtNDEs
OSArNDEsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQs
IElEQkRhdGFiYXNlKiBkYikKK1Bhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlRyYW5zYWN0
aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQlRyYW5zYWN0aW9uOjpN
b2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYikKIHsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+
IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBiYWNrZW5k
LCBkYikpKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVm
KG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBiYWNrZW5kLCBtb2RlLCBkYikpKTsKICAgICB0
cmFuc2FjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJl
bGVhc2UoKTsKIH0KQEAgLTc5LDE1ICs3OSwxNiBAQCBjb25zdCBBdG9taWNTdHJpbmcmIElEQlRy
YW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlTGVnYWN5KCkKIH0KIAogCi1JREJUcmFuc2FjdGlvbjo6
SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQkRhdGFiYXNlKiBk
YikKK0lEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFj
a2VuZCwgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiKQogICAgIDog
QWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2JhY2tlbmQoYmFja2VuZCkK
ICAgICAsIG1fZGF0YWJhc2UoZGIpCi0gICAgLCBtX21vZGUobV9iYWNrZW5kLT5tb2RlKCkpCisg
ICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1fdHJhbnNhY3Rpb25GaW5pc2hlZChmYWxzZSkKICAg
ICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fYmFja2VuZCk7Cisg
ICAgQVNTRVJUKG1fbW9kZSA9PSBtX2JhY2tlbmQtPm1vZGUoKSk7CiAgICAgSURCUGVuZGluZ1Ry
YW5zYWN0aW9uTW9uaXRvcjo6YWRkUGVuZGluZ1RyYW5zYWN0aW9uKG1fYmFja2VuZC5nZXQoKSk7
CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2Fu
IGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CkBAIC0yNjIsNyAr
MjYzLDcgQEAgYm9vbCBJREJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QK
ICAgICByZXR1cm4gIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCB8fCBBY3RpdmVET01PYmplY3Q6Omhh
c1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCi11bnNpZ25lZCBzaG9ydCBJREJUcmFuc2FjdGlvbjo6
c3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMp
CitJREJUcmFuc2FjdGlvbjo6TW9kZSBJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKGNvbnN0
IFN0cmluZyYgbW9kZVN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1vZGVT
dHJpbmcuaXNOdWxsKCkKICAgICAgICAgfHwgbW9kZVN0cmluZyA9PSBJREJUcmFuc2FjdGlvbjo6
bW9kZVJlYWRPbmx5KCkpCkBAIC0yNzAsMTAgKzI3MSwxMCBAQCB1bnNpZ25lZCBzaG9ydCBJREJU
cmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgRXhjZXB0
aW9uQwogICAgIGlmIChtb2RlU3RyaW5nID09IElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRl
KCkpCiAgICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURTsKICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfVFlQRV9FUlI7Ci0gICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmlu
ZyYgSURCVHJhbnNhY3Rpb246Om1vZGVUb1N0cmluZyh1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVU
b1N0cmluZyhJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
aAppbmRleCAyZjdiYWJmYzRiMWNkOTEyZWQ2Y2RiZDg0MDc0NTA5MWVhZDdhZjNlLi40Zjk1ZjVi
MTlkMDk0OThiOGMwM2FjNjJlODE2ZTk3ODM4ODIzMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTQ4LDIzICs0OCwyMyBA
QCBjbGFzcyBJREJPYmplY3RTdG9yZTsKIAogY2xhc3MgSURCVHJhbnNhY3Rpb24gOiBwdWJsaWMg
SURCVHJhbnNhY3Rpb25DYWxsYmFja3MsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBJREJEYXRhYmFzZSopOwotICAgIHZpcnR1YWwgfklEQlRy
YW5zYWN0aW9uKCk7Ci0KICAgICBlbnVtIE1vZGUgewogICAgICAgICBSRUFEX09OTFkgPSAwLAog
ICAgICAgICBSRUFEX1dSSVRFID0gMSwKICAgICAgICAgVkVSU0lPTl9DSEFOR0UgPSAyCiAgICAg
fTsKIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlPiwgTW9kZSwgSURCRGF0YWJhc2UqKTsKKyAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlvbigp
OworCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVJlYWRPbmx5KCk7CiAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVJlYWRXcml0ZSgpOwogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIG1vZGVWZXJzaW9uQ2hhbmdlKCk7CiAgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgbW9kZVJlYWRPbmx5TGVnYWN5KCk7CiAgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgbW9kZVJlYWRXcml0ZUxlZ2FjeSgpOwogCi0gICAgc3RhdGljIHVuc2lnbmVk
IHNob3J0IHN0cmluZ1RvTW9kZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVRvU3RyaW5nKHVuc2lnbmVkIHNob3J0LCBF
eGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIE1vZGUgc3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2Rl
VG9TdHJpbmcoTW9kZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiBiYWNrZW5kKCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29u
c3Q7CkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURC
VHJhbnNhY3Rpb25DYWxsYmFja3M+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBJREJUcmFuc2Fj
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+LCBJREJEYXRhYmFzZSopOworICAgIElEQlRyYW5zYWN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4sIE1vZGUsIElEQkRhdGFiYXNlKik7CiAKICAgICB2b2lkIGVucXVldWVFdmVudChQYXNz
UmVmUHRyPEV2ZW50Pik7CiAgICAgdm9pZCBjbG9zZU9wZW5DdXJzb3JzKCk7CkBAIC0xMzMsNyAr
MTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7Ci0g
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgbV9tb2RlOworICAgIGNvbnN0IE1vZGUgbV9tb2RlOwog
ICAgIGJvb2wgbV90cmFuc2FjdGlvbkZpbmlzaGVkOyAvLyBJcyBpdCBwb3NzaWJsZSB0aGF0IHdl
J2xsIGZpcmUgYW55IG1vcmUgZXZlbnRzIG9yIGFsbG93IGFueSBuZXcgcmVxdWVzdHM/IElmIG5v
dCwgd2UncmUgZmluaXNoZWQuCiAgICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkOwogICAgIFJlZlB0
cjxET01FcnJvcj4gbV9lcnJvcjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyMWNjYWQyZmFkYzUxYzE5NGZjNDFlODFhMjll
Njg5ZjA4MTdlZjk3Li5lMjI3MTc2YmQ2NTk4ZmNmNWFjYzE2YWZmYzMyYWUzMjUzYmVhMGNkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTItMDYtMTMgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ3JlYXRpbmcgYSB0cmFuc2FjdGlv
biBmcm9tIHdpdGhpbiBhIHRyYW5zYWN0aW9uIGNhbGxiYWNrIHNob3VsZCBmYWlsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDU0NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvY3Vyc29yLXVwZGF0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvZGF0YWJhc2UtYmFzaWNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2N1cnNvci11cGRhdGUtdXBkYXRlcy1pbmRleGVzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItdXBk
YXRlLXVwZGF0ZXMtaW5kZXhlcy5qczoKKyAgICAgICAgKHNldHVwT2JqZWN0U3RvcmVBbmRDcmVh
dGVJbmRleEFuZEFkZC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlKToKKyAgICAgICAgKHNldHVwT2Jq
ZWN0U3RvcmVBbmRDcmVhdGVJbmRleEFuZEFkZCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMuanM6CisgICAg
ICAgIChjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChmaW5hbENoZWNrKToKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZW1vdmUtb2JqZWN0c3RvcmUu
anM6CisgICAgICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKHBv
c3RTZXRWZXJzaW9uMi5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChwb3N0U2V0VmVyc2lv
bjIpOgorICAgICAgICAoZGVsZXRlU2Vjb25kT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLmpzOgorICAgICAgICAob3BlbkJh
c2ljQ3Vyc29yKToKKyAgICAgICAgKGtleUN1cnNvcik6CisgICAgICAgICh0ZXN0UmVhZE9ubHkp
OgorICAgICAgICAoYXR0ZW1wdFVwZGF0ZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2RhdGFiYXNlLWJhc2ljcy5qczoKKyAgICAgICAgKG9wZW5TdWNjZXNzLnJlcXVl
c3Qub25zdWNjZXNzKToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNp
b25TdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25TdWNjZXNz
KToKKyAgICAgICAgKGNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpzOgorICAgICAgICAodGVz
dCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZl
LWV4cGVjdGVkLnR4dDoKKwogMjAxMi0wNi0xMiAgRWRhZW5hIFNhbGluYXMgSmFzc28gIDxlZGFl
bmFAYXBwbGUuY29tPgogCiAgICAgICAgIENhbid0IHNldCBlbC50eXBlIG9uIGEgPGJ1dHRvbj4g
ZWxlbWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LXVwZGF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItdXBkYXRlLWV4cGVjdGVkLnR4dAppbmRleCA1NWQ5NTY2OGQ5ZWU2ZDRhYWY4MTI4ZGJkOTQ5
NDEwYzlkYmE1YmRkLi41NzEyMjg3MTUyZmM0NzRhZjJiNWVlOTUwYjcxYjIwM2Y5OTg3NWFlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBk
YXRlLWV4cGVjdGVkLnR4dApAQCAtMTY2LDYgKzE2Niw3IEBAIEV4cGVjdGluZyBleGNlcHRpb24g
ZnJvbSBldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IGNvdW50ZXIsIG51bWJlcjogY291
bnRlCiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgogUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlv
bi5JTlZBTElEX1NUQVRFX0VSUgogUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitl
dmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCk7CiBrZXlDdXJzb3IoKQogUEFTUyBldmVudC50
YXJnZXQucmVzdWx0LmtleSBpcyBjb3VudGVyICsgMTAwCiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSBpcyBjb3VudGVyCkBAIC0xNzMsNiArMTc0LDcgQEAgRXhwZWN0aW5nIGV4
Y2VwdGlvbiBmcm9tIGV2ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKHtpZDogY291bnRlciwgbnVt
YmVyOiBjb3VudGUKIFBBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCiBQQVNTIGNvZGUgaXMgRE9N
RXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCiBQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVF
cnJvcicKK2V2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKTsKIGtleUN1cnNvcigpCiBQQVNT
IGV2ZW50LnRhcmdldC5yZXN1bHQua2V5IGlzIGNvdW50ZXIgKyAxMDAKIFBBU1MgZXZlbnQudGFy
Z2V0LnJlc3VsdC5wcmltYXJ5S2V5IGlzIGNvdW50ZXIKQEAgLTE4MCw2ICsxODIsNyBAQCBFeHBl
Y3RpbmcgZXhjZXB0aW9uIGZyb20gZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lkOiBjb3Vu
dGVyLCBudW1iZXI6IGNvdW50ZQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KIFBBU1MgY29k
ZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKIFBBU1MgZW5hbWUgaXMgJ0ludmFs
aWRTdGF0ZUVycm9yJworZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpOwoga2V5Q3Vyc29y
KCkKIFBBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkgaXMgY291bnRlciArIDEwMAogUEFTUyBl
dmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkgaXMgY291bnRlcgpAQCAtMTg3LDggKzE5MCwz
OCBAQCBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUo
e2lkOiBjb3VudGVyLCBudW1iZXI6IGNvdW50ZQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4K
IFBBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKIFBBU1MgZW5hbWUg
aXMgJ0ludmFsaWRTdGF0ZUVycm9yJworZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpOwog
a2V5Q3Vyc29yKCkKIFBBU1MgY291bnRlciBpcyA1CitvcGVuQmFzaWNDdXJzb3IoKQordHJhbnMg
PSBkYi50cmFuc2FjdGlvbignYmFzaWNTdG9yZScpCit0cmFucy5vYmplY3RTdG9yZSgnYmFzaWNT
dG9yZScpCitvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlKQorYXR0ZW1wdFVwZGF0ZSgp
CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gY3Vyc29yLnVwZGF0ZSgnbXlVcGRhdGVkVmFsdWUn
KQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4
Y2VwdGlvbi5SRUFEX09OTFlfRVJSCitQQVNTIGVuYW1lIGlzICdSZWFkT25seUVycm9yJworY3Vy
c29yLmNvbnRpbnVlKCkKK2F0dGVtcHRVcGRhdGUoKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9t
IGN1cnNvci51cGRhdGUoJ215VXBkYXRlZFZhbHVlJykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUgorUEFT
UyBlbmFtZSBpcyAnUmVhZE9ubHlFcnJvcicKK2N1cnNvci5jb250aW51ZSgpCithdHRlbXB0VXBk
YXRlKCkKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBjdXJzb3IudXBkYXRlKCdteVVwZGF0ZWRW
YWx1ZScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1JlYWRPbmx5RXJyb3In
CitjdXJzb3IuY29udGludWUoKQorYXR0ZW1wdFVwZGF0ZSgpCitFeHBlY3RpbmcgZXhjZXB0aW9u
IGZyb20gY3Vyc29yLnVwZGF0ZSgnbXlVcGRhdGVkVmFsdWUnKQorUEFTUyBFeGNlcHRpb24gd2Fz
IHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJS
CitQQVNTIGVuYW1lIGlzICdSZWFkT25seUVycm9yJworY3Vyc29yLmNvbnRpbnVlKCkKK2F0dGVt
cHRVcGRhdGUoKQogdHJhbnNhY3Rpb25Db21wbGV0ZSgpCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Rh
dGFiYXNlLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kYXRhYmFzZS1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IDhiMDYxNGVhMjQ2MmZiNmJkYjU4
ZTIxMmFiNzZjZjIzMzRiZGM1YzAuLjc5MGYyMGM3ODNlNThhY2FmOTVkZDQzMGZiYjUyZWY1OWIy
MDdhNDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNl
LWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
ZGF0YWJhc2UtYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtOCwxMiArOCwxNCBAQCBpbmRleGVkREIg
PSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4
ZWREQiB8fCBzZWxmLgogaW5kZXhlZERCLm9wZW4oJ2RhdGFiYXNlLWJhc2ljcycpCiBkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQKIGRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykKLXNldFZlcnNp
b25TdWNjZXNzKCk6Ci10cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQKLVBBU1MgdHJhbnMgaXMg
bm9uLW51bGwuCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc2V0VmVyc2lvblN1Y2Nlc3Mo
KToKIFRlc3Rpbmcgc2V0VmVyc2lvbi4KLWRiLnNldFZlcnNpb24oInZlcnNpb24gYSIpCityZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbigidmVyc2lvbiBhIikKK0V4cGVjdGluZyBleGNlcHRpb24gZnJv
bSBkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGIiKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4K
K1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUg
aXMgJ0ludmFsaWRTdGF0ZUVycm9yJwogZGIuc2V0VmVyc2lvbigidmVyc2lvbiBiIikKIFBBU1Mg
ZGIudmVyc2lvbiBpcyAidmVyc2lvbiBiIgogUEFTUyBkYi5uYW1lIGlzICJkYXRhYmFzZS1iYXNp
Y3MiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1
cnNvci11cGRhdGUtdXBkYXRlcy1pbmRleGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMtZXhw
ZWN0ZWQudHh0CmluZGV4IDBkNTBiNjM1YTBjMzRiZWI0YzA1YWNjMWE5MTk2YjI2ODM2MjMxZGMu
LjY1YTg5YWRlNmI3YTZkZWI2NGM2ODkwYjUyNTkyMDdmZjdlY2UwYjAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVz
LWluZGV4ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMtZXhwZWN0ZWQudHh0CkBAIC0y
OSw2ICsyOSwxMCBAQCBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFt
ZSwgaW5mby5vcHRpb25zKTsKIGluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2RhdGFf
aW5kZXgnLCAnZGF0YScsIHsgdW5pcXVlOiBmYWxzZSB9KTsKIHVuaXF1ZUluZGV4ID0gb2JqZWN0
U3RvcmUuY3JlYXRlSW5kZXgoJ3VuaXF1ZV9kYXRhX2luZGV4JywgJ2RhdGEnLCB7IHVuaXF1ZTog
dHJ1ZSB9KTsKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoaW5mby5lbnRyeSwgaW5mby5rZXkp
OwordHJhbnMgPSBkYi50cmFuc2FjdGlvbihpbmZvLm5hbWUsICdyZWFkd3JpdGUnKQorb2JqZWN0
U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShpbmZvLm5hbWUpCitpbmRleCA9IG9iamVjdFN0b3Jl
LmluZGV4KCdkYXRhX2luZGV4JykKK3VuaXF1ZUluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3Vu
aXF1ZV9kYXRhX2luZGV4JykKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7CiBj
dXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsKIHZhbHVlID0gY3Vyc29yLnZhbHVlOwpAQCAtNDcsNiAr
NTEsMTAgQEAgb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGlu
Zm8ub3B0aW9ucyk7CiBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdkYXRhX2luZGV4
JywgJ2RhdGEnLCB7IHVuaXF1ZTogZmFsc2UgfSk7CiB1bmlxdWVJbmRleCA9IG9iamVjdFN0b3Jl
LmNyZWF0ZUluZGV4KCd1bmlxdWVfZGF0YV9pbmRleCcsICdkYXRhJywgeyB1bmlxdWU6IHRydWUg
fSk7CiByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGluZm8uZW50cnkpOwordHJhbnMgPSBkYi50
cmFuc2FjdGlvbihpbmZvLm5hbWUsICdyZWFkd3JpdGUnKQorb2JqZWN0U3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZShpbmZvLm5hbWUpCitpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KCdkYXRhX2lu
ZGV4JykKK3VuaXF1ZUluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3VuaXF1ZV9kYXRhX2luZGV4
JykKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7CiBjdXJzb3IgPSByZXF1ZXN0
LnJlc3VsdDsKIHZhbHVlID0gY3Vyc29yLnZhbHVlOwpAQCAtNjUsNiArNzMsMTAgQEAgb2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7CiBp
bmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdkYXRhX2luZGV4JywgJ2RhdGEnLCB7IHVu
aXF1ZTogZmFsc2UgfSk7CiB1bmlxdWVJbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd1
bmlxdWVfZGF0YV9pbmRleCcsICdkYXRhJywgeyB1bmlxdWU6IHRydWUgfSk7CiByZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKGluZm8uZW50cnkpOwordHJhbnMgPSBkYi50cmFuc2FjdGlvbihpbmZv
Lm5hbWUsICdyZWFkd3JpdGUnKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShpbmZv
Lm5hbWUpCitpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KCdkYXRhX2luZGV4JykKK3VuaXF1ZUlu
ZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3VuaXF1ZV9kYXRhX2luZGV4JykKIHJlcXVlc3QgPSBv
YmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7CiBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsKIHZhbHVl
ID0gY3Vyc29yLnZhbHVlOwpAQCAtODMsNiArOTUsMTAgQEAgb2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7CiBpbmRleCA9IG9iamVjdFN0
b3JlLmNyZWF0ZUluZGV4KCdkYXRhX2luZGV4JywgJ2RhdGEnLCB7IHVuaXF1ZTogZmFsc2UgfSk7
CiB1bmlxdWVJbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd1bmlxdWVfZGF0YV9pbmRl
eCcsICdkYXRhJywgeyB1bmlxdWU6IHRydWUgfSk7CiByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KGluZm8uZW50cnkpOwordHJhbnMgPSBkYi50cmFuc2FjdGlvbihpbmZvLm5hbWUsICdyZWFkd3Jp
dGUnKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShpbmZvLm5hbWUpCitpbmRleCA9
IG9iamVjdFN0b3JlLmluZGV4KCdkYXRhX2luZGV4JykKK3VuaXF1ZUluZGV4ID0gb2JqZWN0U3Rv
cmUuaW5kZXgoJ3VuaXF1ZV9kYXRhX2luZGV4JykKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVu
Q3Vyc29yKCk7CiBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsKIHZhbHVlID0gY3Vyc29yLnZhbHVl
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXVwZGF0ZXMtaW5k
ZXhlcy5qcwppbmRleCBlYzdkOWJiOWJiNjZlZTRlMzUzNzhlOWNhYjhhZGZiOTEzYzFiYzkwLi45
NWIwMzlhMGUzM2ZlMWM2YTViOGU2ZTk2MTk5MzM5YjdiZTg0NzhjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRl
LXVwZGF0ZXMtaW5kZXhlcy5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXVwZGF0ZXMtaW5kZXhlcy5qcwpAQCAtNTYs
NiArNTYsNyBAQCBmdW5jdGlvbiBzZXRWZXJzaW9uKCkKIAogZnVuY3Rpb24gc2V0dXBPYmplY3RT
dG9yZUFuZENyZWF0ZUluZGV4QW5kQWRkKCkKIHsKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBldmVu
dC50YXJnZXQucmVzdWx0OwogICAgIGRlYnVnKCJzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5k
ZXgoKToiKTsKICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogCkBAIC02OCw4ICs2OSwx
NSBAQCBmdW5jdGlvbiBzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXhBbmRBZGQoKQogICAg
IH0gZWxzZSB7CiAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKGluZm8uZW50cnkpOyIpOwogICAgIH0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5DdXJzb3I7CiAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24gKCkgeworICAgICAg
ICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKGluZm8ubmFtZSwgJ3JlYWR3cml0
ZScpIik7CisgICAgICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3Rv
cmUoaW5mby5uYW1lKSIpOworICAgICAgICBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3Jl
LmluZGV4KCdkYXRhX2luZGV4JykiKTsKKyAgICAgICAgZXZhbEFuZExvZygidW5pcXVlSW5kZXgg
PSBvYmplY3RTdG9yZS5pbmRleCgndW5pcXVlX2RhdGFfaW5kZXgnKSIpOworICAgICAgICBvcGVu
Q3Vyc29yKCk7CisgICAgfTsKIH0KIAogZnVuY3Rpb24gb3BlbkN1cnNvcigpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3Qt
c3RvcmUtcmVtb3ZlLXZhbHVlcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvcmVzb3VyY2VzL29iamVjdC1zdG9yZS1yZW1vdmUtdmFsdWVzLmpzCmluZGV4IDJhMGRl
YTc5ZmVmYjhiMDE1N2JlZmVhYWZhOTcwOTE4ZTRmMjk0N2UuLmQ2NjExMWY5ZDZmOWM4NDJmNDUx
M2MyNjZiNmE2MmEzNDM4MmExMmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1zdG9yZS1yZW1vdmUtdmFsdWVzLmpzCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVj
dC1zdG9yZS1yZW1vdmUtdmFsdWVzLmpzCkBAIC03MSw2ICs3MSw3IEBAIGZ1bmN0aW9uIHNldFZl
cnNpb24oKQogCiBmdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZSgpCiB7CisgICAgdHJhbnNhY3Rp
b24gPSBldmVudC50YXJnZXQucmVzdWx0OwogICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CiAKICAgICBpZiAodGVzdC5rZXlOYW1lKSB7CkBAIC0xMTUsNyArMTE2LDcgQEAgZnVuY3Rpb24g
ZmluYWxDaGVjaygpCiB7CiAgICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0ID09
PSB1bmRlZmluZWQiKTsKICAgICBpKys7Ci0gICAgc2V0VmVyc2lvbigpOworICAgIHRyYW5zYWN0
aW9uLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uOwogfQogCiB0ZXN0KCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9yZXNvdXJjZXMvcmVtb3ZlLW9iamVjdHN0b3JlLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVtb3ZlLW9iamVjdHN0b3JlLmpzCmlu
ZGV4IDc3NzBlMDhkZGU4ZGRjZmQ4MmYwZTI0MmUyYzFmZWM1MDFkNWMzYWQuLjljODU2OWFmMTZm
ZWM3MjZkMDMzZDg0YjkxYWRiZTU1ODFjY2M1NzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlbW92ZS1vYmplY3RzdG9yZS5qcwor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZW1v
dmUtb2JqZWN0c3RvcmUuanMKQEAgLTM0LDIxICszNCwxNyBAQCBmdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCiAKIGZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQogeworICAgIHZh
ciB2MV90cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKIAogICAgIG9iamVjdFN0b3JlTmFtZSA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlTmFtZSA9ICdPYmplY3RzJzsiKTsKICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCB7IGtl
eVBhdGg6ICdmb28nIH0pOyIpOwogCi0gICAgYWRkZWRDb3VudCA9IGV2YWxBbmRMb2coImFkZGVk
Q291bnQgPSAwOyIpOwogICAgIGZvciAoaSA9IDA7IGkgPCAxMDA7IGkrKykgewogICAgICAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7Zm9vOiBpfSk7
Iik7CiAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAg
ICBpZiAoKythZGRlZENvdW50ID09IDEwMCkgewotICAgICAgICAgICAgICAgIGNoZWNrT2JqZWN0
U3RvcmUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgIH0KKyAgICB2MV90cmFuc2Fj
dGlvbi5vbmNvbXBsZXRlID0gY2hlY2tPYmplY3RTdG9yZTsKIH0KIAogZnVuY3Rpb24gY2hlY2tP
YmplY3RTdG9yZSgpCkBAIC02Myw2ICs1OSw3IEBAIGZ1bmN0aW9uIGNoZWNrT2JqZWN0U3RvcmUo
KQogCiBmdW5jdGlvbiBwb3N0U2V0VmVyc2lvbjIoKQogeworICAgIHZhciB2Ml90cmFuc2FjdGlv
biA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0
U3RvcmUob2JqZWN0U3RvcmUubmFtZSk7Iik7CiAgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3Jl
TmFtZXMubGVuZ3RoIiwgIjAiKTsKIApAQCAtNzUsMTQgKzcyLDE0IEBAIGZ1bmN0aW9uIHBvc3RT
ZXRWZXJzaW9uMigpCiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewog
ICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJudWxsIik7CiAgICAgICAg
IGRlbGV0ZVNlY29uZE9iamVjdFN0b3JlKCk7Ci0gICAgfQorICAgIH07CisgICAgdjJfdHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IHNldFZlcnNpb24zOwogfQogCiBmdW5jdGlvbiBkZWxldGVTZWNv
bmRPYmplY3RTdG9yZSgpCiB7CiAgICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmUubmFtZSk7Iik7CiAgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMu
bGVuZ3RoIiwgIjAiKTsKLSAgICBzZXRWZXJzaW9uMygpOwogfQogCiBmdW5jdGlvbiBzZXRWZXJz
aW9uMygpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3Vyc29yLXVwZGF0ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9jdXJzb3ItdXBkYXRlLmpzCmluZGV4IGQwMmM2MjU0MzMzODAxMTI4MTEyMTBkZDgzNDMz
NGQ2NTRiODQ5NTIuLjc4OWU2MmQ4OWM3ZTU2ODU5NWJlZTJkZjhhMDRkYThmYzA0ZjhjMjEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3It
dXBkYXRlLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
dXJzb3ItdXBkYXRlLmpzCkBAIC01OSw3ICs1OSw3IEBAIGZ1bmN0aW9uIG9wZW5CYXNpY0N1cnNv
cigpCiAgICAgZGVidWcoIm9wZW5CYXNpY0N1cnNvcigpIik7CiAgICAgZXZhbEFuZExvZygidHJh
bnMgPSBkYi50cmFuc2FjdGlvbihbJ2Jhc2ljU3RvcmUnLCAnYXV0b0luY3JlbWVudFN0b3JlJywg
J2tleVBhdGhTdG9yZSddLCAncmVhZHdyaXRlJykiKTsKICAgICB0cmFucy5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9u
Q29tcGxldGU7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RSZWFkT25seTsKIAogICAgIGtl
eVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgibXlLZXkxIik7CiAgICAgc2VsZi5vYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsK
QEAgLTIwMCw3ICsyMDAsMzIgQEAgZnVuY3Rpb24ga2V5Q3Vyc29yKCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRT
dGF0ZUVycm9yJyIpOwogCiAgICAgY291bnRlcisrOwotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKTsKKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVl
KCk7Iik7Cit9CisKK2Z1bmN0aW9uIHRlc3RSZWFkT25seSgpCit7CisgICAgZGVidWcoIm9wZW5C
YXNpY0N1cnNvcigpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbign
YmFzaWNTdG9yZScpIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlOworCisgICAg
a2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJteUtleTEiKTsKKyAgICBzZWxmLm9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2Jhc2ljU3RvcmUnKSIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKGtleVJh
bmdlKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXR0ZW1wdFVwZGF0ZTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYXR0
ZW1wdFVwZGF0ZSgpCit7CisgICAgZGVidWcoImF0dGVtcHRVcGRhdGUoKSIpOworICAgIHNlbGYu
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICBpZiAoc2VsZi5jdXJzb3IpIHsKKyAg
ICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiY3Vyc29yLnVwZGF0ZSgnbXlVcGRhdGVkVmFs
dWUnKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLlJFQURfT05MWV9FUlIiLCAiJ1JlYWRPbmx5RXJyb3InIik7CisgICAgICAgIGV2YWxBbmRM
b2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgfQogfQogCiBmdW5jdGlvbiB0cmFuc2FjdGlv
bkNvbXBsZXRlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9kYXRhYmFzZS1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvZGF0YWJhc2UtYmFzaWNzLmpzCmluZGV4IGIyZGY3Mzk4OGNlY2JmZDcwNDIy
OGM3MDI5M2Q5ZGFlNGM1ZmEwOTUuLmIwM2I3ZDBkMTNlNDYxMzQ4OGJmNmRiOTUyYmNhM2EwZDkx
NWEzYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9kYXRhYmFzZS1iYXNpY3MuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2RhdGFiYXNlLWJhc2ljcy5qcwpAQCAtMTksMjIgKzE5LDMwIEBAIGZ1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKICAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CiAKICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgICAgICB2YXIgdHJhbnNhY3Rpb24gPSBldmVudC50
YXJnZXQucmVzdWx0OworICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gc2V0VmVyc2lv
blN1Y2Nlc3M7CisgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICB9OwogICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwogfQogCiBmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCiB7CiAgICAgZGVidWco
InNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlTm9uTnVsbCgidHJhbnMi
KTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0KLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogCiAgICAgZGVidWcoIlRlc3Rpbmcgc2V0VmVyc2lv
bi4iKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVyc2lvbigidmVyc2lvbiBh
IiknKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25BZ2FpbjsKKyAgICBldmFs
QW5kTG9nKCdyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigidmVyc2lvbiBhIiknKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisKKyAgICAgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbignZGIuc2V0VmVyc2lvbigidmVyc2lvbiBiIiknLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFs
aWRTdGF0ZUVycm9yJyIpOworICAgICAgICB2YXIgdHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQu
cmVzdWx0OworICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkFnYWlu
OworICAgICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgfTsKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
IH0KIApAQCAtNTcsNyArNjUsMTAgQEAgZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmUoKQogCiAg
ICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdDEy
MyIpJyk7CiAgICAgY2hlY2tPYmplY3RTdG9yZSgpOwotICAgIGNvbW1pdEFuZENvbnRpbnVlKCk7
CisKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0U2V0VmVyc2lvbkFib3J0OworICAgIHRyYW5zYWN0aW9u
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKIH0KIAogZnVuY3Rpb24gY2hlY2tP
YmplY3RTdG9yZSgpCkBAIC02OSwxMCArODAsNiBAQCBmdW5jdGlvbiBjaGVja09iamVjdFN0b3Jl
KCkKICAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygndGVzdDEyMycp
IiwgInRydWUiKTsKIH0KIAotZnVuY3Rpb24gY29tbWl0QW5kQ29udGludWUoKQotewotICAgIHNl
bGYuc2V0VGltZW91dCh0ZXN0U2V0VmVyc2lvbkFib3J0LCAwKTsKLX0KIAogZnVuY3Rpb24gdGVz
dFNldFZlcnNpb25BYm9ydCgpCiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5q
cwppbmRleCA4MWFhNThhODgzMjk1ZTQ3MTI3ZDZhOTMxNjRiYmNlZDgzOWIwOTFhLi44NmUyNGNl
Y2M0MjMzYjhjNzhkNjI5NmFmOTk1MjkwNjNmMzRjNTllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpz
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNo
YW5nZS1leGNsdXNpdmUuanMKQEAgLTUsNyArNSw4IEBAIGlmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKIAogZGVzY3JpcHRpb24oIkVuc3VyZSBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiBkb2Vz
bid0IHJ1biBjb25jdXJyZW50bHkgd2l0aCBvdGhlciB0cmFuc2FjdGlvbnMiKTsKIAotZnVuY3Rp
b24gdGVzdCgpIHsKK2Z1bmN0aW9uIHRlc3QoKQorewogICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CiAgICAgb3BlbkRCQ29ubmVjdGlvbigpOwogfQpAQCAtNDIsMTAgKzQzLDEyIEBAIGZ1bmN0
aW9uIGluU2V0VmVyc2lvbigpCiAgICAgZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9ICdWRVJTSU9O
X0NIQU5HRSBzdGFydGVkJyIpOwogCiAgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUnKSIpOworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKCd0ZXN0LXN0b3JlJykiLCAiRE9NRXhjZXB0aW9u
LklOVkFMSURfU1RBVEVfRVJSIiwgIidJbnZhbGlkU3RhdGVFcnJvciciKTsKICAgICBzZWxmLmNv
dW50ID0gMDsKICAgICBkb19hc3luY19wdXRzKCk7CiAKLSAgICBmdW5jdGlvbiBkb19hc3luY19w
dXRzKCkgeworICAgIGZ1bmN0aW9uIGRvX2FzeW5jX3B1dHMoKQorICAgIHsKICAgICAgICAgdmFy
IHJlcSA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCgiICsgY291bnQgKyAiLCAiICsgY291bnQgKyAi
KSIpOwogICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogICAg
ICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNp
dmUtZXhwZWN0ZWQudHh0CmluZGV4IGYzMDUxNGQzMjE2NTA0Yjg3ZTIzMDc0MGE3YjRkZjFkZTE1
YTIwYzQuLjZjNWEzMzk1NWQ2MWFhY2Q2ZTIyM2RlMzk5ZmEyYmY3NTVhNjY4MDQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2
ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lv
bi1jaGFuZ2UtZXhjbHVzaXZlLWV4cGVjdGVkLnR4dApAQCAtMTYsNiArMTYsMTAgQEAgc2V0VmVy
c2lvbigpIGNhbGxiYWNrCiBzdGFydGluZyB3b3JrIGluIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0
aW9uCiBzZWxmLnN0YXRlID0gJ1ZFUlNJT05fQ0hBTkdFIHN0YXJ0ZWQnCiBzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlJykKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBk
Yi50cmFuc2FjdGlvbigndGVzdC1zdG9yZScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgor
UEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBp
cyAnSW52YWxpZFN0YXRlRXJyb3InCiBzdG9yZS5wdXQoMCwgMCkKIGluIHB1dCdzIG9uc3VjY2Vz
cwogc3RvcmUucHV0KDEsIDEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147436</attachid>
            <date>2012-06-13 15:59:46 -0700</date>
            <delta_ts>2012-06-14 01:06:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80547-20120613155946.patch</filename>
            <type>text/plain</type>
            <size>31854</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVmOWQ2NmJiMjA3ZmMw
NTI3Y2I2NzQ3YzA1NWNjYTY5NTA3NGNiYi4uMzNjNmEzMDUwZDViMmVlNmRjNDQ2ZWUyMWU3NDBj
ZjFlNmIxNjYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA2LTEzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IENy
ZWF0aW5nIGEgdHJhbnNhY3Rpb24gZnJvbSB3aXRoaW4gYSB0cmFuc2FjdGlvbiBjYWxsYmFjayBz
aG91bGQgZmFpbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA1NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcmV2ZW50IGNyZWF0aW9uIG9mIGEgdHJhbnNhY3Rpb24sIHZpYSBJREJEYXRhYmFzZS50cmFu
c2FjdGlvbigpCisgICAgICAgIG9yIElEQkRhdGFiYXNlLnNldFZlcnNpb24oKSwgZnJvbSBpbnNp
ZGUgYSBzZXRWZXJzaW9uKCkKKyAgICAgICAgdHJhbnNhY3Rpb24sIGFzIHBlciBzcGVjLiBVcGRh
dGUgbWFueSB0ZXN0cyB0byBkZWFsIHdpdGggdGhpcy4KKworICAgICAgICBUZXN0IHJlc3RydWN0
dXJpbmcgdW5jb3ZlcmVkIHNvbWUgaW5jb25zaXN0ZW5jaWVzIGluIHRyYW5zYWN0aW9uCisgICAg
ICAgIG1vZGUgaGFuZGxpbmcuIFNvIGFsc28gZG8gc29tZSBtaW5vciBjbGVhbnVwIGluIHRoZSB3
YXkgdGhlCisgICAgICAgIHRyYW5zYWN0aW9uIG1vZGUgaXMgcGFzc2VkIGJldHdlZW4gdGhlIGZy
b250ZW5kIGFuZCBiYWNrZW5kCisgICAgICAgIHRyYW5zYWN0aW9uIG9iamVjdHMsIGFuZCBhZGQg
YWRkaXRpb25hbCBhc3NlcnRzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dXBkYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6dXBkYXRlKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJhbnNhY3Rp
b24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0
SW50ZXJuYWwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpJ
REJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c3RyaW5n
VG9Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjptb2RlVG9TdHJpbmcp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAg
IChJREJUcmFuc2FjdGlvbik6CisKIDIwMTItMDYtMTIgIFdlaSBKYW1lcyAgPGphbWVzLndlaUBp
bnRlbC5jb20+CiAKICAgICAgICAgd2ViY29yZSBzaG91bGQgZGVwZW5kIG9uIHdlYmNvcmVfYXJt
X25lb24gZm9yIG9ubHkgYXJtIHRhcmdldF9hcmNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCBmYzc5Mzc1MGMxOTI5NzZjMTg4MTMxN2Jl
ZjQ5NjRjZWU4NzNjMmY3Li45ZDIxM2Y0NjBiNDQxNjM1ZDU2ZWNmMDlkYjM3NTNlNmVmN2VmMDlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAK
QEAgLTEyOCw2ICsxMjgsMTIgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVw
ZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmUKICAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CisKKyAgICBpZiAobV90cmFuc2FjdGlvbi0+aXNSZWFkT25seSgpKSB7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHZhbHVlID0gcHJwVmFsdWU7CiAgICAgaWYgKHZhbHVlLT5ibG9iVVJMcygpLnNpemUoKSA+IDAp
IHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBCbG9iL0ZpbGUvRmlsZUxpc3Qgc3VwcG9ydApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFj
a2VuZEltcGwuY3BwCmluZGV4IDEwZDJkYWUwMzgyMWY2MTM1YTI2OWI5ZDQ2OTRjN2QxZWYzNzg4
ZGIuLmY1NDhjNmFhMDllOTQyNDkyZTYzZDVkMDgzMzE0ODIxZjI2MTE0N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW1wbC5jcHAKQEAgLTkyLDYgKzkyLDcgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IElEQkN1cnNvckJhY2tlbmRJbXBsOjp2YWx1ZSgpIGNvbnN0CiB2b2lkIElEQkN1cnNvckJh
Y2tlbmRJbXBsOjp1cGRhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVl
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjp1cGRhdGUiKTsKKyAgICBB
U1NFUlQobV90cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkp
OwogICAgIGlmICghbV9jdXJzb3IgfHwgbV9jdXJzb3JUeXBlID09IEluZGV4S2V5Q3Vyc29yKSB7
CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VS
UjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IDUwMTU4YTFmYmU2ZGZmOTkyYjYwNDY0YmIyMjVmNjRk
ZTNiODA1ZGMuLmYyZGZlNDFjYjYzNzliZjU1N2Y4ZTg1NGZiYWEyOGEwOGRmOTM5YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAg
LTE2MCw2ICsxNjAsMTEgQEAgUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gSURC
RGF0YWJhc2U6OnNldFZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGUKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCisgICAgaWYgKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKSB7CisgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0PiByZXF1ZXN0ID0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJ
REJBbnk6OmNyZWF0ZSh0aGlzKSwgdmVyc2lvbik7CiAgICAgbV9iYWNrZW5kLT5zZXRWZXJzaW9u
KHZlcnNpb24sIHJlcXVlc3QsIG1fZGF0YWJhc2VDYWxsYmFja3MsIGVjKTsKICAgICByZXR1cm4g
cmVxdWVzdDsKQEAgLTE3MywxMSArMTc4LDExIEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+
IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHVuc2lnbmVkIHNob3J0IG1vZGUgPSBJREJU
cmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKG1vZGVTdHJpbmcsIGVjKTsKKyAgICBJREJUcmFuc2Fj
dGlvbjo6TW9kZSBtb2RlID0gSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShtb2RlU3RyaW5n
LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChtX2Nsb3Nl
UGVuZGluZykgeworICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBtX2Nsb3Nl
UGVuZGluZykgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJ
RF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE5MSw3ICsxOTYsNyBA
QCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udAogICAgICAgICBBU1NFUlQoZWMpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9
IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoY29udGV4dCwgdHJhbnNhY3Rpb25CYWNrZW5kLCB0aGlz
KTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rp
b246OmNyZWF0ZShjb250ZXh0LCB0cmFuc2FjdGlvbkJhY2tlbmQsIG1vZGUsIHRoaXMpOwogICAg
IHRyYW5zYWN0aW9uQmFja2VuZC0+c2V0Q2FsbGJhY2tzKHRyYW5zYWN0aW9uLmdldCgpKTsKICAg
ICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQpAQCAtMjE0LDcgKzIxOSw3IEBAIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGNvbnNvbGVNZXNzYWdlLCAoIk51bWVyaWMgdHJhbnNhY3Rpb24gbW9kZXMgYXJlIGRlcHJlY2F0
ZWQgaW4gSURCRGF0YWJhc2UudHJhbnNhY3Rpb24uIFVzZSBcInJlYWRvbmx5XCIgb3IgXCJyZWFk
d3JpdGVcIi4iKSk7CiAgICAgY29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291
cmNlLCBMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2Up
OwotICAgIEF0b21pY1N0cmluZyBtb2RlU3RyaW5nID0gSURCVHJhbnNhY3Rpb246Om1vZGVUb1N0
cmluZyhtb2RlLCBlYyk7CisgICAgQXRvbWljU3RyaW5nIG1vZGVTdHJpbmcgPSBJREJUcmFuc2Fj
dGlvbjo6bW9kZVRvU3RyaW5nKElEQlRyYW5zYWN0aW9uOjpNb2RlKG1vZGUpLCBlYyk7CiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApp
bmRleCA3NDMzODhhZTE3ZjVkNzc2MmUzM2ZlMjRiYmM0YTQ3NDJlODE4OTU4Li5kYzQxMzQzOWE3
ZTVmY2VmY2Q3MWJhMTFlOWVhMzZiN2ZiN2MwY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmNwcApAQCAtMjExLDYgKzIxMSw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
cmV2ZXJ0QXV0b0luY3JlbWVudEtleUNhY2hlKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURC
S2V5PiBwcnBLZXksIFB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5z
YWN0aW9uKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0
SW50ZXJuYWwiKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2Fj
dGlvbjo6UkVBRF9PTkxZKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1
ZSA9IHBycFZhbHVlOwogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCAxYWVl
YWZkYmVmOTc4ZDNlMWM5MDUzNGI2YjUxM2QxMWNlMjczZWMxLi43NjYyMTViYjljMDA1ZGFlOWEz
YjAxN2Y1YmU5N2I3MmI5MzJkYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgSURCUmVxdWVz
dDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBw
cnBCYWNrZW5kCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIGJhY2tlbmQsIG1fc291cmNlLT5pZGJEYXRhYmFzZSgpLmdldCgpKTsKKyAgICBS
ZWZQdHI8SURCVHJhbnNhY3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJhY2tlbmQsIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9O
X0NIQU5HRSwgbV9zb3VyY2UtPmlkYkRhdGFiYXNlKCkuZ2V0KCkpOwogICAgIGJhY2tlbmQtPnNl
dENhbGxiYWNrcyhmcm9udGVuZC5nZXQoKSk7CiAgICAgbV90cmFuc2FjdGlvbiA9IGZyb250ZW5k
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHAKaW5kZXggYmM2NTU1NDE0OTcwMDU2NWZjZTAwMWU2OTA5ZGM5ZWQ2NTA1NTAyMC4u
ODUyYTAxYmM2NzgzYWQ2MGFhMDMxMTM3ZTI0ZTIzZTc4NjVkODM2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtNDEs
OSArNDEsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQs
IElEQkRhdGFiYXNlKiBkYikKK1Bhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlRyYW5zYWN0
aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQlRyYW5zYWN0aW9uOjpN
b2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYikKIHsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+
IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBiYWNrZW5k
LCBkYikpKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVm
KG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBiYWNrZW5kLCBtb2RlLCBkYikpKTsKICAgICB0
cmFuc2FjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJl
bGVhc2UoKTsKIH0KQEAgLTc5LDE1ICs3OSwxNiBAQCBjb25zdCBBdG9taWNTdHJpbmcmIElEQlRy
YW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlTGVnYWN5KCkKIH0KIAogCi1JREJUcmFuc2FjdGlvbjo6
SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQkRhdGFiYXNlKiBk
YikKK0lEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFj
a2VuZCwgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiKQogICAgIDog
QWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2JhY2tlbmQoYmFja2VuZCkK
ICAgICAsIG1fZGF0YWJhc2UoZGIpCi0gICAgLCBtX21vZGUobV9iYWNrZW5kLT5tb2RlKCkpCisg
ICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1fdHJhbnNhY3Rpb25GaW5pc2hlZChmYWxzZSkKICAg
ICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fYmFja2VuZCk7Cisg
ICAgQVNTRVJUKG1fbW9kZSA9PSBtX2JhY2tlbmQtPm1vZGUoKSk7CiAgICAgSURCUGVuZGluZ1Ry
YW5zYWN0aW9uTW9uaXRvcjo6YWRkUGVuZGluZ1RyYW5zYWN0aW9uKG1fYmFja2VuZC5nZXQoKSk7
CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2Fu
IGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CkBAIC0yNjIsNyAr
MjYzLDcgQEAgYm9vbCBJREJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QK
ICAgICByZXR1cm4gIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCB8fCBBY3RpdmVET01PYmplY3Q6Omhh
c1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCi11bnNpZ25lZCBzaG9ydCBJREJUcmFuc2FjdGlvbjo6
c3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMp
CitJREJUcmFuc2FjdGlvbjo6TW9kZSBJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKGNvbnN0
IFN0cmluZyYgbW9kZVN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1vZGVT
dHJpbmcuaXNOdWxsKCkKICAgICAgICAgfHwgbW9kZVN0cmluZyA9PSBJREJUcmFuc2FjdGlvbjo6
bW9kZVJlYWRPbmx5KCkpCkBAIC0yNzAsMTAgKzI3MSwxMCBAQCB1bnNpZ25lZCBzaG9ydCBJREJU
cmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgRXhjZXB0
aW9uQwogICAgIGlmIChtb2RlU3RyaW5nID09IElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRl
KCkpCiAgICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURTsKICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfVFlQRV9FUlI7Ci0gICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmlu
ZyYgSURCVHJhbnNhY3Rpb246Om1vZGVUb1N0cmluZyh1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVU
b1N0cmluZyhJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
aAppbmRleCAyZjdiYWJmYzRiMWNkOTEyZWQ2Y2RiZDg0MDc0NTA5MWVhZDdhZjNlLi40Zjk1ZjVi
MTlkMDk0OThiOGMwM2FjNjJlODE2ZTk3ODM4ODIzMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTQ4LDIzICs0OCwyMyBA
QCBjbGFzcyBJREJPYmplY3RTdG9yZTsKIAogY2xhc3MgSURCVHJhbnNhY3Rpb24gOiBwdWJsaWMg
SURCVHJhbnNhY3Rpb25DYWxsYmFja3MsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBJREJEYXRhYmFzZSopOwotICAgIHZpcnR1YWwgfklEQlRy
YW5zYWN0aW9uKCk7Ci0KICAgICBlbnVtIE1vZGUgewogICAgICAgICBSRUFEX09OTFkgPSAwLAog
ICAgICAgICBSRUFEX1dSSVRFID0gMSwKICAgICAgICAgVkVSU0lPTl9DSEFOR0UgPSAyCiAgICAg
fTsKIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlPiwgTW9kZSwgSURCRGF0YWJhc2UqKTsKKyAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlvbigp
OworCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVJlYWRPbmx5KCk7CiAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVJlYWRXcml0ZSgpOwogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIG1vZGVWZXJzaW9uQ2hhbmdlKCk7CiAgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgbW9kZVJlYWRPbmx5TGVnYWN5KCk7CiAgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgbW9kZVJlYWRXcml0ZUxlZ2FjeSgpOwogCi0gICAgc3RhdGljIHVuc2lnbmVk
IHNob3J0IHN0cmluZ1RvTW9kZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVRvU3RyaW5nKHVuc2lnbmVkIHNob3J0LCBF
eGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIE1vZGUgc3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2Rl
VG9TdHJpbmcoTW9kZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiBiYWNrZW5kKCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29u
c3Q7CkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURC
VHJhbnNhY3Rpb25DYWxsYmFja3M+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBJREJUcmFuc2Fj
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+LCBJREJEYXRhYmFzZSopOworICAgIElEQlRyYW5zYWN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4sIE1vZGUsIElEQkRhdGFiYXNlKik7CiAKICAgICB2b2lkIGVucXVldWVFdmVudChQYXNz
UmVmUHRyPEV2ZW50Pik7CiAgICAgdm9pZCBjbG9zZU9wZW5DdXJzb3JzKCk7CkBAIC0xMzMsNyAr
MTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7Ci0g
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgbV9tb2RlOworICAgIGNvbnN0IE1vZGUgbV9tb2RlOwog
ICAgIGJvb2wgbV90cmFuc2FjdGlvbkZpbmlzaGVkOyAvLyBJcyBpdCBwb3NzaWJsZSB0aGF0IHdl
J2xsIGZpcmUgYW55IG1vcmUgZXZlbnRzIG9yIGFsbG93IGFueSBuZXcgcmVxdWVzdHM/IElmIG5v
dCwgd2UncmUgZmluaXNoZWQuCiAgICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkOwogICAgIFJlZlB0
cjxET01FcnJvcj4gbV9lcnJvcjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyMWNjYWQyZmFkYzUxYzE5NGZjNDFlODFhMjll
Njg5ZjA4MTdlZjk3Li5lMjI3MTc2YmQ2NTk4ZmNmNWFjYzE2YWZmYzMyYWUzMjUzYmVhMGNkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTItMDYtMTMgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ3JlYXRpbmcgYSB0cmFuc2FjdGlv
biBmcm9tIHdpdGhpbiBhIHRyYW5zYWN0aW9uIGNhbGxiYWNrIHNob3VsZCBmYWlsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDU0NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvY3Vyc29yLXVwZGF0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvZGF0YWJhc2UtYmFzaWNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2N1cnNvci11cGRhdGUtdXBkYXRlcy1pbmRleGVzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItdXBk
YXRlLXVwZGF0ZXMtaW5kZXhlcy5qczoKKyAgICAgICAgKHNldHVwT2JqZWN0U3RvcmVBbmRDcmVh
dGVJbmRleEFuZEFkZC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlKToKKyAgICAgICAgKHNldHVwT2Jq
ZWN0U3RvcmVBbmRDcmVhdGVJbmRleEFuZEFkZCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMuanM6CisgICAg
ICAgIChjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChmaW5hbENoZWNrKToKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZW1vdmUtb2JqZWN0c3RvcmUu
anM6CisgICAgICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKHBv
c3RTZXRWZXJzaW9uMi5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChwb3N0U2V0VmVyc2lv
bjIpOgorICAgICAgICAoZGVsZXRlU2Vjb25kT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLmpzOgorICAgICAgICAob3BlbkJh
c2ljQ3Vyc29yKToKKyAgICAgICAgKGtleUN1cnNvcik6CisgICAgICAgICh0ZXN0UmVhZE9ubHkp
OgorICAgICAgICAoYXR0ZW1wdFVwZGF0ZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2RhdGFiYXNlLWJhc2ljcy5qczoKKyAgICAgICAgKG9wZW5TdWNjZXNzLnJlcXVl
c3Qub25zdWNjZXNzKToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNp
b25TdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25TdWNjZXNz
KToKKyAgICAgICAgKGNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpzOgorICAgICAgICAodGVz
dCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZl
LWV4cGVjdGVkLnR4dDoKKwogMjAxMi0wNi0xMiAgRWRhZW5hIFNhbGluYXMgSmFzc28gIDxlZGFl
bmFAYXBwbGUuY29tPgogCiAgICAgICAgIENhbid0IHNldCBlbC50eXBlIG9uIGEgPGJ1dHRvbj4g
ZWxlbWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LXVwZGF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItdXBkYXRlLWV4cGVjdGVkLnR4dAppbmRleCA1NWQ5NTY2OGQ5ZWU2ZDRhYWY4MTI4ZGJkOTQ5
NDEwYzlkYmE1YmRkLi41NzEyMjg3MTUyZmM0NzRhZjJiNWVlOTUwYjcxYjIwM2Y5OTg3NWFlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBk
YXRlLWV4cGVjdGVkLnR4dApAQCAtMTY2LDYgKzE2Niw3IEBAIEV4cGVjdGluZyBleGNlcHRpb24g
ZnJvbSBldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IGNvdW50ZXIsIG51bWJlcjogY291
bnRlCiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgogUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlv
bi5JTlZBTElEX1NUQVRFX0VSUgogUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitl
dmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCk7CiBrZXlDdXJzb3IoKQogUEFTUyBldmVudC50
YXJnZXQucmVzdWx0LmtleSBpcyBjb3VudGVyICsgMTAwCiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSBpcyBjb3VudGVyCkBAIC0xNzMsNiArMTc0LDcgQEAgRXhwZWN0aW5nIGV4
Y2VwdGlvbiBmcm9tIGV2ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKHtpZDogY291bnRlciwgbnVt
YmVyOiBjb3VudGUKIFBBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCiBQQVNTIGNvZGUgaXMgRE9N
RXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCiBQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVF
cnJvcicKK2V2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKTsKIGtleUN1cnNvcigpCiBQQVNT
IGV2ZW50LnRhcmdldC5yZXN1bHQua2V5IGlzIGNvdW50ZXIgKyAxMDAKIFBBU1MgZXZlbnQudGFy
Z2V0LnJlc3VsdC5wcmltYXJ5S2V5IGlzIGNvdW50ZXIKQEAgLTE4MCw2ICsxODIsNyBAQCBFeHBl
Y3RpbmcgZXhjZXB0aW9uIGZyb20gZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lkOiBjb3Vu
dGVyLCBudW1iZXI6IGNvdW50ZQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KIFBBU1MgY29k
ZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKIFBBU1MgZW5hbWUgaXMgJ0ludmFs
aWRTdGF0ZUVycm9yJworZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpOwoga2V5Q3Vyc29y
KCkKIFBBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkgaXMgY291bnRlciArIDEwMAogUEFTUyBl
dmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkgaXMgY291bnRlcgpAQCAtMTg3LDggKzE5MCwz
OCBAQCBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUo
e2lkOiBjb3VudGVyLCBudW1iZXI6IGNvdW50ZQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4K
IFBBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKIFBBU1MgZW5hbWUg
aXMgJ0ludmFsaWRTdGF0ZUVycm9yJworZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpOwog
a2V5Q3Vyc29yKCkKIFBBU1MgY291bnRlciBpcyA1CitvcGVuQmFzaWNDdXJzb3IoKQordHJhbnMg
PSBkYi50cmFuc2FjdGlvbignYmFzaWNTdG9yZScpCit0cmFucy5vYmplY3RTdG9yZSgnYmFzaWNT
dG9yZScpCitvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlKQorYXR0ZW1wdFVwZGF0ZSgp
CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gY3Vyc29yLnVwZGF0ZSgnbXlVcGRhdGVkVmFsdWUn
KQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4
Y2VwdGlvbi5SRUFEX09OTFlfRVJSCitQQVNTIGVuYW1lIGlzICdSZWFkT25seUVycm9yJworY3Vy
c29yLmNvbnRpbnVlKCkKK2F0dGVtcHRVcGRhdGUoKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9t
IGN1cnNvci51cGRhdGUoJ215VXBkYXRlZFZhbHVlJykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUgorUEFT
UyBlbmFtZSBpcyAnUmVhZE9ubHlFcnJvcicKK2N1cnNvci5jb250aW51ZSgpCithdHRlbXB0VXBk
YXRlKCkKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBjdXJzb3IudXBkYXRlKCdteVVwZGF0ZWRW
YWx1ZScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1JlYWRPbmx5RXJyb3In
CitjdXJzb3IuY29udGludWUoKQorYXR0ZW1wdFVwZGF0ZSgpCitFeHBlY3RpbmcgZXhjZXB0aW9u
IGZyb20gY3Vyc29yLnVwZGF0ZSgnbXlVcGRhdGVkVmFsdWUnKQorUEFTUyBFeGNlcHRpb24gd2Fz
IHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJS
CitQQVNTIGVuYW1lIGlzICdSZWFkT25seUVycm9yJworY3Vyc29yLmNvbnRpbnVlKCkKK2F0dGVt
cHRVcGRhdGUoKQogdHJhbnNhY3Rpb25Db21wbGV0ZSgpCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Rh
dGFiYXNlLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kYXRhYmFzZS1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IDhiMDYxNGVhMjQ2MmZiNmJkYjU4
ZTIxMmFiNzZjZjIzMzRiZGM1YzAuLjc5MGYyMGM3ODNlNThhY2FmOTVkZDQzMGZiYjUyZWY1OWIy
MDdhNDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNl
LWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
ZGF0YWJhc2UtYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtOCwxMiArOCwxNCBAQCBpbmRleGVkREIg
PSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4
ZWREQiB8fCBzZWxmLgogaW5kZXhlZERCLm9wZW4oJ2RhdGFiYXNlLWJhc2ljcycpCiBkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQKIGRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykKLXNldFZlcnNp
b25TdWNjZXNzKCk6Ci10cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQKLVBBU1MgdHJhbnMgaXMg
bm9uLW51bGwuCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc2V0VmVyc2lvblN1Y2Nlc3Mo
KToKIFRlc3Rpbmcgc2V0VmVyc2lvbi4KLWRiLnNldFZlcnNpb24oInZlcnNpb24gYSIpCityZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbigidmVyc2lvbiBhIikKK0V4cGVjdGluZyBleGNlcHRpb24gZnJv
bSBkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGIiKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4K
K1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUg
aXMgJ0ludmFsaWRTdGF0ZUVycm9yJwogZGIuc2V0VmVyc2lvbigidmVyc2lvbiBiIikKIFBBU1Mg
ZGIudmVyc2lvbiBpcyAidmVyc2lvbiBiIgogUEFTUyBkYi5uYW1lIGlzICJkYXRhYmFzZS1iYXNp
Y3MiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1
cnNvci11cGRhdGUtdXBkYXRlcy1pbmRleGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMtZXhw
ZWN0ZWQudHh0CmluZGV4IDBkNTBiNjM1YTBjMzRiZWI0YzA1YWNjMWE5MTk2YjI2ODM2MjMxZGMu
LjY1YTg5YWRlNmI3YTZkZWI2NGM2ODkwYjUyNTkyMDdmZjdlY2UwYjAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVz
LWluZGV4ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMtZXhwZWN0ZWQudHh0CkBAIC0y
OSw2ICsyOSwxMCBAQCBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFt
ZSwgaW5mby5vcHRpb25zKTsKIGluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2RhdGFf
aW5kZXgnLCAnZGF0YScsIHsgdW5pcXVlOiBmYWxzZSB9KTsKIHVuaXF1ZUluZGV4ID0gb2JqZWN0
U3RvcmUuY3JlYXRlSW5kZXgoJ3VuaXF1ZV9kYXRhX2luZGV4JywgJ2RhdGEnLCB7IHVuaXF1ZTog
dHJ1ZSB9KTsKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoaW5mby5lbnRyeSwgaW5mby5rZXkp
OwordHJhbnMgPSBkYi50cmFuc2FjdGlvbihpbmZvLm5hbWUsICdyZWFkd3JpdGUnKQorb2JqZWN0
U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShpbmZvLm5hbWUpCitpbmRleCA9IG9iamVjdFN0b3Jl
LmluZGV4KCdkYXRhX2luZGV4JykKK3VuaXF1ZUluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3Vu
aXF1ZV9kYXRhX2luZGV4JykKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7CiBj
dXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsKIHZhbHVlID0gY3Vyc29yLnZhbHVlOwpAQCAtNDcsNiAr
NTEsMTAgQEAgb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGlu
Zm8ub3B0aW9ucyk7CiBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdkYXRhX2luZGV4
JywgJ2RhdGEnLCB7IHVuaXF1ZTogZmFsc2UgfSk7CiB1bmlxdWVJbmRleCA9IG9iamVjdFN0b3Jl
LmNyZWF0ZUluZGV4KCd1bmlxdWVfZGF0YV9pbmRleCcsICdkYXRhJywgeyB1bmlxdWU6IHRydWUg
fSk7CiByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGluZm8uZW50cnkpOwordHJhbnMgPSBkYi50
cmFuc2FjdGlvbihpbmZvLm5hbWUsICdyZWFkd3JpdGUnKQorb2JqZWN0U3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZShpbmZvLm5hbWUpCitpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KCdkYXRhX2lu
ZGV4JykKK3VuaXF1ZUluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3VuaXF1ZV9kYXRhX2luZGV4
JykKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7CiBjdXJzb3IgPSByZXF1ZXN0
LnJlc3VsdDsKIHZhbHVlID0gY3Vyc29yLnZhbHVlOwpAQCAtNjUsNiArNzMsMTAgQEAgb2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7CiBp
bmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdkYXRhX2luZGV4JywgJ2RhdGEnLCB7IHVu
aXF1ZTogZmFsc2UgfSk7CiB1bmlxdWVJbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd1
bmlxdWVfZGF0YV9pbmRleCcsICdkYXRhJywgeyB1bmlxdWU6IHRydWUgfSk7CiByZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKGluZm8uZW50cnkpOwordHJhbnMgPSBkYi50cmFuc2FjdGlvbihpbmZv
Lm5hbWUsICdyZWFkd3JpdGUnKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShpbmZv
Lm5hbWUpCitpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KCdkYXRhX2luZGV4JykKK3VuaXF1ZUlu
ZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3VuaXF1ZV9kYXRhX2luZGV4JykKIHJlcXVlc3QgPSBv
YmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7CiBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsKIHZhbHVl
ID0gY3Vyc29yLnZhbHVlOwpAQCAtODMsNiArOTUsMTAgQEAgb2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7CiBpbmRleCA9IG9iamVjdFN0
b3JlLmNyZWF0ZUluZGV4KCdkYXRhX2luZGV4JywgJ2RhdGEnLCB7IHVuaXF1ZTogZmFsc2UgfSk7
CiB1bmlxdWVJbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd1bmlxdWVfZGF0YV9pbmRl
eCcsICdkYXRhJywgeyB1bmlxdWU6IHRydWUgfSk7CiByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KGluZm8uZW50cnkpOwordHJhbnMgPSBkYi50cmFuc2FjdGlvbihpbmZvLm5hbWUsICdyZWFkd3Jp
dGUnKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShpbmZvLm5hbWUpCitpbmRleCA9
IG9iamVjdFN0b3JlLmluZGV4KCdkYXRhX2luZGV4JykKK3VuaXF1ZUluZGV4ID0gb2JqZWN0U3Rv
cmUuaW5kZXgoJ3VuaXF1ZV9kYXRhX2luZGV4JykKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVu
Q3Vyc29yKCk7CiBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsKIHZhbHVlID0gY3Vyc29yLnZhbHVl
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZW1v
dmUtb2JqZWN0c3RvcmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9yZW1vdmUtb2JqZWN0c3RvcmUtZXhwZWN0ZWQudHh0CmluZGV4IDEyZmIxODc1
Y2QxMTE4ZTdiNzA5ZDgxYzIxYjA1Y2VkMWQ5MjI3ZmEuLmNlODM0NTFlY2IwYWQyMzgxMjI0NGNj
MzcwN2E2NGIxNDcyZmJmZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVtb3ZlLW9iamVjdHN0b3JlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlbW92ZS1vYmplY3RzdG9yZS1leHBlY3Rl
ZC50eHQKQEAgLTEyLDcgKzEyLDYgQEAgcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKQogRGVs
ZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KIG9iamVjdFN0b3JlTmFtZSA9ICdPYmplY3RzJzsKIG9i
amVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCB7IGtleVBh
dGg6ICdmb28nIH0pOwotYWRkZWRDb3VudCA9IDA7CiByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KHtmb286IGl9KTsKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe2ZvbzogaX0pOwogcmVxdWVz
dCA9IG9iamVjdFN0b3JlLmFkZCh7Zm9vOiBpfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXVwZGF0ZXMt
aW5kZXhlcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL2N1cnNvci11cGRhdGUtdXBkYXRlcy1pbmRleGVzLmpzCmluZGV4IGVjN2Q5YmI5YmI2NmVl
NGUzNTM3OGU5Y2FiOGFkZmI5MTNjMWJjOTAuLjk1YjAzOWEwZTMzZmUxYzZhNWI4ZTZlOTYxOTkz
MzliN2JlODQ3OGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUtdXBkYXRlcy1pbmRleGVzLmpzCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1cnNvci11cGRh
dGUtdXBkYXRlcy1pbmRleGVzLmpzCkBAIC01Niw2ICs1Niw3IEBAIGZ1bmN0aW9uIHNldFZlcnNp
b24oKQogCiBmdW5jdGlvbiBzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXhBbmRBZGQoKQog
eworICAgIHZhciB0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAgZGVidWco
InNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleCgpOiIpOwogICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CiAKQEAgLTY4LDggKzY5LDE1IEBAIGZ1bmN0aW9uIHNldHVwT2JqZWN0U3Rv
cmVBbmRDcmVhdGVJbmRleEFuZEFkZCgpCiAgICAgfSBlbHNlIHsKICAgICAgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoaW5mby5lbnRyeSk7Iik7CiAg
ICAgfQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvcjsKICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKworICAgIHRyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJh
bnNhY3Rpb24oaW5mby5uYW1lLCAncmVhZHdyaXRlJykiKTsKKyAgICAgICAgZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShpbmZvLm5hbWUpIik7CisgICAgICAgIGV2
YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2RhdGFfaW5kZXgnKSIpOworICAg
ICAgICBldmFsQW5kTG9nKCJ1bmlxdWVJbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KCd1bmlxdWVf
ZGF0YV9pbmRleCcpIik7CisgICAgICAgIG9wZW5DdXJzb3IoKTsKKyAgICB9OwogfQogCiBmdW5j
dGlvbiBvcGVuQ3Vyc29yKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1zdG9yZS1yZW1vdmUtdmFsdWVzLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LXN0b3Jl
LXJlbW92ZS12YWx1ZXMuanMKaW5kZXggMmEwZGVhNzlmZWZiOGIwMTU3YmVmZWFhZmE5NzA5MThl
NGYyOTQ3ZS4uZDY2MTExZjlkNmY5Yzg0MmY0NTEzYzI2NmI2YTYyYTM0MzgyYTEyYyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2Jq
ZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMuanMKQEAg
LTcxLDYgKzcxLDcgQEAgZnVuY3Rpb24gc2V0VmVyc2lvbigpCiAKIGZ1bmN0aW9uIGNyZWF0ZU9i
amVjdFN0b3JlKCkKIHsKKyAgICB0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKIAogICAgIGlmICh0ZXN0LmtleU5hbWUpIHsK
QEAgLTExNSw3ICsxMTYsNyBAQCBmdW5jdGlvbiBmaW5hbENoZWNrKCkKIHsKICAgICBzaG91bGRC
ZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IHVuZGVmaW5lZCIpOwogICAgIGkrKzsKLSAg
ICBzZXRWZXJzaW9uKCk7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHNldFZlcnNpb247
CiB9CiAKIHRlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZW1vdmUtb2Jq
ZWN0c3RvcmUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291
cmNlcy9yZW1vdmUtb2JqZWN0c3RvcmUuanMKaW5kZXggNzc3MGUwOGRkZThkZGNmZDgyZjBlMjQy
ZTJjMWZlYzUwMWQ1YzNhZC4uOWM4NTY5YWYxNmZlYzcyNmQwMzNkODRiOTFhZGJlNTU4MWNjYzU3
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvcmVtb3ZlLW9iamVjdHN0b3JlLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlbW92ZS1vYmplY3RzdG9yZS5qcwpAQCAtMzQsMjEg
KzM0LDE3IEBAIGZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKIAogZnVuY3Rpb24gY3JlYXRlQW5kUG9w
dWxhdGVPYmplY3RTdG9yZSgpCiB7CisgICAgdmFyIHYxX3RyYW5zYWN0aW9uID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogCiAgICAgb2JqZWN0
U3RvcmVOYW1lID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmVOYW1lID0gJ09iamVjdHMnOyIpOwog
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIHsga2V5UGF0aDogJ2ZvbycgfSk7Iik7CiAKLSAgICBh
ZGRlZENvdW50ID0gZXZhbEFuZExvZygiYWRkZWRDb3VudCA9IDA7Iik7CiAgICAgZm9yIChpID0g
MDsgaSA8IDEwMDsgaSsrKSB7CiAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKHtmb286IGl9KTsiKTsKICAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGlmICgrK2FkZGVkQ291bnQgPT0gMTAwKSB7
Ci0gICAgICAgICAgICAgICAgY2hlY2tPYmplY3RTdG9yZSgpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9CiAgICAgfQorICAgIHYxX3RyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBjaGVja09iamVj
dFN0b3JlOwogfQogCiBmdW5jdGlvbiBjaGVja09iamVjdFN0b3JlKCkKQEAgLTYzLDYgKzU5LDcg
QEAgZnVuY3Rpb24gY2hlY2tPYmplY3RTdG9yZSgpCiAKIGZ1bmN0aW9uIHBvc3RTZXRWZXJzaW9u
MigpCiB7CisgICAgdmFyIHYyX3RyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAg
ICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZShvYmplY3RTdG9yZS5uYW1lKTsiKTsK
ICAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwogCkBAIC03
NSwxNCArNzIsMTQgQEAgZnVuY3Rpb24gcG9zdFNldFZlcnNpb24yKCkKICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0IiwgIm51bGwiKTsKICAgICAgICAgZGVsZXRlU2Vjb25kT2JqZWN0U3RvcmUoKTsK
LSAgICB9CisgICAgfTsKKyAgICB2Ml90cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gc2V0VmVyc2lv
bjM7CiB9CiAKIGZ1bmN0aW9uIGRlbGV0ZVNlY29uZE9iamVjdFN0b3JlKCkKIHsKICAgICBldmFs
QW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZShvYmplY3RTdG9yZS5uYW1lKTsiKTsKICAgICBz
aG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwotICAgIHNldFZlcnNp
b24zKCk7CiB9CiAKIGZ1bmN0aW9uIHNldFZlcnNpb24zKCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUuanMKaW5kZXgg
ZDAyYzYyNTQzMzM4MDExMjgxMTIxMGRkODM0MzM0ZDY1NGI4NDk1Mi4uNzg5ZTYyZDg5YzdlNTY4
NTk1YmVlMmRmOGEwNGRhOGZjMDRmOGMyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUuanMKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUuanMKQEAgLTU5LDcgKzU5
LDcgQEAgZnVuY3Rpb24gb3BlbkJhc2ljQ3Vyc29yKCkKICAgICBkZWJ1Zygib3BlbkJhc2ljQ3Vy
c29yKCkiKTsKICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYmFzaWNT
dG9yZScsICdhdXRvSW5jcmVtZW50U3RvcmUnLCAna2V5UGF0aFN0b3JlJ10sICdyZWFkd3JpdGUn
KSIpOwogICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0
cmFucy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZTsKKyAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdGVzdFJlYWRPbmx5OwogCiAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJv
dW5kKCJteUtleTEiKTsKICAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygidHJhbnMu
b2JqZWN0U3RvcmUoJ2Jhc2ljU3RvcmUnKSIpOwpAQCAtMjAwLDcgKzIwMCwzMiBAQCBmdW5jdGlv
biBrZXlDdXJzb3IoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRPTUV4Y2VwdGlvbi5J
TlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CiAKICAgICBjb3VudGVy
Kys7Ci0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpOworICAgIGV2YWxBbmRMb2co
ImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKTsiKTsKK30KKworZnVuY3Rpb24gdGVzdFJl
YWRPbmx5KCkKK3sKKyAgICBkZWJ1Zygib3BlbkJhc2ljQ3Vyc29yKCkiKTsKKyAgICBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdiYXNpY1N0b3JlJykiKTsKKyAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9
IHRyYW5zYWN0aW9uQ29tcGxldGU7CisKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2Vy
Qm91bmQoIm15S2V5MSIpOworICAgIHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJ0cmFu
cy5vYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBhdHRlbXB0VXBkYXRlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhdHRlbXB0VXBkYXRlKCkKK3sKKyAgICBkZWJ1Zygi
YXR0ZW1wdFVwZGF0ZSgpIik7CisgICAgc2VsZi5jdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OworICAgIGlmIChzZWxmLmN1cnNvcikgeworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJjdXJzb3IudXBkYXRlKCdteVVwZGF0ZWRWYWx1ZScpIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIsICInUmVhZE9u
bHlFcnJvciciKTsKKyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsKKyAg
ICB9CiB9CiAKIGZ1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGUoKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLWJhc2ljcy5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1iYXNpY3Mu
anMKaW5kZXggYjJkZjczOTg4Y2VjYmZkNzA0MjI4YzcwMjkzZDlkYWU0YzVmYTA5NS4uYjAzYjdk
MGQxM2U0NjEzNDg4YmY2ZGI5NTJiY2EzYTBkOTE1YTNhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLWJhc2ljcy5qcworKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2UtYmFzaWNzLmpz
CkBAIC0xOSwyMiArMTksMzAgQEAgZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQogICAgIHNlbGYuZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKIAogICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAg
ICAgIHZhciB0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIHRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICAgICAgdHJhbnNhY3Rp
b24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH07CiAgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiB9CiAKIGZ1bmN0aW9uIHNldFZl
cnNpb25TdWNjZXNzKCkKIHsKICAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAg
ICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0gICAgc2hvdWxkQmVOb25OdWxsKCJ0cmFucyIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CiAK
ICAgICBkZWJ1ZygiVGVzdGluZyBzZXRWZXJzaW9uLiIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCdkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGEiKScpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gc2V0VmVyc2lvbkFnYWluOworICAgIGV2YWxBbmRMb2coJ3JlcXVlc3QgPSBkYi5zZXRWZXJz
aW9uKCJ2ZXJzaW9uIGEiKScpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZl
bnQpIHsKKworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCdkYi5zZXRWZXJzaW9uKCJ2
ZXJzaW9uIGIiKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRPTUV4Y2VwdGlv
bi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgIHZh
ciB0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIHRyYW5zYWN0aW9u
Lm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQWdhaW47CisgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJv
cnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9OwogICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogfQogCkBAIC01Nyw3ICs2NSwxMCBAQCBmdW5j
dGlvbiBjcmVhdGVPYmplY3RTdG9yZSgpCiAKICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
J2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0MTIzIiknKTsKICAgICBjaGVja09iamVjdFN0b3Jl
KCk7Ci0gICAgY29tbWl0QW5kQ29udGludWUoKTsKKworICAgIHZhciB0cmFuc2FjdGlvbiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHRlc3RTZXRW
ZXJzaW9uQWJvcnQ7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOwogfQogCiBmdW5jdGlvbiBjaGVja09iamVjdFN0b3JlKCkKQEAgLTY5LDEwICs4MCw2
IEBAIGZ1bmN0aW9uIGNoZWNrT2JqZWN0U3RvcmUoKQogICAgIHNob3VsZEJlKCJkYi5vYmplY3RT
dG9yZU5hbWVzLmNvbnRhaW5zKCd0ZXN0MTIzJykiLCAidHJ1ZSIpOwogfQogCi1mdW5jdGlvbiBj
b21taXRBbmRDb250aW51ZSgpCi17Ci0gICAgc2VsZi5zZXRUaW1lb3V0KHRlc3RTZXRWZXJzaW9u
QWJvcnQsIDApOwotfQogCiBmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0KCkKIHsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNo
YW5nZS1leGNsdXNpdmUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpzCmluZGV4IDgxYWE1OGE4ODMyOTVlNDcxMjdk
NmE5MzE2NGJiY2VkODM5YjA5MWEuLjg2ZTI0Y2VjYzQyMzNiOGM3OGQ2Mjk2YWY5OTUyOTA2M2Yz
NGM1OWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5qcwpAQCAtNSw3ICs1
LDggQEAgaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewogCiBkZXNjcmlwdGlvbigiRW5zdXJlIFZF
UlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGRvZXNuJ3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoIG90
aGVyIHRyYW5zYWN0aW9ucyIpOwogCi1mdW5jdGlvbiB0ZXN0KCkgeworZnVuY3Rpb24gdGVzdCgp
Cit7CiAgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKICAgICBvcGVuREJDb25uZWN0aW9uKCk7
CiB9CkBAIC00MiwxMCArNDMsMTIgQEAgZnVuY3Rpb24gaW5TZXRWZXJzaW9uKCkKICAgICBldmFs
QW5kTG9nKCJzZWxmLnN0YXRlID0gJ1ZFUlNJT05fQ0hBTkdFIHN0YXJ0ZWQnIik7CiAKICAgICBz
ZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgndGVz
dC1zdG9yZScpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24o
J3Rlc3Qtc3RvcmUnKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFs
aWRTdGF0ZUVycm9yJyIpOwogICAgIHNlbGYuY291bnQgPSAwOwogICAgIGRvX2FzeW5jX3B1dHMo
KTsKIAotICAgIGZ1bmN0aW9uIGRvX2FzeW5jX3B1dHMoKSB7CisgICAgZnVuY3Rpb24gZG9fYXN5
bmNfcHV0cygpCisgICAgewogICAgICAgICB2YXIgcmVxID0gZXZhbEFuZExvZygic3RvcmUucHV0
KCIgKyBjb3VudCArICIsICIgKyBjb3VudCArICIpIik7CiAgICAgICAgIHJlcS5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiAgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZSkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lv
bi1jaGFuZ2UtZXhjbHVzaXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS1leHBlY3RlZC50eHQKaW5kZXggZjMwNTE0
ZDMyMTY1MDRiODdlMjMwNzQwYTdiNGRmMWRlMTVhMjBjNC4uNmM1YTMzOTU1ZDYxYWFjZDZlMjIz
ZGUzOTlmYTJiZjc1NWE2NjgwNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUtZXhwZWN0ZWQu
dHh0CkBAIC0xNiw2ICsxNiwxMCBAQCBzZXRWZXJzaW9uKCkgY2FsbGJhY2sKIHN0YXJ0aW5nIHdv
cmsgaW4gVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24KIHNlbGYuc3RhdGUgPSAnVkVSU0lPTl9D
SEFOR0Ugc3RhcnRlZCcKIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUn
KQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLnRyYW5zYWN0aW9uKCd0ZXN0LXN0b3JlJykK
K1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklO
VkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKIHN0b3Jl
LnB1dCgwLCAwKQogaW4gcHV0J3Mgb25zdWNjZXNzCiBzdG9yZS5wdXQoMSwgMSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>