<?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>97501</bug_id>
          
          <creation_ts>2012-09-24 17:14:08 -0700</creation_ts>
          <short_desc>IndexedDB: One transaction coordinator per database</short_desc>
          <delta_ts>2012-09-25 11:51:19 -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>
          
          <blocked>97570</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>alecflett</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>727104</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-24 17:14:08 -0700</bug_when>
    <thetext>IndexedDB: One transaction coordinator per database</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727108</commentid>
    <comment_count>1</comment_count>
      <attachid>165473</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-24 17:17:45 -0700</bug_when>
    <thetext>Created attachment 165473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727109</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-24 17:18:52 -0700</bug_when>
    <thetext>dgrogan@, alecflett@ - please take a look

This turned out to be pretty straightforward to implement. Not a huge win, though, since transactions within databases are still executed serially.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727113</commentid>
    <comment_count>3</comment_count>
      <attachid>165473</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-24 17:22:28 -0700</bug_when>
    <thetext>Comment on attachment 165473
Patch

Attachment 165473 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13990866</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727115</commentid>
    <comment_count>4</comment_count>
      <attachid>165475</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-24 17:27:17 -0700</bug_when>
    <thetext>Created attachment 165475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727788</commentid>
    <comment_count>5</comment_count>
      <attachid>165475</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-09-25 10:54:10 -0700</bug_when>
    <thetext>Comment on attachment 165475
Patch

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

LGTM

This is great, seems like an easy win.  readwrite transactions on separate databases will run in parallel too, right?

&gt; LayoutTests/storage/indexeddb/resources/transaction-coordination-across-databases.js:6
&gt; +description(&quot;Check that transactions in different databases can run in parallel.&quot;);

OT: I ran this test in content_shell and can get it to wedge by hitting refresh at various stages of completion.  I thought your two-phase consolidation eliminated the last known wedge vector, but it looks like there&apos;s still at least one outstanding.

&gt; LayoutTests/storage/indexeddb/resources/transaction-coordination-across-databases.js:97
&gt; +    }());

It seems that this pattern is shorthand for function doTransaction1Get() { ... } doTransaction1Get();  I suppose it also avoids putting doTransaction1Get in startWork()&apos;s namespace and serves as notice to anyone reading the code that doTransaction1Get() is not called anywhere else.  Am I missing any other noteworthy properties of this pattern?  Also, does it have a name?

&gt; LayoutTests/storage/indexeddb/resources/transaction-readwrite-exclusive.js:54
&gt; +    evalAndLog(&quot;transaction1 = db1.transaction(&apos;store&apos;, &apos;readwrite&apos;)&quot;);

Given the level of parallelization that this patch gives us, where we serialize per database, this test would still pass if these were readonly transactions, correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727792</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-25 11:02:11 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; 
&gt; This is great, seems like an easy win.  readwrite transactions on separate databases will run in parallel too, right?

Correct. I was thinking of readonly as being the &quot;base&quot; case to test for, but ensuring readwrite are parallelized across databases is a good point; I&apos;ll update the test.
 
&gt; &gt; LayoutTests/storage/indexeddb/resources/transaction-coordination-across-databases.js:97
&gt; &gt; +    }());
&gt; 
&gt; It seems that this pattern is shorthand for function doTransaction1Get() { ... } doTransaction1Get();  I suppose it also avoids putting doTransaction1Get in startWork()&apos;s namespace and serves as notice to anyone reading the code that doTransaction1Get() is not called anywhere else.  Am I missing any other noteworthy properties of this pattern? 

Nope. I&apos;ll flatten it out a bit.

&gt; Also, does it have a name?

It&apos;s an &quot;Immediately Invoked Function Expression&quot; (IIFE) with a named function so it can be called recursively.
 
&gt; &gt; LayoutTests/storage/indexeddb/resources/transaction-readwrite-exclusive.js:54
&gt; &gt; +    evalAndLog(&quot;transaction1 = db1.transaction(&apos;store&apos;, &apos;readwrite&apos;)&quot;);
&gt; 
&gt; Given the level of parallelization that this patch gives us, where we serialize per database, this test would still pass if these were readonly transactions, correct?

Correct. I could add a test that validates the *current* limitation but thought this was enough for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727802</commentid>
    <comment_count>7</comment_count>
      <attachid>165642</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-25 11:15:31 -0700</bug_when>
    <thetext>Created attachment 165642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727805</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-25 11:17:49 -0700</bug_when>
    <thetext>tony@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727838</commentid>
    <comment_count>9</comment_count>
      <attachid>165642</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 11:51:16 -0700</bug_when>
    <thetext>Comment on attachment 165642
Patch

Clearing flags on attachment: 165642

Committed r129534: &lt;http://trac.webkit.org/changeset/129534&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727839</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 11:51:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165473</attachid>
            <date>2012-09-24 17:17:45 -0700</date>
            <delta_ts>2012-09-24 17:27:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97501-20120924171706.patch</filename>
            <type>text/plain</type>
            <size>25266</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5Mzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBjMWZjNTZhMmRjMTFj
YTAwOWU5ODM3NjQ2YjE3NjEwMWY3NzQ1Ny4uYzFkN2JkMGQ2NmNjNzg1YTZkNGI2YTdlMTBkYzUy
YjRjZTcyZGVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA5LTI0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBPbmUg
dHJhbnNhY3Rpb24gY29vcmRpbmF0b3IgcGVyIGRhdGFiYXNlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzUwMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBlciB0aGUgSURCIHNwZWMsIHRyYW5zYWN0aW9u
cyBvbmx5IG5lZWQgdG8gYmUgc2VxdWVuY2VkIHdpdGhpbiBkYXRhYmFzZXMuCisgICAgICAgIFRo
ZSBpbXBsZW1lbnRhdGlvbiB3YXMgdXNpbmcgb25lIGNvb3JkaW5hdG9yIHBlciBmYWN0b3J5IGJh
Y2tlbmQgKGVmZmVjdGl2ZWx5CisgICAgICAgIGEgc2luZ2xldG9uKSwgd2hpY2ggd291bGQgcHJl
dmVudCBwYXJhbGxlbCBleGVjdXRpb24gb2YgdHJhbnNhY3Rpb25zIGluIGRpZmZlcmVudAorICAg
ICAgICBkYXRhYmFzZXMuIE1vdmVkIG93bmVyc2hpcCBvZiB0aGUgdHJhbnNhY3Rpb24gY29vcmRp
bmF0b3IgdG8gdGhlIGRhdGFiYXNlIGJhY2tlbmQuCisKKyAgICAgICAgVGVzdHM6IHN0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2VzLmh0bWwK
KyAgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWR3cml0ZS1l
eGNsdXNpdmUuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBs
OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZElt
cGw6Om9wZW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJGYWN0b3J5QmFja2VuZElt
cGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OklEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IpOgorCiAyMDEyLTA5LTI0ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2ZXJ0ZWQgcjEyOTE3NiwgdGhlIGZpeCBmb3IgPGh0dHA6Ly93ZWJraXQub3JnL2Iv
OTcyNjk+LCBiZWNhdXNlIGl0IGludHJvZHVjZWQgYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRl
eCBiOTI5NzlmMWM0M2JkNzI3ZmVhZGU5YzgyODQ3NGU0OTM0NWVhNTkxLi43MTM1NjhiZjVhNjNk
ZmM4MmZmYTk2MDg5ODQ5NTUwMTYyOWM5YTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAt
MTE5LDkgKzExOSw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
PiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogfTsKIAotUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbXBsPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1l
LCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBj
b29yZGluYXRvciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBjb25zdCBTdHJpbmcm
IHVuaXF1ZUlkZW50aWZpZXIpCitQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tp
bmdTdG9yZSogZGF0YWJhc2UsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29uc3Qg
U3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbXBsPiBiYWNrZW5kID0gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQmFja2VuZEltcGwobmFt
ZSwgZGF0YWJhc2UsIGNvb3JkaW5hdG9yLCBmYWN0b3J5LCB1bmlxdWVJZGVudGlmaWVyKSk7Cisg
ICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGJhY2tlbmQgPSBhZG9wdFJlZihuZXcg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbChuYW1lLCBkYXRhYmFzZSwgZmFjdG9yeSwgdW5pcXVlSWRl
bnRpZmllcikpOwogICAgIGlmICghYmFja2VuZC0+b3BlbkludGVybmFsKCkpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIHJldHVybiBiYWNrZW5kLnJlbGVhc2UoKTsKQEAgLTEzMSw3ICsxMzEsNyBA
QCBuYW1lc3BhY2UgewogY29uc3QgY2hhciogTm9TdHJpbmdWZXJzaW9uID0gIiI7CiB9CiAKLUlE
QkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5n
JiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvciogY29vcmRpbmF0b3IsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29u
c3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKQorSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSog
YmFja2luZ1N0b3JlLCBJREJGYWN0b3J5QmFja2VuZEltcGwqIGZhY3RvcnksIGNvbnN0IFN0cmlu
ZyYgdW5pcXVlSWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkK
ICAgICAsIG1faWQoSW52YWxpZElkKQogICAgICwgbV9uYW1lKG5hbWUpCkBAIC0xMzksNyArMTM5
LDcgQEAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25z
dCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG8KICAgICAsIG1faW50VmVyc2lvbihJREJEYXRh
YmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pCiAgICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRl
bnRpZmllcikKICAgICAsIG1fZmFjdG9yeShmYWN0b3J5KQotICAgICwgbV90cmFuc2FjdGlvbkNv
b3JkaW5hdG9yKGNvb3JkaW5hdG9yKQorICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKElE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNyZWF0ZSgpKQogewogICAgIEFTU0VSVCghbV9uYW1l
LmlzTnVsbCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAxMTJiYTNkZTYyYTM2MWI1YTY2
YTYxMzY3MDI5MzAxYjdhOWYzNWQ1Li41YWQ1MWJhNjllNjIyNGFkMmE0NDU5ZDdmZjYwODE0YmI5
ZmQ2Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIElEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3I7CiAKIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGwgOiBw
dWJsaWMgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
KiwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVy
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJGYWN0b3J5
QmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOwogICAgIHZpcnR1
YWwgfklEQkRhdGFiYXNlQmFja2VuZEltcGwoKTsKIAogICAgIFBhc3NSZWZQdHI8SURCQmFja2lu
Z1N0b3JlPiBiYWNraW5nU3RvcmUoKSBjb25zdDsKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5pc2hlZEFuZEFib3J0RmlyZWQoUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CiAKIHByaXZhdGU6Ci0gICAgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqLCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBjb25zdCBT
dHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOworICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29u
c3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJGYWN0b3J5QmFj
a2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOwogCiAgICAgYm9vbCBv
cGVuSW50ZXJuYWwoKTsKICAgICB2b2lkIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihp
bnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw+ID4gT2JqZWN0U3RvcmVNYXA7CiAgICAgT2JqZWN0U3RvcmVNYXAgbV9vYmplY3RTdG9y
ZXM7CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFuc2FjdGlv
bkNvb3JkaW5hdG9yOworICAgIE93blB0cjxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBtX3Ry
YW5zYWN0aW9uQ29vcmRpbmF0b3I7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw+IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbjsKIAogICAgIHR5cGVkZWYgSGFz
aFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKj4gVHJhbnNhY3Rpb25TZXQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmNwcAppbmRleCBjN2VmODYwZTEzZTJkMTgxNzlhZTVlY2MwYzc1OTcwOWI4ODQzZGU5
Li42OGU3ZDNhZDA3YzQxZTExZjJlZDhjZTljYzNjMjVlN2YwMTNhNzJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5jcHAKQEAgLTU1LDcgKzU1LDYgQEAgc3RhdGljIFN0cmluZyBjb21wdXRlVW5pcXVlSWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIG5hbWUsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cmkKIH0KIAog
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpJREJGYWN0b3J5QmFja2VuZEltcGwoKQotICAgIDogbV90
cmFuc2FjdGlvbkNvb3JkaW5hdG9yKElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNyZWF0ZSgp
KQogewogfQogCkBAIC0xMTgsNyArMTE3LDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6
OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWwKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBs
PiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwg
YmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMs
IHVuaXF1ZUlkZW50aWZpZXIpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBk
YXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFj
a2luZ1N0b3JlLmdldCgpLCB0aGlzLCB1bmlxdWVJZGVudGlmaWVyKTsKICAgICBpZiAoZGF0YWJh
c2VCYWNrZW5kKSB7CiAgICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJZGVu
dGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwogICAgICAgICBkYXRhYmFzZUJhY2tlbmQt
PmRlbGV0ZURhdGFiYXNlKGNhbGxiYWNrcyk7CkBAIC0xNjQsNyArMTYzLDcgQEAgdm9pZCBJREJG
YWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNp
b24sIFBhc3NSZWZQdHIKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IGRhdGFiYXNlQmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBi
YWNraW5nU3RvcmUuZ2V0KCksIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKSwgdGhpcywg
dW5pcXVlSWRlbnRpZmllcik7CisgICAgICAgIGRhdGFiYXNlQmFja2VuZCA9IElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNraW5nU3RvcmUuZ2V0KCksIHRoaXMsIHVuaXF1
ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoZGF0YWJhc2VCYWNrZW5kKQogICAgICAgICAgICAg
bV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2Vu
ZC5nZXQoKSk7CiAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaAppbmRleCAzYWUwNzAzMTBk
YWU4NzY0MzU5NmNhOWIyOTkzYzMzYTQ2NzBiMWIzLi43YTAyMGZiNjBkMmFhOTYzYzY0MjljNDVk
OTYwMzdmNmQyMjFiZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaApAQCAtNDEsNyArNDEsNiBAQCBjbGFz
cyBET01TdHJpbmdMaXN0OwogCiBjbGFzcyBJREJCYWNraW5nU3RvcmU7CiBjbGFzcyBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOwotY2xhc3MgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjsKIAogY2xh
c3MgSURCRmFjdG9yeUJhY2tlbmRJbXBsIDogcHVibGljIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJm
YWNlIHsKIHB1YmxpYzoKQEAgLTcxLDggKzcwLDYgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBJREJCYWNraW5nU3RvcmUqPiBJREJCYWNraW5nU3RvcmVNYXA7CiAgICAg
SURCQmFja2luZ1N0b3JlTWFwIG1fYmFja2luZ1N0b3JlTWFwOwogCi0gICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3I+IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcjsKLQogICAgIC8v
IE9ubHkgb25lIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5IHNob3VsZCBleGlzdCBhdCBhbnkgZ2l2
ZW4gdGltZS4KICAgICBzdGF0aWMgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBpZGJGYWN0b3J5QmFj
a2VuZEltcGw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAppbmRleCBlZGFmZjJjNTA5
NjVkM2IwZDJmY2JlN2JiMGM0OTA3NTkwOGU4Zjc4Li42ZGIwZDcwYmYyNThjNmNlZGRlOGQ5MmRk
OWM5YjYwNTlhNDE0NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApAQCAtMzUsMTIg
KzM1LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yPiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjcmVhdGUoKQorUGFz
c093blB0cjxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBJREJUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvcigpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IElEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IoKSk7CiB9CiAKLUlEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OklEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IoKSAKK0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OklEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IoKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKaW5kZXggZWY5
OWU3MzdhYmYzMjYyNzFlN2Q1Mjc0MGUwZTllODI1ODY2YjI4MS4uYTc1YjdiZTE0MmI5NjVhMTVk
NjA2MDM2ZmNmYWQyOGEwOTJjOWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaApAQCAtNDAs
OSArNDAsOSBAQCBjbGFzcyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrczsKIGNsYXNzIElEQkRhdGFi
YXNlQmFja2VuZEltcGw7CiAKIC8vIFRyYW5zYWN0aW9ucyBhcmUgZXhlY3V0ZWQgaW4gdGhlIG9y
ZGVyIHRoZSB3ZXJlIGNyZWF0ZWQuCi1jbGFzcyBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yIDog
cHVibGljIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4geworY2xhc3MgSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gY3JlYXRlKCk7CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+SURC
VHJhbnNhY3Rpb25Db29yZGluYXRvcigpOwogCiAgICAgLy8gQ2FsbGVkIGJ5IHRyYW5zYWN0aW9u
cyBhcyB0aGV5IHN0YXJ0IGFuZCBmaW5pc2guCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODQ3ZjBlYzAxOGMyMGI0Zjc3YWFm
ZDljZmI2OGQxNjdkZDFjNTIyMC4uMDUxZGYxZjI1ZjM2MWFkMjkzN2MzYjlhY2VhMDEwYjcyNGNl
MGJmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA5LTI0ICBKb3NodWEgQmVsbCAgPGpz
YmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBPbmUgdHJhbnNhY3Rpb24g
Y29vcmRpbmF0b3IgcGVyIGRhdGFiYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NzUwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3QgdGhhdCB0cmFuc2FjdGlvbnMgY2FuIGJlIHBhcmFsbGVsaXpl
ZCBhY3Jvc3MgZGF0YWJhc2VzLCBhbmQgZW5zdXJlIHRoYXQKKyAgICAgICAgcmVhZC93cml0ZSB0
cmFuc2FjdGlvbnMgd2l0aCBvdmVybGFwcGluZyBzY29wZXMgYXJlIG5vdCBwYXJhbGxlbGl6ZWQg
d2l0aGluIGEgCisgICAgICAgIGRhdGFiYXNlLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2VzLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tcmVhZHdyaXRlLWV4Y2x1c2l2ZS5qczogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLWFjcm9zcy1kYXRhYmFzZXMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29y
ZGluYXRpb24tYWNyb3NzLWRhdGFiYXNlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1yZWFkd3JpdGUtZXhjbHVzaXZlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZHdyaXRl
LWV4Y2x1c2l2ZS5odG1sOiBBZGRlZC4KKwogMjAxMi0wOS0yNCAgRGFuIEJlcm5zdGVpbiAgPG1p
dHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmV0ZWQgcjEyOTE3NiBhbmQgcjEyOTE4NS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2Fj
dGlvbi1jb29yZGluYXRpb24tYWNyb3NzLWRhdGFiYXNlcy5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb29yZGluYXRpb24tYWNyb3NzLWRh
dGFiYXNlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOWE5YjdiYWZkZTZkZmI5MTZmNjQ3NzYwZmQwODM4OWRi
ZDJmYzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2VzLmpzCkBA
IC0wLDAgKzEsMTI5IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIkNoZWNrIHRoYXQg
dHJhbnNhY3Rpb25zIGluIGRpZmZlcmVudCBkYXRhYmFzZXMgY2FuIHJ1biBpbiBwYXJhbGxlbC4i
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAg
ICBzZXREQk5hbWVGcm9tUGF0aCgpOworICAgIGV2YWxBbmRMb2coImRibmFtZTEgPSBkYm5hbWUg
KyAnMSciKTsKKyAgICBldmFsQW5kTG9nKCJkYm5hbWUyID0gZGJuYW1lICsgJzInIik7CisKKyAg
ICBkZWxldGVEYXRhYmFzZTEoKTsKK30KKworZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2UxKCkKK3sK
KyAgICBwcmVhbWJsZSgpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVs
ZXRlRGF0YWJhc2UoZGJuYW1lMSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
QmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2Nr
ZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZURhdGFiYXNlMjsKK30K
KworZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2UyKCkKK3sKKyAgICBwcmVhbWJsZSgpOworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lMikiKTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJl
cXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5EYXRhYmFzZTE7Cit9CisKK2Z1bmN0aW9uIG9wZW5EYXRhYmFzZTEo
KQoreworICAgIHByZWFtYmxlKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKGRibmFtZTEsIDEpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEJs
b2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2Vk
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiBvcGVuT25V
cGdyYWRlTmVlZGVkMShldnQpIHsKKyAgICAgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICAgICAgZXZh
bEFuZExvZygiZGIxID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9n
KCJzdG9yZTEgPSBkYjEuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAgZXZh
bEFuZExvZygic3RvcmUxLnB1dCgwLCAwKSIpOworICAgIH07CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiBvcGVuT25TdWNjZXNzMShldnQpIHsKKyAgICAgICAgcHJlYW1ibGUoZXZ0
KTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIxID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAg
ICAgICBvcGVuRGF0YWJhc2UyKCk7CisgICAgfTsKK30KKworZnVuY3Rpb24gb3BlbkRhdGFiYXNl
MigpCit7CisgICAgcHJlYW1ibGUoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oZGJuYW1lMiwgMSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
QmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2Nr
ZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uIG9uVXBn
cmFkZU5lZWRlZDIoZXZ0KSB7CisgICAgICAgIHByZWFtYmxlKGV2dCk7CisgICAgICAgIGV2YWxB
bmRMb2coImRiMiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygi
c3RvcmUyID0gZGIyLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgICAgIGV2YWxB
bmRMb2coInN0b3JlMi5wdXQoMCwgMCkiKTsKKyAgICB9OworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24gb3Blbk9uU3VjY2VzczIoZXZ0KSB7CisgICAgICAgIHByZWFtYmxlKGV2dCk7
CisgICAgICAgIGV2YWxBbmRMb2coImRiMiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAg
ICAgc3RhcnRXb3JrKCk7CisgICAgfTsKK30KKworZnVuY3Rpb24gc3RhcnRXb3JrKCkKK3sKKyAg
ICBwcmVhbWJsZSgpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMSA9IGRiMS50cmFuc2Fj
dGlvbignc3RvcmUnKSIpOworICAgIHRyYW5zYWN0aW9uMS5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24xLm9uY29tcGxldGUgPSBvblRyYW5zYWN0aW9u
Q29tcGxldGU7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24yID0gZGIyLnRyYW5zYWN0aW9u
KCdzdG9yZScpIik7CisgICAgdHJhbnNhY3Rpb24xLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbjIub25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21w
bGV0ZTsKKworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMUdldFN1Y2Nlc3MgPSBmYWxzZSIp
OworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMkdldFN1Y2Nlc3MgPSBmYWxzZSIpOworCisg
ICAgZGVidWcoIktlZXAgYm90aCB0cmFuc2FjdGlvbnMgYWxpdmUgdW50aWwgZWFjaCBoYXMgcmVw
b3J0ZWQgYXQgbGVhc3Qgb25lIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uIik7CisKKyAgICAoZnVuY3Rp
b24gZG9UcmFuc2FjdGlvbjFHZXQoKSB7CisgICAgICAgIHJlcXVlc3QgPSB0cmFuc2FjdGlvbjEu
b2JqZWN0U3RvcmUoJ3N0b3JlJykuZ2V0KDApOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uMUdldFN1Y2Nlc3MgPSB0cnVlOworICAg
ICAgICAgICAgaWYgKCF0cmFuc2FjdGlvbjJHZXRTdWNjZXNzKQorICAgICAgICAgICAgICAgIGRv
VHJhbnNhY3Rpb24xR2V0KCk7CisgICAgICAgIH07CisgICAgfSgpKTsKKworICAgIChmdW5jdGlv
biBkb1RyYW5zYWN0aW9uMkdldCgpIHsKKyAgICAgICAgcmVxdWVzdCA9IHRyYW5zYWN0aW9uMi5v
YmplY3RTdG9yZSgnc3RvcmUnKS5nZXQoMCk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgdHJhbnNhY3Rpb24yR2V0U3VjY2VzcyA9IHRydWU7CisgICAg
ICAgICAgICBpZiAoIXRyYW5zYWN0aW9uMUdldFN1Y2Nlc3MpCisgICAgICAgICAgICAgICAgZG9U
cmFuc2FjdGlvbjJHZXQoKTsKKyAgICAgICAgfTsKKyAgICB9KCkpOworfQorCit0cmFuc2FjdGlv
bkNvbXBsZXRpb25Db3VudCA9IDA7CitmdW5jdGlvbiBvblRyYW5zYWN0aW9uQ29tcGxldGUoZXZ0
KQoreworICAgIHByZWFtYmxlKGV2dCk7CisKKyAgICArK3RyYW5zYWN0aW9uQ29tcGxldGlvbkNv
dW50OworICAgIGlmICh0cmFuc2FjdGlvbkNvbXBsZXRpb25Db3VudCA8IDIpIHsKKyAgICAgICAg
ZGVidWcoImZpcnN0IHRyYW5zYWN0aW9uIGNvbXBsZXRlLCBzdGlsbCB3YWl0aW5nLi4uIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZVRydWUoInRyYW5zYWN0aW9uMUdl
dFN1Y2Nlc3MiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zYWN0aW9uMkdldFN1Y2Nlc3MiKTsK
KworICAgIGV2YWxBbmRMb2coImRiMS5jbG9zZSgpIik7CisgICAgZXZhbEFuZExvZygiZGIyLmNs
b3NlKCkiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXJlYWR3
cml0ZS1leGNsdXNpdmUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvdHJhbnNhY3Rpb24tcmVhZHdyaXRlLWV4Y2x1c2l2ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjYxMDJj
ZTY5ODVmMzMzNGExMTQ4OWNmNTE4Mjk2NzkzNjhiYTE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXJlYWR3cml0
ZS1leGNsdXNpdmUuanMKQEAgLTAsMCArMSwxMDcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiQ2hlY2sgdGhhdCByZWFkd3JpdGUgdHJhbnNhY3Rpb25zIHdpdGggb3ZlcmxhcHBpbmcg
c2NvcGVzIGRvIG5vdCBydW4gaW4gcGFyYWxsZWwuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgc2V0REJOYW1lRnJvbVBhdGgoKTsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1l
KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlbkNvbm5lY3Rpb24xOworfQorCitmdW5jdGlvbiBvcGVuQ29u
bmVjdGlvbjEoKQoreworICAgIHByZWFtYmxlKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKGRibmFtZSwgMSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3Rl
ZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9u
IG9wZW5PblVwZ3JhZGVOZWVkZWQxKGV2dCkgeworICAgICAgICBwcmVhbWJsZShldnQpOworICAg
ICAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgZXZh
bEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIH07
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiBvcGVuT25TdWNjZXNzKGV2dCkgewor
ICAgICAgICBwcmVhbWJsZShldnQpOworICAgICAgICBldmFsQW5kTG9nKCJkYjEgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisgICAgICAgIG9wZW5Db25uZWN0aW9uMigpOworICAgIH07Cit9CisK
K2Z1bmN0aW9uIG9wZW5Db25uZWN0aW9uMigpCit7CisgICAgcHJlYW1ibGUoKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAxKSIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmJs
b2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub251cGdyYWRl
bmVlZGVkID0gdW5leHBlY3RlZFVwZ3JhZGVOZWVkZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIG9wZW5PblN1Y2Nlc3MyKGV2dCkgeworICAgICAgICBwcmVhbWJs
ZShldnQpOworICAgICAgICBldmFsQW5kTG9nKCJkYjIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgICAgIHN0YXJ0V29yaygpOworICAgIH07Cit9CisKK2Z1bmN0aW9uIHN0YXJ0V29yaygp
Cit7CisgICAgcHJlYW1ibGUoKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjEgPSBkYjEu
dHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWR3cml0ZScpIik7CisgICAgdHJhbnNhY3Rpb24xLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbjIgPSBkYjIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWR3cml0ZScpIik7CisgICAgdHJh
bnNhY3Rpb24xLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGV2YWxB
bmRMb2coInRyYW5zYWN0aW9uMVB1dFN1Y2Nlc3MgPSBmYWxzZSIpOworICAgIGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uMUNvbXBsZXRlID0gZmFsc2UiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbjJQdXRTdWNjZXNzID0gZmFsc2UiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjJD
b21wbGV0ZSA9IGZhbHNlIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktlZXAgdHJh
bnNhY3Rpb24xIGFsaXZlIGZvciBhIHdoaWxlIGFuZCBlbnN1cmUgdHJhbnNhY3Rpb24yIGRvZXNu
J3Qgc3RhcnQiKTsKKworICAgIGV2YWxBbmRMb2coImNvdW50ID0gMCIpOworCisgICAgKGZ1bmN0
aW9uIGRvVHJhbnNhY3Rpb24xUHV0KCkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24xLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCgxLCBjb3VudCsrKSIpOworICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiBwdXQxT25TdWNjZXNzKGV2dCkgeworICAgICAg
ICAgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
MVB1dFN1Y2Nlc3MgPSB0cnVlIik7CisgICAgICAgICAgICBpZiAoY291bnQgPCA1KSB7CisgICAg
ICAgICAgICAgICAgZG9UcmFuc2FjdGlvbjFQdXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKyAgICB9KCkpOworCisgICAgdHJhbnNhY3Rpb24xLm9uY29tcGxldGUgPSBmdW5jdGlvbiBv
blRyYW5zYWN0aW9uMUNvbXBsZXRlKGV2dCkgeworICAgICAgICBwcmVhbWJsZShldnQpOworICAg
ICAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjFDb21wbGV0ZSA9IHRydWUiKTsKKyAgICAgICAg
c2hvdWxkQmVGYWxzZSgidHJhbnNhY3Rpb24yUHV0U3VjY2VzcyIpOworICAgICAgICBzaG91bGRC
ZUZhbHNlKCJ0cmFuc2FjdGlvbjJDb21wbGV0ZSIpOworICAgIH07CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygidHJhbnNhY3Rpb24yLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCgyLCAwKSIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gcHV0Mk9uU3VjY2VzcyhldnQpIHsKKyAgICAgICAg
cHJlYW1ibGUoZXZ0KTsKKyAgICAgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24yUHV0U3VjY2Vz
cyA9IHRydWUiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFuc2FjdGlvbjFDb21wbGV0ZSIp
OworICAgIH07CisKKyAgICB0cmFuc2FjdGlvbjIub25jb21wbGV0ZSA9IGZ1bmN0aW9uIG9uVHJh
bnNhY3Rpb24yQ29tcGxldGUoZXZ0KSB7CisgICAgICAgIHByZWFtYmxlKGV2dCk7CisgICAgICAg
IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMkNvbXBsZXRlID0gdHJ1ZSIpOworICAgICAgICBzaG91
bGRCZVRydWUoInRyYW5zYWN0aW9uMVB1dFN1Y2Nlc3MiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVl
KCJ0cmFuc2FjdGlvbjFDb21wbGV0ZSIpOworICAgICAgICBzaG91bGRCZVRydWUoInRyYW5zYWN0
aW9uMlB1dFN1Y2Nlc3MiKTsKKworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9OworfQor
Cit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1jb29yZGluYXRpb24tYWNyb3NzLWRhdGFiYXNlcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24tYWNyb3Nz
LWRhdGFiYXNlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE5ZTg5MGIyN2NmZWNhZTU1NTM2
M2JhY2RmOWYwMjc0MjgzOTRjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2VzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDU4IEBACitDaGVjayB0aGF0IHRyYW5zYWN0aW9ucyBpbiBk
aWZmZXJlbnQgZGF0YWJhc2VzIGNhbiBydW4gaW4gcGFyYWxsZWwuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtp
dEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNl
bGYuT0luZGV4ZWREQjsKKworZGJuYW1lID0gInRyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jv
c3MtZGF0YWJhc2VzLmh0bWwiCitkYm5hbWUxID0gZGJuYW1lICsgJzEnCitkYm5hbWUyID0gZGJu
YW1lICsgJzInCisKK2RlbGV0ZURhdGFiYXNlMSgpOgoraW5kZXhlZERCLmRlbGV0ZURhdGFiYXNl
KGRibmFtZTEpCisKK2RlbGV0ZURhdGFiYXNlMigpOgoraW5kZXhlZERCLmRlbGV0ZURhdGFiYXNl
KGRibmFtZTIpCisKK29wZW5EYXRhYmFzZTEoKToKK2luZGV4ZWREQi5vcGVuKGRibmFtZTEsIDEp
CisKK29wZW5PblVwZ3JhZGVOZWVkZWQxKCk6CitkYjEgPSBldmVudC50YXJnZXQucmVzdWx0Citz
dG9yZTEgPSBkYjEuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlMS5wdXQoMCwgMCkK
Kworb3Blbk9uU3VjY2VzczEoKToKK2RiMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQKKworb3BlbkRh
dGFiYXNlMigpOgoraW5kZXhlZERCLm9wZW4oZGJuYW1lMiwgMSkKKworb25VcGdyYWRlTmVlZGVk
MigpOgorZGIyID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorc3RvcmUyID0gZGIyLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZScpCitzdG9yZTIucHV0KDAsIDApCisKK29wZW5PblN1Y2Nlc3MyKCk6Citk
YjIgPSBldmVudC50YXJnZXQucmVzdWx0CisKK3N0YXJ0V29yaygpOgordHJhbnNhY3Rpb24xID0g
ZGIxLnRyYW5zYWN0aW9uKCdzdG9yZScpCit0cmFuc2FjdGlvbjIgPSBkYjIudHJhbnNhY3Rpb24o
J3N0b3JlJykKK3RyYW5zYWN0aW9uMUdldFN1Y2Nlc3MgPSBmYWxzZQordHJhbnNhY3Rpb24yR2V0
U3VjY2VzcyA9IGZhbHNlCitLZWVwIGJvdGggdHJhbnNhY3Rpb25zIGFsaXZlIHVudGlsIGVhY2gg
aGFzIHJlcG9ydGVkIGF0IGxlYXN0IG9uZSBzdWNjZXNzZnVsIG9wZXJhdGlvbgorCitvblRyYW5z
YWN0aW9uQ29tcGxldGUoKToKK2ZpcnN0IHRyYW5zYWN0aW9uIGNvbXBsZXRlLCBzdGlsbCB3YWl0
aW5nLi4uCisKK29uVHJhbnNhY3Rpb25Db21wbGV0ZSgpOgorUEFTUyB0cmFuc2FjdGlvbjFHZXRT
dWNjZXNzIGlzIHRydWUKK1BBU1MgdHJhbnNhY3Rpb24yR2V0U3VjY2VzcyBpcyB0cnVlCitkYjEu
Y2xvc2UoKQorZGIyLmNsb3NlKCkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24tYWNyb3NzLWRhdGFiYXNlcy5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLWFjcm9zcy1k
YXRhYmFzZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2E3NDFjN2UzYWM3ODY3MWMwNTE3MDVjMDZkMDAx
OGZjZWUxNzE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLWFjcm9zcy1kYXRhYmFzZXMuaHRtbApAQCAtMCww
ICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0
YWJhc2VzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZHdyaXRlLWV4
Y2x1c2l2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1yZWFkd3JpdGUtZXhjbHVzaXZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWRm
MGI2YjZkZmQzYzA3ODdmNmY5M2U3YWNhMDllNmRiZDgzZGM4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZHdyaXRlLWV4Y2x1
c2l2ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3NiBAQAorQ2hlY2sgdGhhdCByZWFkd3JpdGUg
dHJhbnNhY3Rpb25zIHdpdGggb3ZlcmxhcHBpbmcgc2NvcGVzIGRvIG5vdCBydW4gaW4gcGFyYWxs
ZWwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmlu
ZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBz
ZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworZGJuYW1lID0gInRyYW5zYWN0
aW9uLXJlYWR3cml0ZS1leGNsdXNpdmUuaHRtbCIKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShk
Ym5hbWUpCisKK29wZW5Db25uZWN0aW9uMSgpOgoraW5kZXhlZERCLm9wZW4oZGJuYW1lLCAxKQor
CitvcGVuT25VcGdyYWRlTmVlZGVkMSgpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitzdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpCisKK29wZW5PblN1Y2Nlc3MoKToKK2Ri
MSA9IGV2ZW50LnRhcmdldC5yZXN1bHQKKworb3BlbkNvbm5lY3Rpb24yKCk6CitpbmRleGVkREIu
b3BlbihkYm5hbWUsIDEpCisKK29wZW5PblN1Y2Nlc3MyKCk6CitkYjIgPSBldmVudC50YXJnZXQu
cmVzdWx0CisKK3N0YXJ0V29yaygpOgordHJhbnNhY3Rpb24xID0gZGIxLnRyYW5zYWN0aW9uKCdz
dG9yZScsICdyZWFkd3JpdGUnKQordHJhbnNhY3Rpb24yID0gZGIyLnRyYW5zYWN0aW9uKCdzdG9y
ZScsICdyZWFkd3JpdGUnKQordHJhbnNhY3Rpb24xUHV0U3VjY2VzcyA9IGZhbHNlCit0cmFuc2Fj
dGlvbjFDb21wbGV0ZSA9IGZhbHNlCit0cmFuc2FjdGlvbjJQdXRTdWNjZXNzID0gZmFsc2UKK3Ry
YW5zYWN0aW9uMkNvbXBsZXRlID0gZmFsc2UKKworS2VlcCB0cmFuc2FjdGlvbjEgYWxpdmUgZm9y
IGEgd2hpbGUgYW5kIGVuc3VyZSB0cmFuc2FjdGlvbjIgZG9lc24ndCBzdGFydAorY291bnQgPSAw
Cit0cmFuc2FjdGlvbjEub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KDEsIGNvdW50KyspCit0cmFu
c2FjdGlvbjIub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KDIsIDApCisKK3B1dDFPblN1Y2Nlc3Mo
KToKK3RyYW5zYWN0aW9uMVB1dFN1Y2Nlc3MgPSB0cnVlCit0cmFuc2FjdGlvbjEub2JqZWN0U3Rv
cmUoJ3N0b3JlJykucHV0KDEsIGNvdW50KyspCisKK3B1dDFPblN1Y2Nlc3MoKToKK3RyYW5zYWN0
aW9uMVB1dFN1Y2Nlc3MgPSB0cnVlCit0cmFuc2FjdGlvbjEub2JqZWN0U3RvcmUoJ3N0b3JlJyku
cHV0KDEsIGNvdW50KyspCisKK3B1dDFPblN1Y2Nlc3MoKToKK3RyYW5zYWN0aW9uMVB1dFN1Y2Nl
c3MgPSB0cnVlCit0cmFuc2FjdGlvbjEub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KDEsIGNvdW50
KyspCisKK3B1dDFPblN1Y2Nlc3MoKToKK3RyYW5zYWN0aW9uMVB1dFN1Y2Nlc3MgPSB0cnVlCit0
cmFuc2FjdGlvbjEub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KDEsIGNvdW50KyspCisKK3B1dDFP
blN1Y2Nlc3MoKToKK3RyYW5zYWN0aW9uMVB1dFN1Y2Nlc3MgPSB0cnVlCisKK29uVHJhbnNhY3Rp
b24xQ29tcGxldGUoKToKK3RyYW5zYWN0aW9uMUNvbXBsZXRlID0gdHJ1ZQorUEFTUyB0cmFuc2Fj
dGlvbjJQdXRTdWNjZXNzIGlzIGZhbHNlCitQQVNTIHRyYW5zYWN0aW9uMkNvbXBsZXRlIGlzIGZh
bHNlCisKK3B1dDJPblN1Y2Nlc3MoKToKK3RyYW5zYWN0aW9uMlB1dFN1Y2Nlc3MgPSB0cnVlCitQ
QVNTIHRyYW5zYWN0aW9uMUNvbXBsZXRlIGlzIHRydWUKKworb25UcmFuc2FjdGlvbjJDb21wbGV0
ZSgpOgordHJhbnNhY3Rpb24yQ29tcGxldGUgPSB0cnVlCitQQVNTIHRyYW5zYWN0aW9uMVB1dFN1
Y2Nlc3MgaXMgdHJ1ZQorUEFTUyB0cmFuc2FjdGlvbjFDb21wbGV0ZSBpcyB0cnVlCitQQVNTIHRy
YW5zYWN0aW9uMlB1dFN1Y2Nlc3MgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWR3cml0ZS1leGNsdXNpdmUuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWR3cml0ZS1leGNsdXNpdmUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wODY0MGJhOTgxMGMyMWQzNTcxNWUyOWMzY2Y4N2RlOTRmYmE1Y2EzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tcmVhZHdyaXRlLWV4Y2x1c2l2ZS5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
dHJhbnNhY3Rpb24tcmVhZHdyaXRlLWV4Y2x1c2l2ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165475</attachid>
            <date>2012-09-24 17:27:17 -0700</date>
            <delta_ts>2012-09-25 11:15:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97501-20120924172638.patch</filename>
            <type>text/plain</type>
            <size>28511</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5Mzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBjMWZjNTZhMmRjMTFj
YTAwOWU5ODM3NjQ2YjE3NjEwMWY3NzQ1Ny4uYzFkN2JkMGQ2NmNjNzg1YTZkNGI2YTdlMTBkYzUy
YjRjZTcyZGVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA5LTI0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBPbmUg
dHJhbnNhY3Rpb24gY29vcmRpbmF0b3IgcGVyIGRhdGFiYXNlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzUwMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBlciB0aGUgSURCIHNwZWMsIHRyYW5zYWN0aW9u
cyBvbmx5IG5lZWQgdG8gYmUgc2VxdWVuY2VkIHdpdGhpbiBkYXRhYmFzZXMuCisgICAgICAgIFRo
ZSBpbXBsZW1lbnRhdGlvbiB3YXMgdXNpbmcgb25lIGNvb3JkaW5hdG9yIHBlciBmYWN0b3J5IGJh
Y2tlbmQgKGVmZmVjdGl2ZWx5CisgICAgICAgIGEgc2luZ2xldG9uKSwgd2hpY2ggd291bGQgcHJl
dmVudCBwYXJhbGxlbCBleGVjdXRpb24gb2YgdHJhbnNhY3Rpb25zIGluIGRpZmZlcmVudAorICAg
ICAgICBkYXRhYmFzZXMuIE1vdmVkIG93bmVyc2hpcCBvZiB0aGUgdHJhbnNhY3Rpb24gY29vcmRp
bmF0b3IgdG8gdGhlIGRhdGFiYXNlIGJhY2tlbmQuCisKKyAgICAgICAgVGVzdHM6IHN0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2VzLmh0bWwK
KyAgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWR3cml0ZS1l
eGNsdXNpdmUuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBs
OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZElt
cGw6Om9wZW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJGYWN0b3J5QmFja2VuZElt
cGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OklEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IpOgorCiAyMDEyLTA5LTI0ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2ZXJ0ZWQgcjEyOTE3NiwgdGhlIGZpeCBmb3IgPGh0dHA6Ly93ZWJraXQub3JnL2Iv
OTcyNjk+LCBiZWNhdXNlIGl0IGludHJvZHVjZWQgYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCBkYjY1YzVjZGU5YTA1NzJjMmQ4ZDFjZTZkYTQ2YjA0MDFmMTMxMDg0Li43NDA2YTNiYTU1
YWNmNjhjYzA5NDcxYzU2NGQ4MDA5OGU3NzcyOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTI0ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBPbmUgdHJhbnNhY3Rpb24gY29vcmRpbmF0
b3IgcGVyIGRhdGFiYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NzUwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbW92ZSBvYnNvbGV0ZSBhcmd1bWVudC4KKworICAgICAgICAqIHRlc3RzL0lEQkRh
dGFiYXNlQmFja2VuZFRlc3QuaDoKKwogMjAxMi0wOS0yNCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtq
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCBzZXR0ZXJzIHRvIFdlYkZp
bHRlck9wZXJhdGlvbiBmb3IgSVBDIHBpY2tsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4
IGI5Mjk3OWYxYzQzYmQ3MjdmZWFkZTljODI4NDc0ZTQ5MzQ1ZWE1OTEuLjcxMzU2OGJmNWE2M2Rm
YzgyZmZhOTYwODk4NDk1NTAxNjI5YzlhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0x
MTksOSArMTE5LDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
IG1fZGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCi1QYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUs
IElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIGNv
b3JkaW5hdG9yLCBJREJGYWN0b3J5QmFja2VuZEltcGwqIGZhY3RvcnksIGNvbnN0IFN0cmluZyYg
dW5pcXVlSWRlbnRpZmllcikKK1Bhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2lu
Z1N0b3JlKiBkYXRhYmFzZSwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBjb25zdCBT
dHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw+IGJhY2tlbmQgPSBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChuYW1l
LCBkYXRhYmFzZSwgY29vcmRpbmF0b3IsIGZhY3RvcnksIHVuaXF1ZUlkZW50aWZpZXIpKTsKKyAg
ICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gYmFja2VuZCA9IGFkb3B0UmVmKG5ldyBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsKG5hbWUsIGRhdGFiYXNlLCBmYWN0b3J5LCB1bmlxdWVJZGVu
dGlmaWVyKSk7CiAgICAgaWYgKCFiYWNrZW5kLT5vcGVuSW50ZXJuYWwoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgcmV0dXJuIGJhY2tlbmQucmVsZWFzZSgpOwpAQCAtMTMxLDcgKzEzMSw3IEBA
IG5hbWVzcGFjZSB7CiBjb25zdCBjaGFyKiBOb1N0cmluZ1ZlcnNpb24gPSAiIjsKIH0KIAotSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcm
IG5hbWUsIElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yKiBjb29yZGluYXRvciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBjb25z
dCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpCitJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlKiBi
YWNraW5nU3RvcmUsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29uc3QgU3RyaW5n
JiB1bmlxdWVJZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQog
ICAgICwgbV9pZChJbnZhbGlkSWQpCiAgICAgLCBtX25hbWUobmFtZSkKQEAgLTEzOSw3ICsxMzks
NyBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0
IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0bwogICAgICwgbV9pbnRWZXJzaW9uKElEQkRhdGFi
YXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikKICAgICAsIG1faWRlbnRpZmllcih1bmlxdWVJZGVu
dGlmaWVyKQogICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCi0gICAgLCBtX3RyYW5zYWN0aW9uQ29v
cmRpbmF0b3IoY29vcmRpbmF0b3IpCisgICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y3JlYXRlKCkpCiB7CiAgICAgQVNTRVJUKCFtX25hbWUu
aXNOdWxsKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDExMmJhM2RlNjJhMzYxYjVhNjZh
NjEzNjcwMjkzMDFiN2E5ZjM1ZDUuLjVhZDUxYmE2OWU2MjI0YWQyYTQ0NTlkN2ZmNjA4MTRiYjlm
ZDZmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgSURCVHJh
bnNhY3Rpb25Db29yZGluYXRvcjsKIAogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCA6IHB1
YmxpYyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5h
bWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iq
LCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElEQkZhY3RvcnlC
YWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcik7CiAgICAgdmlydHVh
bCB+SURCRGF0YWJhc2VCYWNrZW5kSW1wbCgpOwogCiAgICAgUGFzc1JlZlB0cjxJREJCYWNraW5n
U3RvcmU+IGJhY2tpbmdTdG9yZSgpIGNvbnN0OwpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB0cmFuc2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZChQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw+KTsKIAogcHJpdmF0ZToKLSAgICBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvciosIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIGNvbnN0IFN0
cmluZyYgdW5pcXVlSWRlbnRpZmllcik7CisgICAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25z
dCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElEQkZhY3RvcnlCYWNr
ZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcik7CiAKICAgICBib29sIG9w
ZW5JbnRlcm5hbCgpOwogICAgIHZvaWQgcnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGlu
dDY0X3QgcmVxdWVzdGVkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToK
ICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbD4gPiBPYmplY3RTdG9yZU1hcDsKICAgICBPYmplY3RTdG9yZU1hcCBtX29iamVjdFN0b3Jl
czsKIAotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBtX3RyYW5zYWN0aW9u
Q29vcmRpbmF0b3I7CisgICAgT3duUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IG1fdHJh
bnNhY3Rpb25Db29yZGluYXRvcjsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bD4gbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uOwogCiAgICAgdHlwZWRlZiBIYXNo
U2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPiBUcmFuc2FjdGlvblNldDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEltcGwuY3BwCmluZGV4IGM3ZWY4NjBlMTNlMmQxODE3OWFlNWVjYzBjNzU5NzA5Yjg4NDNkZTku
LjY4ZTdkM2FkMDdjNDFlMTFmMmVkOGNlOWNjM2MyNWU3ZjAxM2E3MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmNwcApAQCAtNTUsNyArNTUsNiBAQCBzdGF0aWMgU3RyaW5nIGNvbXB1dGVVbmlxdWVJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaQogfQogCiBJ
REJGYWN0b3J5QmFja2VuZEltcGw6OklEQkZhY3RvcnlCYWNrZW5kSW1wbCgpCi0gICAgOiBtX3Ry
YW5zYWN0aW9uQ29vcmRpbmF0b3IoSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y3JlYXRlKCkp
CiB7CiB9CiAKQEAgLTExOCw3ICsxMTcsNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6
ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+
IGRhdGFiYXNlQmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBi
YWNraW5nU3RvcmUuZ2V0KCksIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKSwgdGhpcywg
dW5pcXVlSWRlbnRpZmllcik7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRh
dGFiYXNlQmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNr
aW5nU3RvcmUuZ2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOwogICAgIGlmIChkYXRhYmFz
ZUJhY2tlbmQpIHsKICAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50
aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CiAgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+
ZGVsZXRlRGF0YWJhc2UoY2FsbGJhY2tzKTsKQEAgLTE2NCw3ICsxNjMsNyBAQCB2b2lkIElEQkZh
Y3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lv
biwgUGFzc1JlZlB0cgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
ZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUsIGJh
Y2tpbmdTdG9yZS5nZXQoKSwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpLCB0aGlzLCB1
bmlxdWVJZGVudGlmaWVyKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUsIGJhY2tpbmdTdG9yZS5nZXQoKSwgdGhpcywgdW5pcXVl
SWRlbnRpZmllcik7CiAgICAgICAgIGlmIChkYXRhYmFzZUJhY2tlbmQpCiAgICAgICAgICAgICBt
X2RhdGFiYXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5k
LmdldCgpKTsKICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCmluZGV4IDNhZTA3MDMxMGRh
ZTg3NjQzNTk2Y2E5YjI5OTNjMzNhNDY3MGIxYjMuLjdhMDIwZmI2MGQyYWE5NjNjNjQyOWM0NWQ5
NjAzN2Y2ZDIyMWJlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCkBAIC00MSw3ICs0MSw2IEBAIGNsYXNz
IERPTVN0cmluZ0xpc3Q7CiAKIGNsYXNzIElEQkJhY2tpbmdTdG9yZTsKIGNsYXNzIElEQkRhdGFi
YXNlQmFja2VuZEltcGw7Ci1jbGFzcyBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOwogCiBjbGFz
cyBJREJGYWN0b3J5QmFja2VuZEltcGwgOiBwdWJsaWMgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZh
Y2UgewogcHVibGljOgpAQCAtNzEsOCArNzAsNiBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIElEQkJhY2tpbmdTdG9yZSo+IElEQkJhY2tpbmdTdG9yZU1hcDsKICAgICBJ
REJCYWNraW5nU3RvcmVNYXAgbV9iYWNraW5nU3RvcmVNYXA7CiAKLSAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yOwotCiAgICAgLy8g
T25seSBvbmUgaW5zdGFuY2Ugb2YgdGhlIGZhY3Rvcnkgc2hvdWxkIGV4aXN0IGF0IGFueSBnaXZl
biB0aW1lLgogICAgIHN0YXRpYyBJREJGYWN0b3J5QmFja2VuZEltcGwqIGlkYkZhY3RvcnlCYWNr
ZW5kSW1wbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IGVkYWZmMmM1MDk2
NWQzYjBkMmZjYmU3YmIwYzQ5MDc1OTA4ZThmNzguLjZkYjBkNzBiZjI1OGM2Y2VkZGU4ZDkyZGQ5
YzliNjA1OWE0MTQ2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCkBAIC0zNSwxMiAr
MzUsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3I+IElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNyZWF0ZSgpCitQYXNz
T3duUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3I6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yKCkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvcigpKTsKIH0KIAotSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6SURCVHJhbnNhY3Rp
b25Db29yZGluYXRvcigpIAorSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6SURCVHJhbnNhY3Rp
b25Db29yZGluYXRvcigpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaAppbmRleCBlZjk5
ZTczN2FiZjMyNjI3MWU3ZDUyNzQwZTBlOWU4MjU4NjZiMjgxLi5hNzViN2JlMTQyYjk2NWExNWQ2
MDYwMzZmY2ZhZDI4YTA5MmM5YWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oCkBAIC00MCw5
ICs0MCw5IEBAIGNsYXNzIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzOwogY2xhc3MgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDsKIAogLy8gVHJhbnNhY3Rpb25zIGFyZSBleGVjdXRlZCBpbiB0aGUgb3Jk
ZXIgdGhlIHdlcmUgY3JlYXRlZC4KLWNsYXNzIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IgOiBw
dWJsaWMgUmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiB7CitjbGFzcyBJREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUGFzc093blB0
cjxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5JREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCk7CiAKICAgICAvLyBDYWxsZWQgYnkgdHJhbnNhY3Rpb25z
IGFzIHRoZXkgc3RhcnQgYW5kIGZpbmlzaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCmluZGV4IDQ1OWRkNGI5NzNm
OWZlMDllZTliZjIwOTRkMWM1ZDQxNjU3NGFjMDguLmI2YjM2NjcxZDc0ZmYzNGU2YWZiNzY0MWRl
OGI4MTg3OGRjZDk5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1
ZGUgIklEQkZha2VCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbXBs
LmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIgotI2luY2x1ZGUgIklE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGwuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUltcGwuaCIKIApAQCAtNTMsOSAr
NTIsOCBAQCBURVNUKElEQkRhdGFiYXNlQmFja2VuZFRlc3QsIEJhY2tpbmdTdG9yZVJldGVudGlv
bikKICAgICBSZWZQdHI8SURCRmFrZUJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gYWRvcHRS
ZWYobmV3IElEQkZha2VCYWNraW5nU3RvcmUoKSk7CiAgICAgRVhQRUNUX1RSVUUoYmFja2luZ1N0
b3JlLT5oYXNPbmVSZWYoKSk7CiAKLSAgICBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBjb29y
ZGluYXRvciA9IDA7CiAgICAgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5ID0gMDsKLSAg
ICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGIgPSBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpjcmVhdGUoImRiIiwgYmFja2luZ1N0b3JlLmdldCgpLCBjb29yZGluYXRvciwgZmFjdG9y
eSwgInVuaXF1ZWlkIik7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRiID0g
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKCJkYiIsIGJhY2tpbmdTdG9yZS5nZXQoKSwg
ZmFjdG9yeSwgInVuaXF1ZWlkIik7CiAgICAgRVhQRUNUX0dUKGJhY2tpbmdTdG9yZS0+cmVmQ291
bnQoKSwgMSk7CiAKICAgICBjb25zdCBib29sIGF1dG9JbmNyZW1lbnQgPSBmYWxzZTsKQEAgLTEx
OCw5ICsxMTYsOCBAQCBURVNUKElEQkRhdGFiYXNlQmFja2VuZFRlc3QsIENvbm5lY3Rpb25MaWZl
Y3ljbGUpCiAgICAgUmVmUHRyPElEQkZha2VCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IGFk
b3B0UmVmKG5ldyBJREJGYWtlQmFja2luZ1N0b3JlKCkpOwogICAgIEVYUEVDVF9UUlVFKGJhY2tp
bmdTdG9yZS0+aGFzT25lUmVmKCkpOwogCi0gICAgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciog
Y29vcmRpbmF0b3IgPSAwOwogICAgIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSA9IDA7
Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRiID0gSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y3JlYXRlKCJkYiIsIGJhY2tpbmdTdG9yZS5nZXQoKSwgY29vcmRpbmF0b3IsIGZh
Y3RvcnksICJ1bmlxdWVpZCIpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBk
YiA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZSgiZGIiLCBiYWNraW5nU3RvcmUuZ2V0
KCksIGZhY3RvcnksICJ1bmlxdWVpZCIpOwogICAgIEVYUEVDVF9HVChiYWNraW5nU3RvcmUtPnJl
ZkNvdW50KCksIDEpOwogCiAgICAgUmVmUHRyPE1vY2tJREJDYWxsYmFja3M+IHJlcXVlc3QxID0g
TW9ja0lEQkNhbGxiYWNrczo6Y3JlYXRlKCk7CkBAIC0xNzcsOSArMTc0LDggQEAgVEVTVChJREJE
YXRhYmFzZUJhY2tlbmRUZXN0LCBGb3JjZWRDbG9zZSkKICAgICBSZWZQdHI8SURCRmFrZUJhY2tp
bmdTdG9yZT4gYmFja2luZ1N0b3JlID0gYWRvcHRSZWYobmV3IElEQkZha2VCYWNraW5nU3RvcmUo
KSk7CiAgICAgRVhQRUNUX1RSVUUoYmFja2luZ1N0b3JlLT5oYXNPbmVSZWYoKSk7CiAKLSAgICBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvciA9IDA7CiAgICAgSURCRmFjdG9y
eUJhY2tlbmRJbXBsKiBmYWN0b3J5ID0gMDsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4gYmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZSgiZGIiLCBiYWNr
aW5nU3RvcmUuZ2V0KCksIGNvb3JkaW5hdG9yLCBmYWN0b3J5LCAidW5pcXVlaWQiKTsKKyAgICBS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gYmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNyZWF0ZSgiZGIiLCBiYWNraW5nU3RvcmUuZ2V0KCksIGZhY3RvcnksICJ1bmlxdWVp
ZCIpOwogICAgIEVYUEVDVF9HVChiYWNraW5nU3RvcmUtPnJlZkNvdW50KCksIDEpOwogCiAgICAg
UmVmUHRyPEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcz4gY29ubmVjdGlvbiA9IEZha2VJREJEYXRh
YmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODQ3ZjBlYzAxOGMyMGI0Zjc3YWFmZDlj
ZmI2OGQxNjdkZDFjNTIyMC4uOGUyZDZiOTQxZTlhM2E3NTY3Y2NiNmM1YTE5MzM2ZDVmNzBkY2M4
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA5LTI0ICBKb3NodWEgQmVsbCAgPGpzYmVs
bEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBPbmUgdHJhbnNhY3Rpb24gY29v
cmRpbmF0b3IgcGVyIGRhdGFiYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NzUwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3QgdGhhdCB0cmFuc2FjdGlvbnMgY2FuIGJlIHBhcmFsbGVsaXplZCBh
Y3Jvc3MgZGF0YWJhc2VzLCBhbmQgZW5zdXJlIHRoYXQKKyAgICAgICAgcmVhZC93cml0ZSB0cmFu
c2FjdGlvbnMgd2l0aCBvdmVybGFwcGluZyBzY29wZXMgYXJlIG5vdCBwYXJhbGxlbGl6ZWQgd2l0
aGluIGEKKyAgICAgICAgZGF0YWJhc2UuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLWFjcm9zcy1kYXRhYmFzZXMuanM6IEFk
ZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1y
ZWFkd3JpdGUtZXhjbHVzaXZlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24tYWNyb3NzLWRhdGFiYXNlcy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5h
dGlvbi1hY3Jvc3MtZGF0YWJhc2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWR3cml0ZS1leGNsdXNpdmUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1yZWFkd3JpdGUtZXhj
bHVzaXZlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA5LTI0ICBEYW4gQmVybnN0ZWluICA8bWl0ekBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXRlZCByMTI5MTc2IGFuZCByMTI5MTg1LgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2VzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJh
c2VzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE5YTliN2JhZmRlNmRmYjkxNmY2NDc3NjBmZDA4Mzg5ZGJkMmZj
NDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLWFjcm9zcy1kYXRhYmFzZXMuanMKQEAgLTAs
MCArMSwxMjkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiQ2hlY2sgdGhhdCB0cmFu
c2FjdGlvbnMgaW4gZGlmZmVyZW50IGRhdGFiYXNlcyBjYW4gcnVuIGluIHBhcmFsbGVsLiIpOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHNl
dERCTmFtZUZyb21QYXRoKCk7CisgICAgZXZhbEFuZExvZygiZGJuYW1lMSA9IGRibmFtZSArICcx
JyIpOworICAgIGV2YWxBbmRMb2coImRibmFtZTIgPSBkYm5hbWUgKyAnMiciKTsKKworICAgIGRl
bGV0ZURhdGFiYXNlMSgpOworfQorCitmdW5jdGlvbiBkZWxldGVEYXRhYmFzZTEoKQoreworICAg
IHByZWFtYmxlKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVE
YXRhYmFzZShkYm5hbWUxKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRCbG9j
a2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENh
bGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRGF0YWJhc2UyOworfQorCitm
dW5jdGlvbiBkZWxldGVEYXRhYmFzZTIoKQoreworICAgIHByZWFtYmxlKCk7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUyKSIpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlbkRhdGFiYXNlMTsKK30KKworZnVuY3Rpb24gb3BlbkRhdGFiYXNlMSgpCit7
CisgICAgcHJlYW1ibGUoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oZGJuYW1lMSwgMSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkQmxvY2tl
ZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uIG9wZW5PblVwZ3Jh
ZGVOZWVkZWQxKGV2dCkgeworICAgICAgICBwcmVhbWJsZShldnQpOworICAgICAgICBldmFsQW5k
TG9nKCJkYjEgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIGV2YWxBbmRMb2coInN0
b3JlMSA9IGRiMS5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZTEucHV0KDAsIDApIik7CisgICAgfTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uIG9wZW5PblN1Y2Nlc3MxKGV2dCkgeworICAgICAgICBwcmVhbWJsZShldnQpOwor
ICAgICAgICBldmFsQW5kTG9nKCJkYjEgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAg
IG9wZW5EYXRhYmFzZTIoKTsKKyAgICB9OworfQorCitmdW5jdGlvbiBvcGVuRGF0YWJhc2UyKCkK
K3sKKyAgICBwcmVhbWJsZSgpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihkYm5hbWUyLCAxKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRCbG9j
a2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENh
bGxiYWNrOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gb25VcGdyYWRl
TmVlZGVkMihldnQpIHsKKyAgICAgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICAgICAgZXZhbEFuZExv
ZygiZGIyID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9y
ZTIgPSBkYjIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUyLnB1dCgwLCAwKSIpOworICAgIH07CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiBvcGVuT25TdWNjZXNzMihldnQpIHsKKyAgICAgICAgcHJlYW1ibGUoZXZ0KTsKKyAg
ICAgICAgZXZhbEFuZExvZygiZGIyID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBz
dGFydFdvcmsoKTsKKyAgICB9OworfQorCitmdW5jdGlvbiBzdGFydFdvcmsoKQoreworICAgIHBy
ZWFtYmxlKCk7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24xID0gZGIxLnRyYW5zYWN0aW9u
KCdzdG9yZScpIik7CisgICAgdHJhbnNhY3Rpb24xLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbjEub25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21w
bGV0ZTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjIgPSBkYjIudHJhbnNhY3Rpb24oJ3N0
b3JlJykiKTsKKyAgICB0cmFuc2FjdGlvbjEub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgIHRyYW5zYWN0aW9uMi5vbmNvbXBsZXRlID0gb25UcmFuc2FjdGlvbkNvbXBsZXRl
OworCisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24xR2V0U3VjY2VzcyA9IGZhbHNlIik7Cisg
ICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24yR2V0U3VjY2VzcyA9IGZhbHNlIik7CisKKyAgICBk
ZWJ1ZygiS2VlcCBib3RoIHRyYW5zYWN0aW9ucyBhbGl2ZSB1bnRpbCBlYWNoIGhhcyByZXBvcnRl
ZCBhdCBsZWFzdCBvbmUgc3VjY2Vzc2Z1bCBvcGVyYXRpb24iKTsKKworICAgIChmdW5jdGlvbiBk
b1RyYW5zYWN0aW9uMUdldCgpIHsKKyAgICAgICAgcmVxdWVzdCA9IHRyYW5zYWN0aW9uMS5vYmpl
Y3RTdG9yZSgnc3RvcmUnKS5nZXQoMCk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgdHJhbnNhY3Rpb24xR2V0U3VjY2VzcyA9IHRydWU7CisgICAgICAg
ICAgICBpZiAoIXRyYW5zYWN0aW9uMkdldFN1Y2Nlc3MpCisgICAgICAgICAgICAgICAgZG9UcmFu
c2FjdGlvbjFHZXQoKTsKKyAgICAgICAgfTsKKyAgICB9KCkpOworCisgICAgKGZ1bmN0aW9uIGRv
VHJhbnNhY3Rpb24yR2V0KCkgeworICAgICAgICByZXF1ZXN0ID0gdHJhbnNhY3Rpb24yLm9iamVj
dFN0b3JlKCdzdG9yZScpLmdldCgwKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICB0cmFuc2FjdGlvbjJHZXRTdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGlmICghdHJhbnNhY3Rpb24xR2V0U3VjY2VzcykKKyAgICAgICAgICAgICAgICBkb1RyYW5z
YWN0aW9uMkdldCgpOworICAgICAgICB9OworICAgIH0oKSk7Cit9CisKK3RyYW5zYWN0aW9uQ29t
cGxldGlvbkNvdW50ID0gMDsKK2Z1bmN0aW9uIG9uVHJhbnNhY3Rpb25Db21wbGV0ZShldnQpCit7
CisgICAgcHJlYW1ibGUoZXZ0KTsKKworICAgICsrdHJhbnNhY3Rpb25Db21wbGV0aW9uQ291bnQ7
CisgICAgaWYgKHRyYW5zYWN0aW9uQ29tcGxldGlvbkNvdW50IDwgMikgeworICAgICAgICBkZWJ1
ZygiZmlyc3QgdHJhbnNhY3Rpb24gY29tcGxldGUsIHN0aWxsIHdhaXRpbmcuLi4iKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnNhY3Rpb24xR2V0U3Vj
Y2VzcyIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnNhY3Rpb24yR2V0U3VjY2VzcyIpOworCisg
ICAgZXZhbEFuZExvZygiZGIxLmNsb3NlKCkiKTsKKyAgICBldmFsQW5kTG9nKCJkYjIuY2xvc2Uo
KSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tcmVhZHdyaXRl
LWV4Y2x1c2l2ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90
cmFuc2FjdGlvbi1yZWFkd3JpdGUtZXhjbHVzaXZlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyNjEwMmNlNjk4
NWYzMzM0YTExNDg5Y2Y1MTgyOTY3OTM2OGJhMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tcmVhZHdyaXRlLWV4
Y2x1c2l2ZS5qcwpAQCAtMCwwICsxLDEwNyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewor
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9u
KCJDaGVjayB0aGF0IHJlYWR3cml0ZSB0cmFuc2FjdGlvbnMgd2l0aCBvdmVybGFwcGluZyBzY29w
ZXMgZG8gbm90IHJ1biBpbiBwYXJhbGxlbC4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBzZXREQk5hbWVGcm9tUGF0aCgpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuQ29ubmVjdGlvbjE7Cit9CisKK2Z1bmN0aW9uIG9wZW5Db25uZWN0
aW9uMSgpCit7CisgICAgcHJlYW1ibGUoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4oZGJuYW1lLCAxKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxv
Y2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gb3Bl
bk9uVXBncmFkZU5lZWRlZDEoZXZ0KSB7CisgICAgICAgIHByZWFtYmxlKGV2dCk7CisgICAgICAg
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgfTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIG9wZW5PblN1Y2Nlc3MoZXZ0KSB7CisgICAg
ICAgIHByZWFtYmxlKGV2dCk7CisgICAgICAgIGV2YWxBbmRMb2coImRiMSA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKyAgICAgICAgb3BlbkNvbm5lY3Rpb24yKCk7CisgICAgfTsKK30KKworZnVu
Y3Rpb24gb3BlbkNvbm5lY3Rpb24yKCkKK3sKKyAgICBwcmVhbWJsZSgpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihkYm5hbWUsIDEpIik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uYmxvY2tl
ZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVk
ZWQgPSB1bmV4cGVjdGVkVXBncmFkZU5lZWRlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gb3Blbk9uU3VjY2VzczIoZXZ0KSB7CisgICAgICAgIHByZWFtYmxlKGV2
dCk7CisgICAgICAgIGV2YWxBbmRMb2coImRiMiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAg
ICAgICAgc3RhcnRXb3JrKCk7CisgICAgfTsKK30KKworZnVuY3Rpb24gc3RhcnRXb3JrKCkKK3sK
KyAgICBwcmVhbWJsZSgpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMSA9IGRiMS50cmFu
c2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykiKTsKKyAgICB0cmFuc2FjdGlvbjEub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
MiA9IGRiMi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykiKTsKKyAgICB0cmFuc2Fj
dGlvbjEub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24xUHV0U3VjY2VzcyA9IGZhbHNlIik7CisgICAgZXZhbEFuZExvZygidHJh
bnNhY3Rpb24xQ29tcGxldGUgPSBmYWxzZSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
MlB1dFN1Y2Nlc3MgPSBmYWxzZSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMkNvbXBs
ZXRlID0gZmFsc2UiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiS2VlcCB0cmFuc2Fj
dGlvbjEgYWxpdmUgZm9yIGEgd2hpbGUgYW5kIGVuc3VyZSB0cmFuc2FjdGlvbjIgZG9lc24ndCBz
dGFydCIpOworCisgICAgZXZhbEFuZExvZygiY291bnQgPSAwIik7CisKKyAgICAoZnVuY3Rpb24g
ZG9UcmFuc2FjdGlvbjFQdXQoKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFu
c2FjdGlvbjEub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KDEsIGNvdW50KyspIik7CisgICAgICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIHB1dDFPblN1Y2Nlc3MoZXZ0KSB7CisgICAgICAgICAg
ICBwcmVhbWJsZShldnQpOworICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24xUHV0
U3VjY2VzcyA9IHRydWUiKTsKKyAgICAgICAgICAgIGlmIChjb3VudCA8IDUpIHsKKyAgICAgICAg
ICAgICAgICBkb1RyYW5zYWN0aW9uMVB1dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9Owor
ICAgIH0oKSk7CisKKyAgICB0cmFuc2FjdGlvbjEub25jb21wbGV0ZSA9IGZ1bmN0aW9uIG9uVHJh
bnNhY3Rpb24xQ29tcGxldGUoZXZ0KSB7CisgICAgICAgIHByZWFtYmxlKGV2dCk7CisgICAgICAg
IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMUNvbXBsZXRlID0gdHJ1ZSIpOworICAgICAgICBzaG91
bGRCZUZhbHNlKCJ0cmFuc2FjdGlvbjJQdXRTdWNjZXNzIik7CisgICAgICAgIHNob3VsZEJlRmFs
c2UoInRyYW5zYWN0aW9uMkNvbXBsZXRlIik7CisgICAgfTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbjIub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KDIsIDApIik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiBwdXQyT25TdWNjZXNzKGV2dCkgeworICAgICAgICBwcmVh
bWJsZShldnQpOworICAgICAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjJQdXRTdWNjZXNzID0g
dHJ1ZSIpOworICAgICAgICBzaG91bGRCZVRydWUoInRyYW5zYWN0aW9uMUNvbXBsZXRlIik7Cisg
ICAgfTsKKworICAgIHRyYW5zYWN0aW9uMi5vbmNvbXBsZXRlID0gZnVuY3Rpb24gb25UcmFuc2Fj
dGlvbjJDb21wbGV0ZShldnQpIHsKKyAgICAgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICAgICAgZXZh
bEFuZExvZygidHJhbnNhY3Rpb24yQ29tcGxldGUgPSB0cnVlIik7CisgICAgICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnNhY3Rpb24xUHV0U3VjY2VzcyIpOworICAgICAgICBzaG91bGRCZVRydWUoInRy
YW5zYWN0aW9uMUNvbXBsZXRlIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidHJhbnNhY3Rpb24y
UHV0U3VjY2VzcyIpOworCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH07Cit9CisKK3Rl
c3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0
YWJhc2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTllODkwYjI3Y2ZlY2FlNTU1MzYzYmFj
ZGY5ZjAyNzQyODM5NGNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLWFjcm9zcy1kYXRhYmFzZXMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNTggQEAKK0NoZWNrIHRoYXQgdHJhbnNhY3Rpb25zIGluIGRpZmZl
cmVudCBkYXRhYmFzZXMgY2FuIHJ1biBpbiBwYXJhbGxlbC4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5k
ZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5P
SW5kZXhlZERCOworCitkYm5hbWUgPSAidHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLWFjcm9zcy1k
YXRhYmFzZXMuaHRtbCIKK2RibmFtZTEgPSBkYm5hbWUgKyAnMScKK2RibmFtZTIgPSBkYm5hbWUg
KyAnMicKKworZGVsZXRlRGF0YWJhc2UxKCk6CitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJu
YW1lMSkKKworZGVsZXRlRGF0YWJhc2UyKCk6CitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJu
YW1lMikKKworb3BlbkRhdGFiYXNlMSgpOgoraW5kZXhlZERCLm9wZW4oZGJuYW1lMSwgMSkKKwor
b3Blbk9uVXBncmFkZU5lZWRlZDEoKToKK2RiMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3N0b3Jl
MSA9IGRiMS5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQorc3RvcmUxLnB1dCgwLCAwKQorCitv
cGVuT25TdWNjZXNzMSgpOgorZGIxID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorCitvcGVuRGF0YWJh
c2UyKCk6CitpbmRleGVkREIub3BlbihkYm5hbWUyLCAxKQorCitvblVwZ3JhZGVOZWVkZWQyKCk6
CitkYjIgPSBldmVudC50YXJnZXQucmVzdWx0CitzdG9yZTIgPSBkYjIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlJykKK3N0b3JlMi5wdXQoMCwgMCkKKworb3Blbk9uU3VjY2VzczIoKToKK2RiMiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQKKworc3RhcnRXb3JrKCk6Cit0cmFuc2FjdGlvbjEgPSBkYjEu
dHJhbnNhY3Rpb24oJ3N0b3JlJykKK3RyYW5zYWN0aW9uMiA9IGRiMi50cmFuc2FjdGlvbignc3Rv
cmUnKQordHJhbnNhY3Rpb24xR2V0U3VjY2VzcyA9IGZhbHNlCit0cmFuc2FjdGlvbjJHZXRTdWNj
ZXNzID0gZmFsc2UKK0tlZXAgYm90aCB0cmFuc2FjdGlvbnMgYWxpdmUgdW50aWwgZWFjaCBoYXMg
cmVwb3J0ZWQgYXQgbGVhc3Qgb25lIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uCisKK29uVHJhbnNhY3Rp
b25Db21wbGV0ZSgpOgorZmlyc3QgdHJhbnNhY3Rpb24gY29tcGxldGUsIHN0aWxsIHdhaXRpbmcu
Li4KKworb25UcmFuc2FjdGlvbkNvbXBsZXRlKCk6CitQQVNTIHRyYW5zYWN0aW9uMUdldFN1Y2Nl
c3MgaXMgdHJ1ZQorUEFTUyB0cmFuc2FjdGlvbjJHZXRTdWNjZXNzIGlzIHRydWUKK2RiMS5jbG9z
ZSgpCitkYjIuY2xvc2UoKQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2VzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24tYWNyb3NzLWRhdGFi
YXNlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjYTc0MWM3ZTNhYzc4NjcxYzA1MTcwNWMwNmQwMDE4ZmNl
ZTE3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1jb29yZGluYXRpb24tYWNyb3NzLWRhdGFiYXNlcy5odG1sCkBAIC0wLDAgKzEs
MTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLWFjcm9zcy1kYXRhYmFz
ZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1yZWFkd3JpdGUtZXhjbHVz
aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLXJlYWR3cml0ZS1leGNsdXNpdmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5ZGYwYjZi
NmRmZDNjMDc4N2Y2ZjkzZTdhY2EwOWU2ZGJkODNkYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1yZWFkd3JpdGUtZXhjbHVzaXZl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDc2IEBACitDaGVjayB0aGF0IHJlYWR3cml0ZSB0cmFu
c2FjdGlvbnMgd2l0aCBvdmVybGFwcGluZyBzY29wZXMgZG8gbm90IHJ1biBpbiBwYXJhbGxlbC4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhl
ZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYu
bXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitkYm5hbWUgPSAidHJhbnNhY3Rpb24t
cmVhZHdyaXRlLWV4Y2x1c2l2ZS5odG1sIgoraW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFt
ZSkKKworb3BlbkNvbm5lY3Rpb24xKCk6CitpbmRleGVkREIub3BlbihkYm5hbWUsIDEpCisKK29w
ZW5PblVwZ3JhZGVOZWVkZWQxKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3N0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKKworb3Blbk9uU3VjY2VzcygpOgorZGIxID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdAorCitvcGVuQ29ubmVjdGlvbjIoKToKK2luZGV4ZWREQi5vcGVu
KGRibmFtZSwgMSkKKworb3Blbk9uU3VjY2VzczIoKToKK2RiMiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQKKworc3RhcnRXb3JrKCk6Cit0cmFuc2FjdGlvbjEgPSBkYjEudHJhbnNhY3Rpb24oJ3N0b3Jl
JywgJ3JlYWR3cml0ZScpCit0cmFuc2FjdGlvbjIgPSBkYjIudHJhbnNhY3Rpb24oJ3N0b3JlJywg
J3JlYWR3cml0ZScpCit0cmFuc2FjdGlvbjFQdXRTdWNjZXNzID0gZmFsc2UKK3RyYW5zYWN0aW9u
MUNvbXBsZXRlID0gZmFsc2UKK3RyYW5zYWN0aW9uMlB1dFN1Y2Nlc3MgPSBmYWxzZQordHJhbnNh
Y3Rpb24yQ29tcGxldGUgPSBmYWxzZQorCitLZWVwIHRyYW5zYWN0aW9uMSBhbGl2ZSBmb3IgYSB3
aGlsZSBhbmQgZW5zdXJlIHRyYW5zYWN0aW9uMiBkb2Vzbid0IHN0YXJ0Citjb3VudCA9IDAKK3Ry
YW5zYWN0aW9uMS5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoMSwgY291bnQrKykKK3RyYW5zYWN0
aW9uMi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoMiwgMCkKKworcHV0MU9uU3VjY2VzcygpOgor
dHJhbnNhY3Rpb24xUHV0U3VjY2VzcyA9IHRydWUKK3RyYW5zYWN0aW9uMS5vYmplY3RTdG9yZSgn
c3RvcmUnKS5wdXQoMSwgY291bnQrKykKKworcHV0MU9uU3VjY2VzcygpOgordHJhbnNhY3Rpb24x
UHV0U3VjY2VzcyA9IHRydWUKK3RyYW5zYWN0aW9uMS5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQo
MSwgY291bnQrKykKKworcHV0MU9uU3VjY2VzcygpOgordHJhbnNhY3Rpb24xUHV0U3VjY2VzcyA9
IHRydWUKK3RyYW5zYWN0aW9uMS5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoMSwgY291bnQrKykK
KworcHV0MU9uU3VjY2VzcygpOgordHJhbnNhY3Rpb24xUHV0U3VjY2VzcyA9IHRydWUKK3RyYW5z
YWN0aW9uMS5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoMSwgY291bnQrKykKKworcHV0MU9uU3Vj
Y2VzcygpOgordHJhbnNhY3Rpb24xUHV0U3VjY2VzcyA9IHRydWUKKworb25UcmFuc2FjdGlvbjFD
b21wbGV0ZSgpOgordHJhbnNhY3Rpb24xQ29tcGxldGUgPSB0cnVlCitQQVNTIHRyYW5zYWN0aW9u
MlB1dFN1Y2Nlc3MgaXMgZmFsc2UKK1BBU1MgdHJhbnNhY3Rpb24yQ29tcGxldGUgaXMgZmFsc2UK
KworcHV0Mk9uU3VjY2VzcygpOgordHJhbnNhY3Rpb24yUHV0U3VjY2VzcyA9IHRydWUKK1BBU1Mg
dHJhbnNhY3Rpb24xQ29tcGxldGUgaXMgdHJ1ZQorCitvblRyYW5zYWN0aW9uMkNvbXBsZXRlKCk6
Cit0cmFuc2FjdGlvbjJDb21wbGV0ZSA9IHRydWUKK1BBU1MgdHJhbnNhY3Rpb24xUHV0U3VjY2Vz
cyBpcyB0cnVlCitQQVNTIHRyYW5zYWN0aW9uMUNvbXBsZXRlIGlzIHRydWUKK1BBU1MgdHJhbnNh
Y3Rpb24yUHV0U3VjY2VzcyBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tcmVhZHdyaXRlLWV4Y2x1c2l2ZS5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZHdyaXRlLWV4Y2x1c2l2ZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA4NjQwYmE5ODEwYzIxZDM1NzE1ZTI5YzNjZjg3ZGU5NGZiYTVjYTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1y
ZWFkd3JpdGUtZXhjbHVzaXZlLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFu
c2FjdGlvbi1yZWFkd3JpdGUtZXhjbHVzaXZlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165642</attachid>
            <date>2012-09-25 11:15:31 -0700</date>
            <delta_ts>2012-09-25 11:51:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97501-20120925111451.patch</filename>
            <type>text/plain</type>
            <size>28759</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTBiODBkNDBiMDJjNjFj
ZGFlYTFhZDNjYjdiN2JiNzhmYTVmMzJkMy4uNjNkMWE1Y2E5NjM5ZjQxNzQ1YTgzNzI5YzI2YWRm
M2Y3OGI0ZDIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA5LTI0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBPbmUg
dHJhbnNhY3Rpb24gY29vcmRpbmF0b3IgcGVyIGRhdGFiYXNlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzUwMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBlciB0aGUgSURCIHNwZWMsIHRyYW5zYWN0aW9u
cyBvbmx5IG5lZWQgdG8gYmUgc2VxdWVuY2VkIHdpdGhpbiBkYXRhYmFzZXMuCisgICAgICAgIFRo
ZSBpbXBsZW1lbnRhdGlvbiB3YXMgdXNpbmcgb25lIGNvb3JkaW5hdG9yIHBlciBmYWN0b3J5IGJh
Y2tlbmQgKGVmZmVjdGl2ZWx5CisgICAgICAgIGEgc2luZ2xldG9uKSwgd2hpY2ggd291bGQgcHJl
dmVudCBwYXJhbGxlbCBleGVjdXRpb24gb2YgdHJhbnNhY3Rpb25zIGluIGRpZmZlcmVudAorICAg
ICAgICBkYXRhYmFzZXMuIE1vdmVkIG93bmVyc2hpcCBvZiB0aGUgdHJhbnNhY3Rpb24gY29vcmRp
bmF0b3IgdG8gdGhlIGRhdGFiYXNlIGJhY2tlbmQuCisKKyAgICAgICAgVGVzdHM6IHN0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2VzLmh0bWwK
KyAgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWR3cml0ZS1l
eGNsdXNpdmUuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBs
OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZElt
cGw6Om9wZW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJGYWN0b3J5QmFja2VuZElt
cGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OklEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IpOgorCiAyMDEyLTA5LTIxICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBbVjhdIEFycmF5QnVmZmVyIGNvZGUgc2hvdWxkIG5vdCBwYXNzIGEgbmVnYXRpdmUg
bGVuZ3RoIHRvIFNldEluZGV4ZWRQcm9wZXJ0aWVzVG9FeHRlcm5hbEFycmF5RGF0YSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDI4ZTcyNjg0ZjRiNTkzZmE2Y2RmZDAxYWJiMTllOWU2
OGRjODEwZTQuLmQyNDZjZWE4ZmVkNTUyYmFhZDIyMzlkZDI1YTY1YjUwMWIzYWIwNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMjQgIEpvc2h1
YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IE9uZSB0
cmFuc2FjdGlvbiBjb29yZGluYXRvciBwZXIgZGF0YWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIG9ic29sZXRlIGFyZ3VtZW50LgorCisg
ICAgICAgICogdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5oOgorCiAyMDEyLTA5LTI0ICBU
b255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJv
bGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCBiOTI5NzlmMWM0M2JkNzI3ZmVh
ZGU5YzgyODQ3NGU0OTM0NWVhNTkxLi43MTM1NjhiZjVhNjNkZmM4MmZmYTk2MDg5ODQ5NTUwMTYy
OWM5YTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMTE5LDkgKzExOSw5IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tz
OwogfTsKIAotUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRh
dGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvciwgSURCRmFjdG9y
eUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpCitQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElE
QkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlm
aWVyKQogewotICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBiYWNrZW5kID0gYWRv
cHRSZWYobmV3IElEQkRhdGFiYXNlQmFja2VuZEltcGwobmFtZSwgZGF0YWJhc2UsIGNvb3JkaW5h
dG9yLCBmYWN0b3J5LCB1bmlxdWVJZGVudGlmaWVyKSk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEltcGw+IGJhY2tlbmQgPSBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bChuYW1lLCBkYXRhYmFzZSwgZmFjdG9yeSwgdW5pcXVlSWRlbnRpZmllcikpOwogICAgIGlmICgh
YmFja2VuZC0+b3BlbkludGVybmFsKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBi
YWNrZW5kLnJlbGVhc2UoKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBuYW1lc3BhY2UgewogY29uc3Qg
Y2hhciogTm9TdHJpbmdWZXJzaW9uID0gIiI7CiB9CiAKLUlEQkRhdGFiYXNlQmFja2VuZEltcGw6
OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3Rv
cmUqIGJhY2tpbmdTdG9yZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciogY29vcmRpbmF0b3Is
IElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVu
dGlmaWVyKQorSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChj
b25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBJREJGYWN0
b3J5QmFja2VuZEltcGwqIGZhY3RvcnksIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcikK
ICAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAsIG1faWQoSW52YWxpZElk
KQogICAgICwgbV9uYW1lKG5hbWUpCkBAIC0xMzksNyArMTM5LDcgQEAgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJh
Y2tpbmdTdG8KICAgICAsIG1faW50VmVyc2lvbihJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZl
cnNpb24pCiAgICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRlbnRpZmllcikKICAgICAsIG1fZmFj
dG9yeShmYWN0b3J5KQotICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKGNvb3JkaW5hdG9y
KQorICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3I6OmNyZWF0ZSgpKQogewogICAgIEFTU0VSVCghbV9uYW1lLmlzTnVsbCgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaAppbmRleCAxMTJiYTNkZTYyYTM2MWI1YTY2YTYxMzY3MDI5MzAxYjdhOWYzNWQ1
Li41YWQ1MWJhNjllNjIyNGFkMmE0NDU5ZDdmZjYwODE0YmI5ZmQ2Zjc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I7
CiAKIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGwgOiBwdWJsaWMgSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUq
IGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiwgSURCRmFjdG9yeUJhY2tlbmRJ
bXBsKiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBJ
REJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBjb25zdCBT
dHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQmFja2Vu
ZEltcGwoKTsKIAogICAgIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUo
KSBjb25zdDsKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdHJhbnNhY3Rpb25G
aW5pc2hlZEFuZEFib3J0RmlyZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
Pik7CiAKIHByaXZhdGU6Ci0gICAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcm
IG5hbWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IqLCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZp
ZXIpOworICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJC
YWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBjb25zdCBTdHJp
bmcmIHVuaXF1ZUlkZW50aWZpZXIpOwogCiAgICAgYm9vbCBvcGVuSW50ZXJuYWwoKTsKICAgICB2
b2lkIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcnNp
b24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4pOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+ID4gT2JqZWN0U3RvcmVN
YXA7CiAgICAgT2JqZWN0U3RvcmVNYXAgbV9vYmplY3RTdG9yZXM7CiAKLSAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yOworICAgIE93
blB0cjxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3I7
CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IG1fcnVubmluZ1ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbjsKIAogICAgIHR5cGVkZWYgSGFzaFNldDxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsKj4gVHJhbnNhY3Rpb25TZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCBjN2Vm
ODYwZTEzZTJkMTgxNzlhZTVlY2MwYzc1OTcwOWI4ODQzZGU5Li42OGU3ZDNhZDA3YzQxZTExZjJl
ZDhjZTljYzNjMjVlN2YwMTNhNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAgLTU1LDcgKzU1
LDYgQEAgc3RhdGljIFN0cmluZyBjb21wdXRlVW5pcXVlSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IG5hbWUsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cmkKIH0KIAogSURCRmFjdG9yeUJhY2tlbmRJbXBs
OjpJREJGYWN0b3J5QmFja2VuZEltcGwoKQotICAgIDogbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9y
KElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNyZWF0ZSgpKQogewogfQogCkBAIC0xMTgsNyAr
MTE3LDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKGNvbnN0
IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWwKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCBt
X3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOwor
ICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCB0aGlz
LCB1bmlxdWVJZGVudGlmaWVyKTsKICAgICBpZiAoZGF0YWJhc2VCYWNrZW5kKSB7CiAgICAgICAg
IG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tl
bmQuZ2V0KCkpOwogICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPmRlbGV0ZURhdGFiYXNlKGNhbGxi
YWNrcyk7CkBAIC0xNjQsNyArMTYzLDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9w
ZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHIKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGRhdGFiYXNlQmFja2VuZCA9IElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNraW5nU3RvcmUuZ2V0KCksIG1f
dHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKSwgdGhpcywgdW5pcXVlSWRlbnRpZmllcik7Cisg
ICAgICAgIGRhdGFiYXNlQmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShu
YW1lLCBiYWNraW5nU3RvcmUuZ2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOwogICAgICAg
ICBpZiAoZGF0YWJhc2VCYWNrZW5kKQogICAgICAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAu
c2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CiAgICAgICAgIGVs
c2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5QmFja2VuZEltcGwuaAppbmRleCAzYWUwNzAzMTBkYWU4NzY0MzU5NmNhOWIyOTkzYzMz
YTQ2NzBiMWIzLi43YTAyMGZiNjBkMmFhOTYzYzY0MjljNDVkOTYwMzdmNmQyMjFiZWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEltcGwuaApAQCAtNDEsNyArNDEsNiBAQCBjbGFzcyBET01TdHJpbmdMaXN0OwogCiBj
bGFzcyBJREJCYWNraW5nU3RvcmU7CiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOwotY2xh
c3MgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjsKIAogY2xhc3MgSURCRmFjdG9yeUJhY2tlbmRJ
bXBsIDogcHVibGljIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKQEAgLTcx
LDggKzcwLDYgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJREJCYWNr
aW5nU3RvcmUqPiBJREJCYWNraW5nU3RvcmVNYXA7CiAgICAgSURCQmFja2luZ1N0b3JlTWFwIG1f
YmFja2luZ1N0b3JlTWFwOwogCi0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+
IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcjsKLQogICAgIC8vIE9ubHkgb25lIGluc3RhbmNlIG9m
IHRoZSBmYWN0b3J5IHNob3VsZCBleGlzdCBhdCBhbnkgZ2l2ZW4gdGltZS4KICAgICBzdGF0aWMg
SURCRmFjdG9yeUJhY2tlbmRJbXBsKiBpZGJGYWN0b3J5QmFja2VuZEltcGw7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yLmNwcAppbmRleCBlZGFmZjJjNTA5NjVkM2IwZDJmY2JlN2JiMGM0OTA3
NTkwOGU4Zjc4Li42ZGIwZDcwYmYyNThjNmNlZGRlOGQ5MmRkOWM5YjYwNTlhNDE0NmY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBJREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjcmVhdGUoKQorUGFzc093blB0cjxJREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yPiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjcmVhdGUoKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcigpKTsKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSk7CiB9CiAKLUlE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSAKK0lE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKaW5kZXggZWY5OWU3MzdhYmYzMjYyNzFlN2Q1Mjc0
MGUwZTllODI1ODY2YjI4MS4uYTc1YjdiZTE0MmI5NjVhMTVkNjA2MDM2ZmNmYWQyOGEwOTJjOWFl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaApAQCAtNDAsOSArNDAsOSBAQCBjbGFzcyBJREJU
cmFuc2FjdGlvbkNhbGxiYWNrczsKIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGw7CiAKIC8v
IFRyYW5zYWN0aW9ucyBhcmUgZXhlY3V0ZWQgaW4gdGhlIG9yZGVyIHRoZSB3ZXJlIGNyZWF0ZWQu
Ci1jbGFzcyBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8SURC
VHJhbnNhY3Rpb25Db29yZGluYXRvcj4geworY2xhc3MgSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvcj4gY3JlYXRlKCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvcj4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25Db29yZGluYXRv
cigpOwogCiAgICAgLy8gQ2FsbGVkIGJ5IHRyYW5zYWN0aW9ucyBhcyB0aGV5IHN0YXJ0IGFuZCBm
aW5pc2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFi
YXNlQmFja2VuZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRh
YmFzZUJhY2tlbmRUZXN0LmNwcAppbmRleCA0NTlkZDRiOTczZjlmZTA5ZWU5YmYyMDk0ZDFjNWQ0
MTY1NzRhYzA4Li5iNmIzNjY3MWQ3NGZmMzRlNmFmYjc2NDFkZThiODE4NzhkY2Q5OTZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNr
ZW5kVGVzdC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJJREJGYWtlQmFja2luZ1N0
b3JlLmgiCiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVk
ZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgiCiAKQEAgLTUzLDkgKzUyLDggQEAgVEVTVChJREJEYXRh
YmFzZUJhY2tlbmRUZXN0LCBCYWNraW5nU3RvcmVSZXRlbnRpb24pCiAgICAgUmVmUHRyPElEQkZh
a2VCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IGFkb3B0UmVmKG5ldyBJREJGYWtlQmFja2lu
Z1N0b3JlKCkpOwogICAgIEVYUEVDVF9UUlVFKGJhY2tpbmdTdG9yZS0+aGFzT25lUmVmKCkpOwog
Ci0gICAgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciogY29vcmRpbmF0b3IgPSAwOwogICAgIElE
QkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSA9IDA7Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEltcGw+IGRiID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKCJkYiIsIGJh
Y2tpbmdTdG9yZS5nZXQoKSwgY29vcmRpbmF0b3IsIGZhY3RvcnksICJ1bmlxdWVpZCIpOworICAg
IFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYiA9IElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OmNyZWF0ZSgiZGIiLCBiYWNraW5nU3RvcmUuZ2V0KCksIGZhY3RvcnksICJ1bmlxdWVpZCIp
OwogICAgIEVYUEVDVF9HVChiYWNraW5nU3RvcmUtPnJlZkNvdW50KCksIDEpOwogCiAgICAgY29u
c3QgYm9vbCBhdXRvSW5jcmVtZW50ID0gZmFsc2U7CkBAIC0xMTgsOSArMTE2LDggQEAgVEVTVChJ
REJEYXRhYmFzZUJhY2tlbmRUZXN0LCBDb25uZWN0aW9uTGlmZWN5Y2xlKQogICAgIFJlZlB0cjxJ
REJGYWtlQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBhZG9wdFJlZihuZXcgSURCRmFrZUJh
Y2tpbmdTdG9yZSgpKTsKICAgICBFWFBFQ1RfVFJVRShiYWNraW5nU3RvcmUtPmhhc09uZVJlZigp
KTsKIAotICAgIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIGNvb3JkaW5hdG9yID0gMDsKICAg
ICBJREJGYWN0b3J5QmFja2VuZEltcGwqIGZhY3RvcnkgPSAwOwotICAgIFJlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbXBsPiBkYiA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZSgiZGIi
LCBiYWNraW5nU3RvcmUuZ2V0KCksIGNvb3JkaW5hdG9yLCBmYWN0b3J5LCAidW5pcXVlaWQiKTsK
KyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGIgPSBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpjcmVhdGUoImRiIiwgYmFja2luZ1N0b3JlLmdldCgpLCBmYWN0b3J5LCAidW5pcXVl
aWQiKTsKICAgICBFWFBFQ1RfR1QoYmFja2luZ1N0b3JlLT5yZWZDb3VudCgpLCAxKTsKIAogICAg
IFJlZlB0cjxNb2NrSURCQ2FsbGJhY2tzPiByZXF1ZXN0MSA9IE1vY2tJREJDYWxsYmFja3M6OmNy
ZWF0ZSgpOwpAQCAtMTc3LDkgKzE3NCw4IEBAIFRFU1QoSURCRGF0YWJhc2VCYWNrZW5kVGVzdCwg
Rm9yY2VkQ2xvc2UpCiAgICAgUmVmUHRyPElEQkZha2VCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9y
ZSA9IGFkb3B0UmVmKG5ldyBJREJGYWtlQmFja2luZ1N0b3JlKCkpOwogICAgIEVYUEVDVF9UUlVF
KGJhY2tpbmdTdG9yZS0+aGFzT25lUmVmKCkpOwogCi0gICAgSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvciogY29vcmRpbmF0b3IgPSAwOwogICAgIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9y
eSA9IDA7Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGJhY2tlbmQgPSBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUoImRiIiwgYmFja2luZ1N0b3JlLmdldCgpLCBjb29y
ZGluYXRvciwgZmFjdG9yeSwgInVuaXF1ZWlkIik7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEltcGw+IGJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUoImRiIiwg
YmFja2luZ1N0b3JlLmdldCgpLCBmYWN0b3J5LCAidW5pcXVlaWQiKTsKICAgICBFWFBFQ1RfR1Qo
YmFja2luZ1N0b3JlLT5yZWZDb3VudCgpLCAxKTsKIAogICAgIFJlZlB0cjxGYWtlSURCRGF0YWJh
c2VDYWxsYmFja3M+IGNvbm5lY3Rpb24gPSBGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDMxMTYwZTRlZWQ5NjFjODYzOTU3MjgzZmNhNDkwZWJmOTRmN2I0MTQuLjM2
MTRjMWVjNDU0ZmE3YTA4NGU5NGJhOWJlNzlhMTQyOTVlZjNkYzQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MSBAQAorMjAxMi0wOS0yNCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEluZGV4ZWREQjogT25lIHRyYW5zYWN0aW9uIGNvb3JkaW5hdG9yIHBlciBkYXRhYmFz
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc1MDEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IHRo
YXQgdHJhbnNhY3Rpb25zIGNhbiBiZSBwYXJhbGxlbGl6ZWQgYWNyb3NzIGRhdGFiYXNlcywgYW5k
IGVuc3VyZSB0aGF0CisgICAgICAgIHJlYWQvd3JpdGUgdHJhbnNhY3Rpb25zIHdpdGggb3Zlcmxh
cHBpbmcgc2NvcGVzIGFyZSBub3QgcGFyYWxsZWxpemVkIHdpdGhpbiBhCisgICAgICAgIGRhdGFi
YXNlLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tcmVhZHdyaXRlLWV4Y2x1c2l2ZS5q
czogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRp
bmF0aW9uLWFjcm9zcy1kYXRhYmFzZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24tYWNyb3NzLWRhdGFiYXNl
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1y
ZWFkd3JpdGUtZXhjbHVzaXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZHdyaXRlLWV4Y2x1c2l2ZS5odG1sOiBBZGRlZC4K
KwogMjAxMi0wOS0yNCAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQuIE1hcmsgaHR0cC90ZXN0cy9zZWN1cml0eS9pbmFjdGl2ZS1kb2N1bWVu
dC13aXRoLWVtcHR5LXNlY3VyaXR5LW9yaWdpbi5odG1sIHdoaWxlIEdlb2ZmIEdhcmVuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tY29vcmRpbmF0aW9uLWFjcm9zcy1kYXRhYmFzZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLWFjcm9zcy1kYXRh
YmFzZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhmYTY0YjBiYTE0ODAzZDNiOTdlOWM1N2VhM2MyYTBlMWZh
ZDIwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy90cmFuc2FjdGlvbi1jb29yZGluYXRpb24tYWNyb3NzLWRhdGFiYXNlcy5qcwpAQCAt
MCwwICsxLDEzMyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJDaGVjayB0aGF0IHRy
YW5zYWN0aW9ucyBpbiBkaWZmZXJlbnQgZGF0YWJhc2VzIGNhbiBydW4gaW4gcGFyYWxsZWwuIik7
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAg
c2V0REJOYW1lRnJvbVBhdGgoKTsKKyAgICBldmFsQW5kTG9nKCJkYm5hbWUxID0gZGJuYW1lICsg
JzEnIik7CisgICAgZXZhbEFuZExvZygiZGJuYW1lMiA9IGRibmFtZSArICcyJyIpOworCisgICAg
ZGVsZXRlRGF0YWJhc2UxKCk7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZURhdGFiYXNlMSgpCit7Cisg
ICAgcHJlYW1ibGUoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0
ZURhdGFiYXNlKGRibmFtZTEpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEJs
b2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2Vk
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVEYXRhYmFzZTI7Cit9CisK
K2Z1bmN0aW9uIGRlbGV0ZURhdGFiYXNlMigpCit7CisgICAgcHJlYW1ibGUoKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZTIpIik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1
ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuRGF0YWJhc2UxOworfQorCitmdW5jdGlvbiBvcGVuRGF0YWJhc2UxKCkK
K3sKKyAgICBwcmVhbWJsZSgpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihkYm5hbWUxLCAxKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRCbG9j
a2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENh
bGxiYWNrOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gb3Blbk9uVXBn
cmFkZU5lZWRlZDEoZXZ0KSB7CisgICAgICAgIHByZWFtYmxlKGV2dCk7CisgICAgICAgIGV2YWxB
bmRMb2coImRiMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygi
c3RvcmUxID0gZGIxLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgICAgIGV2YWxB
bmRMb2coInN0b3JlMS5wdXQoMCwgMCkiKTsKKyAgICB9OworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24gb3Blbk9uU3VjY2VzczEoZXZ0KSB7CisgICAgICAgIHByZWFtYmxlKGV2dCk7
CisgICAgICAgIGV2YWxBbmRMb2coImRiMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAg
ICAgb3BlbkRhdGFiYXNlMigpOworICAgIH07Cit9CisKK2Z1bmN0aW9uIG9wZW5EYXRhYmFzZTIo
KQoreworICAgIHByZWFtYmxlKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKGRibmFtZTIsIDEpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEJs
b2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2Vk
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiBvblVwZ3Jh
ZGVOZWVkZWQyKGV2dCkgeworICAgICAgICBwcmVhbWJsZShldnQpOworICAgICAgICBldmFsQW5k
TG9nKCJkYjIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIGV2YWxBbmRMb2coInN0
b3JlMiA9IGRiMi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIH07CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiBvcGVuT25TdWNjZXNzMihldnQpIHsKKyAgICAgICAg
cHJlYW1ibGUoZXZ0KTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIyID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgICAgICBzdGFydFdvcmsoKTsKKyAgICB9OworfQorCitmdW5jdGlvbiBzdGFy
dFdvcmsoKQoreworICAgIHByZWFtYmxlKCk7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24x
ID0gZGIxLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkd3JpdGUnKSIpOworICAgIHRyYW5zYWN0
aW9uMS5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24x
Lm9uY29tcGxldGUgPSBvblRyYW5zYWN0aW9uQ29tcGxldGU7CisgICAgZXZhbEFuZExvZygidHJh
bnNhY3Rpb24yID0gZGIyLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkd3JpdGUnKSIpOworICAg
IHRyYW5zYWN0aW9uMS5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJh
bnNhY3Rpb24yLm9uY29tcGxldGUgPSBvblRyYW5zYWN0aW9uQ29tcGxldGU7CisKKyAgICBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbjFQdXRTdWNjZXNzID0gZmFsc2UiKTsKKyAgICBldmFsQW5kTG9n
KCJ0cmFuc2FjdGlvbjJQdXRTdWNjZXNzID0gZmFsc2UiKTsKKworICAgIGRlYnVnKCJLZWVwIGJv
dGggdHJhbnNhY3Rpb25zIGFsaXZlIHVudGlsIGVhY2ggaGFzIHJlcG9ydGVkIGF0IGxlYXN0IG9u
ZSBzdWNjZXNzZnVsIG9wZXJhdGlvbiIpOworCisgICAgZnVuY3Rpb24gZG9UcmFuc2FjdGlvbjFQ
dXQoKSB7CisgICAgICAgIC8vIE5PVEU6IE5vIGxvZ2dpbmcgc2luY2UgZXhlY3V0aW9uIG9yZGVy
IGlzIG5vdCBkZXRlcm1pbmlzdGljLgorICAgICAgICByZXF1ZXN0ID0gdHJhbnNhY3Rpb24xLm9i
amVjdFN0b3JlKCdzdG9yZScpLnB1dCgwLCAwKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICB0cmFuc2FjdGlvbjFQdXRTdWNjZXNzID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGlmICghdHJhbnNhY3Rpb24yUHV0U3VjY2VzcykKKyAgICAgICAgICAgICAgICBk
b1RyYW5zYWN0aW9uMVB1dCgpOworICAgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIGRv
VHJhbnNhY3Rpb24yUHV0KCkgeworICAgICAgICAvLyBOT1RFOiBObyBsb2dnaW5nIHNpbmNlIGV4
ZWN1dGlvbiBvcmRlciBpcyBub3QgZGV0ZXJtaW5pc3RpYy4KKyAgICAgICAgcmVxdWVzdCA9IHRy
YW5zYWN0aW9uMi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoMCwgMCk7CisgICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdHJhbnNhY3Rpb24yUHV0U3VjY2Vz
cyA9IHRydWU7CisgICAgICAgICAgICBpZiAoIXRyYW5zYWN0aW9uMVB1dFN1Y2Nlc3MpCisgICAg
ICAgICAgICAgICAgZG9UcmFuc2FjdGlvbjJQdXQoKTsKKyAgICAgICAgfTsKKyAgICB9CisKKyAg
ICBkb1RyYW5zYWN0aW9uMVB1dCgpOworICAgIGRvVHJhbnNhY3Rpb24yUHV0KCk7Cit9CisKK3Ry
YW5zYWN0aW9uQ29tcGxldGlvbkNvdW50ID0gMDsKK2Z1bmN0aW9uIG9uVHJhbnNhY3Rpb25Db21w
bGV0ZShldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKworICAgICsrdHJhbnNhY3Rpb25Db21w
bGV0aW9uQ291bnQ7CisgICAgaWYgKHRyYW5zYWN0aW9uQ29tcGxldGlvbkNvdW50IDwgMikgewor
ICAgICAgICBkZWJ1ZygiZmlyc3QgdHJhbnNhY3Rpb24gY29tcGxldGUsIHN0aWxsIHdhaXRpbmcu
Li4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnNh
Y3Rpb24xUHV0U3VjY2VzcyIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnNhY3Rpb24yUHV0U3Vj
Y2VzcyIpOworCisgICAgZXZhbEFuZExvZygiZGIxLmNsb3NlKCkiKTsKKyAgICBldmFsQW5kTG9n
KCJkYjIuY2xvc2UoKSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tcmVhZHdyaXRlLWV4Y2x1c2l2ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy90cmFuc2FjdGlvbi1yZWFkd3JpdGUtZXhjbHVzaXZlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjUyNjEwMmNlNjk4NWYzMzM0YTExNDg5Y2Y1MTgyOTY3OTM2OGJhMTUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
cmVhZHdyaXRlLWV4Y2x1c2l2ZS5qcwpAQCAtMCwwICsxLDEwNyBAQAoraWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJDaGVjayB0aGF0IHJlYWR3cml0ZSB0cmFuc2FjdGlvbnMgd2l0aCBvdmVy
bGFwcGluZyBzY29wZXMgZG8gbm90IHJ1biBpbiBwYXJhbGxlbC4iKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBzZXREQk5hbWVGcm9tUGF0
aCgpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFz
ZShkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEJsb2NrZWRDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ29ubmVjdGlvbjE7Cit9CisKK2Z1bmN0aW9u
IG9wZW5Db25uZWN0aW9uMSgpCit7CisgICAgcHJlYW1ibGUoKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAxKSIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1
bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0g
ZnVuY3Rpb24gb3Blbk9uVXBncmFkZU5lZWRlZDEoZXZ0KSB7CisgICAgICAgIHByZWFtYmxlKGV2
dCk7CisgICAgICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAg
ICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7
CisgICAgfTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIG9wZW5PblN1Y2Nlc3Mo
ZXZ0KSB7CisgICAgICAgIHByZWFtYmxlKGV2dCk7CisgICAgICAgIGV2YWxBbmRMb2coImRiMSA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgb3BlbkNvbm5lY3Rpb24yKCk7CisgICAg
fTsKK30KKworZnVuY3Rpb24gb3BlbkNvbm5lY3Rpb24yKCkKK3sKKyAgICBwcmVhbWJsZSgpOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihkYm5hbWUsIDEpIik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1
ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSB1bmV4cGVjdGVkVXBncmFkZU5lZWRlZENhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gb3Blbk9uU3VjY2VzczIoZXZ0KSB7CisgICAgICAg
IHByZWFtYmxlKGV2dCk7CisgICAgICAgIGV2YWxBbmRMb2coImRiMiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICAgICAgc3RhcnRXb3JrKCk7CisgICAgfTsKK30KKworZnVuY3Rpb24gc3Rh
cnRXb3JrKCkKK3sKKyAgICBwcmVhbWJsZSgpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
MSA9IGRiMS50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykiKTsKKyAgICB0cmFuc2Fj
dGlvbjEub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uMiA9IGRiMi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykiKTsK
KyAgICB0cmFuc2FjdGlvbjEub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisg
ICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24xUHV0U3VjY2VzcyA9IGZhbHNlIik7CisgICAgZXZh
bEFuZExvZygidHJhbnNhY3Rpb24xQ29tcGxldGUgPSBmYWxzZSIpOworICAgIGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uMlB1dFN1Y2Nlc3MgPSBmYWxzZSIpOworICAgIGV2YWxBbmRMb2coInRyYW5z
YWN0aW9uMkNvbXBsZXRlID0gZmFsc2UiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
S2VlcCB0cmFuc2FjdGlvbjEgYWxpdmUgZm9yIGEgd2hpbGUgYW5kIGVuc3VyZSB0cmFuc2FjdGlv
bjIgZG9lc24ndCBzdGFydCIpOworCisgICAgZXZhbEFuZExvZygiY291bnQgPSAwIik7CisKKyAg
ICAoZnVuY3Rpb24gZG9UcmFuc2FjdGlvbjFQdXQoKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbjEub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KDEsIGNvdW50Kysp
Iik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIHB1dDFPblN1Y2Nlc3MoZXZ0KSB7
CisgICAgICAgICAgICBwcmVhbWJsZShldnQpOworICAgICAgICAgICAgZXZhbEFuZExvZygidHJh
bnNhY3Rpb24xUHV0U3VjY2VzcyA9IHRydWUiKTsKKyAgICAgICAgICAgIGlmIChjb3VudCA8IDUp
IHsKKyAgICAgICAgICAgICAgICBkb1RyYW5zYWN0aW9uMVB1dCgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9OworICAgIH0oKSk7CisKKyAgICB0cmFuc2FjdGlvbjEub25jb21wbGV0ZSA9IGZ1
bmN0aW9uIG9uVHJhbnNhY3Rpb24xQ29tcGxldGUoZXZ0KSB7CisgICAgICAgIHByZWFtYmxlKGV2
dCk7CisgICAgICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMUNvbXBsZXRlID0gdHJ1ZSIpOwor
ICAgICAgICBzaG91bGRCZUZhbHNlKCJ0cmFuc2FjdGlvbjJQdXRTdWNjZXNzIik7CisgICAgICAg
IHNob3VsZEJlRmFsc2UoInRyYW5zYWN0aW9uMkNvbXBsZXRlIik7CisgICAgfTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjIub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0
KDIsIDApIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiBwdXQyT25TdWNjZXNzKGV2dCkgewor
ICAgICAgICBwcmVhbWJsZShldnQpOworICAgICAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjJQ
dXRTdWNjZXNzID0gdHJ1ZSIpOworICAgICAgICBzaG91bGRCZVRydWUoInRyYW5zYWN0aW9uMUNv
bXBsZXRlIik7CisgICAgfTsKKworICAgIHRyYW5zYWN0aW9uMi5vbmNvbXBsZXRlID0gZnVuY3Rp
b24gb25UcmFuc2FjdGlvbjJDb21wbGV0ZShldnQpIHsKKyAgICAgICAgcHJlYW1ibGUoZXZ0KTsK
KyAgICAgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24yQ29tcGxldGUgPSB0cnVlIik7CisgICAg
ICAgIHNob3VsZEJlVHJ1ZSgidHJhbnNhY3Rpb24xUHV0U3VjY2VzcyIpOworICAgICAgICBzaG91
bGRCZVRydWUoInRyYW5zYWN0aW9uMUNvbXBsZXRlIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnNhY3Rpb24yUHV0U3VjY2VzcyIpOworCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
IH07Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2VzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlv
bi1hY3Jvc3MtZGF0YWJhc2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTA0OTEyZDVlNTRi
ZjQ5NTZmZjljZGM0MjdlYzUxMTU4NTIyYzFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLWFjcm9zcy1kYXRh
YmFzZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTcgQEAKK0NoZWNrIHRoYXQgdHJhbnNhY3Rp
b25zIGluIGRpZmZlcmVudCBkYXRhYmFzZXMgY2FuIHJ1biBpbiBwYXJhbGxlbC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNl
bGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVk
REIgfHwgc2VsZi5PSW5kZXhlZERCOworCitkYm5hbWUgPSAidHJhbnNhY3Rpb24tY29vcmRpbmF0
aW9uLWFjcm9zcy1kYXRhYmFzZXMuaHRtbCIKK2RibmFtZTEgPSBkYm5hbWUgKyAnMScKK2RibmFt
ZTIgPSBkYm5hbWUgKyAnMicKKworZGVsZXRlRGF0YWJhc2UxKCk6CitpbmRleGVkREIuZGVsZXRl
RGF0YWJhc2UoZGJuYW1lMSkKKworZGVsZXRlRGF0YWJhc2UyKCk6CitpbmRleGVkREIuZGVsZXRl
RGF0YWJhc2UoZGJuYW1lMikKKworb3BlbkRhdGFiYXNlMSgpOgoraW5kZXhlZERCLm9wZW4oZGJu
YW1lMSwgMSkKKworb3Blbk9uVXBncmFkZU5lZWRlZDEoKToKK2RiMSA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQKK3N0b3JlMSA9IGRiMS5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQorc3RvcmUxLnB1
dCgwLCAwKQorCitvcGVuT25TdWNjZXNzMSgpOgorZGIxID0gZXZlbnQudGFyZ2V0LnJlc3VsdAor
CitvcGVuRGF0YWJhc2UyKCk6CitpbmRleGVkREIub3BlbihkYm5hbWUyLCAxKQorCitvblVwZ3Jh
ZGVOZWVkZWQyKCk6CitkYjIgPSBldmVudC50YXJnZXQucmVzdWx0CitzdG9yZTIgPSBkYjIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKKworb3Blbk9uU3VjY2VzczIoKToKK2RiMiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQKKworc3RhcnRXb3JrKCk6Cit0cmFuc2FjdGlvbjEgPSBkYjEudHJhbnNh
Y3Rpb24oJ3N0b3JlJywgJ3JlYWR3cml0ZScpCit0cmFuc2FjdGlvbjIgPSBkYjIudHJhbnNhY3Rp
b24oJ3N0b3JlJywgJ3JlYWR3cml0ZScpCit0cmFuc2FjdGlvbjFQdXRTdWNjZXNzID0gZmFsc2UK
K3RyYW5zYWN0aW9uMlB1dFN1Y2Nlc3MgPSBmYWxzZQorS2VlcCBib3RoIHRyYW5zYWN0aW9ucyBh
bGl2ZSB1bnRpbCBlYWNoIGhhcyByZXBvcnRlZCBhdCBsZWFzdCBvbmUgc3VjY2Vzc2Z1bCBvcGVy
YXRpb24KKworb25UcmFuc2FjdGlvbkNvbXBsZXRlKCk6CitmaXJzdCB0cmFuc2FjdGlvbiBjb21w
bGV0ZSwgc3RpbGwgd2FpdGluZy4uLgorCitvblRyYW5zYWN0aW9uQ29tcGxldGUoKToKK1BBU1Mg
dHJhbnNhY3Rpb24xUHV0U3VjY2VzcyBpcyB0cnVlCitQQVNTIHRyYW5zYWN0aW9uMlB1dFN1Y2Nl
c3MgaXMgdHJ1ZQorZGIxLmNsb3NlKCkKK2RiMi5jbG9zZSgpCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLWFjcm9zcy1kYXRhYmFz
ZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3Jk
aW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNhNzQxYzdlM2FjNzg2
NzFjMDUxNzA1YzA2ZDAwMThmY2VlMTcxOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJh
c2VzLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1jb29yZGlu
YXRpb24tYWNyb3NzLWRhdGFiYXNlcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLXJlYWR3cml0ZS1leGNsdXNpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZHdyaXRlLWV4Y2x1c2l2ZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDlkZjBiNmI2ZGZkM2MwNzg3ZjZmOTNlN2FjYTA5ZTZkYmQ4M2RjOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LXJlYWR3cml0ZS1leGNsdXNpdmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzYgQEAKK0NoZWNr
IHRoYXQgcmVhZHdyaXRlIHRyYW5zYWN0aW9ucyB3aXRoIG92ZXJsYXBwaW5nIHNjb3BlcyBkbyBu
b3QgcnVuIGluIHBhcmFsbGVsLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5k
ZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5t
b3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2Ri
bmFtZSA9ICJ0cmFuc2FjdGlvbi1yZWFkd3JpdGUtZXhjbHVzaXZlLmh0bWwiCitpbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQorCitvcGVuQ29ubmVjdGlvbjEoKToKK2luZGV4ZWREQi5v
cGVuKGRibmFtZSwgMSkKKworb3Blbk9uVXBncmFkZU5lZWRlZDEoKToKK2RiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdAorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQorCitvcGVu
T25TdWNjZXNzKCk6CitkYjEgPSBldmVudC50YXJnZXQucmVzdWx0CisKK29wZW5Db25uZWN0aW9u
MigpOgoraW5kZXhlZERCLm9wZW4oZGJuYW1lLCAxKQorCitvcGVuT25TdWNjZXNzMigpOgorZGIy
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorCitzdGFydFdvcmsoKToKK3RyYW5zYWN0aW9uMSA9IGRi
MS50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykKK3RyYW5zYWN0aW9uMiA9IGRiMi50
cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykKK3RyYW5zYWN0aW9uMVB1dFN1Y2Nlc3Mg
PSBmYWxzZQordHJhbnNhY3Rpb24xQ29tcGxldGUgPSBmYWxzZQordHJhbnNhY3Rpb24yUHV0U3Vj
Y2VzcyA9IGZhbHNlCit0cmFuc2FjdGlvbjJDb21wbGV0ZSA9IGZhbHNlCisKK0tlZXAgdHJhbnNh
Y3Rpb24xIGFsaXZlIGZvciBhIHdoaWxlIGFuZCBlbnN1cmUgdHJhbnNhY3Rpb24yIGRvZXNuJ3Qg
c3RhcnQKK2NvdW50ID0gMAordHJhbnNhY3Rpb24xLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCgx
LCBjb3VudCsrKQordHJhbnNhY3Rpb24yLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCgyLCAwKQor
CitwdXQxT25TdWNjZXNzKCk6Cit0cmFuc2FjdGlvbjFQdXRTdWNjZXNzID0gdHJ1ZQordHJhbnNh
Y3Rpb24xLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCgxLCBjb3VudCsrKQorCitwdXQxT25TdWNj
ZXNzKCk6Cit0cmFuc2FjdGlvbjFQdXRTdWNjZXNzID0gdHJ1ZQordHJhbnNhY3Rpb24xLm9iamVj
dFN0b3JlKCdzdG9yZScpLnB1dCgxLCBjb3VudCsrKQorCitwdXQxT25TdWNjZXNzKCk6Cit0cmFu
c2FjdGlvbjFQdXRTdWNjZXNzID0gdHJ1ZQordHJhbnNhY3Rpb24xLm9iamVjdFN0b3JlKCdzdG9y
ZScpLnB1dCgxLCBjb3VudCsrKQorCitwdXQxT25TdWNjZXNzKCk6Cit0cmFuc2FjdGlvbjFQdXRT
dWNjZXNzID0gdHJ1ZQordHJhbnNhY3Rpb24xLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCgxLCBj
b3VudCsrKQorCitwdXQxT25TdWNjZXNzKCk6Cit0cmFuc2FjdGlvbjFQdXRTdWNjZXNzID0gdHJ1
ZQorCitvblRyYW5zYWN0aW9uMUNvbXBsZXRlKCk6Cit0cmFuc2FjdGlvbjFDb21wbGV0ZSA9IHRy
dWUKK1BBU1MgdHJhbnNhY3Rpb24yUHV0U3VjY2VzcyBpcyBmYWxzZQorUEFTUyB0cmFuc2FjdGlv
bjJDb21wbGV0ZSBpcyBmYWxzZQorCitwdXQyT25TdWNjZXNzKCk6Cit0cmFuc2FjdGlvbjJQdXRT
dWNjZXNzID0gdHJ1ZQorUEFTUyB0cmFuc2FjdGlvbjFDb21wbGV0ZSBpcyB0cnVlCisKK29uVHJh
bnNhY3Rpb24yQ29tcGxldGUoKToKK3RyYW5zYWN0aW9uMkNvbXBsZXRlID0gdHJ1ZQorUEFTUyB0
cmFuc2FjdGlvbjFQdXRTdWNjZXNzIGlzIHRydWUKK1BBU1MgdHJhbnNhY3Rpb24xQ29tcGxldGUg
aXMgdHJ1ZQorUEFTUyB0cmFuc2FjdGlvbjJQdXRTdWNjZXNzIGlzIHRydWUKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1yZWFkd3JpdGUtZXhjbHVzaXZl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1yZWFkd3Jp
dGUtZXhjbHVzaXZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDg2NDBiYTk4MTBjMjFkMzU3MTVlMjljM2Nm
ODdkZTk0ZmJhNWNhMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWR3cml0ZS1leGNsdXNpdmUuaHRtbApAQCAtMCwwICsxLDEx
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3RyYW5zYWN0aW9uLXJlYWR3cml0ZS1leGNsdXNpdmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>