<?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>152562</bug_id>
          
          <creation_ts>2015-12-26 10:38:09 -0800</creation_ts>
          <short_desc>Simplify the test harness</short_desc>
          <delta_ts>2016-01-03 15:06:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1151359</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-26 10:38:09 -0800</bug_when>
    <thetext>A few things:
- Clean up some of the calls and return values, which are never used
- Clarify the relationship between the benchmark, the stage, and the animator
- Reduce the number of prototype jumps</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151360</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-12-26 10:38:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/24011212&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151361</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-12-26 10:39:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/24011215&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151464</commentid>
    <comment_count>3</comment_count>
      <attachid>267953</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-28 10:01:57 -0800</bug_when>
    <thetext>Created attachment 267953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151466</commentid>
    <comment_count>4</comment_count>
      <attachid>267954</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-28 10:05:23 -0800</bug_when>
    <thetext>Created attachment 267954
1. Minor cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151467</commentid>
    <comment_count>5</comment_count>
      <attachid>267955</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-28 10:05:44 -0800</bug_when>
    <thetext>Created attachment 267955
2. Refactor the subclass pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151468</commentid>
    <comment_count>6</comment_count>
      <attachid>267956</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-28 10:07:08 -0800</bug_when>
    <thetext>Created attachment 267956
3. Make the class relationships more easily understandable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151469</commentid>
    <comment_count>7</comment_count>
      <attachid>267957</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-28 10:08:03 -0800</bug_when>
    <thetext>Created attachment 267957
4. Get rid of stage.js, StageAnimator, and StageBenchmark</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151470</commentid>
    <comment_count>8</comment_count>
      <attachid>267958</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-28 10:08:34 -0800</bug_when>
    <thetext>Created attachment 267958
5. Refactor the simple suite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151471</commentid>
    <comment_count>9</comment_count>
      <attachid>267959</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-28 10:08:54 -0800</bug_when>
    <thetext>Created attachment 267959
6. Refactor miscellaneous suite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151472</commentid>
    <comment_count>10</comment_count>
      <attachid>267960</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-28 10:09:59 -0800</bug_when>
    <thetext>Created attachment 267960
7. Move example/ files into misc/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151473</commentid>
    <comment_count>11</comment_count>
      <attachid>267961</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-28 10:10:39 -0800</bug_when>
    <thetext>Created attachment 267961
8. Refactor the bouncing canvas tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151474</commentid>
    <comment_count>12</comment_count>
      <attachid>267962</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-28 10:10:56 -0800</bug_when>
    <thetext>Created attachment 267962
9. Refactor the HTML suite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151475</commentid>
    <comment_count>13</comment_count>
      <attachid>267963</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-28 10:11:34 -0800</bug_when>
    <thetext>Created attachment 267963
10. Refactor the SVG suite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151476</commentid>
    <comment_count>14</comment_count>
      <attachid>267964</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-28 10:11:50 -0800</bug_when>
    <thetext>Created attachment 267964
11. Refactor the template.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151477</commentid>
    <comment_count>15</comment_count>
      <attachid>267965</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-28 10:12:14 -0800</bug_when>
    <thetext>Created attachment 267965
12. Don&apos;t require new tests to pass a new instance of Animator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151478</commentid>
    <comment_count>16</comment_count>
      <attachid>267966</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-28 10:12:49 -0800</bug_when>
    <thetext>Created attachment 267966
13. Will be checked in separately: update the simple canvas tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151833</commentid>
    <comment_count>17</comment_count>
      <attachid>267953</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-31 20:36:05 -0800</bug_when>
    <thetext>Comment on attachment 267953
Patch

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

&gt; PerformanceTests/Animometer/tests/misc/resources/canvas-electrons.js:29
&gt; +            this._context.rotate(this._angle * Math.PI / 180);

Probably worth having a deg2rad() helper somewhere.

&gt; PerformanceTests/ChangeLog:284
&gt; -        
&gt; +

I don&apos;t think you should touch all the old changelog entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151848</commentid>
    <comment_count>18</comment_count>
      <attachid>267953</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-01-01 00:52:22 -0800</bug_when>
    <thetext>Comment on attachment 267953
Patch

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

&gt;&gt; PerformanceTests/ChangeLog:284
&gt;&gt; +
&gt; 
&gt; I don&apos;t think you should touch all the old changelog entries.

Oof. My editor conveniently fixed all of the stray whitespace. I&apos;ll have to fix the diff.

Also, shame on y&apos;all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152160</commentid>
    <comment_count>19</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-01-03 15:03:36 -0800</bug_when>
    <thetext>Committed r194520: &lt;http://trac.webkit.org/changeset/194520&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152161</commentid>
    <comment_count>20</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-01-03 15:06:08 -0800</bug_when>
    <thetext>Committed r194521: &lt;http://trac.webkit.org/changeset/194521&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267953</attachid>
            <date>2015-12-28 10:01:57 -0800</date>
            <delta_ts>2015-12-31 20:36:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152562-20151228110119.patch</filename>
            <type>text/plain</type>
            <size>279964</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDIxCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5q
cwppbmRleCA0OGZkMDY3ZmY3YjM5NDg4ODhjODRiOTIzMmI5NTUzYjg0MzU1YjE4Li40OGQ1MjNh
OWYzOWUwYjhjZGJkOWJkMTgyOTE1ZjdhNjdlNzE3MTFmIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2Fu
aW1vbWV0ZXIuanMKQEAgLTIsMTUgKzIsMjEgQEAgVXRpbGl0aWVzLmV4dGVuZE9iamVjdCh3aW5k
b3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LCB7CiAgICAgdGVzdHNDb3VudDogbnVsbCwKICAgICBw
cm9ncmVzc0JhcjogbnVsbCwKIAotICAgIGRpZFJ1blRlc3Q6IGZ1bmN0aW9uICgpCisgICAgaW5p
dGlhbGl6ZTogZnVuY3Rpb24oc3VpdGVzLCBvcHRpb25zKQogICAgIHsKLSAgICAgICAgdGhpcy5w
cm9ncmVzc0Jhci5pbmNSYW5nZSgpOworICAgICAgICB0aGlzLnRlc3RzQ291bnQgPSB0aGlzLml0
ZXJhdGlvbkNvdW50ICogc3VpdGVzLnJlZHVjZShmdW5jdGlvbiAoY291bnQsIHN1aXRlKSB7IHJl
dHVybiBjb3VudCArIHN1aXRlLnRlc3RzLmxlbmd0aDsgfSwgMCk7CisgICAgICAgIHRoaXMub3B0
aW9ucyA9IG9wdGlvbnM7CiAgICAgfSwKLSAgICAKKwogICAgIHdpbGxTdGFydEZpcnN0SXRlcmF0
aW9uOiBmdW5jdGlvbiAoKQogICAgIHsKICAgICAgICAgdGhpcy5yZXN1bHRzID0gbmV3IFJlc3Vs
dHNEYXNoYm9hcmQoKTsKICAgICAgICAgdGhpcy5wcm9ncmVzc0JhciA9IG5ldyBQcm9ncmVzc0Jh
cihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJvZ3Jlc3MtY29tcGxldGVkIiksIHRoaXMudGVz
dHNDb3VudCk7CisgICAgfSwKKworICAgIGRpZFJ1blRlc3Q6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIuaW5jcmVtZW50UmFuZ2UoKTsKICAgICB9CiB9KTsKIApA
QCAtMzAsNyArMzYsNyBAQCB3aW5kb3cub3B0aW9uc01hbmFnZXIgPQogICAgICAgICAgICAgcmV0
dXJuIGZvcm1FbGVtZW50LmNoZWNrZWQ7CiAgICAgICAgIHJldHVybiBmb3JtRWxlbWVudC52YWx1
ZTsKICAgICB9LAotICAgIAorCiAgICAgdXBkYXRlVUlGcm9tTG9jYWxTdG9yYWdlOiBmdW5jdGlv
bigpCiAgICAgewogICAgICAgICB2YXIgZm9ybUVsZW1lbnRzID0gZG9jdW1lbnQuZm9ybXNbImJl
bmNobWFyay1vcHRpb25zIl0uZWxlbWVudHM7CkBAIC01Niw3ICs2Miw3IEBAIHdpbmRvdy5vcHRp
b25zTWFuYWdlciA9CiAgICAgdXBkYXRlTG9jYWxTdG9yYWdlRnJvbVVJOiBmdW5jdGlvbigpCiAg
ICAgewogICAgICAgICB2YXIgZm9ybUVsZW1lbnRzID0gZG9jdW1lbnQuZm9ybXNbImJlbmNobWFy
ay1vcHRpb25zIl0uZWxlbWVudHM7Ci0gICAgICAgIHZhciBvcHRpb25zID0ge307ICAgICAgICAK
KyAgICAgICAgdmFyIG9wdGlvbnMgPSB7fTsKIAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGZvcm1FbGVtZW50cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIGZvcm1FbGVtZW50
ID0gZm9ybUVsZW1lbnRzW2ldOwpAQCAtNjksMTAgKzc1LDEwIEBAIHdpbmRvdy5vcHRpb25zTWFu
YWdlciA9CiAgICAgICAgICAgICAgICAgb3B0aW9uc1tuYW1lXSA9IGZvcm1FbGVtZW50LmNoZWNr
ZWQ7CiAgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09ICJyYWRpbyIpCiAgICAgICAgICAgICAg
ICAgb3B0aW9uc1tuYW1lXSA9IGZvcm1FbGVtZW50c1tuYW1lXS52YWx1ZTsKLSAgICAKKwogICAg
ICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgb3B0aW9uc1tuYW1lXSk7CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIG9wdGlvbnM7CiAgICAgfQogfQpAQCAt
ODMsMTIgKzg5LDEyIEBAIHdpbmRvdy5zdWl0ZXNNYW5hZ2VyID0KICAgICB7CiAgICAgICAgIHJl
dHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjc3VpdGVzID4gLnRyZWUiKTsKICAgICB9LAot
ICAgIAorCiAgICAgX3N1aXRlc0VsZW1lbnRzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI3N1aXRlcyA+IHVsID4gbGkiKTsKICAg
ICB9LAotICAgIAorCiAgICAgX2NoZWNrYm94RWxlbWVudDogZnVuY3Rpb24oZWxlbWVudCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoImlucHV0W3R5cGU9J2No
ZWNrYm94J106bm90KC5leHBhbmQtYnV0dG9uKSIpOwpAQCAtMTAzLDcgKzEwOSw3IEBAIHdpbmRv
dy5zdWl0ZXNNYW5hZ2VyID0KICAgICB7CiAgICAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCIjc3VpdGVzIGlucHV0W3R5cGU9J251bWJlciddIik7CiAgICAgfSwKLSAgICAg
ICAgCisKICAgICBfbG9jYWxTdG9yYWdlTmFtZUZvclRlc3Q6IGZ1bmN0aW9uKHN1aXRlTmFtZSwg
dGVzdE5hbWUpCiAgICAgewogICAgICAgICByZXR1cm4gc3VpdGVOYW1lICsgIi8iICsgdGVzdE5h
bWU7CkBAIC0xMjUsMTcgKzEzMSwxNyBAQCB3aW5kb3cuc3VpdGVzTWFuYWdlciA9CiAgICAgewog
ICAgICAgICB2YXIgc3VpdGVzRWxlbWVudHMgPSB0aGlzLl9zdWl0ZXNFbGVtZW50cygpOwogICAg
ICAgICB2YXIgc3RhcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjaW50cm8gYnV0
dG9uIik7Ci0gICAgICAgIAorCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3VpdGVzRWxl
bWVudHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBzdWl0ZUVsZW1lbnQgPSBzdWl0
ZXNFbGVtZW50c1tpXTsKICAgICAgICAgICAgIHZhciBzdWl0ZUNoZWNrYm94ID0gdGhpcy5fY2hl
Y2tib3hFbGVtZW50KHN1aXRlRWxlbWVudCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
aWYgKHN1aXRlQ2hlY2tib3guY2hlY2tlZCkgewogICAgICAgICAgICAgICAgIHN0YXJ0QnV0dG9u
LmRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgCisKICAgICAgICAgc3RhcnRCdXR0b24uZGlzYWJsZWQgPSB0cnVl
OwogICAgIH0sCiAKQEAgLTE0NCw3ICsxNTAsNyBAQCB3aW5kb3cuc3VpdGVzTWFuYWdlciA9CiAg
ICAgICAgIHZhciBzZWxlY3RlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkOwogICAgICAgICBldmVu
dC50YXJnZXQudGVzdHNFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3RFbGVtZW50KSB7CiAg
ICAgICAgICAgICB2YXIgdGVzdENoZWNrYm94ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50KHRlc3RF
bGVtZW50KTsKLSAgICAgICAgICAgIHRlc3RDaGVja2JveC5jaGVja2VkID0gc2VsZWN0ZWQ7ICAg
ICAgICAKKyAgICAgICAgICAgIHRlc3RDaGVja2JveC5jaGVja2VkID0gc2VsZWN0ZWQ7CiAgICAg
ICAgIH0sIHRoaXMpOwogICAgICAgICB0aGlzLl91cGRhdGVTdGFydEJ1dHRvblN0YXRlKCk7CiAg
ICAgfSwKQEAgLTIwMSw3ICsyMDcsNyBAQCB3aW5kb3cuc3VpdGVzTWFuYWdlciA9CiAgICAgICAg
ICAgICB9LCB0aGlzKTsKICAgICAgICAgfSwgdGhpcyk7CiAgICAgfSwKLSAgICAKKwogICAgIHVw
ZGF0ZUVkaXRzRWxlbWVudHNTdGF0ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGVk
aXRzRWxlbWVudHMgPSB0aGlzLl9lZGl0c0VsZW1lbnRzKCk7CkBAIC0yMjQsMTcgKzIzMCwxNyBA
QCB3aW5kb3cuc3VpdGVzTWFuYWdlciA9CiAgICAgdXBkYXRlVUlGcm9tTG9jYWxTdG9yYWdlOiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgc3VpdGVzRWxlbWVudHMgPSB0aGlzLl9zdWl0
ZXNFbGVtZW50cygpOwotICAgICAgICAKKwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1
aXRlc0VsZW1lbnRzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgc3VpdGVFbGVtZW50
ID0gc3VpdGVzRWxlbWVudHNbaV07CiAgICAgICAgICAgICB2YXIgc3VpdGVDaGVja2JveCA9IHRo
aXMuX2NoZWNrYm94RWxlbWVudChzdWl0ZUVsZW1lbnQpOwogICAgICAgICAgICAgdmFyIHN1aXRl
ID0gc3VpdGVDaGVja2JveC5zdWl0ZTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBzdWl0
ZUNoZWNrYm94LnRlc3RzRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbih0ZXN0RWxlbWVudCkgewog
ICAgICAgICAgICAgICAgIHZhciB0ZXN0Q2hlY2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQo
dGVzdEVsZW1lbnQpOwogICAgICAgICAgICAgICAgIHZhciB0ZXN0RWRpdCA9IHRoaXMuX2VkaXRF
bGVtZW50KHRlc3RFbGVtZW50KTsKICAgICAgICAgICAgICAgICB2YXIgdGVzdCA9IHRlc3RDaGVj
a2JveC50ZXN0OwotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgdmFyIHN0ciA9
IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuX2xvY2FsU3RvcmFnZU5hbWVGb3JUZXN0KHN1aXRl
Lm5hbWUsIHRlc3QubmFtZSkpOwogICAgICAgICAgICAgICAgIGlmIChzdHIgPT09IG51bGwpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0Niw3ICsyNTIsNyBAQCB3aW5kb3cuc3Vp
dGVzTWFuYWdlciA9CiAKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN1aXRlQ2hlY2tib3hTdGF0
ZShzdWl0ZUNoZWNrYm94KTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICB0aGlzLl91
cGRhdGVTdGFydEJ1dHRvblN0YXRlKCk7CiAgICAgfSwKIApAQCAtMjU0LDcgKzI2MCw3IEBAIHdp
bmRvdy5zdWl0ZXNNYW5hZ2VyID0KICAgICB7CiAgICAgICAgIHZhciBzdWl0ZXNFbGVtZW50cyA9
IHRoaXMuX3N1aXRlc0VsZW1lbnRzKCk7CiAgICAgICAgIHZhciBzdWl0ZXMgPSBbXTsKLSAgICAg
ICAgCisKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdWl0ZXNFbGVtZW50cy5sZW5ndGg7
ICsraSkgewogICAgICAgICAgICAgdmFyIHN1aXRlRWxlbWVudCA9IHN1aXRlc0VsZW1lbnRzW2ld
OwogICAgICAgICAgICAgdmFyIHN1aXRlQ2hlY2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQo
c3VpdGVFbGVtZW50KTsKQEAgLTI2NSwxMyArMjcxLDEzIEBAIHdpbmRvdy5zdWl0ZXNNYW5hZ2Vy
ID0KICAgICAgICAgICAgICAgICB2YXIgdGVzdENoZWNrYm94ID0gdGhpcy5fY2hlY2tib3hFbGVt
ZW50KHRlc3RFbGVtZW50KTsKICAgICAgICAgICAgICAgICB2YXIgdGVzdEVkaXQgPSB0aGlzLl9l
ZGl0RWxlbWVudCh0ZXN0RWxlbWVudCk7CiAgICAgICAgICAgICAgICAgdmFyIHRlc3QgPSB0ZXN0
Q2hlY2tib3gudGVzdDsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmICh0
ZXN0Q2hlY2tib3guY2hlY2tlZCkgewogICAgICAgICAgICAgICAgICAgICB0ZXN0LmNvbXBsZXhp
dHkgPSB0ZXN0RWRpdC52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgdGVzdHMucHVzaCh0ZXN0
KTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSB7IGNo
ZWNrZWQ6IHRlc3RDaGVja2JveC5jaGVja2VkLCBjb21wbGV4aXR5OiB0ZXN0RWRpdC52YWx1ZSB9
OyAKKyAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSB7IGNoZWNrZWQ6IHRlc3RDaGVja2JveC5j
aGVja2VkLCBjb21wbGV4aXR5OiB0ZXN0RWRpdC52YWx1ZSB9OwogICAgICAgICAgICAgICAgIGxv
Y2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuX2xvY2FsU3RvcmFnZU5hbWVGb3JUZXN0KHN1aXRlLm5h
bWUsIHRlc3QubmFtZSksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7CiAgICAgICAgICAgICB9LCB0
aGlzKTsKIApAQCAtMjgxLDcgKzI4Nyw3IEBAIHdpbmRvdy5zdWl0ZXNNYW5hZ2VyID0KIAogICAg
ICAgICByZXR1cm4gc3VpdGVzOwogICAgIH0sCi0gICAgCisKICAgICB1cGRhdGVMb2NhbFN0b3Jh
Z2VGcm9tSlNPTjogZnVuY3Rpb24oaXRlcmF0aW9uUmVzdWx0cykKICAgICB7CiAgICAgICAgIGZv
ciAodmFyIHN1aXRlTmFtZSBpbiBpdGVyYXRpb25SZXN1bHRzW1N0cmluZ3MuanNvbi5yZXN1bHRz
LnN1aXRlc10pIHsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNv
dXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpzCmlu
ZGV4IDBmNzkzYzU1NWI3MjI4ZTExZGZlMmIwMjk5MjViNWYyOGJkOTg0YjQuLjM3NmI1MWIyNTVj
YTk2OGIzYmZmZjNlNmJlOTNjODQ5NGM3NWMyZWEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIv
YmVuY2htYXJrLXJ1bm5lci5qcwpAQCAtNiw0OCArNiw0OSBAQCBmdW5jdGlvbiBCZW5jaG1hcmtS
dW5uZXJTdGF0ZShzdWl0ZXMpCiAgICAgdGhpcy5uZXh0KCk7CiB9CiAKLUJlbmNobWFya1J1bm5l
clN0YXRlLnByb3RvdHlwZS5jdXJyZW50U3VpdGUgPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0dXJu
IHRoaXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4XTsKLX07Ci0KLUJlbmNobWFya1J1bm5lclN0
YXRlLnByb3RvdHlwZS5jdXJyZW50VGVzdCA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgc3VpdGUg
PSB0aGlzLmN1cnJlbnRTdWl0ZSgpOwotICAgIHJldHVybiBzdWl0ZSA/IHN1aXRlLnRlc3RzW3Ro
aXMuX3Rlc3RJbmRleF0gOiBudWxsOwotfTsKLQotQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90
eXBlLmlzRmlyc3RUZXN0ID0gZnVuY3Rpb24oKQotewotICAgIHJldHVybiAhdGhpcy5fdGVzdElu
ZGV4OwotfTsKLQotQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLm5leHQgPSBmdW5jdGlv
bigpCi17Ci0gICAgdGhpcy5fdGVzdEluZGV4Kys7Ci0KLSAgICB2YXIgc3VpdGUgPSB0aGlzLl9z
dWl0ZXNbdGhpcy5fc3VpdGVJbmRleF07Ci0gICAgaWYgKHN1aXRlICYmIHRoaXMuX3Rlc3RJbmRl
eCA8IHN1aXRlLnRlc3RzLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0KLSAgICB0aGlz
Ll90ZXN0SW5kZXggPSAwOwotICAgIGRvIHsKLSAgICAgICAgdGhpcy5fc3VpdGVJbmRleCsrOwot
ICAgIH0gd2hpbGUgKHRoaXMuX3N1aXRlSW5kZXggPCB0aGlzLl9zdWl0ZXMubGVuZ3RoICYmIHRo
aXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4XS5kaXNhYmxlZCk7CitCZW5jaG1hcmtSdW5uZXJT
dGF0ZS5wcm90b3R5cGUgPSB7CisgICAgY3VycmVudFN1aXRlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdOworICAgIH0sCisK
KyAgICBjdXJyZW50VGVzdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHN1aXRlID0g
dGhpcy5jdXJyZW50U3VpdGUoKTsKKyAgICAgICAgcmV0dXJuIHN1aXRlID8gc3VpdGUudGVzdHNb
dGhpcy5fdGVzdEluZGV4XSA6IG51bGw7CisgICAgfSwKKworICAgIGlzRmlyc3RUZXN0OiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gIXRoaXMuX3Rlc3RJbmRleDsKKyAgICB9LAor
CisgICAgbmV4dDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fdGVzdEluZGV4Kys7
CisKKyAgICAgICAgdmFyIHN1aXRlID0gdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdOwor
ICAgICAgICBpZiAoc3VpdGUgJiYgdGhpcy5fdGVzdEluZGV4IDwgc3VpdGUudGVzdHMubGVuZ3Ro
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3Rlc3RJbmRleCA9IDA7Cisg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgIHRoaXMuX3N1aXRlSW5kZXgrKzsKKyAgICAgICAgfSB3
aGlsZSAodGhpcy5fc3VpdGVJbmRleCA8IHRoaXMuX3N1aXRlcy5sZW5ndGggJiYgdGhpcy5fc3Vp
dGVzW3RoaXMuX3N1aXRlSW5kZXhdLmRpc2FibGVkKTsKKyAgICB9LAorCisgICAgcHJlcGFyZUN1
cnJlbnRUZXN0OiBmdW5jdGlvbihydW5uZXIsIGZyYW1lKQorICAgIHsKKyAgICAgICAgdmFyIHRl
c3QgPSB0aGlzLmN1cnJlbnRUZXN0KCk7CisgICAgICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBs
ZVByb21pc2U7CiAKLSAgICByZXR1cm4gdGhpczsKLX07CisgICAgICAgIGZyYW1lLm9ubG9hZCA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIH07
CiAKLUJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5wcmVwYXJlQ3VycmVudFRlc3QgPSBm
dW5jdGlvbihydW5uZXIsIGZyYW1lKQotewotICAgIHZhciBzdWl0ZSA9IHRoaXMuY3VycmVudFN1
aXRlKCk7Ci0gICAgdmFyIHRlc3QgPSB0aGlzLmN1cnJlbnRUZXN0KCk7Ci0gICAgdmFyIHByb21p
c2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKLSAgICBmcmFtZS5vbmxvYWQgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgc3VpdGUucHJlcGFyZShydW5uZXIsIGZyYW1lLmNvbnRlbnRXaW5kb3csIGZyYW1l
LmNvbnRlbnREb2N1bWVudCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsgcHJvbWlzZS5yZXNvbHZl
KHJlc3VsdCk7IH0pOworICAgICAgICBmcmFtZS5zcmMgPSAidGVzdHMvIiArIHRlc3QudXJsOwor
ICAgICAgICByZXR1cm4gcHJvbWlzZTsKICAgICB9Ci0gICAgZnJhbWUuc3JjID0gInRlc3RzLyIg
KyB0ZXN0LnVybDsKLSAgICByZXR1cm4gcHJvbWlzZTsKIH07CiAKIGZ1bmN0aW9uIEJlbmNobWFy
a1J1bm5lcihzdWl0ZXMsIGZyYW1lQ29udGFpbmVyLCBjbGllbnQpCkBAIC01NywxMjggKzU4LDEx
OSBAQCBmdW5jdGlvbiBCZW5jaG1hcmtSdW5uZXIoc3VpdGVzLCBmcmFtZUNvbnRhaW5lciwgY2xp
ZW50KQogICAgIHRoaXMuX2ZyYW1lQ29udGFpbmVyID0gZnJhbWVDb250YWluZXI7CiB9CiAKLUJl
bmNobWFya1J1bm5lci5wcm90b3R5cGUud2FpdEZvckVsZW1lbnQgPSBmdW5jdGlvbihzZWxlY3Rv
cikKLXsKLSAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOwotICAgIHZhciBjb250
ZW50RG9jdW1lbnQgPSB0aGlzLl9mcmFtZS5jb250ZW50RG9jdW1lbnQ7Ci0KLSAgICBmdW5jdGlv
biByZXNvbHZlSWZSZWFkeSgpIHsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSBjb250ZW50RG9jdW1l
bnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7Ci0gICAgICAgIGlmIChlbGVtZW50KQotICAgICAg
ICAgICAgcmV0dXJuIHByb21pc2UucmVzb2x2ZShlbGVtZW50KTsKLSAgICAgICAgc2V0VGltZW91
dChyZXNvbHZlSWZSZWFkeSwgNTApOwotICAgIH0KK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUg
PSB7CisgICAgX2FwcGVuZEZyYW1lOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgZnJh
bWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgZnJhbWUuc2V0
QXR0cmlidXRlKCJzY3JvbGxpbmciLCAibm8iKTsKKworICAgICAgICB0aGlzLl9mcmFtZUNvbnRh
aW5lci5pbnNlcnRCZWZvcmUoZnJhbWUsIHRoaXMuX2ZyYW1lQ29udGFpbmVyLmZpcnN0Q2hpbGQp
OworICAgICAgICB0aGlzLl9mcmFtZSA9IGZyYW1lOworICAgICAgICByZXR1cm4gZnJhbWU7Cisg
ICAgfSwKKworICAgIF9yZW1vdmVGcmFtZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYg
KHRoaXMuX2ZyYW1lKSB7CisgICAgICAgICAgICB0aGlzLl9mcmFtZS5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKHRoaXMuX2ZyYW1lKTsKKyAgICAgICAgICAgIHRoaXMuX2ZyYW1lID0gbnVsbDsKKyAg
ICAgICAgfQorICAgIH0sCisKKyAgICBfcnVuQmVuY2htYXJrQW5kUmVjb3JkUmVzdWx0czogZnVu
Y3Rpb24oc3RhdGUpCisgICAgeworICAgICAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9t
aXNlOworICAgICAgICB2YXIgc3VpdGUgPSBzdGF0ZS5jdXJyZW50U3VpdGUoKTsKKyAgICAgICAg
dmFyIHRlc3QgPSBzdGF0ZS5jdXJyZW50VGVzdCgpOwogCi0gICAgcmVzb2x2ZUlmUmVhZHkoKTsK
LSAgICByZXR1cm4gcHJvbWlzZTsKLX07CisgICAgICAgIGlmICh0aGlzLl9jbGllbnQgJiYgdGhp
cy5fY2xpZW50LndpbGxSdW5UZXN0KQorICAgICAgICAgICAgdGhpcy5fY2xpZW50LndpbGxSdW5U
ZXN0KHN1aXRlLCB0ZXN0KTsKIAotQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fYXBwZW5kRnJh
bWUgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaWZyYW1lIik7Ci0gICAgZnJhbWUuc2V0QXR0cmlidXRlKCJzY3JvbGxpbmciLCAibm8iKTsK
KyAgICAgICAgdmFyIGNvbnRlbnRXaW5kb3cgPSB0aGlzLl9mcmFtZS5jb250ZW50V2luZG93Owor
ICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAKLSAgICB0aGlzLl9mcmFtZUNvbnRhaW5lci5pbnNl
cnRCZWZvcmUoZnJhbWUsIHRoaXMuX2ZyYW1lQ29udGFpbmVyLmZpcnN0Q2hpbGQpOwotICAgIHRo
aXMuX2ZyYW1lID0gZnJhbWU7Ci0gICAgcmV0dXJuIGZyYW1lOwotfTsKKyAgICAgICAgdmFyIG9w
dGlvbnMgPSB7IGNvbXBsZXhpdHk6IHRlc3QuY29tcGxleGl0eSB9OworICAgICAgICBVdGlsaXRp
ZXMuZXh0ZW5kT2JqZWN0KG9wdGlvbnMsIHRoaXMuX2NsaWVudC5vcHRpb25zKTsKKyAgICAgICAg
VXRpbGl0aWVzLmV4dGVuZE9iamVjdChvcHRpb25zLCBjb250ZW50V2luZG93LlV0aWxpdGllcy5w
YXJzZVBhcmFtZXRlcnMoKSk7CiAKLUJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3JlbW92ZUZy
YW1lID0gZnVuY3Rpb24oKQotewotICAgIGlmICh0aGlzLl9mcmFtZSkgewotICAgICAgICB0aGlz
Ll9mcmFtZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2ZyYW1lKTsKLSAgICAgICAgdGhp
cy5fZnJhbWUgPSBudWxsOwotICAgIH0KLX07CisgICAgICAgIHZhciBiZW5jaG1hcmsgPSBuZXcg
Y29udGVudFdpbmRvdy5iZW5jaG1hcmtDbGFzcyhvcHRpb25zKTsKKyAgICAgICAgYmVuY2htYXJr
LnJ1bigpLnRoZW4oZnVuY3Rpb24oc2FtcGxlcikgeworICAgICAgICAgICAgdmFyIHNhbXBsZXJz
ID0gc2VsZi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0gfHwge307CisgICAgICAgICAgICBz
YW1wbGVyc1t0ZXN0Lm5hbWVdID0gc2FtcGxlci50b0pTT04odHJ1ZSwgdHJ1ZSk7CisgICAgICAg
ICAgICBzZWxmLl9zdWl0ZXNTYW1wbGVyc1tzdWl0ZS5uYW1lXSA9IHNhbXBsZXJzOwogCi1CZW5j
aG1hcmtSdW5uZXIucHJvdG90eXBlLl9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0cyA9IGZ1bmN0aW9u
KHN0YXRlKQotewotICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7Ci0gICAgdmFy
IHN1aXRlID0gc3RhdGUuY3VycmVudFN1aXRlKCk7Ci0gICAgdmFyIHRlc3QgPSBzdGF0ZS5jdXJy
ZW50VGVzdCgpOwotICAgIAotICAgIGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50Lndp
bGxSdW5UZXN0KQotICAgICAgICB0aGlzLl9jbGllbnQud2lsbFJ1blRlc3Qoc3VpdGUsIHRlc3Qp
OwotCi0gICAgdmFyIGNvbnRlbnRXaW5kb3cgPSB0aGlzLl9mcmFtZS5jb250ZW50V2luZG93Owot
ICAgIHZhciBzZWxmID0gdGhpczsKLQotICAgIHN1aXRlLnJ1bihjb250ZW50V2luZG93LCB0ZXN0
LCB0aGlzLl9jbGllbnQub3B0aW9ucywgdGhpcy5fY2xpZW50LnByb2dyZXNzQmFyKS50aGVuKGZ1
bmN0aW9uKHNhbXBsZXIpIHsKLSAgICAgICAgdmFyIHNhbXBsZXJzID0gc2VsZi5fc3VpdGVzU2Ft
cGxlcnNbc3VpdGUubmFtZV0gfHwge307Ci0gICAgICAgIHNhbXBsZXJzW3Rlc3QubmFtZV0gPSBz
YW1wbGVyLnRvSlNPTih0cnVlLCB0cnVlKTsKLSAgICAgICAgc2VsZi5fc3VpdGVzU2FtcGxlcnNb
c3VpdGUubmFtZV0gPSBzYW1wbGVyczsKLQotICAgICAgICBpZiAoc2VsZi5fY2xpZW50ICYmIHNl
bGYuX2NsaWVudC5kaWRSdW5UZXN0KQotICAgICAgICAgICAgc2VsZi5fY2xpZW50LmRpZFJ1blRl
c3Qoc3VpdGUsIHRlc3QpOwotICAgICAgICAKLSAgICAgICAgc3RhdGUubmV4dCgpOwotICAgICAg
ICBpZiAoc3RhdGUuY3VycmVudFN1aXRlKCkgIT0gc3VpdGUpCi0gICAgICAgICAgICBzZWxmLl9y
ZW1vdmVGcmFtZSgpOwotICAgICAgICBwcm9taXNlLnJlc29sdmUoc3RhdGUpOwotICAgIH0pOwot
ICAgIAotICAgIHJldHVybiBwcm9taXNlOwotfTsKKyAgICAgICAgICAgIGlmIChzZWxmLl9jbGll
bnQgJiYgc2VsZi5fY2xpZW50LmRpZFJ1blRlc3QpCisgICAgICAgICAgICAgICAgc2VsZi5fY2xp
ZW50LmRpZFJ1blRlc3Qoc3VpdGUsIHRlc3QpOwogCi1CZW5jaG1hcmtSdW5uZXIucHJvdG90eXBl
LnN0ZXAgPSBmdW5jdGlvbihzdGF0ZSkKLXsKLSAgICBpZiAoIXN0YXRlKSB7Ci0gICAgICAgIHN0
YXRlID0gbmV3IEJlbmNobWFya1J1bm5lclN0YXRlKHRoaXMuX3N1aXRlcyk7Ci0gICAgICAgIHRo
aXMuX3N1aXRlc1NhbXBsZXJzID0ge307Ci0gICAgfQorICAgICAgICAgICAgc3RhdGUubmV4dCgp
OworICAgICAgICAgICAgaWYgKHN0YXRlLmN1cnJlbnRTdWl0ZSgpICE9IHN1aXRlKQorICAgICAg
ICAgICAgICAgIHNlbGYuX3JlbW92ZUZyYW1lKCk7CisgICAgICAgICAgICBwcm9taXNlLnJlc29s
dmUoc3RhdGUpOworICAgICAgICB9KTsKIAotICAgIHZhciBzdWl0ZSA9IHN0YXRlLmN1cnJlbnRT
dWl0ZSgpOwotICAgIGlmICghc3VpdGUpIHsKLSAgICAgICAgdGhpcy5fZmluYWxpemUoKTsKLSAg
ICAgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKLSAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKCk7CiAgICAgICAgIHJldHVybiBwcm9taXNlOworICAgIH0sCisKKyAgICBzdGVwOiBm
dW5jdGlvbihzdGF0ZSkKKyAgICB7CisgICAgICAgIGlmICghc3RhdGUpIHsKKyAgICAgICAgICAg
IHN0YXRlID0gbmV3IEJlbmNobWFya1J1bm5lclN0YXRlKHRoaXMuX3N1aXRlcyk7CisgICAgICAg
ICAgICB0aGlzLl9zdWl0ZXNTYW1wbGVycyA9IHt9OworICAgICAgICB9CisKKyAgICAgICAgdmFy
IHN1aXRlID0gc3RhdGUuY3VycmVudFN1aXRlKCk7CisgICAgICAgIGlmICghc3VpdGUpIHsKKyAg
ICAgICAgICAgIHRoaXMuX2ZpbmFsaXplKCk7CisgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IG5l
dyBTaW1wbGVQcm9taXNlOworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAg
ICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGF0ZS5pc0Zp
cnN0VGVzdCgpKSB7CisgICAgICAgICAgICB0aGlzLl9hcHBlbmRGcmFtZSgpOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIHN0YXRlLnByZXBhcmVDdXJyZW50VGVzdCh0aGlzLCB0aGlzLl9m
cmFtZSkudGhlbihmdW5jdGlvbihwcmVwYXJlUmV0dXJuVmFsdWUpIHsKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9ydW5CZW5jaG1hcmtBbmRSZWNvcmRSZXN1bHRzKHN0YXRlKTsKKyAgICAgICAg
fS5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgcnVuQWxsU3RlcHM6IGZ1bmN0aW9uKHN0YXJ0
aW5nU3RhdGUpCisgICAgeworICAgICAgICB2YXIgbmV4dENhbGxlZSA9IHRoaXMucnVuQWxsU3Rl
cHMuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5zdGVwKHN0YXJ0aW5nU3RhdGUpLnRoZW4oZnVu
Y3Rpb24obmV4dFN0YXRlKSB7CisgICAgICAgICAgICBpZiAobmV4dFN0YXRlKQorICAgICAgICAg
ICAgICAgIG5leHRDYWxsZWUobmV4dFN0YXRlKTsKKyAgICAgICAgfSk7CisgICAgfSwKKworICAg
IHJ1bk11bHRpcGxlSXRlcmF0aW9uczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHNl
bGYgPSB0aGlzOworICAgICAgICB2YXIgY3VycmVudEl0ZXJhdGlvbiA9IDA7CisKKyAgICAgICAg
dGhpcy5fcnVuTmV4dEl0ZXJhdGlvbiA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY3VycmVu
dEl0ZXJhdGlvbisrOworICAgICAgICAgICAgaWYgKGN1cnJlbnRJdGVyYXRpb24gPCBzZWxmLl9j
bGllbnQuaXRlcmF0aW9uQ291bnQpCisgICAgICAgICAgICAgICAgc2VsZi5ydW5BbGxTdGVwcygp
OworICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC5kaWRG
aW5pc2hMYXN0SXRlcmF0aW9uKQorICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudC5kaWRGaW5p
c2hMYXN0SXRlcmF0aW9uKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5fY2xpZW50
ICYmIHRoaXMuX2NsaWVudC53aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbikKKyAgICAgICAgICAgIHRo
aXMuX2NsaWVudC53aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbigpOworCisgICAgICAgIHRoaXMucnVu
QWxsU3RlcHMoKTsKKyAgICB9LAorCisgICAgX2ZpbmFsaXplOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB0aGlzLl9yZW1vdmVGcmFtZSgpOworCisgICAgICAgIGlmICh0aGlzLl9jbGllbnQg
JiYgdGhpcy5fY2xpZW50LmRpZFJ1blN1aXRlcykKKyAgICAgICAgICAgIHRoaXMuX2NsaWVudC5k
aWRSdW5TdWl0ZXModGhpcy5fc3VpdGVzU2FtcGxlcnMpOworCisgICAgICAgIGlmICh0aGlzLl9y
dW5OZXh0SXRlcmF0aW9uKQorICAgICAgICAgICAgdGhpcy5fcnVuTmV4dEl0ZXJhdGlvbigpOwog
ICAgIH0KLQotICAgIGlmIChzdGF0ZS5pc0ZpcnN0VGVzdCgpKSB7Ci0gICAgICAgIHRoaXMuX2Fw
cGVuZEZyYW1lKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0YXRlLnByZXBhcmVDdXJyZW50VGVz
dCh0aGlzLCB0aGlzLl9mcmFtZSkudGhlbihmdW5jdGlvbihwcmVwYXJlUmV0dXJuVmFsdWUpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzKHN0YXRlKTsKLSAg
ICB9LmJpbmQodGhpcykpOwotfTsKLQotQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5ydW5BbGxT
dGVwcyA9IGZ1bmN0aW9uKHN0YXJ0aW5nU3RhdGUpCi17Ci0gICAgdmFyIG5leHRDYWxsZWUgPSB0
aGlzLnJ1bkFsbFN0ZXBzLmJpbmQodGhpcyk7Ci0gICAgdGhpcy5zdGVwKHN0YXJ0aW5nU3RhdGUp
LnRoZW4oZnVuY3Rpb24obmV4dFN0YXRlKSB7Ci0gICAgICAgIGlmIChuZXh0U3RhdGUpCi0gICAg
ICAgICAgICBuZXh0Q2FsbGVlKG5leHRTdGF0ZSk7Ci0gICAgfSk7Ci19OwotCi1CZW5jaG1hcmtS
dW5uZXIucHJvdG90eXBlLnJ1bk11bHRpcGxlSXRlcmF0aW9ucyA9IGZ1bmN0aW9uKCkKLXsKLSAg
ICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgdmFyIGN1cnJlbnRJdGVyYXRpb24gPSAwOwotCi0gICAg
dGhpcy5fcnVuTmV4dEl0ZXJhdGlvbiA9IGZ1bmN0aW9uKCkgewotICAgICAgICBjdXJyZW50SXRl
cmF0aW9uKys7Ci0gICAgICAgIGlmIChjdXJyZW50SXRlcmF0aW9uIDwgc2VsZi5fY2xpZW50Lml0
ZXJhdGlvbkNvdW50KQotICAgICAgICAgICAgc2VsZi5ydW5BbGxTdGVwcygpOwotICAgICAgICBl
bHNlIGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRp
b24pCi0gICAgICAgICAgICBzZWxmLl9jbGllbnQuZGlkRmluaXNoTGFzdEl0ZXJhdGlvbigpOwot
ICAgIH0KLQotICAgIGlmIChzZWxmLl9jbGllbnQgJiYgc2VsZi5fY2xpZW50LndpbGxTdGFydEZp
cnN0SXRlcmF0aW9uKQotICAgICAgICBzZWxmLl9jbGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRp
b24oKTsKLQotICAgIHNlbGYucnVuQWxsU3RlcHMoKTsKLX07Ci0KLUJlbmNobWFya1J1bm5lci5w
cm90b3R5cGUuX2ZpbmFsaXplID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX3JlbW92ZUZyYW1l
KCk7Ci0gICAgICAgIAotICAgIGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50LmRpZFJ1
blN1aXRlcykKLSAgICAgICAgdGhpcy5fY2xpZW50LmRpZFJ1blN1aXRlcyh0aGlzLl9zdWl0ZXNT
YW1wbGVycyk7Ci0KLSAgICBpZiAodGhpcy5fcnVuTmV4dEl0ZXJhdGlvbikKLSAgICAgICAgdGhp
cy5fcnVuTmV4dEl0ZXJhdGlvbigpOwogfTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL3Rlc3RzLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvdGVzdHMuanMKaW5kZXggMDgy
ZThiN2QyNDQ4MWY0MGIwOGEwNGI2MTNhMWE5ZDg1ZmRhNTc3Zi4uZjU0OTcxMDVkMmQ5YjQ2ZTNj
ODg1NjFhN2JmMDg0ZDIzNzlmZjk1ZCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvdGVzdHMuanMKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvdGVzdHMuanMKQEAgLTczLDE1
ICs3MywxNSBAQCBVdGlsaXRpZXMuZXh0ZW5kT2JqZWN0KEhlYWRlcnMsIHsKIAogU3VpdGVzLnB1
c2gobmV3IFN1aXRlKCJIVE1MIHN1aXRlIiwKICAgICBbCi0gICAgICAgIHsgCisgICAgICAgIHsK
ICAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVz
Lmh0bWw/cGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAog
ICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBjaXJjbGVzIgogICAgICAgICB9LAotICAg
ICAgICB7IAorICAgICAgICB7CiAgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctY3NzLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9
NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAogICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2lu
ZyBjbGlwcGVkIHJlY3RzIgogICAgICAgICB9LAotICAgICAgICB7IAorICAgICAgICB7CiAgICAg
ICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1s
P3BhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3Jh
ZGllbnQiLAogICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBncmFkaWVudCBjaXJjbGVz
IgogICAgICAgICB9LApAQCAtMTA2LDE5ICsxMDYsMTkgQEAgU3VpdGVzLnB1c2gobmV3IFN1aXRl
KCJIVE1MIHN1aXRlIiwKIAogU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJDYW52YXMgc3VpdGUiLAog
ICAgIFsKLSAgICAgICAgeyAKKyAgICAgICAgewogICAgICAgICAgICAgdXJsOiAiYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTEyJnBh
cnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCiAgICAgICAgICAgICBuYW1lOiAiY2FudmFz
IGJvdW5jaW5nIGNpcmNsZXMiCiAgICAgICAgIH0sCi0gICAgICAgIHsgCisgICAgICAgIHsKICAg
ICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVz
Lmh0bWw/cGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9
c3RhciIsCiAgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMi
CiAgICAgICAgIH0sCi0gICAgICAgIHsgCisgICAgICAgIHsKICAgICAgICAgICAgIHVybDogImJv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0
aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCiAgICAg
ICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGdyYWRpZW50IGNpcmNsZXMiCiAgICAgICAg
IH0sCi0gICAgICAgIHsgCisgICAgICAgIHsKICAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0
aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKICAgICAg
ICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgU1ZHIGltYWdlcyIKICAgICAgICAgfSwKQEAg
LTI0NiwxMiArMjQ2LDEyIEBAIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiTWlzY2VsbGFuZW91cyBU
ZXN0cyIsCiAgICAgICAgICAgICBuYW1lOiAiQ29tcG9zaXRlZCBUcmFuc2Zvcm1zIgogICAgICAg
ICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJleGFtcGxlcy9jYW52YXMtZWxlY3Ry
b25zLmh0bWwiLAotICAgICAgICAgICAgbmFtZTogImNhbnZhcyBlbGVjdHJvbnMiCisgICAgICAg
ICAgICB1cmw6ICJtaXNjL2NhbnZhcy1lbGVjdHJvbnMuaHRtbCIsCisgICAgICAgICAgICBuYW1l
OiAiQ2FudmFzIGVsZWN0cm9ucyIKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAg
dXJsOiAiZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0bWwiLAotICAgICAgICAgICAgbmFtZTogImNh
bnZhcyBzdGFycyIKKyAgICAgICAgICAgIHVybDogIm1pc2MvY2FudmFzLXN0YXJzLmh0bWwiLAor
ICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBzdGFycyIKICAgICAgICAgfSwKICAgICBdCiApKTsK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5z
aW9ucy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9u
cy5qcwppbmRleCA3MzhhYjQ0YTkxMDNmY2RjYjQxOGQwNjE3ODM0OGU4NzUyYzNhNGVmLi44NGNj
MWZkMWNlMDE2ZDE0MzhjYTYxNzZmMzgyOTBmMGQzN2VlYTFmIDEwMDY0NAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzCkBAIC03NiwzNCAr
NzYsMzQgQEAgUG9pbnQucHJvdG90eXBlID0KICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLng7
CiAgICAgfSwKLSAgICAKKwogICAgIC8vIFVzZWQgd2hlbiB0aGUgcG9pbnQgb2JqZWN0IGlzIHVz
ZWQgYXMgYSBzaXplIG9iamVjdC4KICAgICBnZXQgaGVpZ2h0KCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLnk7CiAgICAgfSwKLSAgICAKKwogICAgIC8vIFVzZWQgd2hlbiB0aGUgcG9pbnQg
b2JqZWN0IGlzIHVzZWQgYXMgYSBzaXplIG9iamVjdC4KICAgICBnZXQgY2VudGVyKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54IC8gMiwgdGhpcy55IC8gMik7CiAgICAg
fSwKLSAgICAKKwogICAgIGFkZDogZnVuY3Rpb24ob3RoZXIpCiAgICAgewogICAgICAgICByZXR1
cm4gbmV3IFBvaW50KHRoaXMueCArIG90aGVyLngsIHRoaXMueSArIG90aGVyLnkpOwogICAgIH0s
Ci0gICAgCisKICAgICBzdWJ0cmFjdDogZnVuY3Rpb24ob3RoZXIpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbmV3IFBvaW50KHRoaXMueCAtIG90aGVyLngsIHRoaXMueSAtIG90aGVyLnkpOwogICAg
IH0sCi0gICAgCisKICAgICBtdWx0aXBseTogZnVuY3Rpb24ob3RoZXIpCiAgICAgewogICAgICAg
ICByZXR1cm4gbmV3IFBvaW50KHRoaXMueCAqIG90aGVyLngsIHRoaXMueSAqIG90aGVyLnkpOwog
ICAgIH0sCi0gICAgCisKICAgICBtb3ZlOiBmdW5jdGlvbihhbmdsZSwgdmVsb2NpdHksIHRpbWVE
ZWx0YSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmFkZChQb2ludC5wb2ludE9uQ2lyY2xl
KGFuZ2xlLCB2ZWxvY2l0eSAqICh0aW1lRGVsdGEgLyAxMDAwKSkpOwpAQCAtMTM5LDcgKzEzOSw3
IEBAIEluc2V0cy5wcm90b3R5cGUgPQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMudG9wICsg
dGhpcy5ib3R0b207CiAgICAgfSwKLSAgICAKKwogICAgIGdldCBzaXplKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy53aWR0aCwgdGhpcy5oZWlnaHQpOwpAQCAtMTU2LDEw
ICsxNTYsMTAgQEAgU2ltcGxlUHJvbWlzZS5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uIChjYWxs
YmFjaykKIHsKICAgICBpZiAodGhpcy5fY2FsbGJhY2spCiAgICAgICAgIHRocm93ICJTaW1wbGVQ
cm9taXNlIGRvZXNuJ3Qgc3VwcG9ydCBtdWx0aXBsZSBjYWxscyB0byB0aGVuIjsKLSAgICAgICAg
CisKICAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNrOwogICAgIHRoaXMuX2NoYWluZWRQcm9t
aXNlID0gbmV3IFNpbXBsZVByb21pc2U7Ci0gICAgCisKICAgICBpZiAodGhpcy5fcmVzb2x2ZWQp
CiAgICAgICAgIHRoaXMucmVzb2x2ZSh0aGlzLl9yZXNvbHZlZFZhbHVlKTsKIApAQCAtMjAxLDEz
ICsyMDEsMTMgQEAgd2luZG93LkRvY3VtZW50RXh0ZW5zaW9uID0KICAgICAgICAgY29uc3QgeGxp
bmtOYW1lc3BhY2UgPSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI7CiAKICAgICAgICAg
dmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTmFtZXNwYWNlLCBuYW1l
KTsKLSAgICAgICAgCisKICAgICAgICAgZm9yICh2YXIga2V5IGluIGF0dHJzKQogICAgICAgICAg
ICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyc1trZXldKTsKLSAgICAgICAgICAgIAor
CiAgICAgICAgIGZvciAodmFyIGtleSBpbiB4bGlua0F0dHJzKQogICAgICAgICAgICAgZWxlbWVu
dC5zZXRBdHRyaWJ1dGVOUyh4bGlua05hbWVzcGFjZSwga2V5LCB4bGlua0F0dHJzW2tleV0pOwot
ICAgICAgICAgICAgCisKICAgICAgICAgcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZChlbGVtZW50
KTsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgfQpAQCAtMjE1LDI2ICsyMTUsMjMgQEAg
d2luZG93LkRvY3VtZW50RXh0ZW5zaW9uID0KIAogZnVuY3Rpb24gUHJvZ3Jlc3NCYXIoZWxlbWVu
dCwgcmFuZ2VzKQogewotICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7Ci0gICAgdGhpcy5yYW5n
ZXMgPSByYW5nZXM7Ci0gICAgdGhpcy5jdXJyZW50UmFuZ2UgPSAwOworICAgIHRoaXMuX2VsZW1l
bnQgPSBlbGVtZW50OworICAgIHRoaXMuX3JhbmdlcyA9IHJhbmdlczsKKyAgICB0aGlzLl9jdXJy
ZW50UmFuZ2UgPSAwOworICAgIHRoaXMuX3VwZGF0ZUVsZW1lbnQoKTsKIH0KIAogUHJvZ3Jlc3NC
YXIucHJvdG90eXBlID0KIHsKLSAgICBfcHJvZ3Jlc3NUb1BlcmNlbnQ6IGZ1bmN0aW9uKHByb2dy
ZXNzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHByb2dyZXNzICogKDEwMCAvIHRoaXMucmFuZ2Vz
KTsKLSAgICB9LAotICAgIAotICAgIGluY1JhbmdlOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZUVs
ZW1lbnQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgICsrdGhpcy5jdXJyZW50UmFuZ2U7Cisg
ICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUud2lkdGggPSAodGhpcy5fY3VycmVudFJhbmdlICog
KDEwMCAvIHRoaXMuX3JhbmdlcykpICsgIiUiOwogICAgIH0sCi0gICAgCi0gICAgc2V0UG9zOiBm
dW5jdGlvbihwcm9ncmVzcykKKworICAgIGluY3JlbWVudFJhbmdlOiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9wcm9ncmVzc1RvUGVy
Y2VudCh0aGlzLmN1cnJlbnRSYW5nZSArIHByb2dyZXNzKSArICIlIjsKKyAgICAgICAgKyt0aGlz
Ll9jdXJyZW50UmFuZ2U7CisgICAgICAgIHRoaXMuX3VwZGF0ZUVsZW1lbnQoKTsKICAgICB9CiB9
CiAKQEAgLTI0OCwyNSArMjQ1LDI1IEBAIFJlc3VsdHNEYXNoYm9hcmQucHJvdG90eXBlID0KIHsK
ICAgICBwdXNoOiBmdW5jdGlvbihzdWl0ZXNTYW1wbGVycykKICAgICB7Ci0gICAgICAgIHRoaXMu
X2l0ZXJhdGlvbnNTYW1wbGVycy5wdXNoKHN1aXRlc1NhbXBsZXJzKTsgICAgICAgIAorICAgICAg
ICB0aGlzLl9pdGVyYXRpb25zU2FtcGxlcnMucHVzaChzdWl0ZXNTYW1wbGVycyk7CiAgICAgfSwK
LSAgICAKKwogICAgIF9wcm9jZXNzRGF0YTogZnVuY3Rpb24oc3RhdGlzdGljcywgZ3JhcGgpCiAg
ICAgewogICAgICAgICB2YXIgaXRlcmF0aW9uc1Jlc3VsdHMgPSBbXTsKICAgICAgICAgdmFyIGl0
ZXJhdGlvbnNTY29yZXMgPSBbXTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5faXRlcmF0aW9u
c1NhbXBsZXJzLmZvckVhY2goZnVuY3Rpb24oaXRlcmF0aW9uU2FtcGxlcnMsIGluZGV4KSB7CiAg
ICAgICAgICAgICB2YXIgc3VpdGVzUmVzdWx0cyA9IHt9OwogICAgICAgICAgICAgdmFyIHN1aXRl
c1Njb3JlcyA9IFtdOwotICAgICAgICAKKwogICAgICAgICAgICAgZm9yICh2YXIgc3VpdGVOYW1l
IGluIGl0ZXJhdGlvblNhbXBsZXJzKSB7CiAgICAgICAgICAgICAgICAgdmFyIHN1aXRlID0gc3Vp
dGVGcm9tTmFtZShzdWl0ZU5hbWUpOwogICAgICAgICAgICAgICAgIHZhciBzdWl0ZVNhbXBsZXJE
YXRhID0gaXRlcmF0aW9uU2FtcGxlcnNbc3VpdGVOYW1lXTsKIAogICAgICAgICAgICAgICAgIHZh
ciB0ZXN0c1Jlc3VsdHMgPSB7fTsKICAgICAgICAgICAgICAgICB2YXIgdGVzdHNTY29yZXMgPSBb
XTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGZvciAodmFyIHRlc3ROYW1l
IGluIHN1aXRlU2FtcGxlckRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgdGVzdHNSZXN1bHRz
W3Rlc3ROYW1lXSA9IHN1aXRlU2FtcGxlckRhdGFbdGVzdE5hbWVdOwogICAgICAgICAgICAgICAg
ICAgICB0ZXN0c1Njb3Jlcy5wdXNoKHRlc3RzUmVzdWx0c1t0ZXN0TmFtZV1bU3RyaW5ncy5qc29u
LnNjb3JlXSk7CkBAIC0yNzcsNyArMjc0LDcgQEAgUmVzdWx0c0Rhc2hib2FyZC5wcm90b3R5cGUg
PQogICAgICAgICAgICAgICAgIHN1aXRlc1Jlc3VsdHNbc3VpdGVOYW1lXVtTdHJpbmdzLmpzb24u
cmVzdWx0cy50ZXN0c10gPSB0ZXN0c1Jlc3VsdHM7CiAgICAgICAgICAgICAgICAgc3VpdGVzU2Nv
cmVzLnB1c2goc3VpdGVzUmVzdWx0c1tzdWl0ZU5hbWVdW1N0cmluZ3MuanNvbi5zY29yZV0pOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGl0ZXJhdGlvbnNSZXN1
bHRzW2luZGV4XSA9IHt9OwogICAgICAgICAgICAgaXRlcmF0aW9uc1Jlc3VsdHNbaW5kZXhdW1N0
cmluZ3MuanNvbi5zY29yZV0gPSBTdGF0aXN0aWNzLmdlb21ldHJpY01lYW4oc3VpdGVzU2NvcmVz
KTsKICAgICAgICAgICAgIGl0ZXJhdGlvbnNSZXN1bHRzW2luZGV4XVtTdHJpbmdzLmpzb24ucmVz
dWx0cy5zdWl0ZXNdID0gc3VpdGVzUmVzdWx0czsKQEAgLTM0NSw3ICszNDIsNyBAQCBSZXN1bHRz
VGFibGUucHJvdG90eXBlID0KICAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVzdWx0c1tTdHJpbmdz
Lmpzb24uc2FtcGxlc107CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgCisKICAgICAgICAgdmFyIGJ1dHRvbiA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0
ZUVsZW1lbnQoImJ1dHRvbiIsIHsgY2xhc3M6ICJzbWFsbC1idXR0b24iIH0sIHRkKTsKIAogICAg
ICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsKQEAgLTM2
NSw3ICszNjIsNyBAQCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICAgICAgICAgICAgICBj
b21wbGV4aXR5W1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuY29uY2Vybl0udG9GaXhlZCgyKV0u
am9pbigiIik7CiAgICAgICAgICAgICBiZW5jaG1hcmtDb250cm9sbGVyLnNob3dUZXN0R3JhcGgo
dGVzdE5hbWUsIHNjb3JlLCBtZWFuLCBheGVzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQp
OwogICAgICAgICB9KTsKLSAgICAgICAgICAgIAorCiAgICAgICAgIGJ1dHRvbi50ZXh0Q29udGVu
dCA9IFN0cmluZ3MudGV4dC5yZXN1bHRzLmdyYXBoICsgIi4uLiI7CiAgICAgfSwKIApAQCAtMzcz
LDEwICszNzAsMTAgQEAgUmVzdWx0c1RhYmxlLnByb3RvdHlwZSA9CiAgICAgewogICAgICAgICBj
b25zdCBwZXJjZW50VGhyZXNob2xkID0gMTA7CiAgICAgICAgIGNvbnN0IGF2ZXJhZ2VUaHJlc2hv
bGQgPSAyOwotICAgICAgICAgCisKICAgICAgICAgaWYgKG1lYXN1cmVtZW50ID09IFN0cmluZ3Mu
anNvbi5tZWFzdXJlbWVudHMucGVyY2VudCkKICAgICAgICAgICAgIHJldHVybiBkYXRhW1N0cmlu
Z3MuanNvbi5tZWFzdXJlbWVudHMucGVyY2VudF0gPj0gcGVyY2VudFRocmVzaG9sZDsKLSAgICAg
ICAgICAgIAorCiAgICAgICAgIGlmIChqc29uRXhwZXJpbWVudCA9PSBTdHJpbmdzLmpzb24uZXhw
ZXJpbWVudHMuZnJhbWVSYXRlICYmIG1lYXN1cmVtZW50ID09IFN0cmluZ3MuanNvbi5tZWFzdXJl
bWVudHMuYXZlcmFnZSkKICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyhkYXRhW1N0cmluZ3Mu
anNvbi5tZWFzdXJlbWVudHMuYXZlcmFnZV0gLSBvcHRpb25zWyJmcmFtZS1yYXRlIl0pID49IGF2
ZXJhZ2VUaHJlc2hvbGQ7CiAKQEAgLTQ0NSw3ICs0NDIsNyBAQCBSZXN1bHRzVGFibGUucHJvdG90
eXBlID0KICAgICAgICAgICAgIHRoaXMuX2FkZFRlc3QodGVzdE5hbWUsIHRlc3RSZXN1bHRzLCBv
cHRpb25zKTsKICAgICAgICAgfQogICAgIH0sCi0gICAgCisKICAgICBfYWRkSXRlcmF0aW9uOiBm
dW5jdGlvbihpdGVyYXRpb25SZXN1bHQsIG9wdGlvbnMpCiAgICAgewogICAgICAgICBmb3IgKHZh
ciBzdWl0ZU5hbWUgaW4gaXRlcmF0aW9uUmVzdWx0W1N0cmluZ3MuanNvbi5yZXN1bHRzLnN1aXRl
c10pIHsKQEAgLTQ1OCw3ICs0NTUsNyBAQCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICB7
CiAgICAgICAgIHRoaXMuY2xlYXIoKTsKICAgICAgICAgdGhpcy5fYWRkSGVhZGVyKCk7Ci0gICAg
ICAgIAorCiAgICAgICAgIGl0ZXJhdGlvbnNSZXN1bHRzLmZvckVhY2goZnVuY3Rpb24oaXRlcmF0
aW9uUmVzdWx0KSB7CiAgICAgICAgICAgICB0aGlzLl9hZGRJdGVyYXRpb24oaXRlcmF0aW9uUmVz
dWx0LCBvcHRpb25zKTsKICAgICAgICAgfSwgdGhpcyk7CkBAIC01MDYsNSArNTAzLDE0IEBAIHdp
bmRvdy5VdGlsaXRpZXMgPQogICAgIG1lcmdlT2JqZWN0czogZnVuY3Rpb24ob2JqMSwgb2JqMikK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmV4dGVuZE9iamVjdCh0aGlzLmNvcHlPYmplY3Qo
b2JqMSksIG9iajIpOworICAgIH0sCisKKyAgICBjcmVhdGVTdWJjbGFzczogZnVuY3Rpb24oc3Vw
ZXJjbGFzcywgY2xhc3NDb25zdHJ1Y3RvciwgZXh0ZW5kKQorICAgIHsKKyAgICAgICAgY2xhc3ND
b25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyY2xhc3MucHJvdG90eXBl
KTsKKyAgICAgICAgY2xhc3NDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjbGFz
c0NvbnN0cnVjdG9yOworICAgICAgICBpZiAoZXh0ZW5kKQorICAgICAgICAgICAgVXRpbGl0aWVz
LmV4dGVuZE9iamVjdChjbGFzc0NvbnN0cnVjdG9yLnByb3RvdHlwZSwgZXh0ZW5kKTsKKyAgICAg
ICAgcmV0dXJuIGNsYXNzQ29uc3RydWN0b3I7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuanMK
aW5kZXggMDQ5ODEzNWMwNzU3MmE3MGNkYTA3MzhlYmRhYzUzYzhmOTAxZTllZS4uZTlkNjAyZDIz
MTEzZWQ4NjQyZGEwYTE0ODYwODUwYjhiY2M4ZDQzNiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5qcworKysgYi9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmpzCkBA
IC01LDcgKzUsNiBAQCB3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50ID0gewogCiAgICAgaW5p
dGlhbGl6ZTogZnVuY3Rpb24oc3VpdGVzLCBvcHRpb25zKQogICAgIHsKLSAgICAgICAgdGhpcy50
ZXN0c0NvdW50ID0gdGhpcy5pdGVyYXRpb25Db3VudCAqIHN1aXRlcy5yZWR1Y2UoZnVuY3Rpb24g
KGNvdW50LCBzdWl0ZSkgeyByZXR1cm4gY291bnQgKyBzdWl0ZS50ZXN0cy5sZW5ndGg7IH0sIDAp
OwogICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwogICAgIH0sCiAKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanMKaW5k
ZXggZjk4NDE4MTE2NWMyYzdkYjFiMGNlMWJkZmRjMTVlMWJkOTExODMwNC4uZmYwOGZhYTNjMDMy
ZGMxY2ZmZTAxY2RiNjIwOTJmYjc5YzhlOTcyYSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanMKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanMKQEAgLTcsMTYgKzcsNiBA
QCB2YXIgU3VpdGUgPSBmdW5jdGlvbihuYW1lLCB0ZXN0cykgewogICAgIHRoaXMubmFtZSA9IG5h
bWU7CiAgICAgdGhpcy50ZXN0cyA9IHRlc3RzOwogfTsKLVN1aXRlLnByb3RvdHlwZS5wcmVwYXJl
ID0gZnVuY3Rpb24ocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpCi17Ci0g
ICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAo
ZWxlbWVudCkgewotICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9KTsKLX07Ci1TdWl0ZS5w
cm90b3R5cGUucnVuID0gZnVuY3Rpb24oY29udGVudFdpbmRvdywgdGVzdCwgb3B0aW9ucywgcHJv
Z3Jlc3NCYXIpCi17Ci0gICAgcmV0dXJuIGNvbnRlbnRXaW5kb3cucnVuQmVuY2htYXJrKHRoaXMs
IHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX07CiAKIHZhciBTdWl0ZXMgPSBbXTsKIApk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zdHJpbmdz
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zdHJpbmdzLmpzCmlu
ZGV4IDgyOTNjYmVkNWM3MjNiNmYwZDE3NjRlMDJhMjg1MGYxMmEzZTM1ZjkuLjgxZjQ2YmUyOTE4
MTVjMzhkNmM0YTY2NDU3NDY0OTFhYzk4ZjNmMmYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RyaW5ncy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3N0cmluZ3MuanMKQEAgLTQsMjQgKzQsMTggQEAgdmFyIFN0
cmluZ3MgPSB7CiAgICAgICAgIHNjb3JlOiAiU2NvcmUiLAogICAgICAgICBzYW1wbGVzOiAiU2Ft
cGxlcyIsCiAKLSAgICAgICAgcnVubmluZ1N0YXRlOiB7Ci0gICAgICAgICAgICB3YXJtaW5nOiAi
V2FybWluZyIsCi0gICAgICAgICAgICBzYW1wbGluZzogIlNhbXBsaW5nIiwKLSAgICAgICAgICAg
IGZpbmlzaGVkOiAiRmluaXNoZWQiCi0gICAgICAgIH0sCi0KICAgICAgICAgZXhwZXJpbWVudHM6
IHsKICAgICAgICAgICAgIGNvbXBsZXhpdHk6ICJDb21wbGV4aXR5IiwKICAgICAgICAgICAgIGZy
YW1lUmF0ZTogIkZQUyIKICAgICAgICAgfSwKLSAgICAgICAgCisKICAgICAgICAgbWVhc3VyZW1l
bnRzOiB7CiAgICAgICAgICAgICBhdmVyYWdlOiAiQXZnLiIsCiAgICAgICAgICAgICBjb25jZXJu
OiAiVy41JSIsCiAgICAgICAgICAgICBzdGRldjogIlN0ZC4iLAogICAgICAgICAgICAgcGVyY2Vu
dDogICIlIgogICAgICAgICB9LAotICAgICAgICAKKwogICAgICAgICByZXN1bHRzOiB7CiAgICAg
ICAgICAgICByZXN1bHRzOiAiUmVzdWx0cyIsCiAgICAgICAgICAgICBncmFwaDogIkdyYXBoIiwK
QEAgLTMxLDI1ICsyNSwyNSBAQCB2YXIgU3RyaW5ncyA9IHsKICAgICBqc29uOiB7CiAgICAgICAg
IHNjb3JlOiAic2NvcmUiLAogICAgICAgICBzYW1wbGVzOiAic2FtcGxlcyIsCi0gICAgICAgIAor
CiAgICAgICAgIGV4cGVyaW1lbnRzOiB7CiAgICAgICAgICAgICBjb21wbGV4aXR5OiAiY29tcGxl
eGl0eSIsCiAgICAgICAgICAgICBmcmFtZVJhdGU6ICJmcmFtZVJhdGUiCiAgICAgICAgIH0sCi0g
ICAgICAgIAorCiAgICAgICAgIG1lYXN1cmVtZW50czogewogICAgICAgICAgICAgYXZlcmFnZTog
ImF2ZXJhZ2UiLAogICAgICAgICAgICAgY29uY2VybjogImNvbmNlcm4iLAogICAgICAgICAgICAg
c3RkZXY6ICJzdGRldiIsCiAgICAgICAgICAgICBwZXJjZW50OiAicGVyY2VudCIKICAgICAgICAg
fSwKLSAgICAgICAgCisKICAgICAgICAgcmVzdWx0czogewogICAgICAgICAgICAgaXRlcmF0aW9u
czogIml0ZXJhdGlvbnNSZXN1bHRzIiwKICAgICAgICAgICAgIHN1aXRlczogInN1aXRlc1Jlc3Vs
dHMiLAogICAgICAgICAgICAgdGVzdHM6ICJ0ZXN0c1Jlc3VsdHMiCiAgICAgICAgIH0sCi0gICAg
ICAgIAorCiAgICAgICAgIGdyYXBoOiB7CiAgICAgICAgICAgICBwb2ludHM6ICJwb2ludHMiLAog
ICAgICAgICAgICAgc2FtcGxpbmdUaW1lT2Zmc2V0OiAic2FtcGxpbmdUaW1lT2Zmc2V0IgpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRt
bAppbmRleCBhZDgwNmRiZGM4YjQyMzlmMmFjOWFiNmY2ZWEyMjRhOTU5YzQ4ZGQ1Li42MDA0ODVm
YWFkYzY1NjkxN2Y3YzgxODQzYzU0OGUyOGUwNzhlYmQ3IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZh
cy1pbWFnZXMuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbApAQCAtMSwyNyArMSwy
NiBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgog
ICAgIDxzdHlsZT4KICAgICAgICAgaW1nLmhpZGRlbiB7CiAgICAgICAgICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CiAgICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgIH0KICAg
ICA8L3N0eWxlPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhy
ZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGltZyBj
bGFzcz0iaGlkZGVuIiBzcmM9Ii4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciPgorICAgIDxpbWcg
Y2xhc3M9ImhpZGRlbiIgc3JjPSIuLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIj4KKyAgICA8Y2Fu
dmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvc3RyaW5ncy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
bWF0aC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3Nj
cmlwdD4gIAogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1w
YXJ0aWNsZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNp
bmctY2FudmFzLWltYWdlcy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8aW1n
IGNsYXNzPSJoaWRkZW4iIHNyYz0iLi4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI+Ci0gICAgPGlt
ZyBjbGFzcz0iaGlkZGVuIiBzcmM9Ii4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciPgotICAgIDxj
YW52YXMgaWQ9InN0YWdlIj48L2NhbnZhcz4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91
bmNpbmctY2FudmFzLXNoYXBlcy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWwKaW5kZXgg
ZDFkN2MwNjc4M2RhNGFlYThkY2E4MTkwY2RhMWQxYjIxNjg0NWMyNS4uMTcwZWRmODc2ZTk0ZTk0
ODk0MDQ4YzYxZDU2Y2UyODVmMDRiN2RjMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVz
Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWwKQEAgLTIsMTggKzIsMTcgQEAKIDxo
dG1sPgogPGhlYWQ+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIg
aHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8Y2Fu
dmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvc3RyaW5ncy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
bWF0aC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3Nj
cmlwdD4gIAogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1w
YXJ0aWNsZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNp
bmctY2FudmFzLXNoYXBlcy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8Y2Fu
dmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5j
aW5nLWNzcy1pbWFnZXMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sCmluZGV4IDk2MWJjZmM5
MWExYjllMzMxNDQ4NTllMTg5YzllMmJiMTQ2YzQwNWQuLmIzYTdiZGFiMzVhZjVjNDY1MTA1NThi
MGY0YmYyNmU3MWQ5MGNjYjMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91
bmNpbmctY3NzLWltYWdlcy5odG1sCkBAIC0xLDIzICsxLDIyIEBACiA8IURPQ1RZUEUgaHRtbD4K
IDxodG1sPgogPGhlYWQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2Nz
cyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CiAgICAgPHN0eWxlPgogICAgICAgICBp
bWcgewogICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICB9CiAgICAgPC9z
dHlsZT4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIu
Li9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9InN0
YWdlIj48L2Rpdj4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdHJpbmdzLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCiAgICAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbCBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNo
YXBlcy5odG1sCmluZGV4IDRlYWIxYzJhZWJkZmJlNThhZTA2NTZiMzUyMGE4ODVkY2FjODllMTgu
LjM5YTQyOGMxZjBkMWEzNmZmYmUwMjAzNzQwM2QyMDUyYWUzMzNjMDggMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctY3NzLXNoYXBlcy5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sCkBAIC0xLDYgKzEs
NyBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgog
ICAgIDxzdHlsZT4KICAgICAgICAgLmNpcmNsZSB7CiAgICAgICAgICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CkBAIC0xMywyMiArMTQsMjAgQEAKICAgICAgICAgfQogICAgICAgICAuc3RhciB7CiAg
ICAgICAgICAgICAtd2Via2l0LWNsaXAtcGF0aDogcG9seWdvbig1MCUgMCUsIDM4JSAzOCUsIDAl
IDM4JSwgMzAlIDYwJSwgMTglIDEwMCUsIDUwJSA3NSUsIDgyJSAxMDAlLCA3MCUgNjAlLCAxMDAl
IDM4JSwgNjIlIDM4JSk7Ci0gICAgICAgICAgICAtbXMtY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAw
JSwgMzglIDM4JSwgMCUgMzglLCAzMCUgNjAlLCAxOCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUs
IDcwJSA2MCUsIDEwMCUgMzglLCA2MiUgMzglKTsgIAorICAgICAgICAgICAgLW1zLWNsaXAtcGF0
aDogcG9seWdvbig1MCUgMCUsIDM4JSAzOCUsIDAlIDM4JSwgMzAlIDYwJSwgMTglIDEwMCUsIDUw
JSA3NSUsIDgyJSAxMDAlLCA3MCUgNjAlLCAxMDAlIDM4JSwgNjIlIDM4JSk7CiAgICAgICAgICAg
ICBjbGlwLXBhdGg6IHBvbHlnb24oNTAlIDAlLCAzOCUgMzglLCAwJSAzOCUsIDMwJSA2MCUsIDE4
JSAxMDAlLCA1MCUgNzUlLCA4MiUgMTAwJSwgNzAlIDYwJSwgMTAwJSAzOCUsIDYyJSAzOCUpOwog
ICAgICAgICB9CiAgICAgPC9zdHlsZT4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9
InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKzwvaGVhZD4KKzxib2R5
PgorICAgIDxkaXYgaWQ9InN0YWdlIj48L2Rpdj4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9zdHJpbmdzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21h
aW4uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMi
Pjwvc2NyaXB0PiAgCiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNs
ZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY3Nz
LXNoYXBlcy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8ZGl2IGlkPSJzdGFn
ZSI+PC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMu
aHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sCmluZGV4IDUyZGMxNTVmOTRjMzg0ZWIwMjkwYmU5
YTcxZjk0M2ZiMWJiN2M0OWEuLjIzZGE3MzVkYzNmYzNiMTU4ZjQ0YmU5YzU3YWU0YThkYzE3ZGFh
OGYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdl
cy5odG1sCkBAIC0yLDE4ICsyLDE3IEBACiA8aHRtbD4KIDxoZWFkPgogICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3Mi
PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3ZnPgogICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0cmluZ3MuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHk+Ci0gICAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3ZnPgogPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAppbmRl
eCBkNTc5YjcxZWNhM2ExNzBmOWQwYmE1Y2Y4YWZmNDE4ZTRmZjZiMmMzLi43ZDMyYjRlMDE2Y2U0
MzcwNWU4NDhiZDFkNzcyM2I1Y2E3N2FjNDEwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMu
aHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbApAQCAtMiwxOCArMiwxNyBAQAogPGh0bWw+
CiA8aGVhZD4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxzdmcgaWQ9
InN0YWdlIj48L3N2Zz4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRo
bS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdHJpbmdz
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9u
cy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCiAg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctc3ZnLXBhcnRpY2xlcy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVz
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotICAgIDxzdmcgaWQ9InN0YWdlIj48L3N2
Zz4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1p
bWFnZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCmluZGV4IDI4YTc4MTE1
NDk3YjEyZTk0ZjE5OGNjYzg3YTNjOWU3MjU4YzMzYWYuLmQxZWIxMTE2ODU4Zjc3MTkwZDBmZDc0
Yjk4ZGIyOWUxYTZjZGZkOGUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFn
ZXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcwpAQCAtMSw1MSArMSw0
NyBAQAotZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJbWFnZShzdGFnZSkKLXsKLSAgICBCb3VuY2lu
Z0NhbnZhc1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOwotICAgIHRoaXMuX2ltYWdlRWxlbWVu
dCA9IHN0YWdlLmltYWdlRWxlbWVudDsKLSAgICB0aGlzLl9zaGFwZSA9ICJpbWFnZSI7Ci19Ci0K
LUJvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlLnByb3RvdHlwZSk7Ci1Cb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2U7Ci0KLUJvdW5jaW5nQ2FudmFzSW1hZ2Uu
cHJvdG90eXBlLl9kcmF3ID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgp
OwotICAgICAgICB0aGlzLl9hcHBseVJvdGF0aW9uKCk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQu
ZHJhd0ltYWdlKHRoaXMuX2ltYWdlRWxlbWVudCwgMCwgMCwgdGhpcy5fc2l6ZS54LCB0aGlzLl9z
aXplLnkpOwotICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOwotfQotCi1mdW5jdGlvbiBCb3Vu
Y2luZ0NhbnZhc0ltYWdlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCi17Ci0gICAgQm91bmNpbmdD
YW52YXNQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOwotCi0gICAg
dmFyIGltYWdlU3JjID0gb3B0aW9uc1siaW1hZ2VTcmMiXSB8fCAicmVzb3VyY2VzL3lpbi15YW5n
LnN2ZyI7Ci0gICAgdGhpcy5pbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIu
aGlkZGVuW3NyYz1cIiIgKyBpbWFnZVNyYyArICJcIl0iKTsKLX0KLQotQm91bmNpbmdDYW52YXNJ
bWFnZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nQ2FudmFzUGFydGlj
bGVzU3RhZ2UucHJvdG90eXBlKTsKLUJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZTsKLQotQm91bmNpbmdDYW52
YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpCi17Ci0g
ICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlKHRoaXMpOwotfQotCi1mdW5jdGlvbiBC
b3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jl
c3NCYXIpCi17Ci0gICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlz
LCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotfQotCi1Cb3VuY2luZ0NhbnZh
c0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nQ2FudmFz
UGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7Ci1Cb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNo
bWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFy
azsKLQotQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdl
ID0gZnVuY3Rpb24oZWxlbWVudCkKLXsKLSAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzSW1h
Z2VzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Ci19Ci0KLXdpbmRvdy5iZW5jaG1hcmtD
bGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFy
KQotewotICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsoc3VpdGUs
IHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KKyhmdW5jdGlvbigpIHsKKworQm91bmNp
bmdDYW52YXNJbWFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlLAorICAgIGZ1bmN0aW9uKHN0YWdlKQorICAgIHsKKyAgICAgICAgQm91bmNpbmdDYW52
YXNQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlLCAiaW1hZ2UiKTsKKyAgICAgICAgdGhpcy5faW1h
Z2VFbGVtZW50ID0gc3RhZ2UuaW1hZ2VFbGVtZW50OworICAgIH0sIHsKKworICAgIF9kcmF3OiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmNvbnRleHQuc2F2ZSgpOworICAgICAgICAg
ICAgdGhpcy5hcHBseVJvdGF0aW9uKCk7CisgICAgICAgICAgICB0aGlzLmNvbnRleHQuZHJhd0lt
YWdlKHRoaXMuX2ltYWdlRWxlbWVudCwgMCwgMCwgdGhpcy5zaXplLngsIHRoaXMuc2l6ZS55KTsK
KyAgICAgICAgdGhpcy5jb250ZXh0LnJlc3RvcmUoKTsKKyAgICB9Cit9KTsKKworQm91bmNpbmdD
YW52YXNJbWFnZXNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ0NhbnZh
c1BhcnRpY2xlc1N0YWdlLAorICAgIGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIEJvdW5jaW5n
Q2FudmFzUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzKTsKKyAgICB9LCB7CisKKyAgICBpbml0aWFs
aXplOiBmdW5jdGlvbihiZW5jaG1hcmspCisgICAgeworICAgICAgICBCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlc1N0YWdlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgYmVuY2htYXJrKTsK
KyAgICAgICAgdmFyIGltYWdlU3JjID0gYmVuY2htYXJrLm9wdGlvbnNbImltYWdlU3JjIl0gfHwg
InJlc291cmNlcy95aW4teWFuZy5zdmciOworICAgICAgICB0aGlzLmltYWdlRWxlbWVudCA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5oaWRkZW5bc3JjPVwiIiArIGltYWdlU3JjICsgIlwiXSIp
OworICAgIH0sCisKKyAgICBjcmVhdGVQYXJ0aWNsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlKHRoaXMpOworICAgIH0KK30pOworCitC
b3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhC
ZW5jaG1hcmssCisgICAgZnVuY3Rpb24ob3B0aW9ucykKKyAgICB7CisgICAgICAgIEJlbmNobWFy
ay5jYWxsKHRoaXMsIG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlKCksIG9wdGlvbnMpOwor
ICAgIH0KKyk7CisKK3dpbmRvdy5iZW5jaG1hcmtDbGFzcyA9IEJvdW5jaW5nQ2FudmFzSW1hZ2Vz
QmVuY2htYXJrOworCit9KSgpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBh
cnRpY2xlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanMKaW5kZXggMGI0
MGRhMjY5NTI2ZjJkY2ZmZDVmMWY1NjIxYWZmNDdhMGJkN2I4Yi4uOWIxODk0NGQyMjVmNDExYmY2
ODFkZTZkZmFhMzFkODJjYmFlZDE3OSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFz
LXBhcnRpY2xlcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzCkBA
IC0xLDEwICsxLDU1IEBACi1mdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlKHN0YWdlKQot
ewotICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7Ci0gICAgdGhpcy5fY29u
dGV4dCA9IHN0YWdlLmNvbnRleHQ7Ci0gICAgdGhpcy5fc2hhcGUgPSAiIjsKLSAgICB0aGlzLl9j
bGlwID0gc3RhZ2UuY2xpcDsKLX0KK0JvdW5jaW5nQ2FudmFzUGFydGljbGUgPSBVdGlsaXRpZXMu
Y3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZSwKKyAgICBmdW5jdGlvbihzdGFnZSwgc2hh
cGUpCisgICAgeworICAgICAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOwor
ICAgICAgICB0aGlzLmNvbnRleHQgPSBzdGFnZS5jb250ZXh0OworICAgICAgICB0aGlzLl9zaGFw
ZSA9IHNoYXBlOworICAgICAgICB0aGlzLl9jbGlwID0gc3RhZ2UuY2xpcDsKKyAgICB9LCB7CisK
KyAgICBhcHBseVJvdGF0aW9uOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5f
c2hhcGUgPT0gImNpcmNsZSIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5j
b250ZXh0LnRyYW5zbGF0ZSh0aGlzLnNpemUueCAvIDIsIHRoaXMuc2l6ZS55IC8gMik7CisgICAg
ICAgIHRoaXMuY29udGV4dC5yb3RhdGUodGhpcy5yb3RhdGVyLmRlZ3JlZSgpICogTWF0aC5QSSAv
IDE4MCk7CisgICAgICAgIHRoaXMuY29udGV4dC50cmFuc2xhdGUoLXRoaXMuc2l6ZS54IC8gMiwg
LXRoaXMuc2l6ZS55IC8gMik7CisgICAgfSwKKworICAgIGFwcGx5Q2xpcHBpbmc6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHZhciBjbGlwUG9pbnRzID0gQm91bmNpbmdDYW52YXNQYXJ0aWNs
ZS5jbGlwc1t0aGlzLl9jbGlwXTsKKyAgICAgICAgaWYgKCFjbGlwUG9pbnRzKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAg
Y2xpcFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKHBvaW50LCBpbmRleCkgeworICAgICAgICAgICAg
dmFyIHBvaW50ID0gdGhpcy5zaXplLm11bHRpcGx5KHBvaW50KTsKKyAgICAgICAgICAgIGlmICgh
aW5kZXgpCisgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lm1vdmVUbyhwb2ludC54LCBwb2lu
dC55KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQubGlu
ZVRvKHBvaW50LngsIHBvaW50LnkpOworICAgICAgICB9LCB0aGlzKTsKKworICAgICAgICB0aGlz
LmNvbnRleHQuY2xvc2VQYXRoKCk7CisgICAgICAgIHRoaXMuY29udGV4dC5jbGlwKCk7CisgICAg
fSwKKworICAgIF9kcmF3OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aHJvdyAiTm90IGlt
cGxlbWVudGVkIjsKKyAgICB9LAorCisgICAgYW5pbWF0ZTogZnVuY3Rpb24odGltZURlbHRhKQor
ICAgIHsKKyAgICAgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRo
aXMsIHRpbWVEZWx0YSk7CisgICAgICAgIHRoaXMuY29udGV4dC5zYXZlKCk7CisgICAgICAgICAg
ICB0aGlzLmNvbnRleHQudHJhbnNsYXRlKHRoaXMucG9zaXRpb24ueCwgdGhpcy5wb3NpdGlvbi55
KTsKKyAgICAgICAgICAgIHRoaXMuX2RyYXcoKTsKKyAgICAgICAgdGhpcy5jb250ZXh0LnJlc3Rv
cmUoKTsKKyAgICB9Cit9KTsKIAogQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5jbGlwcyA9IHsKICAg
ICBzdGFyOiBbCkBAIC0xOCw4OCArNjMsMjYgQEAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5jbGlw
cyA9IHsKICAgICAgICAgbmV3IFBvaW50KDAuNzAsIDAuNjApLAogICAgICAgICBuZXcgUG9pbnQo
MS4wMCwgMC4zOCksCiAgICAgICAgIG5ldyBQb2ludCgwLjYyLCAwLjM4KQotICAgIF0sCisgICAg
XQogfTsKIAotQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKLUJvdW5jaW5nQ2FudmFzUGFydGljbGUucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNQYXJ0aWNsZTsKLQotQm91bmNpbmdD
YW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuX2FwcGx5Um90YXRpb24gPSBmdW5jdGlvbigpCi17Ci0g
ICAgaWYgKHRoaXMuX3NoYXBlID09ICJjaXJjbGUiKQotICAgICAgICByZXR1cm47Ci0KLSAgICB0
aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSh0aGlzLl9zaXplLnggLyAyLCB0aGlzLl9zaXplLnkgLyAy
KTsKLSAgICB0aGlzLl9jb250ZXh0LnJvdGF0ZSh0aGlzLl9yb3RhdGVyLmRlZ3JlZSgpICogTWF0
aC5QSSAvIDE4MCk7Ci0gICAgdGhpcy5fY29udGV4dC50cmFuc2xhdGUoLXRoaXMuX3NpemUueCAv
IDIsIC10aGlzLl9zaXplLnkgLyAyKTsKLX0KLQotQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90
b3R5cGUuX2FwcGx5Q2xpcHBpbmcgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGNsaXBQb2ludHMg
PSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLmNsaXBzW3RoaXMuX2NsaXBdOwotICAgIGlmICghY2xp
cFBvaW50cykKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICB0aGlzLl9jb250ZXh0LmJl
Z2luUGF0aCgpOwotICAgIGNsaXBQb2ludHMuZm9yRWFjaChmdW5jdGlvbihwb2ludCwgaW5kZXgp
IHsKLSAgICAgICAgdmFyIHBvaW50ID0gdGhpcy5fc2l6ZS5tdWx0aXBseShwb2ludCk7Ci0gICAg
ICAgIGlmICghaW5kZXgpCi0gICAgICAgICAgICB0aGlzLl9jb250ZXh0Lm1vdmVUbyhwb2ludC54
LCBwb2ludC55KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fY29udGV4dC5saW5l
VG8ocG9pbnQueCwgcG9pbnQueSk7Ci0gICAgfSwgdGhpcyk7Ci0KLSAgICB0aGlzLl9jb250ZXh0
LmNsb3NlUGF0aCgpOwotICAgIHRoaXMuX2NvbnRleHQuY2xpcCgpOwotfQotCi1Cb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlLnByb3RvdHlwZS5fZHJhdyA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0aHJvdyAi
Tm90IGltcGxlbWVudGVkIjsKLX0KLQotQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUu
YW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKLXsKLSAgICBCb3VuY2luZ1BhcnRpY2xlLnBy
b3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKLSAgICB0aGlzLl9jb250ZXh0
LnNhdmUoKTsKLSAgICAgICAgdGhpcy5fY29udGV4dC50cmFuc2xhdGUodGhpcy5fcG9zaXRpb24u
eCwgdGhpcy5fcG9zaXRpb24ueSk7Ci0gICAgICAgIHRoaXMuX2RyYXcoKTsKLSAgICB0aGlzLl9j
b250ZXh0LnJlc3RvcmUoKTsKLX0KLQotZnVuY3Rpb24gQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNT
dGFnZShlbGVtZW50LCBvcHRpb25zKQotewotICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2Fs
bCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKLSAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1l
bnQuZ2V0Q29udGV4dCgiMmQiKTsKLX0KLQotQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBl
KTsKLUJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
Qm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZTsKLQotZnVuY3Rpb24gQm91bmNpbmdDYW52YXNQ
YXJ0aWNsZXNBbmltYXRvcihiZW5jaG1hcmssIG9wdGlvbnMpCi17Ci0gICAgQm91bmNpbmdQYXJ0
aWNsZXNBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyaywgb3B0aW9ucyk7Ci0gICAgdGhpcy5f
Y29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsKLX0KLQotQm91bmNpbmdDYW52YXNQ
YXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGlj
bGVzQW5pbWF0b3IucHJvdG90eXBlKTsKLUJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0b3Iu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvcjsK
LQotQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1
bmN0aW9uKCkKLXsKLSAgICB0aGlzLl9jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl9iZW5j
aG1hcmsuX3N0YWdlLnNpemUueCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLnkpOwotICAg
IHJldHVybiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwo
dGhpcyk7Ci19Ci0KLWZ1bmN0aW9uIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrKHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKLXsKLSAgICBTdGFnZUJlbmNobWFyay5j
YWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci19Ci0KLUJvdW5j
aW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3Rh
Z2VCZW5jaG1hcmsucHJvdG90eXBlKTsKLUJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJr
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJr
OwotCi1Cb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5p
bWF0b3IgPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc1BhcnRp
Y2xlc0FuaW1hdG9yKHRoaXMsIHRoaXMuX29wdGlvbnMpOwotfQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKK0JvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRl
U3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSwKKyAgICBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcyk7CisgICAgfSwgeworCisg
ICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYmVuY2htYXJrKQorICAgIHsKKyAgICAgICAgQm91bmNp
bmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIGJlbmNobWFy
ayk7CisgICAgICAgIHRoaXMuY29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIp
OworICAgIH0sCisKKyAgICBhbmltYXRlOiBmdW5jdGlvbih0aW1lRGVsdGEpCisgICAgeworICAg
ICAgICB0aGlzLmNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuc2l6ZS54LCB0aGlzLnNpemUu
eSk7CisgICAgICAgIHRoaXMucGFydGljbGVzLmZvckVhY2goZnVuY3Rpb24ocGFydGljbGUpIHsK
KyAgICAgICAgICAgIHBhcnRpY2xlLmFuaW1hdGUodGltZURlbHRhKTsKKyAgICAgICAgfSk7Cisg
ICAgfQorfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNv
dXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qcwppbmRleCBiZTRhMWQ5Y2JiM2U1MWJhZTEz
NGViMTVjOTc4ODZhZTc0OWM3NmU3Li4xM2IxNzI3MTIzNTlkOWM1YTgzYWJiZTI1YTE4NDgzMmQz
OGY2MjZkIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVz
b3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMKQEAgLTEsOTAgKzEsODcgQEAKLWZ1bmN0
aW9uIEJvdW5jaW5nQ2FudmFzU2hhcGUoc3RhZ2UpCi17Ci0gICAgQm91bmNpbmdDYW52YXNQYXJ0
aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKLSAgICB0aGlzLl9maWxsID0gc3RhZ2UuZmlsbDsKLSAg
ICB0aGlzLl9zaGFwZSA9IHN0YWdlLnNoYXBlOwotICAgIHRoaXMuX2NvbG9yMCA9IHN0YWdlLnJh
bmRvbUNvbG9yKCk7Ci0gICAgdGhpcy5fY29sb3IxID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsgICAg
Ci19CisoZnVuY3Rpb24oKSB7CiAKLUJvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZSk7Ci1Cb3VuY2luZ0Nh
bnZhc1NoYXBlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hhcGU7CitC
b3VuY2luZ0NhbnZhc1NoYXBlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJvdW5jaW5nQ2Fu
dmFzUGFydGljbGUsCisgICAgZnVuY3Rpb24oc3RhZ2UpCisgICAgeworICAgICAgICBCb3VuY2lu
Z0NhbnZhc1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UsIHN0YWdlLnNoYXBlKTsKKyAgICAgICAg
dGhpcy5fZmlsbCA9IHN0YWdlLmZpbGw7CisgICAgICAgIHRoaXMuX2NvbG9yMCA9IHN0YWdlLnJh
bmRvbUNvbG9yKCk7CisgICAgICAgIHRoaXMuX2NvbG9yMSA9IHN0YWdlLnJhbmRvbUNvbG9yKCk7
CisgICAgfSwgewogCi1Cb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fYXBwbHlGaWxsID0g
ZnVuY3Rpb24oKQotewotICAgIHN3aXRjaCAodGhpcy5fZmlsbCkgewotICAgIGNhc2UgImdyYWRp
ZW50IjoKLSAgICAgICAgdmFyIGdyYWRpZW50ID0gdGhpcy5fY29udGV4dC5jcmVhdGVMaW5lYXJH
cmFkaWVudCgwLCAwLCB0aGlzLl9zaXplLndpZHRoLCAwKTsKLSAgICAgICAgZ3JhZGllbnQuYWRk
Q29sb3JTdG9wKDAsIHRoaXMuX2NvbG9yMCk7Ci0gICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3Rv
cCgxLCB0aGlzLl9jb2xvcjEpOyAKLSAgICAgICAgdGhpcy5fY29udGV4dC5maWxsU3R5bGUgPSBn
cmFkaWVudDsKLSAgICAgICAgYnJlYWs7Ci0gICAgCi0gICAgY2FzZSAic29saWQiOgotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxlID0gdGhpcy5fY29sb3IwOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci19CisgICAgX2FwcGx5RmlsbDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgc3dpdGNoICh0aGlzLl9maWxsKSB7CisgICAgICAgIGNhc2UgImdyYWRpZW50
IjoKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IHRoaXMuY29udGV4dC5jcmVhdGVMaW5lYXJH
cmFkaWVudCgwLCAwLCB0aGlzLnNpemUud2lkdGgsIDApOworICAgICAgICAgICAgZ3JhZGllbnQu
YWRkQ29sb3JTdG9wKDAsIHRoaXMuX2NvbG9yMCk7CisgICAgICAgICAgICBncmFkaWVudC5hZGRD
b2xvclN0b3AoMSwgdGhpcy5fY29sb3IxKTsKKyAgICAgICAgICAgIHRoaXMuY29udGV4dC5maWxs
U3R5bGUgPSBncmFkaWVudDsKKyAgICAgICAgICAgIGJyZWFrOwogCi1Cb3VuY2luZ0NhbnZhc1No
YXBlLnByb3RvdHlwZS5fZHJhd1NoYXBlID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX2NvbnRl
eHQuYmVnaW5QYXRoKCk7CisgICAgICAgIGNhc2UgInNvbGlkIjoKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHRoaXMuY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLl9jb2xvcjA7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0sCiAKLSAgICBzd2l0Y2ggKHRoaXMuX3No
YXBlKSB7Ci0gICAgY2FzZSAicmVjdCI6Ci0gICAgICAgIHRoaXMuX2NvbnRleHQucmVjdCgwLCAw
LCB0aGlzLl9zaXplLndpZHRoLCB0aGlzLl9zaXplLmhlaWdodCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIAotICAgIGNhc2UgImNpcmNsZSI6Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgdmFyIGNlbnRl
ciA9IHRoaXMuX3NpemUuY2VudGVyOwotICAgICAgICB2YXIgcmFkaXVzID0gTWF0aC5taW4odGhp
cy5fc2l6ZS54LCB0aGlzLl9zaXplLnkpIC8gMjsKLSAgICAgICAgdGhpcy5fY29udGV4dC5hcmMo
Y2VudGVyLngsIGNlbnRlci55LCByYWRpdXMsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQorICAgIF9kcmF3U2hhcGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuY29udGV4dC5iZWdpblBhdGgoKTsKKworICAgICAgICBzd2l0Y2ggKHRoaXMuX3No
YXBlKSB7CisgICAgICAgIGNhc2UgInJlY3QiOgorICAgICAgICAgICAgdGhpcy5jb250ZXh0LnJl
Y3QoMCwgMCwgdGhpcy5zaXplLndpZHRoLCB0aGlzLnNpemUuaGVpZ2h0KTsKKyAgICAgICAgICAg
IGJyZWFrOwogCi0gICAgdGhpcy5fY29udGV4dC5maWxsKCk7Ci19CisgICAgICAgIGNhc2UgImNp
cmNsZSI6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB2YXIgY2VudGVyID0gdGhpcy5z
aXplLmNlbnRlcjsKKyAgICAgICAgICAgIHZhciByYWRpdXMgPSBNYXRoLm1pbih0aGlzLnNpemUu
eCwgdGhpcy5zaXplLnkpIC8gMjsKKyAgICAgICAgICAgIHRoaXMuY29udGV4dC5hcmMoY2VudGVy
LngsIGNlbnRlci55LCByYWRpdXMsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAKLUJvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLl9kcmF3
ID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOwotICAgICAgICB0aGlz
Ll9hcHBseUZpbGwoKTsKLSAgICAgICAgdGhpcy5fYXBwbHlSb3RhdGlvbigpOwotICAgICAgICB0
aGlzLl9hcHBseUNsaXBwaW5nKCk7Ci0gICAgICAgIHRoaXMuX2RyYXdTaGFwZSgpOwotICAgIHRo
aXMuX2NvbnRleHQucmVzdG9yZSgpOwotfQorICAgICAgICB0aGlzLmNvbnRleHQuZmlsbCgpOwor
ICAgIH0sCiAKLWZ1bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UoZWxlbWVudCwgb3B0
aW9ucykKLXsKLSAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxl
bWVudCwgb3B0aW9ucyk7Ci0gICAgdGhpcy5wYXJzZVNoYXBlUGFyYW10ZXJzKG9wdGlvbnMpOwot
fQorICAgIF9kcmF3OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmNvbnRleHQuc2F2
ZSgpOworICAgICAgICAgICAgdGhpcy5fYXBwbHlGaWxsKCk7CisgICAgICAgICAgICB0aGlzLmFw
cGx5Um90YXRpb24oKTsKKyAgICAgICAgICAgIHRoaXMuYXBwbHlDbGlwcGluZygpOworICAgICAg
ICAgICAgdGhpcy5fZHJhd1NoYXBlKCk7CisgICAgICAgIHRoaXMuY29udGV4dC5yZXN0b3JlKCk7
CisgICAgfQorfSk7CiAKLUJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7Ci1Cb3Vu
Y2luZ0NhbnZhc1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2Fu
dmFzU2hhcGVzU3RhZ2U7CitCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlID0gVXRpbGl0aWVzLmNy
ZWF0ZVN1YmNsYXNzKEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UsCisgICAgZnVuY3Rpb24g
KCkKKyAgICB7CisgICAgICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlz
KTsKKyAgICB9LCB7CiAKLUJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0
ZVBhcnRpY2xlID0gZnVuY3Rpb24oKQotewotICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNT
aGFwZSh0aGlzKTsKLX0KKyAgICBpbml0aWFsaXplOiBmdW5jdGlvbihiZW5jaG1hcmspCisgICAg
eworICAgICAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5pbml0aWFs
aXplLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAgICAgICAgdGhpcy5wYXJzZVNoYXBlUGFyYW1l
dGVycyhiZW5jaG1hcmsub3B0aW9ucyk7CisgICAgfSwKIAotZnVuY3Rpb24gQm91bmNpbmdDYW52
YXNTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQotewot
ICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KKyAgICBjcmVhdGVQYXJ0aWNsZTogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc1NoYXBlKHRoaXMp
OworICAgIH0KK30pOwogCi1Cb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlw
ZSk7Ci1Cb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyazsKK0JvdW5jaW5nQ2FudmFzU2hhcGVzQmVu
Y2htYXJrID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJlbmNobWFyaywKKyAgICBmdW5jdGlv
bihvcHRpb25zKQorICAgIHsKKyAgICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgbmV3IEJvdW5j
aW5nQ2FudmFzU2hhcGVzU3RhZ2UoKSwgb3B0aW9ucyk7CisgICAgfQorKTsKIAotQm91bmNpbmdD
YW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxl
bWVudCkKLXsKLSAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UoZWxlbWVu
dCwgdGhpcy5fb3B0aW9ucyk7Ci19Cit3aW5kb3cuYmVuY2htYXJrQ2xhc3MgPSBCb3VuY2luZ0Nh
bnZhc1NoYXBlc0JlbmNobWFyazsKIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBm
dW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCi17Ci0gICAgcmV0dXJu
IG5ldyBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cHJvZ3Jlc3NCYXIpOwotfQorfSkoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3Nz
LWltYWdlcy5qcwppbmRleCAwZDNhZTI0MTI1YzgwOGFjMTY5NzU4YjJlZjExZTFlN2I2Nzg2M2Y0
Li40ZDAwNmMzOTMzMzNmNzFkYzFiNGZhYTY1NGE0YWVkZTc3OTg2N2UwIDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFn
ZXMuanMKQEAgLTEsNjMgKzEsNjEgQEAKLWZ1bmN0aW9uIEJvdW5jaW5nQ3NzSW1hZ2Uoc3RhZ2Up
Ci17Ci0gICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKLQotICAgIHRoaXMu
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwotICAgIHRoaXMuZWxlbWVu
dC5zdHlsZS53aWR0aCA9IHRoaXMuX3NpemUueCArICJweCI7Ci0gICAgdGhpcy5lbGVtZW50LnN0
eWxlLmhlaWdodCA9IHRoaXMuX3NpemUueSArICJweCI7Ci0gICAgdGhpcy5lbGVtZW50LnNldEF0
dHJpYnV0ZSgic3JjIiwgc3RhZ2UuaW1hZ2VTcmMpOwotICAgIAotICAgIHN0YWdlLmVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTsKLSAgICB0aGlzLl9tb3ZlKCk7Ci19Ci0KLUJvdW5j
aW5nQ3NzSW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlLnBy
b3RvdHlwZSk7Ci1Cb3VuY2luZ0Nzc0ltYWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5j
aW5nQ3NzSW1hZ2U7Ci0KLUJvdW5jaW5nQ3NzSW1hZ2UucHJvdG90eXBlLl9tb3ZlID0gZnVuY3Rp
b24oKQotewotICAgIHRoaXMuZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRlKCIg
KyB0aGlzLl9wb3NpdGlvbi54ICsgInB4LCIgKyB0aGlzLl9wb3NpdGlvbi55ICsgInB4KSAiICsg
dGhpcy5fcm90YXRlci5yb3RhdGVaKCk7Ci19Ci0gICAgCi1Cb3VuY2luZ0Nzc0ltYWdlLnByb3Rv
dHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQotewotICAgIEJvdW5jaW5nUGFydGlj
bGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOwotICAgIHRoaXMuX21v
dmUoKTsKLX0KLQotZnVuY3Rpb24gQm91bmNpbmdDc3NJbWFnZXNTdGFnZShlbGVtZW50LCBvcHRp
b25zKQotewotICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBv
cHRpb25zKTsKLSAgICB0aGlzLmltYWdlU3JjID0gb3B0aW9uc1siaW1hZ2VTcmMiXSB8fCAiLi4v
cmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7Ci19Ci0KLUJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7
Ci1Cb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5n
Q3NzSW1hZ2VzU3RhZ2U7Ci0KLUJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0
ZVBhcnRpY2xlID0gZnVuY3Rpb24oKQotewotICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NJbWFn
ZSh0aGlzKTsKLX0KLQotQm91bmNpbmdDc3NJbWFnZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVX
aWxsQmVSZW1vdmVkID0gZnVuY3Rpb24ocGFydGljbGUpCi17Ci0gICAgcGFydGljbGUuZWxlbWVu
dC5yZW1vdmUoKTsKLX0KLQotZnVuY3Rpb24gQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsoc3Vp
dGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQotewotICAgIEJvdW5jaW5nUGFydGljbGVz
QmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsK
LX0KLQotQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOwotQm91bmNpbmdDc3NJbWFn
ZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDc3NJbWFnZXNCZW5j
aG1hcms7Ci0KLUJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFn
ZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCi17Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc0ltYWdl
c1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwotfQotCi13aW5kb3cuYmVuY2htYXJrQ2xp
ZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikK
LXsKLSAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci19CisoZnVuY3Rpb24oKSB7CisKK0JvdW5jaW5nQ3Nz
SW1hZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZSwKKyAgICBm
dW5jdGlvbihzdGFnZSkKKyAgICB7CisgICAgICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlz
LCBzdGFnZSk7CisKKyAgICAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaW1nIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuc2l6ZS54
ICsgInB4IjsKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuc2l6ZS55
ICsgInB4IjsKKyAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgic3JjIiwgc3RhZ2Uu
aW1hZ2VTcmMpOworCisgICAgICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVt
ZW50KTsKKyAgICAgICAgdGhpcy5fbW92ZSgpOworICAgIH0sIHsKKworICAgIF9tb3ZlOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gInRy
YW5zbGF0ZSgiICsgdGhpcy5wb3NpdGlvbi54ICsgInB4LCIgKyB0aGlzLnBvc2l0aW9uLnkgKyAi
cHgpICIgKyB0aGlzLnJvdGF0ZXIucm90YXRlWigpOworICAgIH0sCisKKyAgICBhbmltYXRlOiBm
dW5jdGlvbih0aW1lRGVsdGEpCisgICAgeworICAgICAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3Rv
dHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICAgICAgdGhpcy5fbW92ZSgp
OworICAgIH0KK30pOworCitCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlID0gVXRpbGl0aWVzLmNyZWF0
ZVN1YmNsYXNzKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UsCisgICAgZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMpOworICAgIH0sIHsKKwor
ICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykKKyAgICB7CisgICAgICAgIEJvdW5j
aW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBiZW5jaG1h
cmspOworICAgICAgICB0aGlzLmltYWdlU3JjID0gYmVuY2htYXJrLm9wdGlvbnNbImltYWdlU3Jj
Il0gfHwgIi4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciOworICAgIH0sCisKKyAgICBjcmVhdGVQ
YXJ0aWNsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nz
c0ltYWdlKHRoaXMpOworICAgIH0sCisKKyAgICBwYXJ0aWNsZVdpbGxCZVJlbW92ZWQ6IGZ1bmN0
aW9uKHBhcnRpY2xlKQorICAgIHsKKyAgICAgICAgcGFydGljbGUuZWxlbWVudC5yZW1vdmUoKTsK
KyAgICB9Cit9KTsKKworQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3Jl
YXRlU3ViY2xhc3MoQmVuY2htYXJrLAorICAgIGZ1bmN0aW9uKG9wdGlvbnMpCisgICAgeworICAg
ICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBuZXcgQm91bmNpbmdDc3NJbWFnZXNTdGFnZSgpLCBv
cHRpb25zKTsKKyAgICB9CispOworCit3aW5kb3cuYmVuY2htYXJrQ2xhc3MgPSBCb3VuY2luZ0Nz
c0ltYWdlc0JlbmNobWFyazsKKworfSkoKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNz
cy1zaGFwZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmpzCmluZGV4IDZmOTQzMzU1
NWE5Nzk2NmE3MmUwZGI1YzNhY2Q5ZGU2MmFiNDQ5NTUuLjE0MWUyODI0MjEwNjc3Yjk3MzRiZDQ2
NGNmNjFjMDhiZTg4MThlMTYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMu
anMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qcwpAQCAtMSw4MSArMSw3OSBAQAot
ZnVuY3Rpb24gQm91bmNpbmdDc3NTaGFwZShzdGFnZSkKLXsKLSAgICBCb3VuY2luZ1BhcnRpY2xl
LmNhbGwodGhpcywgc3RhZ2UpOworKGZ1bmN0aW9uKCkgewogCi0gICAgdGhpcy5lbGVtZW50ID0g
dGhpcy5fY3JlYXRlU3BhbihzdGFnZSk7Ci0gICAgICAgIAotICAgIHN3aXRjaCAoc3RhZ2UuZmls
bCkgewotICAgIGNhc2UgInNvbGlkIjoKLSAgICBkZWZhdWx0OgotICAgICAgICB0aGlzLmVsZW1l
bnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgICAgIAotICAgIGNhc2UgImdyYWRpZW50IjoKLSAgICAgICAgdGhpcy5lbGVt
ZW50LnN0eWxlLmJhY2tncm91bmQgPSAibGluZWFyLWdyYWRpZW50KCIgKyBzdGFnZS5yYW5kb21D
b2xvcigpICsgIiwgIiArIHN0YWdlLnJhbmRvbUNvbG9yKCkgKyAiKSI7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KK0JvdW5jaW5nQ3NzU2hhcGUgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91
bmNpbmdQYXJ0aWNsZSwKKyAgICBmdW5jdGlvbihzdGFnZSkKKyAgICB7CisgICAgICAgIEJvdW5j
aW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisKKyAgICAgICAgdGhpcy5lbGVtZW50ID0g
dGhpcy5fY3JlYXRlU3BhbihzdGFnZSk7CisKKyAgICAgICAgc3dpdGNoIChzdGFnZS5maWxsKSB7
CisgICAgICAgIGNhc2UgInNvbGlkIjoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBzdGFnZS5yYW5kb21Db2xvcigpOwor
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICB0aGlzLl9tb3ZlKCk7Ci19CisgICAgICAgIGNhc2Ug
ImdyYWRpZW50IjoKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kID0g
ImxpbmVhci1ncmFkaWVudCgiICsgc3RhZ2UucmFuZG9tQ29sb3IoKSArICIsICIgKyBzdGFnZS5y
YW5kb21Db2xvcigpICsgIikiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAotQm91
bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUu
cHJvdG90eXBlKTsKLUJvdW5jaW5nQ3NzU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91
bmNpbmdDc3NTaGFwZTsKKyAgICAgICAgdGhpcy5fbW92ZSgpOworICAgIH0sIHsKIAotQm91bmNp
bmdDc3NTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNwYW4gPSBmdW5jdGlvbihzdGFnZSkKLXsKLSAg
ICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICBzcGFuLmNs
YXNzTmFtZSA9IHN0YWdlLnNoYXBlICsgIiAiICsgc3RhZ2UuY2xpcDsKLSAgICBzcGFuLnN0eWxl
LndpZHRoID0gdGhpcy5fc2l6ZS54ICsgInB4IjsKLSAgICBzcGFuLnN0eWxlLmhlaWdodCA9IHRo
aXMuX3NpemUueSArICJweCI7Ci0gICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZChzcGFuKTsK
LSAgICByZXR1cm4gc3BhbjsKLX0KKyAgICBfY3JlYXRlU3BhbjogZnVuY3Rpb24oc3RhZ2UpCisg
ICAgeworICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
KyAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSBzdGFnZS5zaGFwZSArICIgIiArIHN0YWdlLmNsaXA7
CisgICAgICAgIHNwYW4uc3R5bGUud2lkdGggPSB0aGlzLnNpemUueCArICJweCI7CisgICAgICAg
IHNwYW4uc3R5bGUuaGVpZ2h0ID0gdGhpcy5zaXplLnkgKyAicHgiOworICAgICAgICBzdGFnZS5l
bGVtZW50LmFwcGVuZENoaWxkKHNwYW4pOworICAgICAgICByZXR1cm4gc3BhbjsKKyAgICB9LAog
Ci1Cb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0
aGlzLmVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgdGhpcy5fcG9zaXRp
b24ueCArICJweCwiICsgdGhpcy5fcG9zaXRpb24ueSArICJweCkiICsgdGhpcy5fcm90YXRlci5y
b3RhdGVaKCk7Ci19Ci0gICAgCi1Cb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlwZS5hbmltYXRlID0g
ZnVuY3Rpb24odGltZURlbHRhKQotewotICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFu
aW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOwotICAgIHRoaXMuX3JvdGF0ZXIubmV4dCh0aW1l
RGVsdGEpOwotICAgIHRoaXMuX21vdmUoKTsKLX0KKyAgICBfbW92ZTogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiAr
IHRoaXMucG9zaXRpb24ueCArICJweCwiICsgdGhpcy5wb3NpdGlvbi55ICsgInB4KSIgKyB0aGlz
LnJvdGF0ZXIucm90YXRlWigpOworICAgIH0sCiAKLWZ1bmN0aW9uIEJvdW5jaW5nQ3NzU2hhcGVz
U3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKLXsKLSAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNh
bGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Ci0gICAgdGhpcy5wYXJzZVNoYXBlUGFyYW10ZXJz
KG9wdGlvbnMpOwotfQorICAgIGFuaW1hdGU6IGZ1bmN0aW9uKHRpbWVEZWx0YSkKKyAgICB7Cisg
ICAgICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1l
RGVsdGEpOworICAgICAgICB0aGlzLnJvdGF0ZXIubmV4dCh0aW1lRGVsdGEpOworICAgICAgICB0
aGlzLl9tb3ZlKCk7CisgICAgfQorfSk7CiAKLUJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7Ci1C
b3VuY2luZ0Nzc1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ3Nz
U2hhcGVzU3RhZ2U7CitCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1
YmNsYXNzKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UsCisgICAgZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMpOworICAgIH0sIHsKIAotQm91
bmNpbmdDc3NTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigp
Ci17Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc1NoYXBlKHRoaXMpOwotfQorICAgIGluaXRp
YWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykKKyAgICB7CisgICAgICAgIEJvdW5jaW5nUGFydGlj
bGVzU3RhZ2UucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworICAg
ICAgICB0aGlzLnBhcnNlU2hhcGVQYXJhbWV0ZXJzKGJlbmNobWFyay5vcHRpb25zKTsKKyAgICB9
LAogCi1Cb3VuY2luZ0Nzc1NoYXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92
ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkKLXsKLSAgICBwYXJ0aWNsZS5lbGVtZW50LnJlbW92ZSgp
OwotfQorICAgIGNyZWF0ZVBhcnRpY2xlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gbmV3IEJvdW5jaW5nQ3NzU2hhcGUodGhpcyk7CisgICAgfSwKIAotZnVuY3Rpb24gQm91bmNp
bmdDc3NTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQot
ewotICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KKyAgICBwYXJ0aWNsZVdpbGxCZVJlbW92ZWQ6IGZ1
bmN0aW9uKHBhcnRpY2xlKQorICAgIHsKKyAgICAgICAgcGFydGljbGUuZWxlbWVudC5yZW1vdmUo
KTsKKyAgICB9Cit9KTsKIAotQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOwotQm91
bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdD
c3NTaGFwZXNCZW5jaG1hcms7CitCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyayA9IFV0aWxpdGll
cy5jcmVhdGVTdWJjbGFzcyhCZW5jaG1hcmssCisgICAgZnVuY3Rpb24ob3B0aW9ucykKKyAgICB7
CisgICAgICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIG5ldyBCb3VuY2luZ0Nzc1NoYXBlc1N0YWdl
KCksIG9wdGlvbnMpOworICAgIH0KKyk7CiAKLUJvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrLnBy
b3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCi17Ci0gICAgcmV0dXJuIG5l
dyBCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwotfQord2lu
ZG93LmJlbmNobWFya0NsYXNzID0gQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcms7CiAKLXdpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHByb2dyZXNzQmFyKQotewotICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1h
cmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KK30pKCk7CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNs
ZXMuanMKaW5kZXggYTBmN2JmZDBiZDUzZmMxNWM4ZTBmNTFmOTliZGY5MTZlYzI1ODhmNi4uNTBl
NjVjYzE4MDY1NjgxZmQwZTFlMGZmOWJkM2IzMWRiNWM5MWU1NiAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMv
Ym91bmNpbmctcGFydGljbGVzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcwpA
QCAtMSwyOCArMSwyOCBAQAogZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZShzdGFnZSkKIHsKICAg
ICB0aGlzLl9zdGFnZVNpemUgPSBzdGFnZS5zaXplOwotICAgIHRoaXMuX3NpemUgPSBzdGFnZS5w
YXJ0aWNsZVNpemU7Ci0gICAgCi0gICAgdGhpcy5fcG9zaXRpb24gPSBzdGFnZS5yYW5kb21Qb3Np
dGlvbihzdGFnZS5zaXplLnN1YnRyYWN0KHN0YWdlLnBhcnRpY2xlU2l6ZSkpOworICAgIHRoaXMu
c2l6ZSA9IHN0YWdlLnBhcnRpY2xlU2l6ZTsKKworICAgIHRoaXMucG9zaXRpb24gPSBzdGFnZS5y
YW5kb21Qb3NpdGlvbihzdGFnZS5zaXplLnN1YnRyYWN0KHN0YWdlLnBhcnRpY2xlU2l6ZSkpOwog
ICAgIHRoaXMuX2FuZ2xlID0gc3RhZ2UucmFuZG9tQW5nbGUoKTsKICAgICB0aGlzLl92ZWxvY2l0
eSA9IHN0YWdlLnJhbmRvbVZlbG9jaXR5KHN0YWdlLm1heFZlbG9jaXR5KTsKLSAgICB0aGlzLl9y
b3RhdGVyID0gc3RhZ2UucmFuZG9tUm90YXRlcigpOworICAgIHRoaXMucm90YXRlciA9IHN0YWdl
LnJhbmRvbVJvdGF0ZXIoKTsKIH0KIAogQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUgPQogewog
ICAgIGdldCBjZW50ZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uLmFk
ZCh0aGlzLl9zaXplLmNlbnRlcik7CisgICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uLmFkZCh0
aGlzLnNpemUuY2VudGVyKTsKICAgICB9LAotICAgIAorCiAgICAgYW5pbWF0ZTogZnVuY3Rpb24o
dGltZURlbHRhKQogICAgIHsKLSAgICAgICAgdGhpcy5fcG9zaXRpb24gPSB0aGlzLl9wb3NpdGlv
bi5tb3ZlKHRoaXMuX2FuZ2xlLCB0aGlzLl92ZWxvY2l0eSwgdGltZURlbHRhKTsKLSAgICAgICAg
dGhpcy5fcm90YXRlci5uZXh0KHRpbWVEZWx0YSk7CisgICAgICAgIHRoaXMucG9zaXRpb24gPSB0
aGlzLnBvc2l0aW9uLm1vdmUodGhpcy5fYW5nbGUsIHRoaXMuX3ZlbG9jaXR5LCB0aW1lRGVsdGEp
OworICAgICAgICB0aGlzLnJvdGF0ZXIubmV4dCh0aW1lRGVsdGEpOwogCiAgICAgICAgIC8vIElm
IHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2ZmIHJpZ2h0IHNpZGUKLSAgICAgICAgaWYgKHRo
aXMuX3Bvc2l0aW9uLnggKyB0aGlzLl9zaXplLnggPiB0aGlzLl9zdGFnZVNpemUueCkgeworICAg
ICAgICBpZiAodGhpcy5wb3NpdGlvbi54ICsgdGhpcy5zaXplLnggPiB0aGlzLl9zdGFnZVNpemUu
eCkgewogICAgICAgICAgICAgLy8gSWYgZGlyZWN0aW9uIGlzIEVhc3QtU291dGgsIGdvIFdlc3Qt
U291dGguCiAgICAgICAgICAgICBpZiAodGhpcy5fYW5nbGUgPj0gMCAmJiB0aGlzLl9hbmdsZSA8
IE1hdGguUEkgLyAyKQogICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gTWF0aC5QSSAtIHRo
aXMuX2FuZ2xlOwpAQCAtMzAsMTEgKzMwLDExIEBAIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBl
ID0KICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAvIDIgKiAzKQog
ICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgLSAodGhpcy5fYW5nbGUg
LSBNYXRoLlBJIC8gMiAqIDMpICogMjsKICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFy
dGljbGUgZG9lcyBub3QgZ28gb3V0c2lkZSB0aGUgc3RhZ2UgYm91bmRhcmllcy4KLSAgICAgICAg
ICAgIHRoaXMuX3Bvc2l0aW9uLnggPSB0aGlzLl9zdGFnZVNpemUueCAtIHRoaXMuX3NpemUueDsK
KyAgICAgICAgICAgIHRoaXMucG9zaXRpb24ueCA9IHRoaXMuX3N0YWdlU2l6ZS54IC0gdGhpcy5z
aXplLng7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgLy8gSWYgcGFydGljbGUgaXMg
Z29pbmcgdG8gbW92ZSBvZmYgbGVmdCBzaWRlCi0gICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi54
IDwgMCkgeworICAgICAgICBpZiAodGhpcy5wb3NpdGlvbi54IDwgMCkgewogICAgICAgICAgICAg
Ly8gSWYgYW5nbGUgaXMgV2VzdC1Tb3V0aCwgZ28gRWFzdC1Tb3V0aC4KICAgICAgICAgICAgIGlm
ICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgLyAyICYmIHRoaXMuX2FuZ2xlIDwgTWF0aC5QSSkKICAg
ICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IE1hdGguUEkgLSB0aGlzLl9hbmdsZTsKQEAgLTQy
LDk3ICs0Miw3NiBAQCBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSA9CiAgICAgICAgICAgICBl
bHNlIGlmICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJIC8g
MiAqIDMpCiAgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSB0aGlzLl9hbmdsZSArIChNYXRo
LlBJIC8gMiAqIDMgLSB0aGlzLl9hbmdsZSkgKiAyOwogICAgICAgICAgICAgLy8gTWFrZSBzdXJl
IHRoZSBwYXJ0aWNsZSBkb2VzIG5vdCBnbyBvdXRzaWRlIHRoZSBzdGFnZSBib3VuZGFyaWVzLgot
ICAgICAgICAgICAgdGhpcy5fcG9zaXRpb24ueCA9IDA7CisgICAgICAgICAgICB0aGlzLnBvc2l0
aW9uLnggPSAwOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcg
dG8gbW92ZSBvZmYgYm90dG9tIHNpZGUKLSAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnkgKyB0
aGlzLl9zaXplLnkgPiB0aGlzLl9zdGFnZVNpemUueSkgeworICAgICAgICBpZiAodGhpcy5wb3Np
dGlvbi55ICsgdGhpcy5zaXplLnkgPiB0aGlzLl9zdGFnZVNpemUueSkgewogICAgICAgICAgICAg
Ly8gSWYgZGlyZWN0aW9uIGlzIFNvdXRoLCBnbyBOb3J0aC4KICAgICAgICAgICAgIGlmICh0aGlz
Ll9hbmdsZSA+IDAgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJKQogICAgICAgICAgICAgICAgIHRo
aXMuX2FuZ2xlID0gTWF0aC5QSSAqIDIgLSB0aGlzLl9hbmdsZTsKICAgICAgICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGUgcGFydGljbGUgZG9lcyBub3QgZ28gb3V0c2lkZSB0aGUgc3RhZ2UgYm91bmRh
cmllcy4KLSAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uLnkgPSB0aGlzLl9zdGFnZVNpemUueSAt
IHRoaXMuX3NpemUueTsKKyAgICAgICAgICAgIHRoaXMucG9zaXRpb24ueSA9IHRoaXMuX3N0YWdl
U2l6ZS55IC0gdGhpcy5zaXplLnk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJZiBwYXJ0aWNs
ZSBpcyBnb2luZyB0byBtb3ZlIG9mZiB0b3Agc2lkZQotICAgICAgICBpZiAodGhpcy5fcG9zaXRp
b24ueSA8IDApIHsKKyAgICAgICAgaWYgKHRoaXMucG9zaXRpb24ueSA8IDApIHsKICAgICAgICAg
ICAgIC8vIElmIGRpcmVjdGlvbiBpcyBOb3J0aCwgZ28gU291dGguCiAgICAgICAgICAgICBpZiAo
dGhpcy5fYW5nbGUgPiBNYXRoLlBJICYmIHRoaXMuX2FuZ2xlIDwgTWF0aC5QSSAqIDIpCiAgICAg
ICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSB0aGlzLl9hbmdsZSAtICh0aGlzLl9hbmdsZSAtIE1h
dGguUEkpICogMjsKICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFydGljbGUgZG9lcyBu
b3QgZ28gb3V0c2lkZSB0aGUgc3RhZ2UgYm91bmRhcmllcy4KLSAgICAgICAgICAgIHRoaXMuX3Bv
c2l0aW9uLnkgPSAwOworICAgICAgICAgICAgdGhpcy5wb3NpdGlvbi55ID0gMDsKICAgICAgICAg
fQogICAgIH0KIH0KIAotZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvcihiZW5jaG1h
cmssIG9wdGlvbnMpCi17Ci0gICAgU3RhZ2VBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyaywg
b3B0aW9ucyk7Ci19OwotCi1Cb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoU3RhZ2VBbmltYXRvci5wcm90b3R5cGUpOwotQm91bmNpbmdQYXJ0aWNsZXNB
bmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9y
OwotCi1mdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCi17
Ci0gICAgU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKLSAgICAKLSAgICB0aGlz
LnBhcnRpY2xlU2l6ZSA9IG5ldyBQb2ludChwYXJzZUludChvcHRpb25zWyJwYXJ0aWNsZVdpZHRo
Il0pIHx8IDEwLCBwYXJzZUludChvcHRpb25zWyJwYXJ0aWNsZUhlaWdodCJdKSB8fCAxMCk7Ci0g
ICAgdGhpcy5fcGFydGljbGVzID0gW107Ci0KLSAgICB0aGlzLm1heFZlbG9jaXR5ID0gcGFyc2VJ
bnQob3B0aW9uc1sibWF4VmVsb2NpdHkiXSkgfHwgNTAwOwotICAgIHRoaXMubWF4VmVsb2NpdHkg
PSBNYXRoLm1heCh0aGlzLm1heFZlbG9jaXR5LCAxMDApOwotfQorQm91bmNpbmdQYXJ0aWNsZXNT
dGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTdGFnZSwKKyAgICBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICBTdGFnZS5jYWxsKHRoaXMpOworICAgICAgICB0aGlzLnBhcnRpY2xlcyA9
IFtdOworICAgIH0sIHsKIAotQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7Ci1Cb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nUGFydGljbGVzU3RhZ2U7CisgICAgaW5pdGlhbGl6
ZTogZnVuY3Rpb24oYmVuY2htYXJrKQorICAgIHsKKyAgICAgICAgU3RhZ2UucHJvdG90eXBlLmlu
aXRpYWxpemUuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworICAgICAgICB0aGlzLnBhcnRpY2xlU2l6
ZSA9IG5ldyBQb2ludChwYXJzZUludChiZW5jaG1hcmsub3B0aW9uc1sicGFydGljbGVXaWR0aCJd
KSB8fCAxMCwgcGFyc2VJbnQoYmVuY2htYXJrLm9wdGlvbnNbInBhcnRpY2xlSGVpZ2h0Il0pIHx8
IDEwKTsKKyAgICAgICAgdGhpcy5tYXhWZWxvY2l0eSA9IE1hdGgubWF4KHBhcnNlSW50KGJlbmNo
bWFyay5vcHRpb25zWyJtYXhWZWxvY2l0eSJdKSB8fCA1MDAsIDEwMCk7CisgICAgfSwKIAotQm91
bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFyc2VTaGFwZVBhcmFtdGVycyA9IGZ1bmN0
aW9uKG9wdGlvbnMpCi17Ci0gICAgdGhpcy5zaGFwZSA9IG9wdGlvbnNbInNoYXBlIl0gfHwgImNp
cmNsZSI7Ci0gICAgdGhpcy5maWxsID0gb3B0aW9uc1siZmlsbCJdIHx8ICJzb2xpZCI7Ci0gICAg
dGhpcy5jbGlwID0gb3B0aW9uc1siY2xpcCJdIHx8ICIiOwotfQorICAgIHBhcnNlU2hhcGVQYXJh
bWV0ZXJzOiBmdW5jdGlvbihvcHRpb25zKQorICAgIHsKKyAgICAgICAgdGhpcy5zaGFwZSA9IG9w
dGlvbnNbInNoYXBlIl0gfHwgImNpcmNsZSI7CisgICAgICAgIHRoaXMuZmlsbCA9IG9wdGlvbnNb
ImZpbGwiXSB8fCAic29saWQiOworICAgICAgICB0aGlzLmNsaXAgPSBvcHRpb25zWyJjbGlwIl0g
fHwgIiI7CisgICAgfSwKIAotQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0
ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKLXsKLSAgICB0aGlzLl9wYXJ0aWNsZXMuZm9yRWFjaChm
dW5jdGlvbihwYXJ0aWNsZSkgewotICAgICAgICBwYXJ0aWNsZS5hbmltYXRlKHRpbWVEZWx0YSk7
Ci0gICAgfSk7Ci19Ci0gICAgCi1Cb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS50dW5l
ID0gZnVuY3Rpb24oY291bnQpCi17Ci0gICAgaWYgKGNvdW50ID09IDApCi0gICAgICAgIHJldHVy
biB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOwotCi0gICAgaWYgKGNvdW50ID4gMCkgewotICAgICAg
ICBjb25zb2xlLmFzc2VydCh0eXBlb2YodGhpcy5jcmVhdGVQYXJ0aWNsZSkgPT0gImZ1bmN0aW9u
Iik7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgICAg
IHRoaXMuX3BhcnRpY2xlcy5wdXNoKHRoaXMuY3JlYXRlUGFydGljbGUoKSk7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOwotICAgIH0KKyAgICBhbmltYXRlOiBmdW5jdGlv
bih0aW1lRGVsdGEpCisgICAgeworICAgICAgICB0aGlzLnBhcnRpY2xlcy5mb3JFYWNoKGZ1bmN0
aW9uKHBhcnRpY2xlKSB7CisgICAgICAgICAgICBwYXJ0aWNsZS5hbmltYXRlKHRpbWVEZWx0YSk7
CisgICAgICAgIH0pOworICAgIH0sCiAKLSAgICBjb3VudCA9IE1hdGgubWluKC1jb3VudCwgdGhp
cy5fcGFydGljbGVzLmxlbmd0aCk7Ci0gICAgICAgIAotICAgIGlmICh0eXBlb2YodGhpcy5wYXJ0
aWNsZVdpbGxCZVJlbW92ZWQpID09ICJmdW5jdGlvbiIpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBjb3VudDsgKytpKQotICAgICAgICAgICAgdGhpcy5wYXJ0aWNsZVdpbGxCZVJlbW92
ZWQodGhpcy5fcGFydGljbGVzW3RoaXMuX3BhcnRpY2xlcy5sZW5ndGggLSAxIC0gaV0pOwotICAg
IH0KKyAgICB0dW5lOiBmdW5jdGlvbihjb3VudCkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA9
PSAwKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFydGljbGVzLmxlbmd0aDsKIAotICAgIHRo
aXMuX3BhcnRpY2xlcy5zcGxpY2UoLWNvdW50LCBjb3VudCk7Ci0gICAgcmV0dXJuIHRoaXMuX3Bh
cnRpY2xlcy5sZW5ndGg7Ci19CisgICAgICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgICAgICB0aGlzLnBh
cnRpY2xlcy5wdXNoKHRoaXMuY3JlYXRlUGFydGljbGUoKSk7CisgICAgICAgICAgICByZXR1cm4g
dGhpcy5wYXJ0aWNsZXMubGVuZ3RoOworICAgICAgICB9CiAKLWZ1bmN0aW9uIEJvdW5jaW5nUGFy
dGljbGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKLXsKLSAg
ICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVz
c0Jhcik7Ci19CisgICAgICAgIGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLnBhcnRpY2xl
cy5sZW5ndGgpOwogCi1Cb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7Ci1Cb3VuY2luZ1BhcnRpY2xlc0Jl
bmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFy
azsKKyAgICAgICAgaWYgKHR5cGVvZih0aGlzLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCkgPT0gImZ1
bmN0aW9uIikgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQor
ICAgICAgICAgICAgICAgIHRoaXMucGFydGljbGVXaWxsQmVSZW1vdmVkKHRoaXMucGFydGljbGVz
W3RoaXMucGFydGljbGVzLmxlbmd0aCAtIDEgLSBpXSk7CisgICAgICAgIH0KIAotQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQot
ewotICAgIHJldHVybiBuZXcgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvcih0aGlzLCB0aGlzLl9v
cHRpb25zKTsKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgICAgIHRoaXMucGFy
dGljbGVzLnNwbGljZSgtY291bnQsIGNvdW50KTsKKyAgICAgICAgcmV0dXJuIHRoaXMucGFydGlj
bGVzLmxlbmd0aDsKKyAgICB9Cit9KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1p
bWFnZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCmluZGV4IDQzNWYyY2U1NjM0
NDhmZjI0NDY5ZmZkNWEwMGU5YmIxNDU3YTliYjYuLmUzMzFjYzQwNzU2YjI3YTlhMmVjYTk5ZmY2
ZmM1NjMyYzcwYzVkM2QgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcwpAQCAtMSw0NSArMSw0MyBAQAotZnVu
Y3Rpb24gQm91bmNpbmdTdmdJbWFnZShzdGFnZSkKLXsKLSAgICBCb3VuY2luZ1N2Z1BhcnRpY2xl
LmNhbGwodGhpcywgc3RhZ2UpOwotICAgIHRoaXMuX3NoYXBlID0gImltYWdlIjsKLSAgICAKLSAg
ICB2YXIgYXR0cnMgPSB7IHg6IDAsIHk6IDAsIHdpZHRoOiB0aGlzLl9zaXplLngsIGhlaWdodDog
dGhpcy5fc2l6ZS55IH07Ci0gICAgdmFyIHhsaW5rQXR0cnMgPSB7IGhyZWY6IHN0YWdlLmltYWdl
U3JjIH07Ci0gICAgdGhpcy5lbGVtZW50ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlU3ZnRWxl
bWVudCgiaW1hZ2UiLCBhdHRycywgeGxpbmtBdHRycywgc3RhZ2UuZWxlbWVudCk7Ci0gICAgdGhp
cy5fbW92ZSgpOwotfQotCi1Cb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUpOwotQm91bmNpbmdTdmdJbWFnZS5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z0ltYWdlOwotCi1mdW5jdGlvbiBCb3VuY2lu
Z1N2Z0ltYWdlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCi17Ci0gICAgQm91bmNpbmdQYXJ0aWNs
ZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOwotICAgIHRoaXMuaW1hZ2VTcmMg
PSBvcHRpb25zWyJpbWFnZVNyYyJdIHx8ICJyZXNvdXJjZXMveWluLXlhbmcuc3ZnIjsKLX0KLQot
Qm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5n
U3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKLUJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdJbWFnZXNTdGFnZTsKLQotQm91bmNpbmdT
dmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpCi17Ci0g
ICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdlKHRoaXMpOwotfQotCi1mdW5jdGlvbiBCb3Vu
Y2luZ1N2Z0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIp
Ci17Ci0gICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotfQotCi1Cb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFy
ay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnBy
b3RvdHlwZSk7Ci1Cb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyazsKLQotQm91bmNpbmdTdmdJbWFnZXNCZW5j
aG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKLXsKLSAgICBy
ZXR1cm4gbmV3IEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7
Ci19Ci0KLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQotewotICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdJ
bWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KKyhm
dW5jdGlvbigpIHsKKworQm91bmNpbmdTdmdJbWFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFz
cyhCb3VuY2luZ1N2Z1BhcnRpY2xlLAorICAgIGZ1bmN0aW9uKHN0YWdlKQorICAgIHsKKyAgICAg
ICAgQm91bmNpbmdTdmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlLCAiaW1hZ2UiKTsKKworICAg
ICAgICB2YXIgYXR0cnMgPSB7IHg6IDAsIHk6IDAsIHdpZHRoOiB0aGlzLnNpemUueCwgaGVpZ2h0
OiB0aGlzLnNpemUueSB9OworICAgICAgICB2YXIgeGxpbmtBdHRycyA9IHsgaHJlZjogc3RhZ2Uu
aW1hZ2VTcmMgfTsKKyAgICAgICAgdGhpcy5lbGVtZW50ID0gRG9jdW1lbnRFeHRlbnNpb24uY3Jl
YXRlU3ZnRWxlbWVudCgiaW1hZ2UiLCBhdHRycywgeGxpbmtBdHRycywgc3RhZ2UuZWxlbWVudCk7
CisgICAgICAgIHRoaXMuX21vdmUoKTsKKyAgICB9CispOworCitCb3VuY2luZ1N2Z0ltYWdlc1N0
YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2Us
CisgICAgZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFn
ZS5jYWxsKHRoaXMpOworICAgIH0sIHsKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNo
bWFyaykKKyAgICB7CisgICAgICAgIEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBl
LmluaXRpYWxpemUuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworICAgICAgICB0aGlzLmltYWdlU3Jj
ID0gYmVuY2htYXJrLm9wdGlvbnNbImltYWdlU3JjIl0gfHwgInJlc291cmNlcy95aW4teWFuZy5z
dmciOworICAgIH0sCisKKyAgICBjcmVhdGVQYXJ0aWNsZTogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdlKHRoaXMpOworICAgIH0KK30pOworCitC
b3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCZW5j
aG1hcmssCisgICAgZnVuY3Rpb24ob3B0aW9ucykKKyAgICB7CisgICAgICAgIEJlbmNobWFyay5j
YWxsKHRoaXMsIG5ldyBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlKCksIG9wdGlvbnMpOworICAgIH0K
Kyk7CisKK3dpbmRvdy5iZW5jaG1hcmtDbGFzcyA9IEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJr
OworCit9KSgpOworCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9y
ZXNvdXJjZXMvYm91bmNpbmctc3ZnLXBhcnRpY2xlcy5qcwppbmRleCA2OWM2NzU0MTViODliYjM5
MmFlNWFhYmQ1NTExZDllZmQyMDY0NmFkLi5lMzlmMmYwYjA1OWVkZDQzYThlZjZmM2Q0MjNiM2Ez
NmM2NDRmZWNmIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanMKQEAgLTEsNjggKzEsNjcgQEAKLWZ1
bmN0aW9uIEJvdW5jaW5nU3ZnUGFydGljbGUoc3RhZ2UpCi17Ci0gICAgQm91bmNpbmdQYXJ0aWNs
ZS5jYWxsKHRoaXMsIHN0YWdlKTsKLX0KK0JvdW5jaW5nU3ZnUGFydGljbGUgPSBVdGlsaXRpZXMu
Y3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZSwKKyAgICBmdW5jdGlvbihzdGFnZSwgc2hh
cGUpCisgICAgeworICAgICAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOwor
ICAgICAgICB0aGlzLl9zaGFwZSA9IHNoYXBlOworICAgIH0sIHsKIAotQm91bmNpbmdTdmdQYXJ0
aWNsZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBl
KTsKLUJvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdQ
YXJ0aWNsZTsKKyAgICBfYXBwbHlDbGlwcGluZzogZnVuY3Rpb24oc3RhZ2UpCisgICAgeworICAg
ICAgICBpZiAoc3RhZ2UuY2xpcCAhPSAic3RhciIpCisgICAgICAgICAgICByZXR1cm47CiAKLUJv
dW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlLl9hcHBseUNsaXBwaW5nID0gZnVuY3Rpb24oc3Rh
Z2UpCi17Ci0gICAgaWYgKHN0YWdlLmNsaXAgIT0gInN0YXIiKQotICAgICAgICByZXR1cm47Ci0g
ICAgICAgIAotICAgIHN0YWdlLmVuc3VyZUNsaXBTdGFySXNDcmVhdGVkKCk7Ci0gICAgdGhpcy5l
bGVtZW50LnNldEF0dHJpYnV0ZSgiY2xpcC1wYXRoIiwgInVybCgjc3Rhci1jbGlwKSIpOwotfQor
ICAgICAgICBzdGFnZS5lbnN1cmVDbGlwU3RhcklzQ3JlYXRlZCgpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuc2V0QXR0cmlidXRlKCJjbGlwLXBhdGgiLCAidXJsKCNzdGFyLWNsaXApIik7CisgICAg
fSwKIAotQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUuX21vdmUgPSBmdW5jdGlvbigpCi17
Ci0gICAgdmFyIHRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAi
LCAiICsgdGhpcy5fcG9zaXRpb24ueSArICIpIjsKLSAgICBpZiAodGhpcy5fc2hhcGUgIT0gImNp
cmNsZSIpCi0gICAgICAgIHRyYW5zZm9ybSArPSB0aGlzLl9yb3RhdGVyLnJvdGF0ZSh0aGlzLl9z
aXplLmNlbnRlcik7Ci0gICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwg
dHJhbnNmb3JtKTsKLX0KKyAgICBfbW92ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFy
IHRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMucG9zaXRpb24ueCArICIsICIgKyB0aGlz
LnBvc2l0aW9uLnkgKyAiKSI7CisgICAgICAgIGlmICh0aGlzLl9zaGFwZSAhPSAiY2lyY2xlIikK
KyAgICAgICAgICAgIHRyYW5zZm9ybSArPSB0aGlzLnJvdGF0ZXIucm90YXRlKHRoaXMuc2l6ZS5j
ZW50ZXIpOworICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCB0
cmFuc2Zvcm0pOworICAgIH0sCiAKLUJvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlLmFuaW1h
dGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCi17Ci0gICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5
cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7Ci0gICAgdGhpcy5fbW92ZSgpOwotfQor
ICAgIGFuaW1hdGU6IGZ1bmN0aW9uKHRpbWVEZWx0YSkKKyAgICB7CisgICAgICAgIEJvdW5jaW5n
UGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAgICAg
ICB0aGlzLl9tb3ZlKCk7CisgICAgfQorfSk7CiAKLWZ1bmN0aW9uIEJvdW5jaW5nU3ZnUGFydGlj
bGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKLXsKLSAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdl
LmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Ci19CitCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0
YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UsCisg
ICAgZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxs
KHRoaXMpOworICAgIH0sIHsKIAotQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKLUJvdW5j
aW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdQ
YXJ0aWNsZXNTdGFnZTsKKyAgICBfY3JlYXRlRGVmczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZVN2Z0VsZW1lbnQoImRlZnMiLCB7fSwg
e30sIHRoaXMuZWxlbWVudCk7CisgICAgfSwKIAotQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5w
cm90b3R5cGUuX2NyZWF0ZURlZnMgPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0dXJuIERvY3VtZW50
RXh0ZW5zaW9uLmNyZWF0ZVN2Z0VsZW1lbnQoImRlZnMiLCB7fSwge30sIHRoaXMuZWxlbWVudCk7
Ci19Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKLUJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLl9lbnN1cmVE
ZWZzSXNDcmVhdGVkID0gZnVuY3Rpb24oKQotewotICAgIHJldHVybiB0aGlzLmVsZW1lbnQucXVl
cnlTZWxlY3RvcigiZGVmcyIpIHx8IHRoaXMuX2NyZWF0ZURlZnMoKTsKLX0KKyAgICBfZW5zdXJl
RGVmc0lzQ3JlYXRlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZWxl
bWVudC5xdWVyeVNlbGVjdG9yKCJkZWZzIikgfHwgdGhpcy5fY3JlYXRlRGVmcygpOworICAgIH0s
CiAKLUJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLl9jcmVhdGVDbGlwU3RhciA9
IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgYXR0cnMgPSB7IGlkOiAic3Rhci1jbGlwIiwgY2xpcFBh
dGhVbml0czogIm9iamVjdEJvdW5kaW5nQm94IiB9OwotICAgIHZhciBjbGlwUGF0aCAgPSBEb2N1
bWVudEV4dGVuc2lvbi5jcmVhdGVTdmdFbGVtZW50KCJjbGlwUGF0aCIsIGF0dHJzLCB7fSwgdGhp
cy5fZW5zdXJlRGVmc0lzQ3JlYXRlZCgpKTsKKyAgICBfY3JlYXRlQ2xpcFN0YXI6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHZhciBhdHRycyA9IHsgaWQ6ICJzdGFyLWNsaXAiLCBjbGlwUGF0
aFVuaXRzOiAib2JqZWN0Qm91bmRpbmdCb3giIH07CisgICAgICAgIHZhciBjbGlwUGF0aCAgPSBE
b2N1bWVudEV4dGVuc2lvbi5jcmVhdGVTdmdFbGVtZW50KCJjbGlwUGF0aCIsIGF0dHJzLCB7fSwg
dGhpcy5fZW5zdXJlRGVmc0lzQ3JlYXRlZCgpKTsKIAotICAgIGF0dHJzID0geyBkOiAiTS41MCww
TC4zOCwuMzhMMCwuMzhMLjMwLC42MEwuMTgsMUwuNTAsLjc1TC44MiwxTC43MCwuNjBMMSwuMzhM
LjYyLC4zOHoiIH07Ci0gICAgRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlU3ZnRWxlbWVudCgicGF0
aCIsIGF0dHJzLCB7fSwgY2xpcFBhdGgpOwotICAgIHJldHVybiBjbGlwUGF0aDsKLX0KKyAgICAg
ICAgYXR0cnMgPSB7IGQ6ICJNLjUwLDBMLjM4LC4zOEwwLC4zOEwuMzAsLjYwTC4xOCwxTC41MCwu
NzVMLjgyLDFMLjcwLC42MEwxLC4zOEwuNjIsLjM4eiIgfTsKKyAgICAgICAgRG9jdW1lbnRFeHRl
bnNpb24uY3JlYXRlU3ZnRWxlbWVudCgicGF0aCIsIGF0dHJzLCB7fSwgY2xpcFBhdGgpOworICAg
ICAgICByZXR1cm4gY2xpcFBhdGg7CisgICAgfSwKIAotQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFn
ZS5wcm90b3R5cGUuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0ZWQgPSBmdW5jdGlvbigpCi17Ci0gICAg
cmV0dXJuIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCIjc3Rhci1jbGlwIikgfHwgdGhpcy5f
Y3JlYXRlQ2xpcFN0YXIoKTsKLX0KKyAgICBlbnN1cmVDbGlwU3RhcklzQ3JlYXRlZDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCIj
c3Rhci1jbGlwIikgfHwgdGhpcy5fY3JlYXRlQ2xpcFN0YXIoKTsKKyAgICB9LAogCi1Cb3VuY2lu
Z1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBmdW5j
dGlvbihwYXJ0aWNsZSkKLXsKLSAgICBwYXJ0aWNsZS5lbGVtZW50LnJlbW92ZSgpOwotfQorICAg
IHBhcnRpY2xlV2lsbEJlUmVtb3ZlZDogZnVuY3Rpb24ocGFydGljbGUpCisgICAgeworICAgICAg
ICBwYXJ0aWNsZS5lbGVtZW50LnJlbW92ZSgpOworICAgIH0KK30pOwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJj
ZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMK
aW5kZXggZDAyODAxYWFjMjk2ZGRlOGRlMzUwNGJiY2JhNjliNjIwMDgxMjhhYy4uODhjZWJhYTFh
YjQxMDFkY2Y3Yzk4NTkxZTEyMWQ4MjhmNjU5MDc3NyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNp
bmctc3ZnLXNoYXBlcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzCkBAIC0x
LDEwNCArMSwxMDEgQEAKLWZ1bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGUoc3RhZ2UpCi17Ci0gICAg
Qm91bmNpbmdTdmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKLSAgICB0aGlzLl9zaGFwZSA9
IHN0YWdlLnNoYXBlOwotICAgIHRoaXMuX2ZpbGwgPSBzdGFnZS5maWxsOwotICAgIAotICAgIHRo
aXMuX2NyZWF0ZVNoYXBlKHN0YWdlKTsKLSAgICB0aGlzLl9hcHBseUNsaXBwaW5nKHN0YWdlKTsK
LSAgICB0aGlzLl9hcHBseUZpbGwoc3RhZ2UpOwotCi0gICAgdGhpcy5fbW92ZSgpOyAgICAKLX0K
LQotQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nU3Zn
UGFydGljbGUucHJvdG90eXBlKTsKLUJvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gQm91bmNpbmdTdmdTaGFwZTsKLQotQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2Ny
ZWF0ZVNoYXBlID0gZnVuY3Rpb24oc3RhZ2UpCi17Ci0gICAgc3dpdGNoICh0aGlzLl9zaGFwZSkg
ewotICAgIGNhc2UgInJlY3QiOgotICAgICAgICB2YXIgYXR0cnMgPSB7IHg6IDAsIHk6IDAsIHdp
ZHRoOiB0aGlzLl9zaXplLngsIGhlaWdodDogdGhpcy5fc2l6ZS55IH07Ci0gICAgICAgIHRoaXMu
ZWxlbWVudCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZVN2Z0VsZW1lbnQoInJlY3QiLCBhdHRy
cywge30sIHN0YWdlLmVsZW1lbnQpOwotICAgICAgICBicmVhazsKLSAgICAKLSAgICBjYXNlICJj
aXJjbGUiOgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHZhciBhdHRycyA9IHsgY3g6IHRoaXMuX3Np
emUueCAvIDIsIGN5OiB0aGlzLl9zaXplLnkgLyAyLCByOiBNYXRoLm1pbih0aGlzLl9zaXplLngs
IHRoaXMuX3NpemUueSkgLyAyIH07Ci0gICAgICAgIHRoaXMuZWxlbWVudCA9IERvY3VtZW50RXh0
ZW5zaW9uLmNyZWF0ZVN2Z0VsZW1lbnQoImNpcmNsZSIsIGF0dHJzLCB7fSwgc3RhZ2UuZWxlbWVu
dCk7Ci0gICAgICAgIGJyZWFrOyAgICAgICAgCisoZnVuY3Rpb24oKSB7CisKK0JvdW5jaW5nU3Zn
U2hhcGUgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdTdmdQYXJ0aWNsZSwKKyAg
ICBmdW5jdGlvbihzdGFnZSkKKyAgICB7CisgICAgICAgIEJvdW5jaW5nU3ZnUGFydGljbGUuY2Fs
bCh0aGlzLCBzdGFnZSwgc3RhZ2Uuc2hhcGUpOworICAgICAgICB0aGlzLl9maWxsID0gc3RhZ2Uu
ZmlsbDsKKworICAgICAgICB0aGlzLl9jcmVhdGVTaGFwZShzdGFnZSk7CisgICAgICAgIHRoaXMu
X2FwcGx5Q2xpcHBpbmcoc3RhZ2UpOworICAgICAgICB0aGlzLl9hcHBseUZpbGwoc3RhZ2UpOwor
CisgICAgICAgIHRoaXMuX21vdmUoKTsKKyAgICB9LCB7CisKKyAgICBfY3JlYXRlU2hhcGU6IGZ1
bmN0aW9uKHN0YWdlKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0aGlzLl9zaGFwZSkgeworICAg
ICAgICBjYXNlICJyZWN0IjoKKyAgICAgICAgICAgIHZhciBhdHRycyA9IHsgeDogMCwgeTogMCwg
d2lkdGg6IHRoaXMuc2l6ZS54LCBoZWlnaHQ6IHRoaXMuc2l6ZS55IH07CisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVTdmdFbGVtZW50KCJyZWN0Iiwg
YXR0cnMsIHt9LCBzdGFnZS5lbGVtZW50KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgImNpcmNsZSI6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB2YXIgYXR0cnMg
PSB7IGN4OiB0aGlzLnNpemUueCAvIDIsIGN5OiB0aGlzLnNpemUueSAvIDIsIHI6IE1hdGgubWlu
KHRoaXMuc2l6ZS54LCB0aGlzLnNpemUueSkgLyAyIH07CisgICAgICAgICAgICB0aGlzLmVsZW1l
bnQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVTdmdFbGVtZW50KCJjaXJjbGUiLCBhdHRycywg
e30sIHN0YWdlLmVsZW1lbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
LAorCisgICAgX2FwcGx5RmlsbDogZnVuY3Rpb24oc3RhZ2UpCisgICAgeworICAgICAgICBzd2l0
Y2ggKHRoaXMuX2ZpbGwpIHsKKyAgICAgICAgY2FzZSAiZ3JhZGllbnQiOgorICAgICAgICAgICAg
dmFyIGdyYWRpZW50ID0gc3RhZ2UuY3JlYXRlR3JhZGllbnQoMik7CisgICAgICAgICAgICB0aGlz
LmVsZW1lbnQuc2V0QXR0cmlidXRlKCJmaWxsIiwgInVybCgjIiArIGdyYWRpZW50LmdldEF0dHJp
YnV0ZSgiaWQiKSArICIpIik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICJz
b2xpZCI6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0
cmlidXRlKCJmaWxsIiwgc3RhZ2UucmFuZG9tQ29sb3IoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQogICAgIH0KLX0KLQotQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2FwcGx5
RmlsbCA9IGZ1bmN0aW9uKHN0YWdlKQotewotICAgIHN3aXRjaCAodGhpcy5fZmlsbCkgewotICAg
IGNhc2UgImdyYWRpZW50IjoKLSAgICAgICAgdmFyIGdyYWRpZW50ID0gc3RhZ2UuY3JlYXRlR3Jh
ZGllbnQoMik7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImZpbGwiLCAidXJs
KCMiICsgZ3JhZGllbnQuZ2V0QXR0cmlidXRlKCJpZCIpICsgIikiKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgCi0gICAgY2FzZSAic29saWQiOgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHRoaXMuZWxl
bWVudC5zZXRBdHRyaWJ1dGUoImZpbGwiLCBzdGFnZS5yYW5kb21Db2xvcigpKTsKLSAgICAgICAg
YnJlYWs7Cit9KTsKKworQm91bmNpbmdTdmdTaGFwZXNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVT
dWJjbGFzcyhCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLAorICAgIGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzKTsKKyAgICB9LCB7
CisKKyAgICBpbml0aWFsaXplOiBmdW5jdGlvbihiZW5jaG1hcmspCisgICAgeworICAgICAgICBC
b3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywg
YmVuY2htYXJrKTsKKyAgICAgICAgdGhpcy5wYXJzZVNoYXBlUGFyYW1ldGVycyhiZW5jaG1hcmsu
b3B0aW9ucyk7CisgICAgICAgIHRoaXMuX2dyYWRpZW50c0NvdW50ID0gMDsKKyAgICB9LAorCisg
ICAgY3JlYXRlR3JhZGllbnQ6IGZ1bmN0aW9uKHN0b3BzKQorICAgIHsKKyAgICAgICAgdmFyIGF0
dHJzID0geyBpZDogImdyYWRpZW50LSIgKyArK3RoaXMuX2dyYWRpZW50c0NvdW50IH07CisgICAg
ICAgIHZhciBncmFkaWVudCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZVN2Z0VsZW1lbnQoImxp
bmVhckdyYWRpZW50IiwgYXR0cnMsIHt9LCB0aGlzLl9lbnN1cmVEZWZzSXNDcmVhdGVkKCkpOwor
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RvcHM7ICsraSkgeworICAgICAgICAgICAg
YXR0cnMgPSB7IG9mZnNldDogaSAqIDEwMCAvIHN0b3BzICsgIiUiLCAnc3RvcC1jb2xvcic6IHRo
aXMucmFuZG9tQ29sb3IoKSB9OworICAgICAgICAgICAgRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRl
U3ZnRWxlbWVudCgic3RvcCIsIGF0dHJzLCB7fSwgZ3JhZGllbnQpOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIGdyYWRpZW50OworICAgIH0sCisKKyAgICBjcmVhdGVQYXJ0aWNsZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlKHRoaXMp
OworICAgIH0sCisKKyAgICBwYXJ0aWNsZVdpbGxCZVJlbW92ZWQ6IGZ1bmN0aW9uKHBhcnRpY2xl
KQorICAgIHsKKyAgICAgICAgQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFy
dGljbGVXaWxsQmVSZW1vdmVkLmNhbGwodGhpcywgcGFydGljbGUpOworCisgICAgICAgIHZhciBm
aWxsID0gcGFydGljbGUuZWxlbWVudC5nZXRBdHRyaWJ1dGUoImZpbGwiKTsKKyAgICAgICAgaWYg
KGZpbGwuaW5kZXhPZigidXJsKCMiKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHZhciBncmFkaWVudCA9IHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKGZpbGwuc3Vic3Ry
aW5nKDQsIGZpbGwubGVuZ3RoIC0gMSkpOworICAgICAgICB0aGlzLl9lbnN1cmVEZWZzSXNDcmVh
dGVkKCkucmVtb3ZlQ2hpbGQoZ3JhZGllbnQpOwogICAgIH0KLX0KLQotZnVuY3Rpb24gQm91bmNp
bmdTdmdTaGFwZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQotewotICAgIEJvdW5jaW5nU3ZnUGFy
dGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKLSAgICB0aGlzLnBhcnNl
U2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7Ci0gICAgdGhpcy5fZ3JhZGllbnRzQ291bnQgPSAwOwot
fQotCi1Cb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91
bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOwotQm91bmNpbmdTdmdTaGFwZXNTdGFn
ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ci1Cb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVHcmFkaWVudCA9IGZ1bmN0
aW9uKHN0b3BzKQotewotICAgIHZhciBhdHRycyA9IHsgaWQ6ICJnYWRpZW50LSIgKyArK3RoaXMu
X2dyYWRpZW50c0NvdW50IH07Ci0gICAgdmFyIGdyYWRpZW50ID0gRG9jdW1lbnRFeHRlbnNpb24u
Y3JlYXRlU3ZnRWxlbWVudCgibGluZWFyR3JhZGllbnQiLCBhdHRycywge30sIHRoaXMuX2Vuc3Vy
ZURlZnNJc0NyZWF0ZWQoKSk7ICAgIAotICAgIAotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3Rv
cHM7ICsraSkgewotICAgICAgICBhdHRycyA9IHsgb2Zmc2V0OiBpICogMTAwIC8gc3RvcHMgKyAi
JSIsICdzdG9wLWNvbG9yJzogdGhpcy5yYW5kb21Db2xvcigpIH07Ci0gICAgICAgIERvY3VtZW50
RXh0ZW5zaW9uLmNyZWF0ZVN2Z0VsZW1lbnQoInN0b3AiLCBhdHRycywge30sIGdyYWRpZW50KTsK
K30pOworCitCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJj
bGFzcyhCZW5jaG1hcmssCisgICAgZnVuY3Rpb24ob3B0aW9ucykKKyAgICB7CisgICAgICAgIEJl
bmNobWFyay5jYWxsKHRoaXMsIG5ldyBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKCksIG9wdGlvbnMp
OwogICAgIH0KKyk7CisKK3dpbmRvdy5iZW5jaG1hcmtDbGFzcyA9IEJvdW5jaW5nU3ZnU2hhcGVz
QmVuY2htYXJrOwogCi0gICAgcmV0dXJuIGdyYWRpZW50OwotfQotCi1Cb3VuY2luZ1N2Z1NoYXBl
c1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICByZXR1
cm4gbmV3IEJvdW5jaW5nU3ZnU2hhcGUodGhpcyk7Ci19Ci0KLUJvdW5jaW5nU3ZnU2hhcGVzU3Rh
Z2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKQot
ewotICAgIEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJl
UmVtb3ZlZC5jYWxsKHRoaXMsIHBhcnRpY2xlKTsKLQotICAgIHZhciBmaWxsID0gcGFydGljbGUu
ZWxlbWVudC5nZXRBdHRyaWJ1dGUoImZpbGwiKTsKLSAgICBpZiAoZmlsbC5pbmRleE9mKCJ1cmwo
IyIpICE9IDApCi0gICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgdmFyIGdyYWRpZW50ID0g
dGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoZmlsbC5zdWJzdHJpbmcoNCwgZmlsbC5sZW5ndGgg
LSAxKSk7Ci0gICAgdGhpcy5fZW5zdXJlRGVmc0lzQ3JlYXRlZCgpLnJlbW92ZUNoaWxkKGdyYWRp
ZW50KTsKLX0KLQotZnVuY3Rpb24gQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQotewotICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2ht
YXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KLQot
Qm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOwotQm91bmNpbmdTdmdTaGFwZXNCZW5j
aG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcms7
Ci0KLUJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1
bmN0aW9uKGVsZW1lbnQpCi17Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdl
KGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwotfQotCi13aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNy
ZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKLXsKLSAg
ICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCBwcm9ncmVzc0Jhcik7Ci19Cit9KSgpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1lbGVjdHJvbnMuaHRtbCBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtZWxlY3Ryb25zLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5MDk3MzJlMWE0MzViY2RlOTk2MGQ3
NzVkYWY3ZWRjZDExMzMyY2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZh
cy1lbGVjdHJvbnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9
InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KLSAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9zdHJpbmdzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FudmFz
LWVsZWN0cm9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8Y2FudmFzIGlk
PSJzdGFnZSI+PC9jYW52YXM+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0bWwgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyYWQ4ZjgzZmYzODAzOGY3ZWRhZWY0
OGRiMmE5ZDFjZDcxYWQwNTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZh
cy1zdGFycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4
dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgotICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3N0cmluZ3MuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
dGFnZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYW52YXMtc3Rh
cnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci0gICAgPGNhbnZhcyBpZD0ic3RhZ2Ui
PjwvY2FudmFzPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9j
YW52YXMtZWxlY3Ryb25zLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGU1ODQw
MTg3YzU5ZTY1YzAwMjEyYTk5YjMwOGIwNGIyYjNjMWJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcworKysgL2Rldi9udWxsCkBA
IC0xLDEzMiArMCwwIEBACi1mdW5jdGlvbiBDYW52YXNFbGVjdHJvbihzdGFnZSkKLXsKLSAgICB0
aGlzLl9jb250ZXh0ID0gc3RhZ2UuY29udGV4dDsKLSAgICB0aGlzLl9zdGFnZVNpemUgPSBzdGFn
ZS5zaXplOwotCi0gICAgdmFyIG1pblNpZGUgPSBNYXRoLm1pbih0aGlzLl9zdGFnZVNpemUud2lk
dGgsIHRoaXMuX3N0YWdlU2l6ZS5oZWlnaHQpOwotICAgIHZhciByYWRpdXNYID0gc3RhZ2UucmFu
ZG9tKG1pblNpZGUgLyA4LCA3ICogbWluU2lkZSAvIDE2KTsKLSAgICB2YXIgcmFkaXVzWSA9IHN0
YWdlLnJhbmRvbShtaW5TaWRlIC8gOCwgMyAqIHJhZGl1c1ggLyA0KTsKLSAgICB0aGlzLl9vcmJp
dFJhZGl1c2VzID0gbmV3IFBvaW50KHJhZGl1c1gsIHJhZGl1c1kpOwotICAgIHRoaXMuX3JhZGl1
cyA9IHN0YWdlLnJhbmRvbSg1LCAxNSk7Ci0gICAgdGhpcy5fZGlyZWN0aW9uID0gc3RhZ2UucmFu
ZG9tSW50KDAsIDIpOwotICAgIHRoaXMuX2FuZ2xlID0gc3RhZ2UucmFuZG9tSW50KDAsIDM2MCk7
Ci0gICAgdGhpcy5fY29sb3IgPSBzdGFnZS5yYW5kb21Db2xvcigpOwotICAgIHRoaXMuX3JvdGF0
ZXIgPSBzdGFnZS5yYW5kb21Sb3RhdGVyKCk7Ci0gICAgdGhpcy5fcm90YXRlci5uZXh0KHN0YWdl
LnJhbmRvbSgwLCB0aGlzLl9yb3RhdGVyLmludGVydmFsKSk7Ci19Ci0KLUNhbnZhc0VsZWN0cm9u
LnByb3RvdHlwZS5fZHJhdyA9IGZ1bmN0aW9uKCkKLXsKLSAgICAvLyBDYWxjdWxhdGUgdGhlIHBv
c2l0aW9uIG9mIHRoZSBvYmplY3Qgb24gdGhlIGVsbGlwc2UuCi0gICAgdmFyIGFuZ2xlID0gdGhp
cy5fZGlyZWN0aW9uID8gdGhpcy5fcm90YXRlci5kZWdyZWUoKSA6IDM2MCAtIHRoaXMuX3JvdGF0
ZXIuZGVncmVlKCk7Ci0gICAgdmFyIHBvc2l0aW9uID0gdGhpcy5fc3RhZ2VTaXplLmNlbnRlci5z
dWJ0cmFjdChQb2ludC5wb2ludE9uRWxsaXBzZShhbmdsZSwgdGhpcy5fb3JiaXRSYWRpdXNlcykp
OwotCi0gICAgdGhpcy5fY29udGV4dC5zYXZlKCk7ICAgIAotICAgICAgICB0aGlzLl9jb250ZXh0
LnRyYW5zbGF0ZSh0aGlzLl9zdGFnZVNpemUuY2VudGVyLngsIHRoaXMuX3N0YWdlU2l6ZS5jZW50
ZXIueSk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQucm90YXRlKHRoaXMuX2FuZ2xlICogTWF0aC5Q
SSAvIDE4MCk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQudHJhbnNsYXRlKC10aGlzLl9zdGFnZVNp
emUuY2VudGVyLngsIC10aGlzLl9zdGFnZVNpemUuY2VudGVyLnkpOwotCi0gICAgICAgIC8vIFNl
dCB0aGUgc3Ryb2tlIGFuZCB0aGUgZmlsbCBjb2xvcnMKLSAgICAgICAgdGhpcy5fY29udGV4dC5z
dHJva2VTdHlsZSA9ICJyZ2JhKDE5MiwgMTkyLCAxOTIsIDAuOSkiOwotICAgICAgICB0aGlzLl9j
b250ZXh0LmZpbGxTdHlsZSA9IHRoaXMuX2NvbG9yOwotCi0gICAgICAgIC8vIERyYXcgdGhlIG9y
Yml0IG9mIHRoZSBvYmplY3QuCi0gICAgICAgIHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7Ci0g
ICAgICAgIHRoaXMuX2NvbnRleHQuZWxsaXBzZSh0aGlzLl9zdGFnZVNpemUuY2VudGVyLngsIHRo
aXMuX3N0YWdlU2l6ZS5jZW50ZXIueSwgdGhpcy5fb3JiaXRSYWRpdXNlcy54LCB0aGlzLl9vcmJp
dFJhZGl1c2VzLnksIDAsIDAsIDIgKiBNYXRoLlBJKTsKLSAgICAgICAgdGhpcy5fY29udGV4dC5z
dHJva2UoKTsKLSAgICAKLSAgICAgICAgLy8gRHJhdyB0aGUgb2JqZWN0LgotICAgICAgICB0aGlz
Ll9jb250ZXh0LmJlZ2luUGF0aCgpOwotICAgICAgICB0aGlzLl9jb250ZXh0LmFyYyhwb3NpdGlv
bi54LCBwb3NpdGlvbi55LCB0aGlzLl9yYWRpdXMsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTsKLSAg
ICAgICAgdGhpcy5fY29udGV4dC5maWxsKCk7Ci0gICAgdGhpcy5fY29udGV4dC5yZXN0b3JlKCk7
Ci19Ci0KLUNhbnZhc0VsZWN0cm9uLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURl
bHRhKQotewotICAgIHRoaXMuX3JvdGF0ZXIubmV4dCh0aW1lRGVsdGEgLyAxMDApOwotICAgIHRo
aXMuX2RyYXcoKTsKLX0KLQotZnVuY3Rpb24gQ2FudmFzRWxlY3Ryb25zU3RhZ2UoZWxlbWVudCwg
b3B0aW9ucykKLXsKLSAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOwotICAg
IHRoaXMuY29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOwotICAgIHRoaXMu
X2VsZWN0cm9ucyA9IFtdOwotfQotCi1DYW52YXNFbGVjdHJvbnNTdGFnZS5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7Ci1DYW52YXNFbGVjdHJvbnNTdGFnZS5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNFbGVjdHJvbnNTdGFnZTsKLQotQ2FudmFzRWxlY3Ry
b25zU3RhZ2UucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKLXsKLSAgICBpZiAoY291
bnQgPT0gMCkKLSAgICAgICAgcmV0dXJuIHRoaXMuX2VsZWN0cm9ucy5sZW5ndGg7Ci0KLSAgICBp
ZiAoY291bnQgPiAwKSB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkK
LSAgICAgICAgICAgIHRoaXMuX2VsZWN0cm9ucy5wdXNoKG5ldyBDYW52YXNFbGVjdHJvbih0aGlz
KSk7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVjdHJvbnMubGVuZ3RoOwotICAgIH0KLQotICAg
IGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9lbGVjdHJvbnMubGVuZ3RoKTsKLSAgICB0
aGlzLl9lbGVjdHJvbnMuc3BsaWNlKC1jb3VudCwgY291bnQpOwotICAgIAotICAgIHJldHVybiB0
aGlzLl9lbGVjdHJvbnMubGVuZ3RoOwotfQotCi1DYW52YXNFbGVjdHJvbnNTdGFnZS5wcm90b3R5
cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKLXsKLSAgICB0aGlzLl9lbGVjdHJvbnMu
Zm9yRWFjaChmdW5jdGlvbihlbGVjdHJvbikgewotICAgICAgICBlbGVjdHJvbi5hbmltYXRlKHRp
bWVEZWx0YSk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIENhbnZhc0VsZWN0cm9uc0FuaW1hdG9y
KGJlbmNobWFyaywgb3B0aW9ucykKLXsKLSAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFy
aywgb3B0aW9ucyk7Ci0gICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4
dDsKLX0KLQotQ2FudmFzRWxlY3Ryb25zQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShTdGFnZUFuaW1hdG9yLnByb3RvdHlwZSk7Ci1DYW52YXNFbGVjdHJvbnNBbmltYXRvci5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNFbGVjdHJvbnNBbmltYXRvcjsKLQotQ2FudmFzRWxl
Y3Ryb25zQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCi17Ci0gICAgdGhp
cy5fY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLngs
IHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS55KTsKLQotICAgIC8vIERyYXcgYSBiaWcgc3Rh
ciBpbiB0aGUgbWlkZGxlLgotICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxlID0gIm9yYW5nZSI7
ICAgIAotICAgIHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7Ci0gICAgdGhpcy5fY29udGV4dC5h
cmModGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLmNlbnRlci54LCB0aGlzLl9iZW5jaG1hcmsu
X3N0YWdlLnNpemUuY2VudGVyLnksIDUwLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7Ci0gICAgdGhp
cy5fY29udGV4dC5maWxsKCk7Ci0KLSAgICByZXR1cm4gU3RhZ2VBbmltYXRvci5wcm90b3R5cGUu
YW5pbWF0ZS5jYWxsKHRoaXMpOwotfQotCi1mdW5jdGlvbiBDYW52YXNFbGVjdHJvbnNCZW5jaG1h
cmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQotewotICAgIFN0YWdlQmVuY2ht
YXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KLQot
Q2FudmFzRWxlY3Ryb25zQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VC
ZW5jaG1hcmsucHJvdG90eXBlKTsKLUNhbnZhc0VsZWN0cm9uc0JlbmNobWFyay5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBDYW52YXNFbGVjdHJvbnNCZW5jaG1hcms7Ci0KLUNhbnZhc0VsZWN0cm9u
c0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQotewot
ICAgIC8vIEF0dGFjaCB0aGUgc3RhZ2UgdG8gdGhlIGJlbmNobWFyay4KLSAgICByZXR1cm4gbmV3
IENhbnZhc0VsZWN0cm9uc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwotfQotCi1DYW52
YXNFbGVjdHJvbnNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24o
KQotewotICAgIC8vIEF0dGFjaCB0aGUgYW5pbWF0b3IgdG8gdGhlIGJlbmNobWFyay4KLSAgICBy
ZXR1cm4gbmV3IENhbnZhc0VsZWN0cm9uc0FuaW1hdG9yKHRoaXMsIHRoaXMuX29wdGlvbnMpOwot
fQotCi13aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKLXsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxl
ZCBmcm9tIHRoZSB0ZXN0IGhhcm5lc3Mgd2hpY2ggc3RhcnRzIHRoZQotICAgIC8vIHRlc3QgYnkg
Y3JlYXRpbmcgeW91ciBiZW5jaG1hcmsgb2JqZWN0LgotICAgIHJldHVybiBuZXcgQ2FudmFzRWxl
Y3Ryb25zQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci19CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVz
b3VyY2VzL2NhbnZhcy1zdGFycy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkMzdjMmEyY2JhNTAwYmM0NTc0OWQ0NzY1NTY2MDcwNjU2NzExZmE5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsMTI5ICswLDAgQEAKLWZ1bmN0aW9uIENhbnZhc1N0YXIoc3RhZ2Up
Ci17Ci0gICAgdGhpcy5fY29udGV4dCA9IHN0YWdlLmNvbnRleHQ7Ci0gICAgdGhpcy5fc3RhZ2VT
aXplID0gc3RhZ2Uuc2l6ZTsKLQotICAgIHRoaXMuX3NpemUgPSBzdGFnZS5yYW5kb21TcXVhcmVT
aXplKDUsIDIwKTsKLSAgICB0aGlzLl9jZW50ZXIgPSBzdGFnZS5yYW5kb21Qb3NpdGlvbihzdGFn
ZS5zaXplLnN1YnRyYWN0KHRoaXMuX3NpemUpKS5hZGQodGhpcy5fc2l6ZS5jZW50ZXIpOwotICAg
IHRoaXMuX3JvdGF0ZVggPSAwOwotICAgIHRoaXMuX3JvdGF0ZURlbHRhWCA9IHN0YWdlLnJhbmRv
bSgwLjMsIDAuNyk7Ci19Ci0KLUNhbnZhc1N0YXIucHJvdG90eXBlLl9kcmF3ID0gZnVuY3Rpb24o
KQotewotICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOwotICAgIHRoaXMuX2NvbnRleHQudHJhbnNs
YXRlKHRoaXMuX2NlbnRlci54LCB0aGlzLl9jZW50ZXIueSk7Ci0gICAgCi0gICAgdGhpcy5fY29u
dGV4dC5maWxsU3R5bGUgPSAneWVsbG93JzsKLSAgICB0aGlzLl9jb250ZXh0LnN0cm9rZVN0eWxl
ID0gJ3doaXRlJzsKLQotICAgIHRoaXMuX2NvbnRleHQubGluZVdpZHRoID0gMTsKLSAgICAKLSAg
ICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOwotICAgIHRoaXMuX2NvbnRleHQubW92ZVRvKCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAtdGhpcy5fc2l6ZS55IC8gIDIp
OwotICAgIHRoaXMuX2NvbnRleHQubGluZVRvKCt0aGlzLl9zaXplLnggLyAyMCAtIHRoaXMuX3Jv
dGF0ZVggLyA1LCAtdGhpcy5fc2l6ZS55IC8gMTApOwotICAgIHRoaXMuX2NvbnRleHQubGluZVRv
KCt0aGlzLl9zaXplLnggLyA0ICAtIHRoaXMuX3JvdGF0ZVgsICAgICAgICAgICAgICAgICAgICAg
IDApOwotICAgIHRoaXMuX2NvbnRleHQubGluZVRvKCt0aGlzLl9zaXplLnggLyAyMCAtIHRoaXMu
X3JvdGF0ZVggLyA1LCArdGhpcy5fc2l6ZS55IC8gMTApOwotICAgIHRoaXMuX2NvbnRleHQubGlu
ZVRvKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCArdGhpcy5fc2l6ZS55
IC8gIDIpOwotICAgIHRoaXMuX2NvbnRleHQubGluZVRvKC10aGlzLl9zaXplLnggLyAyMCArIHRo
aXMuX3JvdGF0ZVggLyA1LCArdGhpcy5fc2l6ZS55IC8gMTApOwotICAgIHRoaXMuX2NvbnRleHQu
bGluZVRvKC10aGlzLl9zaXplLnggLyAgNCArIHRoaXMuX3JvdGF0ZVgsICAgICAgICAgICAgICAg
ICAgICAgIDApOwotICAgIHRoaXMuX2NvbnRleHQubGluZVRvKC10aGlzLl9zaXplLnggLyAyMCAr
IHRoaXMuX3JvdGF0ZVggLyA1LCAtdGhpcy5fc2l6ZS55IC8gMTApOwotICAgIHRoaXMuX2NvbnRl
eHQubGluZVRvKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAtdGhpcy5f
c2l6ZS55IC8gIDIpOwotICAgIAotICAgIHRoaXMuX2NvbnRleHQuZmlsbCgpOwotICAgIHRoaXMu
X2NvbnRleHQuc3Ryb2tlKCk7Ci0gICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTsKLSAgICB0
aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKLX0KLQotQ2FudmFzU3Rhci5wcm90b3R5cGUuYW5pbWF0
ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKLXsKLSAgICB0aGlzLl9yb3RhdGVYICs9IHRoaXMuX3Jv
dGF0ZURlbHRhWDsKLSAgICAKLSAgICBpZiAodGhpcy5fcm90YXRlWCA+IHRoaXMuX3NpemUueCAv
IDQgfHwgdGhpcy5fcm90YXRlWCA8IC10aGlzLl9zaXplLnggLyA0KSB7Ci0gICAgICAgIHRoaXMu
X3JvdGF0ZURlbHRhWCA9IC10aGlzLl9yb3RhdGVEZWx0YVg7Ci0gICAgICAgIHRoaXMuX3JvdGF0
ZVggKz0gdGhpcy5fcm90YXRlRGVsdGFYOwotICAgIH0KLQotICAgdGhpcy5fZHJhdygpOwotfQot
Ci1mdW5jdGlvbiBDYW52YXNTdGFyc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCi17Ci0gICBTdGFn
ZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOwotICAgdGhpcy5jb250ZXh0ID0gdGhpcy5l
bGVtZW50LmdldENvbnRleHQoIjJkIik7Ci0KLSAgICB0aGlzLl9vYmplY3RzID0gW107Ci19Ci0K
LUNhbnZhc1N0YXJzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5
cGUpOwotQ2FudmFzU3RhcnNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNTdGFy
c1N0YWdlOwotCi1DYW52YXNTdGFyc1N0YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291
bnQpCi17Ci0gICAgaWYgKGNvdW50ID09IDApCi0gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3Rz
Lmxlbmd0aDsKLQotICAgIGlmIChjb3VudCA+IDApIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjb3VudDsgKytpKQotICAgICAgICAgICAgdGhpcy5fb2JqZWN0cy5wdXNoKG5ldyBDYW52
YXNTdGFyKHRoaXMpKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdHMubGVuZ3RoOwotICAg
IH0KLQotICAgIGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9vYmplY3RzLmxlbmd0aCk7
Ci0gICAgdGhpcy5fb2JqZWN0cy5zcGxpY2UoLWNvdW50LCBjb3VudCk7Ci0KLSAgICByZXR1cm4g
dGhpcy5fb2JqZWN0cy5sZW5ndGg7Ci19Ci0KLUNhbnZhc1N0YXJzU3RhZ2UucHJvdG90eXBlLmFu
aW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCi17Ci0gICAgdGhpcy5fb2JqZWN0cy5mb3JFYWNo
KGZ1bmN0aW9uKG9iamVjdCkgewotICAgICAgICBvYmplY3QuYW5pbWF0ZSh0aW1lRGVsdGEpOwot
ICAgIH0pOwotfQotCi1mdW5jdGlvbiBDYW52YXNTdGFyc0FuaW1hdG9yKGJlbmNobWFyaywgb3B0
aW9ucykKLXsKLSAgIEFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrLCBvcHRpb25zKTsKLSAg
IHRoaXMuX2NvbnRleHQgPSBiZW5jaG1hcmsuX3N0YWdlLmNvbnRleHQ7Ci19Ci0KLUNhbnZhc1N0
YXJzQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUFuaW1hdG9yLnByb3Rv
dHlwZSk7Ci1DYW52YXNTdGFyc0FuaW1hdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENhbnZh
c1N0YXJzQW5pbWF0b3I7Ci0KLUNhbnZhc1N0YXJzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUg
PSBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICB0aGlz
Ll9jb250ZXh0LmZpbGxTdHlsZSA9ICdibGFjayc7Ci0gICAgdGhpcy5fY29udGV4dC5yZWN0KDAs
IDAsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS53aWR0aCwgdGhpcy5fYmVuY2htYXJrLl9z
dGFnZS5zaXplLmhlaWdodCk7Ci0gICAgdGhpcy5fY29udGV4dC5maWxsKCk7Ci0gICByZXR1cm4g
U3RhZ2VBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMpOwotfQotCi1mdW5jdGlv
biBDYW52YXNTdGFyc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIp
Ci17Ci0gICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBw
cm9ncmVzc0Jhcik7Ci19Ci0KLUNhbnZhc1N0YXJzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKLUNhbnZhc1N0YXJzQmVuY2htYXJr
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENhbnZhc1N0YXJzQmVuY2htYXJrOwotCi1DYW52YXNT
dGFyc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQot
ewotICAgLy8gQXR0YWNoIHRoZSBzdGFnZSB0byB0aGUgYmVuY2htYXJrLgotICAgcmV0dXJuIG5l
dyBDYW52YXNTdGFyc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwotfQotCi1DYW52YXNT
dGFyc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigpCi17Ci0g
ICAvLyBBdHRhY2ggdGhlIGFuaW1hdG9yIHRvIHRoZSBiZW5jaG1hcmsuCi0gICByZXR1cm4gbmV3
IENhbnZhc1N0YXJzQW5pbWF0b3IodGhpcywgdGhpcy5fb3B0aW9ucyk7Ci19Ci0KLXdpbmRvdy5i
ZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHBy
b2dyZXNzQmFyKQotewotICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgdGVz
dCBoYXJuZXNzIHdoaWNoIHN0YXJ0cyB0aGUKLSAgIC8vIHRlc3QgYnkgY3JlYXRpbmcgeW91ciBi
ZW5jaG1hcmsgb2JqZWN0LgotICAgcmV0dXJuIG5ldyBDYW52YXNTdGFyc0JlbmNobWFyayhzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0
ZXIvY2FudmFzLXN0YWdlLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
bWFzdGVyL2NhbnZhcy1zdGFnZS5odG1sCmluZGV4IDNmNDZhZTk0YjViZjVkODVlMzA4ZDc4MTY1
OTQ2ZDI1NzBmYTg0YWIuLmNkMDYzNDY1Mjg3YzZkYzYzZTdmZDg4NzY3OGUzNjk3MGQwODZlM2Qg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvY2Fu
dmFzLXN0YWdlLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21h
c3Rlci9jYW52YXMtc3RhZ2UuaHRtbApAQCAtMiwxNyArMiwxNiBAQAogPGh0bWw+CiA8aGVhZD4K
ICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJyZXNvdXJj
ZXMvc3RhZ2UuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMgaWQ9InN0YWdlIj48
L2NhbnZhcz4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdHJpbmdzLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLSAgICA8Y2FudmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+CiA8L2JvZHk+CiA8L2h0bWw+CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291
cmNlcy9jYW52YXMtc3RhZ2UuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
bWFzdGVyL3Jlc291cmNlcy9jYW52YXMtc3RhZ2UuanMKaW5kZXggY2VlOGZjYTVjY2E0NGNmMzMw
ZDE1MWEyYzgyZWQ0OTc5OTk0Nzg3MS4uNTNkYjEzY2U2ZmJmMjBhODhhNzNkYjEzMWRmZDc3ODUw
NWU5NTlkZCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21h
c3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy1zdGFnZS5qcwpAQCAtMSw2MSAr
MSw0NCBAQAotZnVuY3Rpb24gU2ltcGxlQ2FudmFzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucywgY2Fu
dmFzT2JqZWN0KQotewotICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Ci0g
ICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKLSAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1l
bnQuZ2V0Q29udGV4dCgiMmQiKTsKLSAgICB0aGlzLmNhbnZhc09iamVjdCA9IGNhbnZhc09iamVj
dDsKLSAgICB0aGlzLl9vYmplY3RzID0gW107Ci19Ci1TaW1wbGVDYW52YXNTdGFnZS5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7Ci1TaW1wbGVDYW52YXNTdGFnZS5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBTaW1wbGVDYW52YXNTdGFnZTsKLVNpbXBsZUNhbnZhc1N0
YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpCi17Ci0gICAgaWYgKGNvdW50ID09
IDApCi0gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKK1NpbXBsZUNhbnZhc1N0
YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlLAorICAgIGZ1bmN0aW9uKGNhbnZh
c09iamVjdCkKKyAgICB7CisgICAgICAgIFN0YWdlLmNhbGwodGhpcyk7CisgICAgICAgIHRoaXMu
X2NhbnZhc09iamVjdCA9IGNhbnZhc09iamVjdDsKKyAgICAgICAgdGhpcy5vYmplY3RzID0gW107
CisgICAgfSwgewogCi0gICAgaWYgKGNvdW50ID4gMCkgewotICAgICAgICAvLyBGb3IgcGF0aC1i
YXNlZCB0ZXN0cywgdXNlIHRoZSBvYmplY3QgbGVuZ3RoIGFzIGEgbWF4aW11bSBjb29yZGluYXRl
IHZhbHVlCi0gICAgICAgIC8vIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNlZSB3aGF0IHRoZSB0ZXN0
IGlzIGRvaW5nCi0gICAgICAgIHZhciBjb29yZGluYXRlTWF4aW11bSA9IE1hdGgubWF4KHRoaXMu
X29iamVjdHMubGVuZ3RoLCAyMDApOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50
OyArK2kpIHsKLSAgICAgICAgICAgIHRoaXMuX29iamVjdHMucHVzaChuZXcgdGhpcy5jYW52YXNP
YmplY3QodGhpcywgY29vcmRpbmF0ZU1heGltdW0pKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gdGhpcy5fb2JqZWN0cy5sZW5ndGg7Ci0gICAgfQotCi0gICAgY291bnQgPSBNYXRoLm1pbigt
Y291bnQsIHRoaXMuX29iamVjdHMubGVuZ3RoKTsKLSAgICB0aGlzLl9vYmplY3RzLnNwbGljZSgw
LCBjb3VudCk7Ci0gICAgcmV0dXJuIHRoaXMuX29iamVjdHMubGVuZ3RoOwotfQotU2ltcGxlQ2Fu
dmFzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGNvbnRl
eHQgPSB0aGlzLmNvbnRleHQ7Ci0gICAgdGhpcy5fb2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uKG9i
amVjdCkgewotICAgICAgICBvYmplY3QuZHJhdyhjb250ZXh0KTsKLSAgICB9KTsKLX0KKyAgICBp
bml0aWFsaXplOiBmdW5jdGlvbihiZW5jaG1hcmspCisgICAgeworICAgICAgICBTdGFnZS5wcm90
b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAgICAgIHRoaXMuY29u
dGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOworICAgIH0sCiAKLWZ1bmN0aW9u
IFNpbXBsZUNhbnZhc0FuaW1hdG9yKGJlbmNobWFyaywgb3B0aW9ucykKLXsKLSAgICBTdGFnZUFu
aW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrLCBvcHRpb25zKTsKLSAgICB0aGlzLl9jb250ZXh0
ID0gYmVuY2htYXJrLl9zdGFnZS5jb250ZXh0OwotfQorICAgIHR1bmU6IGZ1bmN0aW9uKGNvdW50
KQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50ID09IDApCisgICAgICAgICAgICByZXR1cm4gdGhp
cy5vYmplY3RzLmxlbmd0aDsKIAotU2ltcGxlQ2FudmFzQW5pbWF0b3IucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShTdGFnZUFuaW1hdG9yLnByb3RvdHlwZSk7Ci1TaW1wbGVDYW52YXNBbmltYXRv
ci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTaW1wbGVDYW52YXNBbmltYXRvcjsKLVNpbXBsZUNh
bnZhc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMu
X2NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS54LCB0
aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueSk7Ci0gICAgcmV0dXJuIFN0YWdlQW5pbWF0b3Iu
cHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aGlzLl9vcHRpb25zKTsKLX0KKyAgICAgICAg
aWYgKGNvdW50ID4gMCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsg
KytpKQorICAgICAgICAgICAgICAgIHRoaXMub2JqZWN0cy5wdXNoKG5ldyB0aGlzLl9jYW52YXNP
YmplY3QodGhpcykpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0cy5sZW5ndGg7Cisg
ICAgICAgIH0KIAorICAgICAgICBjb3VudCA9IE1hdGgubWluKC1jb3VudCwgdGhpcy5vYmplY3Rz
Lmxlbmd0aCk7CisgICAgICAgIHRoaXMub2JqZWN0cy5zcGxpY2UoMCwgY291bnQpOworICAgICAg
ICByZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aDsKKyAgICB9LAogCi1mdW5jdGlvbiBTaW1wbGVD
YW52YXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKSB7Ci0gICAg
U3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NC
YXIpOwotfQotU2ltcGxlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
U3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKLVNpbXBsZUNhbnZhc0JlbmNobWFyay5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBTaW1wbGVDYW52YXNCZW5jaG1hcms7Ci1TaW1wbGVDYW52YXNCZW5j
aG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJu
IG5ldyBTaW1wbGVDYW52YXNBbmltYXRvcih0aGlzLCB0aGlzLl9vcHRpb25zKTsKLX0KKyAgICBh
bmltYXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuY29u
dGV4dDsKKyAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5zaXplLngsIHRoaXMu
c2l6ZS55KTsKKyAgICAgICAgdGhpcy5vYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7
CisgICAgICAgICAgICBvYmplY3QuZHJhdyhjb250ZXh0KTsKKyAgICAgICAgfSk7CisgICAgfSwK
IAorICAgIGNvbXBsZXhpdHk6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Lm9iamVjdHMubGVuZ3RoOworICAgIH0KK30pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXRl
c3RzLmpzCmluZGV4IDU2NGI1OGEzYzZmYmI2YWQ1ODcxYWFhN2ZkZDE3NWI2OGMyODdjZmYuLmMz
ZDc0YjE0MWI5ZGIyZWQ4Y2YxNjQ5MDFhYzBkN2E1Y2VmNzM0ZjIgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy10ZXN0
cy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291
cmNlcy9jYW52YXMtdGVzdHMuanMKQEAgLTIyLDcgKzIyLDcgQEAgQ2FudmFzTGluZVNlZ21lbnQu
cHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjb250ZXh0KQogICAgIGNvbnRleHQuc3Ryb2tlU3R5
bGUgPSB0aGlzLl9jb2xvcjsKICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IHRoaXMuX2xpbmVXaWR0
aDsKIAotICAgIHRoaXMuX2xlbmd0aCs9TWF0aC5zaW4oRGF0ZS5ub3coKS8xMDAqdGhpcy5fb21l
Z2EpOworICAgIHRoaXMuX2xlbmd0aCArPSBNYXRoLnNpbihEYXRlLm5vdygpLzEwMCp0aGlzLl9v
bWVnYSk7CiAKICAgICBjb250ZXh0LmJlZ2luUGF0aCgpOwogICAgIGNvbnRleHQubW92ZVRvKHRo
aXMuX3N0YXJ0WCwgdGhpcy5fc3RhcnRZKTsKQEAgLTQxLDcgKzQxLDcgQEAgZnVuY3Rpb24gQ2Fu
dmFzQXJjKHN0YWdlKQogCiAgICAgdGhpcy5fcG9pbnQgPSBuZXcgUG9pbnQoZGlzdGFuY2VYICog
KHJhbmRYICsgKHJhbmRZICUgMikgLyAyKSwgZGlzdGFuY2VZICogKHJhbmRZICsgLjUpKTsKIAot
ICAgIHRoaXMuX3JhZGl1cyA9IDIwICsgTWF0aC5wb3coTWF0aC5yYW5kb20oKSwgNSkgKiAoTWF0
aC5taW4oZGlzdGFuY2VYLCBkaXN0YW5jZVkpIC8gMS42KTsKKyAgICB0aGlzLl9yYWRpdXMgPSAy
MCArIE1hdGgucG93KE1hdGgucmFuZG9tKCksIDUpICogKE1hdGgubWluKGRpc3RhbmNlWCwgZGlz
dGFuY2VZKSAvIDEuOCk7CiAgICAgdGhpcy5fc3RhcnRBbmdsZSA9IHN0YWdlLnJhbmRvbUFuZ2xl
KCk7CiAgICAgdGhpcy5fZW5kQW5nbGUgPSBzdGFnZS5yYW5kb21BbmdsZSgpOwogICAgIHRoaXMu
X29tZWdhID0gKE1hdGgucmFuZG9tKCkgLSAwLjUpICogMC4zOwpAQCAtNzQsNiArNzQsOCBAQCBD
YW52YXNBcmMucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjb250ZXh0KQogICAgIH0KIH07CiAK
Ky8vIENhbnZhc0xpbmVQb2ludCBjb250YWlucyBubyBkcmF3KCkgbWV0aG9kIHNpbmNlIGl0IGlz
IGVpdGhlciBtb3ZlVG8gb3IKKy8vIGxpbmVUbyBkZXBlbmRpbmcgb24gaXRzIGluZGV4LgogZnVu
Y3Rpb24gQ2FudmFzTGluZVBvaW50KHN0YWdlLCBjb29yZGluYXRlTWF4aW11bSkKIHsKICAgICB2
YXIgWF9MT09QUyA9IDQwOwpAQCAtODMsOCArODUsOCBAQCBmdW5jdGlvbiBDYW52YXNMaW5lUG9p
bnQoc3RhZ2UsIGNvb3JkaW5hdGVNYXhpbXVtKQogICAgIHZhciBvZmZzZXQgPSBvZmZzZXRzW01h
dGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG9mZnNldHMubGVuZ3RoKV07CiAKICAgICB0aGlzLmNv
b3JkaW5hdGUgPSBuZXcgUG9pbnQoWF9MT09QUy8yLCBZX0xPT1BTLzIpOwotICAgIGlmIChzdGFn
ZS5fb2JqZWN0cy5sZW5ndGgpIHsKLSAgICAgICAgdmFyIGhlYWQgPSBzdGFnZS5fb2JqZWN0c1tz
dGFnZS5fb2JqZWN0cy5sZW5ndGggLSAxXS5jb29yZGluYXRlOworICAgIGlmIChzdGFnZS5vYmpl
Y3RzLmxlbmd0aCkgeworICAgICAgICB2YXIgaGVhZCA9IHN0YWdlLm9iamVjdHNbc3RhZ2Uub2Jq
ZWN0cy5sZW5ndGggLSAxXS5jb29yZGluYXRlOwogICAgICAgICB0aGlzLmNvb3JkaW5hdGUueCA9
IGhlYWQueDsKICAgICAgICAgdGhpcy5jb29yZGluYXRlLnkgPSBoZWFkLnk7CiAgICAgfQpAQCAt
MTAzLDExOSArMTA1LDExNiBAQCBmdW5jdGlvbiBDYW52YXNMaW5lUG9pbnQoc3RhZ2UsIGNvb3Jk
aW5hdGVNYXhpbXVtKQogICAgIHZhciB4T2ZmID0gLjI1ICogKHRoaXMuY29vcmRpbmF0ZS55ICUg
Mik7CiAgICAgdmFyIHJhbmRYID0gKHhPZmYgKyB0aGlzLmNvb3JkaW5hdGUueCkgKiBzdGFnZS5z
aXplLnggLyBYX0xPT1BTOwogICAgIHZhciByYW5kWSA9IHRoaXMuY29vcmRpbmF0ZS55ICogc3Rh
Z2Uuc2l6ZS55IC8gWV9MT09QUzsKLSAgICB2YXIgY29sb3JzID0gWyIjMTAxMDEwIiwgIiM4MDgw
ODAiLCAiI2MwYzBjMCIsICIjZTAxMDQwIl07Ci0gICAgdGhpcy5fY29sb3IgPSBjb2xvcnNbTWF0
aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY29sb3JzLmxlbmd0aCldOwotCi0gICAgdGhpcy5fd2lk
dGggPSBNYXRoLnBvdyhNYXRoLnJhbmRvbSgpLCA1KSAqIDIwICsgMTsKLSAgICB0aGlzLl9pc1Nw
bGl0ID0gTWF0aC5yYW5kb20oKSA+IDAuOTsKLSAgICB0aGlzLl9wb2ludCA9IG5ldyBQb2ludChy
YW5kWCwgcmFuZFkpOworICAgIHZhciBjb2xvcnMgPSBbIiMxMDEwMTAiLCAiIzgwODA4MCIsICIj
YzBjMGMwIiwgIiMxMDEwMTAiLCAiIzgwODA4MCIsICIjYzBjMGMwIiwgIiNlMDEwNDAiXTsKKyAg
ICB0aGlzLmNvbG9yID0gY29sb3JzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNvbG9ycy5s
ZW5ndGgpXTsKIAorICAgIHRoaXMud2lkdGggPSBNYXRoLnBvdyhNYXRoLnJhbmRvbSgpLCA1KSAq
IDIwICsgMTsKKyAgICB0aGlzLmlzU3BsaXQgPSBNYXRoLnJhbmRvbSgpID4gMC45OworICAgIHRo
aXMucG9pbnQgPSBuZXcgUG9pbnQocmFuZFgsIHJhbmRZKTsKIH0KIAotQ2FudmFzTGluZVBvaW50
LnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oY29udGV4dCwgc3RhZ2UpCi17Ci0gICAgY29udGV4
dC5saW5lVG8odGhpcy5fcG9pbnQueCwgdGhpcy5fcG9pbnQueSk7Ci19OwotCi0KIC8vID09PSBT
VEFHRVMgPT09CiAKLWZ1bmN0aW9uIFNpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZShlbGVtZW50
LCBvcHRpb25zLCBjYW52YXNPYmplY3QpCi17Ci0gICAgU2ltcGxlQ2FudmFzU3RhZ2UuY2FsbCh0
aGlzLCBlbGVtZW50LCBvcHRpb25zLCBjYW52YXNPYmplY3QpOwotICAgIHRoaXMuY29udGV4dC5s
aW5lQ2FwID0gb3B0aW9uc1sibGluZUNhcCJdIHx8ICJidXR0IjsKLSAgICB0aGlzLmNvbnRleHQu
bGluZUpvaW4gPSBvcHRpb25zWyJsaW5lSm9pbiJdIHx8ICJiZXZlbCI7Ci19Ci1TaW1wbGVDYW52
YXNQYXRoU3Ryb2tlU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTaW1wbGVDYW52YXNT
dGFnZS5wcm90b3R5cGUpOwotU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IFNpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZTsKLVNpbXBsZUNhbnZhc1Bh
dGhTdHJva2VTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkgewotICAgIHZhciBj
b250ZXh0ID0gdGhpcy5jb250ZXh0OwotICAgIHZhciBzdGFnZSA9IHRoaXM7Ci0KLSAgICBjb250
ZXh0LmJlZ2luUGF0aCgpOwotICAgIHRoaXMuX29iamVjdHMuZm9yRWFjaChmdW5jdGlvbihvYmpl
Y3QsIGluZGV4KSB7Ci0gICAgICAgIGlmIChpbmRleCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LmxpbmVXaWR0aCA9IG9iamVjdC5fd2lkdGg7Ci0gICAgICAgICAgICBjb250ZXh0LnN0cm9r
ZVN0eWxlID0gb2JqZWN0Ll9jb2xvcjsKLSAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKG9iamVj
dC5fcG9pbnQueCwgb2JqZWN0Ll9wb2ludC55KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGlmIChvYmplY3QuX2lzU3BsaXQpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9r
ZSgpOwotCi0gICAgICAgICAgICAgICAgY29udGV4dC5saW5lV2lkdGggPSBvYmplY3QuX3dpZHRo
OwotICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBvYmplY3QuX2NvbG9yOwot
ICAgICAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGlmIChNYXRoLnJhbmRvbSgpID4gMC45OTkpCi0gICAgICAgICAgICAgICAgb2Jq
ZWN0Ll9pc1NwbGl0ID0gIW9iamVjdC5faXNTcGxpdDsKLQotICAgICAgICAgICAgb2JqZWN0LmRy
YXcoY29udGV4dCk7CitDYW52YXNMaW5lU2VnbWVudFN0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1
YmNsYXNzKFNpbXBsZUNhbnZhc1N0YWdlLAorICAgIGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IFNpbXBsZUNhbnZhc1N0YWdlLmNhbGwodGhpcywgQ2FudmFzTGluZVNlZ21lbnQpOworICAgIH0s
IHsKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykKKyAgICB7CisgICAgICAg
IFNpbXBsZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgYmVuY2ht
YXJrKTsKKyAgICAgICAgdGhpcy5jb250ZXh0LmxpbmVDYXAgPSBiZW5jaG1hcmsub3B0aW9uc1si
bGluZUNhcCJdIHx8ICJidXR0IjsKKyAgICAgICAgdGhpcy5jaXJjbGVSYWRpdXMgPSB0aGlzLnNp
emUueCAvIDMgLyAyIC0gMjA7CisgICAgfSwKKworICAgIGFuaW1hdGU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0OworICAgICAgICB2YXIgc3Rh
Z2UgPSB0aGlzOworCisgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuc2l6ZS54
LCB0aGlzLnNpemUueSk7CisgICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gMzA7CisgICAgICAg
IGZvcih2YXIgaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tl
U3R5bGUgPSBbIiNlMDEwNDAiLCAiIzEwYzAzMCIsICIjZTA1MDEwIl1baV07CisgICAgICAgICAg
ICBjb250ZXh0LmZpbGxTdHlsZSA9IFsiIzcwMDUxZCIsICIjMDE2MTEyIiwgIiM3MDI3MDEiXVtp
XTsKKyAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC5hcmMoKDAuNSArIGkpIC8gMyAqIHN0YWdlLnNpemUueCwgc3RhZ2Uuc2l6ZS55LzIsIHN0
YWdlLmNpcmNsZVJhZGl1cywgMCwgTWF0aC5QSSoyKTsKKyAgICAgICAgICAgIGNvbnRleHQuc3Ry
b2tlKCk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGwoKTsKICAgICAgICAgfQotICAgIH0pOwot
ICAgIGNvbnRleHQuc3Ryb2tlKCk7Ci19CiAKLWZ1bmN0aW9uIENhbnZhc0xpbmVTZWdtZW50U3Rh
Z2UoZWxlbWVudCwgb3B0aW9ucykKLXsKLSAgICBTaW1wbGVDYW52YXNTdGFnZS5jYWxsKHRoaXMs
IGVsZW1lbnQsIG9wdGlvbnMsIENhbnZhc0xpbmVTZWdtZW50KTsKLSAgICB0aGlzLmNvbnRleHQu
bGluZUNhcCA9IG9wdGlvbnNbImxpbmVDYXAiXSB8fCAiYnV0dCI7Ci0gICAgdGhpcy5jaXJjbGVS
YWRpdXMgPSB0aGlzLnNpemUueCAvIDMgLyAyIC0gMjA7Ci19Ci1DYW52YXNMaW5lU2VnbWVudFN0
YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU2ltcGxlQ2FudmFzU3RhZ2UucHJvdG90eXBl
KTsKLUNhbnZhc0xpbmVTZWdtZW50U3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2FudmFz
TGluZVNlZ21lbnRTdGFnZTsKLUNhbnZhc0xpbmVTZWdtZW50U3RhZ2UucHJvdG90eXBlLmFuaW1h
dGUgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGNvbnRleHQgPSB0aGlzLmNvbnRleHQ7Ci0gICAg
dmFyIHN0YWdlID0gdGhpczsKLQotICAgIGNvbnRleHQubGluZVdpZHRoID0gMzA7Ci0gICAgZm9y
KHZhciBpID0gMDsgaSA8IDM7IGkrKykgewotICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0g
WyIjZTAxMDQwIiwgIiMxMGMwMzAiLCAiI2UwNTAxMCJdW2ldOwotICAgICAgICBjb250ZXh0LmZp
bGxTdHlsZSA9IFsiIzcwMDUxZCIsICIjMDE2MTEyIiwgIiM3MDI3MDEiXVtpXTsKKyAgICAgICAg
dGhpcy5vYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7CisgICAgICAgICAgICBvYmpl
Y3QuZHJhdyhjb250ZXh0KTsKKyAgICAgICAgfSk7CisgICAgfQorfSk7CisKK0NhbnZhc0xpbmVQ
YXRoU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU2ltcGxlQ2FudmFzU3RhZ2UsCisg
ICAgZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgU2ltcGxlQ2FudmFzU3RhZ2UuY2FsbCh0aGlz
LCBDYW52YXNMaW5lUG9pbnQpOworICAgIH0sIHsKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9u
KGJlbmNobWFyaykKKyAgICB7CisgICAgICAgIFNpbXBsZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5p
bml0aWFsaXplLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAgICAgICAgdGhpcy5jb250ZXh0Lmxp
bmVKb2luID0gYmVuY2htYXJrLm9wdGlvbnNbImxpbmVKb2luIl0gfHwgImJldmVsIjsKKyAgICAg
ICAgdGhpcy5jb250ZXh0LmxpbmVDYXAgPSBiZW5jaG1hcmsub3B0aW9uc1sibGluZUNhcCJdIHx8
ICJidXR0IjsKKyAgICB9LAorCisgICAgYW5pbWF0ZTogZnVuY3Rpb24oKSB7CisgICAgICAgIHZh
ciBjb250ZXh0ID0gdGhpcy5jb250ZXh0OworICAgICAgICB2YXIgc3RhZ2UgPSB0aGlzOworCisg
ICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuc2l6ZS54LCB0aGlzLnNpemUueSk7
CiAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7Ci0gICAgICAgICAgICBjb250ZXh0LmFyYygo
MC41ICsgaSkgLyAzICogc3RhZ2Uuc2l6ZS54LCBzdGFnZS5zaXplLnkvMiwgc3RhZ2UuY2lyY2xl
UmFkaXVzLCAwLCBNYXRoLlBJKjIpOworICAgICAgICB0aGlzLm9iamVjdHMuZm9yRWFjaChmdW5j
dGlvbihvYmplY3QsIGluZGV4KSB7CisgICAgICAgICAgICBpZiAoaW5kZXggPT0gMCkgeworICAg
ICAgICAgICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gb2JqZWN0LndpZHRoOworICAgICAgICAg
ICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBvYmplY3QuY29sb3I7CisgICAgICAgICAgICAg
ICAgY29udGV4dC5tb3ZlVG8ob2JqZWN0LnBvaW50LngsIG9iamVjdC5wb2ludC55KTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKG9iamVjdC5pc1NwbGl0KSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5saW5lV2lkdGggPSBvYmplY3Qud2lkdGg7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBvYmplY3QuY29sb3I7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgY29udGV4dC5saW5lVG8ob2JqZWN0LnBvaW50LngsIG9iamVjdC5wb2ludC55KTsKKworICAg
ICAgICAgICAgICAgIGlmIChNYXRoLnJhbmRvbSgpID4gMC45OTkpCisgICAgICAgICAgICAgICAg
ICAgIG9iamVjdC5pc1NwbGl0ID0gIW9iamVjdC5pc1NwbGl0OworICAgICAgICAgICAgfQorICAg
ICAgICB9KTsKICAgICAgICAgY29udGV4dC5zdHJva2UoKTsKLSAgICAgICAgY29udGV4dC5maWxs
KCk7CiAgICAgfQotCi0gICAgdGhpcy5fb2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uKG9iamVjdCkg
ewotICAgICAgICBvYmplY3QuZHJhdyhjb250ZXh0KTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24g
Q2FudmFzTGluZVBhdGhTdGFnZShlbGVtZW50LCBvcHRpb25zKQotewotICAgIFNpbXBsZUNhbnZh
c1BhdGhTdHJva2VTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMsIENhbnZhc0xpbmVQ
b2ludCk7Ci0gICAgdGhpcy5jb250ZXh0LmxpbmVKb2luID0gb3B0aW9uc1sibGluZUpvaW4iXSB8
fCAiYmV2ZWwiOwotICAgIHRoaXMuY29udGV4dC5saW5lQ2FwID0gb3B0aW9uc1sibGluZUNhcCJd
IHx8ICJidXR0IjsKLX0KLUNhbnZhc0xpbmVQYXRoU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2UucHJvdG90eXBlKTsKLUNhbnZhc0xpbmVQ
YXRoU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2FudmFzTGluZVBhdGhTdGFnZTsKK30p
OwogCiAvLyA9PT0gQkVOQ0hNQVJLID09PQogCi1mdW5jdGlvbiBDYW52YXNQYXRoQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKLXsKLSAgICBTaW1wbGVDYW52YXNC
ZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwot
fQotQ2FudmFzUGF0aEJlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNpbXBsZUNh
bnZhc0JlbmNobWFyay5wcm90b3R5cGUpOwotQ2FudmFzUGF0aEJlbmNobWFyay5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBDYW52YXNQYXRoQmVuY2htYXJrOwotQ2FudmFzUGF0aEJlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQotewotICAgIHN3aXRjaCAo
dGhpcy5fb3B0aW9uc1sicGF0aFR5cGUiXSkgewotICAgIGNhc2UgImxpbmUiOgotICAgICAgICBy
ZXR1cm4gbmV3IENhbnZhc0xpbmVTZWdtZW50U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7
Ci0gICAgY2FzZSAiYXJjcyI6Ci0gICAgICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzU3RhZ2Uo
ZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2FudmFzQXJjKTsKLSAgICBjYXNlICJsaW5lUGF0aCI6
Ci0gICAgICAgIHJldHVybiBuZXcgQ2FudmFzTGluZVBhdGhTdGFnZShlbGVtZW50LCB0aGlzLl9v
cHRpb25zKTsKK0NhbnZhc1BhdGhCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3Mo
QmVuY2htYXJrLAorICAgIGZ1bmN0aW9uKG9wdGlvbnMpCisgICAgeworICAgICAgICB2YXIgc3Rh
Z2U7CisgICAgICAgIHN3aXRjaCAob3B0aW9uc1sicGF0aFR5cGUiXSkgeworICAgICAgICBjYXNl
ICJsaW5lIjoKKyAgICAgICAgICAgIHN0YWdlID0gbmV3IENhbnZhc0xpbmVTZWdtZW50U3RhZ2Uo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJsaW5lUGF0aCI6CisgICAgICAg
ICAgICBzdGFnZSA9IG5ldyBDYW52YXNMaW5lUGF0aFN0YWdlKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAiYXJjcyI6CisgICAgICAgICAgICBzdGFnZSA9IG5ldyBTaW1wbGVD
YW52YXNTdGFnZShDYW52YXNBcmMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdGFnZSwgb3B0aW9ucyk7CiAgICAgfQotfQor
KTsKIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCi17Ci0gICAgcmV0dXJuIG5ldyBDYW52YXNQYXRoQmVu
Y2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci19Cit3aW5kb3cuYmVu
Y2htYXJrQ2xhc3MgPSBDYW52YXNQYXRoQmVuY2htYXJrOwogCiB9KSgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9taXNjL2NhbnZhcy1lbGVjdHJvbnMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9taXNjL2NhbnZhcy1lbGVjdHJvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGRhMDNh
N2Y5ZTY2YjA2OTk0ZDkxNTQ5ZDMxMGNkYzAxZjQwYzMzCi0tLSAvZGV2L251bGwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvY2FudmFzLWVsZWN0cm9ucy5odG1s
CkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMv
c3RhZ2UuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMgaWQ9InN0YWdlIj48L2Nh
bnZhcz4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdHJpbmdzLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvbWlzYy9jYW52YXMtc3RhcnMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9taXNjL2NhbnZhcy1zdGFycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhYmNiMTE0ZTU2NWQzNGM3
Zjg4MmYwODUyZDdlOTMxOTFiYmM0ODcKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9jYW52YXMtc3RhcnMuaHRtbApAQCAtMCwwICsxLDE2
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RyaW5ncy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgICA8Y2FudmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9jb21wb3NpdGlu
Zy10cmFuc2Zvcm1zLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlz
Yy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmh0bWwKaW5kZXggZGViZjU4MjYyNDJhZmM4NWZlNGRh
YjRiZTkzYzhkYjQ1MzMzYmU5Yi4uNmMwNzc4YzdmZjY4ODY5MjUyNDYwNDZlYTRhMWM4Njc0M2Ji
NTM5ZSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2Mv
Y29tcG9zaXRpbmctdHJhbnNmb3Jtcy5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9taXNjL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMuaHRtbApAQCAtMSw2ICsxLDcg
QEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KICAg
ICA8c3R5bGU+CiAgICAgICAgIGltZyB7CiAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CkBAIC04LDE4ICs5LDE2IEBACiAgICAgICAgICAgICBoZWlnaHQ6IDgwcHg7CiAgICAgICAgIH0K
ICAgICA8L3N0eWxlPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3Mi
IGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRp
diBpZD0ic3RhZ2UiPjwvZGl2PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxn
b3JpdGhtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0
cmluZ3MuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2Ft
cGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRl
bnNpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGgu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9z
Y3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+
ICAKICAgICA8c2NyaXB0IHNyYz0iLi4vYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Y29tcG9zaXRpbmctdHJhbnNmb3Jtcy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAg
ICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLWVs
ZWN0cm9ucy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291
cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNTgwNGYzOGU5ZDdiOTdmNDUw
MzQ5MGVhMDZmNDYzMGU3Y2YyZWMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcwpAQCAt
MCwwICsxLDExMCBAQAorKGZ1bmN0aW9uKCkgeworCitmdW5jdGlvbiBDYW52YXNFbGVjdHJvbihz
dGFnZSkKK3sKKyAgICB0aGlzLl9jb250ZXh0ID0gc3RhZ2UuY29udGV4dDsKKyAgICB0aGlzLl9z
dGFnZVNpemUgPSBzdGFnZS5zaXplOworCisgICAgdmFyIG1pblNpZGUgPSBNYXRoLm1pbih0aGlz
Ll9zdGFnZVNpemUud2lkdGgsIHRoaXMuX3N0YWdlU2l6ZS5oZWlnaHQpOworICAgIHZhciByYWRp
dXNYID0gc3RhZ2UucmFuZG9tKG1pblNpZGUgLyA4LCA3ICogbWluU2lkZSAvIDE2KTsKKyAgICB2
YXIgcmFkaXVzWSA9IHN0YWdlLnJhbmRvbShtaW5TaWRlIC8gOCwgMyAqIHJhZGl1c1ggLyA0KTsK
KyAgICB0aGlzLl9vcmJpdFJhZGl1c2VzID0gbmV3IFBvaW50KHJhZGl1c1gsIHJhZGl1c1kpOwor
ICAgIHRoaXMuX3JhZGl1cyA9IHN0YWdlLnJhbmRvbSg1LCAxNSk7CisgICAgdGhpcy5fZGlyZWN0
aW9uID0gc3RhZ2UucmFuZG9tSW50KDAsIDIpOworICAgIHRoaXMuX2FuZ2xlID0gc3RhZ2UucmFu
ZG9tSW50KDAsIDM2MCk7CisgICAgdGhpcy5fY29sb3IgPSBzdGFnZS5yYW5kb21Db2xvcigpOwor
ICAgIHRoaXMuX3JvdGF0ZXIgPSBzdGFnZS5yYW5kb21Sb3RhdGVyKCk7CisgICAgdGhpcy5fcm90
YXRlci5uZXh0KHN0YWdlLnJhbmRvbSgwLCB0aGlzLl9yb3RhdGVyLmludGVydmFsKSk7Cit9CisK
K0NhbnZhc0VsZWN0cm9uLnByb3RvdHlwZSA9IHsKKyAgICBfZHJhdzogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgb2JqZWN0IG9uIHRo
ZSBlbGxpcHNlLgorICAgICAgICB2YXIgYW5nbGUgPSB0aGlzLl9kaXJlY3Rpb24gPyB0aGlzLl9y
b3RhdGVyLmRlZ3JlZSgpIDogMzYwIC0gdGhpcy5fcm90YXRlci5kZWdyZWUoKTsKKyAgICAgICAg
dmFyIHBvc2l0aW9uID0gdGhpcy5fc3RhZ2VTaXplLmNlbnRlci5zdWJ0cmFjdChQb2ludC5wb2lu
dE9uRWxsaXBzZShhbmdsZSwgdGhpcy5fb3JiaXRSYWRpdXNlcykpOworCisgICAgICAgIHRoaXMu
X2NvbnRleHQuc2F2ZSgpOworICAgICAgICAgICAgdGhpcy5fY29udGV4dC50cmFuc2xhdGUodGhp
cy5fc3RhZ2VTaXplLmNlbnRlci54LCB0aGlzLl9zdGFnZVNpemUuY2VudGVyLnkpOworICAgICAg
ICAgICAgdGhpcy5fY29udGV4dC5yb3RhdGUodGhpcy5fYW5nbGUgKiBNYXRoLlBJIC8gMTgwKTsK
KyAgICAgICAgICAgIHRoaXMuX2NvbnRleHQudHJhbnNsYXRlKC10aGlzLl9zdGFnZVNpemUuY2Vu
dGVyLngsIC10aGlzLl9zdGFnZVNpemUuY2VudGVyLnkpOworCisgICAgICAgICAgICAvLyBTZXQg
dGhlIHN0cm9rZSBhbmQgdGhlIGZpbGwgY29sb3JzCisgICAgICAgICAgICB0aGlzLl9jb250ZXh0
LnN0cm9rZVN0eWxlID0gInJnYmEoMTkyLCAxOTIsIDE5MiwgMC45KSI7CisgICAgICAgICAgICB0
aGlzLl9jb250ZXh0LmZpbGxTdHlsZSA9IHRoaXMuX2NvbG9yOworCisgICAgICAgICAgICAvLyBE
cmF3IHRoZSBvcmJpdCBvZiB0aGUgb2JqZWN0LgorICAgICAgICAgICAgdGhpcy5fY29udGV4dC5i
ZWdpblBhdGgoKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRleHQuZWxsaXBzZSh0aGlzLl9zdGFn
ZVNpemUuY2VudGVyLngsIHRoaXMuX3N0YWdlU2l6ZS5jZW50ZXIueSwgdGhpcy5fb3JiaXRSYWRp
dXNlcy54LCB0aGlzLl9vcmJpdFJhZGl1c2VzLnksIDAsIDAsIDIgKiBNYXRoLlBJKTsKKyAgICAg
ICAgICAgIHRoaXMuX2NvbnRleHQuc3Ryb2tlKCk7CisKKyAgICAgICAgICAgIC8vIERyYXcgdGhl
IG9iamVjdC4KKyAgICAgICAgICAgIHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgICAg
ICAgICB0aGlzLl9jb250ZXh0LmFyYyhwb3NpdGlvbi54LCBwb3NpdGlvbi55LCB0aGlzLl9yYWRp
dXMsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRleHQuZmls
bCgpOworICAgICAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKKyAgICB9LAorCisgICAgYW5p
bWF0ZTogZnVuY3Rpb24odGltZURlbHRhKQorICAgIHsKKyAgICAgICAgdGhpcy5fcm90YXRlci5u
ZXh0KHRpbWVEZWx0YSAvIDEwMCk7CisgICAgICAgIHRoaXMuX2RyYXcoKTsKKyAgICB9Cit9Owor
CitDYW52YXNFbGVjdHJvbnNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTdGFnZSwK
KyAgICBmdW5jdGlvbigpCisgICAgeworICAgICAgICBTdGFnZS5jYWxsKHRoaXMpOworICAgICAg
ICB0aGlzLl9lbGVjdHJvbnMgPSBbXTsKKyAgICB9LCB7CisKKyAgICBpbml0aWFsaXplOiBmdW5j
dGlvbihiZW5jaG1hcmspCisgICAgeworICAgICAgICBTdGFnZS5wcm90b3R5cGUuaW5pdGlhbGl6
ZS5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAgICAgIHRoaXMuY29udGV4dCA9IHRoaXMuZWxl
bWVudC5nZXRDb250ZXh0KCIyZCIpOworICAgIH0sCisKKyAgICB0dW5lOiBmdW5jdGlvbihjb3Vu
dCkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX2VsZWN0cm9ucy5sZW5ndGg7CisKKyAgICAgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgICAgIHRo
aXMuX2VsZWN0cm9ucy5wdXNoKG5ldyBDYW52YXNFbGVjdHJvbih0aGlzKSk7CisgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fZWxlY3Ryb25zLmxlbmd0aDsKKyAgICAgICAgfQorCisgICAgICAgIGNv
dW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9lbGVjdHJvbnMubGVuZ3RoKTsKKyAgICAgICAg
dGhpcy5fZWxlY3Ryb25zLnNwbGljZSgtY291bnQsIGNvdW50KTsKKworICAgICAgICByZXR1cm4g
dGhpcy5fZWxlY3Ryb25zLmxlbmd0aDsKKyAgICB9LAorCisgICAgYW5pbWF0ZTogZnVuY3Rpb24o
dGltZURlbHRhKQorICAgIHsKKyAgICAgICAgdGhpcy5jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0
aGlzLnNpemUueCwgdGhpcy5zaXplLnkpOworCisgICAgICAgIC8vIERyYXcgYSBiaWcgc3RhciBp
biB0aGUgbWlkZGxlLgorICAgICAgICB0aGlzLmNvbnRleHQuZmlsbFN0eWxlID0gIm9yYW5nZSI7
CisgICAgICAgIHRoaXMuY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgdGhpcy5jb250ZXh0
LmFyYyh0aGlzLnNpemUuY2VudGVyLngsIHRoaXMuc2l6ZS5jZW50ZXIueSwgNTAsIDAsIE1hdGgu
UEkgKiAyLCB0cnVlKTsKKyAgICAgICAgdGhpcy5jb250ZXh0LmZpbGwoKTsKKworICAgICAgICB0
aGlzLl9lbGVjdHJvbnMuZm9yRWFjaChmdW5jdGlvbihlbGVjdHJvbikgeworICAgICAgICAgICAg
ZWxlY3Ryb24uYW5pbWF0ZSh0aW1lRGVsdGEpOworICAgICAgICB9KTsKKyAgICB9Cit9KTsKKwor
Q2FudmFzRWxlY3Ryb25zQmVuY2htYXJrID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJlbmNo
bWFyaywKKyAgICBmdW5jdGlvbihvcHRpb25zKQorICAgIHsKKyAgICAgICAgQmVuY2htYXJrLmNh
bGwodGhpcywgbmV3IENhbnZhc0VsZWN0cm9uc1N0YWdlKCksIG9wdGlvbnMpOworICAgIH0KKyk7
CisKK3dpbmRvdy5iZW5jaG1hcmtDbGFzcyA9IENhbnZhc0VsZWN0cm9uc0JlbmNobWFyazsKKwor
fSkoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NhbnZhcy1z
dGFycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lODUzOTc2MTkyZGY4MTQwZTU5YmM3ODU2MTkwMmU1NjNlNzNi
MTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L21pc2MvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcwpAQCAtMCwwICsxLDEwNiBAQAorKGZ1bmN0
aW9uKCkgeworCitmdW5jdGlvbiBDYW52YXNTdGFyKHN0YWdlKQoreworICAgIHRoaXMuX2NvbnRl
eHQgPSBzdGFnZS5jb250ZXh0OworCisgICAgdGhpcy5fc2l6ZSA9IHN0YWdlLnJhbmRvbVNxdWFy
ZVNpemUoNSwgMjApOworICAgIHRoaXMuX2NlbnRlciA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKHN0
YWdlLnNpemUuc3VidHJhY3QodGhpcy5fc2l6ZSkpLmFkZCh0aGlzLl9zaXplLmNlbnRlcik7Cisg
ICAgdGhpcy5fcm90YXRlWCA9IDA7CisgICAgdGhpcy5fcm90YXRlRGVsdGFYID0gc3RhZ2UucmFu
ZG9tKDAuMywgMC43KTsKK30KKworQ2FudmFzU3Rhci5wcm90b3R5cGUgPSB7CisgICAgX2RyYXc6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOworICAgICAg
ICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSh0aGlzLl9jZW50ZXIueCwgdGhpcy5fY2VudGVyLnkp
OworCisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxlID0gJ3llbGxvdyc7CisgICAgICAg
IHRoaXMuX2NvbnRleHQuc3Ryb2tlU3R5bGUgPSAnd2hpdGUnOworCisgICAgICAgIHRoaXMuX2Nv
bnRleHQubGluZVdpZHRoID0gMTsKKworICAgICAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgp
OworICAgICAgICB0aGlzLl9jb250ZXh0Lm1vdmVUbyggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMCwgLXRoaXMuX3NpemUueSAvICAyKTsKKyAgICAgICAgdGhpcy5fY29udGV4
dC5saW5lVG8oK3RoaXMuX3NpemUueCAvIDIwIC0gdGhpcy5fcm90YXRlWCAvIDUsIC10aGlzLl9z
aXplLnkgLyAxMCk7CisgICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKCt0aGlzLl9zaXplLngg
LyA0ICAtIHRoaXMuX3JvdGF0ZVgsICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICB0
aGlzLl9jb250ZXh0LmxpbmVUbygrdGhpcy5fc2l6ZS54IC8gMjAgLSB0aGlzLl9yb3RhdGVYIC8g
NSwgK3RoaXMuX3NpemUueSAvIDEwKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICt0aGlzLl9zaXplLnkgLyAgMik7
CisgICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKC10aGlzLl9zaXplLnggLyAyMCArIHRoaXMu
X3JvdGF0ZVggLyA1LCArdGhpcy5fc2l6ZS55IC8gMTApOworICAgICAgICB0aGlzLl9jb250ZXh0
LmxpbmVUbygtdGhpcy5fc2l6ZS54IC8gIDQgKyB0aGlzLl9yb3RhdGVYLCAgICAgICAgICAgICAg
ICAgICAgICAwKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oLXRoaXMuX3NpemUueCAv
IDIwICsgdGhpcy5fcm90YXRlWCAvIDUsIC10aGlzLl9zaXplLnkgLyAxMCk7CisgICAgICAgIHRo
aXMuX2NvbnRleHQubGluZVRvKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LCAtdGhpcy5fc2l6ZS55IC8gIDIpOworCisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbCgpOwor
ICAgICAgICB0aGlzLl9jb250ZXh0LnN0cm9rZSgpOworICAgICAgICB0aGlzLl9jb250ZXh0LmNs
b3NlUGF0aCgpOworICAgICAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKKyAgICB9LAorCisg
ICAgYW5pbWF0ZTogZnVuY3Rpb24odGltZURlbHRhKQorICAgIHsKKyAgICAgICAgdGhpcy5fcm90
YXRlWCArPSB0aGlzLl9yb3RhdGVEZWx0YVg7CisKKyAgICAgICAgaWYgKHRoaXMuX3JvdGF0ZVgg
PiB0aGlzLl9zaXplLnggLyA0IHx8IHRoaXMuX3JvdGF0ZVggPCAtdGhpcy5fc2l6ZS54IC8gNCkg
eworICAgICAgICAgICAgdGhpcy5fcm90YXRlRGVsdGFYID0gLXRoaXMuX3JvdGF0ZURlbHRhWDsK
KyAgICAgICAgICAgIHRoaXMuX3JvdGF0ZVggKz0gdGhpcy5fcm90YXRlRGVsdGFYOworICAgICAg
ICB9CisKKyAgICAgICAgdGhpcy5fZHJhdygpOworICAgIH0KK307CisKK0NhbnZhc1N0YXJzU3Rh
Z2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2UsCisgICAgZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgU3RhZ2UuY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy5fb2JqZWN0cyA9IFtd
OworICAgIH0sIHsKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykKKyAgICB7
CisgICAgICAgIFN0YWdlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgYmVuY2htYXJr
KTsKKyAgICAgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoIjJkIik7
CisgICAgfSwKKworICAgIHR1bmU6IGZ1bmN0aW9uKGNvdW50KQorICAgIHsKKyAgICAgICAgaWYg
KGNvdW50ID09IDApCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0cy5sZW5ndGg7CisK
KyAgICAgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBjb3VudDsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMuX29iamVjdHMucHVzaChuZXcgQ2Fu
dmFzU3Rhcih0aGlzKSk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0cy5sZW5ndGg7
CisgICAgICAgIH0KKworICAgICAgICBjb3VudCA9IE1hdGgubWluKC1jb3VudCwgdGhpcy5fb2Jq
ZWN0cy5sZW5ndGgpOworICAgICAgICB0aGlzLl9vYmplY3RzLnNwbGljZSgtY291bnQsIGNvdW50
KTsKKworICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0cy5sZW5ndGg7CisgICAgfSwKKworICAg
IGFuaW1hdGU6IGZ1bmN0aW9uKHRpbWVEZWx0YSkKKyAgICB7CisgICAgICAgIHRoaXMuY29udGV4
dC5iZWdpblBhdGgoKTsKKyAgICAgICAgdGhpcy5jb250ZXh0LmZpbGxTdHlsZSA9ICdibGFjayc7
CisgICAgICAgIHRoaXMuY29udGV4dC5yZWN0KDAsIDAsIHRoaXMuc2l6ZS53aWR0aCwgdGhpcy5z
aXplLmhlaWdodCk7CisgICAgICAgIHRoaXMuY29udGV4dC5maWxsKCk7CisKKyAgICAgICAgdGhp
cy5fb2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uKG9iamVjdCkgeworICAgICAgICAgICAgb2JqZWN0
LmFuaW1hdGUodGltZURlbHRhKTsKKyAgICAgICAgfSk7CisgICAgfQorfSk7CisKK0NhbnZhc1N0
YXJzQmVuY2htYXJrID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJlbmNobWFyaywKKyAgICBm
dW5jdGlvbihvcHRpb25zKQorICAgIHsKKyAgICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgbmV3
IENhbnZhc1N0YXJzU3RhZ2UoKSwgb3B0aW9ucyk7CisgICAgfQorKTsKKword2luZG93LmJlbmNo
bWFya0NsYXNzID0gQ2FudmFzU3RhcnNCZW5jaG1hcms7CisKK30pKCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL21pc2MvcmVzb3VyY2VzL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY29tcG9zaXRpbmctdHJhbnNm
b3Jtcy5qcwppbmRleCA2MjQ5ZmQ2Y2Q2MGI0NDU5Y2Q0ZTA3YjFlZGUxMDRhMzk5YTRkZjI4Li5h
YmQxNjkxYTk1YmNjNjg4N2Y1NjAwMjg1ZDM5Njk4YzgwZGU0ZDliIDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY29tcG9zaXRpbmct
dHJhbnNmb3Jtcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlz
Yy9yZXNvdXJjZXMvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5qcwpAQCAtMSw2NyArMSw2NiBAQAot
ZnVuY3Rpb24gQm91bmNpbmdDb21wb3NpdGVkSW1hZ2Uoc3RhZ2UpCi17Ci0gICAgQm91bmNpbmdQ
YXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyhmdW5jdGlvbigpIHsKIAotICAgIHRoaXMuZWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwotICAgIHRoaXMuZWxlbWVudC5z
dHlsZS53aWR0aCA9IHRoaXMuX3NpemUueCArICJweCI7Ci0gICAgdGhpcy5lbGVtZW50LnN0eWxl
LmhlaWdodCA9IHRoaXMuX3NpemUueSArICJweCI7Ci0gICAgdGhpcy5lbGVtZW50LnNldEF0dHJp
YnV0ZSgic3JjIiwgc3RhZ2UuaW1hZ2VTcmMpOwotICAgIAotICAgIGlmIChzdGFnZS51c2VGaWx0
ZXJzKQotICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuZmlsdGVyID0gImh1ZS1yb3RhdGUoIiAr
IHN0YWdlLnJhbmRvbUFuZ2xlKCkgKyAicmFkKSI7Ci0gICAgCi0gICAgc3RhZ2UuZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpOwotICAgIHRoaXMuX21vdmUoKTsKLX0KK0JvdW5jaW5n
Q29tcG9zaXRlZEltYWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJvdW5jaW5nUGFydGlj
bGUsCisgICAgZnVuY3Rpb24oc3RhZ2UpCisgICAgeworICAgICAgICBCb3VuY2luZ1BhcnRpY2xl
LmNhbGwodGhpcywgc3RhZ2UpOwogCi1Cb3VuY2luZ0NvbXBvc2l0ZWRJbWFnZS5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKLUJvdW5jaW5nQ29t
cG9zaXRlZEltYWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ29tcG9zaXRlZElt
YWdlOworICAgICAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWci
KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5zaXplLnggKyAicHgi
OworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5zaXplLnkgKyAicHgi
OworICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJzcmMiLCBzdGFnZS5pbWFnZVNy
Yyk7CiAKLUJvdW5jaW5nQ29tcG9zaXRlZEltYWdlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9u
KCkKLXsKLSAgICB0aGlzLmVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZTNkKCIg
KyB0aGlzLl9wb3NpdGlvbi54ICsgInB4LCIgKyB0aGlzLl9wb3NpdGlvbi55ICsgInB4LCAwKSAi
ICsgdGhpcy5fcm90YXRlci5yb3RhdGVaKCk7Ci19Ci0gICAgCi1Cb3VuY2luZ0NvbXBvc2l0ZWRJ
bWFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKLXsKLSAgICBCb3Vu
Y2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKLSAg
ICB0aGlzLl9tb3ZlKCk7Ci19CisgICAgICAgIGlmIChzdGFnZS51c2VGaWx0ZXJzKQorICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmZpbHRlciA9ICJodWUtcm90YXRlKCIgKyBzdGFnZS5y
YW5kb21BbmdsZSgpICsgInJhZCkiOwogCi1mdW5jdGlvbiBDb21wb3NpdGluZ1RyYW5zZm9ybXNT
dGFnZShlbGVtZW50LCBvcHRpb25zKQotewotICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2Fs
bCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKLSAgICB0aGlzLmltYWdlU3JjID0gb3B0aW9uc1si
aW1hZ2VTcmMiXSB8fCAiLi4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7Ci0gICAgdGhpcy51c2VG
aWx0ZXJzID0gb3B0aW9uc1siZmlsdGVycyJdID09ICJ5ZXMiOwotfQorICAgICAgICBzdGFnZS5l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7CisgICAgICAgIHRoaXMuX21vdmUoKTsK
KyAgICB9LCB7CiAKLUNvbXBvc2l0aW5nVHJhbnNmb3Jtc1N0YWdlLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOwotQ29tcG9zaXRpbmdU
cmFuc2Zvcm1zU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29tcG9zaXRpbmdUcmFuc2Zv
cm1zU3RhZ2U7CisgICAgX21vdmU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuZWxl
bWVudC5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRlM2QoIiArIHRoaXMucG9zaXRpb24ueCAr
ICJweCwiICsgdGhpcy5wb3NpdGlvbi55ICsgInB4LCAwKSAiICsgdGhpcy5yb3RhdGVyLnJvdGF0
ZVooKTsKKyAgICB9LAogCi1Db21wb3NpdGluZ1RyYW5zZm9ybXNTdGFnZS5wcm90b3R5cGUuY3Jl
YXRlUGFydGljbGUgPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NvbXBv
c2l0ZWRJbWFnZSh0aGlzKTsKLX0KKyAgICBhbmltYXRlOiBmdW5jdGlvbih0aW1lRGVsdGEpCisg
ICAgeworICAgICAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhp
cywgdGltZURlbHRhKTsKKyAgICAgICAgdGhpcy5fbW92ZSgpOworICAgIH0KK30pOwogCi1Db21w
b3NpdGluZ1RyYW5zZm9ybXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0g
ZnVuY3Rpb24ocGFydGljbGUpCi17Ci0gICAgcGFydGljbGUuZWxlbWVudC5yZW1vdmUoKTsKLX0K
K0NvbXBvc2l0aW5nVHJhbnNmb3Jtc1N0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJv
dW5jaW5nUGFydGljbGVzU3RhZ2UsCisgICAgZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgQm91
bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMpOworICAgIH0sIHsKIAotZnVuY3Rpb24gQ29t
cG9zaXRlZFRyYW5zZm9ybXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNz
QmFyKQotewotICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUs
IHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KKyAgICBpbml0aWFsaXplOiBmdW5jdGlv
bihiZW5jaG1hcmspCisgICAgeworICAgICAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3Rv
dHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgYmVuY2htYXJrKTsKIAotQ29tcG9zaXRlZFRyYW5z
Zm9ybXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xl
c0JlbmNobWFyay5wcm90b3R5cGUpOwotQ29tcG9zaXRlZFRyYW5zZm9ybXNCZW5jaG1hcmsucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gQ29tcG9zaXRlZFRyYW5zZm9ybXNCZW5jaG1hcms7CisgICAg
ICAgIHRoaXMuaW1hZ2VTcmMgPSBiZW5jaG1hcmsub3B0aW9uc1siaW1hZ2VTcmMiXSB8fCAiLi4v
cmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7CisgICAgICAgIHRoaXMudXNlRmlsdGVycyA9IGJlbmNo
bWFyay5vcHRpb25zWyJmaWx0ZXJzIl0gPT0gInllcyI7CisgICAgfSwKIAotQ29tcG9zaXRlZFRy
YW5zZm9ybXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVu
dCkKLXsKLSAgICByZXR1cm4gbmV3IENvbXBvc2l0aW5nVHJhbnNmb3Jtc1N0YWdlKGVsZW1lbnQs
IHRoaXMuX29wdGlvbnMpOwotfQorICAgIGNyZWF0ZVBhcnRpY2xlOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ29tcG9zaXRlZEltYWdlKHRoaXMpOworICAg
IH0sCiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQotewotICAgIHJldHVybiBuZXcgQ29tcG9zaXRlZFRy
YW5zZm9ybXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0K
KyAgICBwYXJ0aWNsZVdpbGxCZVJlbW92ZWQ6IGZ1bmN0aW9uKHBhcnRpY2xlKQorICAgIHsKKyAg
ICAgICAgcGFydGljbGUuZWxlbWVudC5yZW1vdmUoKTsKKyAgICB9Cit9KTsKKworQ29tcG9zaXRl
ZFRyYW5zZm9ybXNCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQmVuY2htYXJr
LAorICAgIGZ1bmN0aW9uKG9wdGlvbnMpCisgICAgeworICAgICAgICBCZW5jaG1hcmsuY2FsbCh0
aGlzLCBuZXcgQ29tcG9zaXRpbmdUcmFuc2Zvcm1zU3RhZ2UoKSwgb3B0aW9ucyk7CisgICAgfQor
KTsKKword2luZG93LmJlbmNobWFya0NsYXNzID0gQ29tcG9zaXRlZFRyYW5zZm9ybXNCZW5jaG1h
cms7CisKK30pKCk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvcmVzb3VyY2VzL21haW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL21haW4uanMKaW5kZXggNDkxM2EyZTZkZDcxNGJhMWU0OTExMDQwOWZlNjNlY2Vm
MjRjYzBmNC4uNzRmNjRlY2MzOGUxMzczZjA4MDBlNjIzMWI2OWViZjE3Y2VlZDU0MiAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpz
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5q
cwpAQCAtMSwzICsxLDM3IEBACitmdW5jdGlvbiBSb3RhdGVyKHJvdGF0ZUludGVydmFsKQorewor
ICAgIHRoaXMuX3RpbWVEZWx0YSA9IDA7CisgICAgdGhpcy5fcm90YXRlSW50ZXJ2YWwgPSByb3Rh
dGVJbnRlcnZhbDsKK30KKworUm90YXRlci5wcm90b3R5cGUgPQoreworICAgIGdldCBpbnRlcnZh
bCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcm90YXRlSW50ZXJ2YWw7CisgICAgfSwK
KworICAgIG5leHQ6IGZ1bmN0aW9uKHRpbWVEZWx0YSkKKyAgICB7CisgICAgICAgIHRoaXMuX3Rp
bWVEZWx0YSA9ICh0aGlzLl90aW1lRGVsdGEgKyB0aW1lRGVsdGEpICUgdGhpcy5fcm90YXRlSW50
ZXJ2YWw7CisgICAgfSwKKworICAgIGRlZ3JlZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuICgzNjAgKiB0aGlzLl90aW1lRGVsdGEpIC8gdGhpcy5fcm90YXRlSW50ZXJ2YWw7Cisg
ICAgfSwKKworICAgIHJvdGF0ZVo6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiAi
cm90YXRlWigiICsgTWF0aC5mbG9vcih0aGlzLmRlZ3JlZSgpKSArICJkZWcpIjsKKyAgICB9LAor
CisgICAgcm90YXRlOiBmdW5jdGlvbihjZW50ZXIpCisgICAgeworICAgICAgICByZXR1cm4gInJv
dGF0ZSgiICsgTWF0aC5mbG9vcih0aGlzLmRlZ3JlZSgpKSArICIsICIgKyBjZW50ZXIueCArICIs
IiArIGNlbnRlci55ICsgIikiOworICAgIH0KK307CisKIGZ1bmN0aW9uIEJlbmNobWFya1N0YXRl
KHRlc3RJbnRlcnZhbCkKIHsKICAgICB0aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IDA7CkBAIC05
LDExICs0Myw2IEBAIEJlbmNobWFya1N0YXRlLnN0YWdlcyA9IHsKICAgICBXQVJNSU5HOiAwLAog
ICAgIFNBTVBMSU5HOiAxLAogICAgIEZJTklTSEVEOiAyLAotICAgIG1lc3NhZ2VzOiBbIAotICAg
ICAgICBTdHJpbmdzLnRleHQucnVubmluZ1N0YXRlLndhcm1pbmcsCi0gICAgICAgIFN0cmluZ3Mu
dGV4dC5ydW5uaW5nU3RhdGUuc2FtcGxpbmcsCi0gICAgICAgIFN0cmluZ3MudGV4dC5ydW5uaW5n
U3RhdGUuZmluaXNoZWQKLSAgICBdCiB9CiAKIEJlbmNobWFya1N0YXRlLnByb3RvdHlwZSA9CkBA
IC0yMiw3ICs1MSw3IEBAIEJlbmNobWFya1N0YXRlLnByb3RvdHlwZSA9CiAgICAgewogICAgICAg
ICByZXR1cm4gc3RhZ2UgKiB0aGlzLl9zdGFnZUludGVydmFsOwogICAgIH0sCi0gICAgCisKICAg
ICBfbWVzc2FnZTogZnVuY3Rpb24oc3RhZ2UsIHRpbWVPZmZzZXQpCiAgICAgewogICAgICAgICBp
ZiAoc3RhZ2UgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKQpAQCAtMzIsMTcgKzYx
LDE3IEBAIEJlbmNobWFya1N0YXRlLnByb3RvdHlwZSA9CiAgICAgICAgICAgICArIE1hdGguZmxv
b3IoKHRpbWVPZmZzZXQgLSB0aGlzLl90aW1lT2Zmc2V0KHN0YWdlKSkgLyAxMDAwKSArICIvIgog
ICAgICAgICAgICAgKyBNYXRoLmZsb29yKCh0aGlzLl90aW1lT2Zmc2V0KHN0YWdlICsgMSkgLSB0
aGlzLl90aW1lT2Zmc2V0KHN0YWdlKSkgLyAxMDAwKSArICIpIjsKICAgICB9LAotICAgIAorCiAg
ICAgdXBkYXRlOiBmdW5jdGlvbihjdXJyZW50VGltZU9mZnNldCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWVPZmZzZXQ7CiAgICAgfSwKLSAgICAK
KwogICAgIHNhbXBsaW5nVGltZU9mZnNldDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3RpbWVPZmZzZXQoQmVuY2htYXJrU3RhdGUuc3RhZ2VzLlNBTVBMSU5HKTsKICAg
ICB9LAotICAgIAorCiAgICAgY3VycmVudFN0YWdlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICBmb3IgKHZhciBzdGFnZSA9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5XQVJNSU5HOyBzdGFnZSA8
IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRDsgKytzdGFnZSkgewpAQCAtNTAsMjcgKzc5
LDExMCBAQCBCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUgPQogICAgICAgICAgICAgICAgIHJldHVy
biBzdGFnZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gQmVuY2htYXJrU3RhdGUuc3RhZ2Vz
LkZJTklTSEVEOworICAgIH0KK30KKworCitmdW5jdGlvbiBTdGFnZSgpIHt9CisKK1N0YWdlLnBy
b3RvdHlwZSA9Cit7CisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYmVuY2htYXJrKQorICAgIHsK
KyAgICAgICAgdGhpcy5fYmVuY2htYXJrID0gYmVuY2htYXJrOworICAgICAgICB0aGlzLl9lbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YWdlIik7CisgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgpOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgZG9jdW1lbnQuYm9k
eS5vZmZzZXRIZWlnaHQpOworICAgICAgICB0aGlzLl9zaXplID0gUG9pbnQuZWxlbWVudENsaWVu
dFNpemUodGhpcy5fZWxlbWVudCkuc3VidHJhY3QoSW5zZXRzLmVsZW1lbnRQYWRkaW5nKHRoaXMu
X2VsZW1lbnQpLnNpemUpOworICAgIH0sCisKKyAgICBnZXQgZWxlbWVudCgpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKKyAgICB9LAorCisgICAgZ2V0IHNpemUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NpemU7CisgICAgfSwKKworICAgIGNvbXBsZXhpdHk6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0sCisKKyAgICByYW5k
b206IGZ1bmN0aW9uKG1pbiwgbWF4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIChNYXRoLnJhbmRv
bSgpICogKG1heCAtIG1pbikpICsgbWluOworICAgIH0sCisKKyAgICByYW5kb21Cb29sOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gISFNYXRoLnJvdW5kKHRoaXMucmFuZG9tKDAs
IDEpKTsKKyAgICB9LAorCisgICAgcmFuZG9tSW50OiBmdW5jdGlvbihtaW4sIG1heCkKKyAgICB7
CisgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHRoaXMucmFuZG9tKG1pbiwgbWF4KSk7CisgICAg
fSwKKworICAgIHJhbmRvbVBvc2l0aW9uOiBmdW5jdGlvbihtYXhQb3NpdGlvbikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy5yYW5kb21JbnQoMCwgbWF4UG9zaXRpb24ueCks
IHRoaXMucmFuZG9tSW50KDAsIG1heFBvc2l0aW9uLnkpKTsKKyAgICB9LAorCisgICAgcmFuZG9t
U3F1YXJlU2l6ZTogZnVuY3Rpb24obWluLCBtYXgpCisgICAgeworICAgICAgICB2YXIgc2lkZSA9
IHRoaXMucmFuZG9tKG1pbiwgbWF4KTsKKyAgICAgICAgcmV0dXJuIG5ldyBQb2ludChzaWRlLCBz
aWRlKTsKKyAgICB9LAorCisgICAgcmFuZG9tVmVsb2NpdHk6IGZ1bmN0aW9uKG1heFZlbG9jaXR5
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucmFuZG9tKG1heFZlbG9jaXR5IC8gOCwgbWF4
VmVsb2NpdHkpOworICAgIH0sCisKKyAgICByYW5kb21BbmdsZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMucmFuZG9tKDAsIE1hdGguUEkgKiAyKTsKKyAgICB9LAorCisg
ICAgcmFuZG9tQ29sb3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBtaW4gPSAzMjsK
KyAgICAgICAgdmFyIG1heCA9IDI1NiAtIDMyOworICAgICAgICByZXR1cm4gIiMiCisgICAgICAg
ICAgICArIHRoaXMucmFuZG9tSW50KG1pbiwgbWF4KS50b1N0cmluZygxNikKKyAgICAgICAgICAg
ICsgdGhpcy5yYW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5nKDE2KQorICAgICAgICAgICAgKyB0
aGlzLnJhbmRvbUludChtaW4sIG1heCkudG9TdHJpbmcoMTYpOwogICAgIH0sCi0gICAgCi0gICAg
Y3VycmVudE1lc3NhZ2U6IGZ1bmN0aW9uKCkKKworICAgIHJhbmRvbVJvdGF0ZXI6IGZ1bmN0aW9u
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlKHRoaXMuY3VycmVudFN0YWdl
KCksIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG5ldyBSb3RhdGVy
KHRoaXMucmFuZG9tKDEwMDAsIDEwMDAwKSk7CiAgICAgfSwKLSAgICAKLSAgICBjdXJyZW50UHJv
Z3Jlc3M6IGZ1bmN0aW9uKCkKKworICAgIHR1bmU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9jdXJyZW50VGltZU9mZnNldCAvIHRoaXMuX3RpbWVPZmZzZXQoQmVuY2ht
YXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKTsKKyAgICAgICAgdGhyb3cgIk5vdCBpbXBsZW1lbnRl
ZCI7CisgICAgfSwKKworICAgIGFuaW1hdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRo
cm93ICJOb3QgaW1wbGVtZW50ZWQiOworICAgIH0sCisKKyAgICBjbGVhcjogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudHVuZSgtdGhpcy50dW5lKDApKTsKICAgICB9Ci19
Cit9OwogCi1mdW5jdGlvbiBBbmltYXRvcihiZW5jaG1hcmssIG9wdGlvbnMpCitmdW5jdGlvbiBB
bmltYXRvcigpCiB7Ci0gICAgdGhpcy5fYmVuY2htYXJrID0gYmVuY2htYXJrOwotICAgIHRoaXMu
X29wdGlvbnMgPSBvcHRpb25zOwotICAgIAogICAgIHRoaXMuX2ZyYW1lQ291bnQgPSAwOwogICAg
IHRoaXMuX2Ryb3BGcmFtZUNvdW50ID0gMTsKLSAgICB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCA9
IDM7IAorICAgIHRoaXMuX21lYXN1cmVGcmFtZUNvdW50ID0gMzsKICAgICB0aGlzLl9yZWZlcmVu
Y2VUaW1lID0gMDsKICAgICB0aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IDA7CiAgICAgdGhpcy5f
ZXN0aW1hdG9yID0gbmV3IEthbG1hbkVzdGltYXRvcig2MCk7CkBAIC03OCwxMiArMTkwLDIzIEBA
IGZ1bmN0aW9uIEFuaW1hdG9yKGJlbmNobWFyaywgb3B0aW9ucykKIAogQW5pbWF0b3IucHJvdG90
eXBlID0KIHsKKyAgICBpbml0aWFsaXplOiBmdW5jdGlvbihiZW5jaG1hcmspCisgICAgeworICAg
ICAgICB0aGlzLl9iZW5jaG1hcmsgPSBiZW5jaG1hcms7CisgICAgICAgIHRoaXMuX2VzdGltYXRl
RnJhbWVSYXRlID0gYmVuY2htYXJrLm9wdGlvbnNbImVzdGltYXRlZC1mcmFtZS1yYXRlIl07Cisg
ICAgfSwKKworICAgIGdldCBiZW5jaG1hcmsoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2JlbmNobWFyazsKKyAgICB9LAorCiAgICAgdGltZURlbHRhOiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLSB0aGlzLl9zdGFydFRpbWVP
ZmZzZXQ7CiAgICAgfSwKLSAgICAKLSAgICBhbmltYXRlOiBmdW5jdGlvbigpCisKKyAgICBfc2hv
dWxkUmVxdWVzdEFub3RoZXJGcmFtZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGN1
cnJlbnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7CiAgICAgICAgIApAQCAtMTA4LDM0ICsyMzEs
NDEgQEAgQW5pbWF0b3IucHJvdG90eXBlID0KICAgICAgICAgLy8gR2V0IHRoZSBhdmVyYWdlIEZQ
UyBvZiBfbWVhc3VyZUZyYW1lQ291bnQgZnJhbWVzIG92ZXIgbWVhc3VyZVRpbWVEZWx0YS4KICAg
ICAgICAgdmFyIG1lYXN1cmVUaW1lRGVsdGEgPSB0aGlzLl9jdXJyZW50VGltZU9mZnNldCAtIHRo
aXMuX21lYXN1cmVUaW1lT2Zmc2V0OwogICAgICAgICB2YXIgY3VycmVudEZyYW1lUmF0ZSA9IE1h
dGguZmxvb3IoMTAwMCAvIChtZWFzdXJlVGltZURlbHRhIC8gdGhpcy5fbWVhc3VyZUZyYW1lQ291
bnQpKTsKLSAgICAgICAgIAorCiAgICAgICAgIC8vIFVzZSBLYWxtYW4gZmlsdGVyIHRvIGdldCBh
IG1vcmUgbm9uLWZsdWN0dWF0aW5nIGZyYW1lIHJhdGUuCi0gICAgICAgIGlmICh0aGlzLl9vcHRp
b25zWyJlc3RpbWF0ZWQtZnJhbWUtcmF0ZSJdKQorICAgICAgICBpZiAodGhpcy5fZXN0aW1hdGVG
cmFtZVJhdGUpCiAgICAgICAgICAgICBjdXJyZW50RnJhbWVSYXRlID0gdGhpcy5fZXN0aW1hdG9y
LmVzdGltYXRlKGN1cnJlbnRGcmFtZVJhdGUpOwotICAgICAgICAKKwogICAgICAgICAvLyBBZGp1
c3QgdGhlIHRlc3QgdG8gcmVhY2ggdGhlIGRlc2lyZWQgRlBTLgogICAgICAgICB2YXIgcmVzdWx0
ID0gdGhpcy5fYmVuY2htYXJrLnVwZGF0ZSh0aGlzLl9jdXJyZW50VGltZU9mZnNldCwgdGhpcy50
aW1lRGVsdGEoKSwgY3VycmVudEZyYW1lUmF0ZSk7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIFN0
YXJ0IHRoZSBuZXh0IGRyb3AvbWVhc3VyZSBjeWNsZS4KICAgICAgICAgdGhpcy5fZnJhbWVDb3Vu
dCA9IDA7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIElmIHJlc3VsdCA9PSAwLCBubyBtb3JlIHJl
cXVlc3RBbmltYXRpb25GcmFtZSgpIHdpbGwgYmUgaW52b2tlZC4KICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9LAotICAgIAotICAgIGFuaW1hdGVMb29wOiBmdW5jdGlvbih0aW1lc3RhbXAp
CisKKyAgICBhbmltYXRlTG9vcDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
YW5pbWF0ZSgpKQorICAgICAgICBpZiAodGhpcy5fc2hvdWxkUmVxdWVzdEFub3RoZXJGcmFtZSgp
KSB7CisgICAgICAgICAgICB0aGlzLl9iZW5jaG1hcmsuc3RhZ2UuYW5pbWF0ZSh0aGlzLnRpbWVE
ZWx0YSgpKTsKICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGVM
b29wLmJpbmQodGhpcykpOworICAgICAgICB9CiAgICAgfQogfQogCi1mdW5jdGlvbiBCZW5jaG1h
cmsob3B0aW9ucykKK2Z1bmN0aW9uIEJlbmNobWFyayhzdGFnZSwgb3B0aW9ucykKIHsKICAgICB0
aGlzLl9vcHRpb25zID0gb3B0aW9uczsKLSAgICB0aGlzLl9yZWNvcmRJbnRlcnZhbCA9IDIwMDsg
ICAgCi0gICAgdGhpcy5faXNTYW1wbGluZyA9IGZhbHNlOwogCisgICAgdGhpcy5fc3RhZ2UgPSBz
dGFnZTsKKyAgICB0aGlzLl9zdGFnZS5pbml0aWFsaXplKHRoaXMpOworICAgIHRoaXMuX2FuaW1h
dG9yID0gbmV3IEFuaW1hdG9yKCk7CisgICAgdGhpcy5fYW5pbWF0b3IuaW5pdGlhbGl6ZSh0aGlz
KTsKKworICAgIHRoaXMuX3JlY29yZEludGVydmFsID0gMjAwOworICAgIHRoaXMuX2lzU2FtcGxp
bmcgPSBmYWxzZTsKICAgICB0aGlzLl9jb250cm9sbGVyID0gbmV3IFBJRENvbnRyb2xsZXIodGhp
cy5fb3B0aW9uc1siZnJhbWUtcmF0ZSJdKTsKICAgICB0aGlzLl9zYW1wbGVyID0gbmV3IFNhbXBs
ZXIoMik7CiAgICAgdGhpcy5fc3RhdGUgPSBuZXcgQmVuY2htYXJrU3RhdGUodGhpcy5fb3B0aW9u
c1sidGVzdC1pbnRlcnZhbCJdICogMTAwMCk7CkBAIC0xNDMsMjAgKzI3MywzNSBAQCBmdW5jdGlv
biBCZW5jaG1hcmsob3B0aW9ucykKIAogQmVuY2htYXJrLnByb3RvdHlwZSA9CiB7CisgICAgZ2V0
IG9wdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7CisgICAgfSwK
KworICAgIGdldCBzdGFnZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc3RhZ2U7Cisg
ICAgfSwKKworICAgIGdldCBhbmltYXRvcigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
YW5pbWF0b3I7CisgICAgfSwKKwogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBsb2FkIGV2ZW50IGxp
c3RlbmVyIG9yIGZyb20gdGhpcy5ydW4oKS4KICAgICBzdGFydDogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgdGhpcy5fYW5pbWF0b3IuYW5pbWF0ZUxvb3AoKTsKICAgICB9LAotICAgIAorCiAg
ICAgLy8gQ2FsbGVkIGZyb20gdGhlIGFuaW1hdG9yIHRvIGFkanVzdCB0aGUgY29tcGxleGl0eSBv
ZiB0aGUgdGVzdC4KICAgICB1cGRhdGU6IGZ1bmN0aW9uKGN1cnJlbnRUaW1lT2Zmc2V0LCB0aW1l
RGVsdGEsIGN1cnJlbnRGcmFtZVJhdGUpCiAgICAgewogICAgICAgICB0aGlzLl9zdGF0ZS51cGRh
dGUoY3VycmVudFRpbWVPZmZzZXQpOwotICAgICAgICAKKwogICAgICAgICB2YXIgc3RhZ2UgPSB0
aGlzLl9zdGF0ZS5jdXJyZW50U3RhZ2UoKTsKICAgICAgICAgaWYgKHN0YWdlID09IEJlbmNobWFy
a1N0YXRlLnN0YWdlcy5GSU5JU0hFRCkgewotICAgICAgICAgICAgdGhpcy5jbGVhcigpOworICAg
ICAgICAgICAgdGhpcy5fc3RhZ2UuY2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogCkBAIC0xNjgsOCArMzEzLDggQEAgQmVuY2htYXJrLnByb3RvdHlwZSA9CiAg
ICAgICAgIHZhciB0dW5lVmFsdWUgPSAwOwogICAgICAgICBpZiAodGhpcy5fb3B0aW9uc1siYWRq
dXN0bWVudCJdID09ICJmaXhlZCIpIHsKICAgICAgICAgICAgIGlmICh0aGlzLl9vcHRpb25zWyJj
b21wbGV4aXR5Il0pIHsKLSAgICAgICAgICAgICAgICAvLyB0aGlzLnR1bmUoMCkgcmV0dXJucyB0
aGUgY3VycmVudCBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0LgotICAgICAgICAgICAgICAgIHR1bmVW
YWx1ZSA9IHRoaXMuX29wdGlvbnNbImNvbXBsZXhpdHkiXSAtIHRoaXMudHVuZSgwKTsKKyAgICAg
ICAgICAgICAgICAvLyB0aGlzLl9zdGFnZS50dW5lKDApIHJldHVybnMgdGhlIGN1cnJlbnQgY29t
cGxleGl0eSBvZiB0aGUgdGVzdC4KKyAgICAgICAgICAgICAgICB0dW5lVmFsdWUgPSB0aGlzLl9v
cHRpb25zWyJjb21wbGV4aXR5Il0gLSB0aGlzLl9zdGFnZS50dW5lKDApOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKCEodGhpcy5faXNTYW1wbGluZyAmJiB0aGlz
Ll9vcHRpb25zWyJhZGp1c3RtZW50Il0gPT0gImZpeGVkLWFmdGVyLXdhcm11cCIpKSB7CkBAIC0x
NzksMTUgKzMyNCwxNSBAQCBCZW5jaG1hcmsucHJvdG90eXBlID0KICAgICAgICAgICAgIHR1bmVW
YWx1ZSA9IHR1bmVWYWx1ZSA+IDAgPyBNYXRoLmZsb29yKHR1bmVWYWx1ZSkgOiBNYXRoLmNlaWwo
dHVuZVZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBjdXJyZW50Q29tcGxleGl0eSA9
IHRoaXMudHVuZSh0dW5lVmFsdWUpOworICAgICAgICB2YXIgY3VycmVudENvbXBsZXhpdHkgPSB0
aGlzLl9zdGFnZS50dW5lKHR1bmVWYWx1ZSk7CiAgICAgICAgIHRoaXMucmVjb3JkKGN1cnJlbnRU
aW1lT2Zmc2V0LCBjdXJyZW50Q29tcGxleGl0eSwgY3VycmVudEZyYW1lUmF0ZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0sCi0gICAgCisKICAgICByZWNvcmQ6IGZ1bmN0aW9uKGN1cnJl
bnRUaW1lT2Zmc2V0LCBjdXJyZW50Q29tcGxleGl0eSwgY3VycmVudEZyYW1lUmF0ZSkKICAgICB7
CiAgICAgICAgIHRoaXMuX3NhbXBsZXIuc2FtcGxlKGN1cnJlbnRUaW1lT2Zmc2V0LCBbY3VycmVu
dENvbXBsZXhpdHksIGN1cnJlbnRGcmFtZVJhdGVdKTsKLSAgICAgICAgCisKICAgICAgICAgaWYg
KHR5cGVvZiB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ID09ICJ1bmRlZmluZWQiKQogICAgICAgICAg
ICAgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OwogCkBAIC0xOTUs
MTAgKzM0MCw5IEBAIEJlbmNobWFyay5wcm90b3R5cGUgPQogICAgICAgICBpZiAoc3RhZ2UgIT0g
QmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEICYmIGN1cnJlbnRUaW1lT2Zmc2V0IDwgdGhp
cy5fcmVjb3JkVGltZU9mZnNldCArIHRoaXMuX3JlY29yZEludGVydmFsKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIHRoaXMuc2hvd1Jlc3VsdHModGhpcy5fc3RhdGUuY3VycmVudFBy
b2dyZXNzKCksIHRoaXMuX3N0YXRlLmN1cnJlbnRNZXNzYWdlKCkpOwogICAgICAgICB0aGlzLl9y
ZWNvcmRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWVPZmZzZXQ7CiAgICAgfSwKLSAgICAKKwogICAg
IHJ1bjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5zdGFydCgpOwpAQCAtMjEwLDI5
ICszNTQsOCBAQCBCZW5jaG1hcmsucHJvdG90eXBlID0KICAgICAgICAgICAgICAgICByZXR1cm4g
cHJvbWlzZS5yZXNvbHZlKHNlbGYuX3NhbXBsZXIpOwogICAgICAgICAgICAgc2V0VGltZW91dChy
ZXNvbHZlV2hlbkZpbmlzaGVkLmJpbmQoc2VsZiksIDUwKTsKICAgICAgICAgfQotICAgICAgICAK
KwogICAgICAgICByZXNvbHZlV2hlbkZpbmlzaGVkKCk7CiAgICAgICAgIHJldHVybiBwcm9taXNl
OwogICAgIH0KLX0KLQotd2luZG93LmJlbmNobWFya0NsaWVudCA9IHt9OwotCi0vLyBUaGlzIGV2
ZW50IGxpc3RlbmVyIHJ1bnMgdGhlIHRlc3QgaWYgaXQgaXMgbG9hZGVkIG91dHNpZGUgdGhlIGJl
bmNobWFyayBydW5uZXIuCi13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9u
KCkKLXsKLSAgICBpZiAod2luZG93LnNlbGYgIT09IHdpbmRvdy50b3ApCi0gICAgICAgIHJldHVy
bjsKLSAgICB3aW5kb3cuYmVuY2htYXJrID0gd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUo
bnVsbCwgbnVsbCwgMzAwMDAsIDUwLCBudWxsLCBudWxsKTsKLSAgICB3aW5kb3cuYmVuY2htYXJr
LnN0YXJ0KCk7Ci19KTsKLQotLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgc3Vp
dGUgY29udHJvbGxlciBydW4tY2FsbGJhY2sgd2hlbiBydW5uaW5nIHRoZSBiZW5jaG1hcmsgcnVu
bmVyLgotd2luZG93LnJ1bkJlbmNobWFyayA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCBwcm9ncmVzc0JhcikKLXsKLSAgICB2YXIgYmVuY2htYXJrT3B0aW9ucyA9IHsgY29tcGxleGl0
eTogdGVzdC5jb21wbGV4aXR5IH07Ci0gICAgYmVuY2htYXJrT3B0aW9ucyA9IFV0aWxpdGllcy5t
ZXJnZU9iamVjdHMoYmVuY2htYXJrT3B0aW9ucywgb3B0aW9ucyk7Ci0gICAgYmVuY2htYXJrT3B0
aW9ucyA9IFV0aWxpdGllcy5tZXJnZU9iamVjdHMoYmVuY2htYXJrT3B0aW9ucywgVXRpbGl0aWVz
LnBhcnNlUGFyYW1ldGVycygpKTsKLSAgICB3aW5kb3cuYmVuY2htYXJrID0gd2luZG93LmJlbmNo
bWFya0NsaWVudC5jcmVhdGUoc3VpdGUsIHRlc3QsIGJlbmNobWFya09wdGlvbnMsIHByb2dyZXNz
QmFyKTsKLSAgICByZXR1cm4gd2luZG93LmJlbmNobWFyay5ydW4oKTsKLX0KK307CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2IwYjExNDBlYTdjOWFhNmJiZDRiOWRlNWFk
M2E0YTAyOWNlMmNlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpz
CisrKyAvZGV2L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLWZ1bmN0aW9uIFJvdGF0ZXIocm90YXRl
SW50ZXJ2YWwpCi17Ci0gICAgdGhpcy5fdGltZURlbHRhID0gMDsKLSAgICB0aGlzLl9yb3RhdGVJ
bnRlcnZhbCA9IHJvdGF0ZUludGVydmFsOwotfQotCi1Sb3RhdGVyLnByb3RvdHlwZSA9Ci17Ci0g
ICAgZ2V0IGludGVydmFsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yb3RhdGVJbnRl
cnZhbDsKLSAgICB9LAotICAgIAotICAgIG5leHQ6IGZ1bmN0aW9uKHRpbWVEZWx0YSkKLSAgICB7
Ci0gICAgICAgIHRoaXMuX3RpbWVEZWx0YSA9ICh0aGlzLl90aW1lRGVsdGEgKyB0aW1lRGVsdGEp
ICUgdGhpcy5fcm90YXRlSW50ZXJ2YWw7Ci0gICAgfSwKLSAgICAKLSAgICBkZWdyZWU6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAoMzYwICogdGhpcy5fdGltZURlbHRhKSAvIHRo
aXMuX3JvdGF0ZUludGVydmFsOwotICAgIH0sCi0gICAgCi0gICAgcm90YXRlWjogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgcmV0dXJuICJyb3RhdGVaKCIgKyBNYXRoLmZsb29yKHRoaXMuZGVn
cmVlKCkpICsgImRlZykiOwotICAgIH0sCi0gICAgCi0gICAgcm90YXRlOiBmdW5jdGlvbihjZW50
ZXIpCi0gICAgewotICAgICAgICByZXR1cm4gInJvdGF0ZSgiICsgTWF0aC5mbG9vcih0aGlzLmRl
Z3JlZSgpKSArICIsICIgKyBjZW50ZXIueCArICIsIiArIGNlbnRlci55ICsgIikiOwotICAgIH0K
LX0KLQotZnVuY3Rpb24gU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKLXsKLSAgICB0aGlzLmVsZW1l
bnQgPSBlbGVtZW50OwotICAgIHRoaXMuX3NpemUgPSBQb2ludC5lbGVtZW50Q2xpZW50U2l6ZShl
bGVtZW50KS5zdWJ0cmFjdChJbnNldHMuZWxlbWVudFBhZGRpbmcoZWxlbWVudCkuc2l6ZSk7Ci19
Ci0KLVN0YWdlLnByb3RvdHlwZSA9Ci17Ci0gICAgZ2V0IHNpemUoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX3NpemUKLSAgICB9LAotICAgIAotICAgIHJhbmRvbTogZnVuY3Rpb24obWlu
LCBtYXgpCi0gICAgewotICAgICAgICByZXR1cm4gKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWlu
KSkgKyBtaW47Ci0gICAgfSwKLSAgICAKLSAgICByYW5kb21Cb29sOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICByZXR1cm4gISFNYXRoLnJvdW5kKHRoaXMucmFuZG9tKDAsIDEpKTsKLSAgICB9
LAotCi0gICAgcmFuZG9tSW50OiBmdW5jdGlvbihtaW4sIG1heCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBNYXRoLnJvdW5kKHRoaXMucmFuZG9tKG1pbiwgbWF4KSk7Ci0gICAgfSwKLSAgICAKLSAg
ICByYW5kb21Qb3NpdGlvbjogZnVuY3Rpb24obWF4UG9zaXRpb24pCi0gICAgewotICAgICAgICBy
ZXR1cm4gbmV3IFBvaW50KHRoaXMucmFuZG9tSW50KDAsIG1heFBvc2l0aW9uLngpLCB0aGlzLnJh
bmRvbUludCgwLCBtYXhQb3NpdGlvbi55KSk7Ci0gICAgfSwKLSAgICAKLSAgICByYW5kb21TcXVh
cmVTaXplOiBmdW5jdGlvbihtaW4sIG1heCkKLSAgICB7Ci0gICAgICAgIHZhciBzaWRlID0gdGhp
cy5yYW5kb20obWluLCBtYXgpOwotICAgICAgICByZXR1cm4gbmV3IFBvaW50KHNpZGUsIHNpZGUp
OwotICAgIH0sCi0gICAgCi0gICAgcmFuZG9tVmVsb2NpdHk6IGZ1bmN0aW9uKG1heFZlbG9jaXR5
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmFuZG9tKG1heFZlbG9jaXR5IC8gOCwgbWF4
VmVsb2NpdHkpOwotICAgIH0sCi0gICAgCi0gICAgcmFuZG9tQW5nbGU6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJhbmRvbSgwLCBNYXRoLlBJICogMik7Ci0gICAgfSwK
LSAgICAKLSAgICByYW5kb21Db2xvcjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIG1p
biA9IDMyOwotICAgICAgICB2YXIgbWF4ID0gMjU2IC0gMzI7Ci0gICAgICAgIHJldHVybiAiIyIK
LSAgICAgICAgICAgICsgdGhpcy5yYW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5nKDE2KQotICAg
ICAgICAgICAgKyB0aGlzLnJhbmRvbUludChtaW4sIG1heCkudG9TdHJpbmcoMTYpCi0gICAgICAg
ICAgICArIHRoaXMucmFuZG9tSW50KG1pbiwgbWF4KS50b1N0cmluZygxNik7Ci0gICAgfSwKLSAg
ICAKLSAgICByYW5kb21Sb3RhdGVyOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4g
bmV3IFJvdGF0ZXIodGhpcy5yYW5kb20oMTAwMCwgMTAwMDApKTsKLSAgICB9LAotCi0gICAgdHVu
ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhyb3cgIk5vdCBpbXBsZW1lbnRlZCI7Ci0g
ICAgfSwKLSAgICAKLSAgICBhbmltYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aHJv
dyAiTm90IGltcGxlbWVudGVkIjsKLSAgICB9LAotICAgIAotICAgIGNsZWFyOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy50dW5lKC10aGlzLnR1bmUoMCkpOwotICAgIH0K
LX0KLQotZnVuY3Rpb24gU3RhZ2VBbmltYXRvcihiZW5jaG1hcmssIG9wdGlvbnMpCi17Ci0gICAg
QW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmssIG9wdGlvbnMpOwotfTsKLQotU3RhZ2VBbmlt
YXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEFuaW1hdG9yLnByb3RvdHlwZSk7Ci1TdGFn
ZUFuaW1hdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN0YWdlQW5pbWF0b3I7Ci0KLVN0YWdl
QW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCi17Ci0gICAgaWYgKCFBbmlt
YXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5hbmltYXRlKHRoaXMudGltZURlbHRhKCkpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi1mdW5jdGlvbiBTdGFnZUJlbmNobWFyayhzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCi17Ci0gICAgQmVuY2htYXJrLmNhbGwodGhpcywgb3B0
aW9ucyk7Ci0gICAgCi0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c3RhZ2UiKTsKLSAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgid2lkdGgiLCBkb2N1bWVudC5ib2R5
Lm9mZnNldFdpZHRoKTsKLSAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgZG9jdW1l
bnQuYm9keS5vZmZzZXRIZWlnaHQpOwotICAgIAotICAgIHRoaXMuX3N0YWdlID0gdGhpcy5jcmVh
dGVTdGFnZShlbGVtZW50KTsKLSAgICB0aGlzLl9hbmltYXRvciA9IHRoaXMuY3JlYXRlQW5pbWF0
b3IoKTsKLSAgICB0aGlzLl9zdWl0ZSA9IHN1aXRlOwotICAgIHRoaXMuX3Rlc3QgPSB0ZXN0Owot
ICAgIHRoaXMuX3Byb2dyZXNzQmFyID0gcHJvZ3Jlc3NCYXI7Ci19Ci0KLVN0YWdlQmVuY2htYXJr
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQmVuY2htYXJrLnByb3RvdHlwZSk7Ci1TdGFnZUJl
bmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTdGFnZUJlbmNobWFyazsKLQotU3RhZ2VC
ZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKLXsKLSAg
ICByZXR1cm4gbmV3IFN0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwotfQotCi1TdGFnZUJl
bmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0
dXJuIG5ldyBTdGFnZUFuaW1hdG9yKHRoaXMsIHRoaXMuX29wdGlvbnMpOwotfQotCi1TdGFnZUJl
bmNobWFyay5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQotewotICAgIHJldHVybiB0
aGlzLl9zdGFnZS50dW5lKGNvdW50KTsKLX0KLQotU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNs
ZWFyID0gZnVuY3Rpb24oKQotewotICAgIHJldHVybiB0aGlzLl9zdGFnZS5jbGVhcigpOwotfQot
Ci1TdGFnZUJlbmNobWFyay5wcm90b3R5cGUuc2hvd1Jlc3VsdHMgPSBmdW5jdGlvbihwcm9ncmVz
cywgbWVzc2FnZSkKLXsKLSAgICBpZiAoIXRoaXMuX3Byb2dyZXNzQmFyIHx8ICF0aGlzLl90ZXN0
KQotICAgICAgICByZXR1cm47Ci0KLSAgICB0aGlzLl9wcm9ncmVzc0Jhci5zZXRQb3MocHJvZ3Jl
c3MpOwotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Np
bXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy1wYXRocy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMtcGF0aHMuanMK
aW5kZXggMWRhZDIwNWJmZWE0NzM1YzA3YTZmMzg2ZmQyMDViYThjOGQ2ODQxYi4uZjQ5NmU0ZWYw
N2UyN2U2YzgwMzdmZTY4ZDFhNjBkMjhmYjc5OTM1MyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy1wYXRo
cy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291
cmNlcy9zaW1wbGUtY2FudmFzLXBhdGhzLmpzCkBAIC0xLDMgKzEsNSBAQAorKGZ1bmN0aW9uKCkg
eworCiAvLyA9PT0gUEFJTlQgT0JKRUNUUyA9PT0KIAogZnVuY3Rpb24gQ2FudmFzTGluZVNlZ21l
bnQoc3RhZ2UpIHsKQEAgLTE5LDggKzIxLDkgQEAgQ2FudmFzTGluZVNlZ21lbnQucHJvdG90eXBl
LmRyYXcgPSBmdW5jdGlvbihjb250ZXh0KSB7CiAgICAgY29udGV4dC5zdHJva2UoKTsKIH07CiAK
LWZ1bmN0aW9uIENhbnZhc0xpbmVQb2ludChzdGFnZSwgY29vcmRpbmF0ZU1heGltdW0pIHsKLSAg
ICB0aGlzLl9wb2ludCA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKG5ldyBQb2ludChNYXRoLm1pbihz
dGFnZS5zaXplLngsIGNvb3JkaW5hdGVNYXhpbXVtKSwgTWF0aC5taW4oc3RhZ2Uuc2l6ZS55LCBj
b29yZGluYXRlTWF4aW11bSkpKTsKK2Z1bmN0aW9uIENhbnZhc0xpbmVQb2ludChzdGFnZSwgY29v
cmRpbmF0ZU1heGltdW1GYWN0b3IpIHsKKyAgICB2YXIgcG9pbnRNYXhpbXVtID0gbmV3IFBvaW50
KE1hdGgubWluKHN0YWdlLnNpemUueCwgY29vcmRpbmF0ZU1heGltdW1GYWN0b3IgKiBzdGFnZS5z
aXplLngpLCBNYXRoLm1pbihzdGFnZS5zaXplLnksIGNvb3JkaW5hdGVNYXhpbXVtRmFjdG9yICog
c3RhZ2Uuc2l6ZS55KSk7CisgICAgdGhpcy5fcG9pbnQgPSBzdGFnZS5yYW5kb21Qb3NpdGlvbihw
b2ludE1heGltdW0pLmFkZChuZXcgUG9pbnQoKHN0YWdlLnNpemUueCAtIHBvaW50TWF4aW11bS54
KSAvIDIsIChzdGFnZS5zaXplLnkgLSBwb2ludE1heGltdW0ueSkgLyAyKSk7CiB9CiBDYW52YXNM
aW5lUG9pbnQucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjb250ZXh0KSB7CiAgICAgY29udGV4
dC5saW5lVG8odGhpcy5fcG9pbnQueCwgdGhpcy5fcG9pbnQueSk7CkBAIC00NSwxMCArNDgsMTAg
QEAgQ2FudmFzUXVhZHJhdGljU2VnbWVudC5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGNvbnRl
eHQpIHsKICAgICBjb250ZXh0LnN0cm9rZSgpOwogfTsKIAotZnVuY3Rpb24gQ2FudmFzUXVhZHJh
dGljUG9pbnQoc3RhZ2UsIGNvb3JkaW5hdGVNYXhpbXVtKSB7Ci0gICAgdmFyIHBvaW50TWF4aW11
bSA9IG5ldyBQb2ludChNYXRoLm1pbihzdGFnZS5zaXplLngsIGNvb3JkaW5hdGVNYXhpbXVtKSwg
TWF0aC5taW4oc3RhZ2Uuc2l6ZS55LCBjb29yZGluYXRlTWF4aW11bSkpOwotICAgIHRoaXMuX3Bv
aW50MSA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKHBvaW50TWF4aW11bSk7Ci0gICAgdGhpcy5fcG9p
bnQyID0gc3RhZ2UucmFuZG9tUG9zaXRpb24ocG9pbnRNYXhpbXVtKTsKK2Z1bmN0aW9uIENhbnZh
c1F1YWRyYXRpY1BvaW50KHN0YWdlLCBjb29yZGluYXRlTWF4aW11bUZhY3RvcikgeworICAgIHZh
ciBwb2ludE1heGltdW0gPSBzdGFnZS5yYW5kb21Qb3NpdGlvbihuZXcgUG9pbnQoTWF0aC5taW4o
c3RhZ2Uuc2l6ZS54LCBjb29yZGluYXRlTWF4aW11bUZhY3RvciAqIHN0YWdlLnNpemUueCksIE1h
dGgubWluKHN0YWdlLnNpemUueSwgY29vcmRpbmF0ZU1heGltdW1GYWN0b3IgKiBzdGFnZS5zaXpl
LnkpKSk7CisgICAgdGhpcy5fcG9pbnQxID0gc3RhZ2UucmFuZG9tUG9zaXRpb24ocG9pbnRNYXhp
bXVtKS5hZGQobmV3IFBvaW50KChzdGFnZS5zaXplLnggLSBwb2ludE1heGltdW0ueCkgLyAyLCAo
c3RhZ2Uuc2l6ZS55IC0gcG9pbnRNYXhpbXVtLnkpIC8gMikpOworICAgIHRoaXMuX3BvaW50MiA9
IHN0YWdlLnJhbmRvbVBvc2l0aW9uKHBvaW50TWF4aW11bSkuYWRkKG5ldyBQb2ludCgoc3RhZ2Uu
c2l6ZS54IC0gcG9pbnRNYXhpbXVtLngpIC8gMiwgKHN0YWdlLnNpemUueSAtIHBvaW50TWF4aW11
bS55KSAvIDIpKTsKIH07CiBDYW52YXNRdWFkcmF0aWNQb2ludC5wcm90b3R5cGUuZHJhdyA9IGZ1
bmN0aW9uKGNvbnRleHQpIHsKICAgICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8odGhpcy5fcG9p
bnQxLngsIHRoaXMuX3BvaW50MS55LCB0aGlzLl9wb2ludDIueCwgdGhpcy5fcG9pbnQyLnkpOwpA
QCAtNzQsMTEgKzc3LDExIEBAIENhbnZhc0JlemllclNlZ21lbnQucHJvdG90eXBlLmRyYXcgPSBm
dW5jdGlvbihjb250ZXh0KSB7CiAgICAgY29udGV4dC5zdHJva2UoKTsKIH07CiAKLWZ1bmN0aW9u
IENhbnZhc0JlemllclBvaW50KHN0YWdlLCBjb29yZGluYXRlTWF4aW11bSkgewotICAgIHZhciBw
b2ludE1heGltdW0gPSBuZXcgUG9pbnQoTWF0aC5taW4oc3RhZ2Uuc2l6ZS54LCBjb29yZGluYXRl
TWF4aW11bSksIE1hdGgubWluKHN0YWdlLnNpemUueSwgY29vcmRpbmF0ZU1heGltdW0pKTsKLSAg
ICB0aGlzLl9wb2ludDEgPSBzdGFnZS5yYW5kb21Qb3NpdGlvbihwb2ludE1heGltdW0pOwotICAg
IHRoaXMuX3BvaW50MiA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKHBvaW50TWF4aW11bSk7Ci0gICAg
dGhpcy5fcG9pbnQzID0gc3RhZ2UucmFuZG9tUG9zaXRpb24ocG9pbnRNYXhpbXVtKTsKK2Z1bmN0
aW9uIENhbnZhc0JlemllclBvaW50KHN0YWdlLCBjb29yZGluYXRlTWF4aW11bUZhY3Rvcikgewor
ICAgIHZhciBwb2ludE1heGltdW0gPSBzdGFnZS5yYW5kb21Qb3NpdGlvbihuZXcgUG9pbnQoTWF0
aC5taW4oc3RhZ2Uuc2l6ZS54LCBjb29yZGluYXRlTWF4aW11bUZhY3RvciAqIHN0YWdlLnNpemUu
eCksIE1hdGgubWluKHN0YWdlLnNpemUueSwgY29vcmRpbmF0ZU1heGltdW1GYWN0b3IgKiBzdGFn
ZS5zaXplLnkpKSk7CisgICAgdGhpcy5fcG9pbnQxID0gc3RhZ2UucmFuZG9tUG9zaXRpb24ocG9p
bnRNYXhpbXVtKS5hZGQobmV3IFBvaW50KChzdGFnZS5zaXplLnggLSBwb2ludE1heGltdW0ueCkg
LyAyLCAoc3RhZ2Uuc2l6ZS55IC0gcG9pbnRNYXhpbXVtLnkpIC8gMikpOworICAgIHRoaXMuX3Bv
aW50MiA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKHBvaW50TWF4aW11bSkuYWRkKG5ldyBQb2ludCgo
c3RhZ2Uuc2l6ZS54IC0gcG9pbnRNYXhpbXVtLngpIC8gMiwgKHN0YWdlLnNpemUueSAtIHBvaW50
TWF4aW11bS55KSAvIDIpKTsKKyAgICB0aGlzLl9wb2ludDMgPSBzdGFnZS5yYW5kb21Qb3NpdGlv
bihwb2ludE1heGltdW0pLmFkZChuZXcgUG9pbnQoKHN0YWdlLnNpemUueCAtIHBvaW50TWF4aW11
bS54KSAvIDIsIChzdGFnZS5zaXplLnkgLSBwb2ludE1heGltdW0ueSkgLyAyKSk7CiB9OwogQ2Fu
dmFzQmV6aWVyUG9pbnQucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjb250ZXh0KSB7CiAgICAg
Y29udGV4dC5iZXppZXJDdXJ2ZVRvKHRoaXMuX3BvaW50MS54LCB0aGlzLl9wb2ludDEueSwgdGhp
cy5fcG9pbnQyLngsIHRoaXMuX3BvaW50Mi55LCB0aGlzLl9wb2ludDMueCwgdGhpcy5fcG9pbnQz
LnkpOwpAQCAtMTcyLDEyNCArMTc1LDE2MiBAQCBDYW52YXNSZWN0RmlsbC5wcm90b3R5cGUuZHJh
dyA9IGZ1bmN0aW9uKGNvbnRleHQpIHsKIAogLy8gPT09IFNUQUdFUyA9PT0KIAotZnVuY3Rpb24g
U2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlKGVsZW1lbnQsIG9wdGlvbnMsIGNhbnZhc09iamVj
dCkgewotICAgIFNpbXBsZUNhbnZhc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucywg
Y2FudmFzT2JqZWN0KTsKLX0KLVNpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZS5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKFNpbXBsZUNhbnZhc1N0YWdlLnByb3RvdHlwZSk7Ci1TaW1wbGVDYW52
YXNQYXRoU3Ryb2tlU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU2ltcGxlQ2FudmFzUGF0
aFN0cm9rZVN0YWdlOwotU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlLnByb3RvdHlwZS5hbmlt
YXRlID0gZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRleHQgPSB0aGlzLmNvbnRleHQ7Ci0gICAg
Y29udGV4dC5saW5lV2lkdGggPSB0aGlzLnJhbmRvbUludCgxLCAyMCk7Ci0gICAgY29udGV4dC5z
dHJva2VTdHlsZSA9IHRoaXMucmFuZG9tQ29sb3IoKTsKLSAgICBjb250ZXh0LmJlZ2luUGF0aCgp
OwotICAgIGNvbnRleHQubW92ZVRvKDAsMCk7Ci0gICAgdGhpcy5fb2JqZWN0cy5mb3JFYWNoKGZ1
bmN0aW9uKG9iamVjdCkgewotICAgICAgICBvYmplY3QuZHJhdyhjb250ZXh0KTsKLSAgICB9KTsK
LSAgICBjb250ZXh0LnN0cm9rZSgpOwotfQorU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlID0g
VXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFNpbXBsZUNhbnZhc1N0YWdlLAorICAgIGZ1bmN0aW9u
KGNhbnZhc09iamVjdCkgeworICAgICAgICBTaW1wbGVDYW52YXNTdGFnZS5jYWxsKHRoaXMsIGNh
bnZhc09iamVjdCk7CisgICAgfSwgewogCi1mdW5jdGlvbiBTaW1wbGVDYW52YXNQYXRoRmlsbFN0
YWdlKGVsZW1lbnQsIG9wdGlvbnMsIGNhbnZhc09iamVjdCkgewotICAgIFNpbXBsZUNhbnZhc1N0
YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucywgY2FudmFzT2JqZWN0KTsKLX0KLVNpbXBs
ZUNhbnZhc1BhdGhGaWxsU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTaW1wbGVDYW52
YXNTdGFnZS5wcm90b3R5cGUpOwotU2ltcGxlQ2FudmFzUGF0aEZpbGxTdGFnZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBTaW1wbGVDYW52YXNQYXRoRmlsbFN0YWdlOwotU2ltcGxlQ2FudmFzUGF0
aEZpbGxTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkgewotICAgIHZhciBjb250
ZXh0ID0gdGhpcy5jb250ZXh0OwotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gdGhpcy5yYW5kb21D
b2xvcigpOwotICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7Ci0gICAgY29udGV4dC5tb3ZlVG8oMCww
KTsKLSAgICB0aGlzLl9vYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7Ci0gICAgICAg
IG9iamVjdC5kcmF3KGNvbnRleHQpOwotICAgIH0pOwotICAgIGNvbnRleHQuZmlsbCgpOwotfQor
ICAgIGFuaW1hdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBjb250ZXh0ID0gdGhp
cy5jb250ZXh0OworICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLnNpemUueCwg
dGhpcy5zaXplLnkpOworICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IHRoaXMucmFuZG9tSW50
KDEsIDIwKTsKKyAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IHRoaXMucmFuZG9tQ29sb3Io
KTsKKyAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgY29udGV4dC5tb3ZlVG8o
dGhpcy5zaXplLnggLyAyLCB0aGlzLnNpemUueSAvIDIpOworICAgICAgICB0aGlzLm9iamVjdHMu
Zm9yRWFjaChmdW5jdGlvbihvYmplY3QpIHsKKyAgICAgICAgICAgIG9iamVjdC5kcmF3KGNvbnRl
eHQpOworICAgICAgICB9KTsKKyAgICAgICAgY29udGV4dC5zdHJva2UoKTsKKyAgICB9Cit9KTsK
IAotZnVuY3Rpb24gQ2FudmFzTGluZVNlZ21lbnRTdGFnZShlbGVtZW50LCBvcHRpb25zKQotewot
ICAgIFNpbXBsZUNhbnZhc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucywgQ2FudmFz
TGluZVNlZ21lbnQpOwotICAgIHRoaXMuY29udGV4dC5saW5lQ2FwID0gb3B0aW9uc1sibGluZUNh
cCJdIHx8ICJidXR0IjsKLX0KLUNhbnZhc0xpbmVTZWdtZW50U3RhZ2UucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShTaW1wbGVDYW52YXNTdGFnZS5wcm90b3R5cGUpOwotQ2FudmFzTGluZVNlZ21l
bnRTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNMaW5lU2VnbWVudFN0YWdlOwor
U2ltcGxlQ2FudmFzUGF0aEZpbGxTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTaW1w
bGVDYW52YXNTdGFnZSwKKyAgICBmdW5jdGlvbihjYW52YXNPYmplY3QpIHsKKyAgICAgICAgU2lt
cGxlQ2FudmFzU3RhZ2UuY2FsbCh0aGlzLCBjYW52YXNPYmplY3QpOworICAgIH0sIHsKIAotZnVu
Y3Rpb24gQ2FudmFzTGluZVBhdGhTdGFnZShlbGVtZW50LCBvcHRpb25zKQotewotICAgIFNpbXBs
ZUNhbnZhc1BhdGhTdHJva2VTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMsIENhbnZh
c0xpbmVQb2ludCk7Ci0gICAgdGhpcy5jb250ZXh0LmxpbmVKb2luID0gb3B0aW9uc1sibGluZUpv
aW4iXSB8fCAiYmV2ZWwiOwotfQotQ2FudmFzTGluZVBhdGhTdGFnZS5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKFNpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZS5wcm90b3R5cGUpOwotQ2FudmFz
TGluZVBhdGhTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNMaW5lUGF0aFN0YWdl
OwotCi1mdW5jdGlvbiBDYW52YXNMaW5lRGFzaFN0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCi17Ci0g
ICAgU2ltcGxlQ2FudmFzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zLCBDYW52YXNM
aW5lUG9pbnQpOwotICAgIHRoaXMuY29udGV4dC5zZXRMaW5lRGFzaChbMSwgMiwgMywgNCwgNSwg
NiwgNywgOCwgOSwgMTBdKTsKLSAgICB0aGlzLmNvbnRleHQubGluZVdpZHRoID0gMTsKLSAgICB0
aGlzLmNvbnRleHQuc3Ryb2tlU3R5bGUgPSAiIzAwMCI7Ci0gICAgdGhpcy5fc3RlcCA9IDA7Ci19
Ci1DYW52YXNMaW5lRGFzaFN0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU2ltcGxlQ2Fu
dmFzU3RhZ2UucHJvdG90eXBlKTsKLUNhbnZhc0xpbmVEYXNoU3RhZ2UucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gQ2FudmFzTGluZURhc2hTdGFnZTsKLUNhbnZhc0xpbmVEYXNoU3RhZ2UucHJvdG90
eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpIHsKLSAgICB2YXIgY29udGV4dCA9IHRoaXMuY29udGV4
dDsKLSAgICBjb250ZXh0LmxpbmVEYXNoT2Zmc2V0ID0gdGhpcy5fc3RlcCsrOwotICAgIGNvbnRl
eHQuYmVnaW5QYXRoKCk7Ci0gICAgY29udGV4dC5tb3ZlVG8oMCwwKTsKLSAgICB0aGlzLl9vYmpl
Y3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7Ci0gICAgICAgIG9iamVjdC5kcmF3KGNvbnRl
eHQpOwotICAgIH0pOwotICAgIGNvbnRleHQuc3Ryb2tlKCk7Ci19OworICAgIGFuaW1hdGU6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0OworICAg
ICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLnNpemUueCwgdGhpcy5zaXplLnkpOwor
ICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IHRoaXMucmFuZG9tQ29sb3IoKTsKKyAgICAgICAg
Y29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgY29udGV4dC5tb3ZlVG8odGhpcy5zaXplLngg
LyAyLCB0aGlzLnNpemUueSAvIDIpOworICAgICAgICB0aGlzLm9iamVjdHMuZm9yRWFjaChmdW5j
dGlvbihvYmplY3QpIHsKKyAgICAgICAgICAgIG9iamVjdC5kcmF3KGNvbnRleHQpOworICAgICAg
ICB9KTsKKyAgICAgICAgY29udGV4dC5maWxsKCk7CisgICAgfQorfSk7CiAKLS8vID09PSBCRU5D
SE1BUksgPT09CitDYW52YXNMaW5lU2VnbWVudFN0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNs
YXNzKFNpbXBsZUNhbnZhc1N0YWdlLAorICAgIGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFNp
bXBsZUNhbnZhc1N0YWdlLmNhbGwodGhpcywgQ2FudmFzTGluZVNlZ21lbnQpOworICAgIH0sIHsK
IAotZnVuY3Rpb24gQ2FudmFzUGF0aEJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJv
Z3Jlc3NCYXIpIHsKLSAgICBTaW1wbGVDYW52YXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotfQotQ2FudmFzUGF0aEJlbmNobWFyay5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNpbXBsZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUpOwot
Q2FudmFzUGF0aEJlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNQYXRoQmVu
Y2htYXJrOwotQ2FudmFzUGF0aEJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5j
dGlvbihlbGVtZW50KQotewotICAgIHN3aXRjaCAodGhpcy5fb3B0aW9uc1sicGF0aFR5cGUiXSkg
ewotICAgIGNhc2UgImxpbmUiOgotICAgICAgICByZXR1cm4gbmV3IENhbnZhc0xpbmVTZWdtZW50
U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Ci0gICAgY2FzZSAibGluZVBhdGgiOiB7Ci0g
ICAgICAgIGlmICgibGluZUpvaW4iIGluIHRoaXMuX29wdGlvbnMpCi0gICAgICAgICAgICByZXR1
cm4gbmV3IENhbnZhc0xpbmVQYXRoU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Ci0gICAg
ICAgIGlmICgibGluZURhc2giIGluIHRoaXMuX29wdGlvbnMpCi0gICAgICAgICAgICByZXR1cm4g
bmV3IENhbnZhc0xpbmVEYXNoU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Ci0gICAgICAg
IGJyZWFrOworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykKKyAgICB7CisgICAg
ICAgIFNpbXBsZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgYmVu
Y2htYXJrKTsKKyAgICAgICAgdGhpcy5jb250ZXh0LmxpbmVDYXAgPSBiZW5jaG1hcmsub3B0aW9u
c1sibGluZUNhcCJdIHx8ICJidXR0IjsKICAgICB9Ci0gICAgY2FzZSAicXVhZHJhdGljIjoKLSAg
ICAgICAgcmV0dXJuIG5ldyBTaW1wbGVDYW52YXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25z
LCBDYW52YXNRdWFkcmF0aWNTZWdtZW50KTsKLSAgICBjYXNlICJxdWFkcmF0aWNQYXRoIjoKLSAg
ICAgICAgcmV0dXJuIG5ldyBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2UoZWxlbWVudCwgdGhp
cy5fb3B0aW9ucywgQ2FudmFzUXVhZHJhdGljUG9pbnQpOwotICAgIGNhc2UgImJlemllciI6Ci0g
ICAgICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9u
cywgQ2FudmFzQmV6aWVyU2VnbWVudCk7Ci0gICAgY2FzZSAiYmV6aWVyUGF0aCI6Ci0gICAgICAg
IHJldHVybiBuZXcgU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlKGVsZW1lbnQsIHRoaXMuX29w
dGlvbnMsIENhbnZhc0JlemllclBvaW50KTsKLSAgICBjYXNlICJhcmNUbyI6Ci0gICAgICAgIHJl
dHVybiBuZXcgU2ltcGxlQ2FudmFzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2FudmFz
QXJjVG9TZWdtZW50KTsKLSAgICBjYXNlICJhcmMiOgotICAgICAgICByZXR1cm4gbmV3IFNpbXBs
ZUNhbnZhc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMsIENhbnZhc0FyY1NlZ21lbnQpOwot
ICAgIGNhc2UgInJlY3QiOgotICAgICAgICByZXR1cm4gbmV3IFNpbXBsZUNhbnZhc1N0YWdlKGVs
ZW1lbnQsIHRoaXMuX29wdGlvbnMsIENhbnZhc1JlY3QpOwotICAgIGNhc2UgImxpbmVGaWxsIjoK
LSAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVDYW52YXNQYXRoRmlsbFN0YWdlKGVsZW1lbnQsIHRo
aXMuX29wdGlvbnMsIENhbnZhc0xpbmVQb2ludCk7Ci0gICAgY2FzZSAicXVhZHJhdGljRmlsbCI6
Ci0gICAgICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzUGF0aEZpbGxTdGFnZShlbGVtZW50LCB0
aGlzLl9vcHRpb25zLCBDYW52YXNRdWFkcmF0aWNQb2ludCk7Ci0gICAgY2FzZSAiYmV6aWVyRmls
bCI6Ci0gICAgICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzUGF0aEZpbGxTdGFnZShlbGVtZW50
LCB0aGlzLl9vcHRpb25zLCBDYW52YXNCZXppZXJQb2ludCk7Ci0gICAgY2FzZSAiYXJjVG9GaWxs
IjoKLSAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVDYW52YXNTdGFnZShlbGVtZW50LCB0aGlzLl9v
cHRpb25zLCBDYW52YXNBcmNUb1NlZ21lbnRGaWxsKTsKLSAgICBjYXNlICJhcmNGaWxsIjoKLSAg
ICAgICAgcmV0dXJuIG5ldyBTaW1wbGVDYW52YXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25z
LCBDYW52YXNBcmNTZWdtZW50RmlsbCk7Ci0gICAgY2FzZSAicmVjdEZpbGwiOgotICAgICAgICBy
ZXR1cm4gbmV3IFNpbXBsZUNhbnZhc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMsIENhbnZh
c1JlY3RGaWxsKTsKK30pOworCitDYW52YXNMaW5lUGF0aFN0YWdlID0gVXRpbGl0aWVzLmNyZWF0
ZVN1YmNsYXNzKFNpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZSwKKyAgICBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2UuY2FsbCh0aGlzLCBDYW52
YXNMaW5lUG9pbnQpOworICAgIH0sIHsKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNo
bWFyaykKKyAgICB7CisgICAgICAgIFNpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZS5wcm90b3R5
cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAgICAgIHRoaXMuY29udGV4
dC5saW5lSm9pbiA9IGJlbmNobWFyay5vcHRpb25zWyJsaW5lSm9pbiJdIHx8ICJiZXZlbCI7CiAg
ICAgfQotfQorfSk7CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24o
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKSB7Ci0gICAgcmV0dXJuIG5ldyBDYW52
YXNQYXRoQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci19CitD
YW52YXNMaW5lRGFzaFN0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFNpbXBsZUNhbnZh
c1N0YWdlLAorICAgIGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFNpbXBsZUNhbnZhc1N0YWdl
LmNhbGwodGhpcywgQ2FudmFzTGluZVBvaW50KTsKKyAgICAgICAgdGhpcy5fc3RlcCA9IDA7Cisg
ICAgfSwgeworCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYmVuY2htYXJrKQorICAgIHsKKyAg
ICAgICAgU2ltcGxlQ2FudmFzU3RhZ2UucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBi
ZW5jaG1hcmspOworICAgICAgICB0aGlzLmNvbnRleHQuc2V0TGluZURhc2goWzEsIDIsIDMsIDQs
IDUsIDYsIDcsIDgsIDksIDEwXSk7CisgICAgICAgIHRoaXMuY29udGV4dC5saW5lV2lkdGggPSAx
OworICAgICAgICB0aGlzLmNvbnRleHQuc3Ryb2tlU3R5bGUgPSAiIzAwMCI7CisgICAgfSwKKwor
ICAgIGFuaW1hdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBjb250ZXh0ID0gdGhp
cy5jb250ZXh0OworICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLnNpemUueCwg
dGhpcy5zaXplLnkpOworICAgICAgICBjb250ZXh0LmxpbmVEYXNoT2Zmc2V0ID0gdGhpcy5fc3Rl
cCsrOworICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpOworICAgICAgICBjb250ZXh0Lm1vdmVU
byh0aGlzLnNpemUueCAvIDIsIHRoaXMuc2l6ZS55IC8gMik7CisgICAgICAgIHRoaXMub2JqZWN0
cy5mb3JFYWNoKGZ1bmN0aW9uKG9iamVjdCkgeworICAgICAgICAgICAgb2JqZWN0LmRyYXcoY29u
dGV4dCk7CisgICAgICAgIH0pOworICAgICAgICBjb250ZXh0LnN0cm9rZSgpOworICAgIH0KK30p
OworCisvLyA9PT0gQkVOQ0hNQVJLID09PQorCitDYW52YXNQYXRoQmVuY2htYXJrID0gVXRpbGl0
aWVzLmNyZWF0ZVN1YmNsYXNzKEJlbmNobWFyaywKKyAgICBmdW5jdGlvbihvcHRpb25zKQorICAg
IHsKKyAgICAgICAgdmFyIHN0YWdlOworICAgICAgICBzd2l0Y2ggKG9wdGlvbnNbInBhdGhUeXBl
Il0pIHsKKyAgICAgICAgY2FzZSAibGluZSI6CisgICAgICAgICAgICBzdGFnZSA9IG5ldyBDYW52
YXNMaW5lU2VnbWVudFN0YWdlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAi
bGluZVBhdGgiOiB7CisgICAgICAgICAgICBpZiAoImxpbmVKb2luIiBpbiBvcHRpb25zKQorICAg
ICAgICAgICAgICAgIHN0YWdlID0gbmV3IENhbnZhc0xpbmVQYXRoU3RhZ2UoKTsKKyAgICAgICAg
ICAgIGlmICgibGluZURhc2giIGluIG9wdGlvbnMpCisgICAgICAgICAgICAgICAgc3RhZ2UgPSBu
ZXcgQ2FudmFzTGluZURhc2hTdGFnZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSAicXVhZHJhdGljIjoKKyAgICAgICAgICAgIHN0YWdlID0gbmV3IFNpbXBs
ZUNhbnZhc1N0YWdlKENhbnZhc1F1YWRyYXRpY1NlZ21lbnQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgInF1YWRyYXRpY1BhdGgiOgorICAgICAgICAgICAgc3RhZ2UgPSBuZXcg
U2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlKENhbnZhc1F1YWRyYXRpY1BvaW50KTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJiZXppZXIiOgorICAgICAgICAgICAgc3RhZ2Ug
PSBuZXcgU2ltcGxlQ2FudmFzU3RhZ2UoQ2FudmFzQmV6aWVyU2VnbWVudCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAiYmV6aWVyUGF0aCI6CisgICAgICAgICAgICBzdGFnZSA9
IG5ldyBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2UoQ2FudmFzQmV6aWVyUG9pbnQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgImFyY1RvIjoKKyAgICAgICAgICAgIHN0YWdl
ID0gbmV3IFNpbXBsZUNhbnZhc1N0YWdlKENhbnZhc0FyY1RvU2VnbWVudCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAiYXJjIjoKKyAgICAgICAgICAgIHN0YWdlID0gbmV3IFNp
bXBsZUNhbnZhc1N0YWdlKENhbnZhc0FyY1NlZ21lbnQpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgInJlY3QiOgorICAgICAgICAgICAgc3RhZ2UgPSBuZXcgU2ltcGxlQ2FudmFz
U3RhZ2UoQ2FudmFzUmVjdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAibGlu
ZUZpbGwiOgorICAgICAgICAgICAgc3RhZ2UgPSBuZXcgU2ltcGxlQ2FudmFzUGF0aEZpbGxTdGFn
ZShDYW52YXNMaW5lUG9pbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgInF1
YWRyYXRpY0ZpbGwiOgorICAgICAgICAgICAgc3RhZ2UgPSBuZXcgU2ltcGxlQ2FudmFzUGF0aEZp
bGxTdGFnZShDYW52YXNRdWFkcmF0aWNQb2ludCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSAiYmV6aWVyRmlsbCI6CisgICAgICAgICAgICBzdGFnZSA9IG5ldyBTaW1wbGVDYW52
YXNQYXRoRmlsbFN0YWdlKENhbnZhc0JlemllclBvaW50KTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlICJhcmNUb0ZpbGwiOgorICAgICAgICAgICAgc3RhZ2UgPSBuZXcgU2ltcGxl
Q2FudmFzU3RhZ2UoQ2FudmFzQXJjVG9TZWdtZW50RmlsbCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSAiYXJjRmlsbCI6CisgICAgICAgICAgICBzdGFnZSA9IG5ldyBTaW1wbGVD
YW52YXNTdGFnZShDYW52YXNBcmNTZWdtZW50RmlsbCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSAicmVjdEZpbGwiOgorICAgICAgICAgICAgc3RhZ2UgPSBuZXcgU2ltcGxlQ2Fu
dmFzU3RhZ2UoQ2FudmFzUmVjdEZpbGwpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdGFnZSwgb3B0aW9ucyk7CisgICAgfQor
KTsKKword2luZG93LmJlbmNobWFya0NsYXNzID0gQ2FudmFzUGF0aEJlbmNobWFyazsKKworfSko
KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxl
LWNhbnZhcy5qcwppbmRleCA1NWY0YTg2YjM4YjhmYmE1YzA4MDA1NTVlMTllZGZkYzc5NDAxZDNh
Li4zM2NmNmYwNWVhMTVmYjcyNTVjN2ZlMGM3MjA0NjExNGQzOGZmNjIxIDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUt
Y2FudmFzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUv
cmVzb3VyY2VzL3NpbXBsZS1jYW52YXMuanMKQEAgLTEsNjIgKzEsMjAgQEAKLQotZnVuY3Rpb24g
U2ltcGxlQ2FudmFzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucywgY2FudmFzT2JqZWN0KQotewotICAg
IFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Ci0gICAgdGhpcy5jb250ZXh0ID0g
dGhpcy5lbGVtZW50LmdldENvbnRleHQoIjJkIik7Ci0gICAgdGhpcy5jYW52YXNPYmplY3QgPSBj
YW52YXNPYmplY3Q7Ci0gICAgdGhpcy5fb2JqZWN0cyA9IFtdOwotfQotU2ltcGxlQ2FudmFzU3Rh
Z2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOwotU2ltcGxlQ2Fu
dmFzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU2ltcGxlQ2FudmFzU3RhZ2U7Ci1TaW1w
bGVDYW52YXNTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQotewotICAgIGlm
IChjb3VudCA9PSAwKQotICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0cy5sZW5ndGg7Ci0KLSAg
ICBpZiAoY291bnQgPiAwKSB7Ci0gICAgICAgIC8vIEZvciBwYXRoLWJhc2VkIHRlc3RzLCB1c2Ug
dGhlIG9iamVjdCBsZW5ndGggYXMgYSBtYXhpbXVtIGNvb3JkaW5hdGUgdmFsdWUKLSAgICAgICAg
Ly8gdG8gbWFrZSBpdCBlYXNpZXIgdG8gc2VlIHdoYXQgdGhlIHRlc3QgaXMgZG9pbmcKLSAgICAg
ICAgdmFyIGNvb3JkaW5hdGVNYXhpbXVtID0gTWF0aC5tYXgodGhpcy5fb2JqZWN0cy5sZW5ndGgs
IDIwMCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAg
ICAgICAgdGhpcy5fb2JqZWN0cy5wdXNoKG5ldyB0aGlzLmNhbnZhc09iamVjdCh0aGlzLCBjb29y
ZGluYXRlTWF4aW11bSkpOworVXRpbGl0aWVzLmV4dGVuZE9iamVjdChTaW1wbGVDYW52YXNTdGFn
ZS5wcm90b3R5cGUsIHsKKyAgICB0dW5lOiBmdW5jdGlvbihjb3VudCkKKyAgICB7CisgICAgICAg
IGlmIChjb3VudCA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0cy5sZW5ndGg7
CisKKyAgICAgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgICAgICAgLy8gRm9yIHNvbWUgdGVz
dHMsIGl0IG1heSBiZSBlYXNpZXIgdG8gc2VlIGhvdyB3ZWxsIHRoZSB0ZXN0IGlzIGdvaW5nCisg
ICAgICAgICAgICAvLyBieSBsaW1pdGluZyB0aGUgcmFuZ2Ugb2YgY29vcmRpbmF0ZXMgaW4gd2hp
Y2ggbmV3IG9iamVjdHMgY2FuIHJlc2lkZQorICAgICAgICAgICAgdmFyIGNvb3JkaW5hdGVNYXhp
bXVtRmFjdG9yID0gTWF0aC5taW4odGhpcy5vYmplY3RzLmxlbmd0aCwgTWF0aC5taW4odGhpcy5z
aXplLngsIHRoaXMuc2l6ZS55KSkgLyBNYXRoLm1pbih0aGlzLnNpemUueCwgdGhpcy5zaXplLnkp
OworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAg
ICAgICAgIHRoaXMub2JqZWN0cy5wdXNoKG5ldyB0aGlzLl9jYW52YXNPYmplY3QodGhpcywgY29v
cmRpbmF0ZU1heGltdW1GYWN0b3IpKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLm9iamVjdHMu
bGVuZ3RoOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsK
LSAgICB9Ci0KLSAgICBjb3VudCA9IE1hdGgubWluKC1jb3VudCwgdGhpcy5fb2JqZWN0cy5sZW5n
dGgpOwotICAgIHRoaXMuX29iamVjdHMuc3BsaWNlKC1jb3VudCwgY291bnQpOwotCi0gICAgcmV0
dXJuIHRoaXMuX29iamVjdHMubGVuZ3RoOwotfQotU2ltcGxlQ2FudmFzU3RhZ2UucHJvdG90eXBl
LmFuaW1hdGUgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGNvbnRleHQgPSB0aGlzLmNvbnRleHQ7
Ci0gICAgdGhpcy5fb2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uKG9iamVjdCkgewotICAgICAgICBv
YmplY3QuZHJhdyhjb250ZXh0KTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gU2ltcGxlQ2FudmFz
QW5pbWF0b3IoYmVuY2htYXJrLCBvcHRpb25zKQotewotICAgIFN0YWdlQW5pbWF0b3IuY2FsbCh0
aGlzLCBiZW5jaG1hcmssIG9wdGlvbnMpOwotICAgIHRoaXMuX2NvbnRleHQgPSBiZW5jaG1hcmsu
X3N0YWdlLmNvbnRleHQ7Ci19Ci0KLVNpbXBsZUNhbnZhc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoU3RhZ2VBbmltYXRvci5wcm90b3R5cGUpOwotU2ltcGxlQ2FudmFzQW5pbWF0
b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU2ltcGxlQ2FudmFzQW5pbWF0b3I7Ci1TaW1wbGVD
YW52YXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlz
Ll9jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueCwg
dGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLnkpOwotICAgIHJldHVybiBTdGFnZUFuaW1hdG9y
LnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGhpcy5fb3B0aW9ucyk7Ci19Ci0KLQotZnVu
Y3Rpb24gU2ltcGxlQ2FudmFzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVz
c0JhcikgewotICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHByb2dyZXNzQmFyKTsKLX0KLVNpbXBsZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7Ci1TaW1wbGVDYW52YXNCZW5j
aG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU2ltcGxlQ2FudmFzQmVuY2htYXJrOwotU2lt
cGxlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9uKCkg
ewotICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzQW5pbWF0b3IodGhpcywgdGhpcy5fb3B0aW9u
cyk7Ci19CiAKKyAgICAgICAgY291bnQgPSBNYXRoLm1pbigtY291bnQsIHRoaXMub2JqZWN0cy5s
ZW5ndGgpOworICAgICAgICB0aGlzLm9iamVjdHMuc3BsaWNlKC1jb3VudCwgY291bnQpOworICAg
ICAgICByZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aDsKKyAgICB9Cit9KTsKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvc2ltcGxlLWNhbnZhcy1w
YXRocy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9zaW1w
bGUtY2FudmFzLXBhdGhzLmh0bWwKaW5kZXggMGQ1OTdmYjg4NjE0Njc1NTQ4ZGMxZjRjZDFlNzM2
OWMxODg2NjhkZi4uNGEyZGE4ZjZlNzYwOWY3NjJlY2MyOWI2YTFkOWRjMTUwNTgyZjRiMSAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9zaW1wbGUt
Y2FudmFzLXBhdGhzLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3NpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWwKQEAgLTIsMTcgKzIsMTcgQEAKIDxodG1s
PgogPGhlYWQ+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJl
Zj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8Y2FudmFz
IGlkPSJzdGFnZSI+PC9jYW52YXM+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9h
bGdvcml0aG0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
c3RyaW5ncy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9z
YW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4
dGVuc2lvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0
aC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtc3RhZ2UuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaW1wbGUtY2FudmFzLXBhdGhz
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotICAgIDxjYW52YXMgaWQ9InN0YWdlIj48
L2NhbnZhcz4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1w
bGF0ZS1jYW52YXMuanMKaW5kZXggM2M4ODllZTc3N2YwMGVkZDY4MmQ1NmY2M2Q4MDlmNjQwMjI3
NDlhNS4uNDI1MGUzOTg1MmMxMjMzODkxNTgzZTNmMWI1MWNhYzExN2JiMTFkZSAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90
ZW1wbGF0ZS1jYW52YXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMKQEAgLTEsMTA0ICsxLDgwIEBA
CisoZnVuY3Rpb24oKSB7CisKIGZ1bmN0aW9uIFRlbXBsYXRlQ2FudmFzT2JqZWN0KHN0YWdlKQog
ewogICAgIC8vIEZvciB0aGUgY2FudmFzIHN0YWdlLCBtb3N0IGxpa2VseSB5b3Ugd2lsbCBuZWVk
IHRvIGNyZWF0ZSB5b3VyCiAgICAgLy8gYW5pbWF0ZWQgb2JqZWN0IHNpbmNlIGl0J3Mgb25seSBk
cmF3IHRpbWUgdGhpbmcuCi0gICAgCisKICAgICAvLyBGaWxsIGluIHlvdXIgb2JqZWN0IGRhdGEu
CiB9CiAKLVRlbXBsYXRlQ2FudmFzT2JqZWN0LnByb3RvdHlwZS5fZHJhdyA9IGZ1bmN0aW9uKCkK
LXsKLSAgICAvLyBEcmF3IHlvdXIgb2JqZWN0LgotfQorVGVtcGxhdGVDYW52YXNPYmplY3QucHJv
dG90eXBlID0geworICAgIF9kcmF3OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAvLyBEcmF3
IHlvdXIgb2JqZWN0LgorICAgIH0sCiAKLVRlbXBsYXRlQ2FudmFzT2JqZWN0LnByb3RvdHlwZS5h
bmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQotewotICAgIC8vIFJlZHJhdyB0aGUgYW5pbWF0
ZWQgb2JqZWN0LiBUaGUgbGFzdCB0aW1lIHRoaXMgYW5pbWF0ZWQKLSAgICAvLyBpdGVtIHdhcyBk
cmF3biBiZWZvcmUgJ3RpbWVEZWx0YScuCi0gICAgCi0gICAgLy8gTW92ZSB5b3VyIG9iamVjdC4K
LSAgICAKLSAgICAvLyBSZWRyYXcgeW91ciBvYmplY3QuCi0gICAgdGhpcy5fZHJhdygpOwotfQor
ICAgIGFuaW1hdGU6IGZ1bmN0aW9uKHRpbWVEZWx0YSkKKyAgICB7CisgICAgICAgIC8vIFJlZHJh
dyB0aGUgYW5pbWF0ZWQgb2JqZWN0LiBUaGUgbGFzdCB0aW1lIHRoaXMgYW5pbWF0ZWQKKyAgICAg
ICAgLy8gaXRlbSB3YXMgZHJhd24gYmVmb3JlICd0aW1lRGVsdGEnLgogCi1mdW5jdGlvbiBUZW1w
bGF0ZUNhbnZhc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCi17Ci0gICAgU3RhZ2UuY2FsbCh0aGlz
LCBlbGVtZW50LCBvcHRpb25zKTsKLSAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0
Q29udGV4dCgiMmQiKTsKKyAgICAgICAgLy8gTW92ZSB5b3VyIG9iamVjdC4KIAotICAgIC8vIERl
ZmluZSBhIGNvbGxlY3Rpb24gZm9yIHlvdXIgb2JqZWN0cy4KLX0KKyAgICAgICAgLy8gUmVkcmF3
IHlvdXIgb2JqZWN0LgorICAgICAgICB0aGlzLl9kcmF3KCk7CisgICAgfQorfTsKIAotVGVtcGxh
dGVDYW52YXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7
Ci1UZW1wbGF0ZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRlbXBsYXRlQ2Fu
dmFzU3RhZ2U7CitUZW1wbGF0ZUNhbnZhc1N0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNz
KFN0YWdlLAorICAgIGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFN0YWdlLmNhbGwodGhpcyk7
CisgICAgfSwgewogCi1UZW1wbGF0ZUNhbnZhc1N0YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rp
b24oY291bnQpCi17Ci0gICAgLy8gSWYgY291bnQgaXMgLXZlLCAtY291bnQgZWxlbWVudHMgbmVl
ZCB0byBiZSByZW1vdmVkIGZvcm0gdGhlCi0gICAgLy8gc3RhZ2UuIElmIGNvdW50IGlzICt2ZSwg
K2NvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgYWRkZWQgdG8KLSAgICAvLyB0aGUgc3RhZ2UuCi0g
ICAgCi0gICAgLy8gQ2hhbmdlIG9iamVjdHMgaW4gdGhlIHN0YWdlLgotICAgIAotICAgIC8vIFJl
dHVybiB0aGUgbnVtYmVyIG9mIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIHN0YWdlLgotICAgIC8v
IFRoaXMgbnVtYmVyIGlzIHJlY29yZGVkIGluIHRoZSBzYW1wbGVkIGRhdGEuCi0gICAgCi0gICAg
Ly8gUmV0dXJuIHRoZSBjb3VudCBvZiB0aGUgb2JqZWN0cyBpbiB0aGUgc3RhZ2UuCi0gICAgcmV0
dXJuIDA7Ci19CisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYmVuY2htYXJrKQorICAgIHsKKyAg
ICAgICAgU3RhZ2UucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBiZW5jaG1hcmspOwor
ICAgICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKIAot
VGVtcGxhdGVDYW52YXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0
YSkKLXsKLSAgICAvLyBBbmltYXRlIHRoZSBlbGVtZW50cyBzdWNoIHRoYXQgYWxsIG9mIHRoZW0g
YXJlIHJlZHJhd24uIE1vc3QKLSAgICAvLyBsaWtlbHkgeW91IHdpbGwgbmVlZCB0byBjYWxsIFRl
bXBsYXRlQ2FudmFzT2JqZWN0LmFuaW1hdGUoKQotICAgIC8vIGZvciBhbGwgeW91ciBhbmltYXRl
ZCBvYmplY3RzIGhlcmUuCisgICAgICAgIC8vIERlZmluZSBhIGNvbGxlY3Rpb24gZm9yIHlvdXIg
b2JqZWN0cy4KKyAgICB9LAogCi0gICAgLy8gTG9vcCB0aHJvdWdoIGFsbCB5b3VyIG9iamVjdHMg
YW5kIGFzayB0aGVtIHRvIGFuaW1hdGUuCi19CisgICAgdHVuZTogZnVuY3Rpb24oY291bnQpCisg
ICAgeworICAgICAgICAvLyBJZiBjb3VudCBpcyAtdmUsIC1jb3VudCBlbGVtZW50cyBuZWVkIHRv
IGJlIHJlbW92ZWQgZm9ybSB0aGUKKyAgICAgICAgLy8gc3RhZ2UuIElmIGNvdW50IGlzICt2ZSwg
K2NvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgYWRkZWQgdG8KKyAgICAgICAgLy8gdGhlIHN0YWdl
LgogCi1mdW5jdGlvbiBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yKGJlbmNobWFyaywgb3B0aW9ucykK
LXsKLSAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyaywgb3B0aW9ucyk7Ci0gICAgdGhp
cy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsKLX0KLQotVGVtcGxhdGVDYW52
YXNBbmltYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQW5pbWF0b3IucHJvdG90
eXBlKTsKLVRlbXBsYXRlQ2FudmFzQW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVGVt
cGxhdGVDYW52YXNBbmltYXRvcjsKKyAgICAgICAgLy8gQ2hhbmdlIG9iamVjdHMgaW4gdGhlIHN0
YWdlLgogCi1UZW1wbGF0ZUNhbnZhc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rp
b24oKQotewotICAgIC8vIE1vc3QgbGlrZWx5IHlvdSB3aWxsIG5lZWQgdG8gY2xlYXIgdGhlIGNh
bnZhcyB3aXRoIGV2ZXJ5IHJlZHJhdy4KLSAgICB0aGlzLl9jb250ZXh0LmNsZWFyUmVjdCgwLCAw
LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5z
aXplLnkpOworICAgICAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBhbGwgdGhlIGVsZW1lbnRz
IGluIHRoZSBzdGFnZS4KKyAgICAgICAgLy8gVGhpcyBudW1iZXIgaXMgcmVjb3JkZWQgaW4gdGhl
IHNhbXBsZWQgZGF0YS4KIAotICAgIC8vIERyYXcgc2NlbmUgc3R1ZmYgaGVyZSBpZiBuZWVkZWQu
CisgICAgICAgIC8vIFJldHVybiB0aGUgY291bnQgb2YgdGhlIG9iamVjdHMgaW4gdGhlIHN0YWdl
LgorICAgICAgICByZXR1cm4gMDsKKyAgICB9LAogCi0gICAgcmV0dXJuIFN0YWdlQW5pbWF0b3Iu
cHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKLX0KKyAgICBhbmltYXRlOiBmdW5jdGlvbih0
aW1lRGVsdGEpCisgICAgeworICAgICAgICAvLyBBbmltYXRlIHRoZSBlbGVtZW50cyBzdWNoIHRo
YXQgYWxsIG9mIHRoZW0gYXJlIHJlZHJhd24uIE1vc3QKKyAgICAgICAgLy8gbGlrZWx5IHlvdSB3
aWxsIG5lZWQgdG8gY2FsbCBUZW1wbGF0ZUNhbnZhc09iamVjdC5hbmltYXRlKCkKKyAgICAgICAg
Ly8gZm9yIGFsbCB5b3VyIGFuaW1hdGVkIG9iamVjdHMgaGVyZS4KIAotZnVuY3Rpb24gVGVtcGxh
dGVDYW52YXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQotewot
ICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dy
ZXNzQmFyKTsKLX0KKyAgICAgICAgLy8gTW9zdCBsaWtlbHkgeW91IHdpbGwgbmVlZCB0byBjbGVh
ciB0aGUgY2FudmFzIHdpdGggZXZlcnkgcmVkcmF3LgorICAgICAgICB0aGlzLmNvbnRleHQuY2xl
YXJSZWN0KDAsIDAsIHRoaXMuc2l6ZS54LCB0aGlzLnNpemUueSk7CiAKLVRlbXBsYXRlQ2FudmFz
QmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90
eXBlKTsKLVRlbXBsYXRlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRl
bXBsYXRlQ2FudmFzQmVuY2htYXJrOworICAgICAgICAvLyBMb29wIHRocm91Z2ggYWxsIHlvdXIg
b2JqZWN0cyBhbmQgYXNrIHRoZW0gdG8gYW5pbWF0ZS4KKyAgICB9Cit9KTsKIAotVGVtcGxhdGVD
YW52YXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkK
LXsKLSAgICAvLyBBdHRhY2ggdGhlIHN0YWdlIHRvIHRoZSBiZW5jaG1hcmsuCi0gICAgcmV0dXJu
IG5ldyBUZW1wbGF0ZUNhbnZhc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwotfQorVGVt
cGxhdGVDYW52YXNCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQmVuY2htYXJr
LAorICAgIGZ1bmN0aW9uKG9wdGlvbnMpCisgICAgeworICAgICAgICBCZW5jaG1hcmsuY2FsbCh0
aGlzLCBuZXcgVGVtcGxhdGVDYW52YXNTdGFnZSgpLCBvcHRpb25zKTsKKyAgICB9CispOwogCi1U
ZW1wbGF0ZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlv
bigpCi17Ci0gICAgLy8gQXR0YWNoIHRoZSBhbmltYXRvciB0byB0aGUgYmVuY2htYXJrLgotICAg
IHJldHVybiBuZXcgVGVtcGxhdGVDYW52YXNBbmltYXRvcih0aGlzLCB0aGlzLl9vcHRpb25zKTsK
LX0KK3dpbmRvdy5iZW5jaG1hcmtDbGFzcyA9IFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrOwogCi13
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCBwcm9ncmVzc0JhcikKLXsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9t
IHRoZSB0ZXN0IGhhcm5lc3Mgd2hpY2ggc3RhcnRzIHRoZQotICAgIC8vIHRlc3QgYnkgY3JlYXRp
bmcgeW91ciBiZW5jaG1hcmsgb2JqZWN0LgotICAgIHJldHVybiBuZXcgVGVtcGxhdGVDYW52YXNC
ZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KK30pKCk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jc3MuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRl
LWNzcy5qcwppbmRleCAyZTNjOTU1NDRlNmM5MTcyNTJkZTE0YzQzNDIyZDE4NzhhZjI2NjNhLi42
YzA3N2ZhOTEzZjVhOGNlM2E2YTQ1YmFkMjQ5YTBkMDYwZWY0NmMyIDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRl
LWNzcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUv
cmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qcwpAQCAtMSw1NSArMSw1MiBAQAotZnVuY3Rpb24gVGVt
cGxhdGVDc3NTdGFnZShlbGVtZW50LCBvcHRpb25zKQotewotICAgIFN0YWdlLmNhbGwodGhpcywg
ZWxlbWVudCwgb3B0aW9ucyk7Ci19Ci0KLVRlbXBsYXRlQ3NzU3RhZ2UucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOwotVGVtcGxhdGVDc3NTdGFnZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBUZW1wbGF0ZUNzc1N0YWdlOwotCi1UZW1wbGF0ZUNzc1N0YWdlLnByb3Rv
dHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpCi17Ci0gICAgLy8gSWYgY291bnQgaXMgLXZlLCAt
Y291bnQgZWxlbWVudHMgbmVlZCB0byBiZSByZW1vdmVkIGZvcm0gdGhlCi0gICAgLy8gc3RhZ2Uu
IElmIGNvdW50IGlzICt2ZSwgK2NvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgYWRkZWQgdG8KLSAg
ICAvLyB0aGUgc3RhZ2UuCi0gICAgCi0gICAgLy8gQ2hhbmdlIG9iamVjdHMgaW4gdGhlIHN0YWdl
LgotICAgIAotICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGFsbCB0aGUgZWxlbWVudHMgaW4g
dGhlIHN0YWdlLgotICAgIC8vIFRoaXMgbnVtYmVyIGlzIHJlY29yZGVkIGluIHRoZSBzYW1wbGVk
IGRhdGEuCi0gICAgCi0gICAgLy8gUmV0dXJuIHRoZSBjb3VudCBvZiB0aGUgb2JqZWN0cyBpbiB0
aGUgc3RhZ2UuCi0gICAgcmV0dXJuIDA7Ci19Ci0KLVRlbXBsYXRlQ3NzU3RhZ2UucHJvdG90eXBl
LmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCi17Ci0gICAgLy8gQW5pbWF0ZSB0aGUgZWxl
bWVudHMgc3VjaCB0aGF0IGFsbCBvZiB0aGVtIGFyZSByZWRyYXduLiBZb3UgCi0gICAgLy8gbWF5
IG5lZWQgdG8gZGVmaW5lIHlvdXIgb2JqZWN0IHNvIGl0IGtlZXBzIGl0cyBhbmltYXRpb24gZGF0
YS4KLSAgICAvLyBUaGlzIG9iamVjdCBzaG91bGQgZW5jYXBzdWxhdGUgYSBjb3Jyb3Nwb25kaW5n
IEhUTUxFbGVtZW50LgotICAgIC8vIFlvdSBtYXkgYWxzbyBkZWZpbmUgYSBtZXRob2QgY2FsbGVk
IGFuaW1hdGUoKSBpbiB0aGlzIG9iamVjdAotICAgIC8vIGFuZCBqdXN0IGNhbGwgdGhpcyBmdW5j
dGlvbiBoZXJlIGZvciBhbGwgdGhlIGVsZW1lbnRzLgotICAgIAotICAgIC8vIExvb3AgdGhyb3Vn
aCBhbGwgeW91ciBvYmplY3RzIGFuZCBhc2sgdGhlbSB0byBhbmltYXRlLgotfQotCi1mdW5jdGlv
biBUZW1wbGF0ZUNzc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIp
Ci17Ci0gICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cHJvZ3Jlc3NCYXIpOwotfQotCi1UZW1wbGF0ZUNzc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7Ci1UZW1wbGF0ZUNzc0JlbmNobWFy
ay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZUNzc0JlbmNobWFyazsKLQotVGVtcGxh
dGVDc3NCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkK
LXsKLSAgICAvLyBZb3UgbmVlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZCBzdWNoIHRoYXQgeW91
ciBzdGFnZSBpcyBob29rZWQKLSAgICAvLyB1cCB0byB0aGUgYmVuY2htYXJrLgotICAgIHJldHVy
biBuZXcgVGVtcGxhdGVDc3NTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKLX0KLQotd2lu
ZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcHJvZ3Jlc3NCYXIpCi17Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0
aGUgdGVzdCBoYXJuZXNzIHdoaWNoIHN0YXJ0cyB0aGUKLSAgICAvLyB0ZXN0IGJ5IGNyZWF0aW5n
IHlvdXIgYmVuY2htYXJrIG9iamVjdC4KLSAgICByZXR1cm4gbmV3IFRlbXBsYXRlQ3NzQmVuY2ht
YXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci19CisoZnVuY3Rpb24oKSB7
CisKK1RlbXBsYXRlQ3NzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2UsCisg
ICAgZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgU3RhZ2UuY2FsbCh0aGlzKTsKKyAgICB9LCB7
CisKKyAgICBpbml0aWFsaXplOiBmdW5jdGlvbihiZW5jaG1hcmspCisgICAgeworICAgICAgICBT
dGFnZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisKKyAgICAg
ICAgLy8gRG8gaW5pdGlhbGl6YXRpb24gaGVyZS4KKyAgICB9LAorCisgICAgdHVuZTogZnVuY3Rp
b24oY291bnQpCisgICAgeworICAgICAgICAvLyBJZiBjb3VudCBpcyAtdmUsIC1jb3VudCBlbGVt
ZW50cyBuZWVkIHRvIGJlIHJlbW92ZWQgZm9ybSB0aGUKKyAgICAgICAgLy8gc3RhZ2UuIElmIGNv
dW50IGlzICt2ZSwgK2NvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgYWRkZWQgdG8KKyAgICAgICAg
Ly8gdGhlIHN0YWdlLgorCisgICAgICAgIC8vIENoYW5nZSBvYmplY3RzIGluIHRoZSBzdGFnZS4K
KworICAgICAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBhbGwgdGhlIGVsZW1lbnRzIGluIHRo
ZSBzdGFnZS4KKyAgICAgICAgLy8gVGhpcyBudW1iZXIgaXMgcmVjb3JkZWQgaW4gdGhlIHNhbXBs
ZWQgZGF0YS4KKworICAgICAgICAvLyBSZXR1cm4gdGhlIGNvdW50IG9mIHRoZSBvYmplY3RzIGlu
IHRoZSBzdGFnZS4KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfSwKKworICAgIGFuaW1hdGU6IGZ1
bmN0aW9uKHRpbWVEZWx0YSkKKyAgICB7CisgICAgICAgIC8vIEFuaW1hdGUgdGhlIGVsZW1lbnRz
IHN1Y2ggdGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVkcmF3bi4gWW91CisgICAgICAgIC8vIG1heSBu
ZWVkIHRvIGRlZmluZSB5b3VyIG9iamVjdCBzbyBpdCBrZWVwcyBpdHMgYW5pbWF0aW9uIGRhdGEu
CisgICAgICAgIC8vIFRoaXMgb2JqZWN0IHNob3VsZCBlbmNhcHN1bGF0ZSBhIGNvcnJvc3BvbmRp
bmcgSFRNTEVsZW1lbnQuCisgICAgICAgIC8vIFlvdSBtYXkgYWxzbyBkZWZpbmUgYSBtZXRob2Qg
Y2FsbGVkIGFuaW1hdGUoKSBpbiB0aGlzIG9iamVjdAorICAgICAgICAvLyBhbmQganVzdCBjYWxs
IHRoaXMgZnVuY3Rpb24gaGVyZSBmb3IgYWxsIHRoZSBlbGVtZW50cy4KKworICAgICAgICAvLyBM
b29wIHRocm91Z2ggYWxsIHlvdXIgb2JqZWN0cyBhbmQgYXNrIHRoZW0gdG8gYW5pbWF0ZS4KKyAg
ICB9Cit9KTsKKworVGVtcGxhdGVDc3NCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xh
c3MoQmVuY2htYXJrLAorICAgIGZ1bmN0aW9uKG9wdGlvbnMpCisgICAgeworICAgICAgICBCZW5j
aG1hcmsuY2FsbCh0aGlzLCBuZXcgVGVtcGxhdGVDc3NTdGFnZSgpLCBvcHRpb25zKTsKKyAgICB9
CispOworCit3aW5kb3cuYmVuY2htYXJrQ2xhc3MgPSBUZW1wbGF0ZUNzc0JlbmNobWFyazsKKwor
fSkoKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1w
bGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcuanMKaW5kZXggYTg4YWRk
NzY2Nzg5M2Y3NDM2ZGI5MDA4OTJhYjdiZjViYzgxMDFhNi4uN2ZkYWRiYjk0YzUxMjM5YWI2Mjk5
YmFjYzIzM2MxN2E3ZmU5ODU5ZSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcuanMKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1z
dmcuanMKQEAgLTEsNTUgKzEsNTIgQEAKLWZ1bmN0aW9uIFRlbXBsYXRlU3ZnU3RhZ2UoZWxlbWVu
dCwgb3B0aW9ucykKLXsKLSAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOwot
fQotCi1UZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2UucHJv
dG90eXBlKTsKLVRlbXBsYXRlU3ZnU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVGVtcGxh
dGVTdmdTdGFnZTsKLQotVGVtcGxhdGVTdmdTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9u
KGNvdW50KQotewotICAgIC8vIElmIGNvdW50IGlzIC12ZSwgLWNvdW50IGVsZW1lbnRzIG5lZWQg
dG8gYmUgcmVtb3ZlZCBmb3JtIHRoZQotICAgIC8vIHN0YWdlLiBJZiBjb3VudCBpcyArdmUsICtj
b3VudCBlbGVtZW50cyBuZWVkIHRvIGJlIGFkZGVkIHRvCi0gICAgLy8gdGhlIHN0YWdlLgotICAg
IAotICAgIC8vIFRPRE86IENoYW5nZSBvYmplY3RzIGluIHRoZSBzdGFnZS4KLSAgICAKLSAgICAv
LyBSZXR1cm4gdGhlIG51bWJlciBvZiBhbGwgdGhlIGVsZW1lbnRzIGluIHRoZSBzdGFnZS4KLSAg
ICAvLyBUaGlzIG51bWJlciBpcyByZWNvcmRlZCBpbiB0aGUgc2FtcGxlZCBkYXRhLgotICAgIAot
ICAgIC8vIFRPRE86IFJldHVybiB0aGUgY291bnQgb2YgdGhlIG9iamVjdHMgaW4gdGhlIHN0YWdl
LgotICAgIHJldHVybiAwOwotfQotCi1UZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlwZS5hbmltYXRl
ID0gZnVuY3Rpb24odGltZURlbHRhKQotewotICAgIC8vIEFuaW1hdGUgdGhlIGVsZW1lbnRzIHN1
Y2ggdGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVkcmF3bi4gWW91IAotICAgIC8vIG1heSBuZWVkIHRv
IGRlZmluZSB5b3VyIG9iamVjdCBzbyBpdCBrZWVwcyBpdHMgYW5pbWF0aW9uIGRhdGEuCi0gICAg
Ly8gVGhpcyBvYmplY3Qgc2hvdWxkIGVuY2Fwc3VsYXRlIGEgY29ycm9zcG9uZGluZyBTVkdFbGVt
ZW50LgotICAgIC8vIFlvdSBtYXkgYWxzbyBkZWZpbmUgYSBtZXRob2QgY2FsbGVkIGFuaW1hdGUo
KSBpbiB0aGlzIG9iamVjdAotICAgIC8vIGFuZCBqdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBoZXJl
IGZvciBhbGwgdGhlIGVsZW1lbnRzLgotICAgIAotICAgIC8vIFRPRE86IExvb3AgdGhyb3VnaCBh
bGwgeW91ciBvYmplY3RzIGFuZCBhc2sgdGhlbSB0byBhbmltYXRlLgotfQotCi1mdW5jdGlvbiBU
ZW1wbGF0ZVN2Z0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCi17
Ci0gICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJv
Z3Jlc3NCYXIpOwotfQotCi1UZW1wbGF0ZVN2Z0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7Ci1UZW1wbGF0ZVN2Z0JlbmNobWFyay5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZVN2Z0JlbmNobWFyazsKLQotVGVtcGxhdGVT
dmdCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKLXsK
LSAgICAvLyBZb3UgbmVlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZCBzdWNoIHRoYXQgeW91ciBz
dGFnZSBpcyBob29rZWQKLSAgICAvLyB1cCB0byB0aGUgYmVuY2htYXJrLgotICAgIHJldHVybiBu
ZXcgVGVtcGxhdGVTdmdTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKLX0KLQotd2luZG93
LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cHJvZ3Jlc3NCYXIpCi17Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUg
dGVzdCBoYXJuZXNzIHdoaWNoIHN0YXJ0cyB0aGUKLSAgICAvLyB0ZXN0IGJ5IGNyZWF0aW5nIHlv
dXIgYmVuY2htYXJrIG9iamVjdC4KLSAgICByZXR1cm4gbmV3IFRlbXBsYXRlU3ZnQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci19CisoZnVuY3Rpb24oKSB7CisK
K1RlbXBsYXRlU3ZnU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2UsCisgICAg
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgU3RhZ2UuY2FsbCh0aGlzKTsKKyAgICB9LCB7CisK
KyAgICBpbml0aWFsaXplOiBmdW5jdGlvbihiZW5jaG1hcmspCisgICAgeworICAgICAgICBTdGFn
ZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisKKyAgICAgICAg
Ly8gRG8gaW5pdGlhbGl6YXRpb24gaGVyZS4KKyAgICB9LAorCisgICAgdHVuZTogZnVuY3Rpb24o
Y291bnQpCisgICAgeworICAgICAgICAvLyBJZiBjb3VudCBpcyAtdmUsIC1jb3VudCBlbGVtZW50
cyBuZWVkIHRvIGJlIHJlbW92ZWQgZm9ybSB0aGUKKyAgICAgICAgLy8gc3RhZ2UuIElmIGNvdW50
IGlzICt2ZSwgK2NvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgYWRkZWQgdG8KKyAgICAgICAgLy8g
dGhlIHN0YWdlLgorCisgICAgICAgIC8vIFRPRE86IENoYW5nZSBvYmplY3RzIGluIHRoZSBzdGFn
ZS4KKworICAgICAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBhbGwgdGhlIGVsZW1lbnRzIGlu
IHRoZSBzdGFnZS4KKyAgICAgICAgLy8gVGhpcyBudW1iZXIgaXMgcmVjb3JkZWQgaW4gdGhlIHNh
bXBsZWQgZGF0YS4KKworICAgICAgICAvLyBUT0RPOiBSZXR1cm4gdGhlIGNvdW50IG9mIHRoZSBv
YmplY3RzIGluIHRoZSBzdGFnZS4KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfSwKKworICAgIGFu
aW1hdGU6IGZ1bmN0aW9uKHRpbWVEZWx0YSkKKyAgICB7CisgICAgICAgIC8vIEFuaW1hdGUgdGhl
IGVsZW1lbnRzIHN1Y2ggdGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVkcmF3bi4gWW91CisgICAgICAg
IC8vIG1heSBuZWVkIHRvIGRlZmluZSB5b3VyIG9iamVjdCBzbyBpdCBrZWVwcyBpdHMgYW5pbWF0
aW9uIGRhdGEuCisgICAgICAgIC8vIFRoaXMgb2JqZWN0IHNob3VsZCBlbmNhcHN1bGF0ZSBhIGNv
cnJvc3BvbmRpbmcgU1ZHRWxlbWVudC4KKyAgICAgICAgLy8gWW91IG1heSBhbHNvIGRlZmluZSBh
IG1ldGhvZCBjYWxsZWQgYW5pbWF0ZSgpIGluIHRoaXMgb2JqZWN0CisgICAgICAgIC8vIGFuZCBq
dXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBoZXJlIGZvciBhbGwgdGhlIGVsZW1lbnRzLgorCisgICAg
ICAgIC8vIFRPRE86IExvb3AgdGhyb3VnaCBhbGwgeW91ciBvYmplY3RzIGFuZCBhc2sgdGhlbSB0
byBhbmltYXRlLgorICAgIH0KK30pOworCitUZW1wbGF0ZVN2Z0JlbmNobWFyayA9IFV0aWxpdGll
cy5jcmVhdGVTdWJjbGFzcyhCZW5jaG1hcmssCisgICAgZnVuY3Rpb24ob3B0aW9ucykKKyAgICB7
CisgICAgICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIG5ldyBUZW1wbGF0ZVN2Z1N0YWdlKCksIG9w
dGlvbnMpOworICAgIH0KKyk7CisKK3dpbmRvdy5iZW5jaG1hcmtDbGFzcyA9IFRlbXBsYXRlU3Zn
QmVuY2htYXJrOworCit9KSgpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNhbnZhcy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNhbnZhcy5odG1sCmluZGV4IGMx
N2Q3Zjk4OGZlNTVhNGVhMWMxNzA3YThhYmI1MmNmMGZlZjYwMDcuLmI4N2JhNzk1NDUwM2UzODA3
OGI5ZGM2NmFiMTI5OTgzMTU0NDIzZGQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jYW52YXMuaHRtbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWwK
QEAgLTIsMTYgKzIsMTUgQEAKIDxodG1sPgogPGhlYWQ+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgICA8Y2FudmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+CiAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RyaW5ncy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rl
bXBsYXRlLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8Y2FudmFz
IGlkPSJzdGFnZSI+PC9jYW52YXM+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY3NzLmh0bWwg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY3Nz
Lmh0bWwKaW5kZXggMWI5YjBmYmRkOGUzZjg1NmUyZTFhOGU4ZTNlZWRmMDk2ZWU4ZjYzMS4uOTBi
ZjJlOWJmZjc2NzIxNjczOTA3NjI5MGQwZTVhMjBjMDk2ZWNjMyAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1j
c3MuaHRtbApAQCAtMiwxNiArMiwxNSBAQAogPGh0bWw+CiA8aGVhZD4KICAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3Nz
Ij4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9InN0YWdlIj48L2Rpdj4KICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdHJpbmdzLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
dGVtcGxhdGUtY3NzLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotICAgIDxkaXYgaWQ9
InN0YWdlIj48L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbCBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbApp
bmRleCBhODFmODA4Mjg3ZjJhYzdiNGY3ZmU5ZWRiNDVmZGVmODFlNDllM2I4Li4yZTBkZjlhNTE0
NjVjMmE5MGVlMGUyM2EyNjU0MGFjYzFjYTUzMjU2IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1s
CkBAIC0yLDE2ICsyLDE1IEBACiA8aHRtbD4KIDxoZWFkPgogICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorPC9o
ZWFkPgorPGJvZHk+CisgICAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3ZnPgogICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3N0cmluZ3MuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9zdGFnZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZW1wbGF0
ZS1zdmcuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci0gICAgPHN2ZyBpZD0ic3RhZ2Ui
Pjwvc3ZnPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sCmluZGV4IDMyZGEyYWM1
NWQzZmUwMTY3NDRiMDY0OTY2NWQ3MDMyMmI5MGM2NmEuLmZiZmYzNzNlNTFmMzQ3NWJlOWVkZDFk
N2I5YThkNjE5NWRiZDNkYjggMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWwKQEAgLTEsNiArMSw3IEBACiA8
IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CiAgICAgPHN0
eWxlPgogICAgICAgICAudGV4dC1sYXllciB7CiAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CkBAIC0xNywxOCArMTgsMTYgQEAKICAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOTZl
bTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIDwvc3R5bGU+ICAKLSAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2Uu
Y3NzIj4KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0ic3RhZ2Ui
PjwvZGl2PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0cmluZ3MuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKICAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMiPjwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHk+Ci0gICAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2Vz
L2xheWVyaW5nLXRleHQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4
dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcwppbmRleCBlMmI3YmE5OTI4OGYwMDZjZjEwNmNi
NmMxMzQ5ZjljZGZhOGU0MGI4Li4xMzhiMDQ2Mjk3NzhjOWZhNzY5OWI3ZDU1ZDAwM2YzZjhhMWE2
OWQ2IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9y
ZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcwpAQCAtMSwyNTUgKzEsMjYx
IEBACi1mdW5jdGlvbiBMYXllcmluZ1RleHRTdGFnZShlbGVtZW50LCBvcHRpb25zKQotewotICAg
IFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Ci0gICAgdGhpcy5fdGV4dEVsZW1l
bnRQYXJlbnQgPSB0aGlzLmVsZW1lbnQ7Ci0gICAgdGhpcy5fdGV4dEVsZW1lbnRzID0gW107Ci0g
ICAgdGhpcy5fdGV4dEl0ZW1JbmRleCA9IDA7Ci0gICAgdGhpcy5fY29sb3JJbmRleCA9IDA7Ci0g
ICAgdGhpcy5fYW5pbWF0ZUNvdW50cyA9IDA7Ci19Ci0KLUxheWVyaW5nVGV4dFN0YWdlLnRleHRJ
dGVtcyA9IFsKLSAgICAiPGRpdiBjbGFzcz0ndGV4dC1sYXllcic+IiwKLSAgICAgICAgIjxoMj5U
eXBlcyBvZiBiZW5jaG1hcmtzPC9oMj4iLAotICAgICAgICAiPG9sPiIsCi0gICAgICAgICAgICAi
PGxpPlJlYWwgcHJvZ3JhbSIsCi0gICAgICAgICAgICAgICAgIjx1bD4iLAotICAgICAgICAgICAg
ICAgICAgICAiPGxpPndvcmQgcHJvY2Vzc2luZyBzb2Z0d2FyZTwvbGk+IiwKLSAgICAgICAgICAg
ICAgICAgICAgIjxsaT50b29sIHNvZnR3YXJlIG9mIENBRDwvbGk+IiwKLSAgICAgICAgICAgICAg
ICAgICAgIjxsaT51c2VyJ3MgYXBwbGljYXRpb24gc29mdHdhcmUgKGkuZS46IE1JUyk8L2xpPiIs
Ci0gICAgICAgICAgICAgICAgIjwvdWw+IiwKLSAgICAgICAgICAgICI8L2xpPiIsCi0gICAgICAg
ICAgICAiPGxpPktlcm5lbCIsCi0gICAgICAgICAgICAgICAgIjx1bD4iLAotICAgICAgICAgICAg
ICAgICAgICAiPGxpPmNvbnRhaW5zIGtleSBjb2RlczwvbGk+IiwKLSAgICAgICAgICAgICAgICAg
ICAgIjxsaT5ub3JtYWxseSBhYnN0cmFjdGVkIGZyb20gYWN0dWFsIHByb2dyYW08L2xpPiIsCi0g
ICAgICAgICAgICAgICAgICAgICI8bGk+cG9wdWxhciBrZXJuZWw6IExpdmVybW9yZSBsb29wPC9s
aT4iLAotICAgICAgICAgICAgICAgICAgICAiPGxpPmxpbnBhY2sgYmVuY2htYXJrIChjb250YWlu
cyBiYXNpYyBsaW5lYXIgYWxnZWJyYSBzdWJyb3V0aW5lIHdyaXR0ZW4gaW4gRk9SVFJBTiBsYW5n
dWFnZSk8L2xpPiIsCi0gICAgICAgICAgICAgICAgICAgICI8bGk+cmVzdWx0cyBhcmUgcmVwcmVz
ZW50ZWQgaW4gTUZMT1BTPC9saT4iLAotICAgICAgICAgICAgICAgICI8L3VsPiIsCi0gICAgICAg
ICAgICAiPC9saT4iLAotICAgICAgICAgICAgIjxsaT5TeW50aGV0aWMgQmVuY2htYXJrIiwKLSAg
ICAgICAgICAgICAgICAiPHVsPiIsCi0gICAgICAgICAgICAgICAgICAgICI8bGk+UHJvY2VkdXJl
IGZvciBwcm9ncmFtbWluZyBzeW50aGV0aWMgYmVuY2htYXJrOiIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAiPHVsPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaT50YWtlIHN0
YXRpc3RpY3Mgb2YgYWxsIHR5cGVzIG9mIG9wZXJhdGlvbnMgZnJvbSBtYW55IGFwcGxpY2F0aW9u
IHByb2dyYW1zPC9saT4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGk+Z2V0IHBy
b3BvcnRpb24gb2YgZWFjaCBvcGVyYXRpb248L2xpPiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIjxsaT53cml0ZSBwcm9ncmFtIGJhc2VkIG9uIHRoZSBwcm9wb3J0aW9uIGFib3ZlPC9s
aT4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIjwvdWw+IiwKLSAgICAgICAgICAgICAgICAg
ICAgIjwvbGk+IiwKLSAgICAgICAgICAgICAgICAgICAgIjxsaT5UeXBlcyBvZiBTeW50aGV0aWMg
QmVuY2htYXJrIGFyZToiLAotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bD4iLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICI8bGk+V2hldHN0b25lPC9saT4iLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICI8bGk+RGhyeXN0b25lPC9saT4iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIjwvdWw+IiwKLSAgICAgICAgICAgICAgICAgICAgIjwvbGk+IiwKLSAgICAgICAgICAg
ICAgICAgICAgIjxsaT5UaGVzZSB3ZXJlIHRoZSBmaXJzdCBnZW5lcmFsIHB1cnBvc2UgaW5kdXN0
cnkgc3RhbmRhcmQgY29tcHV0ZXIgYmVuY2htYXJrcy4gVGhleSBkbyBub3QgbmVjZXNzYXJpbHkg
b2J0YWluIGhpZ2ggc2NvcmVzIG9uIG1vZGVybiBwaXBlbGluZWQgY29tcHV0ZXJzLjwvbGk+IiwK
LSAgICAgICAgICAgICAgICAiPC91bD4iLAotICAgICAgICAgICAgIjwvbGk+IiwKLSAgICAgICAg
ICAgICI8bGk+SS9PIGJlbmNobWFya3M8L2xpPiIsCi0gICAgICAgICAgICAiPGxpPkRhdGFiYXNl
IGJlbmNobWFya3M6IHRvIG1lYXN1cmUgdGhlIHRocm91Z2hwdXQgYW5kIHJlc3BvbnNlIHRpbWVz
IG9mIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtcyAoREJNUycpPC9saT4iLAotICAgICAgICAg
ICAgIjxsaT5QYXJhbGxlbCBiZW5jaG1hcmtzOiB1c2VkIG9uIG1hY2hpbmVzIHdpdGggbXVsdGlw
bGUgY29yZXMsIHByb2Nlc3NvcnMgb3Igc3lzdGVtcyBjb25zaXN0aW5nIG9mIG11bHRpcGxlIG1h
Y2hpbmVzPC9saT4iLAotICAgICAgICAiPC9vbD4iLAotICAgICAgICAiPGgyPkNvbW1vbiBiZW5j
aG1hcmtzPC9oMj4iLAotICAgICAgICAiPHVsPiIsCi0gICAgICAgICAgICAiPGxpPkJ1c2luZXNz
IEFwcGxpY2F0aW9ucyBQZXJmb3JtYW5jZSBDb3Jwb3JhdGlvbiAoQkFQQ28pPC9saT4iLAotICAg
ICAgICAgICAgIjxsaT5FbWJlZGRlZCBNaWNyb3Byb2Nlc3NvciBCZW5jaG1hcmsgQ29uc29ydGl1
bSAoRUVNQkMpPC9saT4iLAotICAgICAgICAgICAgIjxsaT5TdGFuZGFyZCBQZXJmb3JtYW5jZSBF
dmFsdWF0aW9uIENvcnBvcmF0aW9uIChTUEVDKSwgaW4gcGFydGljdWxhciB0aGVpciBTUEVDaW50
IGFuZCBTUEVDZnA8L2xpPiIsCi0gICAgICAgICAgICAiPGxpPlRyYW5zYWN0aW9uIFByb2Nlc3Np
bmcgUGVyZm9ybWFuY2UgQ291bmNpbCAoVFBDKTwvbGk+IiwKLSAgICAgICAgICAgICI8bGk+Q29y
ZW1hcms6IEVtYmVkZGVkIGNvbXB1dGluZyBiZW5jaG1hcms8L2xpPiIsCi0gICAgICAgICI8L3Vs
PiIsCi0gICAgICAgICI8aDM+T3BlbiBzb3VyY2UgYmVuY2htYXJrczwvaDM+IiwKLSAgICAgICAg
Ijx1bD4iLAotICAgICAgICAgICAgIjxsaT5BSU0gTXVsdGl1c2VyIEJlbmNobWFyazogY29tcG9z
ZWQgb2YgYSBsaXN0IG9mIHRlc3RzIHRoYXQgY291bGQgYmUgbWl4ZWQgdG8gY3JlYXRlIGEgJ2xv
YWQgbWl4JyB0aGF0IHdvdWxkIHNpbXVsYXRlIGEgc3BlY2lmaWMgY29tcHV0ZXIgZnVuY3Rpb24g
b24gYW55IFVOSVgtdHlwZSBPUy48L2xpPiIsCi0gICAgICAgICAgICAiPGxpPkJvbm5pZSsrOiBm
aWxlc3lzdGVtIGFuZCBoYXJkIGRyaXZlIGJlbmNobWFyazwvbGk+IiwKLSAgICAgICAgICAgICI8
bGk+QlJMLUNBRDogY3Jvc3MtcGxhdGZvcm0gYXJjaGl0ZWN0dXJlLWFnbm9zdGljIGJlbmNobWFy
ayBzdWl0ZSBiYXNlZCBvbiBtdWx0aXRocmVhZGVkIHJheSB0cmFjaW5nIHBlcmZvcm1hbmNlOyBi
YXNlbGluZWQgYWdhaW5zdCBhIFZBWC0xMS83ODA7IGFuZCB1c2VkIHNpbmNlIDE5ODQgZm9yIGV2
YWx1YXRpbmcgcmVsYXRpdmUgQ1BVIHBlcmZvcm1hbmNlLCBjb21waWxlciBkaWZmZXJlbmNlcywg
b3B0aW1pemF0aW9uIGxldmVscywgY29oZXJlbmN5LCBhcmNoaXRlY3R1cmUgZGlmZmVyZW5jZXMs
IGFuZCBvcGVyYXRpbmcgc3lzdGVtIGRpZmZlcmVuY2VzLjwvbGk+IiwKLSAgICAgICAgIjwvdWw+
IiwKLSAgICAiPC9kaXY+IgotXTsKLQotTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSA9
IGZ1bmN0aW9uKHRleHRJdGVtKQotewotICAgIHZhciBwYXJzZVJlc3VsdCA9IHt9OwotICAgIHBh
cnNlUmVzdWx0LnRhZ1N0YXJ0ID0gdGV4dEl0ZW0ubWF0Y2goLzwoLio/KT4vZylbMF07Ci0gICAg
dmFyIHNwYWNlSW5kZXggPSBwYXJzZVJlc3VsdC50YWdTdGFydC5pbmRleE9mKCIgIik7Ci0gICAg
cGFyc2VSZXN1bHQubm9kZU5hbWUgPSBwYXJzZVJlc3VsdC50YWdTdGFydC5zdWJzdHJpbmcoMSwg
c3BhY2VJbmRleCAhPSAtMSA/IHNwYWNlSW5kZXggOiBwYXJzZVJlc3VsdC50YWdTdGFydC5sZW5n
dGggLSAxKTsKLSAgICBwYXJzZVJlc3VsdC5hcmdzID0gc3BhY2VJbmRleCAhPSAtMSA/IFV0aWxp
dGllcy5wYXJzZUFyZ3VtZW50cyhwYXJzZVJlc3VsdC50YWdTdGFydC5zdWJzdHJpbmcoc3BhY2VJ
bmRleCArIDEsIHBhcnNlUmVzdWx0LnRhZ1N0YXJ0Lmxlbmd0aCAtIDEpKSA6IHt9OwotICAgIHZh
ciB0YWdFbmQgPSAiPC8iICsgcGFyc2VSZXN1bHQubm9kZU5hbWUgKyAiPiI7ICAgICAgICAgICAg
ICAgIAotICAgIHBhcnNlUmVzdWx0LnRhZ0VuZCA9IHRleHRJdGVtLmVuZHNXaXRoKHRhZ0VuZCkg
PyB0YWdFbmQgOiAiIjsKLSAgICByZXR1cm4gcGFyc2VSZXN1bHQ7Ci19Ci0KLUxheWVyaW5nVGV4
dFN0YWdlLmlzT3BlbmluZ1RleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW0pCi17Ci0gICAgcmV0
dXJuICFMYXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtKHRleHRJdGVtKS50YWdFbmQubGVu
Z3RoOwotfQotCi1MYXllcmluZ1RleHRTdGFnZS5pc0Nsb3NpbmdUZXh0SXRlbSA9IGZ1bmN0aW9u
KHRleHRJdGVtKQotewotICAgIHJldHVybiB0ZXh0SXRlbS5pbmRleE9mKCIvIikgPT0gKzE7Ci19
Ci0KLUxheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzID0gTGF5ZXJpbmdUZXh0U3RhZ2Uu
dGV4dEl0ZW1zLm1hcChmdW5jdGlvbih0ZXh0SXRlbSkKLXsKLSAgIHZhciB0ZXh0SXRlbUZsYWdz
ID0ge307Ci0gICB0ZXh0SXRlbUZsYWdzLmlzT3BlbmluZyA9IExheWVyaW5nVGV4dFN0YWdlLmlz
T3BlbmluZ1RleHRJdGVtKHRleHRJdGVtKTsKLSAgIHRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nID0g
TGF5ZXJpbmdUZXh0U3RhZ2UuaXNDbG9zaW5nVGV4dEl0ZW0odGV4dEl0ZW0pOyAgIAotICAgcmV0
dXJuIHRleHRJdGVtRmxhZ3M7Ci19KTsKKyhmdW5jdGlvbigpIHsKKworTGF5ZXJpbmdUZXh0U3Rh
Z2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2UsCisgICAgZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgU3RhZ2UuY2FsbCh0aGlzKTsKKyAgICB9LCB7CisKKyAgICBpbml0aWFsaXpl
OiBmdW5jdGlvbihiZW5jaG1hcmspCisgICAgeworICAgICAgICBTdGFnZS5wcm90b3R5cGUuaW5p
dGlhbGl6ZS5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50
UGFyZW50ID0gdGhpcy5lbGVtZW50OworICAgICAgICB0aGlzLl90ZXh0RWxlbWVudHMgPSBbXTsK
KyAgICAgICAgdGhpcy5fdGV4dEl0ZW1JbmRleCA9IDA7CisgICAgICAgIHRoaXMuX2NvbG9ySW5k
ZXggPSAwOworICAgICAgICB0aGlzLl9hbmltYXRlQ291bnRzID0gMDsKKyAgICB9LAorCisgICAg
X25leHRUZXh0SXRlbTogZnVuY3Rpb24odGV4dEl0ZW1GbGFncykKKyAgICB7CisgICAgICAgIHZh
ciB0ZXh0SXRlbSA9IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc1t0aGlzLl90ZXh0SXRlbUlu
ZGV4XTsKKyAgICAgICAgVXRpbGl0aWVzLmV4dGVuZE9iamVjdCh0ZXh0SXRlbUZsYWdzLCBMYXll
cmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0aGlzLl90ZXh0SXRlbUluZGV4XSk7CisgICAg
ICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAodGhpcy5fdGV4dEl0ZW1JbmRleCArIDEpICUgTGF5
ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zLmxlbmd0aDsKKyAgICAgICAgcmV0dXJuIHRleHRJdGVt
OworICAgIH0sCisKKyAgICBfcHJldmlvdXNUZXh0SXRlbTogZnVuY3Rpb24odGV4dEl0ZW1GbGFn
cykKKyAgICB7CisgICAgICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAodGhpcy5fdGV4dEl0ZW1J
bmRleCArIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5sZW5ndGggLSAxKSAlIExheWVyaW5n
VGV4dFN0YWdlLnRleHRJdGVtcy5sZW5ndGg7CisgICAgICAgIFV0aWxpdGllcy5leHRlbmRPYmpl
Y3QodGV4dEl0ZW1GbGFncywgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3NbdGhpcy5f
dGV4dEl0ZW1JbmRleF0pOworICAgICAgICByZXR1cm4gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0
ZW1zW3RoaXMuX3RleHRJdGVtSW5kZXhdOworICAgIH0sCisKKyAgICBfcHVzaFRleHRFbGVtZW50
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgdGV4dEl0ZW1GbGFncyA9IHt9OworICAg
ICAgICB2YXIgdGV4dEl0ZW0gPSB0aGlzLl9uZXh0VGV4dEl0ZW0odGV4dEl0ZW1GbGFncyk7Cisg
ICAgICAgIGZvciAoIDsgdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7IHRleHRJdGVtID0gdGhpcy5f
bmV4dFRleHRJdGVtKHRleHRJdGVtRmxhZ3MpKQorICAgICAgICAgICAgdGhpcy5fdGV4dEVsZW1l
bnRQYXJlbnQgPSB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5wYXJlbnROb2RlOworCisgICAgICAg
IHZhciBwYXJzZVJlc3VsdCA9IExheWVyaW5nVGV4dFN0YWdlLnBhcnNlVGV4dEl0ZW0odGV4dEl0
ZW0pOworICAgICAgICB0ZXh0SXRlbSA9IHRleHRJdGVtLnN1YnN0cmluZyhwYXJzZVJlc3VsdC50
YWdTdGFydC5sZW5ndGgsIHRleHRJdGVtLmxlbmd0aCAtIHBhcnNlUmVzdWx0LnRhZ0VuZC5sZW5n
dGgpOworCisgICAgICAgIHZhciB0ZXh0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
cGFyc2VSZXN1bHQubm9kZU5hbWUpOworCisgICAgICAgIGZvciAodmFyIGF0dHJuYW1lIGluIHBh
cnNlUmVzdWx0LmFyZ3MpCisgICAgICAgICAgICB0ZXh0RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0
cm5hbWUsIHBhcnNlUmVzdWx0LmFyZ3NbYXR0cm5hbWVdKTsKKworICAgICAgICB0aGlzLl90ZXh0
RWxlbWVudFBhcmVudC5hcHBlbmRDaGlsZCh0ZXh0RWxlbWVudCk7CisKKyAgICAgICAgaWYgKCFw
YXJzZVJlc3VsdC50YWdFbmQubGVuZ3RoKQorICAgICAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQ
YXJlbnQgPSB0ZXh0RWxlbWVudDsKKworICAgICAgICB0ZXh0RWxlbWVudC5pbm5lckhUTUwgPSB0
ZXh0SXRlbTsKKworICAgICAgICB0aGlzLl90ZXh0RWxlbWVudHMucHVzaCh0ZXh0RWxlbWVudCk7
CisgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworICAgIH0sCiAKLUxh
eWVyaW5nVGV4dFN0YWdlLmlzQ29sb3JhYmxlVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZs
YWdzKQotewotICAgIHJldHVybiAhKHRleHRJdGVtRmxhZ3MuaXNPcGVuaW5nIHx8IHRleHRJdGVt
RmxhZ3MuaXNDbG9zaW5nKTsKLX0KLQotTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4
dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQotewotICAgIHJldHVybiAhdGV4dEl0ZW1G
bGFncy5pc0Nsb3Npbmc7Ci19Ci0KLUxheWVyaW5nVGV4dFN0YWdlLmNvbG9yYWJsZVRleHRJdGVt
cyA9IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzLmZpbHRlcihmdW5jdGlvbih0ZXh0
SXRlbUZsYWdzKQotewotICAgIHJldHVybiBMYXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJsZVRl
eHRJdGVtKHRleHRJdGVtRmxhZ3MpOwotfSkubGVuZ3RoOwotCi1MYXllcmluZ1RleHRTdGFnZS5p
bnNlcnRhYmxlVGV4dEl0ZW1zID0gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuZmls
dGVyKGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpCi17Ci0gICAgcmV0dXJuIExheWVyaW5nVGV4dFN0
YWdlLmlzSW5zZXJ0YWJsZVRleHRJdGVtKHRleHRJdGVtRmxhZ3MpOwotfSkubGVuZ3RoOwotCi1M
YXllcmluZ1RleHRTdGFnZS5jb2xvckluZGV4VG9UZXh0RWxlbWVudEluZGV4ID0gZnVuY3Rpb24o
Y29sb3JJbmRleCkKLXsKLSAgICB2YXIgdGV4dEVsZW1lbnRJbmRleCA9IDA7Ci0gICAgdmFyIGlu
ZGV4ID0gMDsKLSAgICAKLSAgICBmb3IgKHZhciB0ZXh0SXRlbUluZGV4ID0gMDsgdGV4dEl0ZW1J
bmRleCA8IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzLmxlbmd0aDsgKyt0ZXh0SXRl
bUluZGV4KSB7Ci0gICAgICAgIGlmIChMYXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJ
dGVtKExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzW3RleHRJdGVtSW5kZXhdKSkgewot
ICAgICAgICAgICAgaWYgKCsraW5kZXggPiBjb2xvckluZGV4KQotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChMYXllcmluZ1RleHRTdGFnZS5pc0luc2VydGFi
bGVUZXh0SXRlbShMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0ZXh0SXRlbUluZGV4
XSkpCi0gICAgICAgICAgICArK3RleHRFbGVtZW50SW5kZXg7Ci0gICAgfQotICAgIAotICAgIHJl
dHVybiB0ZXh0RWxlbWVudEluZGV4OwotfQotCi1MYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7Ci1MYXllcmluZ1RleHRTdGFnZS5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBMYXllcmluZ1RleHRTdGFnZTsKLQotTGF5ZXJpbmdUZXh0U3Rh
Z2UucHJvdG90eXBlLl9uZXh0VGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQotewot
ICAgIHZhciB0ZXh0SXRlbSA9IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc1t0aGlzLl90ZXh0
SXRlbUluZGV4XTsKLSAgICBVdGlsaXRpZXMuZXh0ZW5kT2JqZWN0KHRleHRJdGVtRmxhZ3MsIExh
eWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzW3RoaXMuX3RleHRJdGVtSW5kZXhdKTsKLSAg
ICB0aGlzLl90ZXh0SXRlbUluZGV4ID0gKHRoaXMuX3RleHRJdGVtSW5kZXggKyAxKSAlIExheWVy
aW5nVGV4dFN0YWdlLnRleHRJdGVtcy5sZW5ndGg7Ci0gICAgcmV0dXJuIHRleHRJdGVtOwotfQot
Ci1MYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX3ByZXZpb3VzVGV4dEl0ZW0gPSBmdW5jdGlv
bih0ZXh0SXRlbUZsYWdzKQotewotICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAodGhpcy5fdGV4
dEl0ZW1JbmRleCArIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5sZW5ndGggLSAxKSAlIExh
eWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5sZW5ndGg7Ci0gICAgVXRpbGl0aWVzLmV4dGVuZE9i
amVjdCh0ZXh0SXRlbUZsYWdzLCBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0aGlz
Ll90ZXh0SXRlbUluZGV4XSk7ICAgIAotICAgIHJldHVybiBMYXllcmluZ1RleHRTdGFnZS50ZXh0
SXRlbXNbdGhpcy5fdGV4dEl0ZW1JbmRleF07Ci19Ci0KLUxheWVyaW5nVGV4dFN0YWdlLnByb3Rv
dHlwZS5fcHVzaFRleHRFbGVtZW50ID0gZnVuY3Rpb24oKQotewotICAgIHZhciB0ZXh0SXRlbUZs
YWdzID0ge307Ci0gICAgdmFyIHRleHRJdGVtID0gdGhpcy5fbmV4dFRleHRJdGVtKHRleHRJdGVt
RmxhZ3MpOwotICAgIGZvciAoIDsgdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7IHRleHRJdGVtID0g
dGhpcy5fbmV4dFRleHRJdGVtKHRleHRJdGVtRmxhZ3MpKQotICAgICAgICB0aGlzLl90ZXh0RWxl
bWVudFBhcmVudCA9IHRoaXMuX3RleHRFbGVtZW50UGFyZW50LnBhcmVudE5vZGU7Ci0KLSAgICB2
YXIgcGFyc2VSZXN1bHQgPSBMYXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtKHRleHRJdGVt
KTsKLSAgICB0ZXh0SXRlbSA9IHRleHRJdGVtLnN1YnN0cmluZyhwYXJzZVJlc3VsdC50YWdTdGFy
dC5sZW5ndGgsIHRleHRJdGVtLmxlbmd0aCAtIHBhcnNlUmVzdWx0LnRhZ0VuZC5sZW5ndGgpOwot
Ci0gICAgdmFyIHRleHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChwYXJzZVJlc3Vs
dC5ub2RlTmFtZSk7Ci0KLSAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBwYXJzZVJlc3VsdC5hcmdz
KQotICAgICAgICB0ZXh0RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cm5hbWUsIHBhcnNlUmVzdWx0
LmFyZ3NbYXR0cm5hbWVdKTsKLQotICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50LmFwcGVuZENo
aWxkKHRleHRFbGVtZW50KTsKLSAgICAKLSAgICBpZiAoIXBhcnNlUmVzdWx0LnRhZ0VuZC5sZW5n
dGgpCi0gICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGV4dEVsZW1lbnQ7Ci0KLSAg
ICB0ZXh0RWxlbWVudC5pbm5lckhUTUwgPSB0ZXh0SXRlbTsKLSAgICAKLSAgICB0aGlzLl90ZXh0
RWxlbWVudHMucHVzaCh0ZXh0RWxlbWVudCk7Ci0gICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50
cy5sZW5ndGg7Ci19Ci0KLUxheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fcG9wVGV4dEVsZW1l
bnQgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIHRleHRJdGVtRmxhZ3MgPSB7fTsgICAgCi0gICAg
dmFyIHRleHRJdGVtID0gdGhpcy5fcHJldmlvdXNUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKTsKLSAg
ICBmb3IgKCA7IHRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nOyB0ZXh0SXRlbSA9IHRoaXMuX3ByZXZp
b3VzVGV4dEl0ZW0odGV4dEl0ZW1GbGFncykpCi0gICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFy
ZW50ID0gdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQubGFzdENoaWxkOwotCi0gICAgaWYgKHRleHRJ
dGVtRmxhZ3MuaXNPcGVuaW5nKQotICAgICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRo
aXMuX3RleHRFbGVtZW50UGFyZW50LnBhcmVudE5vZGU7Ci0KLSAgICB0aGlzLl90ZXh0RWxlbWVu
dHNbdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCAtIDFdLnJlbW92ZSgpOwotCi0gICAgdGhpcy5f
dGV4dEVsZW1lbnRzLnBvcCgpOwotICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3Ro
OwotfQotCi1MYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX2NvbG9yVGV4dEl0ZW0gPSBmdW5j
dGlvbihjb2xvcikKLXsKLSAgICB2YXIgdGV4dEVsZW1lbnRJbmRleCA9IExheWVyaW5nVGV4dFN0
YWdlLmNvbG9ySW5kZXhUb1RleHRFbGVtZW50SW5kZXgodGhpcy5fY29sb3JJbmRleCk7Ci0gICAg
Zm9yICggOyB0ZXh0RWxlbWVudEluZGV4IDwgdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsgdGV4
dEVsZW1lbnRJbmRleCArPSBMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxlVGV4dEl0ZW1zKQot
ICAgICAgICB0aGlzLl90ZXh0RWxlbWVudHNbdGV4dEVsZW1lbnRJbmRleF0uc3R5bGUuYmFja2dy
b3VuZENvbG9yID0gY29sb3I7Ci19Ci0KLUxheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5hbmlt
YXRlID0gZnVuY3Rpb24odGltZURlbHRhKQotewotICAgIHRoaXMuX2NvbG9yVGV4dEl0ZW0oInRy
YW5zcGFyZW50Iik7Ci0gICAgdGhpcy5fY29sb3JJbmRleCA9ICh0aGlzLl9jb2xvckluZGV4ICsg
MSkgJSBMYXllcmluZ1RleHRTdGFnZS5jb2xvcmFibGVUZXh0SXRlbXM7Ci0gICAgdGhpcy5fY29s
b3JUZXh0SXRlbSgiWWVsbG93R3JlZW4iKTsKLSAgICAKLSAgICB2YXIgYmxhY2tUZXh0RWxlbWVu
dHMgPSBNYXRoLm1pbih0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoLCBMYXllcmluZ1RleHRTdGFn
ZS5pbnNlcnRhYmxlVGV4dEl0ZW1zKTsKLSAgICB2YXIgaSA9IDA7Ci0gICAgZm9yICggOyBpIDwg
dGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCAtIGJsYWNrVGV4dEVsZW1lbnRzOyArK2kpCi0gICAg
ICAgIHRoaXMuX3RleHRFbGVtZW50c1tpXS5zdHlsZS5jb2xvciA9ICh0aGlzLl9hbmltYXRlQ291
bnRzICYgMSkgPyAiTGlnaHRZZWxsb3ciIDogIndoaXRlIjsKLQotICAgIGZvciAoIDsgaSA8IHRo
aXMuX3RleHRFbGVtZW50cy5sZW5ndGg7ICsraSkKLSAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRz
W2ldLnN0eWxlLmNvbG9yID0gImJsYWNrIjsKLSAgICAgICAgCi0gICAgKyt0aGlzLl9hbmltYXRl
Q291bnRzOwotfQotCi1MYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9u
KGNvdW50KQotewotICAgIGlmIChjb3VudCA9PSAwKQorICAgIF9wb3BUZXh0RWxlbWVudDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHRleHRJdGVtRmxhZ3MgPSB7fTsKKyAgICAgICAg
dmFyIHRleHRJdGVtID0gdGhpcy5fcHJldmlvdXNUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKTsKKyAg
ICAgICAgZm9yICggOyB0ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZzsgdGV4dEl0ZW0gPSB0aGlzLl9w
cmV2aW91c1RleHRJdGVtKHRleHRJdGVtRmxhZ3MpKQorICAgICAgICAgICAgdGhpcy5fdGV4dEVs
ZW1lbnRQYXJlbnQgPSB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5sYXN0Q2hpbGQ7CisKKyAgICAg
ICAgaWYgKHRleHRJdGVtRmxhZ3MuaXNPcGVuaW5nKQorICAgICAgICAgICAgdGhpcy5fdGV4dEVs
ZW1lbnRQYXJlbnQgPSB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5wYXJlbnROb2RlOworCisgICAg
ICAgIHRoaXMuX3RleHRFbGVtZW50c1t0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoIC0gMV0ucmVt
b3ZlKCk7CisKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRzLnBvcCgpOwogICAgICAgICByZXR1
cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKKyAgICB9LAorCisgICAgX2NvbG9yVGV4dEl0
ZW06IGZ1bmN0aW9uKGNvbG9yKQorICAgIHsKKyAgICAgICAgdmFyIHRleHRFbGVtZW50SW5kZXgg
PSBMYXllcmluZ1RleHRTdGFnZS5jb2xvckluZGV4VG9UZXh0RWxlbWVudEluZGV4KHRoaXMuX2Nv
bG9ySW5kZXgpOworICAgICAgICBmb3IgKCA7IHRleHRFbGVtZW50SW5kZXggPCB0aGlzLl90ZXh0
RWxlbWVudHMubGVuZ3RoOyB0ZXh0RWxlbWVudEluZGV4ICs9IExheWVyaW5nVGV4dFN0YWdlLmlu
c2VydGFibGVUZXh0SXRlbXMpCisgICAgICAgICAgICB0aGlzLl90ZXh0RWxlbWVudHNbdGV4dEVs
ZW1lbnRJbmRleF0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY29sb3I7CisgICAgfSwKKworICAg
IGFuaW1hdGU6IGZ1bmN0aW9uKHRpbWVEZWx0YSkKKyAgICB7CisgICAgICAgIHRoaXMuX2NvbG9y
VGV4dEl0ZW0oInRyYW5zcGFyZW50Iik7CisgICAgICAgIHRoaXMuX2NvbG9ySW5kZXggPSAodGhp
cy5fY29sb3JJbmRleCArIDEpICUgTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JhYmxlVGV4dEl0ZW1z
OworICAgICAgICB0aGlzLl9jb2xvclRleHRJdGVtKCJZZWxsb3dHcmVlbiIpOworCisgICAgICAg
IHZhciBibGFja1RleHRFbGVtZW50cyA9IE1hdGgubWluKHRoaXMuX3RleHRFbGVtZW50cy5sZW5n
dGgsIExheWVyaW5nVGV4dFN0YWdlLmluc2VydGFibGVUZXh0SXRlbXMpOworICAgICAgICB2YXIg
aSA9IDA7CisgICAgICAgIGZvciAoIDsgaSA8IHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGggLSBi
bGFja1RleHRFbGVtZW50czsgKytpKQorICAgICAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRzW2ld
LnN0eWxlLmNvbG9yID0gKHRoaXMuX2FuaW1hdGVDb3VudHMgJiAxKSA/ICJMaWdodFllbGxvdyIg
OiAid2hpdGUiOworCisgICAgICAgIGZvciAoIDsgaSA8IHRoaXMuX3RleHRFbGVtZW50cy5sZW5n
dGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3RleHRFbGVtZW50c1tpXS5zdHlsZS5jb2xvciA9
ICJibGFjayI7CisKKyAgICAgICAgKyt0aGlzLl9hbmltYXRlQ291bnRzOworICAgIH0sCisKKyAg
ICB0dW5lOiBmdW5jdGlvbihjb3VudCkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA9PSAwKQor
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7CisKKyAgICAgICAg
aWYgKGNvdW50ID4gMCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsg
KytpKQorICAgICAgICAgICAgICAgIHRoaXMuX3B1c2hUZXh0RWxlbWVudCgpOworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7CisgICAgICAgIH0KIAotICAgIGlm
IChjb3VudCA+IDApIHsKKyAgICAgICAgY291bnQgPSBNYXRoLm1pbigtY291bnQsIHRoaXMuX3Rl
eHRFbGVtZW50cy5sZW5ndGgpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyAr
K2kpCi0gICAgICAgICAgICB0aGlzLl9wdXNoVGV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgIHRo
aXMuX3BvcFRleHRFbGVtZW50KCk7CisKICAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50
cy5sZW5ndGg7CiAgICAgfQotICAgICAgICAKLSAgICBjb3VudCA9IE1hdGgubWluKC1jb3VudCwg
dGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKQotICAgICAgICB0aGlzLl9wb3BUZXh0RWxlbWVudCgpOwotCi0gICAgcmV0dXJuIHRo
aXMuX3RleHRFbGVtZW50cy5sZW5ndGg7Ci19Ci0KLWZ1bmN0aW9uIExheWVyaW5nVGV4dEJlbmNo
bWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCi17Ci0gICAgU3RhZ2VCZW5j
aG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotfQot
Ci1MYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJl
bmNobWFyay5wcm90b3R5cGUpOwotTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IExheWVyaW5nVGV4dEJlbmNobWFyazsKLQotTGF5ZXJpbmdUZXh0QmVuY2htYXJr
LnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCi17Ci0gICAgcmV0dXJu
IG5ldyBMYXllcmluZ1RleHRTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKLX0KLQotd2lu
ZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcHJvZ3Jlc3NCYXIpCi17Ci0gICAgcmV0dXJuIG5ldyBMYXllcmluZ1RleHRCZW5jaG1hcmso
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KK30pOworCitVdGlsaXRpZXMu
ZXh0ZW5kT2JqZWN0KExheWVyaW5nVGV4dFN0YWdlLCB7CisgICAgdGV4dEl0ZW1zOiBbCisgICAg
ICAgICI8ZGl2IGNsYXNzPSd0ZXh0LWxheWVyJz4iLAorICAgICAgICAgICAgIjxoMj5UeXBlcyBv
ZiBiZW5jaG1hcmtzPC9oMj4iLAorICAgICAgICAgICAgIjxvbD4iLAorICAgICAgICAgICAgICAg
ICI8bGk+UmVhbCBwcm9ncmFtIiwKKyAgICAgICAgICAgICAgICAgICAgIjx1bD4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIjxsaT53b3JkIHByb2Nlc3Npbmcgc29mdHdhcmU8L2xpPiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAiPGxpPnRvb2wgc29mdHdhcmUgb2YgQ0FEPC9saT4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIjxsaT51c2VyJ3MgYXBwbGljYXRpb24gc29mdHdhcmUg
KGkuZS46IE1JUyk8L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICI8L3VsPiIsCisgICAgICAg
ICAgICAgICAgIjwvbGk+IiwKKyAgICAgICAgICAgICAgICAiPGxpPktlcm5lbCIsCisgICAgICAg
ICAgICAgICAgICAgICI8dWw+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGk+Y29udGFp
bnMga2V5IGNvZGVzPC9saT4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaT5ub3JtYWxs
eSBhYnN0cmFjdGVkIGZyb20gYWN0dWFsIHByb2dyYW08L2xpPiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAiPGxpPnBvcHVsYXIga2VybmVsOiBMaXZlcm1vcmUgbG9vcDwvbGk+IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICI8bGk+bGlucGFjayBiZW5jaG1hcmsgKGNvbnRhaW5zIGJhc2lj
IGxpbmVhciBhbGdlYnJhIHN1YnJvdXRpbmUgd3JpdHRlbiBpbiBGT1JUUkFOIGxhbmd1YWdlKTwv
bGk+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGk+cmVzdWx0cyBhcmUgcmVwcmVzZW50
ZWQgaW4gTUZMT1BTPC9saT4iLAorICAgICAgICAgICAgICAgICAgICAiPC91bD4iLAorICAgICAg
ICAgICAgICAgICI8L2xpPiIsCisgICAgICAgICAgICAgICAgIjxsaT5TeW50aGV0aWMgQmVuY2ht
YXJrIiwKKyAgICAgICAgICAgICAgICAgICAgIjx1bD4iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIjxsaT5Qcm9jZWR1cmUgZm9yIHByb2dyYW1taW5nIHN5bnRoZXRpYyBiZW5jaG1hcms6IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsPiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICI8bGk+dGFrZSBzdGF0aXN0aWNzIG9mIGFsbCB0eXBlcyBvZiBvcGVyYXRp
b25zIGZyb20gbWFueSBhcHBsaWNhdGlvbiBwcm9ncmFtczwvbGk+IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIjxsaT5nZXQgcHJvcG9ydGlvbiBvZiBlYWNoIG9wZXJhdGlvbjwv
bGk+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaT53cml0ZSBwcm9ncmFt
IGJhc2VkIG9uIHRoZSBwcm9wb3J0aW9uIGFib3ZlPC9saT4iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICI8L3VsPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAiPC9saT4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIjxsaT5UeXBlcyBvZiBTeW50aGV0aWMgQmVuY2htYXJrIGFy
ZToiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWw+IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIjxsaT5XaGV0c3RvbmU8L2xpPiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICI8bGk+RGhyeXN0b25lPC9saT4iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICI8L3VsPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAiPC9saT4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIjxsaT5UaGVzZSB3ZXJlIHRoZSBmaXJzdCBnZW5lcmFsIHB1
cnBvc2UgaW5kdXN0cnkgc3RhbmRhcmQgY29tcHV0ZXIgYmVuY2htYXJrcy4gVGhleSBkbyBub3Qg
bmVjZXNzYXJpbHkgb2J0YWluIGhpZ2ggc2NvcmVzIG9uIG1vZGVybiBwaXBlbGluZWQgY29tcHV0
ZXJzLjwvbGk+IiwKKyAgICAgICAgICAgICAgICAgICAgIjwvdWw+IiwKKyAgICAgICAgICAgICAg
ICAiPC9saT4iLAorICAgICAgICAgICAgICAgICI8bGk+SS9PIGJlbmNobWFya3M8L2xpPiIsCisg
ICAgICAgICAgICAgICAgIjxsaT5EYXRhYmFzZSBiZW5jaG1hcmtzOiB0byBtZWFzdXJlIHRoZSB0
aHJvdWdocHV0IGFuZCByZXNwb25zZSB0aW1lcyBvZiBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3Rl
bXMgKERCTVMnKTwvbGk+IiwKKyAgICAgICAgICAgICAgICAiPGxpPlBhcmFsbGVsIGJlbmNobWFy
a3M6IHVzZWQgb24gbWFjaGluZXMgd2l0aCBtdWx0aXBsZSBjb3JlcywgcHJvY2Vzc29ycyBvciBz
eXN0ZW1zIGNvbnNpc3Rpbmcgb2YgbXVsdGlwbGUgbWFjaGluZXM8L2xpPiIsCisgICAgICAgICAg
ICAiPC9vbD4iLAorICAgICAgICAgICAgIjxoMj5Db21tb24gYmVuY2htYXJrczwvaDI+IiwKKyAg
ICAgICAgICAgICI8dWw+IiwKKyAgICAgICAgICAgICAgICAiPGxpPkJ1c2luZXNzIEFwcGxpY2F0
aW9ucyBQZXJmb3JtYW5jZSBDb3Jwb3JhdGlvbiAoQkFQQ28pPC9saT4iLAorICAgICAgICAgICAg
ICAgICI8bGk+RW1iZWRkZWQgTWljcm9wcm9jZXNzb3IgQmVuY2htYXJrIENvbnNvcnRpdW0gKEVF
TUJDKTwvbGk+IiwKKyAgICAgICAgICAgICAgICAiPGxpPlN0YW5kYXJkIFBlcmZvcm1hbmNlIEV2
YWx1YXRpb24gQ29ycG9yYXRpb24gKFNQRUMpLCBpbiBwYXJ0aWN1bGFyIHRoZWlyIFNQRUNpbnQg
YW5kIFNQRUNmcDwvbGk+IiwKKyAgICAgICAgICAgICAgICAiPGxpPlRyYW5zYWN0aW9uIFByb2Nl
c3NpbmcgUGVyZm9ybWFuY2UgQ291bmNpbCAoVFBDKTwvbGk+IiwKKyAgICAgICAgICAgICAgICAi
PGxpPkNvcmVtYXJrOiBFbWJlZGRlZCBjb21wdXRpbmcgYmVuY2htYXJrPC9saT4iLAorICAgICAg
ICAgICAgIjwvdWw+IiwKKyAgICAgICAgICAgICI8aDM+T3BlbiBzb3VyY2UgYmVuY2htYXJrczwv
aDM+IiwKKyAgICAgICAgICAgICI8dWw+IiwKKyAgICAgICAgICAgICAgICAiPGxpPkFJTSBNdWx0
aXVzZXIgQmVuY2htYXJrOiBjb21wb3NlZCBvZiBhIGxpc3Qgb2YgdGVzdHMgdGhhdCBjb3VsZCBi
ZSBtaXhlZCB0byBjcmVhdGUgYSAnbG9hZCBtaXgnIHRoYXQgd291bGQgc2ltdWxhdGUgYSBzcGVj
aWZpYyBjb21wdXRlciBmdW5jdGlvbiBvbiBhbnkgVU5JWC10eXBlIE9TLjwvbGk+IiwKKyAgICAg
ICAgICAgICAgICAiPGxpPkJvbm5pZSsrOiBmaWxlc3lzdGVtIGFuZCBoYXJkIGRyaXZlIGJlbmNo
bWFyazwvbGk+IiwKKyAgICAgICAgICAgICAgICAiPGxpPkJSTC1DQUQ6IGNyb3NzLXBsYXRmb3Jt
IGFyY2hpdGVjdHVyZS1hZ25vc3RpYyBiZW5jaG1hcmsgc3VpdGUgYmFzZWQgb24gbXVsdGl0aHJl
YWRlZCByYXkgdHJhY2luZyBwZXJmb3JtYW5jZTsgYmFzZWxpbmVkIGFnYWluc3QgYSBWQVgtMTEv
NzgwOyBhbmQgdXNlZCBzaW5jZSAxOTg0IGZvciBldmFsdWF0aW5nIHJlbGF0aXZlIENQVSBwZXJm
b3JtYW5jZSwgY29tcGlsZXIgZGlmZmVyZW5jZXMsIG9wdGltaXphdGlvbiBsZXZlbHMsIGNvaGVy
ZW5jeSwgYXJjaGl0ZWN0dXJlIGRpZmZlcmVuY2VzLCBhbmQgb3BlcmF0aW5nIHN5c3RlbSBkaWZm
ZXJlbmNlcy48L2xpPiIsCisgICAgICAgICAgICAiPC91bD4iLAorICAgICAgICAiPC9kaXY+Igor
ICAgIF0sCisKKyAgICBwYXJzZVRleHRJdGVtOiBmdW5jdGlvbih0ZXh0SXRlbSkKKyAgICB7Cisg
ICAgICAgIHZhciBwYXJzZVJlc3VsdCA9IHt9OworICAgICAgICBwYXJzZVJlc3VsdC50YWdTdGFy
dCA9IHRleHRJdGVtLm1hdGNoKC88KC4qPyk+L2cpWzBdOworICAgICAgICB2YXIgc3BhY2VJbmRl
eCA9IHBhcnNlUmVzdWx0LnRhZ1N0YXJ0LmluZGV4T2YoIiAiKTsKKyAgICAgICAgcGFyc2VSZXN1
bHQubm9kZU5hbWUgPSBwYXJzZVJlc3VsdC50YWdTdGFydC5zdWJzdHJpbmcoMSwgc3BhY2VJbmRl
eCAhPSAtMSA/IHNwYWNlSW5kZXggOiBwYXJzZVJlc3VsdC50YWdTdGFydC5sZW5ndGggLSAxKTsK
KyAgICAgICAgcGFyc2VSZXN1bHQuYXJncyA9IHNwYWNlSW5kZXggIT0gLTEgPyBVdGlsaXRpZXMu
cGFyc2VBcmd1bWVudHMocGFyc2VSZXN1bHQudGFnU3RhcnQuc3Vic3RyaW5nKHNwYWNlSW5kZXgg
KyAxLCBwYXJzZVJlc3VsdC50YWdTdGFydC5sZW5ndGggLSAxKSkgOiB7fTsKKyAgICAgICAgdmFy
IHRhZ0VuZCA9ICI8LyIgKyBwYXJzZVJlc3VsdC5ub2RlTmFtZSArICI+IjsKKyAgICAgICAgcGFy
c2VSZXN1bHQudGFnRW5kID0gdGV4dEl0ZW0uZW5kc1dpdGgodGFnRW5kKSA/IHRhZ0VuZCA6ICIi
OworICAgICAgICByZXR1cm4gcGFyc2VSZXN1bHQ7CisgICAgfSwKKworICAgIGlzT3BlbmluZ1Rl
eHRJdGVtOiBmdW5jdGlvbih0ZXh0SXRlbSkKKyAgICB7CisgICAgICAgIHJldHVybiAhTGF5ZXJp
bmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSh0ZXh0SXRlbSkudGFnRW5kLmxlbmd0aDsKKyAgICB9
LAorCisgICAgaXNDbG9zaW5nVGV4dEl0ZW06IGZ1bmN0aW9uKHRleHRJdGVtKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRleHRJdGVtLmluZGV4T2YoIi8iKSA9PSArMTsKKyAgICB9LAorCisgICAg
aXNDb2xvcmFibGVUZXh0SXRlbTogZnVuY3Rpb24odGV4dEl0ZW1GbGFncykKKyAgICB7CisgICAg
ICAgIHJldHVybiAhKHRleHRJdGVtRmxhZ3MuaXNPcGVuaW5nIHx8IHRleHRJdGVtRmxhZ3MuaXND
bG9zaW5nKTsKKyAgICB9LAorCisgICAgaXNJbnNlcnRhYmxlVGV4dEl0ZW06IGZ1bmN0aW9uKHRl
eHRJdGVtRmxhZ3MpCisgICAgeworICAgICAgICByZXR1cm4gIXRleHRJdGVtRmxhZ3MuaXNDbG9z
aW5nOworICAgIH0sCisKKyAgICBjb2xvckluZGV4VG9UZXh0RWxlbWVudEluZGV4OiBmdW5jdGlv
bihjb2xvckluZGV4KQorICAgIHsKKyAgICAgICAgdmFyIHRleHRFbGVtZW50SW5kZXggPSAwOwor
ICAgICAgICB2YXIgaW5kZXggPSAwOworCisgICAgICAgIGZvciAodmFyIHRleHRJdGVtSW5kZXgg
PSAwOyB0ZXh0SXRlbUluZGV4IDwgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MubGVu
Z3RoOyArK3RleHRJdGVtSW5kZXgpIHsKKyAgICAgICAgICAgIGlmIChMYXllcmluZ1RleHRTdGFn
ZS5pc0NvbG9yYWJsZVRleHRJdGVtKExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzW3Rl
eHRJdGVtSW5kZXhdKSkgeworICAgICAgICAgICAgICAgIGlmICgrK2luZGV4ID4gY29sb3JJbmRl
eCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4dEl0ZW0oTGF5ZXJpbmdUZXh0
U3RhZ2UudGV4dEl0ZW1zRmxhZ3NbdGV4dEl0ZW1JbmRleF0pKQorICAgICAgICAgICAgICAgICsr
dGV4dEVsZW1lbnRJbmRleDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0ZXh0RWxlbWVu
dEluZGV4OworICAgIH0KK30pOworCitVdGlsaXRpZXMuZXh0ZW5kT2JqZWN0KExheWVyaW5nVGV4
dFN0YWdlLCB7CisgICAgdGV4dEl0ZW1zRmxhZ3M6IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVt
cy5tYXAoZnVuY3Rpb24odGV4dEl0ZW0pCisgICAgeworICAgICAgIHZhciB0ZXh0SXRlbUZsYWdz
ID0ge307CisgICAgICAgdGV4dEl0ZW1GbGFncy5pc09wZW5pbmcgPSBMYXllcmluZ1RleHRTdGFn
ZS5pc09wZW5pbmdUZXh0SXRlbSh0ZXh0SXRlbSk7CisgICAgICAgdGV4dEl0ZW1GbGFncy5pc0Ns
b3NpbmcgPSBMYXllcmluZ1RleHRTdGFnZS5pc0Nsb3NpbmdUZXh0SXRlbSh0ZXh0SXRlbSk7Cisg
ICAgICAgcmV0dXJuIHRleHRJdGVtRmxhZ3M7CisgICAgfSkKK30pOworCitVdGlsaXRpZXMuZXh0
ZW5kT2JqZWN0KExheWVyaW5nVGV4dFN0YWdlLCB7CisgICAgY29sb3JhYmxlVGV4dEl0ZW1zOiBM
YXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIoZnVuY3Rpb24odGV4dEl0ZW1G
bGFncykKKyAgICB7CisgICAgICAgIHJldHVybiBMYXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJs
ZVRleHRJdGVtKHRleHRJdGVtRmxhZ3MpOworICAgIH0pLmxlbmd0aCwKKworICAgIGluc2VydGFi
bGVUZXh0SXRlbXM6IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzLmZpbHRlcihmdW5j
dGlvbih0ZXh0SXRlbUZsYWdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIExheWVyaW5nVGV4dFN0
YWdlLmlzSW5zZXJ0YWJsZVRleHRJdGVtKHRleHRJdGVtRmxhZ3MpOworICAgIH0pLmxlbmd0aAor
fSk7CisKK0xheWVyaW5nVGV4dEJlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhC
ZW5jaG1hcmssCisgICAgZnVuY3Rpb24ob3B0aW9ucykKKyAgICB7CisgICAgICAgIEJlbmNobWFy
ay5jYWxsKHRoaXMsIG5ldyBMYXllcmluZ1RleHRTdGFnZSgpLCBvcHRpb25zKTsKKyAgICB9Cisp
OworCit3aW5kb3cuYmVuY2htYXJrQ2xhc3MgPSBMYXllcmluZ1RleHRCZW5jaG1hcms7CisKK30p
KCk7CisKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0
L3Jlc291cmNlcy90ZXh0LWJveGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3RleHQvcmVzb3VyY2VzL3RleHQtYm94ZXMuanMKaW5kZXggZTkwYWU3MTc5M2UwY2Y3ZWZl
MDIyZTExNTdhOTJkNDMzYzhkZGU4My4uNmEzNTIzZTAxN2M4ZTUwYzZhZThjODBkMjQ0Nzg5MjMz
NDNiNjU3NiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Rl
eHQvcmVzb3VyY2VzL3RleHQtYm94ZXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL3RleHQtYm94ZXMuanMKQEAgLTEsNjUgKzEsNTggQEAK
LWZ1bmN0aW9uIEJvdW5jaW5nVGV4dEJveChzdGFnZSwgc2FtcGxlVGV4dCkKLXsKLSAgICBCb3Vu
Y2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOwotCi0gICAgdGhpcy5lbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoJ3BhcnRpY2xlJyk7Ci0gICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5fc2l6
ZS54ICsgInB4IjsKLSAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5fc2l6ZS55
ICsgInB4IjsKLSAgICB0aGlzLmVsZW1lbnQudGV4dENvbnRlbnQgPSBzYW1wbGVUZXh0OwotICAg
IAotICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTsKLSAgICB0aGlz
Ll9tb3ZlKCk7Ci19Ci0KLUJvdW5jaW5nVGV4dEJveC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKLUJvdW5jaW5nVGV4dEJveC5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBCb3VuY2luZ1RleHRCb3g7Ci0KLUJvdW5jaW5nVGV4dEJveC5wcm90b3R5
cGUuX21vdmUgPSBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQgPSB0
aGlzLl9wb3NpdGlvbi54ICsgInB4IjsKLSAgICB0aGlzLmVsZW1lbnQuc3R5bGUudG9wID0gdGhp
cy5fcG9zaXRpb24ueSArICJweCI7Ci19Ci0gICAgCi1Cb3VuY2luZ1RleHRCb3gucHJvdG90eXBl
LmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCi17Ci0gICAgQm91bmNpbmdQYXJ0aWNsZS5w
cm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7Ci0gICAgdGhpcy5fbW92ZSgp
OwotfQotCi1mdW5jdGlvbiBCb3VuY2luZ1RleHRCb3hTdGFnZShlbGVtZW50LCBvcHRpb25zKQot
ewotICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25z
KTsKLSAgICB0aGlzLl9zYW1wbGVUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbXBs
ZS10ZXh0JykudGV4dENvbnRlbnQ7Ci19Ci0KLUJvdW5jaW5nVGV4dEJveFN0YWdlLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOwotQm91
bmNpbmdUZXh0Qm94U3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdUZXh0Qm94
U3RhZ2U7Ci0KLUJvdW5jaW5nVGV4dEJveFN0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9
IGZ1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gbmV3IEJvdW5jaW5nVGV4dEJveCh0aGlzLCB0aGlz
Ll9zYW1wbGVUZXh0KTsKLX0KLQotQm91bmNpbmdUZXh0Qm94U3RhZ2UucHJvdG90eXBlLnBhcnRp
Y2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKQotewotICAgIHBhcnRpY2xlLmVs
ZW1lbnQucmVtb3ZlKCk7Ci19Ci0KLWZ1bmN0aW9uIEJvdW5jaW5nVGV4dEJveHNCZW5jaG1hcmso
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKLXsKLSAgICBC
b3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOwotfQotCi1Cb3VuY2luZ1RleHRCb3hzQmVuY2ht
YXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsu
cHJvdG90eXBlKTsKLUJvdW5jaW5nVGV4dEJveHNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gQm91bmNpbmdUZXh0Qm94c0JlbmNobWFyazsKLQotQm91bmNpbmdUZXh0Qm94c0JlbmNo
bWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQotewotICAgIHJl
dHVybiBuZXcgQm91bmNpbmdUZXh0Qm94U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Ci19
Ci0KLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKLXsKLSAgICByZXR1cm4gbmV3IEJv
dW5jaW5nVGV4dEJveHNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0Jhcik7Ci19CisoZnVuY3Rpb24oKSB7CisKK0JvdW5jaW5nVGV4dEJveCA9IFV0
aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ1BhcnRpY2xlLAorICAgIGZ1bmN0aW9uKHN0
YWdlLCBzYW1wbGVUZXh0KQorICAgIHsKKyAgICAgICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRo
aXMsIHN0YWdlKTsKKworICAgICAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3BhcnRpY2xl
Jyk7CisgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuc2l6ZS54ICsgInB4
IjsKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuc2l6ZS55ICsgInB4
IjsKKyAgICAgICAgdGhpcy5lbGVtZW50LnRleHRDb250ZW50ID0gc2FtcGxlVGV4dDsKKworICAg
ICAgICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7CisgICAgICAgIHRo
aXMuX21vdmUoKTsKKyAgICB9LCB7CisKKyAgICBfbW92ZTogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQgPSB0aGlzLnBvc2l0aW9uLnggKyAicHgiOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudG9wID0gdGhpcy5wb3NpdGlvbi55ICsgInB4IjsK
KyAgICB9LAorCisgICAgYW5pbWF0ZTogZnVuY3Rpb24odGltZURlbHRhKQorICAgIHsKKyAgICAg
ICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0
YSk7CisgICAgICAgIHRoaXMuX21vdmUoKTsKKyAgICB9Cit9KTsKKworQm91bmNpbmdUZXh0Qm94
U3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSwK
KyAgICBmdW5jdGlvbigpCisgICAgeworICAgICAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNh
bGwodGhpcyk7CisgICAgICAgIHRoaXMuX3NhbXBsZVRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnc2FtcGxlLXRleHQnKS50ZXh0Q29udGVudDsKKyAgICB9LCB7CisKKyAgICBjcmVhdGVQ
YXJ0aWNsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1Rl
eHRCb3godGhpcywgdGhpcy5fc2FtcGxlVGV4dCk7CisgICAgfSwKKworICAgIHBhcnRpY2xlV2ls
bEJlUmVtb3ZlZDogZnVuY3Rpb24ocGFydGljbGUpCisgICAgeworICAgICAgICBwYXJ0aWNsZS5l
bGVtZW50LnJlbW92ZSgpOworICAgIH0KK30pOworCitCb3VuY2luZ1RleHRCb3hCZW5jaG1hcmsg
PSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQmVuY2htYXJrLAorICAgIGZ1bmN0aW9uKG9wdGlv
bnMpCisgICAgeworICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBuZXcgQm91bmNpbmdUZXh0
Qm94U3RhZ2UoKSwgb3B0aW9ucyk7CisgICAgfQorKTsKKword2luZG93LmJlbmNobWFya0NsYXNz
ID0gQm91bmNpbmdUZXh0Qm94QmVuY2htYXJrOworCit9KSgpOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvdGV4dC1ib3hlcy5odG1sIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvdGV4dC1ib3hlcy5odG1sCmluZGV4IDc4
ODFjZjNhY2RlZWEwOTJlOWFkZjc5YTJjNWRkZGFmMmQ1OTBmNTUuLjZjMTA2Zjg4ZWRkNThkMzIx
ZGZiZDQ3MTQ0YmFkMWU0MDZlNDM4MzUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy90ZXh0L3RleHQtYm94ZXMuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC90ZXh0LWJveGVzLmh0bWwKQEAgLTE4LDcgKzE4LDcgQEAK
ICAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOTZlbTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICAKKwogICAgICAgICAucGFydGljbGUgewogICAgICAgICAgICAgcG9zaXRp
b246IGFic29sdXRlOwogICAgICAgICAgICAgd2lkdGg6IDI4MHB4OwpAQCAtMjYsMjIgKzI2LDEy
IEBACiAgICAgICAgICAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKICAgICAgICAgICAgIHBh
ZGRpbmc6IDNweDsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICAjc2FtcGxlLXRleHQg
ewogICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgfQotICAgIDwvc3R5bGU+ICAK
KyAgICA8L3N0eWxlPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3Mi
IGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3N0cmluZ3MuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
dXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCi0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9tYWluLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdl
LmpzIj48L3NjcmlwdD4gIAotICAgIDxzY3JpcHQgc3JjPSIuLi9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBj
aGFyc2V0PSJ1dGYtOCIgc3JjPSJyZXNvdXJjZXMvdGV4dC1ib3hlcy5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keT4KICAgICA8ZGl2IGlkPSJzYW1wbGUtdGV4dCIgY2xhc3M9InBhcnRpY2xl
Ij5JIGNhbiBlYXQgZ2xhc3MgYW5kIGl0IGRvZXNuJ3QgaHVydCBtZS4KQEAgLTU3LDggKzQ3LDE2
IEBACiAgICAgICAgIOengeOBr+OCrOODqeOCueOCkumjn+OBueOCieOCjOOBvuOBmeOAguOBneOC
jOOBr+engeOCkuWCt+OBpOOBkeOBvuOBm+OCk+OAggogICAgICAgICDrgpjripQg7Jyg66as66W8
IOuoueydhCDsiJgg7J6I7Ja07JqULiDqt7jrnpjrj4Qg7JWE7ZSE7KeAIOyViuyVhOyalAogICAg
ICAgICDQryDQvNC+0LbRgyDRl9GB0YLQuCDRgdC60LvQviwg0ZYg0LLQvtC90L4g0LzQtdC90ZYg
0L3QtSDQt9Cw0YjQutC+0LTQuNGC0YwuCi0gICAgICAgIOCyqOCyqOCyl+CzhiDgsrngsr7gsqjg
sr8g4LKG4LKX4LKm4LOGLCDgsqjgsr7gsqjgs4Eg4LKX4LKc4LKo4LON4LKo4LOBIOCypOCyv+Cy
qOCyrOCyueCzgeCypuCzgSAKKyAgICAgICAg4LKo4LKo4LKX4LOGIOCyueCyvuCyqOCyvyDgsobg
spfgsqbgs4YsIOCyqOCyvuCyqOCzgSDgspfgspzgsqjgs43gsqjgs4Eg4LKk4LK/4LKo4LKs4LK5
4LOB4LKm4LOBCiAgICAgPC9kaXY+CiAgICAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2PgorICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0cmluZ3MuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IGNoYXJzZXQ9InV0Zi04IiBzcmM9InJlc291cmNlcy90ZXh0LWJv
eGVzLmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzNl
NzYxOTA1NGRjNDU1MThmNzBjYzMyNTU1ZDdjOGQxNzhlNDJjYy4uOWExYmEyYzcxNDljMDFhYzFk
MjcxZjIxNmQ4M2Q3ZDhjZmZmMDJjNCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMTAgKzEsMjg3IEBA
CisyMDE1LTEyLTI3ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1w
bGlmeSB0aGUgdGVzdCBoYXJuZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTI1NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGUgdGhlIHNpbXBsZSBjYW52YXMgdGVzdHMuIEZvciB0aGUgcGF0
aHMsIHN0YXJ0IGZyb20gdGhlIGNlbnRlciBpbnN0ZWFkIG9mIHRoZQorICAgICAgICB0b3AtbGVm
dCBjb3JuZXIuIEluc3RlYWQgb2YgdXNpbmcgYSBjb29yZGluYXRlIGxpbWl0LCB1c2UgYSBjYW5v
bml6ZWQgZmFjdG9yLCBhbmQKKyAgICAgICAgdXNlIHRoYXQgYWxvbmcgYm90aCB0aGUgeCBhbmQg
eSBheGVzLCBzbyB0aGF0IG1vcmUgY2FwYWJsZSB0ZXN0cyB1c2UgbW9yZSBvZiB0aGUKKyAgICAg
ICAgY2FudmFzLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2Vz
L3NpbXBsZS1jYW52YXMtcGF0aHMuanM6CisgICAgICAgIChDYW52YXNMaW5lUG9pbnQpOiBSZXdy
aXRlIHRvIHVzZSB0aGUgY29vcmRpbmF0ZSBtYXhpbXVtIGZhY3Rvci4KKyAgICAgICAgKENhbnZh
c1F1YWRyYXRpY1BvaW50KTogRGl0dG8uCisgICAgICAgIChDYW52YXNCZXppZXJQb2ludCk6IERp
dHRvLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUt
Y2FudmFzLmpzOgorICAgICAgICAodHVuZSk6IENhbGN1bGF0ZSBhIGZhY3RvciBpbnN0ZWFkIG9m
IGEgbWF4aW11bSBjb29yZGluYXRlLgorCisgICAgICAgIEFsbCBvZiB0aGUgYmVuY2htYXJrcyB1
c2UgdGhlIGRlZmF1bHQgQW5pbWF0b3IoKS4gRG9uJ3QgcmVxdWlyZSBuZXcgdGVzdHMKKyAgICAg
ICAgdG8gcGFzcyBhIG5ldyBpbnN0YW5jZSwgYW5kIGluc3RlYWQganVzdCBtYWtlIG9uZSBpbiB0
aGUgQmVuY2htYXJrIGNvbnN0cnVjdG9yLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanM6Cisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLWNhbnZhcy1zaGFwZXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFnZXMuanM6CisgICAgICAg
ICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5n
LWNzcy1zaGFwZXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanM6CisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFw
ZXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZh
cy10ZXN0cy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2Nh
bnZhcy1lbGVjdHJvbnMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291
cmNlcy9jYW52YXMtc3RhcnMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jl
c291cmNlcy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvcmVzb3VyY2VzL21haW4uanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9zaW1w
bGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMtcGF0aHMuanM6CisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzOgorICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qczoKKyAg
ICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcu
anM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10
ZXh0LmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvdGV4dC1i
b3hlcy5qczoKKworICAgICAgICBSZWZhY3RvciB0aGUgdGVtcGxhdGUuCisKKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanM6Cisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY3Nz
LmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBs
YXRlLXN2Zy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRl
LWNhbnZhcy5odG1sOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxh
dGUtY3NzLmh0bWw6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0
ZS1zdmcuaHRtbDoKKworICAgICAgICBSZWZhY3RvciB0aGUgU1ZHIHN1aXRlLgorCisgICAgICAg
ICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdl
cy5odG1sOiBNb3ZlIHNjcmlwdHMgdG8gdGhlIGVuZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw6IERpdHRvLgor
CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
Y2FudmFzLXNoYXBlcy5odG1sOiBSZW1vdmUgZXh0cmFuZW91cyBpbmNsdWRlcworICAgICAgICB0
byBzdGFnZS5qcy4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQvdGV4dC1ib3hlcy5o
dG1sOiBEaXR0by4KKworICAgICAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyayBp
cyBub3QgbmVjZXNzYXJ5LiBVc2UgQmVuY2htYXJrIGRpcmVjdGx5IHdoZW4gc3ViY2xhc3Npbmcu
CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2Vz
L2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanM6IFJlbW92ZQorICAgICAgICBCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlc0JlbmNobWFyay4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qczogVXNlIEJl
bmNobWFyay4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9y
ZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qczogRGl0dG8uCisKKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3Zn
LXBhcnRpY2xlcy5qczogUmVxdWlyZSB0aGUgc2hhcGUKKyAgICAgICAgaW4gdGhlIGNvbnN0cnVj
dG9yIGluc3RlYWQgb2YgaGF2aW5nIHN1YmNsYXNzZXMgc2V0IHRoZSBwcml2YXRlIHZhcmlhYmxl
LgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3Vy
Y2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanM6IFJlZmFjdG9yLgorICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVz
LmpzOgorCisgICAgICAgIFJlZmFjdG9yIHRoZSBIVE1MIHN1aXRlLgorCisgICAgICAgIE1vdmUg
c2NyaXB0cyB0byB0aGUgZW5kLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbDoKKyAgICAgICAgKiBBbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw6CisgICAg
ICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbDoKKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL3RleHQvdGV4dC1ib3hlcy5odG1sOgorCisgICAgICAgIFJlZmFj
dG9yIHRvIHVzZSB0aGUgbmV3IHZhcmlhYmxlcy4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qczoKKyAg
ICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctY3NzLXNoYXBlcy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQvcmVz
b3VyY2VzL2xheWVyaW5nLXRleHQuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0
L3Jlc291cmNlcy90ZXh0LWJveGVzLmpzOgorCisgICAgICAgIFJlZmFjdG9yIHRoZSBib3VuY2lu
ZyBjYW52YXMgdGVzdHMuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw6IE1vdmUgc2NyaXB0cyB0byB0aGUg
ZW5kLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5j
aW5nLWNhbnZhcy1zaGFwZXMuaHRtbDogTW92ZSBzY3JpcHRzIHRvIHRoZSBlbmQuCisKKyAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNp
bmctcGFydGljbGVzLmpzOiBQcm9tb3RlIGEgZmV3CisgICAgICAgIHByb3BlcnRpZXMgdG8gInB1
YmxpYyIgc2luY2UgdGhleSBhcmUgdXNlZCBieSBzdWJjbGFzc2VzLgorICAgICAgICAoQm91bmNp
bmdQYXJ0aWNsZXNTdGFnZSk6IEZpeCB0aGUgY29uc3RydWN0b3IsIHdoaWNoIHdhcyBtaXNzaW5n
ICJ0aGlzIi4gTWFrZSBwYXJ0aWNsZXMKKyAgICAgICAgInB1YmxpYyIgZm9yIHN1YmNsYXNzZXMu
CisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmluaXRpYWxpemUpOiBGaXggdGhlIG1h
eCB2ZWxvY2l0eSwgd2hpY2ggd2FzIGFjY2lkZW50YWxseSBjaGFuZ2VkLgorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5qczog
UmVmYWN0b3IuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qczoKKyAgICAgICAgQm91bmNp
bmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvciBpcyBubyBsb25nZXIgbmVlZGVkLgorICAgICAgICAo
Qm91bmNpbmdDYW52YXNQYXJ0aWNsZSk6IENoYW5nZSBjb25zdHJ1Y3RvciB0byB0YWtlIGEgc2hh
cGUgYXMgYSBwYXJhbWV0ZXIgaW5zdGVhZCBvZgorICAgICAgICBoYXZpbmcgc3ViY2xhc3NlcyBz
ZXQgdGhlIHZhcmlhYmxlLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanM6IFJlZmFjdG9yLgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9i
b3VuY2luZy1jYW52YXMtc2hhcGVzLmpzOiBSZWZhY3Rvci4KKworICAgICAgICBNb3ZlIGV4YW1w
bGUvIGZpbGVzIGludG8gbWlzYy8uCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL21pc2Mv
Y2FudmFzLWVsZWN0cm9ucy5odG1sOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1lbGVjdHJvbnMuaHRtbC4KKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL21pc2MvY2FudmFzLXN0YXJzLmh0bWw6IFJlbmFtZWQgZnJvbSBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0bWwu
CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ry
b25zLmpzOiBSZW5hbWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4
YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzLgorICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzOiBSZW5hbWVkIGZyb20gUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMt
c3RhcnMuanMuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIv
dGVzdHMuanM6IFVwZGF0ZSB0ZXN0IFVSTHMuCisKKyAgICAgICAgUmVmYWN0b3IgbWlzY2VsbGFu
ZW91cyBzdWl0ZS4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanM6CisgICAgICAgIFJlbW92ZSBCb3Vu
Y2luZ1BhcnRpY2xlc0FuaW1hdG9yIGFuZCBCb3VuY2luZ1BhcnRpY2xlQmVuY2htYXJrLCB3aGlj
aCBhcmUKKyAgICAgICAgbm90IG5lZWRlZC4KKyAgICAgICAgKHR1bmUpOiBSZW1vdmUgY29uc29s
ZSBhc3NlcnQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qczog
QWRkIFJvdGF0ZXIgYmFjayBpbiBmcm9tIHN0YWdlLmpzLgorCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qczogUmVtb3ZlIENh
bnZhc0VsZWN0cm9uc0FuaW1hdG9yLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBs
ZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qczogUmVtb3ZlIENhbnZhc1N0YXJzQW5pbWF0b3Iu
CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jb21wb3NpdGluZy10
cmFuc2Zvcm1zLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFz
LWVsZWN0cm9ucy5odG1sOiBNb3ZlIHNjcmlwdHMgdG8gdGhlIGVuZC4KKyAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1zdGFycy5odG1sOiBEaXR0by4KKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL21pc2MvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5odG1sOiBEaXR0
by4KKworICAgICAgICBSZWZhY3RvciB0aGUgc2ltcGxlIHN1aXRlLgorCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy1zdGFnZS5qczoKKyAgICAgICAg
KHR1bmUpOiBSZW1vdmUgY29vcmRpbmF0ZU1heGltdW0gc2luY2UgaXQgaXMgbm90IG5lZWRlZCBp
biBhbnkKKyAgICAgICAgb2YgdGhlIG1hc3RlciB0ZXN0cy4KKyAgICAgICAgKiBBbmltb21ldGVy
L3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy5qczoKKyAgICAgICAgU2ltcGxl
Q2FudmFzQW5pbWF0b3IgYW5kIFNpbXBsZUNhbnZhc0JlbmNobWFyayBhcmUgbm8gbG9uZ2VyCisg
ICAgICAgIG5lZWRlZC4KKyAgICAgICAgKHR1bmUpOiBNYW5hZ2UgdGhlIG9iamVjdHMgZGlmZmVy
ZW50bHksIGJ1dCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nCisgICAgICAgIGFsbCBvZiBTaW1wbGVD
YW52YXNTdGFnZSBoZXJlLCBqdXN0IHJlcGxhY2UgdHVuZSgpLiBJbmNsdWRlCisgICAgICAgIGNv
b3JkaW5hdGVNYXhpbXVtLCBhbmQgcmVtb3ZlIGl0ZW1zIGZyb20gdGhlIGVuZCBvZiB0aGUgbGlz
dAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBiZWdpbm5pbmcuCisgICAgICAgIChTdGFnZUJlbmNo
bWFyay5jYWxsLmNyZWF0ZUFuaW1hdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFN0YWdlQmVuY2ht
YXJrLmNhbGwpOiBEZWxldGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jl
c291cmNlcy9zaW1wbGUtY2FudmFzLXBhdGhzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVz
dHMvc2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbDogTW92ZQorICAgICAgICBzY3JpcHRz
IHRvIHRoZSBlbmQuCisKKyAgICAgICAgR2V0IHJpZCBvZiBzdGFnZS5qcywgU3RhZ2VBbmltYXRv
ciwgYW5kIFN0YWdlQmVuY2htYXJrLiBEb24ndCBoYXZlIHRoZSBwcm9ncmVzcyBiYXIgdXBkYXRl
IGR1cmluZyB0aGUgdGVzdC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVn
LXJ1bm5lci9hbmltb21ldGVyLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZSk6IE1vdmUgdGhlIHNl
dHRpbmcgb2YgdGVzdHNDb3VudCB0byB0aGUgZGVidWcgcnVubmVyLgorICAgICAgICAoZGlkUnVu
VGVzdCk6IE5pY2VyIG5hbWUuCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWct
cnVubmVyL2JlbmNobWFyay1ydW5uZXIuanM6CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJv
dG90eXBlLl9ydW5CZW5jaG1hcmtBbmRSZWNvcmRSZXN1bHRzKTogRG9uJ3QgcGFzcyBpbiB0aGUg
cHJvZ3Jlc3MgYmFyIHRvIGJlbmNobWFya3MuCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJj
ZXMvZXh0ZW5zaW9ucy5qczoKKyAgICAgICAgKFByb2dyZXNzQmFyKTogUmVmYWN0b3IuIE1ha2Ug
dmFyaWFibGVzICJwcml2YXRlIi4gUmVzZXR0aW5nIHRoZSBwcm9ncmVzcyB3aGVuIGluc3RhbnRp
YXRpbmcuCisgICAgICAgIChQcm9ncmVzc0Jhci5wcm90b3R5cGUuaW5jcmVtZW50UmFuZ2UpOiBU
aGlzIGlzIGNhbGxlZCBldmVyeSB0aW1lIGEgYmVuY2htYXJrIGNvbXBsZXRlcy4KKyAgICAgICAg
KiBBbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRlci5qczoKKyAgICAgICAgKHdp
bmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQuaW5pdGlhbGl6ZSk6IFJlbW92ZSB1bm5lZWRlZCBz
ZXR0aW5nIG9mIHRlc3RzQ291bnQuCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvc3Ry
aW5ncy5qczogVGhlc2UgYXJlIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9tYXN0ZXIvY2FudmFzLXN0YWdlLmh0bWw6IFJlbW92ZSBzY3JpcHQgaW5jbHVzaW9u
LiBPdGhlciB0ZXN0cyB3aWxsIGZvbGxvdy4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL21h
c3Rlci9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpzOiBVc2UgQmVuY2htYXJrIGluc3RlYWQgb2Yg
U3RhZ2VCZW5jaG1hcmsuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFp
bi5qczogTWVzc2FnZXMgYXJlIG5vIGxvbmdlciBuZWVkZWQKKyAgICAgICAgKEFuaW1hdG9yLnBy
b3RvdHlwZS5fc2hvdWxkUmVxdWVzdEFub3RoZXJGcmFtZSk6IFJlbmFtZSBmcm9tIGFuaW1hdGUo
KSwgc2luY2UgdGhpcyBtZXRob2QgcmV0dXJucyBhIGJvb2xlYW4KKyAgICAgICAgaW5kaWNhdGlu
ZyB3aGV0aGVyIGFub3RoZXIgZnJhbWUgc2hvdWxkIGJlIHJlcXVlc3RlZC4gQ29sbGFwc2UgdGhl
IGxvZ2ljIGZyb20gU3RhZ2VBbmltYXRvciBpbnRvIGFuaW1hdGVMb29wLgorICAgICAgICAoQmVu
Y2htYXJrU3RhdGUucHJvdG90eXBlLmN1cnJlbnRTdGFnZSk6IERlbGV0ZWQuCisgICAgICAgIChC
ZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuY3VycmVudE1lc3NhZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLmN1cnJlbnRQcm9ncmVzcyk6IERlbGV0ZWQuCisg
ICAgICAgIChBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChB
bmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZUxvb3ApOiBUaGUgc3RhZ2UgaXMgYW5pbWF0ZWQgb25s
eSB3aGVuIHdlIGhhdmUgYW5vdGhlciBmcmFtZSB0byBkcmF3LgorICAgICAgICAoQmVuY2htYXJr
LnByb3RvdHlwZS5yZWNvcmQpOiBObyBuZWVkIHRvIHVwZGF0ZSB0aGUgcHJvZ3Jlc3MgYmFyLgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzOiBSZW1vdmVkLiBS
b3RhdGVyIHdpbGwgYXBwZWFyIGluIGEgbGF0ZXIgcGF0Y2gsIGluIG1haW4uanMuCisKKyAgICAg
ICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5q
czoKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1bkJlbmNobWFya0FuZFJl
Y29yZFJlc3VsdHMpOiBFYWNoIHRlc3QgaXMgcnVuIGFzIGEgYmVuY2htYXJrLgorICAgICAgICBS
ZW1vdmUgdGhlIGNhbGwgdG8gcnVuQmVuY2htYXJrIGJ5IG1lcmdpbmcgdGhlIG9wdGlvbnMgaGVy
ZSwgYW5kIGNhbGxpbmcgYmVuY2htYXJrLnJ1bigpCisgICAgICAgIGRpcmVjdGx5LgorCisgICAg
ICAgIE1ha2UgdGhlIGNsYXNzIHJlbGF0aW9uc2hpcHMgbW9yZSBlYXNpbHkgdW5kZXJzdGFuZGFi
bGUuIFRoZSBiZW5jaG1hcmsgb3ducyB0aGUgc3RhZ2UsCisgICAgICAgIGFuaW1hdG9yLCBhbmQg
b3B0aW9ucy4gTWFrZSB0aGUgc3RhZ2UgYW5kIGFuaW1hdG9yIG5vIGxvbmdlciBoYXZlIHRoZWly
IG93biByZWZlcmVuY2VzIHRvCisgICAgICAgIHRoZSBvcHRpb25zLiBNYWtlIFN0YWdlIGEgZmly
c3QtY2xhc3MgY2l0aXplbiBieSBwcm9tb3RpbmcgaXQgdG8gbWFpbi5qcy4gTGF0ZXIgcGF0Y2hl
cworICAgICAgICB3aWxsIHRyeSB0byBnZXQgcmlkIG9mIHN0YWdlLmpzIGFsdG9nZXRoZXIuCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qczoKKyAgICAgICAgKFN0
YWdlKTogTW92ZWQgZnJvbSBzdGFnZS5qcy4KKyAgICAgICAgKEFuaW1hdG9yKTogRG9uJ3QgcGFz
cyBpbiBiZW5jaG1hcmsgYW5kIG9wdGlvbnMgaW4gaXRzIGNvbnN0cnVjdG9yLiBJdCB3aWxsIGdl
dCBpbml0aWFsaXplZAorICAgICAgICBieSBiZW5jaG1hcmstcmVsYXRlZCBwYXJhbWV0ZXJzIGlu
IGluaXRpYWxpemUoKS4KKyAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5pbml0aWFsaXplKTog
QWRkIGEgYmFjay1yZWZlcmVuY2UgdG8gYmVuY2htYXJrIGFuZCBjYWNoZSBhbiBvcHRpb24uCisg
ICAgICAgIChBbmltYXRvci5wcm90b3R5cGUuZ2V0IGJlbmNobWFyayk6CisgICAgICAgIChBbmlt
YXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IFJlZmFjdG9yIHRvIHVzZSB0aGUgY2FjaGVkIG9wdGlv
biwgdG8gcmVtb3ZlIGl0cyBkZXBlbmRlbmN5IG9uCisgICAgICAgIHRoZSBvcHRpb25zIGRpY3Rp
b25hcnkuCisgICAgICAgIChCZW5jaG1hcmspOiBSZXF1aXJlIGFsbCBiZW5jaG1hcmtzIHRvIGhh
dmUgYSBzdGFnZSBhbmQgYW5pbWF0b3IuIFRoZSBpbnN0YW5jZSB3aWxsIGluaXRpYWxpemUKKyAg
ICAgICAgdGhlbS4KKyAgICAgICAgKEJlbmNobWFyay5wcm90b3R5cGUuZ2V0IG9wdGlvbnMpOgor
ICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5nZXQgc3RhZ2UpOiBCZW5jaG1hcmtTdGF0ZXMu
c3RhZ2VzIHdpbGwgbmVlZCB0byBiZSByZW5hbWVkIHRvIGF2b2lkIGNvbmZ1c2lvbi4KKyAgICAg
ICAgKEJlbmNobWFyay5wcm90b3R5cGUuZ2V0IGFuaW1hdG9yKToKKyAgICAgICAgKEJlbmNobWFy
ay5wcm90b3R5cGUuc3RhcnQpOgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS51cGRhdGUp
OiBBc2sgdGhlIHN0YWdlIGRpcmVjdGx5IHRvIHR1bmUgb3IgY2xlYXIgaW5zdGVhZCBvZiBhZGRp
bmcgYW5vdGhlcgorICAgICAgICBsZXZlbCBvZiBpbmRpcmVjdGlvbi4KKyAgICAgICAgKHdpbmRv
dy5ydW5CZW5jaG1hcmspOiBEZWxldGVkLiBSZW1vdmUgdGhlIG5lZWQgZm9yIGEgYmVuY2htYXJr
Q2xpZW50LiBBbHNvIHJlbW92ZSB0aGUgc3RhbmRhbG9uZQorICAgICAgICBwYXRoLCBzaW5jZSB0
ZXN0cyBjYW4gYmUgaW5kaXZpZHVhbGx5IHNlbGVjdGVkLCBhbmQgcmVtb3ZlIHRoZSBuZWVkIGZv
ciBydW5CZW5jaG1hcmsgc2luY2UgdGhhdCBpcworICAgICAgICBoYW5kbGVkIGluIEJlbmNobWFy
a1J1bm5lci5fcnVuQmVuY2htYXJrQW5kUmVjb3JkUmVzdWx0cy4KKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qczoKKyAgICAgICAgKFN0YWdlKTogRGVsZXRlZC4g
TW92ZWQgdG8gbWFpbi5qcy4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrKTogV2hhdCdzIGxlZnQg
aXMgdXBkYXRpbmcgdGhlIHByb2dyZXNzIGJhcjsgdG8gYmUgcmVtb3ZlZC4KKyAgICAgICAgKFN0
YWdlQW5pbWF0b3IpOiBXaGF0J3MgbGVmdCBjYW4gYmUgZm9sZGVkIGluIEFuaW1hdG9yLgorCisg
ICAgICAgIFJlZmFjdG9yIG1hc3RlciBzdWl0ZS4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
L21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpzOiBUaGlzIG5vdyBvbmx5IGhhcyBTaW1w
bGVDYW52YXNTdGFnZS4KKyAgICAgICAgKGFuaW1hdGUpOiBQdXNoIHRoZSBjbGVhclJlY3QoKSBp
bnRvIGVhY2ggc3RhZ2UuCisgICAgICAgIChjb21wbGV4aXR5KToKKyAgICAgICAgKFN0YWdlQmVu
Y2htYXJrLmNhbGwuY3JlYXRlQW5pbWF0b3IpOiBEZWxldGVkLgorICAgICAgICAoU3RhZ2VCZW5j
aG1hcmsuY2FsbCk6IERlbGV0ZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIv
cmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5qczogU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlIGlz
IG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgIChDYW52YXNMaW5lU2VnbWVudC5wcm90b3R5cGUu
ZHJhdyk6CisgICAgICAgIChDYW52YXNBcmMpOgorICAgICAgICAoQ2FudmFzTGluZVBvaW50KTog
UmVtb3ZlIHRoZSBkcmF3IGNhbGwgYmVjYXVzZSBkZXBlbmRpbmcgb24gaXRzIGluZGV4IGl0IGVp
dGhlciBuZWVkcyB0byBiZSBtb3ZlVG8KKyAgICAgICAgb3IgbGluZVRvLCBhbmQgaXQgaXMgb3Ro
ZXJ3aXNlIGEgdmVyeSBzbWFsbCBkcmF3IG9wZXJhdGlvbiB0aGF0IGRvZXNuJ3QgbmVlZCB0aGUg
b3ZlcmhlYWQgb2YgdGhlCisgICAgICAgIGZ1bmN0aW9uIGNhbGwuIERvIGFsbCBvZiB0aGUgZHJh
d2luZyB0aHJvdWdoIHRoZSBzdGFnZS4KKworICAgICAgICBSZWZhY3RvciB0aGUgc3ViY2xhc3Mg
cGF0dGVybi4gSW50cm9kdWNlIFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcygpLgorCisgICAgICAg
ICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanM6
CisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qczoKKyAgICAgICAg
KHdpbmRvdy5VdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MpOiBUYWtlcyB0aGUgc3VwZXIgY2xhc3Ms
IGEgZnVuY3Rpb24gcmVwcmVzZW50aW5nCisgICAgICAgIHRoZSBjbGFzcydzIGNvbnN0cnVjdG9y
LCBhbmQgYWRkaXRpb25hbCBtZXRob2RzIHRvIGF0dGFjaCB0byB0aGUgbmV3IGNsYXNzJ3MKKyAg
ICAgICAgcHJvdG90eXBlIG9iamVjdC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQv
dGV4dC1ib3hlcy5odG1sOiBSZW1vdmUgdW5uZWVkZWQgcmVmZXJlbmNlIHRvIHV0aWxpdGllcy5q
cy4KKworICAgICAgICBSZWZhY3RvciB0ZXN0cy4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qczoK
KyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMv
Ym91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qczoK
KyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMv
Ym91bmNpbmctY3NzLWltYWdlcy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qczoKKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmct
cGFydGljbGVzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzOgorICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctcGFydGlj
bGVzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVz
dHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanM6CisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzOgorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtc3RhZ2UuanM6Cisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5q
czoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NvbXBvc2l0aW5n
LXRyYW5zZm9ybXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3Rh
Z2UuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBs
ZS1jYW52YXMtcGF0aHMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVz
b3VyY2VzL3NpbXBsZS1jYW52YXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1w
bGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qczoKKyAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcuanM6CisgICAgICAg
ICogQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzOiBSZW9y
ZGVyIHNvbWUgb2YgdGhlIG1ldGhvZHMKKyAgICAgICAgYW5kIHByb3BlcnRpZXMgc2luY2UgdGhl
eSByZWx5IG9uIGVhY2ggb3RoZXIuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jl
c291cmNlcy90ZXh0LWJveGVzLmpzOgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMv
ZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanM6IEFycmFuZ2UgY2FsbHMKKyAgICAgICAgaW4gdGhl
IG9yZGVyIHRoZXkgYXJlIGV2b2tlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9k
ZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qczoKKyAgICAgICAgKEJlbmNobWFya1J1bm5l
clN0YXRlLnByb3RvdHlwZS5uZXh0KTogR2V0IHJpZCBvZiByZXR1cm4gdmFsdWUgc2luY2UKKyAg
ICAgICAgbm8gY2FsbGVyIHRvIG5leHQoKSB1c2VzIGl0LgorICAgICAgICAoQmVuY2htYXJrUnVu
bmVyU3RhdGUucHJvdG90eXBlLnByZXBhcmVDdXJyZW50VGVzdCk6IFJlZmFjdG9yIHRoZQorICAg
ICAgICBwcm9taXNlIHRvIHJlc29sdmUgc2ltcGx5IHdoZW4gb25sb2FkKCkgaXMgY2FsbGVkIGlu
c3RlYWQgb2YKKyAgICAgICAgbG9va2luZyBmb3IgI3N0YWdlLgorICAgICAgICAoQmVuY2htYXJr
UnVubmVyLnByb3RvdHlwZS5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMpOiBTdWl0ZS5ydW4KKyAg
ICAgICAgc2ltcGx5IGNhbGxzIHJ1bkJlbmNobWFyaygpLiBDYWxsIGl0IGRpcmVjdGx5IHJhdGhl
ciB0aGFuIHRocm91Z2gKKyAgICAgICAgdGhlIFN1aXRlLgorICAgICAgICAoQmVuY2htYXJrUnVu
bmVyLnByb3RvdHlwZS5zdGVwKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIgaW4KKyAgICAgICAg
cmVzb2x2ZSBjYWxsYmFjay4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVu
TXVsdGlwbGVJdGVyYXRpb25zKTogVXNlIHRoaXMgaW5zdGVhZAorICAgICAgICBvZiBzZWxmIHNp
bmNlIGl0IGlzIG91dHNpZGUgb2YgdGhlIGNsb3N1cmUgd2hpY2ggbmVlZGVkIHRoZSBzZWxmCisg
ICAgICAgIHZhcmlhYmxlLgorICAgICAgICAocmVzb2x2ZUlmUmVhZHkpOiBEZWxldGVkLgorICAg
ICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS53YWl0Rm9yRWxlbWVudCk6IERlbGV0ZWQu
CisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpzOiBwcmVwYXJl
KCkgYW5kIHJ1bigpIGFyZQorICAgICAgICBubyBsb25nZXIgbmVlZGVkLgorICAgICAgICAoU3Vp
dGUucHJvdG90eXBlLnByZXBhcmUpOiBEZWxldGVkLgorICAgICAgICAoU3VpdGUucHJvdG90eXBl
LnJ1bik6IERlbGV0ZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvY2FudmFz
LXN0YWdlLmh0bWw6IE1vdmUgYWxsIHNjcmlwdHMgdG8KKyAgICAgICAgdGhlIGVuZCBvZiB0aGUg
cGFnZS4KKwogMjAxNS0xMi0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgYW4gQW5pbW9tZXRlciBkZXZlbG9wZXIgdGVzdCB3aGljaCBhbmlt
YXRlcyB0ZXh0LXJpY2ggYm94ZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MjU0NAogCiAgICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4K
LSAgICAgICAgCisKICAgICAgICAgQWRkIGEgdGVzdCB0aGF0IGRyYXdzIGxvdHMgb2YgaW50ZXJu
YXRpb25hbCB0ZXh0LiBUaGlzIGlzIGEgcGFydGljbGUgdGVzdCwKICAgICAgICAgbW92aW5nIHRo
ZSBib3hlcyBhcm91bmQgd2l0aCBhYnNvbHV0aW9uIHBvc2l0aW9uaW5nLgogCkBAIC0zODgsMTEg
KzY2NSwxMSBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUxNzI0CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgotICAgICAgICAK
KwogICAgICAgICBBZGQgYSAiYm91bmNpbmcgcGFydGljbGVzIiB0ZXN0IHRoYXQgbW92ZXMgY29t
cG9zaXRlZCBsYXllcnMgYXJvdW5kLCBvcHRpb25hbGx5IHdpdGggYSBmaWx0ZXIuCi0gICAgICAg
IAorCiAgICAgICAgIFRoaXMgaXMgYWRkZWQgdW5kZXIgYSBuZXcgIk1pc2NlbGxhbmVvdXMiIGNh
dGVnb3J5LgotICAgICAgICAKKwogICAgICAgICBSZW1vdmUgdGhlIHRlc3QgdGVtcGxhdGVzIGNh
dGVnb3J5IGZyb20gdGhlIFVJLgogCiAgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3Vy
Y2VzL3Rlc3RzLmpzOgpAQCAtNDM1LDcgKzcxMiw3IEBACiAgICAgICAgIGNsaXBib2FyZC4KIAog
ICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbDogQWRkIGEgbmV3IGJ1
dHRvbiB0byBzZWxlY3QgdGhlIHJlc3VsdHMgdGFibGUgb3IgSlNPTi4KLSAgICAgICAgCisKICAg
ICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qczoKICAgICAg
ICAgKHdpbmRvdy5zZWN0aW9uc01hbmFnZXIuX3NlY3Rpb25EYXRhRWxlbWVudCk6IFNlbGVjdHMg
dGhlIGNvbnRhaW5lciA8ZGF0YT4gZWxlbWVudC4KICAgICAgICAgKHdpbmRvdy5zZWN0aW9uc01h
bmFnZXIuX3NlY3Rpb25EYXRhRGl2RWxlbWVudCk6IFJlcGxhY2UgYSBsaXRlcmFsIHN0cmluZyB3
aXRoIGEgc3RyaW5nIHRhYmxlIGVudHJ5LgpAQCAtNDUzLDkgKzczMCw5IEBACiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1MjYKIAogICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCi0gICAgICAgIAorCiAgICAgICAgIEhhdmluZyB0aGUg
Z3JhcGhzIGRvIGludGVycG9sYXRpb24gaXMgbWlzbGVhZGluZywgYmVjYXVzZSB5b3UgY2FuJ3Qg
c2VlIHRoZSBhY3R1YWwgZGF0YS4KLSAgICAgICAgCisKICAgICAgICAgQWxzbyByZW1vdmUgInNo
YXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsiIHNvIHRoZSBsaW5lcyBnZXQgYW50aWFsaWFzZWQu
CiAKICAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3M6
CkBAIC00ODEsMTcgKzc1OCwxNyBAQAogICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4
dGVuc2lvbnMuanM6CiAgICAgICAgIChSZXN1bHRzVGFibGUucHJvdG90eXBlLl9pc05vaXN5TWVh
c3VyZW1lbnQpOiBGaXggYSBwYXJhbWV0ZXIgbmFtZS4KICAgICAgICAgKFJlc3VsdHNUYWJsZS5w
cm90b3R5cGUuX2lzTm9pc3lUZXN0KTogU2luY2Ugc2NvcmUgaXMgYSBtZW1iZXIgb2YgdGVzdFJl
c3VsdHMsIHdlIG5lZWQgdG8gbGltaXQgb3VyIHNlYXJjaCB0byBmcmFtZSByYXRlIGFuZCBjb21w
bGV4aXR5LgotICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5fc2hvd1Rlc3QpOiBQYXNz
IHRoZSBjb3JyZWN0IHBhcmFtZXRlciB0byBfaXNOb2lzeU1lYXN1cmVtZW50KCkuIAotICAgICAg
ICAKKyAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX3Nob3dUZXN0KTogUGFzcyB0aGUg
Y29ycmVjdCBwYXJhbWV0ZXIgdG8gX2lzTm9pc3lNZWFzdXJlbWVudCgpLgorCiAgICAgICAgICog
QW5pbW9tZXRlci9yZXNvdXJjZXMvc3RyaW5ncy5qczogRml4IHRoZSBpbmRlbnRhdGlvbiBhbmQg
bmFtZSBhbmQgdmFsdWUgb2YgYSBzdHJpbmcuCiAKICAgICAgICAgKiBBbmltb21ldGVyL3J1bm5l
ci9yZXNvdXJjZXMvdGVzdHMuanM6IFJlbW92ZSBhbGwgdGhlIG1hbnVhbCBnYWlucyBhbmQgbGlt
aXRzIHBhcmFtZXRlcnMgd2hpY2ggaGFkIHRvIGJlIHBhc3NlZCB0byBldmVyeSB0ZXN0LgotICAg
ICAgICAKKwogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanM6CiAg
ICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuY3VycmVudFN0YWdlKTogRml4IGFuIGVu
dW0gbmFtZS4KICAgICAgICAgKEJlbmNobWFyayk6IEdldCByaWQgb2YgbWFudWFsIGdhaW4gYW5k
IGxpbWl0cy4KICAgICAgICAgKEJlbmNobWFyay5wcm90b3R5cGUudXBkYXRlKTogU2ltcGxpZnkg
dGhlIGNhbGN1bGF0aW9uIGJ5IGhhdmluZyBhbGwgdGhlIHRpbWVzIGluIG1zLgotICAgICAgICAK
KwogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanM6CiAgICAgICAg
IChQSURDb250cm9sbGVyKTogR2V0IHJpZCBvZiB0aGUgbWFudWFsIGdhaW4gYW5kIGxpbWl0cyBh
bmQgdGhlIG1hZ2ljIG51bWJlcnMgZm9yIFRpIGFuZCBUZC4KICAgICAgICAgKFBJRENvbnRyb2xs
ZXIucHJvdG90eXBlLl95UG9zaXRpb24pOiBUZWxscyB3aGV0aGVyIHRoZSB0ZXN0IGN1cnJlbnQg
b3V0cHV0IGlzIG1vdmluZyB0b3dhcmRzIHRoZSBzZXQtcG9pbnQgb3IgYXdheSBmcm9tIGl0LgpA
QCAtNTA0LDcgKzc4MSw3IEBACiAgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS5fdHVu
ZSk6CiAgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS5fc2F0dXJhdGUpOgogICAgICAg
ICAoUElEQ29udHJvbGxlci5wcm90b3R5cGUudHVuZSk6IE1hbmFnZXMgY2FsY3VsYXRpbmcgdGhl
IGNvbnRyb2xsZXIgcGFyYW1ldGVycy4gSXQgdGhlbiByZXR1cm5zIGEgUElEIHR1bmluZyB2YWx1
ZS4KLSAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl9zYXQpOiBEZWxldGVkLiBXZSBt
YXkgbmVlZCB0byByZXR1cm4gaXQgYmFjayBidXQgdGhlIGxpbWl0cyBoYXZlIHRvIGJlIGNhbGN1
bGF0ZWQgYWRhcHRpdmVseSBub3QgbWFudWFsbHkuIAorICAgICAgICAoUElEQ29udHJvbGxlci5w
cm90b3R5cGUuX3NhdCk6IERlbGV0ZWQuIFdlIG1heSBuZWVkIHRvIHJldHVybiBpdCBiYWNrIGJ1
dCB0aGUgbGltaXRzIGhhdmUgdG8gYmUgY2FsY3VsYXRlZCBhZGFwdGl2ZWx5IG5vdCBtYW51YWxs
eS4KIAogMjAxNS0xMS0xNyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUu
Y29tPgogCkBAIC01MTIsNyArNzg5LDcgQEAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MTMzNAogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KLSAgICAgICAgCisKICAgICAgICAgTWFrZSB0aGUgZ3JhcGhpY3MgYmVuY2htYXJrIHN0
cmluZyB0YWJsZSBiZSBhbiBvYmplY3Qgb2Ygc3ViLW9iamVjdHMuIEVhY2gKICAgICAgICAgc3Vi
LW9iamVjdCByZXByZXNlbnRzIGFuIGFzc29jaWF0aXZlIGFycmF5LCB0aGUga2V5IGlzIHRoZSBz
dHJpbmcgbmFtZSBhbmQKICAgICAgICAgdGhlIHZhbHVlIGlzIHRoZSBzdHJpbmcgZGF0YS4KQEAg
LTU0NSw3ICs4MjIsNyBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxMzYxCiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgotICAg
ICAgICAKKwogICAgICAgICBVc2UgZml4ZWQgc2l6ZSBmb3Igc3RhZ2UgaWZyYW1lIG9mIHRoZSBn
cmFwaGljcyBiZW5jaG1hcmsgdG8gZGlzYWJsZQogICAgICAgICBmbGF0dGVuaW5nIHRoZSBpZnJh
bWUgd2hpbGUgYW5pbWF0aW5nIHRoZSBwYXJ0aWNsZXMuIEFsc28gZW5zdXJlIHRoZQogICAgICAg
ICBib3VuY2luZyBwYXJ0aWNsZXMgZG8gbm90IGdvIG91dHNpZGUgdGhlIGlmcmFtZSdzIGJvdW5k
YXJpZXMuCkBAIC01OTAsNyArODY3LDcgQEAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MTI4MwogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgotICAgICAgICAKKwogICAgICAgICBHZXQgcmlkIG9mIHRoZSBvcHRpb24gdG8gcnVuIGFu
aW1hdGlvbiB1c2luZyBzZXRJbnRlcnZhbCgpLgogCiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9yZXNvdXJjZXMvbWFpbi5qczoKQEAgLTYwNSwxMCArODgyLDEwIEBACiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEyODYKIAogICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIuCi0gICAgICAgIAorCiAgICAgICAgIFdoZW4gc2hvd2luZyB0
aGUgcmVzdWx0cyBvZiBhIHRlc3QgaW4gdGhlIGdyYXBoaWNzIGJlbmNobWFyayB0aGUgZm9sbG93
aW5nCiAgICAgICAgIGNyaXRlcmlhIGlzIGdvaW5nIHRvIGJlIGFwcGxpZWQ6Ci0gICAgICAgIAor
CiAgICAgICAgIDEuIElmIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gb2YgdGhlIHRlc3QgY29tcGxl
eGl0eSBvciB0aGUgZnJhbWUgcmF0ZSBpcwogICAgICAgICAgICBlcXVhbCB0byBvciBtb3JlIHRo
YW4gMTAlLCB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIGFuZCB0aGUgdGVzdCBuYW1lCiAgICAgICAg
ICAgIHdpbGwgYmUgZGlzcGxheWVkIGluIHJlZC4KQEAgLTY5Niw3ICs5NzMsNyBAQAogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMjg5CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgotICAgICAgICAKKwogICAgICAgICBDYWNoZSB0
aGUgc3RhZ2Ugc2l6ZSB3aGVuIGl0IGlzIGNyZWF0ZWQgaW5zdGVhZCBvZiByZXF1ZXN0aW5nIGV2
ZXJ5IHRpbWUKICAgICAgICAgYW4gb2JqZWN0IGlzIGFkZGVkIHZpYSBjbGllbnRXaWR0aCBhbmQg
Y2xpZW50SGVpZ2h0LgogCkBAIC03MjAsMTQgKzk5NywxNCBAQAogICAgICAgICBBZGQgImRlZmVy
IiBiYWNrIHdoZW4gbG9hZGluZyByZXNvdXJjZXMvYW5pbW9tZXRlci5qcyBzaW5jZSB0aGlzIHNj
cmlwdAogICAgICAgICBkZXBlbmRzIG9uIG1hbnkgb3RoZXIgc2NyaXB0cyBhbmQgd2UgbmVlZCB0
byB3YWl0IHRpbGwgdGhlIHBhZ2UgaXMgcGFyc2VkLgogICAgICAgICBBbHNvIGNoYW5nZSB0aGUg
ZGVmYXVsdCB0ZXN0IGludGVydmFsIHRvIGJlIDEwIHNlY29uZHMuCi0gICAgICAgIAorCiAgICAg
ICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dyYXBoLmpzOgogICAgICAgICAoZ3Jh
cGgpOiBNYWtlIHRoZSB0ZXN0IHJlc3VsdHMgY3VydmVzIHNtb290aGVyLgotICAgICAgICAKKwog
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanM6CiAgICAgICAgIChB
bmltYXRvcik6IEluaXRpYWxpemUgdGhlIEthbG1hbiBmaWx0ZXIgd2l0aCA2MCBGUFMgd2hpY2gg
c2hvdWxkIGJlIHRydWUKICAgICAgICAgaWYgdGhlIHRlc3QgcGFnZSBpcyBlbXB0eS4KLSAgICAg
ICAgCisKICAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlKToKICAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzOgogICAgICAgICAoS2FsbWFuRXN0aW1h
dG9yKTogRml4IHRoZSBpbml0aWFsIHZhbHVlIG9mIF92ZWNYX2VzdC4KQEAgLTczOCw3ICsxMDE1
LDcgQEAKIAogMjAxNS0xMS0wNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgogCi0gICAgICAgIFJlbW92ZSAiZGVmZXIiIGZyb20gdGhlIHNjcmlwdHMnIHJlZmVy
ZW5jZXMgaW4gdGhlIGdyYXBoaWNzIGJlbmNobWFyayBob21lIHBhZ2UgCisgICAgICAgIFJlbW92
ZSAiZGVmZXIiIGZyb20gdGhlIHNjcmlwdHMnIHJlZmVyZW5jZXMgaW4gdGhlIGdyYXBoaWNzIGJl
bmNobWFyayBob21lIHBhZ2UKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MDkxNQogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KQEAg
LTc2MywxMyArMTA0MCwxMyBAQAogICAgICAgICBmcmFtZSByYXRlIHdpbGwgYWxzbyBiZSBtZWFz
dXJlZC4KIAogICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbDogQWRk
IGEgbmV3IG9wdGlvbiBmb3IgdGhlIG5vbi1hZGFwdGl2ZSBtb2RlLgotICAgICAgICAKKwogICAg
ICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzczoKICAgICAg
ICAgKHNlY3Rpb24jaG9tZSBpbnB1dFt0eXBlPSJudW1iZXIiXSk6IERlZmluZSB0aGUgd2lkdGgg
b2YgYWxsIHRoZSBlZGl0IGNvbnRyb2wgaW4gdGhlIDxob21lPiBzZWN0aW9uLgogICAgICAgICAo
c2VjdGlvbiNob21lID4gc3VpdGVzIGlucHV0W3R5cGU9Im51bWJlciJdKTogVGhlIGVkaXQgY29u
dHJvbHMgaW4gdGhlIDxzdWl0ZXM+IGJveCB3aWxsIGJlIHJpZ2h0IGFsaWduZWQgYW5kIGhpZGRl
biBieSBkZWZhdWx0LgogICAgICAgICAoc2VjdGlvbiNob21lID4gc3VpdGVzIGlucHV0W3R5cGU9
Im51bWJlciJdLnNlbGVjdGVkKTogV2hlbiB0aGUgY2xhc3MgInNlbGVjdGVkIiBpcyBhZGRlZCwg
dGhlIGVkaXQgY29udHJvbHMgd2lsbCBiZSB2aXNpYmxlLgogICAgICAgICAoc2VjdGlvbiNob21l
ID4gb3B0aW9ucyA+IGxhYmVsID4gaW5wdXRbdHlwZT0ibnVtYmVyIl0pOiBEZWxldGVkLgotICAg
ICAgICAKKwogICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVy
LmpzOgogICAgICAgICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC5kaWRGaW5pc2hMYXN0
SXRlcmF0aW9uKTogVXBkYXRlIHRoZSBsb2NhbCBzdG9yYWdlIHdpdGggdGhlIHJlc3VsdHMgb2Yg
ZWFjaCB0ZXN0LgogICAgICAgICAod2luZG93Lm9wdGlvbnNNYW5hZ2VyLl9hZGFwdGl2ZVRlc3RF
bGVtZW50KTogUmV0dXJucyB0aGUgY2hlY2tib3ggZm9yIHNldHRpbmcgdGhlIGFkYXB0aXZlIHRl
c3Qgb3B0aW9uLgpAQCAtNzgzLDggKzEwNjAsOCBAQAogICAgICAgICAod2luZG93LnN1aXRlc01h
bmFnZXIudXBkYXRlTG9jYWxTdG9yYWdlRnJvbUpTT04pOiBTYXZlcyB0aGUgbGFzdCBydW4gcmVz
dWx0cyB0byB0aGUgbG9jYWwgc3RvcmFnZS4KICAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDb250
cm9sbGVyLmluaXRpYWxpemUpOiBTaG93cy9IaWRlcyB0aGUgdGVzdCBlZGl0IGNvbnRyb2xzIGJh
c2VkIG9uIHRoZSBhZGFwdGl2ZSB0ZXN0IG9wdGlvbi4KICAgICAgICAgKHdpbmRvdy5iZW5jaG1h
cmtDb250cm9sbGVyLm9uQ2hhbmdlQWRhcHRpdmVUZXN0Q2hlY2tib3gpOiBBbiBvbmNoYW5nZSBl
dmVudCBoYW5kbGVyIGZvciB0aGUgYWRhcHRpdmUgdGVzdCBjaGVja2JveC4KLSAgICAgICAgCi0g
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qczogCisKKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzOgogICAgICAgICAoQmVuY2htYXJr
LnByb3RvdHlwZS51cGRhdGUpOiBGaXggdGhlIGNvbXBsZXhpdHkgb2YgdGhlIHRlc3QgaWYgdGhl
IHJ1bm5pbmcgbW9kZSBpcyBub24tYWRhcHRpdmUgdGVzdCBhbmQgZGVzaXJlZCBjb21wbGV4aXR5
IGlzIG5vdCB6ZXJvLgogICAgICAgICAod2luZG93LnJ1bkJlbmNobWFyayk6IEFkZCB0aGUgdGVz
dCBjb21wbGV4aXR5IGFzIGEgbmV3IGJlbmNobWFyayBvcHRpb24uCiAKQEAgLTc5NCwxMyArMTA3
MSwxMyBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUwNTMwCiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0gICAgICAgIAorCiAg
ICAgICAgIFdlIHdhbnQgdG8gc2V0IHRoZSBzaXplIG9mIHRoZSBiZW5jaG1hcmsgc3RhZ2UgZHlu
YW1pY2FsbHkgc3VjaCB0aGF0IGl0Ci0gICAgICAgIGRlcGVuZHMgb24gdGhlIHNjcmVlbiByZXNv
bHV0aW9uIGFuZCB0aGUgZGV2aWNlIHNjYWxlIGZhY3Rvci4gVGhpcyBwYXRjaCAKKyAgICAgICAg
ZGVwZW5kcyBvbiB0aGUgc2NyZWVuIHJlc29sdXRpb24gYW5kIHRoZSBkZXZpY2Ugc2NhbGUgZmFj
dG9yLiBUaGlzIHBhdGNoCiAgICAgICAgIGRvZXMgbW9yZSB0aGFuIHRoYXQgYmVjYXVzZSB0aGUg
aG9tZSBwYWdlIGNzcyB3YXMgbm90IGRvbmUgcHJvcGVybHkuIFRvCiAgICAgICAgIHVzZSB0aGUg
ZmxleCBib3ggbGF5b3V0LCB0aGUgYW5pbW9tZXRlci5jc3MgaGFzIHRvIGJlIHJld3JpdHRlbiBh
bG1vc3QgZnJvbQogICAgICAgICBzY3JhdGNoLiBUaGUgc3VpdGVzIHRyZWUgaGFzIHRvIGJlIHJl
d3JpdHRlbiBhbHNvIGJlY2F1c2UgaXQgd2FzIG5vdCBjb2xsYXBzaW5nCi0gICAgICAgIGFuZCB3
aXRoIHRoZSBmbGV4IGJveCBsYXlvdXQgaXQgd2FzIGdvaW5nIG91dHNpZGUgb2YgdGhlIHdpbmRv
dyBhcmVhLiBUaGUgCisgICAgICAgIGFuZCB3aXRoIHRoZSBmbGV4IGJveCBsYXlvdXQgaXQgd2Fz
IGdvaW5nIG91dHNpZGUgb2YgdGhlIHdpbmRvdyBhcmVhLiBUaGUKICAgICAgICAgb3B0aW9ucyBo
YW5kbGluZyBhbmQgdGhlIGxvY2FsIHN0b3JhZ2UgaGFuZGxpbmcgaGFkIHRvIGJlIHJld3JpdHRl
biB0bwogICAgICAgICBhbGxvdyBtb3JlIGZsZXhpYmlsaXR5IHdpdGggdGhpcyBwYXRjaCBhbmQg
dGhlIGZ1dHVyZSBwYXRjaGVzLiBUaGUgY29kZQogICAgICAgICBpbiBhbmltb21ldGVyLmpzIHdh
cyByZW9yZ2FuaXplZCBpbnRvIG9iamVjdHMgdG8gYWxsb3cgZGlzdHJpYnV0aW5nIHRoZSBjb2Rl
CkBAIC04MTEsMzAgKzEwODgsMzAgQEAKICAgICAgICAgKEluc2V0cy5wcm90b3R5cGUuZ2V0IHdp
ZHRoKTogRm9sbG93IHRoZSBmdW5jdGlvbiBvcGVuaW5nIGJyYWNlIHN0eWxlIGd1aWRlbGluZXMu
CiAgICAgICAgIChJbnNldHMucHJvdG90eXBlLmdldCBoZWlnaHQpOgogICAgICAgICAoSW5zZXRz
LnByb3RvdHlwZS5nZXQgc2l6ZSk6IFJldHVybnMgdGhlIHNpemUgb2YgYW4gSW5zZXRzIGFzIGEg
UG9pbnQgb2JqZWN0LgotICAgICAgICAKKwogICAgICAgICAod2luZG93LkRvY3VtZW50RXh0ZW5z
aW9uKTogUHJvdmlkZXMgZG9jdW1lbnQgaGVscGVyIGZ1bmN0aW9ucy4gSXQgc2hvdWxkIGJlIGFz
c2FpbGFibGUgZnJvbSB0aGUgcnVubmVyIGFuZCB0aGUgdGVzdHMuCi0gICAgICAgICh3aW5kb3cu
RG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCk6IENyZWF0ZXMgYW4gSFRNTEVsZW1lbnQg
Z2l2ZW4gaXRzIG5hbWUsIGF0dHJpYnV0ZXMgYW5kIHBhcmVudEVsZW1lbnQuIAotICAgICAgICAo
d2luZG93LkRvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZVN2Z0VsZW1lbnQpOiBDcmVhdGVzIGFuIFNW
R0VsZW1lbnQgZ2l2ZW4gaXRzIG5hbWUsIGF0dHJpYnV0ZXMgYW5kIHBhcmVudEVsZW1lbnQgKG1v
dmVkIGZyb20gdXRpbGl0aWVzLmpzKS4gCisgICAgICAgICh3aW5kb3cuRG9jdW1lbnRFeHRlbnNp
b24uY3JlYXRlRWxlbWVudCk6IENyZWF0ZXMgYW4gSFRNTEVsZW1lbnQgZ2l2ZW4gaXRzIG5hbWUs
IGF0dHJpYnV0ZXMgYW5kIHBhcmVudEVsZW1lbnQuCisgICAgICAgICh3aW5kb3cuRG9jdW1lbnRF
eHRlbnNpb24uY3JlYXRlU3ZnRWxlbWVudCk6IENyZWF0ZXMgYW4gU1ZHRWxlbWVudCBnaXZlbiBp
dHMgbmFtZSwgYXR0cmlidXRlcyBhbmQgcGFyZW50RWxlbWVudCAobW92ZWQgZnJvbSB1dGlsaXRp
ZXMuanMpLgogICAgICAgICAod2luZG93LkRvY3VtZW50RXh0ZW5zaW9uLmluc2VydENzc1J1bGVB
ZnRlcik6IEluc2VydHMgYSBDU1MgcnVsZSBhZnRlciBhbiBleGl0aW5nIHJ1bGUgZ2l2ZW4gaXRz
IHRleHQuCi0gICAgICAgIAorCiAgICAgICAgIChSZXN1bHRzVGFibGUucHJvdG90eXBlLl9zaG93
SGVhZGVyKTogVXNlIERvY3VtZW50RXh0ZW5zaW9uIGZ1bmN0aW9ucy4KICAgICAgICAgKFJlc3Vs
dHNUYWJsZS5wcm90b3R5cGUuX3Nob3dHcmFwaCk6IFVzZSBEb2N1bWVudEV4dGVuc2lvbiBmdW5j
dGlvbnMgYW5kIGNyZWF0ZSBhIHJlYWwgYnV0dG9uIGZvciAiR3JhcGguLi4iIG9wdGlvbi4KICAg
ICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX3Nob3dKU09OKTogVXNlIERvY3VtZW50RXh0
ZW5zaW9uIGZ1bmN0aW9ucyBhbmQgY3JlYXRlIGEgcmVhbCBidXR0b24gZm9yICJKU09OLi4uIiBv
cHRpb24uCiAgICAgICAgIChPcHRpb25zKTogRGVsZXRlZC4KLSAgICAgICAgCisKICAgICAgICAg
KiBBbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWw6IFJlc3RydWN0dXJlIHRoZSBwYWdl
IHRvIHVzZSB0aGUgZmxleCBib3ggbGF5b3V0LgotICAgICAgICAKKwogICAgICAgICAqIEFuaW1v
bWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzczoKICAgICAgICAgKGh0bWwsYm9k
eSk6CiAgICAgICAgIChidXR0b24pOgotICAgICAgICAKKwogICAgICAgICAoYnV0dG9uLmxhcmdl
LWJ1dHRvbik6VGhlIGxhcmdlIGJ1dHRvbiBhcHBlYXJzIGluIHRoZSBhbmltb21ldGVyLmh0bWwu
CiAgICAgICAgIChidXR0b24ubGFyZ2UtYnV0dG9uOmFjdGl2ZSk6CiAgICAgICAgIChidXR0b24u
bGFyZ2UtYnV0dG9uOmRpc2FibGVkKToKLSAgICAgICAgCisKICAgICAgICAgKGJ1dHRvbi5zbWFs
bC1idXR0b24pOiBUaGUgc21hbGwgYnV0dG9uIGFwcGVhcnMgaW4gdGhlIHJlc3VsdHMgdGFibGUu
CiAgICAgICAgIChidXR0b24uc21hbGwtYnV0dG9uOmFjdGl2ZSk6Ci0gICAgICAgIAorCiAgICAg
ICAgICgudHJlZSk6IFRoZSB0cmVlIGNsYXNzIGlzIHVzZWQgdG8gbGlzdCB0aGUgc3VpdGVzIGFu
ZCB0aGVpciB0ZXN0cy4KICAgICAgICAgKC50cmVlIC5leHBhbmQtYnV0dG9uKTogVGhpcyBidXR0
b24gZXhwYW5kcyBhIHRyZWUgZWxlbWVudC4KICAgICAgICAgKC50cmVlIC5leHBhbmQtYnV0dG9u
IH4gdWwpOiBIaWRlIHRoZSBjaGlsZHJlbiAoPHVsPi4uLjwvdWw+KSBvZiBhIHBhcmVudCBub2Rl
IGJ5IGRlZmF1bHQuCkBAIC04NDcsMzMgKzExMjQsMzMgQEAKICAgICAgICAgKGxhYmVsLnRyZWUt
bGFiZWwpOiBTdHlsZSBmb3IgdGhlIGxhYmVscyBpbiB0aGUgdG9wIGxldmVsIG9ubHkgKHRoZSBz
dWl0ZXMgbm9kZXMgaW4gb3VyIGNhc2UpLgogICAgICAgICAobGFiZWwudHJlZS1sYWJlbDpiZWZv
cmUpOiBTdHlsZSB0aGUgdW5jaGVja2VkIGNhc2Ugb2YgdGhlIGV4cGFuZC1idXR0b24uCiAgICAg
ICAgICg6Y2hlY2tlZCB+IGxhYmVsLnRyZWUtbGFiZWw6YmVmb3JlKTogU3R5bGUgdGhlIGNoZWNr
ZWQgY2FzZSBvZiB0aGUgZXhwYW5kLWJ1dHRvbi4KLSAgICAgICAgCisKICAgICAgICAgKHRhYmxl
LnJlc3VsdHMtdGFibGUpOiBUaGUgcmVzdWx0cyB0YWJsZSBhcHBlYXJzIHdoaWxlIHJ1bm5pbmcg
dGhlIHRlc3QgYW5kIGF0IHRoZSBlbmQuCiAgICAgICAgICgucmVzdWx0cy10YWJsZSB0ZCk6CiAg
ICAgICAgICgucmVzdWx0cy10YWJsZSB0aCk6Ci0gICAgICAgIAorCiAgICAgICAgIChkaXYucmVz
dWx0cy1qc29uKTogVGhlIEpTT04gZGl2IGFwcGVhcnMgcGVyIHRlc3Qgb3IgZm9yIHRoZSB3aG9s
ZSBydW4uCi0gICAgICAgIAorCiAgICAgICAgIChtYWluKTogVGhpcyBpcyB0aGUgZmxleCBib3gg
Y29udGFpbmVyLgotICAgICAgICAKKwogICAgICAgICAoc2VjdGlvbik6IEEgc2VjdGlvbiBpcyBk
aXNwbGF5ZWQgZXhjbHVzaXZlbHkgaW5zaWRlIHRoZSA8bWFpbj4uIEl0IGlzIGhpZGRlbiBieSBk
ZWZhdWx0LgogICAgICAgICAoc2VjdGlvbi5zZWxlY3RlZCk6IFdoZW4gaXQgaXMgc2VsZWN0ZWQs
IGl0cyBsYXlvdXQgaXMgZmxleCBsYXlvdXQuCiAgICAgICAgIChzZWN0aW9uID4gZm9vdGVyKTog
VGhlIGhlYWRlciBvciB0aGUgZm9vdGVyIG9mIGEgc2VjdGlvbiBzaG91bGQgbm90IHRha2UgbW9y
ZSB0aGFuIDE1JSBvZiB0aGUgY29udGFpbmVyLgotICAgICAgICAKKwogICAgICAgICAoc2VjdGlv
biNob21lKTogVGhlIGhvbWUgc2VjdGlvbiBoYXMgPHN1aXRlcz4gYW5kIDxvcHRpb25zPiBwYXJ0
cyB0byBiZSBsYWlkIG91dCBpbiB0aGUgbWlkZGxlLgotICAgICAgICAoc2VjdGlvbiNob21lID4g
b3B0aW9ucyk6IAorICAgICAgICAoc2VjdGlvbiNob21lID4gb3B0aW9ucyk6CiAgICAgICAgIChz
ZWN0aW9uI2hvbWUgPiBzdWl0ZXMpOiBUaGUgPHN1aXRlcz4gc2hvdWxkIG5vdCB0YWtlIG1vcmUg
dGhhbiA0MCUgb2YgdGhlIHdpZHRoLgogICAgICAgICAoc2VjdGlvbiNob21lID4gb3B0aW9ucyA+
IGxhYmVsKTogVGhlIGJlbmNobWFyayB0aXRsZS4KICAgICAgICAgKHNlY3Rpb24jaG9tZSA+IGhl
YWRlciA+IGgyKTogVGhlIGJlbmNobWFyayB0aXRsZS4KICAgICAgICAgKHNlY3Rpb24jaG9tZSA+
IG9wdGlvbnMgPiBsYWJlbCA+IGlucHV0W3R5cGU9Im51bWJlciJdKTogU2V0cyB0aGUgd2lkdGgg
b2YgdGhlIG9wdGlvbiBlZGl0IGNvbnRyb2wuCi0gICAgICAgIAorCiAgICAgICAgIChzZWN0aW9u
I3J1bm5pbmcpOiBUaGUgcnVubmluZyBzZWN0aW9uIGNvbnRhaW4gdGhlIHJ1bm5lciA8aWZyYW1l
PiB3aGljaCB0YWtlcyB0aGUgd2hvbGUgYXJlYSBvZiB0aGUgPG1haW4+LgogICAgICAgICAoc2Vj
dGlvbiNydW5uaW5nID4gI3J1bm5pbmctdGVzdCk6IFRoaXMgaXMgdGhlIDxpZnJhbWU+IGNvbnRh
aW5lci4KICAgICAgICAgKHNlY3Rpb24jcnVubmluZyA+ICNydW5uaW5nLXRlc3QgPiBpZnJhbWUp
OiBUaGUgPGlmcmFtZT4gaXMgY3JlYXRlZCBieSB0aGUgcnVubmVyIGZvciBlYWNoIHRlc3QuCiAg
ICAgICAgIChzZWN0aW9uI3J1bm5pbmcgPiAjcHJvZ3Jlc3MpOiBUaGlzIGlzIHRoZSBwcm9ncmVz
cyBiYXIuCiAgICAgICAgIChzZWN0aW9uI3J1bm5pbmcgPiAjcHJvZ3Jlc3MgPiAjcHJvZ3Jlc3Mt
Y29tcGxldGVkKTogVGhpcyBpcyBhbm90aGVyIGVsZW1lbnQgd2hpY2ggZ3Jvd3Mgd2hpbGUgdGhl
IHJ1bm5lciBpcyBwcm9ncmVzc2luZy4KICAgICAgICAgKHNlY3Rpb24jcnVubmluZyA+ICNyZWNv
cmQpOiBUaGlzIHRoZSBjb250YWluZXIgb2YgdGhlIHJlY29yZCByZXN1bHRzIHRhYmxlIHdoaWNo
IGlzIHNob3duIHdoaWxlIHJ1bm5pbmcgYSB0ZXN0LgotICAgICAgICAKKwogICAgICAgICAoc2Vj
dGlvbiNyZXN1bHRzKToKICAgICAgICAgKHNlY3Rpb24janNvbik6CiAgICAgICAgIChzZWN0aW9u
I3Rlc3QtanNvbik6CkBAIC04ODMsMTMgKzExNjAsMTMgQEAKICAgICAgICAgKHNlY3Rpb24janNv
biA+IGRhdGEpOgogICAgICAgICAoc2VjdGlvbiN0ZXN0LWpzb24gPiBkYXRhKToKICAgICAgICAg
KHNlY3Rpb24jdGVzdC1ncmFwaCA+IGRhdGEpOiBUaGUgPGRhdGE+IGVsZW1lbnQgc2hvdWxkIHRh
a2UgNzAlIG9mIHRoZSA8c2VjdGlvbj4uCi0gICAgICAgIAorCiAgICAgICAgIChzZWN0aW9uI3Rl
c3QtZ3JhcGggPiBkYXRhID4gc3ZnKToKICAgICAgICAgKC5heGlzIGxpbmUpOgogICAgICAgICAo
LmxlZnQtc2FtcGxlcyk6IFRoZXNlIHN0eWxlcyBhcmUgZm9yIHRoZSBkMyBncmFwaC4KLSAgICAg
ICAgCisKICAgICAgICAgKHNlY3Rpb24jdGVzdC1qc29uID4gZGF0YSk6IFRoaXMgaXMgdGhlIHN0
eWxlIG9mIHRoZSBKU09OIDxkYXRhPiBlbGVtZW50LgotICAgICAgICAKKwogICAgICAgICAoaWZy
YW1lKTogRGVsZXRlZC4KICAgICAgICAgKGxhYmVsLCBwKTogRGVsZXRlZC4KICAgICAgICAgKHNl
Y3Rpb24gPiBwKTogRGVsZXRlZC4KQEAgLTkxNywxMiArMTE5NCwxMiBAQAogICAgICAgICAoLnNh
bXBsZS10aW1lKTogRGVsZXRlZC4KICAgICAgICAgKC5sZWZ0LW1lYW4pOiBEZWxldGVkLgogICAg
ICAgICAoLnJpZ2h0LW1lYW4pOiBEZWxldGVkLgotICAgICAgICAKKwogICAgICAgICAqIEFuaW1v
bWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzOgogICAgICAgICAod2luZG93LmJl
bmNobWFya1J1bm5lckNsaWVudC5pbml0aWFsaXplKTogSW5pdGlhbGl6ZSB0aGUgY2xpZW50IG9i
amVjdCB3aXRoIHRoZSBvcHRpb25zIGFuZCB0aGUgc3VpdGVzLgogICAgICAgICAod2luZG93LmJl
bmNobWFya1J1bm5lckNsaWVudC53aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbik6IFVzZSBuZXcgY3Nz
IHNlbGVjdG9ycyBmb3IgcmVzdWx0cyBhbmQgdGhlIHJlY29yZCB0YWJsZS4KICAgICAgICAgKHdp
bmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQuZGlkRmluaXNoTGFzdEl0ZXJhdGlvbik6IE1vdmUg
dGhlIGNvZGUgd2hpY2ggc2V0cyB0aGUgSlNPTiB0ZXh0IHRvIHNlY3Rpb25zTWFuYWdlci5zaG93
SlNPTigpLgotICAgICAgICAKKwogICAgICAgICAod2luZG93LnNlY3Rpb25zTWFuYWdlcik6IFJl
c3BvbnNpYmxlIG9mIG1hbmFnaW5nIHRoZSA8c2VjdGlvbj5zIGVsZW1lbnRzIGluc2lkZSBhbmlt
b21ldGVyLmh0bWwuCiAgICAgICAgICh3aW5kb3cuc2VjdGlvbnNNYW5hZ2VyLl9zZWN0aW9uSGVh
ZGVySDFFbGVtZW50KTogUmV0dXJuIHRoZSA8aDE+IGluc2lkZSB0aGUgPGhlYWRlcj4gb2YgYSBn
aXZlbiBzZWN0aW9uLgogICAgICAgICAod2luZG93LnNlY3Rpb25zTWFuYWdlci5fc2VjdGlvbkRh
dGFEaXZFbGVtZW50KTogUmV0dXJuIHRoZSA8ZGl2PiBpbnNpZGUgdGhlIDxkYXRhPiBvZiBhIGdp
dmVuIHNlY3Rpb24uCkBAIC05MzIsMTIgKzEyMDksMTIgQEAKICAgICAgICAgKHdpbmRvdy5zZWN0
aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24pOiBTaG93cyBhIHNwZWNpZmljIDxzZWN0aW9uPiBpbiB0
aGUgPG1haW4+IGNvbnRhaW5lci4KICAgICAgICAgKHdpbmRvdy5zZWN0aW9uc01hbmFnZXIuc2V0
dXBTZWN0aW9uU3R5bGUpOiBTZXRzIGNzcyBhdHRyaWJ1dGVzIGZvciBhbGwgdGhlIDxzZWN0aW9u
PnMuCiAgICAgICAgICh3aW5kb3cuc2VjdGlvbnNNYW5hZ2VyLnNldHVwUnVubmluZ1NlY3Rpb25T
dHlsZSk6IFNldHMgdGhlIGNzcyBhdHRyaWJ1dGVzIGZvciB0aGUgcnVubmluZyA8c2VjdGlvbj4g
b25seS4KLSAgICAgICAgCisKICAgICAgICAgKHdpbmRvdy5vcHRpb25zTWFuYWdlcik6IFJlc3Bv
bnNpYmxlIG9mIG1hbmFnaW5nIHRoZSB1c2VyIG9wdGlvbnMgYW5kIHN0cmVhbWluZyB0aGVtIHRv
L2Zvcm0gdGhlIGxvY2FsU3RvcmFnZS4KICAgICAgICAgKHdpbmRvdy5vcHRpb25zTWFuYWdlci5f
b3B0aW9uc0VsZW1lbnRzKTogUmV0dXJucyB0aGUgY2hpbGRyZW4gPGlucHV0PiBlbGVtZW50cyBv
ZiB0aGUgPG9wdGlvbnM+LgogICAgICAgICAod2luZG93Lm9wdGlvbnNNYW5hZ2VyLnVwZGF0ZVVJ
RnJvbUxvY2FsU3RvcmFnZSk6IFJlc3RvcmUgdGhlIHZhbHVlcyBvZiB0aGUgPG9wdGlvbnM+IFVJ
IGVsZW1lbnRzIGZyb20gdGhlIGxvY2FsIHN0b3JhZ2UuCiAgICAgICAgICh3aW5kb3cub3B0aW9u
c01hbmFnZXIudXBkYXRlTG9jYWxTdG9yYWdlRnJvbVVJKTogU2F2ZXMgdGhlIHZhbHVlcyBvZiB0
aGUgPG9wdGlvbnM+IFVJIGVsZW1lbnRzIHRvIHRoZSBsb2NhbCBzdG9yYWdlLgotICAgICAgICAK
KwogICAgICAgICAod2luZG93LnN1aXRlc01hbmFnZXIpOiBSZXNwb25zaWJsZSBvZiBtYW5hZ2lu
ZyB0aGUgdXNlciBzdWl0ZXMgYW5kIHN0cmVhbWluZyB0aGVtIHRvL2Zvcm0gdGhlIGxvY2FsU3Rv
cmFnZS4KICAgICAgICAgKHdpbmRvdy5zdWl0ZXNNYW5hZ2VyLl90cmVlRWxlbWVudCk6IFJldHVy
bnMgdGhlIHN1aXRlcyB0cmVlIGNvbnRhaW5lciBlbGVtZW50LgogICAgICAgICAod2luZG93LnN1
aXRlc01hbmFnZXIuX3N1aXRlc0VsZW1lbnRzKTogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIHN1aXRl
cyBlbGVtZW50cy4KQEAgLTk1Miw3ICsxMjI5LDcgQEAKICAgICAgICAgKHdpbmRvdy5zdWl0ZXNN
YW5hZ2VyLmNyZWF0ZUVsZW1lbnRzKTogQ3JlYXRlcyB0aGUgc3VpdGVzIHRyZWUgZHluYW1pY2Fs
bHkgZnJvbSB0aGUgYXJyYXkgU3VpdGVzLgogICAgICAgICAod2luZG93LnN1aXRlc01hbmFnZXIu
dXBkYXRlVUlGcm9tTG9jYWxTdG9yYWdlKTogUmVzdG9yZSB0aGUgdmFsdWVzIG9mIHRoZSA8c3Vp
dGVzPiBVSSBlbGVtZW50cyBmcm9tIHRoZSBsb2NhbCBzdG9yYWdlLgogICAgICAgICAod2luZG93
LnN1aXRlc01hbmFnZXIudXBkYXRlTG9jYWxTdG9yYWdlRnJvbVVJKTogYXZlcyB0aGUgdmFsdWVz
IG9mIHRoZSA8c3VpdGVzPiBVSSBlbGVtZW50cyB0byB0aGUgbG9jYWwgc3RvcmFnZS4KLSAgICAg
ICAgCisKICAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDb250cm9sbGVyKTogVGhpcyBpcyB0aGUg
VUkgY29udHJvbGxlciBvZiB0aGUgYW5pbW9tZXRlci5odG1sIHBhZ2UuCiAgICAgICAgICh3aW5k
b3cuYmVuY2htYXJrQ29udHJvbGxlci5pbml0aWFsaXplKTogQ2FsbGVkIHdoZW4gdGhlIGFuaW1v
bWV0ZXIuaHRtbCBwYWdlIGlzIGxvYWRlZC4KICAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDb250
cm9sbGVyLl9ydW5CZW5jaG1hcmspOiBTdGFydHMgYSBiZW5jaG1hcmsgcnVuLgpAQCAtOTYxLDcg
KzEyMzgsNyBAQAogICAgICAgICAod2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIuc2hvd0pzb24p
OiBDYWxsZWQgZnJvbSB0aGUgcmVzdWx0cyBwYWdlIHRvIHNob3cgdGhlIEpTT04gb2YgdGhlIGxh
c3QgYmVuY2htYXJrIHJ1bi4KICAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDb250cm9sbGVyLnNo
b3dUZXN0R3JhcGgpOiBDYWxsZWQgZnJvbSB0aGUgcmVzdWx0cyB0aGUgdGFibGUgdG8gc2hvdyBh
IGdyYXBoIGZvciB0aGUgc2FtcGxlcyBvZiBhIHNwZWNpZmljIHRlc3QuCiAgICAgICAgICh3aW5k
b3cuYmVuY2htYXJrQ29udHJvbGxlci5zaG93VGVzdEpTT04pOiBDYWxsZWQgZnJvbSB0aGUgcmVz
dWx0cyB0aGUgdGFibGUgdG8gc2hvdyBhIEpTT04gZm9yIHRoZSBzYW1wbGVzIG9mIGEgc3BlY2lm
aWMgdGVzdC4KLSAgICAgICAgCisKICAgICAgICAgKHNob3dTZWN0aW9uKTogRGVsZXRlZC4KICAg
ICAgICAgKHN0YXJ0VGVzdCk6IERlbGV0ZWQuCiAgICAgICAgIChzaG93UmVzdWx0cyk6IERlbGV0
ZWQuCkBAIC05NzYsNyArMTI1Myw3IEBACiAgICAgICAgIChsb2NhbFN0b3JhZ2VOYW1lRm9yVGVz
dCk6IERlbGV0ZWQuCiAgICAgICAgIChwb3B1bGF0ZVNldHRpbmdzLik6IERlbGV0ZWQuCiAgICAg
ICAgIChwb3B1bGF0ZVNldHRpbmdzKTogRGVsZXRlZC4KLSAgICAgICAgCisKICAgICAgICAgKiBB
bmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qczoKICAgICAgICAg
KEJlbmNobWFya1J1bm5lcik6IFBhc3MgdGhlIGZyYW1lQ29udGFpbmVyIGVsZW1lbnQgdG8gdGhl
IEJlbmNobWFya1J1bm5lci4KICAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX2Fw
cGVuZEZyYW1lKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIgdW53YW50ZWQgc3R5bGluZyBjb2Rl
LgpAQCAtOTg0LDE3ICsxMjYxLDE3IEBACiAKICAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9y
ZXNvdXJjZXMvZ3JhcGguanM6CiAgICAgICAgIChncmFwaCk6IENhbGN1bGF0ZSB0aGUgc2l6ZSBv
ZiB0aGUgY2hhcnQgZnJvbSB0aGUgY29udGFpbmVyIGVsZW1lbnQuCi0gICAgICAgIAorCiAgICAg
ICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLXN2Zy1pbWFnZXMuanM6CiAgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlKToKICAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmct
c3ZnLXBhcnRpY2xlcy5qczoKICAgICAgICAgKEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJv
dG90eXBlLl9jcmVhdGVEZWZzKToKLSAgICAgICAgKEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2Uu
cHJvdG90eXBlLl9jcmVhdGVDbGlwU3Rhcik6ICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nU3Zn
UGFydGljbGVzU3RhZ2UucHJvdG90eXBlLl9jcmVhdGVDbGlwU3Rhcik6CiAgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1z
aGFwZXMuanM6CiAgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5fY3JlYXRlU2hh
cGUpOgogICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlR3Jh
ZGllbnQpOgogICAgICAgICBDYWxsIERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZVN2Z0VsZW1lbnQo
KSBpbnN0ZWFkIG9mIGNhbGxpbmcgVXRpbGl0aWVzLmNyZWF0ZVN2Z0VsZW1lbnQoKS4KLSAgICAg
ICAgCisKICAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzOgogICAg
ICAgICAoQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOgogICAgICAgICAoQmVuY2htYXJrKToK
QEAgLTEwMDIsMTAgKzEyNzksMTAgQEAKICAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291
cmNlcy9zdGFnZS5qczoKICAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5zaG93UmVz
dWx0cyk6CiAgICAgICAgIFJlbmFtZSB0aGUgb3B0aW9ucyB0byBtYXRjaCB0aGUgPGlucHV0PiBp
ZHMgaW4gYW5pbW9tZXRlci5odG1sLgotICAgICAgICAKKwogICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvcmVzb3VyY2VzL3V0aWxpdGllcy5qczoKICAgICAgICAgKHdpbmRvdy5VdGlsaXRpZXMu
Y3JlYXRlU3ZnRWxlbWVudCk6IERlbGV0ZWQuCi0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbDoKICAgICAgICAgKiBBbmltb21ldGVy
L3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanM6CiAgICAgICAgIChMYXllcmlu
Z1RleHRTdGFnZSk6CkBAIC0xMDE3LDcgKzEyOTQsNyBAQAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjk4CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
VGltIEhvcnRvbi4KLSAgICAgICAgCisKICAgICAgICAgVGhlIGV4aXN0aW5nIGNvZGUgaW5jcmVt
ZW50ZWQgdGhpcy5fZnJhbWVDb3VudCBhZnRlciBjaGVja2luZyBhZ2FpbnN0IHRoaXMuX2Ryb3BG
cmFtZUNvdW50LgogICAgICAgICBUaGlzIGhhcyB0aGUgZWZmZWN0IG9mIHNldHRpbmcgdGhpcy5f
bWVhc3VyZVRpbWVPZmZzZXQgb25lIGZyYW1lIHRvbyBsYXRlLCBzbwogICAgICAgICB3ZSB3ZXJl
IG1lYXN1cmluZyBvbmx5IHR3byBmcmFtZXMsIG5vdCB0aHJlZSwgYW5kIHRodXMgY29tcHV0aW5n
IGFuIGluY29ycmVjdCBmcHMuCkBAIC0xMDgyLDggKzEzNTksOCBAQAogICAgICAgICAoUmVjb3Jk
VGFibGUucHJvdG90eXBlLl9zaG93VGVzdCk6IFNob3dzIHRoZSByZXN1bHRzIG9mIGEgc2luZ2xl
IHRlc3QuCiAgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dTdWl0ZSk6IFNob3dz
IHRoZSByZXN1bHRzIG9mIGEgc2luZ2xlIHN1aXRlLgogICAgICAgICAoUmVjb3JkVGFibGUucHJv
dG90eXBlLnNob3dSZWNvcmQpOiBTaG93cyBhIHNpbmdsZSBpdGVyYXRpb24gZm9yIGEgc2luZ2xl
IHRlc3QuCi0gICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuc2hvd0l0ZXJhdGlvbnMpOiBT
aG93cyB0aGUgcmVzdWx0cyBvZiBhbGwgdGhlIHN1aXRlcyBvZiB0aGUgaXRlcmF0aW9ucy4gCi0g
ICAgICAgIAorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLnNob3dJdGVyYXRpb25zKTog
U2hvd3MgdGhlIHJlc3VsdHMgb2YgYWxsIHRoZSBzdWl0ZXMgb2YgdGhlIGl0ZXJhdGlvbnMuCisK
ICAgICAgICAgKFJlc3VsdHNUYWJsZSk6IFJlY29yZFRhYmxlIHdhcyByZW5hbWVkIHRvIFJlc3Vs
dHNUYWJsZS4KICAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuY2xlYXIpOiBDbGVhcnMg
dGhlIHRhYmxlIGVsZW1lbnQuCiAgICAgICAgIChSZXN1bHRzVGFibGUucHJvdG90eXBlLl9zaG93
SGVhZGVyUm93KTogU2hvd3MgYSByb3cgaW4gdGhlIHJlc3VsdHMgdGFibGUgaGVhZGVyLgpAQCAt
MTEwOSwyMiArMTM4NiwyMiBAQAogICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93
U3VpdGUpOiBEZWxldGVkLgogICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLnNob3dSZWNv
cmQpOiBEZWxldGVkLgogICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLnNob3dJdGVyYXRp
b25zKTogRGVsZXRlZC4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNl
cy9zYW1wbGVyLmpzOgogICAgICAgICAoU2FtcGxlci5wcm90b3R5cGUuc3RhcnRTYW1wbGluZyk6
IFVzZSBmb3JFYWNoLgogICAgICAgICAoU2FtcGxlci5wcm90b3R5cGUuc2FtcGxlKTogVXNlIGZv
ckVhY2guCiAgICAgICAgIChTYW1wbGVyLnByb3RvdHlwZS50b0pTT04pOiBDb252ZXJ0cyB0aGUg
c2FtcGxlciBkYXRhIHRvIEpTT04gZm9ybWF0LgotICAgICAgICAKKwogICAgICAgICAqIEFuaW1v
bWV0ZXIvcmVzb3VyY2VzL3N0cmluZ3MuanM6IEFkZGVkLgogICAgICAgICBUaGlzIG5ldyBmaWxl
IHdpbGwgYmUgdXNlZCB0byBhc3NvY2lhdGUgdGhlIHN0cmluZ3MgdXNlZCBieSB0aGUgYmVuY2ht
YXJrCiAgICAgICAgIHdpdGggSURzLiBBIHN0cmluZyBjYW4gYmUgY2hhbmdlZCBpbiBvbmUgcGxh
Y2Ugd2l0aG91dCBoYXZpbmcgdG8gY2hhbmdlCiAgICAgICAgIGFsbCB0aGUgaW5zdGFuY2VzIG9m
IHRoaXMgc3RyaW5nIGluIG11bHRpcGxlIGZpbGVzLiBUaGVyZSB0d28gZ3JvdXBzIG9mCiAgICAg
ICAgIHN0cmluZ3MgaW4gdGhpcyBmaWxlLiBUaGUgZmlyc3Qgb25lIGlzIHVzZWQgYnkgdGhlIFVJ
IGVsZW1lbnRzIGFuZCB0aGUgc2Vjb25kCiAgICAgICAgIGdyb3VwIGlzIHVzZWQgd2hlbiBjb25z
dHJ1Y3RpbmcgdGhlIHJlc3VsdHMgSlNPTi4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21l
dGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWw6CiAgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIv
cmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzOgotICAgICAgICAKKwogICAgICAgICAqIEFuaW1vbWV0
ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzOgogICAgICAgICAod2luZG93LmJlbmNo
bWFya1J1bm5lckNsaWVudC53aWxsQWRkVGVzdEZyYW1lKToKICAgICAgICAgKHdpbmRvdy5iZW5j
aG1hcmtSdW5uZXJDbGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24pOgpAQCAtMTEzMywyMCAr
MTQxMCwyMCBAQAogICAgICAgICBNYWtlIGJlbmNobWFya1J1bm5lckNsaWVudCB1c2VzIFJlc3Vs
dHNEYXNoYm9hcmQgaW5zdGVhZCBvZiBfaXRlcmF0aW9uc1NhbXBsZXJzCiAgICAgICAgIEdldCB0
aGUgSlNPTiBmcm9tIFJlc3VsdHNEYXNoYm9hcmQudG9KU09OKCkgYW5kIHBhc3MgaXQgdG8gUmVz
dWx0c1RhYmxlLnNob3dJdGVyYXRpb25zKCkuCiAgICAgICAgIEFsc28gc2V0IHRoZSB0ZXh0Q29u
dGVudCBvZiB0aGUgIiNqc29uIiB0ZXh0YXJlYSB3aXRoIHRoZSByZXN1bHRzIEpTT04uCi0gICAg
ICAgIAorCiAgICAgICAgIChzaG93UmVzdWx0cyk6IERlbGV0ZSB1bm5lZWRlZCBjb2RlLgogICAg
ICAgICAoc2hvd0pzb24pOiBTaG93cyB0aGUgImpzb24iIHNlY3Rpb24uCiAgICAgICAgIChzaG93
VGVzdEdyYXBoKTogUmVuYW1lIHNob3dHcmFwaCgpIHRvIGJlIHNob3dUZXN0R3JhcGgoKS4KICAg
ICAgICAgKHNob3dUZXN0SlNPTik6IFNob3dzIHRoZSBKU09OIG9mIGEgc2luZ2xlIHRlc3RSZXN1
bHRzLgogICAgICAgICAoc2hvd0dyYXBoKTogRGVsZXRlZC4KLSAgICAgICAgCisKICAgICAgICAg
KiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanM6CiAgICAgICAgIFVzZSB0aGUg
c3RyaW5nIHRhYmxlIGluc3RlYWQgb2YgcHV0dGluZyBsaXRlcmFsIHN0cmluZ3MuCiAKICAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qczoKICAgICAgICAgKFN0YWdl
QmVuY2htYXJrLnByb3RvdHlwZS5zaG93UmVzdWx0cyk6CiAgICAgICAgIEZpeCB0aGUgcGFyYW1l
dGVycyB3aGljaCBhcmUgcGFzc2VkIHRvIFJlY29yZFRhYmxlLnNob3dSZWNvcmQoKS4KLSAgICAg
ICAgCisKICAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1jYW52YXMtaW1hZ2VzLmh0bWw6CiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sOgogICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRt
bDoKQEAgLTE0NjUsMTEgKzE3NDIsMTEgQEAKICAgICAgICAgVGhpcyBkaXJlY3RvcnkgaW5jbHVk
ZXMgYWxsIHRoZSB0ZXN0IHN1aXRlcyB0byBiZSBydW4gYnkgdGhlIGJlbmNobWFyay4KICAgICAg
ICAgcnVubmVyLiBBbGwgdGhlIHRlc3RzIHNob3VsZCB0cnkgdG8gcnVuIG9uIHRocmVlIHN0YWdl
czogQ1NTLCBjYW52YXMgYW5kCiAgICAgICAgIFNWRy4KLSAgICAgICAgCisKICAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlczogQWRkZWQuCiAgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzOiBBZGRlZC4KICAgICAg
ICAgVGhlIGJvdW5jaW5nIHBhcnRpY2xlcyB0ZXN0IGlzIGFuIGV4YW1wbGUgb2YgYSBzaW1wbGUg
YW5pbWF0aW9uIHRlY2huaXF1ZS4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw6IEFkZGVk
LgogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5n
LWNhbnZhcy1zaGFwZXMuaHRtbDogQWRkZWQuCiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sOiBBZGRlZC4KQEAgLTE0
ODIsMTUgKzE3NTksMTUgQEAKICAgICAgICAgKEJvdW5jaW5nUGFydGljbGUpOiBCYXNlIGNsYXNz
IGZvciBhIGJvdW5jaW5nIHBhcnRpY2xlLgogICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZS5wcm90
b3R5cGUuY2VudGVyKTogUmV0dXJucyB0aGUgY2VudGVyIHBvaW50IG9yIHRoZSBwYXJ0aWNsZS4K
ICAgICAgICAgKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUpOiBNb3ZlcyB0aGUg
cGFydGljbGUgYmFzZWQgb24gaXRzIGN1cnJlbnQgcG9zaXRpb24sIGFuZ2xlIGFuZCB2ZWxvY2l0
eS4KLSAgICAgICAgCisKICAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IpOiBBIHN1
YiBjbGFzcyBvZiBBbmltYXRvci4KLSAgICAgICAgCisKICAgICAgICAgKEJvdW5jaW5nUGFydGlj
bGVzU3RhZ2UpOiBSZXByZXNlbnRzIHRoZSBjb250YWluZXIgb2YgYWxsIHRoZSBib3VuY2luZyBw
YXJ0aWNsZXMuCiAgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5wYXJz
ZVNoYXBlUGFyYW10ZXJzKTogR2V0cyB0aGUgc2hhcGUgcGFyYW1ldGVycyBmb3Igc2hhcGUgYW5p
bWF0aW5nIHRlc3RzLgogICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUu
cmFuZG9tUm90YXRlcik6IENyZWF0ZXMgYSByb3RhdGVyIGZvciB0aGUgcGFydGljbGVzLgogICAg
ICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IEFuaW1hdGVz
IGFsbCB0aGUgcGFydGljbGVzLgogICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90
b3R5cGUudHVuZSk6IENoYW5nZXMgdGhlIHRlc3QgYnkgYWRkaW5nIG9yIHJlbW92aW5nIHBhcnRp
Y2xlcy4KLSAgICAgICAgCisKICAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrKTog
UnVucyB0aGUgYmVuY2htYXJrIGZvciBib3VuY2luZyBwYXJ0aWNsZXMgdGVzdC4KICAgICAgICAg
KEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENy
ZWF0ZXMgYW4gYW5pbWF0b3Igb2YgdHlwZSBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLgogCkBA
IC0xNDk5LDUyICsxNzc2LDUyIEBACiAgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlw
ZS5fY3JlYXRlU3Bhbik6IENyZWF0ZXMgYSA8c3Bhbj4gZWxlbWVudCBhbmQgdGFrZXMgdGhlIHNo
YXBlIGFuZCBjbGlwcGluZyBjbGFzc2VzIGludG8gY29uc2lkZXJhdGlvbi4KICAgICAgICAgKEJv
dW5jaW5nQ3NzU2hhcGUucHJvdG90eXBlLl9tb3ZlKTogTW92ZXMgdGhlIHBhcnRpY2xlIHRvIGEg
bmV3IGxvY2F0aW9uLiBBcHBseSB0cmFuc2Zvcm0gc2luY2UgaXQgZG9lcyBub3QgcmVxdWlyZSBs
YXlvdXQuCiAgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlwZS5hbmltYXRlKTogUm90
YXRlcyBhbmQgbW92ZXMgdGhlIHNoYXBlIHRvIGEgbmV3IGxvY2F0aW9uLgotICAgICAgICAKKwog
ICAgICAgICAoQm91bmNpbmdDc3NTaGFwZXNTdGFnZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5n
UGFydGljbGVzU3RhZ2UgZm9yIGFuaW1hdGluZyBDU1Mgc2hhcGVzLgogICAgICAgICAoQm91bmNp
bmdDc3NTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFy
dGljbGUgb2YgdHlwZSBCb3VuY2luZ0Nzc1NoYXBlLgogICAgICAgICAoQm91bmNpbmdDc3NTaGFw
ZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkKTogUmVtb3ZlcyB0aGUgY29y
cmVzcG9uZGluZyBlbGVtZW50IGZvcm0gdGhlIHBhcmVudCBjaGlsZHJlbiBsaXN0LgotICAgICAg
ICAKKwogICAgICAgICAoQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFzcyBv
ZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayBmb3IgYW5pbWF0aW5nIENTUyBzaGFwZXMuCiAg
ICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2Up
OiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlLgogICAgICAg
ICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9m
IHR5cGUgQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsuCi0gICAgICAgIAorCiAgICAgICAgICog
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNz
cy1pbWFnZXMuanM6IEFkZGVkLgogICAgICAgICAoQm91bmNpbmdDc3NJbWFnZSk6IEEgc3ViIGNs
YXNzIG9mIEJvdW5jaW5nUGFydGljbGUgZm9yIGFuaW1hdGluZyBDU1MgaW1hZ2VzLgogICAgICAg
ICAoQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuX21vdmUpOiBNb3ZlIHRoZSBwYXJ0aWNsZSB0
byBhIG5ldyBsb2NhdGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0IGRvZXMgbm90IHJlcXVp
cmUgbGF5b3V0LgogICAgICAgICAoQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6
IFJvdGF0ZXMgYW5kIG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KLSAgICAgICAg
CisKICAgICAgICAgKEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3Vu
Y2luZ1BhcnRpY2xlc1N0YWdlIGZvciBhbmltYXRpbmcgQ1NTIGltYWdlcy4KICAgICAgICAgKEJv
dW5jaW5nQ3NzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBh
IHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdDc3NJbWFnZS4KICAgICAgICAgKEJvdW5jaW5nQ3Nz
SW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJlbW92ZXMgdGhl
IGNvcnJlc3BvbmRpbmcgZWxlbWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KLSAg
ICAgICAgCisKICAgICAgICAgKEJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrKTogQSBzdWIgY2xh
c3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBDU1MgaW1hZ2Vz
LgogICAgICAgICAoQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0
YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdDc3NJbWFnZXNTdGFnZS4KICAg
ICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFy
ayBvZiB0eXBlIEJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrLgotICAgICAgICAKKwogICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1jYW52YXMtcGFydGljbGVzLmpzOiBBZGRlZC4KICAgICAgICAgKEJvdW5jaW5nQ2FudmFzUGFy
dGljbGUpOiBBIGJhc2Ugc3ViLWNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUgZm9yIGFuaW1hdGlu
ZyBjYW52YXMgcGFydGljbGVzLgogICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90
b3R5cGUuX2FwcGx5Um90YXRpb24pOiBBcHBseSB0aGUgcGFydGljbGUgcm90YXRpb24tYXJvdW5k
LWNlbnRlciB0cmFuc2Zvcm0gdG8gdGhlIGNhbnZhcyBjb250ZXh0LgogICAgICAgICAoQm91bmNp
bmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuX2FwcGx5Q2xpcHBpbmcpOiBBcHBseSB0aGUgcGFy
dGljbGUgY2xpcHBpbmcgdG8gdGhlIGNhbnZhcyBjb250ZXh0LgogICAgICAgICAoQm91bmNpbmdD
YW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuX2RyYXcpOiBBIG5vbi1pbXBsZW1lbnRlZCB2ZXJzaW9u
IG9mIHRoZSBkcmF3aW5nIGZ1bmN0aW9uLgogICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNs
ZS5wcm90b3R5cGUuYW5pbWF0ZSk6IENhcnJpZXMgb3V0IGFsbCB0aGUgc3RlcHMgdG8gcmVkcmF3
IHRoZSBjYW52YXMgcGFydGljbGUuCi0gICAgICAgIAorCiAgICAgICAgIChCb3VuY2luZ0NhbnZh
c1BhcnRpY2xlc1N0YWdlKTogQSBiYXNlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0
YWdlIGZvciBhbmltYXRpbmcgY2FudmFzIHBhcnRpY2xlcy4KLSAgICAgICAgCisKICAgICAgICAg
KEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0b3IpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBv
ZiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yIGZvciBhbmltYXRpbmcgY2FudmFzIHBhcnRpY2xl
cy4KICAgICAgICAgKEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlLmFu
aW1hdGUpOiBPdmVycmlkZXMgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHRvIGNsZWFyIHRoZSBjYW52
YXMgYmVmb3JlIHJlZHJhd2luZyB0aGUgc3RhZ2UuCi0gICAgICAgIAorCiAgICAgICAgIChCb3Vu
Y2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyayk6IEEgYmFzZSBzdWItY2xhc3Mgb2YgU3RhZ2VC
ZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBjYW52YXMgcGFydGljbGVzLgogICAgICAgICAoQm91bmNp
bmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3Jl
YXRlcyB0aGUgY2FudmFzIHBhcnRpY2xlcyBhbmltYXRvci4KLSAgICAgICAgCisKICAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmct
Y2FudmFzLXNoYXBlcy5qczogQWRkZWQuCiAgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlKTog
QSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdDYW52YXNQYXJ0aWNsZSBmb3IgYW5pbWF0
aW5nIGNhbnZhcyBzaGFwZXMuCiAgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlw
ZS5fYXBwbHlGaWxsKTogU2V0cyB0aGUgZmlsbFN0eWxlIGluIHRoZSBjYW52YXMgY29udGV4dC4K
ICAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLl9kcmF3U2hhcGUpOiBDYXJy
aWVzIG91dCB0aGUgYWN0dWFsIGRyYXdpbmcuCiAgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBl
LnByb3RvdHlwZS5fZHJhdyk6IENhcnJpZXMgb3V0IGFsbCB0aGUgc3RlcHMgdG8gZHJhdyB0aGUg
c2hhcGUuCi0gICAgICAgIAorCiAgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlKTog
QSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdDYW52YXNQYXJ0aWNsZSBmb3IgYW5pbWF0
aW5nIGNhbnZhcyBzaGFwZXMuCiAgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlLnBy
b3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBvZiB0eXBlIEJvdW5j
aW5nQ2FudmFzU2hhcGUuCi0gICAgICAgIAorCiAgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBl
c0JlbmNobWFyayk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGlj
bGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgY2FudmFzIHNoYXBlcy4KICAgICAgICAgKEJvdW5j
aW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMg
YSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UuCiAgICAgICAgICh3aW5k
b3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBC
b3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay4KQEAgLTE1NTIsMTAgKzE4MjksMTAgQEAKICAg
ICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctY2FudmFzLWltYWdlcy5qczogQWRkZWQuCiAgICAgICAgIChCb3VuY2luZ0NhbnZhc0lt
YWdlKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdDYW52YXNQYXJ0aWNsZSBmb3Ig
YW5pbWF0aW5nIGNhbnZhcyBpbWFnZXMuCiAgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlLnBy
b3RvdHlwZS5fZHJhdyk6IERyYXdzIGFuIGltYWdlIG9uIHRoZSBjb250ZXh0IG9mIGEgY2FudmFz
LgotICAgICAgICAKKwogICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZSk6IEEgY29u
Y3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrIGZvciBh
bmltYXRpbmcgY2FudmFzIGltYWdlcy4KICAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3Rh
Z2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUg
Qm91bmNpbmdDYW52YXNJbWFnZS4KLSAgICAgICAgCisKICAgICAgICAgKEJvdW5jaW5nQ2FudmFz
SW1hZ2VzQmVuY2htYXJrKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdDYW52YXNQ
YXJ0aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBjYW52YXMgaW1hZ2VzLgogICAgICAgICAo
Qm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3Jl
YXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS4KICAgICAgICAg
KHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0
eXBlIEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLgpAQCAtMTU3NiwyMiArMTg1MywyMiBA
QAogICAgICAgICAoQm91bmNpbmdTdmdTaGFwZSk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJv
dW5jaW5nU1ZHUGFydGljbGUgZm9yIGFuaW1hdGluZyBTVkcgc2hhcGVzLgogICAgICAgICAoQm91
bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNoYXBlKTogQ3JlYXRlcyBhbiBTVkcgc2hh
cGUuCiAgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5fYXBwbHlGaWxsKTogQXBw
bGllcyB0aGUgc2VsZWN0ZWQgZmlsbCBzdHlsZSB0byB0aGUgU1ZHIHNoYXBlLgotICAgICAgICAK
KwogICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZSk6IEEgY29uY3JldGUgc3ViLWNsYXNz
IG9mIEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UgZm9yIGFuaW1hdGluZyBTVkcgc2hhcGVzLgog
ICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlR3JhZGllbnQp
OiBDcmVhdGVzIGFuIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudC4KICAgICAgICAgKEJvdW5jaW5n
U3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRp
Y2xlIG9mIHR5cGUgQm91bmNpbmdTdmdTaGFwZS4KICAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVz
U3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IEVuc3VyZXMgdGhlIGF0dGFj
aGVkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIFNWR0RlZnNF
bGVtZW50LgotICAgICAgICAKKwogICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsp
OiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayBmb3Ig
YW5pbWF0aW5nIFNWRyBpbWFnZXMuCiAgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFy
ay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2lu
Z1N2Z1NoYXBlc1N0YWdlLgogICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUp
OiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUgQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsu
Ci0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanM6IEFkZGVkLgogICAgICAgICAoQm91
bmNpbmdTdmdJbWFnZSk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nU1ZHUGFydGlj
bGUgZm9yIGFuaW1hdGluZyBTVkcgaW1hZ2VzLgotICAgICAgICAKKwogICAgICAgICAoQm91bmNp
bmdTdmdJbWFnZXNTdGFnZSk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nU1ZHUGFy
dGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgU1ZHIGltYWdlcy4KICAgICAgICAgKEJvdW5j
aW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBh
cnRpY2xlIG9mIHR5cGUgQm91bmNpbmdTdmdJbWFnZS4KLSAgICAgICAgCisKICAgICAgICAgKEJv
dW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNp
bmdQYXJ0aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBTVkcgaW1hZ2VzLgogICAgICAgICAo
Qm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRl
cyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdTdmdJbWFnZXNTdGFnZS4KICAgICAgICAgKHdpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJv
dW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLgpAQCAtMTU5OSw1MiArMTg3Niw1MiBAQAogICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXM6IEFkZGVkLgogICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sOiBBZGRlZC4KICAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1zdGFycy5odG1sOiBBZGRlZC4KLSAg
ICAgICAgRXhhbXBsZXMgdGVzdCBwYWdlcy4gCi0gICAgICAgIAorICAgICAgICBFeGFtcGxlcyB0
ZXN0IHBhZ2VzLgorCiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJj
ZXM6IEFkZGVkLgogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2Vz
L2NhbnZhcy1lbGVjdHJvbnMuanM6IEFkZGVkLgogICAgICAgICAoQ2FudmFzRWxlY3Ryb24pOiBB
biBvYmplY3Qgd2hpY2ggZHJhd3MgYW5kIGFuaW1hdGUgYSBlbGVjdHJvbiBvYmplY3Qgb24gYSBj
YW52YXMgc3RhZ2UuCiAgICAgICAgIChDYW52YXNFbGVjdHJvbi5wcm90b3R5cGUuX2RyYXcpOiBE
cmF3cyB0aGUgZWxlY3Ryb24gb2JqZWN0LgogICAgICAgICAoQ2FudmFzRWxlY3Ryb24ucHJvdG90
eXBlLmFuaW1hdGUpOiBBbmltYXRlcyB0aGUgZWxlY3Ryb24gb2JqZWN0LgotICAgICAgICAKKwog
ICAgICAgICAoQ2FudmFzRWxlY3Ryb25zU3RhZ2UpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBT
dGFnZSBmb3IgYW5pbWF0aW5nIGVsZWN0cm9ucy4KICAgICAgICAgKENhbnZhc0VsZWN0cm9uc1N0
YWdlLnByb3RvdHlwZS50dW5lKTogQ2hhbmdlcyB0aGUgdGVzdCBieSBhZGRpbmcgb3IgcmVtb3Zp
bmcgZWxlbWVudHMuCiAgICAgICAgIChDYW52YXNFbGVjdHJvbnNTdGFnZS5wcm90b3R5cGUuYW5p
bWF0ZSk6IEFuaW1hdGVzIHRoZSB0ZXN0IGVsZW1lbnRzLgotICAgICAgICAKKwogICAgICAgICAo
Q2FudmFzRWxlY3Ryb25zQW5pbWF0b3IpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBTdGFnZUFu
aW1hdG9yIGZvciBhbmltYXRpbmcgY2FudmFzIGVsZWN0cm9ucy4KICAgICAgICAgKENhbnZhc0Vs
ZWN0cm9uc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlKTogT3ZlcnJpZGVzIHRoZSBiYXNlIGNs
YXNzIG1ldGhvZCB0byBjbGVhciB0aGUgY2FudmFzIGJlZm9yZSByZWRyYXdpbmcgdGhlIHN0YWdl
LgotICAgICAgICAKKwogICAgICAgICAoQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJrKTogQSBjb25j
cmV0ZSBzdWItY2xhc3Mgb2YgU3RhZ2VCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBlbGVjdHJvbnMu
CiAgICAgICAgIChDYW52YXNFbGVjdHJvbnNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdl
KTogQ3JlYXRlcyBhIHN0YWdlIG9mIENhbnZhc0VsZWN0cm9uc1N0YWdlLgogICAgICAgICAoQ2Fu
dmFzRWxlY3Ryb25zQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0ZXMg
YW4gYW5pbWF0b3Igb2YgdHlwZSBDYW52YXNFbGVjdHJvbnNBbmltYXRvci4KICAgICAgICAgKHdp
bmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBl
IENhbnZhc0VsZWN0cm9uc0JlbmNobWFyay4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtc3RhcnMuanM6IEFkZGVkLgogICAg
ICAgICAoQ2FudmFzU3Rhcik6IEFuIG9iamVjdCB3aGljaCBkcmF3cyBhbmQgYW5pbWF0ZSBhIHN0
YXIgb2JqZWN0IG9uIGEgY2FudmFzIHN0YWdlLgogICAgICAgICAoQ2FudmFzU3Rhci5wcm90b3R5
cGUuX2RyYXcpOiBEcmF3cyB0aGUgc3RhciBvYmplY3QuCiAgICAgICAgIChDYW52YXNTdGFyLnBy
b3RvdHlwZS5hbmltYXRlKTogQW5pbWF0ZXMgdGhlIHN0YXIgb2JqZWN0LgotICAgICAgICAKKwog
ICAgICAgICAoQ2FudmFzU3RhcnNTdGFnZSk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIFN0YWdl
IGZvciBhbmltYXRpbmcgc3RhcnMuCiAgICAgICAgIChDYW52YXNTdGFyc1N0YWdlLnByb3RvdHlw
ZS50dW5lKTogQ2hhbmdlcyB0aGUgdGVzdCBieSBhZGRpbmcgb3IgcmVtb3ZpbmcgZWxlbWVudHMu
CiAgICAgICAgIChDYW52YXNTdGFyc1N0YWdlLnByb3RvdHlwZS5hbmltYXRlKTogQW5pbWF0ZXMg
dGhlIHRlc3QgZWxlbWVudHMuCi0gICAgICAgIAorCiAgICAgICAgIChDYW52YXNTdGFyc0FuaW1h
dG9yKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgU3RhZ2VBbmltYXRvciBmb3IgYW5pbWF0aW5n
IGNhbnZhcyBzdGFycy4KICAgICAgICAgKENhbnZhc1N0YXJzQW5pbWF0b3IucHJvdG90eXBlLmFu
aW1hdGUpOiBPdmVycmlkZXMgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHRvIGNsZWFyIHRoZSBjYW52
YXMgYmVmb3JlIHJlZHJhd2luZyB0aGUgc3RhZ2UuCi0gICAgICAgIAorCiAgICAgICAgIChDYW52
YXNTdGFyc0JlbmNobWFyayk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJlbmNobWFyayBmb3Ig
YW5pbWF0aW5nIHN0YXJzLgogICAgICAgICAoQ2FudmFzU3RhcnNCZW5jaG1hcmsucHJvdG90eXBl
LmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIENhbnZhc1N0YXJzU3RhZ2UuCiAgICAg
ICAgIChDYW52YXNTdGFyc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBDcmVh
dGVzIGFuIGFuaW1hdG9yIG9mIHR5cGUgQ2FudmFzU3RhcnNBbmltYXRvci4KICAgICAgICAgKHdp
bmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBl
IENhbnZhc1N0YXJzQmVuY2htYXJrLgogCiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNv
dXJjZXM6IEFkZGVkLgotICAgICAgICBUaGlzIGRpcmVjdG9yeSBpbmNsdWRlcyB0aGUgc2NyaXB0
IHdoaWNoIGlzIHJlcXVpcmVkIHRvIHJ1biBhbiBhZGFwdGl2ZSAKKyAgICAgICAgVGhpcyBkaXJl
Y3RvcnkgaW5jbHVkZXMgdGhlIHNjcmlwdCB3aGljaCBpcyByZXF1aXJlZCB0byBydW4gYW4gYWRh
cHRpdmUKICAgICAgICAgZ3JhcGhpY3MgYmVuY2htYXJrLiBGcm9tIGFuIGVtcHR5IHRlc3QgcGFn
ZSwgdGhlIHNldCBvZiBjbGFzc2VzIGluIHRoaXMKICAgICAgICAgZGlyZWN0b3J5IGFyZSByZXNw
b25zaWJsZSBmb3IgbWVhc3VyaW5nIHRoZSBjdXJyZW50IGZyYW1lIHJhdGUgYW5kCiAgICAgICAg
IGNoYW5naW5nIHRoZSB0ZXN0IHRvIHJlYWNoIGEgZGVzaXJlZCBGUFMuIEl0IGtlZXBzIGFza2lu
ZyB0aGUgdGVzdCBwYWdlCiAgICAgICAgIHRvIHR1bmUgaXRzZWxmIGJ5IGEgY2VydGFpbiB2YWx1
ZSB0byBpbmNyZWFzZSBvciBkZWNyZWFzZSB0aGUgZnJhbWUgcmF0ZS4KICAgICAgICAgSXQncyBh
bHNvIHJlc3BvbnNpYmxlIGZvciBzYW1wbGluZyB0aGUgdGVzdCBzdGF0ZSBhbmQgdGhlIGNvcnJl
c3BvbmRpbmcKICAgICAgICAgZnJhbWUgcmF0ZS4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzOiBBZGRlZC4KICAgICAgICAgKEJlbmNobWFy
a1N0YXRlKTogVHJhY2tzIHRoZSBzdGF0ZSBvZiB0aGUgYmVuY2htYXJrIHRlc3QuCiAgICAgICAg
IChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuX3RpbWVPZmZzZXQpOiBSZXR1cm5zIHRoZSB0aW1l
T2Zmc2V0IG9mIGEgc3RhZ2UuCkBAIC0xNjU0LDEyICsxOTMxLDEyIEBACiAgICAgICAgIChCZW5j
aG1hcmtTdGF0ZS5wcm90b3R5cGUuY3VycmVudFN0YWdlKTogUmV0dXJucyB0aGUgY3VycmVudCBz
dGFnZSBvZiB0aGUgYmVuY2htYXJrLgogICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBl
LmN1cnJlbnRNZXNzYWdlKTogUmV0dXJucyB0aGUgbWVzc2FnZSBvZiB0aGUgY3VycmVudCBzdGFn
ZSBhbmQgdGltZU9mZnNldC4KICAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJy
ZW50UHJvZ3Jlc3MpOiBSZXR1cm5zIGEgcGVyY2VudGFnZSBvZiBob3cgbXVjaCB0aGUgYmVuY2ht
YXJrIGlzIHJ1bm5pbmcuCi0gICAgICAgIAorCiAgICAgICAgIChBbmltYXRvcik6IE1hbmFnZXMg
YW5pbWF0aW5nIHRoZSB0ZXN0LgogICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0KTog
Q2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyBzZXRJbnRlcnZhbCBpcyByZXF1ZXN0ZWQuCi0gICAg
ICAgIChBbmltYXRvci5wcm90b3R5cGUudGltZURlbHRhKTogUmV0dXJucyB0aGUgY3VycmVudCB0
aW1lRGVsdGEgCisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUudGltZURlbHRhKTogUmV0dXJu
cyB0aGUgY3VycmVudCB0aW1lRGVsdGEKICAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5hbmlt
YXRlKTogTWFuYWdlcyB0aGUgdGVzdCBhbmltYXRpb24uCi0gICAgICAgIChBbmltYXRvci5wcm90
b3R5cGUuYW5pbWF0ZUxvb3ApOiBDYWxsZWQgaWYgYW5pbWF0aW5nIHVzaW5nIHJlcXVlc3RBbmlt
YXRpb25GcmFtZSBpcyByZXF1ZXN0ZWQuIAorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLmFu
aW1hdGVMb29wKTogQ2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUgaXMgcmVxdWVzdGVkLgogCiAgICAgICAgIChCZW5jaG1hcmspOiBNYW5hZ2VzIHJ1bm5pbmcg
dGhlIHRlc3QgYmVuY2htYXJrIGFuZCByZWNvcmRpbmcgdGhlIHNhbXBsZWQgZGF0YS4KICAgICAg
ICAgKEJlbmNobWFyay5wcm90b3R5cGUuc3RhcnQpOiBTdGFydHMgdGhlIGJlbmNobWFyay4KQEAg
LTE2NzMsMTEgKzE5NTAsMTEgQEAKICAgICAgICAgKE1hdHJpeCk6IEEgbWF0cml4IG9iamVjdC4K
ICAgICAgICAgKFZlY3RvcjMpOiBBIHZlY3RvciBvZiBzaXplIDMgb2JqZWN0LgogICAgICAgICAo
TWF0cml4Myk6IEEgbWF0cml4IG9mIHNpemUgM3gzIG9iamVjdC4KLSAgICAgICAgCisKICAgICAg
ICAgKFBJRENvbnRyb2xsZXIpOiBDbG9zZWQtbG9vcCBjb250cm9sbGVyIGZvciBhIHNldC1wb2lu
dCB5LgogICAgICAgICAoUElEQ29udHJvbGxlci5wcm90b3R5cGUuX3NhdCk6IExpbWl0cyB0aGUg
b3V0cHV0IHRvIGEgY2VydGFpbiByYW5nZS4KICAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90
eXBlLnR1bmUpOiBHaXZlbiB0aGUgY3VycmVudCBvdXRwdXQgb2YgYSBzeXN0ZW0sIGl0IHByb2R1
Y2VzIGEgbmV3IHBpZCB2YWx1ZSBmb3IgdHVuaW5nIGl0LgotICAgICAgICAKKwogICAgICAgICAo
S2FsbWFuRXN0aW1hdG9yKTogSW1wbGVtZW50IEthbG1hbiBmaWx0ZXIgdG8gZ2V0IGFuIGVzdGlt
YXRlIGZvciBhIHNhbXBsZWQgZGF0YSBwb2ludC4KICAgICAgICAgKEthbG1hbkVzdGltYXRvci5w
cm90b3R5cGUuZXN0aW1hdGUpOiBSZXR1cm5zIGFuIGVzdGltYXRlIGZvciBmb3IgYSBzYW1wbGVk
IGRhdGEgcG9pbnQuCiAKQEAgLTE2ODksNyArMTk2Niw3IEBACiAgICAgICAgICh3aW5kb3cuVXRp
bGl0aWVzLmNvcHlPYmplY3QpOiBDb3BpZXMgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHZhbHVl
cyBvZiBhbiBvYmplY3QgdG8gYSBuZXcgb2JqZWN0LgogICAgICAgICAod2luZG93LlV0aWxpdGll
cy5tZXJnZU9iamVjdHMpOiBDb3BpZXMgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHZhbHVlcyBv
ZiB0d28gb2JqZWN0cyB0byBhIG5ldyBvYmplY3QuCiAgICAgICAgICh3aW5kb3cuVXRpbGl0aWVz
LmNyZWF0ZVN2Z0VsZW1lbnQpOiBDcmVhdGVzIGFuIFNWR0VsZW1lbnQgZ2l2ZW4gaXRzIG5hbWUg
YW5kIGl0cyBhdHRyaWJ1dGVzLgotICAgICAgICAKKwogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVz
dHMvcmVzb3VyY2VzL3N0YWdlLmNzczogQWRkZWQuCiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9yZXNvdXJjZXMvc3RhZ2UuanM6IEFkZGVkLgogICAgICAgICAoUm90YXRlcik6IE1hbmFnZXMg
cm90YXRpbmcgYW4gYW5nbGUgd2l0aGluIGEgZml4ZWQgdGltZSBpbnRlcnZhbC4KQEAgLTE2OTgs
NyArMTk3NSw3IEBACiAgICAgICAgIChSb3RhdGVyLnByb3RvdHlwZS5kZWdyZWUpOiBSZXR1cm5z
IHRoZSBjdXJyZW50IHJvdGF0aW5nIGRlZ3JlZS4KICAgICAgICAgKFJvdGF0ZXIucHJvdG90eXBl
LnJvdGF0ZVopOiBSZXR1cm5zIENTUyBmb3JtYXR0ZWQgdHJhbnNmb3JtIHJvdGF0ZVooKSBzdHJp
bmcgZm9yIHRoZSBjdXJyZW50IGRlZ3JlZS4KICAgICAgICAgKFJvdGF0ZXIucHJvdG90eXBlLnJv
dGF0ZSk6IFJldHVybnMgU1ZHIGZvcm1hdHRlZCB0cmFuc2Zvcm0gcm90YXRlKCkgc3RyaW5nIGZv
ciB0aGUgY3VycmVudCBkZWdyZWUuCi0gICAgICAgIAorCiAgICAgICAgIChTdGFnZSk6IEEgYmFz
ZSBjbGFzcyBmb3IgbWFuYWdpbmcgdGhlIHRlc3QgY29tcGxleGl0eSBhbmQgdGVzdCBhbmltYXRp
b24uCiAgICAgICAgIChTdGFnZS5wcm90b3R5cGUuZ2V0IHNpemUpOiBSZXR1cm5zIHRoZSBzaXpl
IG9mIHRoZSBzdGFnZSBleGNsdWRpbmcgdGhlIENTUyBwYWRkaW5nLgogICAgICAgICAoU3RhZ2Uu
cHJvdG90eXBlLnJhbmRvbSk6IFJldHVybnMgYSByYW5kb20gZmxvYXQuCkBAIC0xNzEyLDIxICsx
OTg5LDIxIEBACiAgICAgICAgIChTdGFnZS5wcm90b3R5cGUudHVuZSk6IEEgbm90LWltcGxlbWVu
dGVkIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbi4KICAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5h
bmltYXRlKTogQSBub3QtaW1wbGVtZW50ZWQgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uLgogICAg
ICAgICAoU3RhZ2UucHJvdG90eXBlLmNsZWFyKTogQ2xlYXJzIHRoZSBzdGFnZSBmcm9tIGFsbCBp
dHMgYW5pbWF0aW9uIGVsZW1lbnRzLgotICAgICAgICAKKwogICAgICAgICAoU3RhZ2VBbmltYXRv
cik6IEEgYmFzZSBjbGFzcyBmb3IgdGhlIHN0YWdlLWJhc2VkIGFuaW1hdG9ycy4KICAgICAgICAg
KFN0YWdlQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBDYWxscyBBbmltYXRvci5hbmltYXRl
KCkgd2hpY2ggdXBkYXRlcyB0aGUgdGVzdCBwYWdlIGFuZCB0aGVuIGNhbGxzIFN0YWdlLmFuaW1h
dGUoKSB0byBmb3JjZSByZWRyYXcuCi0gICAgICAgIAorCiAgICAgICAgIChTdGFnZUJlbmNobWFy
ayk6IEEgYmFzZSBjbGFzcyBmb3IgdGhlIHN0YWdlLWJhc2VkIGJlbmNobWFya3MuCiAgICAgICAg
IChTdGFnZUJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIHRoZSBkZWZh
dWx0IHN0YWdlLgogICAgICAgICAoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1h
dG9yKTogQ3JlYXRlcyB0aGUgZGVmYXVsdCBhbmltYXRvci4KICAgICAgICAgKFN0YWdlQmVuY2ht
YXJrLnByb3RvdHlwZS50dW5lKTogRGVsZWdhdGVzIHRoZSBjYWxsIHRvIHN0YWdlLgogICAgICAg
ICAoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNsZWFyKTogRGVsZWdhdGVzIHRoZSBjYWxsIHRv
IHN0YWdlLgogICAgICAgICAoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzKTog
U2hvd3MgdGhlIHJlc3VsdHMvcHJvZ3Jlc3MgdGhyb3VnaCBpdHMgcmVjb3JkVGFibGUgYW5kIHBy
b2dyZXNzQmFyLgotICAgICAgICAKKwogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3Vy
Y2VzL3lpbi15YW5nLnBuZzogQWRkZWQuCiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNv
dXJjZXMveWluLXlhbmcuc3ZnOiBBZGRlZC4KICAgICAgICAgVGhlc2UgaW1hZ2VzIGFyZSBzaGFy
ZWQgYW1vbmcgYWxsIHRoZSB0ZXN0cy4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21ldGVy
L3Rlc3RzL3RlbXBsYXRlOiBBZGRlZC4KICAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBs
YXRlL3Jlc291cmNlczogQWRkZWQuCiAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGluY2x1ZGVzIHRl
bXBsYXRlIHRlc3RzIHdoaWNoIGRvIG5vdGhpbmcuIFRoZXkgY2FuIGJlIHVzZWQKQEAgLTE3Mzgs
MTYgKzIwMTUsMTYgQEAKICAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBs
YXRlLXN2Zy5odG1sOiBBZGRlZC4KICAgICAgICAgVGVtcGxhdGUgdGVzdCBwYWdlcy4gVGhleSBj
YW4gYmUgdXNlZCBhcyB0aGV5IGFyZS4gQ1NTIGF0dHJpYnV0ZXMgb3IgaGlkZGVuCiAgICAgICAg
IGVsZW1lbnRzIGNhbiBiZSBhZGRlZCB0byB0aGVzZSBkZXJpdmVkIHRlc3QgcGFnZXMgaWYgbmVl
ZGVkLgotICAgICAgICAKKwogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVz
b3VyY2VzL3RlbXBsYXRlLWNzcy5qczogQWRkZWQuCi0gICAgICAgIAorCiAgICAgICAgIChUZW1w
bGF0ZUNzc1N0YWdlKTogQSBzdGFnZSB0byBjcmVhdGUgYW5kIGFuaW1hdGUgSFRNTEVsZW1lbnRz
LgogICAgICAgICAoVGVtcGxhdGVDc3NTdGFnZS5wcm90b3R5cGUudHVuZSk6IENoYW5nZXMgdGhl
IHRlc3QgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGVsZW1lbnRzLgogICAgICAgICAoVGVtcGxhdGVD
c3NTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IEFuaW1hdGVzIHRoZSB0ZXN0IGVsZW1lbnRzLgot
ICAgICAgICAoVGVtcGxhdGVDc3NCZW5jaG1hcmspOiAKKyAgICAgICAgKFRlbXBsYXRlQ3NzQmVu
Y2htYXJrKToKICAgICAgICAgKFRlbXBsYXRlQ3NzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVT
dGFnZSk6IENyZWF0ZXMgdGhlIHRlc3Qgc3RhZ2UuCiAgICAgICAgICh3aW5kb3cuYmVuY2htYXJr
Q2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBUZW1wbGF0ZUNzc0Jl
bmNobWFyay4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRl
L3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanM6IEFkZGVkLgogICAgICAgICAoVGVtcGxhdGVD
YW52YXNPYmplY3QpOgogICAgICAgICAoVGVtcGxhdGVDYW52YXNPYmplY3QucHJvdG90eXBlLl9k
cmF3KTogRHJhd3MgdGhlIG9iamVjdHMgb24gdGhlIGNhbnZhcyBjb250ZXh0LgpAQCAtMTc1Niwy
NiArMjAzMywyNiBAQAogICAgICAgICAoVGVtcGxhdGVDYW52YXNTdGFnZS5wcm90b3R5cGUudHVu
ZSk6IGhhbmdlcyB0aGUgdGVzdCBieSBhZGRpbmcgb3IgcmVtb3ZpbmcgZWxlbWVudHMuCiAgICAg
ICAgIChUZW1wbGF0ZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5hbmltYXRlKTogIEFuaW1hdGVzIHRo
ZSB0ZXN0IGVsZW1lbnRzLgogICAgICAgICAoVGVtcGxhdGVDYW52YXNBbmltYXRvci5wcm90b3R5
cGUuYW5pbWF0ZSk6IFN0YXJ0cyB0aGUgYW5pbWF0aW9uIGV2ZXJ5IGZyYW1lLgotICAgICAgICAo
VGVtcGxhdGVDYW52YXNCZW5jaG1hcmspOiAKKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzQmVuY2ht
YXJrKToKICAgICAgICAgKFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVT
dGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIFRlbXBsYXRlQ2FudmFzU3RhZ2UuCiAgICAg
ICAgIChUZW1wbGF0ZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBD
cmVhdGVzIGEgYW5pbWF0b3Igb2YgdHlwZSBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yLgogICAgICAg
ICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9m
IHR5cGUgVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsuCi0gICAgICAgIAorCiAgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzOiBBZGRlZC4K
ICAgICAgICAgKFRlbXBsYXRlU3ZnU3RhZ2UpOiBBIHN0YWdlIHRvIGNyZWF0ZSBhbmQgYW5pbWF0
ZSBTVkdFbGVtZW50cy4KICAgICAgICAgKFRlbXBsYXRlU3ZnU3RhZ2UucHJvdG90eXBlLnR1bmUp
OiBDaGFuZ2VzIHRoZSB0ZXN0IGJ5IGFkZGluZyBvciByZW1vdmluZyBlbGVtZW50cy4KICAgICAg
ICAgKFRlbXBsYXRlU3ZnU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBBbmltYXRlcyB0aGUgdGVz
dCBlbGVtZW50cy4KICAgICAgICAgKFRlbXBsYXRlU3ZnQmVuY2htYXJrLnByb3RvdHlwZS5jcmVh
dGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIFRlbXBsYXRlU3ZnU3RhZ2UuCiAgICAg
ICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsg
b2YgdHlwZSBUZW1wbGF0ZVN2Z0JlbmNobWFyay4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL3RleHQ6IEFkZGVkLgogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4
dC9yZXNvdXJjZXM6IEFkZGVkLgogICAgICAgICBUaGlzIGRpcmVjdG9yeSBpbmNsdWRlcyB0aGUg
dGV4dCBhbmltYXRpbmcgdGVzdHMgd2hpY2ggY3VycmVudGx5IHJ1bnMKICAgICAgICAgb24gQ1NT
IHN0YWdlIG9ubHkuCi0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0
L2xheWVyaW5nLXRleHQuaHRtbDogQWRkZWQuCiAgICAgICAgIFRleHQgdGVzdCBwYWdlLgotICAg
ICAgICAKKwogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJp
bmctdGV4dC5qczogQWRkZWQuCiAgICAgICAgIChMYXllcmluZ1RleHRTdGFnZSk6IFJlcHJlc2Vu
dHMgdGhlIGNvbnRhaW5lciBvZiBhbGwgdGhlIHN0YWNrZWQgdGV4dCBsYXllcnMuCiAgICAgICAg
IChMYXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtKTogUGFyc2VzIGEgdGV4dEl0ZW0gd2hp
Y2ggbWF5IGJlIGFuIG9wZW5pbmcgdGFnLCBhIGNsb3NpbmcgdGFnIG9yIGEgc2VsZi1jbG9zaW5n
IHRhZy4KQEAgLTE4MjgsNyArMjEwNSw3IEBACiAKICAgICAgICAgKEFsZ29yaXRobS5jcmVhdGVN
aW5IZWFwKTogQ3JlYXRlcyBhIHNpemUtYm91bmRlZCBtaW4taGVhcCBvYmplY3QuCiAgICAgICAg
IChBbGdvcml0aG0uY3JlYXRlTWF4SGVhcCk6IENyZWF0ZXMgYSBzaXplLWJvdW5kZWQgbWF4LWhl
YXAgb2JqZWN0LgotICAgICAgICAKKwogICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4
dGVuc2lvbnMuanM6IEFkZGVkLgogICAgICAgICAoUG9pbnQpOiBQb2ludCBvYmplY3QgYnV0IGNh
biBiZSB1c2VkIGFzIHNpemUgYWxzby4KICAgICAgICAgKFBvaW50LnBvaW50T25DaXJjbGUpOiBH
aXZlbiwgdGhlIHJhZGl1cyBvZiB0aGUgY2lyY2xlIGFuZCB0aGUgYW5nbGUgb2YgdGhlIHBvaW50
LCBpdCByZXR1cm5zIGEgcG9pbnQgb2JqZWN0LgpAQCAtMTg2NywxNCArMjE0NCwxNCBAQAogICAg
ICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93VGVzdCk6IFNob3dzIHRoZSByZXN1bHRz
IG9mIGEgc2luZ2xlIHRlc3QuCiAgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dT
dWl0ZSk6IFNob3dzIHRoZSByZXN1bHRzIG9mIGEgc2luZ2xlIHN1aXRlLgogICAgICAgICAoUmVj
b3JkVGFibGUucHJvdG90eXBlLnNob3dSZWNvcmQpOiBTaG93cyBhIHNpbmdsZSBpdGVyYXRpb24g
Zm9yIGEgc2luZ2xlIHRlc3QuCi0gICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuc2hvd0l0
ZXJhdGlvbnMpOiBTaG93cyB0aGUgcmVzdWx0cyBvZiBhbGwgdGhlIHN1aXRlcyBvZiB0aGUgaXRl
cmF0aW9ucy4gCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuc2hvd0l0ZXJhdGlvbnMp
OiBTaG93cyB0aGUgcmVzdWx0cyBvZiBhbGwgdGhlIHN1aXRlcyBvZiB0aGUgaXRlcmF0aW9ucy4K
IAogICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3NhbXBsZXIuanM6IEFkZGVkLgogICAg
ICAgICAoU3RhdGlzdGljcy5zYW1wbGVNZWFuKTogUmV0dXJucyB0aGUgc2FtcGxlIG1lYW4uCiAg
ICAgICAgIChTdGF0aXN0aWNzLnVuYmlhc2VkU2FtcGxlU3RhbmRhcmREZXZpYXRpb24pOiBSZXR1
cm5zIHRoZSB1bmJpYXNlZCBzYW1wbGUgdmFyaWFuY2UgKGkuZS4gd2l0aCBCZXNzZWwncyBjb3Jy
ZWN0aW9uKQogICAgICAgICAoU3RhdGlzdGljcy5nZW9tZXRyaWNNZWFuKTogUmV0dXJucyB0aGUg
Z2VvbWV0cmljIG1lYW4uCiAKLSAgICAgICAgKEV4cGVyaW1lbnQpOiBSZXByZXNlbnRzIGEgc2Ft
cGxpbmcgZXhwZXJpbWVudC4gCisgICAgICAgIChFeHBlcmltZW50KTogUmVwcmVzZW50cyBhIHNh
bXBsaW5nIGV4cGVyaW1lbnQuCiAgICAgICAgIChFeHBlcmltZW50LnByb3RvdHlwZS5faW5pdCk6
IENhbGxlZCB3aGVuIHRoZSBvYmplY3QgaXMgY3JlYXRlZCBhbmQgd2hlbiBzdGFydFNhbXBsaW5n
KCkgaXMgY2FsbGVkLgogICAgICAgICAoRXhwZXJpbWVudC5wcm90b3R5cGUuc3RhcnRTYW1wbGlu
Zyk6IENhbGxlZCBhZnRlciB3YXJtdXAgcGVyaW9kLiBSZXN0YXJ0cyBjb2xsZWN0aW5nIHNhbXBs
ZWQgZGF0YSBwb2ludHMuCiAgICAgICAgIChFeHBlcmltZW50LnByb3RvdHlwZS5zYW1wbGUpOiBB
ZGQgYSBuZXcgZGF0YSBwb2ludC4KQEAgLTE4ODgsNyArMjE2NSw3IEBACiAgICAgICAgIChTYW1w
bGVyKTogUmVwcmVzZW50cyBhIGNvbXBvdW5kIGV4cGVyaW1lbnQuIEl0IG1hbmFnZXMgc2FtcGxp
bmcgbXVsdGlwbGUgZGF0YSBwb2ludHMgYXQgdGhlIHNhbWUgdGltZSBvZmZzZXQuCiAgICAgICAg
IChTYW1wbGVyLnByb3RvdHlwZS5zdGFydFNhbXBsaW5nKTogQ2FsbGVkIGFmdGVyIHdhcm1pbmcg
dXAgcGVyaW9kLiBSZXN0YXJ0cyBjb2xsZWN0aW5nIHNhbXBsZWQgZGF0YSBwb2ludHMuCiAgICAg
ICAgIChTYW1wbGVyLnByb3RvdHlwZS5zYW1wbGUpOiBBZGQgYSBuZXcgZGF0YSB2ZWN0b3IgYXQg
YSBnaXZlbiB0aW1lIG9mZnNldC4KLSAgICAgICAgCisKIDIwMTUtMTAtMDIgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGhlIHRlc3Qg
cnVubmVyIGZvciBhIG5ldyBhIGdyYXBoaWNzIGJlbmNobWFyawpAQCAtMTkwNCw3ICsyMTgxLDcg
QEAKICAgICAgICAgKiBBbmltb21ldGVyOiBBZGRlZC4KICAgICAgICAgKiBBbmltb21ldGVyL3J1
bm5lcjogQWRkZWQuCiAgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzOiBBZGRl
ZC4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0
bWw6IEFkZGVkLgogICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21l
dGVyLmNzczogQWRkZWQuCiAgICAgICAgIFRoZSBiZW5jaG1hcmsgcnVubmVyIHBhZ2UgYW5kIGNz
cy4KQEAgLTE5MTUsMTIgKzIxOTIsMTIgQEAKICAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5u
ZXJDbGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24pOiBDYWxsZWQgYXQgdGhlIGJlZ2lubmlu
ZyBiZWZvcmUgcnVubmluZyBhbnkgdGVzdC4KICAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5u
ZXJDbGllbnQuZGlkUnVuU3VpdGVzKTogQ2FsbGVkIGFmdGVyIHJ1bm5pbmcgYWxsIHRlc3RzIG9m
IGEgc3VpdGUuCiAgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LmRpZEZpbmlz
aExhc3RJdGVyYXRpb24pOiBDYWxsZWQgYWZ0ZXIgcnVubmluZyB0aGUgbGFzdCB0ZXN0LgotICAg
ICAgICAKKwogICAgICAgICAoc2hvd1NlY3Rpb24pOiBTaG93cyBhIHNlY3Rpb24gaW4gdGhlIGFu
aW1vbWV0ZXIuaHRtbCBwYWdlLgogICAgICAgICAoc3RhcnRUZXN0KTogQ2FsbGVkIHdoZW4gdGhl
ICJTdGFydCBUZXN0IiBidXR0b24gaXMgY2xpY2tlZC4KICAgICAgICAgKHNob3dSZXN1bHRzKTog
Q2FsbGVkIGFmdGVyIGZpbmlzaGluZyBhbGwgdGhlIHRlc3RzLgogICAgICAgICAoc2hvd0dyYXBo
KTogQ2FsbGVkIHdoZW4gIkNsaWNrLi4uIiBidXR0b24gaW4gdGhlICJTYW1wbGVzIiBjb2x1bW4g
b2YgdGhlIHJlc3VsdHMgdGFibGUgaXMgY2xpY2tlZAotICAgICAgICAKKwogICAgICAgICAqIEFu
aW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzOiBDb3BpZWQgZnJv
bSBQZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVy
LmpzLgogICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUpOiBUcmFja3MgdGhlIGN1cnJlbnQg
cnVubmluZyA8c3VpdGUsIHRlc3Q+CiAgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90
b3R5cGUuY3VycmVudFN1aXRlKTogUmV0dXJucyB0aGUgY3VycmVudCBydW5uaW5nIHN1aXRlLgpA
QCAtMTkyOCw3ICsyMjA1LDcgQEAKICAgICAgICAgKEJlbmNobWFya1J1bm5lclN0YXRlLnByb3Rv
dHlwZS5pc0ZpcnN0VGVzdCk6IFJldHVybnMgdHJ1ZSBpZiB3ZSBhcmUgcnVubmluZyB0aGUgZmly
c3QgdGVzdCBpbiB0aGUgY3VycmVudCBzdWl0ZS4KICAgICAgICAgKEJlbmNobWFya1J1bm5lclN0
YXRlLnByb3RvdHlwZS5uZXh0KTogQWR2YW5jZXMgdG8gdGhlIG5leHQgdGVzdC4KICAgICAgICAg
KEJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5wcmVwYXJlQ3VycmVudFRlc3QpOiBDcmVh
dGVzIGEgbmV3IDxpZnJhbWU+IGFuZCB3YWl0cyBmb3IgaXQgdG8gbG9hZCBhIHRlc3QuCi0gICAg
ICAgIAorCiAgICAgICAgIChCZW5jaG1hcmtSdW5uZXIpOiBNYW5hZ2VzIHJ1bm5pbmcgdGhlIHRl
c3RzIGFuZCBjb21tdW5pY2F0aW5nIHdpdGggdGhlIGJlbmNobWFya1J1bm5lckNsaWVudC4KICAg
ICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUud2FpdEZvckVsZW1lbnQpOiBXYWl0cyBm
b3IgYW4gZWxlbWVudCB0byBiZSBjcmVhdGVkLgogICAgICAgICAoQmVuY2htYXJrUnVubmVyLnBy
b3RvdHlwZS5fYXBwZW5kRnJhbWUpOiBDcmVhdGVzIGEgbmV3IDxpZnJhbWU+IGVsZW1lbnQuCkBA
IC0xOTQ2LDcgKzIyMjMsNyBAQAogICAgICAgICAoQmVuY2htYXJrVGVzdFN0ZXApOiBEZWxldGVk
LgogICAgICAgICAoRmlib25hY2NpKTogRGVsZXRlZC4KICAgICAgICAgU2ltcGxlUHJvbWlzZSB3
YXMgbW92ZWQgdCBBbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIGJlY2F1c2UgaXQg
aXMgdXNlZCBieSB0aGUgcnVubmVyIGFuZCB0aGUgdGVzdHMuCi0gICAgICAgIAorCiAgICAgICAg
IChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl93YWl0QW5kV2FybVVwKTogRGVsZXRlZC4KICAg
ICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1blRlc3QpOiBEZWxldGVkLgogICAg
ICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLmN1cnJlbnRTdWl0ZSk6IERlbGV0ZWQuCkBA
IC0xOTU1LDEzICsyMjMyLDEzIEBACiAgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUu
aXNGaXJzdFRlc3QpOiBEZWxldGVkLgogICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBl
LnByZXBhcmVDdXJyZW50U3VpdGUpOiBEZWxldGVkLgogICAgICAgICBCZW5jaG1hcmtTdGF0ZSB3
YXMgcmVuYW1lZCB0byBCZW5jaG1hcmtSdW5uZXJTdGF0ZSB0byBub3QgYmUgY29uZnVzZWQgd2l0
aCB0aGUgdGVzdHMgQmVuY2htYXJrU3RhdGUuCi0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9t
ZXRlci9ydW5uZXIvcmVzb3VyY2VzL2QzLm1pbi5qczogQ29waWVkIGZyb20gV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92Mi9qcy9kMy9kMy5taW4uanMuCiAgICAgICAgIE5lZWRlZCBm
b3IgZHJhd2luZyBjaGFydHMgZm9yIHRoZSBzYW1wbGVkIHNjb3JlcyBhbmQgZnJhbWUgcmF0ZXMu
Ci0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dyYXBo
LmpzOiBBZGRlZC4KICAgICAgICAgKGdyYXBoKTogRHJhd3MgYSBjaGFydCBmb3IgYSB0ZXN0IHNh
bXBsZWQgZGF0YS4gSXQgc2hvd3MgdHdvIHktYXhlczogb25lIGZvciB0aGUgYW5pbWF0ZWQgaXRl
bXMgYW5kIHRoZSBzZWNvbmQgZm9yIEZQUy4KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAq
IFNraXBwZWQ6IFNraXAgdGhlIEFuaW1vbWV0ZXIgYmVuY2htYXJrIGZvciBub3cuCiAKIDIwMTUt
MDgtMjcgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KQEAgLTIwNDAsNyAr
MjMxNyw3IEBACiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDYzNzgKIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KLSAgICAgICAgCisKICAg
ICAgICAgVGhlIGN1cnJlbnQgcGVyY2VudGlsZSBpcyA5NSUuICBXaGVuIEkgbG9va2VkIGF0IHRo
ZSBzYW1wbGUgbGlzdHMgaW4gb3VyIEdDLCBpdCB3YXMKICAgICAgICAgY2xlYXIgdGhhdCB0aGUg
d29yc3QgNSUgc2FtcGxlcyBjb21wbGV0ZWx5IGFtb3J0aXplIG91ciBHQyBwYXVzZXMuICBPdXIg
R0MgcGF1c2VzIGNhbgogICAgICAgICBiZSBxdWl0ZSBiYWQuICBDbGVhcmx5LCBzcGxheS1sYXRl
bmN5IGlzIG1lYW50IHRvIHRlc3Qgd2hldGhlciB3ZSBoYXZlIGFuIGluY3JlbWVudGFsCkBAIC0y
MDkyLDM0ICsyMzY5LDM0IEBACiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDYxNTYKIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4K
LSAgICAgICAgCisKICAgICAgICAgVGhpcyBhZGRzIGEgSmF2YVNjcmlwdCBwb3J0IG9mIHRoZSBD
RHggcmVhbC10aW1lIGJlbmNobWFyayB0byBKZXRTdHJlYW0sIGFuZCByZXRpcmVzCiAgICAgICAg
IHRoZSBjb3JkaWMgdGVzdCBiZWNhdXNlIGl0IHdhcyBwcmV2aW91c2x5IHRoZSBzbWFsbGVzdCBh
bmQgcHJvYmFibHkgbGVhc3QgaW50ZXJlc3RpbmcuCi0gICAgICAgIAorCiAgICAgICAgIFRoZSBu
ZXcgdGVzdCwgImNkanMiLCBpcyBtb3N0bHkgYSBmYWl0aGZ1bCByZXdyaXRlIG9mIHRoZSBKYXZh
IGNvZGUgaW50byBKYXZhU2NyaXB0LgogICAgICAgICBJIGdvdCB0aGUgSmF2YSBjb2RlIGZyb20g
aHR0cHM6Ly93d3cuY3MucHVyZHVlLmVkdS9zc3MvcHJvamVjdHMvY2R4Ly4KLSAgICAgICAgCisK
ICAgICAgICAgVGhlcmUgYXJlIHNvbWUgZGlmZmVyZW5jZXM6Ci0gICAgICAgIAorCiAgICAgICAg
IC0gSXQgdXNlcyBSZWRCbGFja1RyZWUncyBmb3IgYWxsIHNldHMgYW5kIG1hcHMgcmF0aGVyIHRo
YW4gaGFzaHRhYmxlcy4gVGhpcyBpcyBjbGVhcmx5CiAgICAgICAgICAgbW9yZSBpbiB0aGUgc3Bp
cml0IG9mIHJlYWwtdGltZSB0aGFuIHRoZSBDRHggYmVuY2htYXJrLiBGV0lXLCBDRHggdXNlZCB0
byB1c2UgdHJlZXMKICAgICAgICAgICBhbmQgSSBkb24ndCBrbm93IHdoeSB0aGF0IGNoYW5nZWQg
aW4gdGhlIGxhdGVzdCB2ZXJzaW9uLgotICAgICAgICAKKwogICAgICAgICAtIENEanMgZG9lc24n
dCBhdHRlbXB0IHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9ucywgdW5saWtlIHRoZSByZWFsLXRp
bWUgSmF2YSB2ZXJzaW9uLgogICAgICAgICAgIEkgd3JvdGUgdGhlIGNvZGUgdGhhdCBJIHdhbnRl
ZCB0byB3cml0ZSBmb3IgYWVzdGhldGljcywgcmF0aGVyIHRoYW4gdGhlIGNvZGUgdGhhdCBJCiAg
ICAgICAgICAgd291bGQgaGF2ZSB3cml0dGVuIGlmIEkgdHJpZWQgdG8gd3JpdGUgdGhlIGZhc3Rl
c3QgY29kZSBwb3NzaWJsZS4gQWdhaW4sIEkgYmVsaWV2ZQogICAgICAgICAgIHRoYXQgdGhpcyBp
cyBpbiB0aGUgc3Bpcml0IG9mIENEaiAtIGl0J3MgbWVhbnQgdG8gdGVzdCB3aGF0IHdvdWxkIGhh
cHBlbiBpZiB5b3Ugd3JvdGUKICAgICAgICAgICByZWFsLXRpbWV5IHN0dWZmIGluIGEgaGlnaCBs
ZXZlbCBsYW5ndWFnZSBhbmQgYWN0dWFsbHkgdG9vayBhZHZhbnRhZ2Ugb2YgdGhhdAogICAgICAg
ICAgIGxhbmd1YWdlIHRvIGJlIG1vcmUgcHJvZHVjdGl2ZS4KLSAgICAgICAgCisKICAgICAgICAg
VGhlIHRlc3Qgc2NvcmUgcmVmbGVjdHMgdGhlIGF2ZXJhZ2UgbGF0ZW5jeSBvZiB0aGUgd29yc3Qg
MTAgc2FtcGxlcyBvdXQgb2YgMjAwIHNhbXBsZXMuCiAgICAgICAgIFRoZSBzaW11bGF0aW9uIHVz
ZXMgMTAwMCBhaXJjcmFmdCwgZmx5aW5nIGFsb25nIHBhdGhzIHRoYXQgcmVzdWx0IGluIHNvbWUg
ZGV0ZWN0ZWQKICAgICAgICAgY29sbGlzaW9ucyBldmVyeSBvbmNlIGluIGEgd2hpbGUuIFRoZSBi
ZW5jaG1hcmsgdmFsaWRhdGVzIGl0cyByZXN1bHRzIGJ5IGNoZWNraW5nIHRoZQogICAgICAgICB0
b3RhbCBudW1iZXIgb2YgY29sbGlzaW9ucyBkZXRlY3RlZC4KLSAgICAgICAgCisKICAgICAgICAg
QXBhcnQgZnJvbSB0aGUgaW50ZWdyYXRpb24gaW50byB0aGUgSmV0U3RyZWFtIGhhcm5lc3MsIHRo
ZSBDRGpzIGRpcmVjdG9yeSBjb250YWlucyBhCiAgICAgICAgIGZ1bGx5IHNlbGYtY29udGFpbmVk
IGJlbmNobWFyayB0aGF0IGNvdWxkIGJlIHJ1biBlaXRoZXIgaW4gdGhlIGpzYyBzaGVsbCBvciBp
biBicm93c2VyLgotICAgICAgICAKKwogICAgICAgICBUaGlzIG5ldyBjb2RlIHVzZXMgdGhlIHNh
bWUgMy1jbGF1c2UgQlNEIGxpY2Vuc2UgYXMgdGhlIFB1cmR1ZSBjb2RlLCBhbmQgZ2l2ZXMKICAg
ICAgICAgYXR0cmlidXRpb24gdG8gUHVyZHVlIGluIGFsbW9zdCBhbGwgZmlsZXMuIEkgYmVsaWV2
ZSB0aGF0IGlzIGFwcHJvcHJpYXRlIHNpbmNlIEkgd3JvdGUKICAgICAgICAgbW9zdCBvZiB0aGUg
SlMgZmlsZXMgYnkgbG9va2luZyBhdCB0aGUgUHVyZHVlIEphdmEgY29kZSBhbmQgdHJhc2NyaWJp
bmcgdG8gSmF2YVNjcmlwdC4KQEAgLTIyMjcsNyArMjUwNCw3IEBACiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU3NjIKIAogICAgICAgICBSZXZpZXdl
ZCBieSBHZW9mZnJleSBHYXJlbi4KLSAgICAgICAgCisKICAgICAgICAgSmV0U3RyZWFtIGhhcyBz
b21lIGxhdGVuY3kgdGVzdHMgdGhhdCBhcmUgbWVhbnQgdG8gbWVhc3VyZSBqaXR0ZXIuICBQcmlv
ciB0byB0aGlzIGNoYW5nZSwgdGhleQogICAgICAgICBkaWQgdGhpcyBieSBjb21wdXRpbmcgdGhl
IFJNUy4gIEJ1dCB0aGUgUk1TIGlzIGEgcHJldHR5IGJhZCBtZXRyaWMuICBUaGUgdGhpbmcgdGhh
dCBpdCByZXdhcmRzCiAgICAgICAgIGlzbid0IHJlYWxseSB0aGUgdGhpbmcgdGhhdCB5b3UnZCB3
YW50IHlvdXIgYnJvd3NlciB0byBkby4gIFRoZXNlIFJNUy1iYXNlZCB0ZXN0cyBpbnZvbHZlIHRh
a2luZwpAQCAtMjI0OCw3ICsyNTI1LDcgQEAKICAgICAgICAgVGhlIHdvcnN0IDElIG9yIHRoZSB3
b3JzdCA1JSB3b3VsZCBiZSBnb29kIHRoaW5ncyB0byBhdmVyYWdlLiAgVGhpcyB3aWxsIGNhdGNo
IGNhc2VzIHdoZXJlIHRoZSBWTQogICAgICAgICBqaXR0ZXJlZCBkdWUgdG8gSklUIG9yIEdDLCBi
dXQgaXQgbmV2ZXIgaGF2ZSB0aGUgcGF0aG9sb2d5IHRoYXQgd2UgZW5kIHVwIGdpdmluZyB0aGUg
YmV0dGVyIHNjb3JlCiAgICAgICAgIHRvIGEgVk0gd2hvc2UgYmVzdCBjYXNlIGlzIHdvcnN0IHRo
YW4gYW5vdGhlciBWTSdzIHdvcnN0IGNhc2UuCi0gICAgICAgIAorCiAgICAgICAgIEZvciBub3cs
IHRoaXMgY2hhbmdlIHVzZXMgdGhlIGhpZ2hlc3Qgc2FtcGxlcyBhYm92ZSB0aGUgOTUlIHBlcmNl
bnRpbGUuIEknbSBub3QgeWV0IHN1cmUgaWYgdGhhdAogICAgICAgICBpcyB0aGUgYmVzdCB0aGlu
ZyAtIGl0IG1pZ2h0IGluY2x1ZGUgdG9vIG1hbnkgc2NvcmVzIHRoYXQgYXJlIGFyb3VuZCB0aGUg
YmVzdC1jYXNlIHBlcmZvcm1hbmNlIC0KICAgICAgICAgYnV0IGl0J3MgY2VydGFpbmx5IGJldHRl
ciB0aGFuIFJNUyBhbmQgaXQgbWlnaHQgYmUgZ29vZCBlbm91Z2ggdG8ga2VlcC4gQnV0IGJlY2F1
c2Ugb2YgdGhhdApAQCAtMjI5Miw3ICsyNTY5LDcgQEAKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDYxNwogCiAgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmcmV5IEdhcmVuLgotICAgICAgICAKKwogICAgICAgICBBZGQgdGhlIGhhc2gtbWFwIGJlbmNo
bWFyayB0byBMb25nU3BpZGVyLiBMb25nU3BpZGVyIHdhcyBhbHJlYWR5IG5vdCBhIHBlcmZlY3Qg
bWF0Y2ggb2YKICAgICAgICAgU3VuU3BpZGVyLiBJdCdzIG5vdCBhbiBvZmZpY2lhbCBiZW5jaG1h
cmsuIEl0IGNvbnRhaW5zIGJlbmNobWFya3MgdGhhdCBhcmUgcmVsYXRpdmVseQogICAgICAgICBs
b25nLXJ1bm5pbmcuIFNvLCBoYXNoLW1hcCBzb3J0IG9mIGJlbG9uZ3MgaGVyZS4KQEAgLTIzMDcs
NyArMjU4NCw3IEBACiAgICAgICAgIEZpeCB0eXBvIGJ1ZyBpbiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvbWFpbi5qcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ0NTA0CiAKLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLiAKKyAgICAgICAg
UmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgogCiAgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL21haW4uanM6IEZpeCB0eXBvLgogICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC50
b3RhbFRpbWVJbkRpc3BsYXlVbml0KToKQEAgLTI0NTgsNyArMjczNSw3IEBACiAgICAgICAgICog
U1ZHL3Jlc291cmNlcy9SZW5kZXJBbmltYXRvci5qczogQWRkZWQuCiAgICAgICAgIFRoZXNlIGFy
ZSBiZW5jaG1hcmtzIGZvciB0aGUgU1ZHIHJlbmRlcmluZy4gTWFpbmx5IHdlIHdhbnQgdG8gbWVh
c3VyZSBob3cgZmFzdAogICAgICAgICB0aGUgU1ZHIHJlbmRlcmluZyB3aWxsIGJlIHdoZW4gb25s
eSBhIHNtYWxsIHBhcnQgb2YgaXQgaXMgZHJhd24uCi0gICAgICAgIAorCiAyMDE1LTAxLTIxICBH
ZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxvYzogc3Vw
cG9ydCBhbGlnbmVkIGFsbG9jYXRpb24KQEAgLTI1NzksNyArMjg1Niw3IEBACiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcyNDUKIAogICAgICAgICBS
ZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KLSAgICAgICAgCisKICAgICAgICAgVGhpcyBhZGRzIHRo
ZSBzY2FmZm9sZGluZyBmb3IgcnVubmluZyBPY3RhbmUgdmVyc2lvbiAyIGluc2lkZSBydW4tanNj
LWJlbmNobWFya3MuCiAgICAgICAgIEluIHRoZSBmdXR1cmUgd2Ugc2hvdWxkIGp1c3QgbGFuZCBP
Y3RhbmUyIGluIHRoaXMgZGlyZWN0b3J5LCBhbmQgcnVuLWpzYy1iZW5jaG1hcmtzCiAgICAgICAg
IHNob3VsZCBiZSBjaGFuZ2VkIHRvIHBvaW50IGRpcmVjdGx5IGF0IHRoaXMgZGlyZWN0b3J5IGlu
c3RlYWQgb2YgcmVxdWlyaW5nIHRoZQpAQCAtMzMxNCw3ICszNTkxLDcgQEAKIAogICAgICAgICBb
Q1NTIFNoYXBlc10gQWRkIG5vIHNoYXBlcyB2ZXJzaW9uIG9mIFJlZ2lvbnNTaGFwZXMgcGVyZm9y
bWFuY2UgdGVzdAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMxNDU1Ci0gICAgICAgIAorCiAgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4K
IAogICAgICAgICBUaGlzIGlzIGEgbm8gc2hhcGVzIHZlcnNpb24gb2YgdGhlIFJlZ2lvbnNTaGFw
ZXMgcGVyZm9ybWFuY2UgdGVzdC4gQWxsIHRoZSBjb250ZW50CkBAIC0zNDY1LDcgKzM3NDIsNyBA
QAogICAgICAgICBUaGUgZXhpc3RpbmcgdGVzdCBjaGVja3MgaWYgdGhlIGxlYWRpbmcgZGlnaXQg
b2YgYSBzdW0gc3RhcnRzIHdpdGggIi0xIi4KICAgICAgICAgSG93ZXZlciwgaXQgdHVybmVkIG91
dCB0aGF0IHRoZSBleHBlY3RlZCBzdW0gaXMgaW4gdGhlIG9yZGVyIG9mCiAgICAgICAgIC0xLjg3
MzUwMTM1NDA1NDk1MTdlLTE2IChpLmUuIHZlcnkgY2xvc2UgdG8gMCkuICBXaXRoIHNtYWxsIGVy
cm9ycyBpbgotICAgICAgICB0aGUgdGVybXMgb2YgdGhlIHN1bSBhZGRpbmcgdXAsIGl0IGlzIHZl
cnkgZWFzeSBmb3IgdGhlIHJlc3VsdGFudCBzdW0gCisgICAgICAgIHRoZSB0ZXJtcyBvZiB0aGUg
c3VtIGFkZGluZyB1cCwgaXQgaXMgdmVyeSBlYXN5IGZvciB0aGUgcmVzdWx0YW50IHN1bQogICAg
ICAgICB0byBmbHVjdHVhdGUuICBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgcmVzdWx0
YW50IHN1bSdzIG1vc3QKICAgICAgICAgc2lnbmlmaWNhbnQgZGlnaXQgd2lsbCBzdGFydCB3aXRo
IC0xIGVpdGhlci4KIApAQCAtMzYzNCw3ICszOTExLDcgQEAKIAogMjAxNC0wMi0xMCAgWm9sdGFu
IEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAotICAgICAgICBbQ1NTIFNoYXBlc10gQWRk
IGluaXRpYWwgcGVyZm9ybWFuY2UgdGVzdHMgZm9yIHBvbHlnb24gc2hhcGUgCisgICAgICAgIFtD
U1MgU2hhcGVzXSBBZGQgaW5pdGlhbCBwZXJmb3JtYW5jZSB0ZXN0cyBmb3IgcG9seWdvbiBzaGFw
ZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NTU0
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpAQCAtNDEzMyw3ICs0NDEwLDcg
QEAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjU5
NgogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXBoYW5pZSBMZXdpcy4KLSAgICAgICAgCisKICAg
ICAgICAgRXh0cmFjdGVkIGJlbmNobWFyay1ydW5uZXIuanMgYW5kIHRlc3RzLmpzIG91dCBvZiBi
ZW5jaG1hcmsuanMgYW5kIGJlbmNobWFyay5odG1sLgogCiAgICAgICAgIEFkZGVkIGEgImNsaWVu
dCIgaW50ZXJmYWNlIHRvIEJlbmNobWFya1J1bm5lciBzbyB0aGF0IGJlbmNobWFyay5odG1sIGNv
dWxkIHJlZ2lzdGVyIG5lY2Vzc2FyeSBob29rcyB0bwpAQCAtNDE2Nyw3ICs0NDQ0LDcgQEAKICAg
ICAgICAgKEJlbmNobWFya1J1bm5lci5zdGVwKTogRGl0dG8uCiAgICAgICAgIChCZW5jaG1hcmtS
dW5uZXIuX3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzKTogRGl0dG8uIE5vdGUgdGhlIGNvZGUgdG8g
dXBkYXRlIHRoZSBVSSBoYXMgYmVlbiBtb3ZlIHRvCiAgICAgICAgIGJlbmNobWFyay5odG1sLiBB
bHNvIG1vdmVkIHRoZSBjb2RlIHRvIGFjY3VtdWxhdGUgdGhlIHRvdGFscyBoZXJlIGZyb20gX2Zp
bmFsaXplLgotICAgICAgICAoQmVuY2htYXJrUnVubmVyLl9maW5hbGl6ZSk6IE1vdmVkLiAKKyAg
ICAgICAgKEJlbmNobWFya1J1bm5lci5fZmluYWxpemUpOiBNb3ZlZC4KIAogICAgICAgICAqIERv
WW91RXZlbkJlbmNoL3Jlc291cmNlcy90ZXN0cy5qczogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VU
ZXN0cy9Eb1lvdUV2ZW5CZW5jaC9iZW5jaG1hcmsuaHRtbC4KICAgICAgICAgVXNlcyBCZW5jaG1h
cmtUZXN0U3RlcCBpbnN0ZWFkIG9mIGFuIGFycmF5IGZvciBlYWNoIHRlc3Qgc3RlcC4KQEAgLTQx
NzcsMTIgKzQ0NTQsMTIgQEAKICAgICAgICAgQWxsb3cgSW1hZ2VCdWZmZXIgdG8gcmUtdXNlIElP
U3VyZmFjZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNTQ3NwogCi0gICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgVGhpcyB0ZXN0IHRpbWVzIGNyZWF0aW5n
IGEgdmFyaWV0eSBvZiBkaWZmZXJlbnQgc2l6ZXMgb2YgY2FudmFzZXMKKyAgICAgICAgb25jZSBz
b21lIGhhdmUgYWxyZWFkeSBiZWVuIGNyZWF0ZWQuIFRoZSBzZWNvbmQgY3JlYXRpb24gb2YgdGhl
CisgICAgICAgIGNhbnZhc2VzIHNob3VsZCByZS11c2UgdGhlIGV4aXN0aW5nIElPU3VyZmFjZXMu
CiAKLSAgICAgICAgVGhpcyB0ZXN0IHRpbWVzIGNyZWF0aW5nIGEgdmFyaWV0eSBvZiBkaWZmZXJl
bnQgc2l6ZXMgb2YgY2FudmFzZXMgCi0gICAgICAgIG9uY2Ugc29tZSBoYXZlIGFscmVhZHkgYmVl
biBjcmVhdGVkLiBUaGUgc2Vjb25kIGNyZWF0aW9uIG9mIHRoZSAKLSAgICAgICAgY2FudmFzZXMg
c2hvdWxkIHJlLXVzZSB0aGUgZXhpc3RpbmcgSU9TdXJmYWNlcy4gCi0gICAgICAgIAogICAgICAg
ICAqIENhbnZhcy9yZXVzZS5odG1sOiBBZGRlZC4KIAogMjAxMy0xMi0yMyAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CkBAIC00NTMxLDEzICs0ODA4LDEzIEBACiAKICAg
ICAgICAgQWRkIGxpbmUgbGF5b3V0IHBlcmZvcm1hbmNlIHRlc3QgdGhhdCBleGVyY2lzZXMgbW9y
ZSBjYXNlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI0MDQxCi0gICAgICAgIAorCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4K
IAogICAgICAgICBUaGUgZXhpc3RpbmcgbGluZS1sYXlvdXQuaHRtbCBjb3ZlcnMgdGhlIG1vc3Qg
YmFzaWMgbGVmdC1hbGlnbmVkIGNhc2Ugb25seS4KICAgICAgICAgQWRkIGEgdGVzdCB3aXRoIG1v
cmUgY292ZXJhZ2UgZm9yIHRoaW5ncyB0aGF0IGFyZSBtb3N0bHkgbm90IHlldCBzdXBwb3J0ZWQg
YnkgdGhlIHNpbXBsZQogICAgICAgICBsaW5lIGxheW91dCBwYXRoOgotICAgICAgICAKKwogICAg
ICAgICAtIGNlbnRlcmVkIHRleHQKICAgICAgICAgLSByaWdodCBhbGlnbmVkIHRleHQKICAgICAg
ICAgLSBqdXN0aWZpZWQgdGV4dApAQCAtNDgyMiw3ICs1MDk5LDcgQEAKICAgICAgICAgKiBEb1lv
dUV2ZW5CZW5jaDogQWRkZWQuCiAgICAgICAgICogRG9Zb3VFdmVuQmVuY2gvYmVuY2htYXJrLmh0
bWw6IEFkZGVkLgogICAgICAgICAqIERvWW91RXZlbkJlbmNoL2JlbmNobWFyay5qczogQWRkZWQu
Ci0gICAgICAgIChTaW1wbGVQcm9taXNlKTogCisgICAgICAgIChTaW1wbGVQcm9taXNlKToKICAg
ICAgICAgKFNpbXBsZVByb21pc2UucHJvdG90eXBlLnRoZW4pOgogICAgICAgICAoU2ltcGxlUHJv
bWlzZS5wcm90b3R5cGUucmVzb2x2ZS5lbHNlKToKICAgICAgICAgKFNpbXBsZVByb21pc2UucHJv
dG90eXBlLnJlc29sdmUpOgpAQCAtNDk0OSw3ICs1MjI2LDcgQEAKICAgICAgICAgSW50cm9kdWNl
IGEgdmVyc2lvbiBvZiBTdW5TcGlkZXIgdGhhdCBydW5zIGZvciBhIHJlYWxseSBsb25nIHRpbWUg
KGFib3V0IDEgc2VjIG9uIG15IG1hY2hpbmUpCiAKICAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkg
TWFyayBIYWhuZW5iZXJnLgotICAgICAgICAKKwogICAgICAgICBUaGlzIGlzbid0IG1lYW50IGZv
ciBzZXJpb3VzIFZNLXRvLVZNIHBlcmZvcm1hbmNlIGNvbXBhcmlzb25zLCBidXQgaXQgaXMgdXNl
ZnVsCiAgICAgICAgIHRvIHNlZSBob3cgdGhlc2UgYmVuY2htYXJrcyBiZWhhdmUgd2hlbiB0aGV5
J3JlIGNvbXBsZXRlbHkgd2FybWVkIHVwLgogCkBAIC01NDQyLDcgKzU3MTksNyBAQAogICAgICAg
ICBzaW5jZSBzdWNoIHRlc3RzIG5vIGxvbmdlciBleGlzdC4gQWxzbyBmaXhlZCB1cCB0aGUgY29k
ZSBjb21wdXRlIHktYXhpcyByYW5nZS4KIAogICAgICAgICAoY3JlYXRlVGFibGVSb3cubWFya3Vw
Rm9yUnVuKTogVXBkYXRlZCB0byB1c2UgY29uZmlkZW5jZUludGVydmFsRGVsdGEoKSBpbnN0ZWFk
IG9mIHN0ZGV2KCkuCi0gICAgICAgIAorCiAgICAgICAgIChpbml0LmFkZFRlc3RzKTogQWRkZWQu
IFJlY3Vyc2l2ZWx5IGFkZCBtZXRyaWNzLgogCiAgICAgICAgICogcmVzb3VyY2VzL3N0YXRpc3Rp
Y3MuanM6IEFkZGVkLiBJbXBvcnRlZCBmcm9tIHBlcmYud2Via2l0Lm9yZy4KQEAgLTU4MzUsNyAr
NjExMiw3IEBACiAKIDIwMTItMTAtMjkgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5v
cmc+CiAKLSAgICAgICAgVHVybiBQYWdlTG9hZCB0ZXN0cyBpbnRvIHNpbXBsZSBwZXJmb3JtYW5j
ZXRlc3RzLCBjb21taXQgIzcgKGxhc3QpIAorICAgICAgICBUdXJuIFBhZ2VMb2FkIHRlc3RzIGlu
dG8gc2ltcGxlIHBlcmZvcm1hbmNldGVzdHMsIGNvbW1pdCAjNyAobGFzdCkKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5ODk5CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpAQCAtNTg3OSw3ICs2MTU2LDcgQEAKIAogMjAxMi0xMC0y
NiAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAotICAgICAgICBUdXJuIFBh
Z2VMb2FkIHRlc3RzIGludG8gc2ltcGxlIHBlcmZvcm1hbmNldGVzdHMsIGNvbW1pdCAjNiAKKyAg
ICAgICAgVHVybiBQYWdlTG9hZCB0ZXN0cyBpbnRvIHNpbXBsZSBwZXJmb3JtYW5jZXRlc3RzLCBj
b21taXQgIzYKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk5ODk5CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpAQCAtNTkwMyw3ICs2
MTgwLDcgQEAKIAogMjAxMi0xMC0yNiAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9y
Zz4KIAotICAgICAgICBUdXJuIFBhZ2VMb2FkIHRlc3RzIGludG8gc2ltcGxlIHBlcmZvcm1hbmNl
dGVzdHMsIGNvbW1pdCAjNSAKKyAgICAgICAgVHVybiBQYWdlTG9hZCB0ZXN0cyBpbnRvIHNpbXBs
ZSBwZXJmb3JtYW5jZXRlc3RzLCBjb21taXQgIzUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk5ODk5CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3Vr
ZSBOaXdhLgpAQCAtNTkyOSw3ICs2MjA2LDcgQEAKIAogMjAxMi0xMC0yNSAgWm9sdGFuIEhvcnZh
dGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAotICAgICAgICBUdXJuIFBhZ2VMb2FkIHRlc3RzIGlu
dG8gc2ltcGxlIHBlcmZvcm1hbmNldGVzdHMsIGNvbW1pdCAjNCAKKyAgICAgICAgVHVybiBQYWdl
TG9hZCB0ZXN0cyBpbnRvIHNpbXBsZSBwZXJmb3JtYW5jZXRlc3RzLCBjb21taXQgIzQKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5ODk5CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpAQCAtNTk1MCw3ICs2MjI3LDcgQEAKIAogMjAx
Mi0xMC0yNSAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAotICAgICAgICBU
dXJuIFBhZ2VMb2FkIHRlc3RzIGludG8gc2ltcGxlIHBlcmZvcm1hbmNldGVzdHMsIGNvbW1pdCAj
MyAKKyAgICAgICAgVHVybiBQYWdlTG9hZCB0ZXN0cyBpbnRvIHNpbXBsZSBwZXJmb3JtYW5jZXRl
c3RzLCBjb21taXQgIzMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk5ODk5CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpAQCAtNTk3
Niw3ICs2MjUzLDcgQEAKIAogMjAxMi0xMC0yNCAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Vi
a2l0Lm9yZz4KIAotICAgICAgICBUdXJuIFBhZ2VMb2FkIHRlc3RzIGludG8gc2ltcGxlIHBlcmZv
cm1hbmNldGVzdHMsIGNvbW1pdCAjMiAKKyAgICAgICAgVHVybiBQYWdlTG9hZCB0ZXN0cyBpbnRv
IHNpbXBsZSBwZXJmb3JtYW5jZXRlc3RzLCBjb21taXQgIzIKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5ODk5CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Unlvc3VrZSBOaXdhLgpAQCAtNjAwMCw3ICs2Mjc3LDcgQEAKIAogMjAxMi0xMC0yNCAgWm9sdGFu
IEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAotICAgICAgICBUdXJuIFBhZ2VMb2FkIHRl
c3RzIGludG8gc2ltcGxlIHBlcmZvcm1hbmNldGVzdHMsIGNvbW1pdCAjMSAKKyAgICAgICAgVHVy
biBQYWdlTG9hZCB0ZXN0cyBpbnRvIHNpbXBsZSBwZXJmb3JtYW5jZXRlc3RzLCBjb21taXQgIzEK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5ODk5CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpAQCAtOTI3OSw3ICs5NTU2LDcgQEAK
IDIwMDYtMTItMjYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IGJyYWRlZS1vaC4KLSAgICAgICAgCisKICAgICAgICAgQWRkIG5ldyBQYWdlTG9h
ZFRlc3RzIGRpcmVjdG9yeSAodGhpcyBvbmUpCiAgICAgICAgIEFkZCBMSUNFTlNFUyBmaWxlIHRv
IGV4cGxhaW4gd2hlcmUgZWFjaCBTVkcgY2FtZSBmcm9tLgogCg==
</data>
<flag name="review"
          id="292931"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267954</attachid>
            <date>2015-12-28 10:05:23 -0800</date>
            <delta_ts>2015-12-28 10:05:23 -0800</delta_ts>
            <desc>1. Minor cleanup</desc>
            <filename>0001-Simplify-the-test-harness.patch</filename>
            <type>text/plain</type>
            <size>8909</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSA4ZWIzY2JhYjEzNmExZDNjOWRhZWMxYjFjNWQ2NWM5MDE3MTBhMmNkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTYXQs
IDI2IERlYyAyMDE1IDE1OjM2OjIyIC0wNzAwClN1YmplY3Q6IFtQQVRDSCAwMS8xM10gU2ltcGxp
ZnkgdGhlIHRlc3QgaGFybmVzcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjU2MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgoqIEFuaW1vbWV0ZXIvcmVz
b3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzOiBBcnJhbmdlIGNhbGxzCmluIHRoZSBv
cmRlciB0aGV5IGFyZSBldm9rZWQuCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVy
L2JlbmNobWFyay1ydW5uZXIuanM6CihCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUubmV4
dCk6IEdldCByaWQgb2YgcmV0dXJuIHZhbHVlIHNpbmNlCm5vIGNhbGxlciB0byBuZXh0KCkgdXNl
cyBpdC4KKEJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5wcmVwYXJlQ3VycmVudFRlc3Qp
OiBSZWZhY3RvciB0aGUKcHJvbWlzZSB0byByZXNvbHZlIHNpbXBseSB3aGVuIG9ubG9hZCgpIGlz
IGNhbGxlZCBpbnN0ZWFkIG9mCmxvb2tpbmcgZm9yICNzdGFnZS4KKEJlbmNobWFya1J1bm5lci5w
cm90b3R5cGUuX3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzKTogU3VpdGUucnVuCnNpbXBseSBjYWxs
cyBydW5CZW5jaG1hcmsoKS4gQ2FsbCBpdCBkaXJlY3RseSByYXRoZXIgdGhhbiB0aHJvdWdoCnRo
ZSBTdWl0ZS4KKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuc3RlcCk6IFJlbW92ZSB1bnVzZWQg
cGFyYW1ldGVyIGluCnJlc29sdmUgY2FsbGJhY2suCihCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBl
LnJ1bk11bHRpcGxlSXRlcmF0aW9ucyk6IFVzZSB0aGlzIGluc3RlYWQKb2Ygc2VsZiBzaW5jZSBp
dCBpcyBvdXRzaWRlIG9mIHRoZSBjbG9zdXJlIHdoaWNoIG5lZWRlZCB0aGUgc2VsZgp2YXJpYWJs
ZS4KKHJlc29sdmVJZlJlYWR5KTogRGVsZXRlZC4KKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUu
d2FpdEZvckVsZW1lbnQpOiBEZWxldGVkLgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci90
ZXN0cy5qczogcHJlcGFyZSgpIGFuZCBydW4oKSBhcmUKbm8gbG9uZ2VyIG5lZWRlZC4KKFN1aXRl
LnByb3RvdHlwZS5wcmVwYXJlKTogRGVsZXRlZC4KKFN1aXRlLnByb3RvdHlwZS5ydW4pOiBEZWxl
dGVkLgoqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL2NhbnZhcy1zdGFnZS5odG1sOiBNb3ZlIGFs
bCBzY3JpcHRzIHRvCnRoZSBlbmQgb2YgdGhlIHBhZ2UuCi0tLQogLi4uL3Jlc291cmNlcy9kZWJ1
Zy1ydW5uZXIvYW5pbW9tZXRlci5qcyAgICAgICAgICAgfCAxMCArKystLS0tCiAuLi4vcmVzb3Vy
Y2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpzICAgICB8IDM1ICsrKysrKy0tLS0t
LS0tLS0tLS0tLS0KIC4uLi9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanMgICAg
ICAgICAgIHwgMTAgLS0tLS0tLQogLi4uL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL2NhbnZhcy1z
dGFnZS5odG1sICAgICAgfCAgNiArKy0tCiBQZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICB8IDMyICsrKysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNo
YW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0
ZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5l
ci9hbmltb21ldGVyLmpzCmluZGV4IDQ4ZmQwNjcuLjc5MzFiYTEgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIu
anMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5u
ZXIvYW5pbW9tZXRlci5qcwpAQCAtMSwxNiArMSwxNiBAQAogVXRpbGl0aWVzLmV4dGVuZE9iamVj
dCh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LCB7CiAgICAgdGVzdHNDb3VudDogbnVsbCwK
ICAgICBwcm9ncmVzc0JhcjogbnVsbCwKLQotICAgIGRpZFJ1blRlc3Q6IGZ1bmN0aW9uICgpCi0g
ICAgewotICAgICAgICB0aGlzLnByb2dyZXNzQmFyLmluY1JhbmdlKCk7Ci0gICAgfSwKICAgICAK
ICAgICB3aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbjogZnVuY3Rpb24gKCkKICAgICB7CiAgICAgICAg
IHRoaXMucmVzdWx0cyA9IG5ldyBSZXN1bHRzRGFzaGJvYXJkKCk7CiAgICAgICAgIHRoaXMucHJv
Z3Jlc3NCYXIgPSBuZXcgUHJvZ3Jlc3NCYXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb2dy
ZXNzLWNvbXBsZXRlZCIpLCB0aGlzLnRlc3RzQ291bnQpOworICAgIH0sCisKKyAgICBkaWRSdW5U
ZXN0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLnByb2dyZXNzQmFyLmluY1Jhbmdl
KCk7CiAgICAgfQogfSk7CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVy
LmpzCmluZGV4IDBmNzkzYzUuLmNhNGMzOWIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVu
Y2htYXJrLXJ1bm5lci5qcwpAQCAtMjgsMjQgKzI4LDIzIEBAIEJlbmNobWFya1J1bm5lclN0YXRl
LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oKQogCiAgICAgdmFyIHN1aXRlID0gdGhpcy5fc3Vp
dGVzW3RoaXMuX3N1aXRlSW5kZXhdOwogICAgIGlmIChzdWl0ZSAmJiB0aGlzLl90ZXN0SW5kZXgg
PCBzdWl0ZS50ZXN0cy5sZW5ndGgpCi0gICAgICAgIHJldHVybiB0aGlzOworICAgICAgICByZXR1
cm47CiAKICAgICB0aGlzLl90ZXN0SW5kZXggPSAwOwogICAgIGRvIHsKICAgICAgICAgdGhpcy5f
c3VpdGVJbmRleCsrOwogICAgIH0gd2hpbGUgKHRoaXMuX3N1aXRlSW5kZXggPCB0aGlzLl9zdWl0
ZXMubGVuZ3RoICYmIHRoaXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4XS5kaXNhYmxlZCk7Ci0K
LSAgICByZXR1cm4gdGhpczsKIH07CiAKIEJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5w
cmVwYXJlQ3VycmVudFRlc3QgPSBmdW5jdGlvbihydW5uZXIsIGZyYW1lKQogewotICAgIHZhciBz
dWl0ZSA9IHRoaXMuY3VycmVudFN1aXRlKCk7CiAgICAgdmFyIHRlc3QgPSB0aGlzLmN1cnJlbnRU
ZXN0KCk7CiAgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKwogICAgIGZyYW1l
Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICBzdWl0ZS5wcmVwYXJlKHJ1bm5lciwgZnJh
bWUuY29udGVudFdpbmRvdywgZnJhbWUuY29udGVudERvY3VtZW50KS50aGVuKGZ1bmN0aW9uKHJl
c3VsdCkgeyBwcm9taXNlLnJlc29sdmUocmVzdWx0KTsgfSk7Ci0gICAgfQorICAgICAgICBwcm9t
aXNlLnJlc29sdmUoKTsKKyAgICB9OworCiAgICAgZnJhbWUuc3JjID0gInRlc3RzLyIgKyB0ZXN0
LnVybDsKICAgICByZXR1cm4gcHJvbWlzZTsKIH07CkBAIC01NywyMiArNTYsNiBAQCBmdW5jdGlv
biBCZW5jaG1hcmtSdW5uZXIoc3VpdGVzLCBmcmFtZUNvbnRhaW5lciwgY2xpZW50KQogICAgIHRo
aXMuX2ZyYW1lQ29udGFpbmVyID0gZnJhbWVDb250YWluZXI7CiB9CiAKLUJlbmNobWFya1J1bm5l
ci5wcm90b3R5cGUud2FpdEZvckVsZW1lbnQgPSBmdW5jdGlvbihzZWxlY3RvcikKLXsKLSAgICB2
YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOwotICAgIHZhciBjb250ZW50RG9jdW1lbnQg
PSB0aGlzLl9mcmFtZS5jb250ZW50RG9jdW1lbnQ7Ci0KLSAgICBmdW5jdGlvbiByZXNvbHZlSWZS
ZWFkeSgpIHsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSBjb250ZW50RG9jdW1lbnQucXVlcnlTZWxl
Y3RvcihzZWxlY3Rvcik7Ci0gICAgICAgIGlmIChlbGVtZW50KQotICAgICAgICAgICAgcmV0dXJu
IHByb21pc2UucmVzb2x2ZShlbGVtZW50KTsKLSAgICAgICAgc2V0VGltZW91dChyZXNvbHZlSWZS
ZWFkeSwgNTApOwotICAgIH0KLQotICAgIHJlc29sdmVJZlJlYWR5KCk7Ci0gICAgcmV0dXJuIHBy
b21pc2U7Ci19OwotCiBCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9hcHBlbmRGcmFtZSA9IGZ1
bmN0aW9uKCkKIHsKICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJh
bWUiKTsKQEAgLTEwMyw3ICs4Niw3IEBAIEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1blRl
c3RBbmRSZWNvcmRSZXN1bHRzID0gZnVuY3Rpb24oc3RhdGUpCiAgICAgdmFyIGNvbnRlbnRXaW5k
b3cgPSB0aGlzLl9mcmFtZS5jb250ZW50V2luZG93OwogICAgIHZhciBzZWxmID0gdGhpczsKIAot
ICAgIHN1aXRlLnJ1bihjb250ZW50V2luZG93LCB0ZXN0LCB0aGlzLl9jbGllbnQub3B0aW9ucywg
dGhpcy5fY2xpZW50LnByb2dyZXNzQmFyKS50aGVuKGZ1bmN0aW9uKHNhbXBsZXIpIHsKKyAgICBj
b250ZW50V2luZG93LnJ1bkJlbmNobWFyayhzdWl0ZSwgdGVzdCwgdGhpcy5fY2xpZW50Lm9wdGlv
bnMsIHRoaXMuX2NsaWVudC5wcm9ncmVzc0JhcikudGhlbihmdW5jdGlvbihzYW1wbGVyKSB7CiAg
ICAgICAgIHZhciBzYW1wbGVycyA9IHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1aXRlLm5hbWVdIHx8
IHt9OwogICAgICAgICBzYW1wbGVyc1t0ZXN0Lm5hbWVdID0gc2FtcGxlci50b0pTT04odHJ1ZSwg
dHJ1ZSk7CiAgICAgICAgIHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1aXRlLm5hbWVdID0gc2FtcGxl
cnM7CkBAIC0xNjYsMTAgKzE0OSwxMCBAQCBCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnJ1bk11
bHRpcGxlSXRlcmF0aW9ucyA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHNlbGYuX2NsaWVudC5k
aWRGaW5pc2hMYXN0SXRlcmF0aW9uKCk7CiAgICAgfQogCi0gICAgaWYgKHNlbGYuX2NsaWVudCAm
JiBzZWxmLl9jbGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24pCi0gICAgICAgIHNlbGYuX2Ns
aWVudC53aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbigpOworICAgIGlmICh0aGlzLl9jbGllbnQgJiYg
dGhpcy5fY2xpZW50LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKQorICAgICAgICB0aGlzLl9jbGll
bnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24oKTsKIAotICAgIHNlbGYucnVuQWxsU3RlcHMoKTsK
KyAgICB0aGlzLnJ1bkFsbFN0ZXBzKCk7CiB9OwogCiBCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBl
Ll9maW5hbGl6ZSA9IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL3Rlc3RzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Jlc291cmNlcy9ydW5uZXIvdGVzdHMuanMKaW5kZXggZjk4NDE4MS4uZmYwOGZhYSAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIv
dGVzdHMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5u
ZXIvdGVzdHMuanMKQEAgLTcsMTYgKzcsNiBAQCB2YXIgU3VpdGUgPSBmdW5jdGlvbihuYW1lLCB0
ZXN0cykgewogICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICAgdGhpcy50ZXN0cyA9IHRlc3RzOwog
fTsKLVN1aXRlLnByb3RvdHlwZS5wcmVwYXJlID0gZnVuY3Rpb24ocnVubmVyLCBjb250ZW50V2lu
ZG93LCBjb250ZW50RG9jdW1lbnQpCi17Ci0gICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVu
dCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgewotICAgICAgICByZXR1cm4gZWxl
bWVudDsKLSAgICB9KTsKLX07Ci1TdWl0ZS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24oY29udGVu
dFdpbmRvdywgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCi17Ci0gICAgcmV0dXJuIGNvbnRl
bnRXaW5kb3cucnVuQmVuY2htYXJrKHRoaXMsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsK
LX07CiAKIHZhciBTdWl0ZXMgPSBbXTsKIApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL21hc3Rlci9jYW52YXMtc3RhZ2UuaHRtbCBiL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvY2FudmFzLXN0YWdlLmh0bWwKaW5kZXggM2Y0NmFl
OS4uMjRiMDliOSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L21hc3Rlci9jYW52YXMtc3RhZ2UuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvbWFzdGVyL2NhbnZhcy1zdGFnZS5odG1sCkBAIC0yLDYgKzIsOSBAQAogPGh0bWw+
CiA8aGVhZD4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSJyZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMgaWQ9
InN0YWdlIj48L2NhbnZhcz4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29y
aXRobS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdHJp
bmdzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBs
ZXIuanMiPjwvc2NyaXB0PgpAQCAtMTEsOCArMTQsNSBAQAogICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Y2FudmFzLXN0YWdlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Nh
bnZhcy10ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8Y2FudmFzIGlk
PSJzdGFnZSI+PC9jYW52YXM+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMz
ZTc2MTkuLjc3ZGI2NGQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTUtMTIt
MjYgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IHRoZSB0
ZXN0IGhhcm5lc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjU2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanM6IEFy
cmFuZ2UgY2FsbHMKKyAgICAgICAgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIGV2b2tlZC4KKyAgICAg
ICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5q
czoKKyAgICAgICAgKEJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5uZXh0KTogR2V0IHJp
ZCBvZiByZXR1cm4gdmFsdWUgc2luY2UKKyAgICAgICAgbm8gY2FsbGVyIHRvIG5leHQoKSB1c2Vz
IGl0LgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLnByZXBhcmVDdXJy
ZW50VGVzdCk6IFJlZmFjdG9yIHRoZQorICAgICAgICBwcm9taXNlIHRvIHJlc29sdmUgc2ltcGx5
IHdoZW4gb25sb2FkKCkgaXMgY2FsbGVkIGluc3RlYWQgb2YKKyAgICAgICAgbG9va2luZyBmb3Ig
I3N0YWdlLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuVGVzdEFuZFJl
Y29yZFJlc3VsdHMpOiBTdWl0ZS5ydW4KKyAgICAgICAgc2ltcGx5IGNhbGxzIHJ1bkJlbmNobWFy
aygpLiBDYWxsIGl0IGRpcmVjdGx5IHJhdGhlciB0aGFuIHRocm91Z2gKKyAgICAgICAgdGhlIFN1
aXRlLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5zdGVwKTogUmVtb3ZlIHVu
dXNlZCBwYXJhbWV0ZXIgaW4KKyAgICAgICAgcmVzb2x2ZSBjYWxsYmFjay4KKyAgICAgICAgKEJl
bmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuTXVsdGlwbGVJdGVyYXRpb25zKTogVXNlIHRoaXMg
aW5zdGVhZAorICAgICAgICBvZiBzZWxmIHNpbmNlIGl0IGlzIG91dHNpZGUgb2YgdGhlIGNsb3N1
cmUgd2hpY2ggbmVlZGVkIHRoZSBzZWxmCisgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAocmVz
b2x2ZUlmUmVhZHkpOiBEZWxldGVkLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlw
ZS53YWl0Rm9yRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJj
ZXMvcnVubmVyL3Rlc3RzLmpzOiBwcmVwYXJlKCkgYW5kIHJ1bigpIGFyZQorICAgICAgICBubyBs
b25nZXIgbmVlZGVkLgorICAgICAgICAoU3VpdGUucHJvdG90eXBlLnByZXBhcmUpOiBEZWxldGVk
LgorICAgICAgICAoU3VpdGUucHJvdG90eXBlLnJ1bik6IERlbGV0ZWQuCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9tYXN0ZXIvY2FudmFzLXN0YWdlLmh0bWw6IE1vdmUgYWxsIHNjcmlwdHMg
dG8KKyAgICAgICAgdGhlIGVuZCBvZiB0aGUgcGFnZS4KKwogMjAxNS0xMi0yMyAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gQW5pbW9tZXRl
ciBkZXZlbG9wZXIgdGVzdCB3aGljaCBhbmltYXRlcyB0ZXh0LXJpY2ggYm94ZXMKLS0gCjIuNS40
IChBcHBsZSBHaXQtNjEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267955</attachid>
            <date>2015-12-28 10:05:44 -0800</date>
            <delta_ts>2015-12-28 10:05:44 -0800</delta_ts>
            <desc>2. Refactor the subclass pattern.</desc>
            <filename>0002-Simplify-the-test-harness.patch</filename>
            <type>text/plain</type>
            <size>150185</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSA1NTdhZTkwMWRhOTA3ZDA5ZjQwMjA5MWZhNzc3OTVjMzVjOTFkNDY2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTYXQs
IDI2IERlYyAyMDE1IDIzOjQ0OjE3IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAwMi8xM10gU2ltcGxp
ZnkgdGhlIHRlc3QgaGFybmVzcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjU2MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpSZWZhY3RvciB0aGUgc3Vi
Y2xhc3MgcGF0dGVybi4gSW50cm9kdWNlIFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcygpLgoKKiBB
bmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qczoKKiBB
bmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzOgood2luZG93LlV0aWxpdGllcy5jcmVh
dGVTdWJjbGFzcyk6IFRha2VzIHRoZSBzdXBlciBjbGFzcywgYSBmdW5jdGlvbiByZXByZXNlbnRp
bmcKdGhlIGNsYXNzJ3MgY29uc3RydWN0b3IsIGFuZCBhZGRpdGlvbmFsIG1ldGhvZHMgdG8gYXR0
YWNoIHRvIHRoZSBuZXcgY2xhc3Mncwpwcm90b3R5cGUgb2JqZWN0LgoqIEFuaW1vbWV0ZXIvdGVz
dHMvdGV4dC90ZXh0LWJveGVzLmh0bWw6IFJlbW92ZSB1bm5lZWRlZCByZWZlcmVuY2UgdG8gdXRp
bGl0aWVzLmpzLgoKUmVmYWN0b3IgdGVzdHMuCiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanM6CiogQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0
aWNsZXMuanM6CiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2Vz
L2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanM6CiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFnZXMuanM6CiogQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanM6
CiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5n
LXBhcnRpY2xlcy5qczoKKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNv
dXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qczoKKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXBhcnRpY2xlcy5qczoKKiBBbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBl
cy5qczoKKiBBbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ry
b25zLmpzOgoqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFy
cy5qczoKKiBBbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpz
OgoqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanM6Ciog
QW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmpz
OgoqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzOgoqIEFuaW1vbWV0ZXIvdGVz
dHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLXBhdGhzLmpzOgoqIEFuaW1vbWV0ZXIv
dGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLmpzOgoqIEFuaW1vbWV0ZXIvdGVz
dHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5qczoKKiBBbmltb21ldGVyL3Rl
c3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jc3MuanM6CiogQW5pbW9tZXRlci90ZXN0
cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzOgoqIEFuaW1vbWV0ZXIvdGVzdHMv
dGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qczogUmVvcmRlciBzb21lIG9mIHRoZSBtZXRo
b2RzCmFuZCBwcm9wZXJ0aWVzIHNpbmNlIHRoZXkgcmVseSBvbiBlYWNoIG90aGVyLgoqIEFuaW1v
bWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvdGV4dC1ib3hlcy5qczoKLS0tCiAuLi4vcmVzb3Vy
Y2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpzICAgICB8IDI4NCArKysrKystLS0t
LS0KIC4uLi9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzICAgICAgICAgICAgIHwg
ICA5ICsKIC4uLi9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcyAgICAgICAgICAg
IHwgIDg3ICsrLS0KIC4uLi9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcyAg
ICAgICAgIHwgMTc1ICsrKystLS0tCiAuLi4vcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFw
ZXMuanMgICAgICAgICAgICB8IDE0NSArKystLS0tCiAuLi4vcmVzb3VyY2VzL2JvdW5jaW5nLWNz
cy1pbWFnZXMuanMgICAgICAgICAgICAgICB8IDExMyArKystLQogLi4uL3Jlc291cmNlcy9ib3Vu
Y2luZy1jc3Mtc2hhcGVzLmpzICAgICAgICAgICAgICAgfCAxMjUgKysrLS0tCiAuLi4vcmVzb3Vy
Y2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyAgICAgICAgICAgICAgICB8IDExNiArKystLQogLi4u
L3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzICAgICAgICAgICAgICAgfCAgNzcgKyst
LQogLi4uL3Jlc291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzICAgICAgICAgICAgfCAx
MTIgKysrLS0KIC4uLi9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcyAgICAgICAgICAg
ICAgIHwgMTcxICsrKystLS0tCiAuLi4vdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1l
bGVjdHJvbnMuanMgICB8IDE5OSArKysrKy0tLS0KIC4uLi90ZXN0cy9leGFtcGxlcy9yZXNvdXJj
ZXMvY2FudmFzLXN0YXJzLmpzICAgICAgIHwgMjA1ICsrKysrLS0tLQogLi4uL3Rlc3RzL21hc3Rl
ci9yZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpzICAgICAgICAgfCAxMTMgKystLS0KIC4uLi90ZXN0
cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5qcyAgICAgICAgIHwgMTYxICsrKy0tLS0K
IC4uLi90ZXN0cy9taXNjL3Jlc291cmNlcy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmpzIHwgMTAx
ICsrKy0tCiAuLi4vQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMgICAgICAgICAg
ICB8IDEyOCArKystLS0KIC4uLi90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMt
cGF0aHMuanMgIHwgMjI1ICsrKysrLS0tLS0KIC4uLi90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3Np
bXBsZS1jYW52YXMuanMgICAgICAgIHwgMTEyICsrLS0tCiAuLi4vdGVzdHMvdGVtcGxhdGUvcmVz
b3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5qcyAgICB8IDE3OSArKysrLS0tLQogLi4uL3Rlc3RzL3Rl
bXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jc3MuanMgICAgICAgfCAgODIgKystLQogLi4uL3Rl
c3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcuanMgICAgICAgfCAgODIgKystLQog
Li4uL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMgICAgICAgICAgfCA0NzQg
KysrKysrKysrKystLS0tLS0tLS0tCiAuLi4vQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNl
cy90ZXh0LWJveGVzLmpzICB8IDExNyArKystLQogLi4uL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC90
ZXh0LWJveGVzLmh0bWwgICAgICAgICAgfCAgIDEgLQogUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDEgKysKIDI2IGZpbGVzIGNoYW5nZWQsIDE4
MzMgaW5zZXJ0aW9ucygrKSwgMTgwMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVu
bmVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5u
ZXIvYmVuY2htYXJrLXJ1bm5lci5qcwppbmRleCBjYTRjMzliLi4wNDdiY2RkIDEwMDY0NAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5j
aG1hcmstcnVubmVyLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMKQEAgLTYsNDcgKzYsNDkgQEAgZnVu
Y3Rpb24gQmVuY2htYXJrUnVubmVyU3RhdGUoc3VpdGVzKQogICAgIHRoaXMubmV4dCgpOwogfQog
Ci1CZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuY3VycmVudFN1aXRlID0gZnVuY3Rpb24o
KQotewotICAgIHJldHVybiB0aGlzLl9zdWl0ZXNbdGhpcy5fc3VpdGVJbmRleF07Ci19OwotCi1C
ZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuY3VycmVudFRlc3QgPSBmdW5jdGlvbigpCi17
Ci0gICAgdmFyIHN1aXRlID0gdGhpcy5jdXJyZW50U3VpdGUoKTsKLSAgICByZXR1cm4gc3VpdGUg
PyBzdWl0ZS50ZXN0c1t0aGlzLl90ZXN0SW5kZXhdIDogbnVsbDsKLX07Ci0KLUJlbmNobWFya1J1
bm5lclN0YXRlLnByb3RvdHlwZS5pc0ZpcnN0VGVzdCA9IGZ1bmN0aW9uKCkKLXsKLSAgICByZXR1
cm4gIXRoaXMuX3Rlc3RJbmRleDsKLX07Ci0KLUJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlw
ZS5uZXh0ID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX3Rlc3RJbmRleCsrOwotCi0gICAgdmFy
IHN1aXRlID0gdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdOwotICAgIGlmIChzdWl0ZSAm
JiB0aGlzLl90ZXN0SW5kZXggPCBzdWl0ZS50ZXN0cy5sZW5ndGgpCi0gICAgICAgIHJldHVybjsK
LQotICAgIHRoaXMuX3Rlc3RJbmRleCA9IDA7Ci0gICAgZG8gewotICAgICAgICB0aGlzLl9zdWl0
ZUluZGV4Kys7Ci0gICAgfSB3aGlsZSAodGhpcy5fc3VpdGVJbmRleCA8IHRoaXMuX3N1aXRlcy5s
ZW5ndGggJiYgdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdLmRpc2FibGVkKTsKLX07Ci0K
LUJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5wcmVwYXJlQ3VycmVudFRlc3QgPSBmdW5j
dGlvbihydW5uZXIsIGZyYW1lKQotewotICAgIHZhciB0ZXN0ID0gdGhpcy5jdXJyZW50VGVzdCgp
OwotICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7CitCZW5jaG1hcmtSdW5uZXJT
dGF0ZS5wcm90b3R5cGUgPSB7CisgICAgY3VycmVudFN1aXRlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdOworICAgIH0sCisK
KyAgICBjdXJyZW50VGVzdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHN1aXRlID0g
dGhpcy5jdXJyZW50U3VpdGUoKTsKKyAgICAgICAgcmV0dXJuIHN1aXRlID8gc3VpdGUudGVzdHNb
dGhpcy5fdGVzdEluZGV4XSA6IG51bGw7CisgICAgfSwKKworICAgIGlzRmlyc3RUZXN0OiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gIXRoaXMuX3Rlc3RJbmRleDsKKyAgICB9LAor
CisgICAgbmV4dDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fdGVzdEluZGV4Kys7
CisKKyAgICAgICAgdmFyIHN1aXRlID0gdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdOwor
ICAgICAgICBpZiAoc3VpdGUgJiYgdGhpcy5fdGVzdEluZGV4IDwgc3VpdGUudGVzdHMubGVuZ3Ro
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3Rlc3RJbmRleCA9IDA7Cisg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgIHRoaXMuX3N1aXRlSW5kZXgrKzsKKyAgICAgICAgfSB3
aGlsZSAodGhpcy5fc3VpdGVJbmRleCA8IHRoaXMuX3N1aXRlcy5sZW5ndGggJiYgdGhpcy5fc3Vp
dGVzW3RoaXMuX3N1aXRlSW5kZXhdLmRpc2FibGVkKTsKKyAgICB9LAorCisgICAgcHJlcGFyZUN1
cnJlbnRUZXN0OiBmdW5jdGlvbihydW5uZXIsIGZyYW1lKQorICAgIHsKKyAgICAgICAgdmFyIHRl
c3QgPSB0aGlzLmN1cnJlbnRUZXN0KCk7CisgICAgICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBs
ZVByb21pc2U7CiAKLSAgICBmcmFtZS5vbmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKCk7Ci0gICAgfTsKKyAgICAgICAgZnJhbWUub25sb2FkID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgfTsKIAotICAgIGZy
YW1lLnNyYyA9ICJ0ZXN0cy8iICsgdGVzdC51cmw7Ci0gICAgcmV0dXJuIHByb21pc2U7CisgICAg
ICAgIGZyYW1lLnNyYyA9ICJ0ZXN0cy8iICsgdGVzdC51cmw7CisgICAgICAgIHJldHVybiBwcm9t
aXNlOworICAgIH0KIH07CiAKIGZ1bmN0aW9uIEJlbmNobWFya1J1bm5lcihzdWl0ZXMsIGZyYW1l
Q29udGFpbmVyLCBjbGllbnQpCkBAIC01NiwxMTIgKzU4LDExNCBAQCBmdW5jdGlvbiBCZW5jaG1h
cmtSdW5uZXIoc3VpdGVzLCBmcmFtZUNvbnRhaW5lciwgY2xpZW50KQogICAgIHRoaXMuX2ZyYW1l
Q29udGFpbmVyID0gZnJhbWVDb250YWluZXI7CiB9CiAKLUJlbmNobWFya1J1bm5lci5wcm90b3R5
cGUuX2FwcGVuZEZyYW1lID0gZnVuY3Rpb24oKQotewotICAgIHZhciBmcmFtZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwotICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgic2Nyb2xs
aW5nIiwgIm5vIik7Ci0KLSAgICB0aGlzLl9mcmFtZUNvbnRhaW5lci5pbnNlcnRCZWZvcmUoZnJh
bWUsIHRoaXMuX2ZyYW1lQ29udGFpbmVyLmZpcnN0Q2hpbGQpOwotICAgIHRoaXMuX2ZyYW1lID0g
ZnJhbWU7Ci0gICAgcmV0dXJuIGZyYW1lOwotfTsKLQotQmVuY2htYXJrUnVubmVyLnByb3RvdHlw
ZS5fcmVtb3ZlRnJhbWUgPSBmdW5jdGlvbigpCi17Ci0gICAgaWYgKHRoaXMuX2ZyYW1lKSB7Ci0g
ICAgICAgIHRoaXMuX2ZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fZnJhbWUpOwot
ICAgICAgICB0aGlzLl9mcmFtZSA9IG51bGw7Ci0gICAgfQotfTsKLQotQmVuY2htYXJrUnVubmVy
LnByb3RvdHlwZS5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMgPSBmdW5jdGlvbihzdGF0ZSkKLXsK
LSAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOwotICAgIHZhciBzdWl0ZSA9IHN0
YXRlLmN1cnJlbnRTdWl0ZSgpOwotICAgIHZhciB0ZXN0ID0gc3RhdGUuY3VycmVudFRlc3QoKTsK
LSAgICAKLSAgICBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC53aWxsUnVuVGVzdCkK
LSAgICAgICAgdGhpcy5fY2xpZW50LndpbGxSdW5UZXN0KHN1aXRlLCB0ZXN0KTsKLQotICAgIHZh
ciBjb250ZW50V2luZG93ID0gdGhpcy5fZnJhbWUuY29udGVudFdpbmRvdzsKLSAgICB2YXIgc2Vs
ZiA9IHRoaXM7Ci0KLSAgICBjb250ZW50V2luZG93LnJ1bkJlbmNobWFyayhzdWl0ZSwgdGVzdCwg
dGhpcy5fY2xpZW50Lm9wdGlvbnMsIHRoaXMuX2NsaWVudC5wcm9ncmVzc0JhcikudGhlbihmdW5j
dGlvbihzYW1wbGVyKSB7Ci0gICAgICAgIHZhciBzYW1wbGVycyA9IHNlbGYuX3N1aXRlc1NhbXBs
ZXJzW3N1aXRlLm5hbWVdIHx8IHt9OwotICAgICAgICBzYW1wbGVyc1t0ZXN0Lm5hbWVdID0gc2Ft
cGxlci50b0pTT04odHJ1ZSwgdHJ1ZSk7Ci0gICAgICAgIHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1
aXRlLm5hbWVdID0gc2FtcGxlcnM7Ci0KLSAgICAgICAgaWYgKHNlbGYuX2NsaWVudCAmJiBzZWxm
Ll9jbGllbnQuZGlkUnVuVGVzdCkKLSAgICAgICAgICAgIHNlbGYuX2NsaWVudC5kaWRSdW5UZXN0
KHN1aXRlLCB0ZXN0KTsKLSAgICAgICAgCi0gICAgICAgIHN0YXRlLm5leHQoKTsKLSAgICAgICAg
aWYgKHN0YXRlLmN1cnJlbnRTdWl0ZSgpICE9IHN1aXRlKQotICAgICAgICAgICAgc2VsZi5fcmVt
b3ZlRnJhbWUoKTsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHN0YXRlKTsKLSAgICB9KTsKLSAg
ICAKLSAgICByZXR1cm4gcHJvbWlzZTsKLX07Ci0KLUJlbmNobWFya1J1bm5lci5wcm90b3R5cGUu
c3RlcCA9IGZ1bmN0aW9uKHN0YXRlKQotewotICAgIGlmICghc3RhdGUpIHsKLSAgICAgICAgc3Rh
dGUgPSBuZXcgQmVuY2htYXJrUnVubmVyU3RhdGUodGhpcy5fc3VpdGVzKTsKLSAgICAgICAgdGhp
cy5fc3VpdGVzU2FtcGxlcnMgPSB7fTsKLSAgICB9Ci0KLSAgICB2YXIgc3VpdGUgPSBzdGF0ZS5j
dXJyZW50U3VpdGUoKTsKLSAgICBpZiAoIXN1aXRlKSB7Ci0gICAgICAgIHRoaXMuX2ZpbmFsaXpl
KCk7CitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlID0geworICAgIF9hcHBlbmRGcmFtZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaWZyYW1lIik7CisgICAgICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgic2Nyb2xsaW5nIiwgIm5v
Iik7CisKKyAgICAgICAgdGhpcy5fZnJhbWVDb250YWluZXIuaW5zZXJ0QmVmb3JlKGZyYW1lLCB0
aGlzLl9mcmFtZUNvbnRhaW5lci5maXJzdENoaWxkKTsKKyAgICAgICAgdGhpcy5fZnJhbWUgPSBm
cmFtZTsKKyAgICAgICAgcmV0dXJuIGZyYW1lOworICAgIH0sCisKKyAgICBfcmVtb3ZlRnJhbWU6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9mcmFtZSkgeworICAgICAgICAg
ICAgdGhpcy5fZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9mcmFtZSk7CisgICAg
ICAgICAgICB0aGlzLl9mcmFtZSA9IG51bGw7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX3J1
blRlc3RBbmRSZWNvcmRSZXN1bHRzOiBmdW5jdGlvbihzdGF0ZSkKKyAgICB7CiAgICAgICAgIHZh
ciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZSgp
OwotICAgICAgICByZXR1cm4gcHJvbWlzZTsKLSAgICB9CisgICAgICAgIHZhciBzdWl0ZSA9IHN0
YXRlLmN1cnJlbnRTdWl0ZSgpOworICAgICAgICB2YXIgdGVzdCA9IHN0YXRlLmN1cnJlbnRUZXN0
KCk7CiAKLSAgICBpZiAoc3RhdGUuaXNGaXJzdFRlc3QoKSkgewotICAgICAgICB0aGlzLl9hcHBl
bmRGcmFtZSgpOwotICAgIH0KKyAgICAgICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGll
bnQud2lsbFJ1blRlc3QpCisgICAgICAgICAgICB0aGlzLl9jbGllbnQud2lsbFJ1blRlc3Qoc3Vp
dGUsIHRlc3QpOwogCi0gICAgcmV0dXJuIHN0YXRlLnByZXBhcmVDdXJyZW50VGVzdCh0aGlzLCB0
aGlzLl9mcmFtZSkudGhlbihmdW5jdGlvbihwcmVwYXJlUmV0dXJuVmFsdWUpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzKHN0YXRlKTsKLSAgICB9LmJpbmQo
dGhpcykpOwotfTsKKyAgICAgICAgdmFyIGNvbnRlbnRXaW5kb3cgPSB0aGlzLl9mcmFtZS5jb250
ZW50V2luZG93OworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAKLUJlbmNobWFya1J1bm5lci5w
cm90b3R5cGUucnVuQWxsU3RlcHMgPSBmdW5jdGlvbihzdGFydGluZ1N0YXRlKQotewotICAgIHZh
ciBuZXh0Q2FsbGVlID0gdGhpcy5ydW5BbGxTdGVwcy5iaW5kKHRoaXMpOwotICAgIHRoaXMuc3Rl
cChzdGFydGluZ1N0YXRlKS50aGVuKGZ1bmN0aW9uKG5leHRTdGF0ZSkgewotICAgICAgICBpZiAo
bmV4dFN0YXRlKQotICAgICAgICAgICAgbmV4dENhbGxlZShuZXh0U3RhdGUpOwotICAgIH0pOwot
fTsKKyAgICAgICAgY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsoc3VpdGUsIHRlc3QsIHRoaXMu
X2NsaWVudC5vcHRpb25zLCB0aGlzLl9jbGllbnQucHJvZ3Jlc3NCYXIpLnRoZW4oZnVuY3Rpb24o
c2FtcGxlcikgeworICAgICAgICAgICAgdmFyIHNhbXBsZXJzID0gc2VsZi5fc3VpdGVzU2FtcGxl
cnNbc3VpdGUubmFtZV0gfHwge307CisgICAgICAgICAgICBzYW1wbGVyc1t0ZXN0Lm5hbWVdID0g
c2FtcGxlci50b0pTT04odHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBzZWxmLl9zdWl0ZXNTYW1w
bGVyc1tzdWl0ZS5uYW1lXSA9IHNhbXBsZXJzOwogCi1CZW5jaG1hcmtSdW5uZXIucHJvdG90eXBl
LnJ1bk11bHRpcGxlSXRlcmF0aW9ucyA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgc2VsZiA9IHRo
aXM7Ci0gICAgdmFyIGN1cnJlbnRJdGVyYXRpb24gPSAwOwotCi0gICAgdGhpcy5fcnVuTmV4dEl0
ZXJhdGlvbiA9IGZ1bmN0aW9uKCkgewotICAgICAgICBjdXJyZW50SXRlcmF0aW9uKys7Ci0gICAg
ICAgIGlmIChjdXJyZW50SXRlcmF0aW9uIDwgc2VsZi5fY2xpZW50Lml0ZXJhdGlvbkNvdW50KQot
ICAgICAgICAgICAgc2VsZi5ydW5BbGxTdGVwcygpOwotICAgICAgICBlbHNlIGlmICh0aGlzLl9j
bGllbnQgJiYgdGhpcy5fY2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRpb24pCi0gICAgICAgICAg
ICBzZWxmLl9jbGllbnQuZGlkRmluaXNoTGFzdEl0ZXJhdGlvbigpOwotICAgIH0KKyAgICAgICAg
ICAgIGlmIChzZWxmLl9jbGllbnQgJiYgc2VsZi5fY2xpZW50LmRpZFJ1blRlc3QpCisgICAgICAg
ICAgICAgICAgc2VsZi5fY2xpZW50LmRpZFJ1blRlc3Qoc3VpdGUsIHRlc3QpOwogCi0gICAgaWYg
KHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24pCi0g
ICAgICAgIHRoaXMuX2NsaWVudC53aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbigpOworICAgICAgICAg
ICAgc3RhdGUubmV4dCgpOworICAgICAgICAgICAgaWYgKHN0YXRlLmN1cnJlbnRTdWl0ZSgpICE9
IHN1aXRlKQorICAgICAgICAgICAgICAgIHNlbGYuX3JlbW92ZUZyYW1lKCk7CisgICAgICAgICAg
ICBwcm9taXNlLnJlc29sdmUoc3RhdGUpOworICAgICAgICB9KTsKIAotICAgIHRoaXMucnVuQWxs
U3RlcHMoKTsKLX07Ci0KLUJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX2ZpbmFsaXplID0gZnVu
Y3Rpb24oKQotewotICAgIHRoaXMuX3JlbW92ZUZyYW1lKCk7Ci0gICAgICAgIAotICAgIGlmICh0
aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50LmRpZFJ1blN1aXRlcykKLSAgICAgICAgdGhpcy5f
Y2xpZW50LmRpZFJ1blN1aXRlcyh0aGlzLl9zdWl0ZXNTYW1wbGVycyk7Ci0KLSAgICBpZiAodGhp
cy5fcnVuTmV4dEl0ZXJhdGlvbikKLSAgICAgICAgdGhpcy5fcnVuTmV4dEl0ZXJhdGlvbigpOwor
ICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICB9LAorCisgICAgc3RlcDogZnVuY3Rpb24oc3Rh
dGUpCisgICAgeworICAgICAgICBpZiAoIXN0YXRlKSB7CisgICAgICAgICAgICBzdGF0ZSA9IG5l
dyBCZW5jaG1hcmtSdW5uZXJTdGF0ZSh0aGlzLl9zdWl0ZXMpOworICAgICAgICAgICAgdGhpcy5f
c3VpdGVzU2FtcGxlcnMgPSB7fTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBzdWl0ZSA9IHN0
YXRlLmN1cnJlbnRTdWl0ZSgpOworICAgICAgICBpZiAoIXN1aXRlKSB7CisgICAgICAgICAgICB0
aGlzLl9maW5hbGl6ZSgpOworICAgICAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJv
bWlzZTsKKyAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgICAgICAgICAgcmV0dXJu
IHByb21pc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhdGUuaXNGaXJzdFRlc3QoKSkg
eworICAgICAgICAgICAgdGhpcy5fYXBwZW5kRnJhbWUoKTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBzdGF0ZS5wcmVwYXJlQ3VycmVudFRlc3QodGhpcywgdGhpcy5fZnJhbWUpLnRoZW4o
ZnVuY3Rpb24ocHJlcGFyZVJldHVyblZhbHVlKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5f
cnVuVGVzdEFuZFJlY29yZFJlc3VsdHMoc3RhdGUpOworICAgICAgICB9LmJpbmQodGhpcykpOwor
ICAgIH0sCisKKyAgICBydW5BbGxTdGVwczogZnVuY3Rpb24oc3RhcnRpbmdTdGF0ZSkKKyAgICB7
CisgICAgICAgIHZhciBuZXh0Q2FsbGVlID0gdGhpcy5ydW5BbGxTdGVwcy5iaW5kKHRoaXMpOwor
ICAgICAgICB0aGlzLnN0ZXAoc3RhcnRpbmdTdGF0ZSkudGhlbihmdW5jdGlvbihuZXh0U3RhdGUp
IHsKKyAgICAgICAgICAgIGlmIChuZXh0U3RhdGUpCisgICAgICAgICAgICAgICAgbmV4dENhbGxl
ZShuZXh0U3RhdGUpOworICAgICAgICB9KTsKKyAgICB9LAorCisgICAgcnVuTXVsdGlwbGVJdGVy
YXRpb25zOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAg
ICAgIHZhciBjdXJyZW50SXRlcmF0aW9uID0gMDsKKworICAgICAgICB0aGlzLl9ydW5OZXh0SXRl
cmF0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjdXJyZW50SXRlcmF0aW9uKys7Cisg
ICAgICAgICAgICBpZiAoY3VycmVudEl0ZXJhdGlvbiA8IHNlbGYuX2NsaWVudC5pdGVyYXRpb25D
b3VudCkKKyAgICAgICAgICAgICAgICBzZWxmLnJ1bkFsbFN0ZXBzKCk7CisgICAgICAgICAgICBl
bHNlIGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRp
b24pCisgICAgICAgICAgICAgICAgc2VsZi5fY2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRpb24o
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50
LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKQorICAgICAgICAgICAgdGhpcy5fY2xpZW50LndpbGxT
dGFydEZpcnN0SXRlcmF0aW9uKCk7CisKKyAgICAgICAgdGhpcy5ydW5BbGxTdGVwcygpOworICAg
IH0sCisKKyAgICBfZmluYWxpemU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jl
bW92ZUZyYW1lKCk7CisKKyAgICAgICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQu
ZGlkUnVuU3VpdGVzKQorICAgICAgICAgICAgdGhpcy5fY2xpZW50LmRpZFJ1blN1aXRlcyh0aGlz
Ll9zdWl0ZXNTYW1wbGVycyk7CisKKyAgICAgICAgaWYgKHRoaXMuX3J1bk5leHRJdGVyYXRpb24p
CisgICAgICAgICAgICB0aGlzLl9ydW5OZXh0SXRlcmF0aW9uKCk7CisgICAgfQogfTsKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcwpp
bmRleCA3MzhhYjQ0Li44NjA3Njg4IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzCkBAIC01MDYsNSArNTA2LDE0IEBAIHdpbmRv
dy5VdGlsaXRpZXMgPQogICAgIG1lcmdlT2JqZWN0czogZnVuY3Rpb24ob2JqMSwgb2JqMikKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLmV4dGVuZE9iamVjdCh0aGlzLmNvcHlPYmplY3Qob2Jq
MSksIG9iajIpOworICAgIH0sCisKKyAgICBjcmVhdGVTdWJjbGFzczogZnVuY3Rpb24oc3VwZXJj
bGFzcywgY2xhc3NDb25zdHJ1Y3RvciwgZXh0ZW5kKQorICAgIHsKKyAgICAgICAgY2xhc3NDb25z
dHJ1Y3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyY2xhc3MucHJvdG90eXBlKTsK
KyAgICAgICAgY2xhc3NDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjbGFzc0Nv
bnN0cnVjdG9yOworICAgICAgICBpZiAoZXh0ZW5kKQorICAgICAgICAgICAgVXRpbGl0aWVzLmV4
dGVuZE9iamVjdChjbGFzc0NvbnN0cnVjdG9yLnByb3RvdHlwZSwgZXh0ZW5kKTsKKyAgICAgICAg
cmV0dXJuIGNsYXNzQ29uc3RydWN0b3I7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctY2FudmFzLWltYWdlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMK
aW5kZXggMjhhNzgxMS4uZWM0YTYzYiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFz
LWltYWdlcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCkBAIC0xLDQ5
ICsxLDQ2IEBACi1mdW5jdGlvbiBCb3VuY2luZ0NhbnZhc0ltYWdlKHN0YWdlKQoteworQm91bmNp
bmdDYW52YXNJbWFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlLAorICAgIGZ1bmN0aW9uKHN0YWdlKQorICAgIHsKICAgICBCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOwotICAgIHRoaXMuX2ltYWdlRWxlbWVudCA9IHN0YWdl
LmltYWdlRWxlbWVudDsKLSAgICB0aGlzLl9zaGFwZSA9ICJpbWFnZSI7Ci19Ci0KLUJvdW5jaW5n
Q2FudmFzSW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRp
Y2xlLnByb3RvdHlwZSk7Ci1Cb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2U7Ci0KLUJvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBl
Ll9kcmF3ID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOwotICAgICAg
ICB0aGlzLl9hcHBseVJvdGF0aW9uKCk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQuZHJhd0ltYWdl
KHRoaXMuX2ltYWdlRWxlbWVudCwgMCwgMCwgdGhpcy5fc2l6ZS54LCB0aGlzLl9zaXplLnkpOwot
ICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOwotfQotCi1mdW5jdGlvbiBCb3VuY2luZ0NhbnZh
c0ltYWdlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCi17Ci0gICAgQm91bmNpbmdDYW52YXNQYXJ0
aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOwotCi0gICAgdmFyIGltYWdl
U3JjID0gb3B0aW9uc1siaW1hZ2VTcmMiXSB8fCAicmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7Ci0g
ICAgdGhpcy5pbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuaGlkZGVuW3Ny
Yz1cIiIgKyBpbWFnZVNyYyArICJcIl0iKTsKLX0KLQotQm91bmNpbmdDYW52YXNJbWFnZXNTdGFn
ZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2Uu
cHJvdG90eXBlKTsKLUJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZTsKLQotQm91bmNpbmdDYW52YXNJbWFnZXNT
dGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0dXJu
IG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlKHRoaXMpOwotfQotCi1mdW5jdGlvbiBCb3VuY2luZ0Nh
bnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCi17
Ci0gICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotfQotCi1Cb3VuY2luZ0NhbnZhc0ltYWdlc0Jl
bmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nQ2FudmFzUGFydGljbGVz
QmVuY2htYXJrLnByb3RvdHlwZSk7Ci1Cb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyazsKLQotQm91
bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rp
b24oZWxlbWVudCkKLXsKLSAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2Uo
ZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Ci19CisgICAgICAgIHRoaXMuX2ltYWdlRWxlbWVudCA9
IHN0YWdlLmltYWdlRWxlbWVudDsKKyAgICAgICAgdGhpcy5fc2hhcGUgPSAiaW1hZ2UiOworICAg
IH0sIHsKKworICAgIF9kcmF3OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9jb250
ZXh0LnNhdmUoKTsKKyAgICAgICAgICAgIHRoaXMuX2FwcGx5Um90YXRpb24oKTsKKyAgICAgICAg
ICAgIHRoaXMuX2NvbnRleHQuZHJhd0ltYWdlKHRoaXMuX2ltYWdlRWxlbWVudCwgMCwgMCwgdGhp
cy5fc2l6ZS54LCB0aGlzLl9zaXplLnkpOworICAgICAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUo
KTsKKyAgICB9Cit9KTsKKworQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZSA9IFV0aWxpdGllcy5j
cmVhdGVTdWJjbGFzcyhCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlLAorICAgIGZ1bmN0aW9u
KGVsZW1lbnQsIG9wdGlvbnMpCisgICAgeworICAgICAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xl
c1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisKKyAgICAgICAgdmFyIGltYWdl
U3JjID0gb3B0aW9uc1siaW1hZ2VTcmMiXSB8fCAicmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7Cisg
ICAgICAgIHRoaXMuaW1hZ2VFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmhpZGRl
bltzcmM9XCIiICsgaW1hZ2VTcmMgKyAiXCJdIik7CisgICAgfSwgeworCisgICAgY3JlYXRlUGFy
dGljbGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52
YXNJbWFnZSh0aGlzKTsKKyAgICB9Cit9KTsKKworQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1h
cmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5j
aG1hcmssCisgICAgZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQor
ICAgIHsKKyAgICAgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlz
LCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOworICAgIH0sIHsKKworICAgIGNy
ZWF0ZVN0YWdlOiBmdW5jdGlvbihlbGVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBC
b3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworICAgIH0K
K30pOwogCiB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5n
LWNhbnZhcy1wYXJ0aWNsZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpz
CmluZGV4IDBiNDBkYTIuLmMzMWY1MGYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZh
cy1wYXJ0aWNsZXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcwpA
QCAtMSwxMCArMSw1NSBAQAotZnVuY3Rpb24gQm91bmNpbmdDYW52YXNQYXJ0aWNsZShzdGFnZSkK
LXsKLSAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOwotICAgIHRoaXMuX2Nv
bnRleHQgPSBzdGFnZS5jb250ZXh0OwotICAgIHRoaXMuX3NoYXBlID0gIiI7Ci0gICAgdGhpcy5f
Y2xpcCA9IHN0YWdlLmNsaXA7Ci19CitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlID0gVXRpbGl0aWVz
LmNyZWF0ZVN1YmNsYXNzKEJvdW5jaW5nUGFydGljbGUsCisgICAgZnVuY3Rpb24oc3RhZ2UpCisg
ICAgeworICAgICAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworICAgICAg
ICB0aGlzLl9jb250ZXh0ID0gc3RhZ2UuY29udGV4dDsKKyAgICAgICAgdGhpcy5fc2hhcGUgPSAi
IjsKKyAgICAgICAgdGhpcy5fY2xpcCA9IHN0YWdlLmNsaXA7CisgICAgfSwgeworCisgICAgX2Fw
cGx5Um90YXRpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zaGFwZSA9
PSAiY2lyY2xlIikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9jb250ZXh0
LnRyYW5zbGF0ZSh0aGlzLl9zaXplLnggLyAyLCB0aGlzLl9zaXplLnkgLyAyKTsKKyAgICAgICAg
dGhpcy5fY29udGV4dC5yb3RhdGUodGhpcy5fcm90YXRlci5kZWdyZWUoKSAqIE1hdGguUEkgLyAx
ODApOworICAgICAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSgtdGhpcy5fc2l6ZS54IC8gMiwg
LXRoaXMuX3NpemUueSAvIDIpOworICAgIH0sCisKKyAgICBfYXBwbHlDbGlwcGluZzogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdmFyIGNsaXBQb2ludHMgPSBCb3VuY2luZ0NhbnZhc1BhcnRp
Y2xlLmNsaXBzW3RoaXMuX2NsaXBdOworICAgICAgICBpZiAoIWNsaXBQb2ludHMpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAg
ICAgY2xpcFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKHBvaW50LCBpbmRleCkgeworICAgICAgICAg
ICAgdmFyIHBvaW50ID0gdGhpcy5fc2l6ZS5tdWx0aXBseShwb2ludCk7CisgICAgICAgICAgICBp
ZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRleHQubW92ZVRvKHBvaW50Lngs
IHBvaW50LnkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRl
eHQubGluZVRvKHBvaW50LngsIHBvaW50LnkpOworICAgICAgICB9LCB0aGlzKTsKKworICAgICAg
ICB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpOworICAgICAgICB0aGlzLl9jb250ZXh0LmNsaXAo
KTsKKyAgICB9LAorCisgICAgX2RyYXc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRocm93
ICJOb3QgaW1wbGVtZW50ZWQiOworICAgIH0sCisKKyAgICBhbmltYXRlOiBmdW5jdGlvbih0aW1l
RGVsdGEpCisgICAgeworICAgICAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRl
LmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5zYXZlKCk7Cisg
ICAgICAgICAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSh0aGlzLl9wb3NpdGlvbi54LCB0aGlz
Ll9wb3NpdGlvbi55KTsKKyAgICAgICAgICAgIHRoaXMuX2RyYXcoKTsKKyAgICAgICAgdGhpcy5f
Y29udGV4dC5yZXN0b3JlKCk7CisgICAgfQorfSk7CiAKIEJvdW5jaW5nQ2FudmFzUGFydGljbGUu
Y2xpcHMgPSB7CiAgICAgc3RhcjogWwpAQCAtMjEsODUgKzY2LDM3IEBAIEJvdW5jaW5nQ2FudmFz
UGFydGljbGUuY2xpcHMgPSB7CiAgICAgXSwKIH07CiAKLUJvdW5jaW5nQ2FudmFzUGFydGljbGUu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSk7Ci1C
b3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2Fu
dmFzUGFydGljbGU7Ci0KLUJvdW5jaW5nQ2FudmFzUGFydGljbGUucHJvdG90eXBlLl9hcHBseVJv
dGF0aW9uID0gZnVuY3Rpb24oKQotewotICAgIGlmICh0aGlzLl9zaGFwZSA9PSAiY2lyY2xlIikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgdGhpcy5fY29udGV4dC50cmFuc2xhdGUodGhpcy5fc2l6
ZS54IC8gMiwgdGhpcy5fc2l6ZS55IC8gMik7Ci0gICAgdGhpcy5fY29udGV4dC5yb3RhdGUodGhp
cy5fcm90YXRlci5kZWdyZWUoKSAqIE1hdGguUEkgLyAxODApOwotICAgIHRoaXMuX2NvbnRleHQu
dHJhbnNsYXRlKC10aGlzLl9zaXplLnggLyAyLCAtdGhpcy5fc2l6ZS55IC8gMik7Ci19Ci0KLUJv
dW5jaW5nQ2FudmFzUGFydGljbGUucHJvdG90eXBlLl9hcHBseUNsaXBwaW5nID0gZnVuY3Rpb24o
KQotewotICAgIHZhciBjbGlwUG9pbnRzID0gQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5jbGlwc1t0
aGlzLl9jbGlwXTsKLSAgICBpZiAoIWNsaXBQb2ludHMpCi0gICAgICAgIHJldHVybjsKLSAgICAg
ICAgCi0gICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICBjbGlwUG9pbnRzLmZvckVh
Y2goZnVuY3Rpb24ocG9pbnQsIGluZGV4KSB7Ci0gICAgICAgIHZhciBwb2ludCA9IHRoaXMuX3Np
emUubXVsdGlwbHkocG9pbnQpOwotICAgICAgICBpZiAoIWluZGV4KQotICAgICAgICAgICAgdGhp
cy5fY29udGV4dC5tb3ZlVG8ocG9pbnQueCwgcG9pbnQueSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKHBvaW50LngsIHBvaW50LnkpOwotICAgIH0sIHRo
aXMpOwotCi0gICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTsKLSAgICB0aGlzLl9jb250ZXh0
LmNsaXAoKTsKLX0KLQotQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuX2RyYXcgPSBm
dW5jdGlvbigpCi17Ci0gICAgdGhyb3cgIk5vdCBpbXBsZW1lbnRlZCI7Ci19Ci0KLUJvdW5jaW5n
Q2FudmFzUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCi17
Ci0gICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVE
ZWx0YSk7Ci0gICAgdGhpcy5fY29udGV4dC5zYXZlKCk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQu
dHJhbnNsYXRlKHRoaXMuX3Bvc2l0aW9uLngsIHRoaXMuX3Bvc2l0aW9uLnkpOwotICAgICAgICB0
aGlzLl9kcmF3KCk7Ci0gICAgdGhpcy5fY29udGV4dC5yZXN0b3JlKCk7Ci19Ci0KLWZ1bmN0aW9u
IEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKLXsKLSAgICBC
b3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Ci0gICAg
dGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoIjJkIik7Ci19Ci0KLUJvdW5j
aW5nQ2FudmFzUGFydGljbGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2lu
Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7Ci1Cb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdl
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2U7Ci0K
LWZ1bmN0aW9uIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0b3IoYmVuY2htYXJrLCBvcHRp
b25zKQotewotICAgIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1h
cmssIG9wdGlvbnMpOwotICAgIHRoaXMuX2NvbnRleHQgPSBiZW5jaG1hcmsuX3N0YWdlLmNvbnRl
eHQ7Ci19Ci0KLUJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZSk7Ci1Cb3VuY2lu
Z0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5n
Q2FudmFzUGFydGljbGVzQW5pbWF0b3I7Ci0KLUJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0
b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy5fY29udGV4dC5j
bGVhclJlY3QoMCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLngsIHRoaXMuX2JlbmNo
bWFyay5fc3RhZ2Uuc2l6ZS55KTsKLSAgICByZXR1cm4gQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRv
ci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMpOwotfQotCi1mdW5jdGlvbiBCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIp
Ci17Ci0gICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cHJvZ3Jlc3NCYXIpOwotfQotCi1Cb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7Ci1Cb3VuY2lu
Z0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2lu
Z0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyazsKLQotQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5j
aG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQotewotICAgIHJldHVy
biBuZXcgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvcih0aGlzLCB0aGlzLl9vcHRpb25z
KTsKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xl
c1N0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJvdW5jaW5nUGFydGljbGVzU3RhZ2Us
CisgICAgZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9ucykKKyAgICB7CisgICAgICAgIEJvdW5jaW5n
UGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICAgICAgdGhp
cy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoIjJkIik7CisgICAgfQorKTsKKwor
Qm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvciA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFz
cyhCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLAorICAgIGZ1bmN0aW9uKGJlbmNobWFyaywgb3B0
aW9ucykKKyAgICB7CisgICAgICAgIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IuY2FsbCh0aGlz
LCBiZW5jaG1hcmssIG9wdGlvbnMpOworICAgICAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJr
Ll9zdGFnZS5jb250ZXh0OworICAgIH0sIHsKKworICAgIGFuaW1hdGU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX2NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFy
ay5fc3RhZ2Uuc2l6ZS54LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueSk7CisgICAgICAg
IHJldHVybiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwo
dGhpcyk7CisgICAgfQorfSk7CisKKworQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsg
PSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2VCZW5jaG1hcmssCisgICAgZnVuY3Rpb24o
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQorICAgIHsKKyAgICAgICAgU3RhZ2VC
ZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwor
ICAgIH0sIHsKKworICAgIGNyZWF0ZUFuaW1hdG9yOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0b3IodGhpcywgdGhpcy5f
b3B0aW9ucyk7CisgICAgfQorfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMt
c2hhcGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qcwppbmRleCBiZTRhMWQ5
Li5lYThjZjc4IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMKQEAgLTEsODggKzEsODUgQEAKLWZ1
bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hhcGUoc3RhZ2UpCi17Ci0gICAgQm91bmNpbmdDYW52YXNQ
YXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKLSAgICB0aGlzLl9maWxsID0gc3RhZ2UuZmlsbDsK
LSAgICB0aGlzLl9zaGFwZSA9IHN0YWdlLnNoYXBlOwotICAgIHRoaXMuX2NvbG9yMCA9IHN0YWdl
LnJhbmRvbUNvbG9yKCk7Ci0gICAgdGhpcy5fY29sb3IxID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsg
ICAgCi19CitCb3VuY2luZ0NhbnZhc1NoYXBlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJv
dW5jaW5nQ2FudmFzUGFydGljbGUsCisgICAgZnVuY3Rpb24oc3RhZ2UpCisgICAgeworICAgICAg
ICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworICAgICAgICB0aGlz
Ll9maWxsID0gc3RhZ2UuZmlsbDsKKyAgICAgICAgdGhpcy5fc2hhcGUgPSBzdGFnZS5zaGFwZTsK
KyAgICAgICAgdGhpcy5fY29sb3IwID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsKKyAgICAgICAgdGhp
cy5fY29sb3IxID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsKKyAgICB9LCB7CiAKLUJvdW5jaW5nQ2Fu
dmFzU2hhcGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRpY2xl
LnByb3RvdHlwZSk7Ci1Cb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IEJvdW5jaW5nQ2FudmFzU2hhcGU7CisgICAgX2FwcGx5RmlsbDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgc3dpdGNoICh0aGlzLl9maWxsKSB7CisgICAgICAgIGNhc2UgImdyYWRpZW50IjoK
KyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IHRoaXMuX2NvbnRleHQuY3JlYXRlTGluZWFyR3Jh
ZGllbnQoMCwgMCwgdGhpcy5fc2l6ZS53aWR0aCwgMCk7CisgICAgICAgICAgICBncmFkaWVudC5h
ZGRDb2xvclN0b3AoMCwgdGhpcy5fY29sb3IwKTsKKyAgICAgICAgICAgIGdyYWRpZW50LmFkZENv
bG9yU3RvcCgxLCB0aGlzLl9jb2xvcjEpOworICAgICAgICAgICAgdGhpcy5fY29udGV4dC5maWxs
U3R5bGUgPSBncmFkaWVudDsKKyAgICAgICAgICAgIGJyZWFrOwogCi1Cb3VuY2luZ0NhbnZhc1No
YXBlLnByb3RvdHlwZS5fYXBwbHlGaWxsID0gZnVuY3Rpb24oKQotewotICAgIHN3aXRjaCAodGhp
cy5fZmlsbCkgewotICAgIGNhc2UgImdyYWRpZW50IjoKLSAgICAgICAgdmFyIGdyYWRpZW50ID0g
dGhpcy5fY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCB0aGlzLl9zaXplLndpZHRo
LCAwKTsKLSAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIHRoaXMuX2NvbG9yMCk7Ci0g
ICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCB0aGlzLl9jb2xvcjEpOyAKLSAgICAgICAg
dGhpcy5fY29udGV4dC5maWxsU3R5bGUgPSBncmFkaWVudDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Ci0gICAgY2FzZSAic29saWQiOgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHRoaXMuX2NvbnRleHQu
ZmlsbFN0eWxlID0gdGhpcy5fY29sb3IwOwotICAgICAgICBicmVhazsKLSAgICB9Ci19CisgICAg
ICAgIGNhc2UgInNvbGlkIjoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRoaXMuX2Nv
bnRleHQuZmlsbFN0eWxlID0gdGhpcy5fY29sb3IwOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9LAogCi1Cb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fZHJhd1NoYXBl
ID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgX2Ry
YXdTaGFwZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fY29udGV4dC5iZWdpblBh
dGgoKTsKIAotICAgIHN3aXRjaCAodGhpcy5fc2hhcGUpIHsKLSAgICBjYXNlICJyZWN0IjoKLSAg
ICAgICAgdGhpcy5fY29udGV4dC5yZWN0KDAsIDAsIHRoaXMuX3NpemUud2lkdGgsIHRoaXMuX3Np
emUuaGVpZ2h0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgCi0gICAgY2FzZSAiY2lyY2xlIjoKLSAg
ICBkZWZhdWx0OgotICAgICAgICB2YXIgY2VudGVyID0gdGhpcy5fc2l6ZS5jZW50ZXI7Ci0gICAg
ICAgIHZhciByYWRpdXMgPSBNYXRoLm1pbih0aGlzLl9zaXplLngsIHRoaXMuX3NpemUueSkgLyAy
OwotICAgICAgICB0aGlzLl9jb250ZXh0LmFyYyhjZW50ZXIueCwgY2VudGVyLnksIHJhZGl1cywg
MCwgTWF0aC5QSSAqIDIsIHRydWUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICB0aGlz
Ll9jb250ZXh0LmZpbGwoKTsKLX0KKyAgICAgICAgc3dpdGNoICh0aGlzLl9zaGFwZSkgeworICAg
ICAgICBjYXNlICJyZWN0IjoKKyAgICAgICAgICAgIHRoaXMuX2NvbnRleHQucmVjdCgwLCAwLCB0
aGlzLl9zaXplLndpZHRoLCB0aGlzLl9zaXplLmhlaWdodCk7CisgICAgICAgICAgICBicmVhazsK
IAotQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2RyYXcgPSBmdW5jdGlvbigpCi17Ci0g
ICAgdGhpcy5fY29udGV4dC5zYXZlKCk7Ci0gICAgICAgIHRoaXMuX2FwcGx5RmlsbCgpOwotICAg
ICAgICB0aGlzLl9hcHBseVJvdGF0aW9uKCk7Ci0gICAgICAgIHRoaXMuX2FwcGx5Q2xpcHBpbmco
KTsKLSAgICAgICAgdGhpcy5fZHJhd1NoYXBlKCk7Ci0gICAgdGhpcy5fY29udGV4dC5yZXN0b3Jl
KCk7Ci19CisgICAgICAgIGNhc2UgImNpcmNsZSI6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICB2YXIgY2VudGVyID0gdGhpcy5fc2l6ZS5jZW50ZXI7CisgICAgICAgICAgICB2YXIgcmFk
aXVzID0gTWF0aC5taW4odGhpcy5fc2l6ZS54LCB0aGlzLl9zaXplLnkpIC8gMjsKKyAgICAgICAg
ICAgIHRoaXMuX2NvbnRleHQuYXJjKGNlbnRlci54LCBjZW50ZXIueSwgcmFkaXVzLCAwLCBNYXRo
LlBJICogMiwgdHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCi1mdW5jdGlv
biBCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCi17Ci0gICAgQm91
bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOwot
ICAgIHRoaXMucGFyc2VTaGFwZVBhcmFtdGVycyhvcHRpb25zKTsKLX0KKyAgICAgICAgdGhpcy5f
Y29udGV4dC5maWxsKCk7CisgICAgfSwKIAotQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UucHJvdG90
eXBlKTsKLUJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
Qm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZTsKKyAgICBfZHJhdzogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5fY29udGV4dC5zYXZlKCk7CisgICAgICAgICAgICB0aGlzLl9hcHBseUZp
bGwoKTsKKyAgICAgICAgICAgIHRoaXMuX2FwcGx5Um90YXRpb24oKTsKKyAgICAgICAgICAgIHRo
aXMuX2FwcGx5Q2xpcHBpbmcoKTsKKyAgICAgICAgICAgIHRoaXMuX2RyYXdTaGFwZSgpOworICAg
ICAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKKyAgICB9Cit9KTsKIAotQm91bmNpbmdDYW52
YXNTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpCi17Ci0g
ICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc1NoYXBlKHRoaXMpOwotfQorQm91bmNpbmdDYW52
YXNTaGFwZXNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlc1N0YWdlLAorICAgIGZ1bmN0aW9uIChlbGVtZW50LCBvcHRpb25zKQorICAgIHsKKyAg
ICAgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9w
dGlvbnMpOworICAgICAgICB0aGlzLnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7CisgICAg
fSwgewogCi1mdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCi17Ci0gICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNC
ZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwot
fQorICAgIGNyZWF0ZVBhcnRpY2xlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4g
bmV3IEJvdW5jaW5nQ2FudmFzU2hhcGUodGhpcyk7CisgICAgfQorfSk7CiAKLUJvdW5jaW5nQ2Fu
dmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdDYW52
YXNQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKLUJvdW5jaW5nQ2FudmFzU2hhcGVzQmVu
Y2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2ht
YXJrOworQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3Vi
Y2xhc3MoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmssCisgICAgZnVuY3Rpb24oc3Vp
dGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQorICAgIHsKKyAgICAgICAgQm91bmNpbmdD
YW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cHJvZ3Jlc3NCYXIpOworICAgIH0sIHsKIAotQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsu
cHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKLXsKLSAgICByZXR1cm4g
bmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Ci19
CisgICAgY3JlYXRlU3RhZ2U6IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1
cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7
CisgICAgfQorfSk7CiAKIHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24o
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMv
Ym91bmNpbmctY3NzLWltYWdlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFnZXMuanMKaW5k
ZXggMGQzYWUyNC4uOTZjNjBkOCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdl
cy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmpzCkBAIC0xLDYxICsxLDU4IEBA
Ci1mdW5jdGlvbiBCb3VuY2luZ0Nzc0ltYWdlKHN0YWdlKQotewotICAgIEJvdW5jaW5nUGFydGlj
bGUuY2FsbCh0aGlzLCBzdGFnZSk7Ci0KLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpbWciKTsKLSAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9z
aXplLnggKyAicHgiOwotICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLl9zaXpl
LnkgKyAicHgiOwotICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInNyYyIsIHN0YWdlLmlt
YWdlU3JjKTsKLSAgICAKLSAgICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVu
dCk7Ci0gICAgdGhpcy5fbW92ZSgpOwotfQotCi1Cb3VuY2luZ0Nzc0ltYWdlLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUpOwotQm91bmNpbmdDc3NJ
bWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nzc0ltYWdlOwotCi1Cb3VuY2lu
Z0Nzc0ltYWdlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlzLmVsZW1l
bnQuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgdGhpcy5fcG9zaXRpb24ueCArICJw
eCwiICsgdGhpcy5fcG9zaXRpb24ueSArICJweCkgIiArIHRoaXMuX3JvdGF0ZXIucm90YXRlWigp
OwotfQotICAgIAotQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9u
KHRpbWVEZWx0YSkKLXsKLSAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNh
bGwodGhpcywgdGltZURlbHRhKTsKLSAgICB0aGlzLl9tb3ZlKCk7Ci19Ci0KLWZ1bmN0aW9uIEJv
dW5jaW5nQ3NzSW1hZ2VzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKLXsKLSAgICBCb3VuY2luZ1Bh
cnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Ci0gICAgdGhpcy5pbWFn
ZVNyYyA9IG9wdGlvbnNbImltYWdlU3JjIl0gfHwgIi4uL3Jlc291cmNlcy95aW4teWFuZy5zdmci
OwotfQotCi1Cb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
Qm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOwotQm91bmNpbmdDc3NJbWFnZXNTdGFn
ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlOwotCi1Cb3Vu
Y2luZ0Nzc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkK
LXsKLSAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ3NzSW1hZ2UodGhpcyk7Ci19Ci0KLUJvdW5jaW5n
Q3NzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9u
KHBhcnRpY2xlKQotewotICAgIHBhcnRpY2xlLmVsZW1lbnQucmVtb3ZlKCk7Ci19Ci0KLWZ1bmN0
aW9uIEJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9n
cmVzc0JhcikKLXsKLSAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci19Ci0KLUJvdW5jaW5nQ3NzSW1hZ2Vz
QmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5j
aG1hcmsucHJvdG90eXBlKTsKLUJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IEJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrOwotCi1Cb3VuY2luZ0Nzc0lt
YWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQot
ewotICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NJbWFnZXNTdGFnZShlbGVtZW50LCB0aGlzLl9v
cHRpb25zKTsKLX0KK0JvdW5jaW5nQ3NzSW1hZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3Mo
Qm91bmNpbmdQYXJ0aWNsZSwKKyAgICBmdW5jdGlvbihzdGFnZSkKKyAgICB7CisgICAgICAgIEJv
dW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisKKyAgICAgICAgdGhpcy5lbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5z
dHlsZS53aWR0aCA9IHRoaXMuX3NpemUueCArICJweCI7CisgICAgICAgIHRoaXMuZWxlbWVudC5z
dHlsZS5oZWlnaHQgPSB0aGlzLl9zaXplLnkgKyAicHgiOworICAgICAgICB0aGlzLmVsZW1lbnQu
c2V0QXR0cmlidXRlKCJzcmMiLCBzdGFnZS5pbWFnZVNyYyk7CisKKyAgICAgICAgc3RhZ2UuZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpOworICAgICAgICB0aGlzLl9tb3ZlKCk7Cisg
ICAgfSwgeworCisgICAgX21vdmU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuZWxl
bWVudC5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRlKCIgKyB0aGlzLl9wb3NpdGlvbi54ICsg
InB4LCIgKyB0aGlzLl9wb3NpdGlvbi55ICsgInB4KSAiICsgdGhpcy5fcm90YXRlci5yb3RhdGVa
KCk7CisgICAgfSwKKworICAgIGFuaW1hdGU6IGZ1bmN0aW9uKHRpbWVEZWx0YSkKKyAgICB7Cisg
ICAgICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1l
RGVsdGEpOworICAgICAgICB0aGlzLl9tb3ZlKCk7CisgICAgfQorfSk7CisKK0JvdW5jaW5nQ3Nz
SW1hZ2VzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZXNT
dGFnZSwKKyAgICBmdW5jdGlvbihlbGVtZW50LCBvcHRpb25zKQorICAgIHsKKyAgICAgICAgQm91
bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgICAg
ICB0aGlzLmltYWdlU3JjID0gb3B0aW9uc1siaW1hZ2VTcmMiXSB8fCAiLi4vcmVzb3VyY2VzL3lp
bi15YW5nLnN2ZyI7CisgICAgfSwgeworCisgICAgY3JlYXRlUGFydGljbGU6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NJbWFnZSh0aGlzKTsKKyAgICB9
LAorCisgICAgcGFydGljbGVXaWxsQmVSZW1vdmVkOiBmdW5jdGlvbihwYXJ0aWNsZSkKKyAgICB7
CisgICAgICAgIHBhcnRpY2xlLmVsZW1lbnQucmVtb3ZlKCk7CisgICAgfQorfSk7CisKK0JvdW5j
aW5nQ3NzSW1hZ2VzQmVuY2htYXJrID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJvdW5jaW5n
UGFydGljbGVzQmVuY2htYXJrLAorICAgIGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBw
cm9ncmVzc0JhcikKKyAgICB7CisgICAgICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNh
bGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKKyAgICB9LCB7CisK
KyAgICBjcmVhdGVTdGFnZTogZnVuY3Rpb24oZWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVy
biBuZXcgQm91bmNpbmdDc3NJbWFnZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKKyAg
ICB9Cit9KTsKIAogd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1jc3Mtc2hhcGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qcwppbmRleCA2
Zjk0MzM1Li44OTc5OTRmIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmpz
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanMKQEAgLTEsNzkgKzEsNzYgQEAKLWZ1
bmN0aW9uIEJvdW5jaW5nQ3NzU2hhcGUoc3RhZ2UpCi17Ci0gICAgQm91bmNpbmdQYXJ0aWNsZS5j
YWxsKHRoaXMsIHN0YWdlKTsKK0JvdW5jaW5nQ3NzU2hhcGUgPSBVdGlsaXRpZXMuY3JlYXRlU3Vi
Y2xhc3MoQm91bmNpbmdQYXJ0aWNsZSwKKyAgICBmdW5jdGlvbihzdGFnZSkKKyAgICB7CisgICAg
ICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CiAKLSAgICB0aGlzLmVsZW1l
bnQgPSB0aGlzLl9jcmVhdGVTcGFuKHN0YWdlKTsKLSAgICAgICAgCi0gICAgc3dpdGNoIChzdGFn
ZS5maWxsKSB7Ci0gICAgY2FzZSAic29saWQiOgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHRoaXMu
ZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBzdGFnZS5yYW5kb21Db2xvcigpOwotICAg
ICAgICBicmVhazsKLSAgICAgICAgCi0gICAgY2FzZSAiZ3JhZGllbnQiOgotICAgICAgICB0aGlz
LmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZCA9ICJsaW5lYXItZ3JhZGllbnQoIiArIHN0YWdlLnJh
bmRvbUNvbG9yKCkgKyAiLCAiICsgc3RhZ2UucmFuZG9tQ29sb3IoKSArICIpIjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQorICAgICAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLl9jcmVhdGVTcGFuKHN0
YWdlKTsKIAotICAgIHRoaXMuX21vdmUoKTsKLX0KKyAgICAgICAgc3dpdGNoIChzdGFnZS5maWxs
KSB7CisgICAgICAgIGNhc2UgInNvbGlkIjoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBzdGFnZS5yYW5kb21Db2xvcigp
OworICAgICAgICAgICAgYnJlYWs7CiAKLUJvdW5jaW5nQ3NzU2hhcGUucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSk7Ci1Cb3VuY2luZ0Nzc1NoYXBl
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ3NzU2hhcGU7CisgICAgICAgIGNhc2Ug
ImdyYWRpZW50IjoKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kID0g
ImxpbmVhci1ncmFkaWVudCgiICsgc3RhZ2UucmFuZG9tQ29sb3IoKSArICIsICIgKyBzdGFnZS5y
YW5kb21Db2xvcigpICsgIikiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAotQm91
bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNwYW4gPSBmdW5jdGlvbihzdGFnZSkKLXsK
LSAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICBzcGFu
LmNsYXNzTmFtZSA9IHN0YWdlLnNoYXBlICsgIiAiICsgc3RhZ2UuY2xpcDsKLSAgICBzcGFuLnN0
eWxlLndpZHRoID0gdGhpcy5fc2l6ZS54ICsgInB4IjsKLSAgICBzcGFuLnN0eWxlLmhlaWdodCA9
IHRoaXMuX3NpemUueSArICJweCI7Ci0gICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZChzcGFu
KTsKLSAgICByZXR1cm4gc3BhbjsKLX0KKyAgICAgICAgdGhpcy5fbW92ZSgpOworICAgIH0sIHsK
IAotQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUuX21vdmUgPSBmdW5jdGlvbigpCi17Ci0gICAg
dGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0
aW9uLnggKyAicHgsIiArIHRoaXMuX3Bvc2l0aW9uLnkgKyAicHgpIiArIHRoaXMuX3JvdGF0ZXIu
cm90YXRlWigpOwotfQotICAgIAotQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUuYW5pbWF0ZSA9
IGZ1bmN0aW9uKHRpbWVEZWx0YSkKLXsKLSAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5h
bmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKLSAgICB0aGlzLl9yb3RhdGVyLm5leHQodGlt
ZURlbHRhKTsKLSAgICB0aGlzLl9tb3ZlKCk7Ci19CisgICAgX2NyZWF0ZVNwYW46IGZ1bmN0aW9u
KHN0YWdlKQorICAgIHsKKyAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJzcGFuIik7CisgICAgICAgIHNwYW4uY2xhc3NOYW1lID0gc3RhZ2Uuc2hhcGUgKyAiICIgKyBz
dGFnZS5jbGlwOworICAgICAgICBzcGFuLnN0eWxlLndpZHRoID0gdGhpcy5fc2l6ZS54ICsgInB4
IjsKKyAgICAgICAgc3Bhbi5zdHlsZS5oZWlnaHQgPSB0aGlzLl9zaXplLnkgKyAicHgiOworICAg
ICAgICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKHNwYW4pOworICAgICAgICByZXR1cm4gc3Bh
bjsKKyAgICB9LAogCi1mdW5jdGlvbiBCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlKGVsZW1lbnQsIG9w
dGlvbnMpCi17Ci0gICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQs
IG9wdGlvbnMpOwotICAgIHRoaXMucGFyc2VTaGFwZVBhcmFtdGVycyhvcHRpb25zKTsKLX0KKyAg
ICBfbW92ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRy
YW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAicHgsIiArIHRoaXMu
X3Bvc2l0aW9uLnkgKyAicHgpIiArIHRoaXMuX3JvdGF0ZXIucm90YXRlWigpOworICAgIH0sCiAK
LUJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2lu
Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7Ci1Cb3VuY2luZ0Nzc1NoYXBlc1N0YWdlLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2U7CisgICAgYW5pbWF0ZTog
ZnVuY3Rpb24odGltZURlbHRhKQorICAgIHsKKyAgICAgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90
b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CisgICAgICAgIHRoaXMuX3JvdGF0
ZXIubmV4dCh0aW1lRGVsdGEpOworICAgICAgICB0aGlzLl9tb3ZlKCk7CisgICAgfQorfSk7CiAK
LUJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVuY3Rp
b24oKQotewotICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NTaGFwZSh0aGlzKTsKLX0KK0JvdW5j
aW5nQ3NzU2hhcGVzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZSwKKyAgICBmdW5jdGlvbihlbGVtZW50LCBvcHRpb25zKQorICAgIHsKKyAgICAg
ICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOwor
ICAgICAgICB0aGlzLnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7CisgICAgfSwgewogCi1C
b3VuY2luZ0Nzc1NoYXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBm
dW5jdGlvbihwYXJ0aWNsZSkKLXsKLSAgICBwYXJ0aWNsZS5lbGVtZW50LnJlbW92ZSgpOwotfQor
ICAgIGNyZWF0ZVBhcnRpY2xlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbmV3
IEJvdW5jaW5nQ3NzU2hhcGUodGhpcyk7CisgICAgfSwKIAotZnVuY3Rpb24gQm91bmNpbmdDc3NT
aGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQotewotICAg
IEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHByb2dyZXNzQmFyKTsKLX0KKyAgICBwYXJ0aWNsZVdpbGxCZVJlbW92ZWQ6IGZ1bmN0aW9u
KHBhcnRpY2xlKQorICAgIHsKKyAgICAgICAgcGFydGljbGUuZWxlbWVudC5yZW1vdmUoKTsKKyAg
ICB9Cit9KTsKIAotQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOwotQm91bmNpbmdD
c3NTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDc3NTaGFw
ZXNCZW5jaG1hcms7CitCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyayA9IFV0aWxpdGllcy5jcmVh
dGVTdWJjbGFzcyhCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyaywKKyAgICBmdW5jdGlvbihzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCisgICAgeworICAgICAgICBCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVz
c0Jhcik7CisgICAgfSwgewogCi1Cb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUu
Y3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQotewotICAgIHJldHVybiBuZXcgQm91bmNp
bmdDc3NTaGFwZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKLX0KKyAgICBjcmVhdGVT
dGFnZTogZnVuY3Rpb24oZWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgQm91bmNp
bmdDc3NTaGFwZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKKyAgICB9Cit9KTsKIAog
d2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcHJvZ3Jlc3NCYXIpCiB7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNs
ZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMKaW5kZXggYTBmN2JmZC4uYjhjYTdi
NSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLXBhcnRpY2xlcy5qcwpAQCAtNjUsNzQgKzY1LDcyIEBAIEJvdW5jaW5nUGFydGljbGUu
cHJvdG90eXBlID0KICAgICB9CiB9CiAKLWZ1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0
b3IoYmVuY2htYXJrLCBvcHRpb25zKQotewotICAgIFN0YWdlQW5pbWF0b3IuY2FsbCh0aGlzLCBi
ZW5jaG1hcmssIG9wdGlvbnMpOwotfTsKK0JvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IgPSBVdGls
aXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2VBbmltYXRvciwKKyAgICBmdW5jdGlvbihiZW5jaG1h
cmssIG9wdGlvbnMpCisgICAgeworICAgICAgICBTdGFnZUFuaW1hdG9yLmNhbGwodGhpcywgYmVu
Y2htYXJrLCBvcHRpb25zKTsKKyAgICB9CispOwogCi1Cb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9y
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VBbmltYXRvci5wcm90b3R5cGUpOwotQm91
bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1Bh
cnRpY2xlc0FuaW1hdG9yOwogCi1mdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlKGVsZW1l
bnQsIG9wdGlvbnMpCi17Ci0gICAgU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsK
LSAgICAKLSAgICB0aGlzLnBhcnRpY2xlU2l6ZSA9IG5ldyBQb2ludChwYXJzZUludChvcHRpb25z
WyJwYXJ0aWNsZVdpZHRoIl0pIHx8IDEwLCBwYXJzZUludChvcHRpb25zWyJwYXJ0aWNsZUhlaWdo
dCJdKSB8fCAxMCk7Ci0gICAgdGhpcy5fcGFydGljbGVzID0gW107CitCb3VuY2luZ1BhcnRpY2xl
c1N0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlLAorICAgIGZ1bmN0aW9uKGVs
ZW1lbnQsIG9wdGlvbnMpCisgICAgeworICAgICAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQs
IG9wdGlvbnMpOwogCi0gICAgdGhpcy5tYXhWZWxvY2l0eSA9IHBhcnNlSW50KG9wdGlvbnNbIm1h
eFZlbG9jaXR5Il0pIHx8IDUwMDsKLSAgICB0aGlzLm1heFZlbG9jaXR5ID0gTWF0aC5tYXgodGhp
cy5tYXhWZWxvY2l0eSwgMTAwKTsKLX0KKyAgICAgICAgdGhpcy5wYXJ0aWNsZVNpemUgPSBuZXcg
UG9pbnQocGFyc2VJbnQob3B0aW9uc1sicGFydGljbGVXaWR0aCJdKSB8fCAxMCwgcGFyc2VJbnQo
b3B0aW9uc1sicGFydGljbGVIZWlnaHQiXSkgfHwgMTApOworICAgICAgICB0aGlzLl9wYXJ0aWNs
ZXMgPSBbXTsKIAotQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKFN0YWdlLnByb3RvdHlwZSk7Ci1Cb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IEJvdW5jaW5nUGFydGljbGVzU3RhZ2U7CisgICAgICAgIHRoaXMubWF4VmVs
b2NpdHkgPSBwYXJzZUludChvcHRpb25zWyJtYXhWZWxvY2l0eSJdKSB8fCA1MDA7CisgICAgICAg
IHRoaXMubWF4VmVsb2NpdHkgPSBNYXRoLm1heCh0aGlzLm1heFZlbG9jaXR5LCAxMDApOworICAg
IH0sIHsKIAotQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFyc2VTaGFwZVBhcmFt
dGVycyA9IGZ1bmN0aW9uKG9wdGlvbnMpCi17Ci0gICAgdGhpcy5zaGFwZSA9IG9wdGlvbnNbInNo
YXBlIl0gfHwgImNpcmNsZSI7Ci0gICAgdGhpcy5maWxsID0gb3B0aW9uc1siZmlsbCJdIHx8ICJz
b2xpZCI7Ci0gICAgdGhpcy5jbGlwID0gb3B0aW9uc1siY2xpcCJdIHx8ICIiOwotfQorICAgIHBh
cnNlU2hhcGVQYXJhbXRlcnM6IGZ1bmN0aW9uKG9wdGlvbnMpCisgICAgeworICAgICAgICB0aGlz
LnNoYXBlID0gb3B0aW9uc1sic2hhcGUiXSB8fCAiY2lyY2xlIjsKKyAgICAgICAgdGhpcy5maWxs
ID0gb3B0aW9uc1siZmlsbCJdIHx8ICJzb2xpZCI7CisgICAgICAgIHRoaXMuY2xpcCA9IG9wdGlv
bnNbImNsaXAiXSB8fCAiIjsKKyAgICB9LAogCi1Cb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3Rv
dHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQotewotICAgIHRoaXMuX3BhcnRpY2xl
cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnRpY2xlKSB7Ci0gICAgICAgIHBhcnRpY2xlLmFuaW1hdGUo
dGltZURlbHRhKTsKLSAgICB9KTsKLX0KLSAgICAKLUJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJv
dG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKLXsKLSAgICBpZiAoY291bnQgPT0gMCkKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX3BhcnRpY2xlcy5sZW5ndGg7CisgICAgYW5pbWF0ZTogZnVuY3Rp
b24odGltZURlbHRhKQorICAgIHsKKyAgICAgICAgdGhpcy5fcGFydGljbGVzLmZvckVhY2goZnVu
Y3Rpb24ocGFydGljbGUpIHsKKyAgICAgICAgICAgIHBhcnRpY2xlLmFuaW1hdGUodGltZURlbHRh
KTsKKyAgICAgICAgfSk7CisgICAgfSwKIAotICAgIGlmIChjb3VudCA+IDApIHsKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQodHlwZW9mKHRoaXMuY3JlYXRlUGFydGljbGUpID09ICJmdW5jdGlvbiIp
OwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgICAgICB0
aGlzLl9wYXJ0aWNsZXMucHVzaCh0aGlzLmNyZWF0ZVBhcnRpY2xlKCkpOwotICAgICAgICByZXR1
cm4gdGhpcy5fcGFydGljbGVzLmxlbmd0aDsKLSAgICB9CisgICAgdHVuZTogZnVuY3Rpb24oY291
bnQpCisgICAgeworICAgICAgICBpZiAoY291bnQgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOworCisgICAgICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZih0aGlzLmNyZWF0ZVBhcnRpY2xlKSA9PSAiZnVu
Y3Rpb24iKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAg
ICAgICAgICAgICAgICB0aGlzLl9wYXJ0aWNsZXMucHVzaCh0aGlzLmNyZWF0ZVBhcnRpY2xlKCkp
OworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnRpY2xlcy5sZW5ndGg7CisgICAgICAgIH0K
IAotICAgIGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoKTsK
LSAgICAgICAgCi0gICAgaWYgKHR5cGVvZih0aGlzLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCkgPT0g
ImZ1bmN0aW9uIikgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0g
ICAgICAgICAgICB0aGlzLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCh0aGlzLl9wYXJ0aWNsZXNbdGhp
cy5fcGFydGljbGVzLmxlbmd0aCAtIDEgLSBpXSk7Ci0gICAgfQorICAgICAgICBjb3VudCA9IE1h
dGgubWluKC1jb3VudCwgdGhpcy5fcGFydGljbGVzLmxlbmd0aCk7CiAKLSAgICB0aGlzLl9wYXJ0
aWNsZXMuc3BsaWNlKC1jb3VudCwgY291bnQpOwotICAgIHJldHVybiB0aGlzLl9wYXJ0aWNsZXMu
bGVuZ3RoOwotfQorICAgICAgICBpZiAodHlwZW9mKHRoaXMucGFydGljbGVXaWxsQmVSZW1vdmVk
KSA9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50
OyArK2kpCisgICAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQodGhpcy5f
cGFydGljbGVzW3RoaXMuX3BhcnRpY2xlcy5sZW5ndGggLSAxIC0gaV0pOworICAgICAgICB9CiAK
LWZ1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCBwcm9ncmVzc0JhcikKLXsKLSAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci19CisgICAgICAgIHRoaXMuX3BhcnRpY2xlcy5z
cGxpY2UoLWNvdW50LCBjb3VudCk7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXJ0aWNsZXMubGVu
Z3RoOworICAgIH0KK30pOwogCi1Cb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7Ci1Cb3VuY2luZ1BhcnRp
Y2xlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc0Jl
bmNobWFyazsKK0JvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrID0gVXRpbGl0aWVzLmNyZWF0ZVN1
YmNsYXNzKFN0YWdlQmVuY2htYXJrLAorICAgIGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCBwcm9ncmVzc0JhcikKKyAgICB7CisgICAgICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywg
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKKyAgICB9LCB7CiAKLUJvdW5jaW5n
UGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9uKCkK
LXsKLSAgICByZXR1cm4gbmV3IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IodGhpcywgdGhpcy5f
b3B0aW9ucyk7Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgIGNyZWF0ZUFuaW1h
dG9yOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IEJvdW5jaW5nUGFydGlj
bGVzQW5pbWF0b3IodGhpcywgdGhpcy5fb3B0aW9ucyk7CisgICAgfQorfSk7CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdl
cy5qcwppbmRleCA0MzVmMmNlLi41OGM3OWRmIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1z
dmctaW1hZ2VzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMKQEAgLTEsNDMg
KzEsNDAgQEAKLWZ1bmN0aW9uIEJvdW5jaW5nU3ZnSW1hZ2Uoc3RhZ2UpCi17Ci0gICAgQm91bmNp
bmdTdmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKLSAgICB0aGlzLl9zaGFwZSA9ICJpbWFn
ZSI7Ci0gICAgCi0gICAgdmFyIGF0dHJzID0geyB4OiAwLCB5OiAwLCB3aWR0aDogdGhpcy5fc2l6
ZS54LCBoZWlnaHQ6IHRoaXMuX3NpemUueSB9OwotICAgIHZhciB4bGlua0F0dHJzID0geyBocmVm
OiBzdGFnZS5pbWFnZVNyYyB9OwotICAgIHRoaXMuZWxlbWVudCA9IERvY3VtZW50RXh0ZW5zaW9u
LmNyZWF0ZVN2Z0VsZW1lbnQoImltYWdlIiwgYXR0cnMsIHhsaW5rQXR0cnMsIHN0YWdlLmVsZW1l
bnQpOwotICAgIHRoaXMuX21vdmUoKTsKLX0KLQotQm91bmNpbmdTdmdJbWFnZS5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlKTsKLUJvdW5jaW5n
U3ZnSW1hZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdJbWFnZTsKLQotZnVu
Y3Rpb24gQm91bmNpbmdTdmdJbWFnZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQotewotICAgIEJv
dW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKLSAgICB0
aGlzLmltYWdlU3JjID0gb3B0aW9uc1siaW1hZ2VTcmMiXSB8fCAicmVzb3VyY2VzL3lpbi15YW5n
LnN2ZyI7Ci19Ci0KLUJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7Ci1Cb3VuY2luZ1N2Z0lt
YWdlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2U7
Ci0KLUJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVu
Y3Rpb24oKQotewotICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdJbWFnZSh0aGlzKTsKLX0KLQot
ZnVuY3Rpb24gQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHByb2dyZXNzQmFyKQotewotICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhp
cywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KLQotQm91bmNpbmdTdmdJ
bWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xl
c0JlbmNobWFyay5wcm90b3R5cGUpOwotQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcms7Ci0KLUJvdW5jaW5n
U3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1l
bnQpCi17Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRo
aXMuX29wdGlvbnMpOwotfQorQm91bmNpbmdTdmdJbWFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJj
bGFzcyhCb3VuY2luZ1N2Z1BhcnRpY2xlLAorICAgIGZ1bmN0aW9uKHN0YWdlKQorICAgIHsKKyAg
ICAgICAgQm91bmNpbmdTdmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICAgICAgdGhp
cy5fc2hhcGUgPSAiaW1hZ2UiOworCisgICAgICAgIHZhciBhdHRycyA9IHsgeDogMCwgeTogMCwg
d2lkdGg6IHRoaXMuX3NpemUueCwgaGVpZ2h0OiB0aGlzLl9zaXplLnkgfTsKKyAgICAgICAgdmFy
IHhsaW5rQXR0cnMgPSB7IGhyZWY6IHN0YWdlLmltYWdlU3JjIH07CisgICAgICAgIHRoaXMuZWxl
bWVudCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZVN2Z0VsZW1lbnQoImltYWdlIiwgYXR0cnMs
IHhsaW5rQXR0cnMsIHN0YWdlLmVsZW1lbnQpOworICAgICAgICB0aGlzLl9tb3ZlKCk7CisgICAg
fQorKTsKKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFz
cyhCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLAorICAgIGZ1bmN0aW9uIChlbGVtZW50LCBvcHRp
b25zKQorICAgIHsKKyAgICAgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVs
ZW1lbnQsIG9wdGlvbnMpOworICAgICAgICB0aGlzLmltYWdlU3JjID0gb3B0aW9uc1siaW1hZ2VT
cmMiXSB8fCAicmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7CisgICAgfSwgeworCisgICAgY3JlYXRl
UGFydGljbGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgQm91bmNpbmdT
dmdJbWFnZSh0aGlzKTsKKyAgICB9Cit9KTsKKworQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsg
PSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmssCisg
ICAgZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQorICAgIHsKKyAg
ICAgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcHJvZ3Jlc3NCYXIpOworICAgIH0sIHsKKworICAgIGNyZWF0ZVN0YWdlOiBmdW5j
dGlvbihlbGVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdl
c1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworICAgIH0KK30pOwogCiB3aW5kb3cuYmVu
Y2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9n
cmVzc0JhcikKIHsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzCmluZGV4IDY5YzY3NTQuLjVjNTEwMDUg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanMKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMv
Ym91bmNpbmctc3ZnLXBhcnRpY2xlcy5qcwpAQCAtMSw2OCArMSw2NiBAQAotZnVuY3Rpb24gQm91
bmNpbmdTdmdQYXJ0aWNsZShzdGFnZSkKLXsKLSAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhp
cywgc3RhZ2UpOwotfQorQm91bmNpbmdTdmdQYXJ0aWNsZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJj
bGFzcyhCb3VuY2luZ1BhcnRpY2xlLAorICAgIGZ1bmN0aW9uKHN0YWdlKQorICAgIHsKKyAgICAg
ICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB9LCB7CiAKLUJvdW5j
aW5nU3ZnUGFydGljbGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xl
LnByb3RvdHlwZSk7Ci1Cb3VuY2luZ1N2Z1BhcnRpY2xlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IEJvdW5jaW5nUGFydGljbGU7CisgICAgX2FwcGx5Q2xpcHBpbmc6IGZ1bmN0aW9uKHN0YWdlKQor
ICAgIHsKKyAgICAgICAgaWYgKHN0YWdlLmNsaXAgIT0gInN0YXIiKQorICAgICAgICAgICAgcmV0
dXJuOwogCi1Cb3VuY2luZ1N2Z1BhcnRpY2xlLnByb3RvdHlwZS5fYXBwbHlDbGlwcGluZyA9IGZ1
bmN0aW9uKHN0YWdlKQotewotICAgIGlmIChzdGFnZS5jbGlwICE9ICJzdGFyIikKLSAgICAgICAg
cmV0dXJuOwotICAgICAgICAKLSAgICBzdGFnZS5lbnN1cmVDbGlwU3RhcklzQ3JlYXRlZCgpOwot
ICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIsICJ1cmwoI3N0YXItY2xp
cCkiKTsKLX0KKyAgICAgICAgc3RhZ2UuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0ZWQoKTsKKyAgICAg
ICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiY2xpcC1wYXRoIiwgInVybCgjc3Rhci1jbGlw
KSIpOworICAgIH0sCiAKLUJvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlLl9tb3ZlID0gZnVu
Y3Rpb24oKQotewotICAgIHZhciB0cmFuc2Zvcm0gPSAidHJhbnNsYXRlKCIgKyB0aGlzLl9wb3Np
dGlvbi54ICsgIiwgIiArIHRoaXMuX3Bvc2l0aW9uLnkgKyAiKSI7Ci0gICAgaWYgKHRoaXMuX3No
YXBlICE9ICJjaXJjbGUiKQotICAgICAgICB0cmFuc2Zvcm0gKz0gdGhpcy5fcm90YXRlci5yb3Rh
dGUodGhpcy5fc2l6ZS5jZW50ZXIpOwotICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInRy
YW5zZm9ybSIsIHRyYW5zZm9ybSk7Ci19CisgICAgX21vdmU6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHZhciB0cmFuc2Zvcm0gPSAidHJhbnNsYXRlKCIgKyB0aGlzLl9wb3NpdGlvbi54ICsg
IiwgIiArIHRoaXMuX3Bvc2l0aW9uLnkgKyAiKSI7CisgICAgICAgIGlmICh0aGlzLl9zaGFwZSAh
PSAiY2lyY2xlIikKKyAgICAgICAgICAgIHRyYW5zZm9ybSArPSB0aGlzLl9yb3RhdGVyLnJvdGF0
ZSh0aGlzLl9zaXplLmNlbnRlcik7CisgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUo
InRyYW5zZm9ybSIsIHRyYW5zZm9ybSk7CisgICAgfSwKIAotQm91bmNpbmdTdmdQYXJ0aWNsZS5w
cm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKLXsKLSAgICBCb3VuY2luZ1Bh
cnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKLSAgICB0aGlz
Ll9tb3ZlKCk7Ci19CisgICAgYW5pbWF0ZTogZnVuY3Rpb24odGltZURlbHRhKQorICAgIHsKKyAg
ICAgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVE
ZWx0YSk7CisgICAgICAgIHRoaXMuX21vdmUoKTsKKyAgICB9Cit9KTsKIAotZnVuY3Rpb24gQm91
bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQotewotICAgIEJvdW5jaW5n
UGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKLX0KK0JvdW5jaW5n
U3ZnUGFydGljbGVzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZSwKKyAgICBmdW5jdGlvbihlbGVtZW50LCBvcHRpb25zKQorICAgIHsKKyAgICAg
ICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOwor
ICAgIH0sIHsKIAotQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKLUJvdW5jaW5nU3ZnUGFy
dGljbGVzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdQYXJ0aWNsZXNT
dGFnZTsKKyAgICBfY3JlYXRlRGVmczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZVN2Z0VsZW1lbnQoImRlZnMiLCB7fSwge30sIHRoaXMu
ZWxlbWVudCk7CisgICAgfSwKIAotQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUu
X2NyZWF0ZURlZnMgPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0dXJuIERvY3VtZW50RXh0ZW5zaW9u
LmNyZWF0ZVN2Z0VsZW1lbnQoImRlZnMiLCB7fSwge30sIHRoaXMuZWxlbWVudCk7Ci19Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKLUJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLl9lbnN1cmVEZWZzSXNDcmVh
dGVkID0gZnVuY3Rpb24oKQotewotICAgIHJldHVybiB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3Rv
cigiZGVmcyIpIHx8IHRoaXMuX2NyZWF0ZURlZnMoKTsKLX0KKyAgICBfZW5zdXJlRGVmc0lzQ3Jl
YXRlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xdWVy
eVNlbGVjdG9yKCJkZWZzIikgfHwgdGhpcy5fY3JlYXRlRGVmcygpOworICAgIH0sCiAKLUJvdW5j
aW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLl9jcmVhdGVDbGlwU3RhciA9IGZ1bmN0aW9u
KCkKLXsKLSAgICB2YXIgYXR0cnMgPSB7IGlkOiAic3Rhci1jbGlwIiwgY2xpcFBhdGhVbml0czog
Im9iamVjdEJvdW5kaW5nQm94IiB9OwotICAgIHZhciBjbGlwUGF0aCAgPSBEb2N1bWVudEV4dGVu
c2lvbi5jcmVhdGVTdmdFbGVtZW50KCJjbGlwUGF0aCIsIGF0dHJzLCB7fSwgdGhpcy5fZW5zdXJl
RGVmc0lzQ3JlYXRlZCgpKTsKKyAgICBfY3JlYXRlQ2xpcFN0YXI6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHZhciBhdHRycyA9IHsgaWQ6ICJzdGFyLWNsaXAiLCBjbGlwUGF0aFVuaXRzOiAi
b2JqZWN0Qm91bmRpbmdCb3giIH07CisgICAgICAgIHZhciBjbGlwUGF0aCAgPSBEb2N1bWVudEV4
dGVuc2lvbi5jcmVhdGVTdmdFbGVtZW50KCJjbGlwUGF0aCIsIGF0dHJzLCB7fSwgdGhpcy5fZW5z
dXJlRGVmc0lzQ3JlYXRlZCgpKTsKIAotICAgIGF0dHJzID0geyBkOiAiTS41MCwwTC4zOCwuMzhM
MCwuMzhMLjMwLC42MEwuMTgsMUwuNTAsLjc1TC44MiwxTC43MCwuNjBMMSwuMzhMLjYyLC4zOHoi
IH07Ci0gICAgRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlU3ZnRWxlbWVudCgicGF0aCIsIGF0dHJz
LCB7fSwgY2xpcFBhdGgpOwotICAgIHJldHVybiBjbGlwUGF0aDsKLX0KKyAgICAgICAgYXR0cnMg
PSB7IGQ6ICJNLjUwLDBMLjM4LC4zOEwwLC4zOEwuMzAsLjYwTC4xOCwxTC41MCwuNzVMLjgyLDFM
LjcwLC42MEwxLC4zOEwuNjIsLjM4eiIgfTsKKyAgICAgICAgRG9jdW1lbnRFeHRlbnNpb24uY3Jl
YXRlU3ZnRWxlbWVudCgicGF0aCIsIGF0dHJzLCB7fSwgY2xpcFBhdGgpOworICAgICAgICByZXR1
cm4gY2xpcFBhdGg7CisgICAgfSwKIAotQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5
cGUuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0ZWQgPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0dXJuIHRo
aXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCIjc3Rhci1jbGlwIikgfHwgdGhpcy5fY3JlYXRlQ2xp
cFN0YXIoKTsKLX0KKyAgICBlbnN1cmVDbGlwU3RhcklzQ3JlYXRlZDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCIjc3Rhci1jbGlw
IikgfHwgdGhpcy5fY3JlYXRlQ2xpcFN0YXIoKTsKKyAgICB9LAogCi1Cb3VuY2luZ1N2Z1BhcnRp
Y2xlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBmdW5jdGlvbihwYXJ0
aWNsZSkKLXsKLSAgICBwYXJ0aWNsZS5lbGVtZW50LnJlbW92ZSgpOwotfQorICAgIHBhcnRpY2xl
V2lsbEJlUmVtb3ZlZDogZnVuY3Rpb24ocGFydGljbGUpCisgICAgeworICAgICAgICBwYXJ0aWNs
ZS5lbGVtZW50LnJlbW92ZSgpOworICAgIH0KK30pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNp
bmctc3ZnLXNoYXBlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMKaW5kZXggZDAy
ODAxYS4uMWU0OGQ4ZCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcwor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzCkBAIC0xLDEwMiArMSw5OSBAQAotZnVu
Y3Rpb24gQm91bmNpbmdTdmdTaGFwZShzdGFnZSkKLXsKLSAgICBCb3VuY2luZ1N2Z1BhcnRpY2xl
LmNhbGwodGhpcywgc3RhZ2UpOwotICAgIHRoaXMuX3NoYXBlID0gc3RhZ2Uuc2hhcGU7Ci0gICAg
dGhpcy5fZmlsbCA9IHN0YWdlLmZpbGw7Ci0gICAgCi0gICAgdGhpcy5fY3JlYXRlU2hhcGUoc3Rh
Z2UpOwotICAgIHRoaXMuX2FwcGx5Q2xpcHBpbmcoc3RhZ2UpOwotICAgIHRoaXMuX2FwcGx5Rmls
bChzdGFnZSk7Ci0KLSAgICB0aGlzLl9tb3ZlKCk7ICAgIAotfQorQm91bmNpbmdTdmdTaGFwZSA9
IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ1N2Z1BhcnRpY2xlLAorICAgIGZ1bmN0
aW9uKHN0YWdlKQorICAgIHsKKyAgICAgICAgQm91bmNpbmdTdmdQYXJ0aWNsZS5jYWxsKHRoaXMs
IHN0YWdlKTsKKyAgICAgICAgdGhpcy5fc2hhcGUgPSBzdGFnZS5zaGFwZTsKKyAgICAgICAgdGhp
cy5fZmlsbCA9IHN0YWdlLmZpbGw7CiAKLUJvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShCb3VuY2luZ1N2Z1BhcnRpY2xlLnByb3RvdHlwZSk7Ci1Cb3VuY2luZ1N2Z1No
YXBlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnU2hhcGU7CisgICAgICAgIHRo
aXMuX2NyZWF0ZVNoYXBlKHN0YWdlKTsKKyAgICAgICAgdGhpcy5fYXBwbHlDbGlwcGluZyhzdGFn
ZSk7CisgICAgICAgIHRoaXMuX2FwcGx5RmlsbChzdGFnZSk7CiAKLUJvdW5jaW5nU3ZnU2hhcGUu
cHJvdG90eXBlLl9jcmVhdGVTaGFwZSA9IGZ1bmN0aW9uKHN0YWdlKQotewotICAgIHN3aXRjaCAo
dGhpcy5fc2hhcGUpIHsKLSAgICBjYXNlICJyZWN0IjoKLSAgICAgICAgdmFyIGF0dHJzID0geyB4
OiAwLCB5OiAwLCB3aWR0aDogdGhpcy5fc2l6ZS54LCBoZWlnaHQ6IHRoaXMuX3NpemUueSB9Owot
ICAgICAgICB0aGlzLmVsZW1lbnQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVTdmdFbGVtZW50
KCJyZWN0IiwgYXR0cnMsIHt9LCBzdGFnZS5lbGVtZW50KTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Ci0gICAgY2FzZSAiY2lyY2xlIjoKLSAgICBkZWZhdWx0OgotICAgICAgICB2YXIgYXR0cnMgPSB7
IGN4OiB0aGlzLl9zaXplLnggLyAyLCBjeTogdGhpcy5fc2l6ZS55IC8gMiwgcjogTWF0aC5taW4o
dGhpcy5fc2l6ZS54LCB0aGlzLl9zaXplLnkpIC8gMiB9OwotICAgICAgICB0aGlzLmVsZW1lbnQg
PSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVTdmdFbGVtZW50KCJjaXJjbGUiLCBhdHRycywge30s
IHN0YWdlLmVsZW1lbnQpOwotICAgICAgICBicmVhazsgICAgICAgIAotICAgIH0KLX0KKyAgICAg
ICAgdGhpcy5fbW92ZSgpOworICAgIH0sIHsKIAotQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUu
X2FwcGx5RmlsbCA9IGZ1bmN0aW9uKHN0YWdlKQotewotICAgIHN3aXRjaCAodGhpcy5fZmlsbCkg
ewotICAgIGNhc2UgImdyYWRpZW50IjoKLSAgICAgICAgdmFyIGdyYWRpZW50ID0gc3RhZ2UuY3Jl
YXRlR3JhZGllbnQoMik7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImZpbGwi
LCAidXJsKCMiICsgZ3JhZGllbnQuZ2V0QXR0cmlidXRlKCJpZCIpICsgIikiKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgCi0gICAgY2FzZSAic29saWQiOgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHRo
aXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImZpbGwiLCBzdGFnZS5yYW5kb21Db2xvcigpKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotfQorICAgIF9jcmVhdGVTaGFwZTogZnVuY3Rpb24oc3RhZ2Up
CisgICAgeworICAgICAgICBzd2l0Y2ggKHRoaXMuX3NoYXBlKSB7CisgICAgICAgIGNhc2UgInJl
Y3QiOgorICAgICAgICAgICAgdmFyIGF0dHJzID0geyB4OiAwLCB5OiAwLCB3aWR0aDogdGhpcy5f
c2l6ZS54LCBoZWlnaHQ6IHRoaXMuX3NpemUueSB9OworICAgICAgICAgICAgdGhpcy5lbGVtZW50
ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlU3ZnRWxlbWVudCgicmVjdCIsIGF0dHJzLCB7fSwg
c3RhZ2UuZWxlbWVudCk7CisgICAgICAgICAgICBicmVhazsKIAotZnVuY3Rpb24gQm91bmNpbmdT
dmdTaGFwZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQotewotICAgIEJvdW5jaW5nU3ZnUGFydGlj
bGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKLSAgICB0aGlzLnBhcnNlU2hh
cGVQYXJhbXRlcnMob3B0aW9ucyk7Ci0gICAgdGhpcy5fZ3JhZGllbnRzQ291bnQgPSAwOwotfQor
ICAgICAgICBjYXNlICJjaXJjbGUiOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdmFy
IGF0dHJzID0geyBjeDogdGhpcy5fc2l6ZS54IC8gMiwgY3k6IHRoaXMuX3NpemUueSAvIDIsIHI6
IE1hdGgubWluKHRoaXMuX3NpemUueCwgdGhpcy5fc2l6ZS55KSAvIDIgfTsKKyAgICAgICAgICAg
IHRoaXMuZWxlbWVudCA9IERvY3VtZW50RXh0ZW5zaW9uLmNyZWF0ZVN2Z0VsZW1lbnQoImNpcmNs
ZSIsIGF0dHJzLCB7fSwgc3RhZ2UuZWxlbWVudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0sCiAKLUJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7Ci1Cb3VuY2luZ1N2
Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnU2hhcGVzU3Rh
Z2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKLUJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZUdyYWRp
ZW50ID0gZnVuY3Rpb24oc3RvcHMpCi17Ci0gICAgdmFyIGF0dHJzID0geyBpZDogImdhZGllbnQt
IiArICsrdGhpcy5fZ3JhZGllbnRzQ291bnQgfTsKLSAgICB2YXIgZ3JhZGllbnQgPSBEb2N1bWVu
dEV4dGVuc2lvbi5jcmVhdGVTdmdFbGVtZW50KCJsaW5lYXJHcmFkaWVudCIsIGF0dHJzLCB7fSwg
dGhpcy5fZW5zdXJlRGVmc0lzQ3JlYXRlZCgpKTsgICAgCi0gICAgCi0gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzdG9wczsgKytpKSB7Ci0gICAgICAgIGF0dHJzID0geyBvZmZzZXQ6IGkgKiAxMDAg
LyBzdG9wcyArICIlIiwgJ3N0b3AtY29sb3InOiB0aGlzLnJhbmRvbUNvbG9yKCkgfTsKLSAgICAg
ICAgRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlU3ZnRWxlbWVudCgic3RvcCIsIGF0dHJzLCB7fSwg
Z3JhZGllbnQpOworICAgIF9hcHBseUZpbGw6IGZ1bmN0aW9uKHN0YWdlKQorICAgIHsKKyAgICAg
ICAgc3dpdGNoICh0aGlzLl9maWxsKSB7CisgICAgICAgIGNhc2UgImdyYWRpZW50IjoKKyAgICAg
ICAgICAgIHZhciBncmFkaWVudCA9IHN0YWdlLmNyZWF0ZUdyYWRpZW50KDIpOworICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiZmlsbCIsICJ1cmwoIyIgKyBncmFkaWVudC5n
ZXRBdHRyaWJ1dGUoImlkIikgKyAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSAic29saWQiOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhpcy5lbGVtZW50
LnNldEF0dHJpYnV0ZSgiZmlsbCIsIHN0YWdlLnJhbmRvbUNvbG9yKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICB9Cit9KTsKIAotICAgIHJldHVybiBncmFkaWVudDsKLX0K
K0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNp
bmdTdmdQYXJ0aWNsZXNTdGFnZSwKKyAgICBmdW5jdGlvbihlbGVtZW50LCBvcHRpb25zKQorICAg
IHsKKyAgICAgICAgQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQs
IG9wdGlvbnMpOworICAgICAgICB0aGlzLnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7Cisg
ICAgICAgIHRoaXMuX2dyYWRpZW50c0NvdW50ID0gMDsKKyAgICB9LCB7CiAKLUJvdW5jaW5nU3Zn
U2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVuY3Rpb24oKQotewotICAg
IHJldHVybiBuZXcgQm91bmNpbmdTdmdTaGFwZSh0aGlzKTsKLX0KKyAgICBjcmVhdGVHcmFkaWVu
dDogZnVuY3Rpb24oc3RvcHMpCisgICAgeworICAgICAgICB2YXIgYXR0cnMgPSB7IGlkOiAiZ2Fk
aWVudC0iICsgKyt0aGlzLl9ncmFkaWVudHNDb3VudCB9OworICAgICAgICB2YXIgZ3JhZGllbnQg
PSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVTdmdFbGVtZW50KCJsaW5lYXJHcmFkaWVudCIsIGF0
dHJzLCB7fSwgdGhpcy5fZW5zdXJlRGVmc0lzQ3JlYXRlZCgpKTsKIAotQm91bmNpbmdTdmdTaGFw
ZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVuY3Rpb24ocGFydGlj
bGUpCi17Ci0gICAgQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVX
aWxsQmVSZW1vdmVkLmNhbGwodGhpcywgcGFydGljbGUpOwotCi0gICAgdmFyIGZpbGwgPSBwYXJ0
aWNsZS5lbGVtZW50LmdldEF0dHJpYnV0ZSgiZmlsbCIpOwotICAgIGlmIChmaWxsLmluZGV4T2Yo
InVybCgjIikgIT0gMCkKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICB2YXIgZ3JhZGll
bnQgPSB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvcihmaWxsLnN1YnN0cmluZyg0LCBmaWxsLmxl
bmd0aCAtIDEpKTsKLSAgICB0aGlzLl9lbnN1cmVEZWZzSXNDcmVhdGVkKCkucmVtb3ZlQ2hpbGQo
Z3JhZGllbnQpOwotfQorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0b3BzOyArK2kpIHsK
KyAgICAgICAgICAgIGF0dHJzID0geyBvZmZzZXQ6IGkgKiAxMDAgLyBzdG9wcyArICIlIiwgJ3N0
b3AtY29sb3InOiB0aGlzLnJhbmRvbUNvbG9yKCkgfTsKKyAgICAgICAgICAgIERvY3VtZW50RXh0
ZW5zaW9uLmNyZWF0ZVN2Z0VsZW1lbnQoInN0b3AiLCBhdHRycywge30sIGdyYWRpZW50KTsKKyAg
ICAgICAgfQogCi1mdW5jdGlvbiBCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCi17Ci0gICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1h
cmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotfQorICAg
ICAgICByZXR1cm4gZ3JhZGllbnQ7CisgICAgfSwKIAotQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1h
cmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5w
cm90b3R5cGUpOwotQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcms7CisgICAgY3JlYXRlUGFydGljbGU6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdTaGFwZSh0aGlz
KTsKKyAgICB9LAogCi1Cb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRl
U3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQotewotICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdT
aGFwZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKLX0KKyAgICBwYXJ0aWNsZVdpbGxC
ZVJlbW92ZWQ6IGZ1bmN0aW9uKHBhcnRpY2xlKQorICAgIHsKKyAgICAgICAgQm91bmNpbmdTdmdQ
YXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkLmNhbGwodGhpcywg
cGFydGljbGUpOworCisgICAgICAgIHZhciBmaWxsID0gcGFydGljbGUuZWxlbWVudC5nZXRBdHRy
aWJ1dGUoImZpbGwiKTsKKyAgICAgICAgaWYgKGZpbGwuaW5kZXhPZigidXJsKCMiKSAhPSAwKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBncmFkaWVudCA9IHRoaXMuZWxlbWVu
dC5xdWVyeVNlbGVjdG9yKGZpbGwuc3Vic3RyaW5nKDQsIGZpbGwubGVuZ3RoIC0gMSkpOworICAg
ICAgICB0aGlzLl9lbnN1cmVEZWZzSXNDcmVhdGVkKCkucmVtb3ZlQ2hpbGQoZ3JhZGllbnQpOwor
ICAgIH0KK30pOworCitCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayA9IFV0aWxpdGllcy5jcmVh
dGVTdWJjbGFzcyhCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyaywKKyAgICBmdW5jdGlvbihzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCisgICAgeworICAgICAgICBCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVz
c0Jhcik7CisgICAgfSwgeworCisgICAgY3JlYXRlU3RhZ2U6IGZ1bmN0aW9uKGVsZW1lbnQpCisg
ICAgeworICAgICAgICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UoZWxlbWVudCwg
dGhpcy5fb3B0aW9ucyk7CisgICAgfQorfSk7CiAKIHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3Jl
YXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291
cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzCmluZGV4IDhkZTU4NDAu
LjE4MGRhODYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9l
eGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcworKysgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMu
anMKQEAgLTE1LDExNCArMTUsMTEzIEBAIGZ1bmN0aW9uIENhbnZhc0VsZWN0cm9uKHN0YWdlKQog
ICAgIHRoaXMuX3JvdGF0ZXIubmV4dChzdGFnZS5yYW5kb20oMCwgdGhpcy5fcm90YXRlci5pbnRl
cnZhbCkpOwogfQogCi1DYW52YXNFbGVjdHJvbi5wcm90b3R5cGUuX2RyYXcgPSBmdW5jdGlvbigp
Ci17Ci0gICAgLy8gQ2FsY3VsYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgb2JqZWN0IG9uIHRoZSBl
bGxpcHNlLgotICAgIHZhciBhbmdsZSA9IHRoaXMuX2RpcmVjdGlvbiA/IHRoaXMuX3JvdGF0ZXIu
ZGVncmVlKCkgOiAzNjAgLSB0aGlzLl9yb3RhdGVyLmRlZ3JlZSgpOwotICAgIHZhciBwb3NpdGlv
biA9IHRoaXMuX3N0YWdlU2l6ZS5jZW50ZXIuc3VidHJhY3QoUG9pbnQucG9pbnRPbkVsbGlwc2Uo
YW5nbGUsIHRoaXMuX29yYml0UmFkaXVzZXMpKTsKLQotICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgp
OyAgICAKLSAgICAgICAgdGhpcy5fY29udGV4dC50cmFuc2xhdGUodGhpcy5fc3RhZ2VTaXplLmNl
bnRlci54LCB0aGlzLl9zdGFnZVNpemUuY2VudGVyLnkpOwotICAgICAgICB0aGlzLl9jb250ZXh0
LnJvdGF0ZSh0aGlzLl9hbmdsZSAqIE1hdGguUEkgLyAxODApOwotICAgICAgICB0aGlzLl9jb250
ZXh0LnRyYW5zbGF0ZSgtdGhpcy5fc3RhZ2VTaXplLmNlbnRlci54LCAtdGhpcy5fc3RhZ2VTaXpl
LmNlbnRlci55KTsKLQotICAgICAgICAvLyBTZXQgdGhlIHN0cm9rZSBhbmQgdGhlIGZpbGwgY29s
b3JzCi0gICAgICAgIHRoaXMuX2NvbnRleHQuc3Ryb2tlU3R5bGUgPSAicmdiYSgxOTIsIDE5Miwg
MTkyLCAwLjkpIjsKLSAgICAgICAgdGhpcy5fY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLl9jb2xv
cjsKLQotICAgICAgICAvLyBEcmF3IHRoZSBvcmJpdCBvZiB0aGUgb2JqZWN0LgotICAgICAgICB0
aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOwotICAgICAgICB0aGlzLl9jb250ZXh0LmVsbGlwc2Uo
dGhpcy5fc3RhZ2VTaXplLmNlbnRlci54LCB0aGlzLl9zdGFnZVNpemUuY2VudGVyLnksIHRoaXMu
X29yYml0UmFkaXVzZXMueCwgdGhpcy5fb3JiaXRSYWRpdXNlcy55LCAwLCAwLCAyICogTWF0aC5Q
SSk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQuc3Ryb2tlKCk7Ci0gICAgCi0gICAgICAgIC8vIERy
YXcgdGhlIG9iamVjdC4KLSAgICAgICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICAg
ICAgdGhpcy5fY29udGV4dC5hcmMocG9zaXRpb24ueCwgcG9zaXRpb24ueSwgdGhpcy5fcmFkaXVz
LCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbCgpOwot
ICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOwotfQotCi1DYW52YXNFbGVjdHJvbi5wcm90b3R5
cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKLXsKLSAgICB0aGlzLl9yb3RhdGVyLm5l
eHQodGltZURlbHRhIC8gMTAwKTsKLSAgICB0aGlzLl9kcmF3KCk7Ci19Ci0KLWZ1bmN0aW9uIENh
bnZhc0VsZWN0cm9uc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCi17Ci0gICAgU3RhZ2UuY2FsbCh0
aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKLSAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1lbnQu
Z2V0Q29udGV4dCgiMmQiKTsKLSAgICB0aGlzLl9lbGVjdHJvbnMgPSBbXTsKLX0KLQotQ2FudmFz
RWxlY3Ryb25zU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUp
OwotQ2FudmFzRWxlY3Ryb25zU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2FudmFzRWxl
Y3Ryb25zU3RhZ2U7CitDYW52YXNFbGVjdHJvbi5wcm90b3R5cGUgPSB7CisgICAgX2RyYXc6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgcG9zaXRpb24gb2YgdGhl
IG9iamVjdCBvbiB0aGUgZWxsaXBzZS4KKyAgICAgICAgdmFyIGFuZ2xlID0gdGhpcy5fZGlyZWN0
aW9uID8gdGhpcy5fcm90YXRlci5kZWdyZWUoKSA6IDM2MCAtIHRoaXMuX3JvdGF0ZXIuZGVncmVl
KCk7CisgICAgICAgIHZhciBwb3NpdGlvbiA9IHRoaXMuX3N0YWdlU2l6ZS5jZW50ZXIuc3VidHJh
Y3QoUG9pbnQucG9pbnRPbkVsbGlwc2UoYW5nbGUsIHRoaXMuX29yYml0UmFkaXVzZXMpKTsKKwor
ICAgICAgICB0aGlzLl9jb250ZXh0LnNhdmUoKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRleHQu
dHJhbnNsYXRlKHRoaXMuX3N0YWdlU2l6ZS5jZW50ZXIueCwgdGhpcy5fc3RhZ2VTaXplLmNlbnRl
ci55KTsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRleHQucm90YXRlKHRoaXMuX2FuZ2xlICogTWF0
aC5QSSAvIDE4MCk7CisgICAgICAgICAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSgtdGhpcy5f
c3RhZ2VTaXplLmNlbnRlci54LCAtdGhpcy5fc3RhZ2VTaXplLmNlbnRlci55KTsKKworICAgICAg
ICAgICAgLy8gU2V0IHRoZSBzdHJva2UgYW5kIHRoZSBmaWxsIGNvbG9ycworICAgICAgICAgICAg
dGhpcy5fY29udGV4dC5zdHJva2VTdHlsZSA9ICJyZ2JhKDE5MiwgMTkyLCAxOTIsIDAuOSkiOwor
ICAgICAgICAgICAgdGhpcy5fY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLl9jb2xvcjsKKworICAg
ICAgICAgICAgLy8gRHJhdyB0aGUgb3JiaXQgb2YgdGhlIG9iamVjdC4KKyAgICAgICAgICAgIHRo
aXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgICAgICAgICB0aGlzLl9jb250ZXh0LmVsbGlw
c2UodGhpcy5fc3RhZ2VTaXplLmNlbnRlci54LCB0aGlzLl9zdGFnZVNpemUuY2VudGVyLnksIHRo
aXMuX29yYml0UmFkaXVzZXMueCwgdGhpcy5fb3JiaXRSYWRpdXNlcy55LCAwLCAwLCAyICogTWF0
aC5QSSk7CisgICAgICAgICAgICB0aGlzLl9jb250ZXh0LnN0cm9rZSgpOworCisgICAgICAgICAg
ICAvLyBEcmF3IHRoZSBvYmplY3QuCisgICAgICAgICAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0
aCgpOworICAgICAgICAgICAgdGhpcy5fY29udGV4dC5hcmMocG9zaXRpb24ueCwgcG9zaXRpb24u
eSwgdGhpcy5fcmFkaXVzLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7CisgICAgICAgICAgICB0aGlz
Ll9jb250ZXh0LmZpbGwoKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5yZXN0b3JlKCk7CisgICAg
fSwKKworICAgIGFuaW1hdGU6IGZ1bmN0aW9uKHRpbWVEZWx0YSkKKyAgICB7CisgICAgICAgIHRo
aXMuX3JvdGF0ZXIubmV4dCh0aW1lRGVsdGEgLyAxMDApOworICAgICAgICB0aGlzLl9kcmF3KCk7
CisgICAgfQorfTsKKworQ2FudmFzRWxlY3Ryb25zU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3Vi
Y2xhc3MoU3RhZ2UsCisgICAgZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9ucykKKyAgICB7CisgICAg
ICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgICAgIHRoaXMuY29u
dGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICB0aGlzLl9lbGVj
dHJvbnMgPSBbXTsKKyAgICB9LCB7CisKKyAgICB0dW5lOiBmdW5jdGlvbihjb3VudCkKKyAgICB7
CisgICAgICAgIGlmIChjb3VudCA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZWN0
cm9ucy5sZW5ndGg7CisKKyAgICAgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMuX2VsZWN0
cm9ucy5wdXNoKG5ldyBDYW52YXNFbGVjdHJvbih0aGlzKSk7CisgICAgICAgICAgICByZXR1cm4g
dGhpcy5fZWxlY3Ryb25zLmxlbmd0aDsKKyAgICAgICAgfQorCisgICAgICAgIGNvdW50ID0gTWF0
aC5taW4oLWNvdW50LCB0aGlzLl9lbGVjdHJvbnMubGVuZ3RoKTsKKyAgICAgICAgdGhpcy5fZWxl
Y3Ryb25zLnNwbGljZSgtY291bnQsIGNvdW50KTsKIAotQ2FudmFzRWxlY3Ryb25zU3RhZ2UucHJv
dG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKLXsKLSAgICBpZiAoY291bnQgPT0gMCkKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2VsZWN0cm9ucy5sZW5ndGg7CisgICAgfSwKIAotICAgIGlmIChj
b3VudCA+IDApIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQotICAg
ICAgICAgICAgdGhpcy5fZWxlY3Ryb25zLnB1c2gobmV3IENhbnZhc0VsZWN0cm9uKHRoaXMpKTsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX2VsZWN0cm9ucy5sZW5ndGg7CisgICAgYW5pbWF0ZTogZnVu
Y3Rpb24odGltZURlbHRhKQorICAgIHsKKyAgICAgICAgdGhpcy5fZWxlY3Ryb25zLmZvckVhY2go
ZnVuY3Rpb24oZWxlY3Ryb24pIHsKKyAgICAgICAgICAgIGVsZWN0cm9uLmFuaW1hdGUodGltZURl
bHRhKTsKKyAgICAgICAgfSk7CiAgICAgfQorfSk7CiAKLSAgICBjb3VudCA9IE1hdGgubWluKC1j
b3VudCwgdGhpcy5fZWxlY3Ryb25zLmxlbmd0aCk7Ci0gICAgdGhpcy5fZWxlY3Ryb25zLnNwbGlj
ZSgtY291bnQsIGNvdW50KTsKLSAgICAKLSAgICByZXR1cm4gdGhpcy5fZWxlY3Ryb25zLmxlbmd0
aDsKLX0KLQotQ2FudmFzRWxlY3Ryb25zU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlv
bih0aW1lRGVsdGEpCi17Ci0gICAgdGhpcy5fZWxlY3Ryb25zLmZvckVhY2goZnVuY3Rpb24oZWxl
Y3Ryb24pIHsKLSAgICAgICAgZWxlY3Ryb24uYW5pbWF0ZSh0aW1lRGVsdGEpOwotICAgIH0pOwot
fQotCi1mdW5jdGlvbiBDYW52YXNFbGVjdHJvbnNBbmltYXRvcihiZW5jaG1hcmssIG9wdGlvbnMp
Ci17Ci0gICAgQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmssIG9wdGlvbnMpOwotICAgIHRo
aXMuX2NvbnRleHQgPSBiZW5jaG1hcmsuX3N0YWdlLmNvbnRleHQ7Ci19Ci0KLUNhbnZhc0VsZWN0
cm9uc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VBbmltYXRvci5wcm90
b3R5cGUpOwotQ2FudmFzRWxlY3Ryb25zQW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
Q2FudmFzRWxlY3Ryb25zQW5pbWF0b3I7CitDYW52YXNFbGVjdHJvbnNBbmltYXRvciA9IFV0aWxp
dGllcy5jcmVhdGVTdWJjbGFzcyhTdGFnZUFuaW1hdG9yLAorICAgIGZ1bmN0aW9uKGJlbmNobWFy
aywgb3B0aW9ucykKKyAgICB7CisgICAgICAgIEFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJr
LCBvcHRpb25zKTsKKyAgICAgICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29u
dGV4dDsKKyAgICB9LCB7CiAKLUNhbnZhc0VsZWN0cm9uc0FuaW1hdG9yLnByb3RvdHlwZS5hbmlt
YXRlID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX2NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRo
aXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS54LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUu
eSk7CisgICAgYW5pbWF0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fY29udGV4
dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLngsIHRoaXMuX2Jl
bmNobWFyay5fc3RhZ2Uuc2l6ZS55KTsKIAotICAgIC8vIERyYXcgYSBiaWcgc3RhciBpbiB0aGUg
bWlkZGxlLgotICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxlID0gIm9yYW5nZSI7ICAgIAotICAg
IHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7Ci0gICAgdGhpcy5fY29udGV4dC5hcmModGhpcy5f
YmVuY2htYXJrLl9zdGFnZS5zaXplLmNlbnRlci54LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNp
emUuY2VudGVyLnksIDUwLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7Ci0gICAgdGhpcy5fY29udGV4
dC5maWxsKCk7Ci0KLSAgICByZXR1cm4gU3RhZ2VBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5j
YWxsKHRoaXMpOwotfQotCi1mdW5jdGlvbiBDYW52YXNFbGVjdHJvbnNCZW5jaG1hcmsoc3VpdGUs
IHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQotewotICAgIFN0YWdlQmVuY2htYXJrLmNhbGwo
dGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KLQotQ2FudmFzRWxl
Y3Ryb25zQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsu
cHJvdG90eXBlKTsKLUNhbnZhc0VsZWN0cm9uc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBDYW52YXNFbGVjdHJvbnNCZW5jaG1hcms7Ci0KLUNhbnZhc0VsZWN0cm9uc0JlbmNobWFy
ay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQotewotICAgIC8vIEF0
dGFjaCB0aGUgc3RhZ2UgdG8gdGhlIGJlbmNobWFyay4KLSAgICByZXR1cm4gbmV3IENhbnZhc0Vs
ZWN0cm9uc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwotfQorICAgICAgICAvLyBEcmF3
IGEgYmlnIHN0YXIgaW4gdGhlIG1pZGRsZS4KKyAgICAgICAgdGhpcy5fY29udGV4dC5maWxsU3R5
bGUgPSAib3JhbmdlIjsKKyAgICAgICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAg
ICAgdGhpcy5fY29udGV4dC5hcmModGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLmNlbnRlci54
LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUuY2VudGVyLnksIDUwLCAwLCBNYXRoLlBJICog
MiwgdHJ1ZSk7CisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbCgpOwogCi1DYW52YXNFbGVjdHJv
bnNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQotewotICAg
IC8vIEF0dGFjaCB0aGUgYW5pbWF0b3IgdG8gdGhlIGJlbmNobWFyay4KLSAgICByZXR1cm4gbmV3
IENhbnZhc0VsZWN0cm9uc0FuaW1hdG9yKHRoaXMsIHRoaXMuX29wdGlvbnMpOwotfQorICAgICAg
ICByZXR1cm4gU3RhZ2VBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMpOworICAg
IH0KK30pOworCitDYW52YXNFbGVjdHJvbnNCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3Vi
Y2xhc3MoU3RhZ2VCZW5jaG1hcmssCisgICAgZnVuY3Rpb24gKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCBwcm9ncmVzc0JhcikKKyAgICB7CisgICAgICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywg
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKKyAgICB9LCB7CisKKyAgICBjcmVh
dGVTdGFnZTogZnVuY3Rpb24oZWxlbWVudCkKKyAgICB7CisgICAgICAgIC8vIEF0dGFjaCB0aGUg
c3RhZ2UgdG8gdGhlIGJlbmNobWFyay4KKyAgICAgICAgcmV0dXJuIG5ldyBDYW52YXNFbGVjdHJv
bnNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKKyAgICB9LAorCisgICAgY3JlYXRlQW5p
bWF0b3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIC8vIEF0dGFjaCB0aGUgYW5pbWF0b3Ig
dG8gdGhlIGJlbmNobWFyay4KKyAgICAgICAgcmV0dXJuIG5ldyBDYW52YXNFbGVjdHJvbnNBbmlt
YXRvcih0aGlzLCB0aGlzLl9vcHRpb25zKTsKKyAgICB9Cit9KTsKIAogd2luZG93LmJlbmNobWFy
a0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NC
YXIpCiB7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhh
bXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCmluZGV4IGQzN2My
YTIuLjIxODc3Y2MgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCkBA
IC05LDEyMSArOSwxMjAgQEAgZnVuY3Rpb24gQ2FudmFzU3RhcihzdGFnZSkKICAgICB0aGlzLl9y
b3RhdGVEZWx0YVggPSBzdGFnZS5yYW5kb20oMC4zLCAwLjcpOwogfQogCi1DYW52YXNTdGFyLnBy
b3RvdHlwZS5fZHJhdyA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlzLl9jb250ZXh0LnNhdmUoKTsK
LSAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSh0aGlzLl9jZW50ZXIueCwgdGhpcy5fY2VudGVy
LnkpOwotICAgIAotICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxlID0gJ3llbGxvdyc7Ci0gICAg
dGhpcy5fY29udGV4dC5zdHJva2VTdHlsZSA9ICd3aGl0ZSc7Ci0KLSAgICB0aGlzLl9jb250ZXh0
LmxpbmVXaWR0aCA9IDE7Ci0gICAgCi0gICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKLSAg
ICB0aGlzLl9jb250ZXh0Lm1vdmVUbyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgLXRoaXMuX3NpemUueSAvICAyKTsKLSAgICB0aGlzLl9jb250ZXh0LmxpbmVUbygrdGhp
cy5fc2l6ZS54IC8gMjAgLSB0aGlzLl9yb3RhdGVYIC8gNSwgLXRoaXMuX3NpemUueSAvIDEwKTsK
LSAgICB0aGlzLl9jb250ZXh0LmxpbmVUbygrdGhpcy5fc2l6ZS54IC8gNCAgLSB0aGlzLl9yb3Rh
dGVYLCAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICB0aGlzLl9jb250ZXh0LmxpbmVUbygr
dGhpcy5fc2l6ZS54IC8gMjAgLSB0aGlzLl9yb3RhdGVYIC8gNSwgK3RoaXMuX3NpemUueSAvIDEw
KTsKLSAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgK3RoaXMuX3NpemUueSAvICAyKTsKLSAgICB0aGlzLl9jb250ZXh0LmxpbmVU
bygtdGhpcy5fc2l6ZS54IC8gMjAgKyB0aGlzLl9yb3RhdGVYIC8gNSwgK3RoaXMuX3NpemUueSAv
IDEwKTsKLSAgICB0aGlzLl9jb250ZXh0LmxpbmVUbygtdGhpcy5fc2l6ZS54IC8gIDQgKyB0aGlz
Ll9yb3RhdGVYLCAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICB0aGlzLl9jb250ZXh0Lmxp
bmVUbygtdGhpcy5fc2l6ZS54IC8gMjAgKyB0aGlzLl9yb3RhdGVYIC8gNSwgLXRoaXMuX3NpemUu
eSAvIDEwKTsKLSAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgLXRoaXMuX3NpemUueSAvICAyKTsKLSAgICAKLSAgICB0aGlzLl9j
b250ZXh0LmZpbGwoKTsKLSAgICB0aGlzLl9jb250ZXh0LnN0cm9rZSgpOwotICAgIHRoaXMuX2Nv
bnRleHQuY2xvc2VQYXRoKCk7Ci0gICAgdGhpcy5fY29udGV4dC5yZXN0b3JlKCk7Ci19Ci0KLUNh
bnZhc1N0YXIucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCi17Ci0gICAg
dGhpcy5fcm90YXRlWCArPSB0aGlzLl9yb3RhdGVEZWx0YVg7Ci0gICAgCi0gICAgaWYgKHRoaXMu
X3JvdGF0ZVggPiB0aGlzLl9zaXplLnggLyA0IHx8IHRoaXMuX3JvdGF0ZVggPCAtdGhpcy5fc2l6
ZS54IC8gNCkgewotICAgICAgICB0aGlzLl9yb3RhdGVEZWx0YVggPSAtdGhpcy5fcm90YXRlRGVs
dGFYOworQ2FudmFzU3Rhci5wcm90b3R5cGUgPSB7CisgICAgX2RyYXc6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOworICAgICAgICB0aGlzLl9jb250ZXh0
LnRyYW5zbGF0ZSh0aGlzLl9jZW50ZXIueCwgdGhpcy5fY2VudGVyLnkpOworCisgICAgICAgIHRo
aXMuX2NvbnRleHQuZmlsbFN0eWxlID0gJ3llbGxvdyc7CisgICAgICAgIHRoaXMuX2NvbnRleHQu
c3Ryb2tlU3R5bGUgPSAnd2hpdGUnOworCisgICAgICAgIHRoaXMuX2NvbnRleHQubGluZVdpZHRo
ID0gMTsKKworICAgICAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOworICAgICAgICB0aGlz
Ll9jb250ZXh0Lm1vdmVUbyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
LXRoaXMuX3NpemUueSAvICAyKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oK3RoaXMu
X3NpemUueCAvIDIwIC0gdGhpcy5fcm90YXRlWCAvIDUsIC10aGlzLl9zaXplLnkgLyAxMCk7Cisg
ICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKCt0aGlzLl9zaXplLnggLyA0ICAtIHRoaXMuX3Jv
dGF0ZVgsICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICB0aGlzLl9jb250ZXh0Lmxp
bmVUbygrdGhpcy5fc2l6ZS54IC8gMjAgLSB0aGlzLl9yb3RhdGVYIC8gNSwgK3RoaXMuX3NpemUu
eSAvIDEwKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsICt0aGlzLl9zaXplLnkgLyAgMik7CisgICAgICAgIHRoaXMu
X2NvbnRleHQubGluZVRvKC10aGlzLl9zaXplLnggLyAyMCArIHRoaXMuX3JvdGF0ZVggLyA1LCAr
dGhpcy5fc2l6ZS55IC8gMTApOworICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbygtdGhpcy5f
c2l6ZS54IC8gIDQgKyB0aGlzLl9yb3RhdGVYLCAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAg
ICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oLXRoaXMuX3NpemUueCAvIDIwICsgdGhpcy5fcm90
YXRlWCAvIDUsIC10aGlzLl9zaXplLnkgLyAxMCk7CisgICAgICAgIHRoaXMuX2NvbnRleHQubGlu
ZVRvKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAtdGhpcy5fc2l6ZS55
IC8gIDIpOworCisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbCgpOworICAgICAgICB0aGlzLl9j
b250ZXh0LnN0cm9rZSgpOworICAgICAgICB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpOworICAg
ICAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKKyAgICB9LAorCisgICAgYW5pbWF0ZTogZnVu
Y3Rpb24odGltZURlbHRhKQorICAgIHsKICAgICAgICAgdGhpcy5fcm90YXRlWCArPSB0aGlzLl9y
b3RhdGVEZWx0YVg7Ci0gICAgfQotCi0gICB0aGlzLl9kcmF3KCk7Ci19Ci0KLWZ1bmN0aW9uIENh
bnZhc1N0YXJzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKLXsKLSAgIFN0YWdlLmNhbGwodGhpcywg
ZWxlbWVudCwgb3B0aW9ucyk7Ci0gICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29u
dGV4dCgiMmQiKTsKIAotICAgIHRoaXMuX29iamVjdHMgPSBbXTsKLX0KLQotQ2FudmFzU3RhcnNT
dGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7Ci1DYW52YXNT
dGFyc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENhbnZhc1N0YXJzU3RhZ2U7Ci0KLUNh
bnZhc1N0YXJzU3RhZ2UucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKLXsKLSAgICBp
ZiAoY291bnQgPT0gMCkKLSAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdHMubGVuZ3RoOworICAg
ICAgICBpZiAodGhpcy5fcm90YXRlWCA+IHRoaXMuX3NpemUueCAvIDQgfHwgdGhpcy5fcm90YXRl
WCA8IC10aGlzLl9zaXplLnggLyA0KSB7CisgICAgICAgICAgICB0aGlzLl9yb3RhdGVEZWx0YVgg
PSAtdGhpcy5fcm90YXRlRGVsdGFYOworICAgICAgICAgICAgdGhpcy5fcm90YXRlWCArPSB0aGlz
Ll9yb3RhdGVEZWx0YVg7CisgICAgICAgIH0KIAotICAgIGlmIChjb3VudCA+IDApIHsKLSAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQotICAgICAgICAgICAgdGhpcy5fb2Jq
ZWN0cy5wdXNoKG5ldyBDYW52YXNTdGFyKHRoaXMpKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX29i
amVjdHMubGVuZ3RoOworICAgICAgICB0aGlzLl9kcmF3KCk7CiAgICAgfQorfTsKIAotICAgIGNv
dW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9vYmplY3RzLmxlbmd0aCk7Ci0gICAgdGhpcy5f
b2JqZWN0cy5zcGxpY2UoLWNvdW50LCBjb3VudCk7CitDYW52YXNTdGFyc1N0YWdlID0gVXRpbGl0
aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlLAorICAgIGZ1bmN0aW9uKGVsZW1lbnQsIG9wdGlvbnMp
CisgICAgeworICAgICAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAg
ICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKIAotICAg
IHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKLX0KKyAgICAgICAgdGhpcy5fb2JqZWN0cyA9
IFtdOworICAgIH0sIHsKIAotQ2FudmFzU3RhcnNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1
bmN0aW9uKHRpbWVEZWx0YSkKLXsKLSAgICB0aGlzLl9vYmplY3RzLmZvckVhY2goZnVuY3Rpb24o
b2JqZWN0KSB7Ci0gICAgICAgIG9iamVjdC5hbmltYXRlKHRpbWVEZWx0YSk7Ci0gICAgfSk7Ci19
CisgICAgdHVuZTogZnVuY3Rpb24oY291bnQpCisgICAgeworICAgICAgICBpZiAoY291bnQgPT0g
MCkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKIAotZnVuY3Rpb24g
Q2FudmFzU3RhcnNBbmltYXRvcihiZW5jaG1hcmssIG9wdGlvbnMpCi17Ci0gICBBbmltYXRvci5j
YWxsKHRoaXMsIGJlbmNobWFyaywgb3B0aW9ucyk7Ci0gICB0aGlzLl9jb250ZXh0ID0gYmVuY2ht
YXJrLl9zdGFnZS5jb250ZXh0OwotfQotCi1DYW52YXNTdGFyc0FuaW1hdG9yLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUoU3RhZ2VBbmltYXRvci5wcm90b3R5cGUpOwotQ2FudmFzU3RhcnNBbmlt
YXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNTdGFyc0FuaW1hdG9yOwotCi1DYW52
YXNTdGFyc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQotewotICAgIHRo
aXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7Ci0gICAgdGhpcy5fY29udGV4dC5maWxsU3R5bGUgPSAn
YmxhY2snOwotICAgIHRoaXMuX2NvbnRleHQucmVjdCgwLCAwLCB0aGlzLl9iZW5jaG1hcmsuX3N0
YWdlLnNpemUud2lkdGgsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS5oZWlnaHQpOwotICAg
IHRoaXMuX2NvbnRleHQuZmlsbCgpOwotICAgcmV0dXJuIFN0YWdlQW5pbWF0b3IucHJvdG90eXBl
LmFuaW1hdGUuY2FsbCh0aGlzKTsKLX0KLQotZnVuY3Rpb24gQ2FudmFzU3RhcnNCZW5jaG1hcmso
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQotewotICAgU3RhZ2VCZW5jaG1hcmsu
Y2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotfQorICAgICAg
ICBpZiAoY291bnQgPiAwKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50
OyArK2kpCisgICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0cy5wdXNoKG5ldyBDYW52YXNTdGFy
KHRoaXMpKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKKyAgICAg
ICAgfQogCi1DYW52YXNTdGFyc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0
YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7Ci1DYW52YXNTdGFyc0JlbmNobWFyay5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBDYW52YXNTdGFyc0JlbmNobWFyazsKKyAgICAgICAgY291bnQgPSBNYXRo
Lm1pbigtY291bnQsIHRoaXMuX29iamVjdHMubGVuZ3RoKTsKKyAgICAgICAgdGhpcy5fb2JqZWN0
cy5zcGxpY2UoLWNvdW50LCBjb3VudCk7CiAKLUNhbnZhc1N0YXJzQmVuY2htYXJrLnByb3RvdHlw
ZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCi17Ci0gICAvLyBBdHRhY2ggdGhlIHN0
YWdlIHRvIHRoZSBiZW5jaG1hcmsuCi0gICByZXR1cm4gbmV3IENhbnZhc1N0YXJzU3RhZ2UoZWxl
bWVudCwgdGhpcy5fb3B0aW9ucyk7Ci19CisgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxl
bmd0aDsKKyAgICB9LAogCi1DYW52YXNTdGFyc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5p
bWF0b3IgPSBmdW5jdGlvbigpCi17Ci0gICAvLyBBdHRhY2ggdGhlIGFuaW1hdG9yIHRvIHRoZSBi
ZW5jaG1hcmsuCi0gICByZXR1cm4gbmV3IENhbnZhc1N0YXJzQW5pbWF0b3IodGhpcywgdGhpcy5f
b3B0aW9ucyk7Ci19CisgICAgYW5pbWF0ZTogZnVuY3Rpb24odGltZURlbHRhKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fb2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uKG9iamVjdCkgeworICAgICAgICAg
ICAgb2JqZWN0LmFuaW1hdGUodGltZURlbHRhKTsKKyAgICAgICAgfSk7CisgICAgfQorfSk7CisK
K0NhbnZhc1N0YXJzQW5pbWF0b3IgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2VBbmlt
YXRvciwKKyAgICBmdW5jdGlvbihiZW5jaG1hcmssIG9wdGlvbnMpCisgICAgeworICAgICAgICBB
bmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyaywgb3B0aW9ucyk7CisgICAgICAgIHRoaXMuX2Nv
bnRleHQgPSBiZW5jaG1hcmsuX3N0YWdlLmNvbnRleHQ7CisgICAgfSwgeworCisgICAgYW5pbWF0
ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsK
KyAgICAgICAgdGhpcy5fY29udGV4dC5maWxsU3R5bGUgPSAnYmxhY2snOworICAgICAgICB0aGlz
Ll9jb250ZXh0LnJlY3QoMCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLndpZHRoLCB0
aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUuaGVpZ2h0KTsKKyAgICAgICAgdGhpcy5fY29udGV4
dC5maWxsKCk7CisgICAgICAgIHJldHVybiBTdGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRl
LmNhbGwodGhpcyk7CisgICAgfQorfSk7CisKK0NhbnZhc1N0YXJzQmVuY2htYXJrID0gVXRpbGl0
aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlQmVuY2htYXJrLAorICAgIGZ1bmN0aW9uKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKKyAgICB7CisgICAgICAgIFN0YWdlQmVuY2htYXJr
LmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKKyAgICB9LCB7
CisKKyAgICBjcmVhdGVTdGFnZTogZnVuY3Rpb24oZWxlbWVudCkKKyAgICB7CisgICAgICAgIC8v
IEF0dGFjaCB0aGUgc3RhZ2UgdG8gdGhlIGJlbmNobWFyay4KKyAgICAgICAgcmV0dXJuIG5ldyBD
YW52YXNTdGFyc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworICAgIH0sCisKKyAgICBj
cmVhdGVBbmltYXRvcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8gQXR0YWNoIHRoZSBh
bmltYXRvciB0byB0aGUgYmVuY2htYXJrLgorICAgICAgICByZXR1cm4gbmV3IENhbnZhc1N0YXJz
QW5pbWF0b3IodGhpcywgdGhpcy5fb3B0aW9ucyk7CisgICAgfQorfSk7CiAKIHdpbmRvdy5iZW5j
aG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dy
ZXNzQmFyKQogewotICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgdGVzdCBo
YXJuZXNzIHdoaWNoIHN0YXJ0cyB0aGUKLSAgIC8vIHRlc3QgYnkgY3JlYXRpbmcgeW91ciBiZW5j
aG1hcmsgb2JqZWN0LgotICAgcmV0dXJuIG5ldyBDYW52YXNTdGFyc0JlbmNobWFyayhzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOworICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2Fs
bGVkIGZyb20gdGhlIHRlc3QgaGFybmVzcyB3aGljaCBzdGFydHMgdGhlCisgICAgLy8gdGVzdCBi
eSBjcmVhdGluZyB5b3VyIGJlbmNobWFyayBvYmplY3QuCisgICAgcmV0dXJuIG5ldyBDYW52YXNT
dGFyc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwogfQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy1zdGFnZS5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy1zdGFnZS5q
cwppbmRleCBjZWU4ZmNhLi5hMzQ4OWY0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtc3RhZ2UuanMKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0
YWdlLmpzCkBAIC0xLDYxICsxLDY0IEBACi1mdW5jdGlvbiBTaW1wbGVDYW52YXNTdGFnZShlbGVt
ZW50LCBvcHRpb25zLCBjYW52YXNPYmplY3QpCi17Ci0gICAgU3RhZ2UuY2FsbCh0aGlzLCBlbGVt
ZW50LCBvcHRpb25zKTsKLSAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwotICAgIHRoaXMuY29u
dGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOwotICAgIHRoaXMuY2FudmFzT2Jq
ZWN0ID0gY2FudmFzT2JqZWN0OwotICAgIHRoaXMuX29iamVjdHMgPSBbXTsKLX0KLVNpbXBsZUNh
bnZhc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2UucHJvdG90eXBlKTsKLVNp
bXBsZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNpbXBsZUNhbnZhc1N0YWdl
OwotU2ltcGxlQ2FudmFzU3RhZ2UucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKLXsK
LSAgICBpZiAoY291bnQgPT0gMCkKLSAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdHMubGVuZ3Ro
OworU2ltcGxlQ2FudmFzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2UsCisg
ICAgZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9ucywgY2FudmFzT2JqZWN0KQorICAgIHsKKyAgICAg
ICAgU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICAgICAgdGhpcy5vcHRp
b25zID0gb3B0aW9uczsKKyAgICAgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENv
bnRleHQoIjJkIik7CisgICAgICAgIHRoaXMuY2FudmFzT2JqZWN0ID0gY2FudmFzT2JqZWN0Owor
ICAgICAgICB0aGlzLl9vYmplY3RzID0gW107CisgICAgfSwgeworCisgICAgdHVuZTogZnVuY3Rp
b24oY291bnQpCisgICAgeworICAgICAgICBpZiAoY291bnQgPT0gMCkKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKIAotICAgIGlmIChjb3VudCA+IDApIHsKLSAgICAg
ICAgLy8gRm9yIHBhdGgtYmFzZWQgdGVzdHMsIHVzZSB0aGUgb2JqZWN0IGxlbmd0aCBhcyBhIG1h
eGltdW0gY29vcmRpbmF0ZSB2YWx1ZQotICAgICAgICAvLyB0byBtYWtlIGl0IGVhc2llciB0byBz
ZWUgd2hhdCB0aGUgdGVzdCBpcyBkb2luZwotICAgICAgICB2YXIgY29vcmRpbmF0ZU1heGltdW0g
PSBNYXRoLm1heCh0aGlzLl9vYmplY3RzLmxlbmd0aCwgMjAwKTsKLSAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICB0aGlzLl9vYmplY3RzLnB1c2go
bmV3IHRoaXMuY2FudmFzT2JqZWN0KHRoaXMsIGNvb3JkaW5hdGVNYXhpbXVtKSk7CisgICAgICAg
IGlmIChjb3VudCA+IDApIHsKKyAgICAgICAgICAgIC8vIEZvciBwYXRoLWJhc2VkIHRlc3RzLCB1
c2UgdGhlIG9iamVjdCBsZW5ndGggYXMgYSBtYXhpbXVtIGNvb3JkaW5hdGUgdmFsdWUKKyAgICAg
ICAgICAgIC8vIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNlZSB3aGF0IHRoZSB0ZXN0IGlzIGRvaW5n
CisgICAgICAgICAgICB2YXIgY29vcmRpbmF0ZU1heGltdW0gPSBNYXRoLm1heCh0aGlzLl9vYmpl
Y3RzLmxlbmd0aCwgMjAwKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7
ICsraSkgeworICAgICAgICAgICAgICAgIHRoaXMuX29iamVjdHMucHVzaChuZXcgdGhpcy5jYW52
YXNPYmplY3QodGhpcywgY29vcmRpbmF0ZU1heGltdW0pKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKICAgICAgICAgfQorCisgICAgICAg
IGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9vYmplY3RzLmxlbmd0aCk7CisgICAgICAg
IHRoaXMuX29iamVjdHMuc3BsaWNlKDAsIGNvdW50KTsKICAgICAgICAgcmV0dXJuIHRoaXMuX29i
amVjdHMubGVuZ3RoOworICAgIH0sCisKKyAgICBhbmltYXRlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuY29udGV4dDsKKyAgICAgICAgdGhpcy5fb2JqZWN0
cy5mb3JFYWNoKGZ1bmN0aW9uKG9iamVjdCkgeworICAgICAgICAgICAgb2JqZWN0LmRyYXcoY29u
dGV4dCk7CisgICAgICAgIH0pOwogICAgIH0KK30pOwogCi0gICAgY291bnQgPSBNYXRoLm1pbigt
Y291bnQsIHRoaXMuX29iamVjdHMubGVuZ3RoKTsKLSAgICB0aGlzLl9vYmplY3RzLnNwbGljZSgw
LCBjb3VudCk7Ci0gICAgcmV0dXJuIHRoaXMuX29iamVjdHMubGVuZ3RoOwotfQotU2ltcGxlQ2Fu
dmFzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGNvbnRl
eHQgPSB0aGlzLmNvbnRleHQ7Ci0gICAgdGhpcy5fb2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uKG9i
amVjdCkgewotICAgICAgICBvYmplY3QuZHJhdyhjb250ZXh0KTsKLSAgICB9KTsKLX0KLQotZnVu
Y3Rpb24gU2ltcGxlQ2FudmFzQW5pbWF0b3IoYmVuY2htYXJrLCBvcHRpb25zKQotewotICAgIFN0
YWdlQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmssIG9wdGlvbnMpOwotICAgIHRoaXMuX2Nv
bnRleHQgPSBiZW5jaG1hcmsuX3N0YWdlLmNvbnRleHQ7Ci19Ci0KLVNpbXBsZUNhbnZhc0FuaW1h
dG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VBbmltYXRvci5wcm90b3R5cGUpOwot
U2ltcGxlQ2FudmFzQW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU2ltcGxlQ2FudmFz
QW5pbWF0b3I7Ci1TaW1wbGVDYW52YXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0
aW9uKCkKLXsKLSAgICB0aGlzLl9jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl9iZW5jaG1h
cmsuX3N0YWdlLnNpemUueCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLnkpOwotICAgIHJl
dHVybiBTdGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGhpcy5fb3B0
aW9ucyk7Ci19Ci0KLQotZnVuY3Rpb24gU2ltcGxlQ2FudmFzQmVuY2htYXJrKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCBwcm9ncmVzc0JhcikgewotICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywg
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KLVNpbXBsZUNhbnZhc0JlbmNo
bWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7
Ci1TaW1wbGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU2ltcGxlQ2Fu
dmFzQmVuY2htYXJrOwotU2ltcGxlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmlt
YXRvciA9IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzQW5pbWF0b3Io
dGhpcywgdGhpcy5fb3B0aW9ucyk7Ci19CitTaW1wbGVDYW52YXNBbmltYXRvciA9IFV0aWxpdGll
cy5jcmVhdGVTdWJjbGFzcyhTdGFnZUFuaW1hdG9yLAorICAgIGZ1bmN0aW9uKGJlbmNobWFyaywg
b3B0aW9ucykKKyAgICB7CisgICAgICAgIFN0YWdlQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1h
cmssIG9wdGlvbnMpOworICAgICAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5j
b250ZXh0OworICAgIH0sIHsKIAorICAgIGFuaW1hdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uu
c2l6ZS54LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueSk7CisgICAgICAgIHJldHVybiBT
dGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGhpcy5fb3B0aW9ucyk7
CisgICAgfQorfSk7CisKK1NpbXBsZUNhbnZhc0JlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVT
dWJjbGFzcyhTdGFnZUJlbmNobWFyaywKKyAgICBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcHJvZ3Jlc3NCYXIpCisgICAgeworICAgICAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMs
IHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CisgICAgfSwgeworCisgICAgY3Jl
YXRlQW5pbWF0b3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgU2ltcGxl
Q2FudmFzQW5pbWF0b3IodGhpcywgdGhpcy5fb3B0aW9ucyk7CisgICAgfQorfSk7CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9j
YW52YXMtdGVzdHMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVy
L3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMKaW5kZXggNTY0YjU4YS4uODMzOGZhNiAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMv
Y2FudmFzLXRlc3RzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9t
YXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5qcwpAQCAtMTIwLDk4ICsxMjAsMTAxIEBAIENh
bnZhc0xpbmVQb2ludC5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGNvbnRleHQsIHN0YWdlKQog
CiAvLyA9PT0gU1RBR0VTID09PQogCi1mdW5jdGlvbiBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3Rh
Z2UoZWxlbWVudCwgb3B0aW9ucywgY2FudmFzT2JqZWN0KQotewotICAgIFNpbXBsZUNhbnZhc1N0
YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucywgY2FudmFzT2JqZWN0KTsKLSAgICB0aGlz
LmNvbnRleHQubGluZUNhcCA9IG9wdGlvbnNbImxpbmVDYXAiXSB8fCAiYnV0dCI7Ci0gICAgdGhp
cy5jb250ZXh0LmxpbmVKb2luID0gb3B0aW9uc1sibGluZUpvaW4iXSB8fCAiYmV2ZWwiOwotfQot
U2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU2lt
cGxlQ2FudmFzU3RhZ2UucHJvdG90eXBlKTsKLVNpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZS5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2U7Ci1TaW1w
bGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpIHsK
LSAgICB2YXIgY29udGV4dCA9IHRoaXMuY29udGV4dDsKLSAgICB2YXIgc3RhZ2UgPSB0aGlzOwot
Ci0gICAgY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICB0aGlzLl9vYmplY3RzLmZvckVhY2goZnVu
Y3Rpb24ob2JqZWN0LCBpbmRleCkgewotICAgICAgICBpZiAoaW5kZXggPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC5saW5lV2lkdGggPSBvYmplY3QuX3dpZHRoOwotICAgICAgICAgICAgY29u
dGV4dC5zdHJva2VTdHlsZSA9IG9iamVjdC5fY29sb3I7Ci0gICAgICAgICAgICBjb250ZXh0Lm1v
dmVUbyhvYmplY3QuX3BvaW50LngsIG9iamVjdC5fcG9pbnQueSk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBpZiAob2JqZWN0Ll9pc1NwbGl0KSB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC5zdHJva2UoKTsKK1NpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZSA9IFV0aWxpdGllcy5j
cmVhdGVTdWJjbGFzcyhTaW1wbGVDYW52YXNTdGFnZSwKKyAgICBmdW5jdGlvbihlbGVtZW50LCBv
cHRpb25zLCBjYW52YXNPYmplY3QpCisgICAgeworICAgICAgICBTaW1wbGVDYW52YXNTdGFnZS5j
YWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMsIGNhbnZhc09iamVjdCk7CisgICAgICAgIHRoaXMu
Y29udGV4dC5saW5lQ2FwID0gb3B0aW9uc1sibGluZUNhcCJdIHx8ICJidXR0IjsKKyAgICAgICAg
dGhpcy5jb250ZXh0LmxpbmVKb2luID0gb3B0aW9uc1sibGluZUpvaW4iXSB8fCAiYmV2ZWwiOwor
ICAgIH0sIHsKKworICAgIGFuaW1hdGU6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgY29udGV4
dCA9IHRoaXMuY29udGV4dDsKKyAgICAgICAgdmFyIHN0YWdlID0gdGhpczsKIAorICAgICAgICBj
b250ZXh0LmJlZ2luUGF0aCgpOworICAgICAgICB0aGlzLl9vYmplY3RzLmZvckVhY2goZnVuY3Rp
b24ob2JqZWN0LCBpbmRleCkgeworICAgICAgICAgICAgaWYgKGluZGV4ID09IDApIHsKICAgICAg
ICAgICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IG9iamVjdC5fd2lkdGg7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IG9iamVjdC5fY29sb3I7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
b250ZXh0Lm1vdmVUbyhvYmplY3QuX3BvaW50LngsIG9iamVjdC5fcG9pbnQueSk7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChvYmplY3QuX2lzU3BsaXQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2UoKTsKIAotICAgICAgICAgICAgaWYgKE1h
dGgucmFuZG9tKCkgPiAwLjk5OSkKLSAgICAgICAgICAgICAgICBvYmplY3QuX2lzU3BsaXQgPSAh
b2JqZWN0Ll9pc1NwbGl0OworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9
IG9iamVjdC5fd2lkdGg7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUg
PSBvYmplY3QuX2NvbG9yOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgp
OworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgb2JqZWN0LmRyYXcoY29udGV4dCk7
Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICBjb250ZXh0LnN0cm9rZSgpOwotfQorICAgICAgICAg
ICAgICAgIGlmIChNYXRoLnJhbmRvbSgpID4gMC45OTkpCisgICAgICAgICAgICAgICAgICAgIG9i
amVjdC5faXNTcGxpdCA9ICFvYmplY3QuX2lzU3BsaXQ7CiAKLWZ1bmN0aW9uIENhbnZhc0xpbmVT
ZWdtZW50U3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKLXsKLSAgICBTaW1wbGVDYW52YXNTdGFnZS5j
YWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMsIENhbnZhc0xpbmVTZWdtZW50KTsKLSAgICB0aGlz
LmNvbnRleHQubGluZUNhcCA9IG9wdGlvbnNbImxpbmVDYXAiXSB8fCAiYnV0dCI7Ci0gICAgdGhp
cy5jaXJjbGVSYWRpdXMgPSB0aGlzLnNpemUueCAvIDMgLyAyIC0gMjA7Ci19Ci1DYW52YXNMaW5l
U2VnbWVudFN0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU2ltcGxlQ2FudmFzU3RhZ2Uu
cHJvdG90eXBlKTsKLUNhbnZhc0xpbmVTZWdtZW50U3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gQ2FudmFzTGluZVNlZ21lbnRTdGFnZTsKLUNhbnZhc0xpbmVTZWdtZW50U3RhZ2UucHJvdG90
eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGNvbnRleHQgPSB0aGlzLmNvbnRl
eHQ7Ci0gICAgdmFyIHN0YWdlID0gdGhpczsKLQotICAgIGNvbnRleHQubGluZVdpZHRoID0gMzA7
Ci0gICAgZm9yKHZhciBpID0gMDsgaSA8IDM7IGkrKykgewotICAgICAgICBjb250ZXh0LnN0cm9r
ZVN0eWxlID0gWyIjZTAxMDQwIiwgIiMxMGMwMzAiLCAiI2UwNTAxMCJdW2ldOwotICAgICAgICBj
b250ZXh0LmZpbGxTdHlsZSA9IFsiIzcwMDUxZCIsICIjMDE2MTEyIiwgIiM3MDI3MDEiXVtpXTsK
LSAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICAgICAgICAgIGNvbnRleHQuYXJjKCgw
LjUgKyBpKSAvIDMgKiBzdGFnZS5zaXplLngsIHN0YWdlLnNpemUueS8yLCBzdGFnZS5jaXJjbGVS
YWRpdXMsIDAsIE1hdGguUEkqMik7CisgICAgICAgICAgICAgICAgb2JqZWN0LmRyYXcoY29udGV4
dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOwogICAgICAgICBjb250ZXh0LnN0cm9rZSgp
OwotICAgICAgICBjb250ZXh0LmZpbGwoKTsKICAgICB9Cit9KTsKKworQ2FudmFzTGluZVNlZ21l
bnRTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTaW1wbGVDYW52YXNTdGFnZSwKKyAg
ICBmdW5jdGlvbihlbGVtZW50LCBvcHRpb25zKQorICAgIHsKKyAgICAgICAgU2ltcGxlQ2FudmFz
U3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zLCBDYW52YXNMaW5lU2VnbWVudCk7Cisg
ICAgICAgIHRoaXMuY29udGV4dC5saW5lQ2FwID0gb3B0aW9uc1sibGluZUNhcCJdIHx8ICJidXR0
IjsKKyAgICAgICAgdGhpcy5jaXJjbGVSYWRpdXMgPSB0aGlzLnNpemUueCAvIDMgLyAyIC0gMjA7
CisgICAgfSwgeworCisgICAgYW5pbWF0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFy
IGNvbnRleHQgPSB0aGlzLmNvbnRleHQ7CisgICAgICAgIHZhciBzdGFnZSA9IHRoaXM7CisKKyAg
ICAgICAgY29udGV4dC5saW5lV2lkdGggPSAzMDsKKyAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8
IDM7IGkrKykgeworICAgICAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IFsiI2UwMTA0MCIs
ICIjMTBjMDMwIiwgIiNlMDUwMTAiXVtpXTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFN0eWxl
ID0gWyIjNzAwNTFkIiwgIiMwMTYxMTIiLCAiIzcwMjcwMSJdW2ldOworICAgICAgICAgICAgY29u
dGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmFyYygoMC41ICsgaSkg
LyAzICogc3RhZ2Uuc2l6ZS54LCBzdGFnZS5zaXplLnkvMiwgc3RhZ2UuY2lyY2xlUmFkaXVzLCAw
LCBNYXRoLlBJKjIpOworICAgICAgICAgICAgY29udGV4dC5zdHJva2UoKTsKKyAgICAgICAgICAg
IGNvbnRleHQuZmlsbCgpOworICAgICAgICB9CiAKLSAgICB0aGlzLl9vYmplY3RzLmZvckVhY2go
ZnVuY3Rpb24ob2JqZWN0KSB7Ci0gICAgICAgIG9iamVjdC5kcmF3KGNvbnRleHQpOwotICAgIH0p
OwotfQotCi1mdW5jdGlvbiBDYW52YXNMaW5lUGF0aFN0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCi17
Ci0gICAgU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0
aW9ucywgQ2FudmFzTGluZVBvaW50KTsKLSAgICB0aGlzLmNvbnRleHQubGluZUpvaW4gPSBvcHRp
b25zWyJsaW5lSm9pbiJdIHx8ICJiZXZlbCI7Ci0gICAgdGhpcy5jb250ZXh0LmxpbmVDYXAgPSBv
cHRpb25zWyJsaW5lQ2FwIl0gfHwgImJ1dHQiOwotfQotQ2FudmFzTGluZVBhdGhTdGFnZS5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZS5wcm90b3R5
cGUpOwotQ2FudmFzTGluZVBhdGhTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNM
aW5lUGF0aFN0YWdlOworICAgICAgICB0aGlzLl9vYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2Jq
ZWN0KSB7CisgICAgICAgICAgICBvYmplY3QuZHJhdyhjb250ZXh0KTsKKyAgICAgICAgfSk7Cisg
ICAgfQorfSk7CisKK0NhbnZhc0xpbmVQYXRoU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xh
c3MoU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlLAorICAgIGZ1bmN0aW9uKGVsZW1lbnQsIG9w
dGlvbnMpCisgICAgeworICAgICAgICBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2UuY2FsbCh0
aGlzLCBlbGVtZW50LCBvcHRpb25zLCBDYW52YXNMaW5lUG9pbnQpOworICAgICAgICB0aGlzLmNv
bnRleHQubGluZUpvaW4gPSBvcHRpb25zWyJsaW5lSm9pbiJdIHx8ICJiZXZlbCI7CisgICAgICAg
IHRoaXMuY29udGV4dC5saW5lQ2FwID0gb3B0aW9uc1sibGluZUNhcCJdIHx8ICJidXR0IjsKKyAg
ICB9CispOwogCiAvLyA9PT0gQkVOQ0hNQVJLID09PQogCi1mdW5jdGlvbiBDYW52YXNQYXRoQmVu
Y2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKLXsKLSAgICBTaW1wbGVD
YW52YXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NC
YXIpOwotfQotQ2FudmFzUGF0aEJlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNp
bXBsZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUpOwotQ2FudmFzUGF0aEJlbmNobWFyay5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNQYXRoQmVuY2htYXJrOwotQ2FudmFzUGF0aEJlbmNo
bWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQotewotICAgIHN3
aXRjaCAodGhpcy5fb3B0aW9uc1sicGF0aFR5cGUiXSkgewotICAgIGNhc2UgImxpbmUiOgotICAg
ICAgICByZXR1cm4gbmV3IENhbnZhc0xpbmVTZWdtZW50U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0
aW9ucyk7Ci0gICAgY2FzZSAiYXJjcyI6Ci0gICAgICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFz
U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2FudmFzQXJjKTsKLSAgICBjYXNlICJsaW5l
UGF0aCI6Ci0gICAgICAgIHJldHVybiBuZXcgQ2FudmFzTGluZVBhdGhTdGFnZShlbGVtZW50LCB0
aGlzLl9vcHRpb25zKTsKK0NhbnZhc1BhdGhCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3Vi
Y2xhc3MoU2ltcGxlQ2FudmFzQmVuY2htYXJrLAorICAgIGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCBwcm9ncmVzc0JhcikKKyAgICB7CisgICAgICAgIFNpbXBsZUNhbnZhc0JlbmNobWFy
ay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CisgICAgfSwg
eworCisgICAgY3JlYXRlU3RhZ2U6IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgeworICAgICAgICBz
d2l0Y2ggKHRoaXMuX29wdGlvbnNbInBhdGhUeXBlIl0pIHsKKyAgICAgICAgY2FzZSAibGluZSI6
CisgICAgICAgICAgICByZXR1cm4gbmV3IENhbnZhc0xpbmVTZWdtZW50U3RhZ2UoZWxlbWVudCwg
dGhpcy5fb3B0aW9ucyk7CisgICAgICAgIGNhc2UgImFyY3MiOgorICAgICAgICAgICAgcmV0dXJu
IG5ldyBTaW1wbGVDYW52YXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zLCBDYW52YXNBcmMp
OworICAgICAgICBjYXNlICJsaW5lUGF0aCI6CisgICAgICAgICAgICByZXR1cm4gbmV3IENhbnZh
c0xpbmVQYXRoU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7CisgICAgICAgIH0KICAgICB9
Ci19Cit9KTsKIAogd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY29tcG9zaXRpbmctdHJhbnNm
b3Jtcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNl
cy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmpzCmluZGV4IDYyNDlmZDYuLmI2ZjZmNDUgMTAwNjQ0
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9j
b21wb3NpdGluZy10cmFuc2Zvcm1zLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9taXNjL3Jlc291cmNlcy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmpzCkBAIC0xLDY1
ICsxLDYyIEBACi1mdW5jdGlvbiBCb3VuY2luZ0NvbXBvc2l0ZWRJbWFnZShzdGFnZSkKLXsKLSAg
ICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworQm91bmNpbmdDb21wb3NpdGVk
SW1hZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZSwKKyAgICBm
dW5jdGlvbihzdGFnZSkKKyAgICB7CisgICAgICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlz
LCBzdGFnZSk7CiAKLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp
bWciKTsKLSAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9zaXplLnggKyAicHgi
OwotICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLl9zaXplLnkgKyAicHgiOwot
ICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInNyYyIsIHN0YWdlLmltYWdlU3JjKTsKLSAg
ICAKLSAgICBpZiAoc3RhZ2UudXNlRmlsdGVycykKLSAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxl
LmZpbHRlciA9ICJodWUtcm90YXRlKCIgKyBzdGFnZS5yYW5kb21BbmdsZSgpICsgInJhZCkiOwot
ICAgIAotICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTsKLSAgICB0
aGlzLl9tb3ZlKCk7Ci19CisgICAgICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImltZyIpOworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9z
aXplLnggKyAicHgiOworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5f
c2l6ZS55ICsgInB4IjsKKyAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgic3JjIiwg
c3RhZ2UuaW1hZ2VTcmMpOwogCi1Cb3VuY2luZ0NvbXBvc2l0ZWRJbWFnZS5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKLUJvdW5jaW5nQ29tcG9z
aXRlZEltYWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ29tcG9zaXRlZEltYWdl
OworICAgICAgICBpZiAoc3RhZ2UudXNlRmlsdGVycykKKyAgICAgICAgICAgIHRoaXMuZWxlbWVu
dC5zdHlsZS5maWx0ZXIgPSAiaHVlLXJvdGF0ZSgiICsgc3RhZ2UucmFuZG9tQW5nbGUoKSArICJy
YWQpIjsKIAotQm91bmNpbmdDb21wb3NpdGVkSW1hZ2UucHJvdG90eXBlLl9tb3ZlID0gZnVuY3Rp
b24oKQotewotICAgIHRoaXMuZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRlM2Qo
IiArIHRoaXMuX3Bvc2l0aW9uLnggKyAicHgsIiArIHRoaXMuX3Bvc2l0aW9uLnkgKyAicHgsIDAp
ICIgKyB0aGlzLl9yb3RhdGVyLnJvdGF0ZVooKTsKLX0KLSAgICAKLUJvdW5jaW5nQ29tcG9zaXRl
ZEltYWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQotewotICAgIEJv
dW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOwot
ICAgIHRoaXMuX21vdmUoKTsKLX0KKyAgICAgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLmVsZW1lbnQpOworICAgICAgICB0aGlzLl9tb3ZlKCk7CisgICAgfSwgewogCi1mdW5jdGlv
biBDb21wb3NpdGluZ1RyYW5zZm9ybXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQotewotICAgIEJv
dW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKLSAgICB0
aGlzLmltYWdlU3JjID0gb3B0aW9uc1siaW1hZ2VTcmMiXSB8fCAiLi4vcmVzb3VyY2VzL3lpbi15
YW5nLnN2ZyI7Ci0gICAgdGhpcy51c2VGaWx0ZXJzID0gb3B0aW9uc1siZmlsdGVycyJdID09ICJ5
ZXMiOwotfQorICAgIF9tb3ZlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmVsZW1l
bnQuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZTNkKCIgKyB0aGlzLl9wb3NpdGlvbi54ICsg
InB4LCIgKyB0aGlzLl9wb3NpdGlvbi55ICsgInB4LCAwKSAiICsgdGhpcy5fcm90YXRlci5yb3Rh
dGVaKCk7CisgICAgfSwKIAotQ29tcG9zaXRpbmdUcmFuc2Zvcm1zU3RhZ2UucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7Ci1Db21wb3Np
dGluZ1RyYW5zZm9ybXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb21wb3NpdGluZ1Ry
YW5zZm9ybXNTdGFnZTsKKyAgICBhbmltYXRlOiBmdW5jdGlvbih0aW1lRGVsdGEpCisgICAgewor
ICAgICAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGlt
ZURlbHRhKTsKKyAgICAgICAgdGhpcy5fbW92ZSgpOworICAgIH0KK30pOwogCi1Db21wb3NpdGlu
Z1RyYW5zZm9ybXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpCi17
Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NvbXBvc2l0ZWRJbWFnZSh0aGlzKTsKLX0KK0NvbXBv
c2l0aW5nVHJhbnNmb3Jtc1N0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJvdW5jaW5n
UGFydGljbGVzU3RhZ2UsCisgICAgZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9ucykKKyAgICB7Cisg
ICAgICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25z
KTsKKyAgICAgICAgdGhpcy5pbWFnZVNyYyA9IG9wdGlvbnNbImltYWdlU3JjIl0gfHwgIi4uL3Jl
c291cmNlcy95aW4teWFuZy5zdmciOworICAgICAgICB0aGlzLnVzZUZpbHRlcnMgPSBvcHRpb25z
WyJmaWx0ZXJzIl0gPT0gInllcyI7CisgICAgfSwgewogCi1Db21wb3NpdGluZ1RyYW5zZm9ybXNT
dGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVuY3Rpb24ocGFydGljbGUp
Ci17Ci0gICAgcGFydGljbGUuZWxlbWVudC5yZW1vdmUoKTsKLX0KKyAgICBjcmVhdGVQYXJ0aWNs
ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NvbXBvc2l0
ZWRJbWFnZSh0aGlzKTsKKyAgICB9LAogCi1mdW5jdGlvbiBDb21wb3NpdGVkVHJhbnNmb3Jtc0Jl
bmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCi17Ci0gICAgQm91bmNp
bmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJv
Z3Jlc3NCYXIpOwotfQorICAgIHBhcnRpY2xlV2lsbEJlUmVtb3ZlZDogZnVuY3Rpb24ocGFydGlj
bGUpCisgICAgeworICAgICAgICBwYXJ0aWNsZS5lbGVtZW50LnJlbW92ZSgpOworICAgIH0KK30p
OwogCi1Db21wb3NpdGVkVHJhbnNmb3Jtc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7Ci1Db21wb3NpdGVkVHJh
bnNmb3Jtc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb21wb3NpdGVkVHJhbnNm
b3Jtc0JlbmNobWFyazsKK0NvbXBvc2l0ZWRUcmFuc2Zvcm1zQmVuY2htYXJrID0gVXRpbGl0aWVz
LmNyZWF0ZVN1YmNsYXNzKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLAorICAgIGZ1bmN0aW9u
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKKyAgICB7CisgICAgICAgIEJvdW5j
aW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHBy
b2dyZXNzQmFyKTsKKyAgICB9LCB7CiAKLUNvbXBvc2l0ZWRUcmFuc2Zvcm1zQmVuY2htYXJrLnBy
b3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCi17Ci0gICAgcmV0dXJuIG5l
dyBDb21wb3NpdGluZ1RyYW5zZm9ybXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKLX0K
KyAgICBjcmVhdGVTdGFnZTogZnVuY3Rpb24oZWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVy
biBuZXcgQ29tcG9zaXRpbmdUcmFuc2Zvcm1zU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7
CisgICAgfQorfSk7CiAKIHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24o
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQogewpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMKaW5kZXggN2IwYjEx
NC4uNDk4MzE2ZCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3Jlc291cmNlcy9zdGFnZS5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvcmVzb3VyY2VzL3N0YWdlLmpzCkBAIC0xMCwyMiArMTAsMjIgQEAgUm90YXRlci5wcm90b3R5
cGUgPQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JvdGF0ZUludGVydmFsOwogICAgIH0s
Ci0gICAgCisKICAgICBuZXh0OiBmdW5jdGlvbih0aW1lRGVsdGEpCiAgICAgewogICAgICAgICB0
aGlzLl90aW1lRGVsdGEgPSAodGhpcy5fdGltZURlbHRhICsgdGltZURlbHRhKSAlIHRoaXMuX3Jv
dGF0ZUludGVydmFsOwogICAgIH0sCi0gICAgCisKICAgICBkZWdyZWU6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiAoMzYwICogdGhpcy5fdGltZURlbHRhKSAvIHRoaXMuX3JvdGF0
ZUludGVydmFsOwogICAgIH0sCi0gICAgCisKICAgICByb3RhdGVaOiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICByZXR1cm4gInJvdGF0ZVooIiArIE1hdGguZmxvb3IodGhpcy5kZWdyZWUoKSkg
KyAiZGVnKSI7CiAgICAgfSwKLSAgICAKKwogICAgIHJvdGF0ZTogZnVuY3Rpb24oY2VudGVyKQog
ICAgIHsKICAgICAgICAgcmV0dXJuICJyb3RhdGUoIiArIE1hdGguZmxvb3IodGhpcy5kZWdyZWUo
KSkgKyAiLCAiICsgY2VudGVyLnggKyAiLCIgKyBjZW50ZXIueSArICIpIjsKQEAgLTQ0LDEyICs0
NCwxMiBAQCBTdGFnZS5wcm90b3R5cGUgPQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Np
emUKICAgICB9LAotICAgIAorCiAgICAgcmFuZG9tOiBmdW5jdGlvbihtaW4sIG1heCkKICAgICB7
CiAgICAgICAgIHJldHVybiAoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjsKICAg
ICB9LAotICAgIAorCiAgICAgcmFuZG9tQm9vbDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
cmV0dXJuICEhTWF0aC5yb3VuZCh0aGlzLnJhbmRvbSgwLCAxKSk7CkBAIC01OSwyOCArNTksMjgg
QEAgU3RhZ2UucHJvdG90eXBlID0KICAgICB7CiAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHRo
aXMucmFuZG9tKG1pbiwgbWF4KSk7CiAgICAgfSwKLSAgICAKKwogICAgIHJhbmRvbVBvc2l0aW9u
OiBmdW5jdGlvbihtYXhQb3NpdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgUG9pbnQo
dGhpcy5yYW5kb21JbnQoMCwgbWF4UG9zaXRpb24ueCksIHRoaXMucmFuZG9tSW50KDAsIG1heFBv
c2l0aW9uLnkpKTsKICAgICB9LAotICAgIAorCiAgICAgcmFuZG9tU3F1YXJlU2l6ZTogZnVuY3Rp
b24obWluLCBtYXgpCiAgICAgewogICAgICAgICB2YXIgc2lkZSA9IHRoaXMucmFuZG9tKG1pbiwg
bWF4KTsKICAgICAgICAgcmV0dXJuIG5ldyBQb2ludChzaWRlLCBzaWRlKTsKICAgICB9LAotICAg
IAorCiAgICAgcmFuZG9tVmVsb2NpdHk6IGZ1bmN0aW9uKG1heFZlbG9jaXR5KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMucmFuZG9tKG1heFZlbG9jaXR5IC8gOCwgbWF4VmVsb2NpdHkpOwog
ICAgIH0sCi0gICAgCisKICAgICByYW5kb21BbmdsZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMucmFuZG9tKDAsIE1hdGguUEkgKiAyKTsKICAgICB9LAotICAgIAorCiAg
ICAgcmFuZG9tQ29sb3I6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBtaW4gPSAzMjsK
QEAgLTkwLDcgKzkwLDcgQEAgU3RhZ2UucHJvdG90eXBlID0KICAgICAgICAgICAgICsgdGhpcy5y
YW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5nKDE2KQogICAgICAgICAgICAgKyB0aGlzLnJhbmRv
bUludChtaW4sIG1heCkudG9TdHJpbmcoMTYpOwogICAgIH0sCi0gICAgCisKICAgICByYW5kb21S
b3RhdGVyOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFJvdGF0ZXIodGhp
cy5yYW5kb20oMTAwMCwgMTAwMDApKTsKQEAgLTEwMCw3NiArMTAwLDc0IEBAIFN0YWdlLnByb3Rv
dHlwZSA9CiAgICAgewogICAgICAgICB0aHJvdyAiTm90IGltcGxlbWVudGVkIjsKICAgICB9LAot
ICAgIAorCiAgICAgYW5pbWF0ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhyb3cgIk5v
dCBpbXBsZW1lbnRlZCI7CiAgICAgfSwKLSAgICAKKwogICAgIGNsZWFyOiBmdW5jdGlvbigpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy50dW5lKC10aGlzLnR1bmUoMCkpOwogICAgIH0KIH0K
IAotZnVuY3Rpb24gU3RhZ2VBbmltYXRvcihiZW5jaG1hcmssIG9wdGlvbnMpCi17Ci0gICAgQW5p
bWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmssIG9wdGlvbnMpOwotfTsKK1N0YWdlQW5pbWF0b3Ig
PSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQW5pbWF0b3IsCisgICAgZnVuY3Rpb24oYmVuY2ht
YXJrLCBvcHRpb25zKQorICAgIHsKKyAgICAgICAgQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1h
cmssIG9wdGlvbnMpOworICAgIH0sIHsKIAotU3RhZ2VBbmltYXRvci5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKEFuaW1hdG9yLnByb3RvdHlwZSk7Ci1TdGFnZUFuaW1hdG9yLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IFN0YWdlQW5pbWF0b3I7CisgICAgYW5pbWF0ZTogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgaWYgKCFBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0aGlzLl9iZW5jaG1hcmsuX3N0YWdl
LmFuaW1hdGUodGhpcy50aW1lRGVsdGEoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
K30pOwogCi1TdGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQotewot
ICAgIGlmICghQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHRoaXMuX2JlbmNobWFyay5fc3RhZ2UuYW5pbWF0ZSh0aGlzLnRp
bWVEZWx0YSgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KK1N0YWdlQmVuY2htYXJrID0gVXRpbGl0
aWVzLmNyZWF0ZVN1YmNsYXNzKEJlbmNobWFyaywKKyAgICBmdW5jdGlvbihzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcHJvZ3Jlc3NCYXIpCisgICAgeworICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlz
LCBvcHRpb25zKTsKIAotZnVuY3Rpb24gU3RhZ2VCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHByb2dyZXNzQmFyKQotewotICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIG9wdGlvbnMpOwot
ICAgIAotICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YWdlIik7
Ci0gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgZG9jdW1lbnQuYm9keS5vZmZzZXRX
aWR0aCk7Ci0gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIGRvY3VtZW50LmJvZHku
b2Zmc2V0SGVpZ2h0KTsKLSAgICAKLSAgICB0aGlzLl9zdGFnZSA9IHRoaXMuY3JlYXRlU3RhZ2Uo
ZWxlbWVudCk7Ci0gICAgdGhpcy5fYW5pbWF0b3IgPSB0aGlzLmNyZWF0ZUFuaW1hdG9yKCk7Ci0g
ICAgdGhpcy5fc3VpdGUgPSBzdWl0ZTsKLSAgICB0aGlzLl90ZXN0ID0gdGVzdDsKLSAgICB0aGlz
Ll9wcm9ncmVzc0JhciA9IHByb2dyZXNzQmFyOwotfQorICAgICAgICB2YXIgZWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFnZSIpOworICAgICAgICBlbGVtZW50LnNldEF0dHJp
YnV0ZSgid2lkdGgiLCBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKTsKKyAgICAgICAgZWxlbWVu
dC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0KTsKIAot
U3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCZW5jaG1hcmsucHJvdG90
eXBlKTsKLVN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN0YWdlQmVuY2ht
YXJrOworICAgICAgICB0aGlzLl9zdGFnZSA9IHRoaXMuY3JlYXRlU3RhZ2UoZWxlbWVudCk7Cisg
ICAgICAgIHRoaXMuX2FuaW1hdG9yID0gdGhpcy5jcmVhdGVBbmltYXRvcigpOworICAgICAgICB0
aGlzLl9zdWl0ZSA9IHN1aXRlOworICAgICAgICB0aGlzLl90ZXN0ID0gdGVzdDsKKyAgICAgICAg
dGhpcy5fcHJvZ3Jlc3NCYXIgPSBwcm9ncmVzc0JhcjsKKyAgICB9LCB7CiAKLVN0YWdlQmVuY2ht
YXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCi17Ci0gICAgcmV0
dXJuIG5ldyBTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKLX0KKyAgICBjcmVhdGVTdGFn
ZTogZnVuY3Rpb24oZWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgU3RhZ2UoZWxl
bWVudCwgdGhpcy5fb3B0aW9ucyk7CisgICAgfSwKIAotU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBl
LmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQotewotICAgIHJldHVybiBuZXcgU3RhZ2VBbmlt
YXRvcih0aGlzLCB0aGlzLl9vcHRpb25zKTsKLX0KKyAgICBjcmVhdGVBbmltYXRvcjogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBTdGFnZUFuaW1hdG9yKHRoaXMsIHRoaXMu
X29wdGlvbnMpOworICAgIH0sCiAKLVN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS50dW5lID0gZnVu
Y3Rpb24oY291bnQpCi17Ci0gICAgcmV0dXJuIHRoaXMuX3N0YWdlLnR1bmUoY291bnQpOwotfQor
ICAgIHR1bmU6IGZ1bmN0aW9uKGNvdW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3N0
YWdlLnR1bmUoY291bnQpOworICAgIH0sCiAKLVN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jbGVh
ciA9IGZ1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gdGhpcy5fc3RhZ2UuY2xlYXIoKTsKLX0KKyAg
ICBjbGVhcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3N0YWdlLmNs
ZWFyKCk7CisgICAgfSwKIAotU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzID0g
ZnVuY3Rpb24ocHJvZ3Jlc3MsIG1lc3NhZ2UpCi17Ci0gICAgaWYgKCF0aGlzLl9wcm9ncmVzc0Jh
ciB8fCAhdGhpcy5fdGVzdCkKLSAgICAgICAgcmV0dXJuOworICAgIHNob3dSZXN1bHRzOiBmdW5j
dGlvbihwcm9ncmVzcywgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fcHJvZ3Jl
c3NCYXIgfHwgIXRoaXMuX3Rlc3QpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICB0aGlzLl9w
cm9ncmVzc0Jhci5zZXRQb3MocHJvZ3Jlc3MpOwotfQorICAgICAgICB0aGlzLl9wcm9ncmVzc0Jh
ci5zZXRQb3MocHJvZ3Jlc3MpOworICAgIH0KK30pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy1wYXRo
cy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2Vz
L3NpbXBsZS1jYW52YXMtcGF0aHMuanMKaW5kZXggMWRhZDIwNS4uZWM1YjE5OCAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2lt
cGxlLWNhbnZhcy1wYXRocy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLXBhdGhzLmpzCkBAIC0xNzIsMTIzICsx
NzIsMTMwIEBAIENhbnZhc1JlY3RGaWxsLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oY29udGV4
dCkgewogCiAvLyA9PT0gU1RBR0VTID09PQogCi1mdW5jdGlvbiBTaW1wbGVDYW52YXNQYXRoU3Ry
b2tlU3RhZ2UoZWxlbWVudCwgb3B0aW9ucywgY2FudmFzT2JqZWN0KSB7Ci0gICAgU2ltcGxlQ2Fu
dmFzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zLCBjYW52YXNPYmplY3QpOwotfQot
U2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU2lt
cGxlQ2FudmFzU3RhZ2UucHJvdG90eXBlKTsKLVNpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZS5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2U7Ci1TaW1w
bGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpIHsK
LSAgICB2YXIgY29udGV4dCA9IHRoaXMuY29udGV4dDsKLSAgICBjb250ZXh0LmxpbmVXaWR0aCA9
IHRoaXMucmFuZG9tSW50KDEsIDIwKTsKLSAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gdGhpcy5y
YW5kb21Db2xvcigpOwotICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7Ci0gICAgY29udGV4dC5tb3Zl
VG8oMCwwKTsKLSAgICB0aGlzLl9vYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7Ci0g
ICAgICAgIG9iamVjdC5kcmF3KGNvbnRleHQpOwotICAgIH0pOwotICAgIGNvbnRleHQuc3Ryb2tl
KCk7Ci19CitTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3Vi
Y2xhc3MoU2ltcGxlQ2FudmFzU3RhZ2UsCisgICAgZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9ucywg
Y2FudmFzT2JqZWN0KSB7CisgICAgICAgIFNpbXBsZUNhbnZhc1N0YWdlLmNhbGwodGhpcywgZWxl
bWVudCwgb3B0aW9ucywgY2FudmFzT2JqZWN0KTsKKyAgICB9LCB7CiAKLWZ1bmN0aW9uIFNpbXBs
ZUNhbnZhc1BhdGhGaWxsU3RhZ2UoZWxlbWVudCwgb3B0aW9ucywgY2FudmFzT2JqZWN0KSB7Ci0g
ICAgU2ltcGxlQ2FudmFzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zLCBjYW52YXNP
YmplY3QpOwotfQotU2ltcGxlQ2FudmFzUGF0aEZpbGxTdGFnZS5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKFNpbXBsZUNhbnZhc1N0YWdlLnByb3RvdHlwZSk7Ci1TaW1wbGVDYW52YXNQYXRoRmls
bFN0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNpbXBsZUNhbnZhc1BhdGhGaWxsU3RhZ2U7
Ci1TaW1wbGVDYW52YXNQYXRoRmlsbFN0YWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24o
KSB7Ci0gICAgdmFyIGNvbnRleHQgPSB0aGlzLmNvbnRleHQ7Ci0gICAgY29udGV4dC5maWxsU3R5
bGUgPSB0aGlzLnJhbmRvbUNvbG9yKCk7Ci0gICAgY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICBj
b250ZXh0Lm1vdmVUbygwLDApOwotICAgIHRoaXMuX29iamVjdHMuZm9yRWFjaChmdW5jdGlvbihv
YmplY3QpIHsKLSAgICAgICAgb2JqZWN0LmRyYXcoY29udGV4dCk7Ci0gICAgfSk7Ci0gICAgY29u
dGV4dC5maWxsKCk7Ci19CisgICAgYW5pbWF0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dmFyIGNvbnRleHQgPSB0aGlzLmNvbnRleHQ7CisgICAgICAgIGNvbnRleHQubGluZVdpZHRoID0g
dGhpcy5yYW5kb21JbnQoMSwgMjApOworICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gdGhp
cy5yYW5kb21Db2xvcigpOworICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpOworICAgICAgICBj
b250ZXh0Lm1vdmVUbygwLDApOworICAgICAgICB0aGlzLl9vYmplY3RzLmZvckVhY2goZnVuY3Rp
b24ob2JqZWN0KSB7CisgICAgICAgICAgICBvYmplY3QuZHJhdyhjb250ZXh0KTsKKyAgICAgICAg
fSk7CisgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7CisgICAgfQorfSk7CiAKLWZ1bmN0aW9uIENh
bnZhc0xpbmVTZWdtZW50U3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKLXsKLSAgICBTaW1wbGVDYW52
YXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMsIENhbnZhc0xpbmVTZWdtZW50KTsK
LSAgICB0aGlzLmNvbnRleHQubGluZUNhcCA9IG9wdGlvbnNbImxpbmVDYXAiXSB8fCAiYnV0dCI7
Ci19Ci1DYW52YXNMaW5lU2VnbWVudFN0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU2lt
cGxlQ2FudmFzU3RhZ2UucHJvdG90eXBlKTsKLUNhbnZhc0xpbmVTZWdtZW50U3RhZ2UucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gQ2FudmFzTGluZVNlZ21lbnRTdGFnZTsKK1NpbXBsZUNhbnZhc1Bh
dGhGaWxsU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU2ltcGxlQ2FudmFzU3RhZ2Us
CisgICAgZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9ucywgY2FudmFzT2JqZWN0KSB7CisgICAgICAg
IFNpbXBsZUNhbnZhc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucywgY2FudmFzT2Jq
ZWN0KTsKKyAgICB9LCB7CiAKLWZ1bmN0aW9uIENhbnZhc0xpbmVQYXRoU3RhZ2UoZWxlbWVudCwg
b3B0aW9ucykKLXsKLSAgICBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2UuY2FsbCh0aGlzLCBl
bGVtZW50LCBvcHRpb25zLCBDYW52YXNMaW5lUG9pbnQpOwotICAgIHRoaXMuY29udGV4dC5saW5l
Sm9pbiA9IG9wdGlvbnNbImxpbmVKb2luIl0gfHwgImJldmVsIjsKLX0KLUNhbnZhc0xpbmVQYXRo
U3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3Rh
Z2UucHJvdG90eXBlKTsKLUNhbnZhc0xpbmVQYXRoU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gQ2FudmFzTGluZVBhdGhTdGFnZTsKKyAgICBhbmltYXRlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuY29udGV4dDsKKyAgICAgICAgY29udGV4dC5maWxs
U3R5bGUgPSB0aGlzLnJhbmRvbUNvbG9yKCk7CisgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7
CisgICAgICAgIGNvbnRleHQubW92ZVRvKDAsMCk7CisgICAgICAgIHRoaXMuX29iamVjdHMuZm9y
RWFjaChmdW5jdGlvbihvYmplY3QpIHsKKyAgICAgICAgICAgIG9iamVjdC5kcmF3KGNvbnRleHQp
OworICAgICAgICB9KTsKKyAgICAgICAgY29udGV4dC5maWxsKCk7CisgICAgfQorfSk7CiAKLWZ1
bmN0aW9uIENhbnZhc0xpbmVEYXNoU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKLXsKLSAgICBTaW1w
bGVDYW52YXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMsIENhbnZhc0xpbmVQb2lu
dCk7Ci0gICAgdGhpcy5jb250ZXh0LnNldExpbmVEYXNoKFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4
LCA5LCAxMF0pOwotICAgIHRoaXMuY29udGV4dC5saW5lV2lkdGggPSAxOwotICAgIHRoaXMuY29u
dGV4dC5zdHJva2VTdHlsZSA9ICIjMDAwIjsKLSAgICB0aGlzLl9zdGVwID0gMDsKLX0KLUNhbnZh
c0xpbmVEYXNoU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTaW1wbGVDYW52YXNTdGFn
ZS5wcm90b3R5cGUpOwotQ2FudmFzTGluZURhc2hTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBDYW52YXNMaW5lRGFzaFN0YWdlOwotQ2FudmFzTGluZURhc2hTdGFnZS5wcm90b3R5cGUuYW5p
bWF0ZSA9IGZ1bmN0aW9uKCkgewotICAgIHZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0OwotICAg
IGNvbnRleHQubGluZURhc2hPZmZzZXQgPSB0aGlzLl9zdGVwKys7Ci0gICAgY29udGV4dC5iZWdp
blBhdGgoKTsKLSAgICBjb250ZXh0Lm1vdmVUbygwLDApOwotICAgIHRoaXMuX29iamVjdHMuZm9y
RWFjaChmdW5jdGlvbihvYmplY3QpIHsKLSAgICAgICAgb2JqZWN0LmRyYXcoY29udGV4dCk7Ci0g
ICAgfSk7Ci0gICAgY29udGV4dC5zdHJva2UoKTsKLX07CitDYW52YXNMaW5lU2VnbWVudFN0YWdl
ID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFNpbXBsZUNhbnZhc1N0YWdlLAorICAgIGZ1bmN0
aW9uKGVsZW1lbnQsIG9wdGlvbnMpCisgICAgeworICAgICAgICBTaW1wbGVDYW52YXNTdGFnZS5j
YWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMsIENhbnZhc0xpbmVTZWdtZW50KTsKKyAgICAgICAg
dGhpcy5jb250ZXh0LmxpbmVDYXAgPSBvcHRpb25zWyJsaW5lQ2FwIl0gfHwgImJ1dHQiOworICAg
IH0KKyk7CiAKLS8vID09PSBCRU5DSE1BUksgPT09CitDYW52YXNMaW5lUGF0aFN0YWdlID0gVXRp
bGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFNpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZSwKKyAgICBm
dW5jdGlvbihlbGVtZW50LCBvcHRpb25zKQorICAgIHsKKyAgICAgICAgU2ltcGxlQ2FudmFzUGF0
aFN0cm9rZVN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucywgQ2FudmFzTGluZVBvaW50
KTsKKyAgICAgICAgdGhpcy5jb250ZXh0LmxpbmVKb2luID0gb3B0aW9uc1sibGluZUpvaW4iXSB8
fCAiYmV2ZWwiOworICAgIH0KKyk7CiAKLWZ1bmN0aW9uIENhbnZhc1BhdGhCZW5jaG1hcmsoc3Vp
dGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKSB7Ci0gICAgU2ltcGxlQ2FudmFzQmVuY2ht
YXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KLUNh
bnZhc1BhdGhCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTaW1wbGVDYW52YXNC
ZW5jaG1hcmsucHJvdG90eXBlKTsKLUNhbnZhc1BhdGhCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gQ2FudmFzUGF0aEJlbmNobWFyazsKLUNhbnZhc1BhdGhCZW5jaG1hcmsucHJvdG90
eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKLXsKLSAgICBzd2l0Y2ggKHRoaXMu
X29wdGlvbnNbInBhdGhUeXBlIl0pIHsKLSAgICBjYXNlICJsaW5lIjoKLSAgICAgICAgcmV0dXJu
IG5ldyBDYW52YXNMaW5lU2VnbWVudFN0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwotICAg
IGNhc2UgImxpbmVQYXRoIjogewotICAgICAgICBpZiAoImxpbmVKb2luIiBpbiB0aGlzLl9vcHRp
b25zKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBDYW52YXNMaW5lUGF0aFN0YWdlKGVsZW1lbnQs
IHRoaXMuX29wdGlvbnMpOwotICAgICAgICBpZiAoImxpbmVEYXNoIiBpbiB0aGlzLl9vcHRpb25z
KQotICAgICAgICAgICAgcmV0dXJuIG5ldyBDYW52YXNMaW5lRGFzaFN0YWdlKGVsZW1lbnQsIHRo
aXMuX29wdGlvbnMpOwotICAgICAgICBicmVhazsKK0NhbnZhc0xpbmVEYXNoU3RhZ2UgPSBVdGls
aXRpZXMuY3JlYXRlU3ViY2xhc3MoU2ltcGxlQ2FudmFzU3RhZ2UsCisgICAgZnVuY3Rpb24oZWxl
bWVudCwgb3B0aW9ucykKKyAgICB7CisgICAgICAgIFNpbXBsZUNhbnZhc1N0YWdlLmNhbGwodGhp
cywgZWxlbWVudCwgb3B0aW9ucywgQ2FudmFzTGluZVBvaW50KTsKKyAgICAgICAgdGhpcy5jb250
ZXh0LnNldExpbmVEYXNoKFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0pOworICAgICAg
ICB0aGlzLmNvbnRleHQubGluZVdpZHRoID0gMTsKKyAgICAgICAgdGhpcy5jb250ZXh0LnN0cm9r
ZVN0eWxlID0gIiMwMDAiOworICAgICAgICB0aGlzLl9zdGVwID0gMDsKKyAgICB9LCB7CisKKyAg
ICBhbmltYXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMu
Y29udGV4dDsKKyAgICAgICAgY29udGV4dC5saW5lRGFzaE9mZnNldCA9IHRoaXMuX3N0ZXArKzsK
KyAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgY29udGV4dC5tb3ZlVG8oMCww
KTsKKyAgICAgICAgdGhpcy5fb2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uKG9iamVjdCkgeworICAg
ICAgICAgICAgb2JqZWN0LmRyYXcoY29udGV4dCk7CisgICAgICAgIH0pOworICAgICAgICBjb250
ZXh0LnN0cm9rZSgpOwogICAgIH0KLSAgICBjYXNlICJxdWFkcmF0aWMiOgotICAgICAgICByZXR1
cm4gbmV3IFNpbXBsZUNhbnZhc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMsIENhbnZhc1F1
YWRyYXRpY1NlZ21lbnQpOwotICAgIGNhc2UgInF1YWRyYXRpY1BhdGgiOgotICAgICAgICByZXR1
cm4gbmV3IFNpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25z
LCBDYW52YXNRdWFkcmF0aWNQb2ludCk7Ci0gICAgY2FzZSAiYmV6aWVyIjoKLSAgICAgICAgcmV0
dXJuIG5ldyBTaW1wbGVDYW52YXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zLCBDYW52YXNC
ZXppZXJTZWdtZW50KTsKLSAgICBjYXNlICJiZXppZXJQYXRoIjoKLSAgICAgICAgcmV0dXJuIG5l
dyBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2Fu
dmFzQmV6aWVyUG9pbnQpOwotICAgIGNhc2UgImFyY1RvIjoKLSAgICAgICAgcmV0dXJuIG5ldyBT
aW1wbGVDYW52YXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zLCBDYW52YXNBcmNUb1NlZ21l
bnQpOwotICAgIGNhc2UgImFyYyI6Ci0gICAgICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzU3Rh
Z2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2FudmFzQXJjU2VnbWVudCk7Ci0gICAgY2FzZSAi
cmVjdCI6Ci0gICAgICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzU3RhZ2UoZWxlbWVudCwgdGhp
cy5fb3B0aW9ucywgQ2FudmFzUmVjdCk7Ci0gICAgY2FzZSAibGluZUZpbGwiOgotICAgICAgICBy
ZXR1cm4gbmV3IFNpbXBsZUNhbnZhc1BhdGhGaWxsU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9u
cywgQ2FudmFzTGluZVBvaW50KTsKLSAgICBjYXNlICJxdWFkcmF0aWNGaWxsIjoKLSAgICAgICAg
cmV0dXJuIG5ldyBTaW1wbGVDYW52YXNQYXRoRmlsbFN0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlv
bnMsIENhbnZhc1F1YWRyYXRpY1BvaW50KTsKLSAgICBjYXNlICJiZXppZXJGaWxsIjoKLSAgICAg
ICAgcmV0dXJuIG5ldyBTaW1wbGVDYW52YXNQYXRoRmlsbFN0YWdlKGVsZW1lbnQsIHRoaXMuX29w
dGlvbnMsIENhbnZhc0JlemllclBvaW50KTsKLSAgICBjYXNlICJhcmNUb0ZpbGwiOgotICAgICAg
ICByZXR1cm4gbmV3IFNpbXBsZUNhbnZhc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMsIENh
bnZhc0FyY1RvU2VnbWVudEZpbGwpOwotICAgIGNhc2UgImFyY0ZpbGwiOgotICAgICAgICByZXR1
cm4gbmV3IFNpbXBsZUNhbnZhc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMsIENhbnZhc0Fy
Y1NlZ21lbnRGaWxsKTsKLSAgICBjYXNlICJyZWN0RmlsbCI6Ci0gICAgICAgIHJldHVybiBuZXcg
U2ltcGxlQ2FudmFzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2FudmFzUmVjdEZpbGwp
OworfSk7CisKKy8vID09PSBCRU5DSE1BUksgPT09CisKK0NhbnZhc1BhdGhCZW5jaG1hcmsgPSBV
dGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU2ltcGxlQ2FudmFzQmVuY2htYXJrLAorICAgIGZ1bmN0
aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikgeworICAgICAgICBTaW1wbGVD
YW52YXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NC
YXIpOworICAgIH0sIHsKKworICAgIGNyZWF0ZVN0YWdlOiBmdW5jdGlvbihlbGVtZW50KQorICAg
IHsKKyAgICAgICAgc3dpdGNoICh0aGlzLl9vcHRpb25zWyJwYXRoVHlwZSJdKSB7CisgICAgICAg
IGNhc2UgImxpbmUiOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDYW52YXNMaW5lU2VnbWVudFN0
YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworICAgICAgICBjYXNlICJsaW5lUGF0aCI6IHsK
KyAgICAgICAgICAgIGlmICgibGluZUpvaW4iIGluIHRoaXMuX29wdGlvbnMpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDYW52YXNMaW5lUGF0aFN0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlv
bnMpOworICAgICAgICAgICAgaWYgKCJsaW5lRGFzaCIgaW4gdGhpcy5fb3B0aW9ucykKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENhbnZhc0xpbmVEYXNoU3RhZ2UoZWxlbWVudCwgdGhpcy5f
b3B0aW9ucyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlICJx
dWFkcmF0aWMiOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVDYW52YXNTdGFnZShlbGVt
ZW50LCB0aGlzLl9vcHRpb25zLCBDYW52YXNRdWFkcmF0aWNTZWdtZW50KTsKKyAgICAgICAgY2Fz
ZSAicXVhZHJhdGljUGF0aCI6CisgICAgICAgICAgICByZXR1cm4gbmV3IFNpbXBsZUNhbnZhc1Bh
dGhTdHJva2VTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zLCBDYW52YXNRdWFkcmF0aWNQb2lu
dCk7CisgICAgICAgIGNhc2UgImJlemllciI6CisgICAgICAgICAgICByZXR1cm4gbmV3IFNpbXBs
ZUNhbnZhc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMsIENhbnZhc0JlemllclNlZ21lbnQp
OworICAgICAgICBjYXNlICJiZXppZXJQYXRoIjoKKyAgICAgICAgICAgIHJldHVybiBuZXcgU2lt
cGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMsIENhbnZhc0Jl
emllclBvaW50KTsKKyAgICAgICAgY2FzZSAiYXJjVG8iOgorICAgICAgICAgICAgcmV0dXJuIG5l
dyBTaW1wbGVDYW52YXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zLCBDYW52YXNBcmNUb1Nl
Z21lbnQpOworICAgICAgICBjYXNlICJhcmMiOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW1w
bGVDYW52YXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zLCBDYW52YXNBcmNTZWdtZW50KTsK
KyAgICAgICAgY2FzZSAicmVjdCI6CisgICAgICAgICAgICByZXR1cm4gbmV3IFNpbXBsZUNhbnZh
c1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMsIENhbnZhc1JlY3QpOworICAgICAgICBjYXNl
ICJsaW5lRmlsbCI6CisgICAgICAgICAgICByZXR1cm4gbmV3IFNpbXBsZUNhbnZhc1BhdGhGaWxs
U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2FudmFzTGluZVBvaW50KTsKKyAgICAgICAg
Y2FzZSAicXVhZHJhdGljRmlsbCI6CisgICAgICAgICAgICByZXR1cm4gbmV3IFNpbXBsZUNhbnZh
c1BhdGhGaWxsU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2FudmFzUXVhZHJhdGljUG9p
bnQpOworICAgICAgICBjYXNlICJiZXppZXJGaWxsIjoKKyAgICAgICAgICAgIHJldHVybiBuZXcg
U2ltcGxlQ2FudmFzUGF0aEZpbGxTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zLCBDYW52YXNC
ZXppZXJQb2ludCk7CisgICAgICAgIGNhc2UgImFyY1RvRmlsbCI6CisgICAgICAgICAgICByZXR1
cm4gbmV3IFNpbXBsZUNhbnZhc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMsIENhbnZhc0Fy
Y1RvU2VnbWVudEZpbGwpOworICAgICAgICBjYXNlICJhcmNGaWxsIjoKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgU2ltcGxlQ2FudmFzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2FudmFz
QXJjU2VnbWVudEZpbGwpOworICAgICAgICBjYXNlICJyZWN0RmlsbCI6CisgICAgICAgICAgICBy
ZXR1cm4gbmV3IFNpbXBsZUNhbnZhc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMsIENhbnZh
c1JlY3RGaWxsKTsKKyAgICAgICAgfQogICAgIH0KLX0KK30pOwogCiB3aW5kb3cuYmVuY2htYXJr
Q2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jh
cikgewogICAgIHJldHVybiBuZXcgQ2FudmFzUGF0aEJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcHJvZ3Jlc3NCYXIpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMuanMK
aW5kZXggNTVmNGE4Ni4uN2JiY2U3MCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy5qcworKysgYi9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2Fu
dmFzLmpzCkBAIC0xLDYyICsxLDY0IEBACiAKLWZ1bmN0aW9uIFNpbXBsZUNhbnZhc1N0YWdlKGVs
ZW1lbnQsIG9wdGlvbnMsIGNhbnZhc09iamVjdCkKLXsKLSAgICBTdGFnZS5jYWxsKHRoaXMsIGVs
ZW1lbnQsIG9wdGlvbnMpOwotICAgIHRoaXMuY29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250
ZXh0KCIyZCIpOwotICAgIHRoaXMuY2FudmFzT2JqZWN0ID0gY2FudmFzT2JqZWN0OwotICAgIHRo
aXMuX29iamVjdHMgPSBbXTsKLX0KLVNpbXBsZUNhbnZhc1N0YWdlLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoU3RhZ2UucHJvdG90eXBlKTsKLVNpbXBsZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IFNpbXBsZUNhbnZhc1N0YWdlOwotU2ltcGxlQ2FudmFzU3RhZ2UucHJvdG90
eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKLXsKLSAgICBpZiAoY291bnQgPT0gMCkKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX29iamVjdHMubGVuZ3RoOworU2ltcGxlQ2FudmFzU3RhZ2UgPSBVdGls
aXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2UsCisgICAgZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9u
cywgY2FudmFzT2JqZWN0KQorICAgIHsKKyAgICAgICAgU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50
LCBvcHRpb25zKTsKKyAgICAgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRl
eHQoIjJkIik7CisgICAgICAgIHRoaXMuY2FudmFzT2JqZWN0ID0gY2FudmFzT2JqZWN0OworICAg
ICAgICB0aGlzLl9vYmplY3RzID0gW107CisgICAgfSwgeworCisgICAgdHVuZTogZnVuY3Rpb24o
Y291bnQpCisgICAgeworICAgICAgICBpZiAoY291bnQgPT0gMCkKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLl9vYmplY3RzLmxlbmd0aDsKIAotICAgIGlmIChjb3VudCA+IDApIHsKLSAgICAgICAg
Ly8gRm9yIHBhdGgtYmFzZWQgdGVzdHMsIHVzZSB0aGUgb2JqZWN0IGxlbmd0aCBhcyBhIG1heGlt
dW0gY29vcmRpbmF0ZSB2YWx1ZQotICAgICAgICAvLyB0byBtYWtlIGl0IGVhc2llciB0byBzZWUg
d2hhdCB0aGUgdGVzdCBpcyBkb2luZwotICAgICAgICB2YXIgY29vcmRpbmF0ZU1heGltdW0gPSBN
YXRoLm1heCh0aGlzLl9vYmplY3RzLmxlbmd0aCwgMjAwKTsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICB0aGlzLl9vYmplY3RzLnB1c2gobmV3
IHRoaXMuY2FudmFzT2JqZWN0KHRoaXMsIGNvb3JkaW5hdGVNYXhpbXVtKSk7CisgICAgICAgIGlm
IChjb3VudCA+IDApIHsKKyAgICAgICAgICAgIC8vIEZvciBwYXRoLWJhc2VkIHRlc3RzLCB1c2Ug
dGhlIG9iamVjdCBsZW5ndGggYXMgYSBtYXhpbXVtIGNvb3JkaW5hdGUgdmFsdWUKKyAgICAgICAg
ICAgIC8vIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNlZSB3aGF0IHRoZSB0ZXN0IGlzIGRvaW5nCisg
ICAgICAgICAgICB2YXIgY29vcmRpbmF0ZU1heGltdW0gPSBNYXRoLm1heCh0aGlzLl9vYmplY3Rz
Lmxlbmd0aCwgMjAwKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkgeworICAgICAgICAgICAgICAgIHRoaXMuX29iamVjdHMucHVzaChuZXcgdGhpcy5jYW52YXNP
YmplY3QodGhpcywgY29vcmRpbmF0ZU1heGltdW0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKICAgICAgICAgfQorCisgICAgICAgIGNv
dW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9vYmplY3RzLmxlbmd0aCk7CisgICAgICAgIHRo
aXMuX29iamVjdHMuc3BsaWNlKC1jb3VudCwgY291bnQpOworCiAgICAgICAgIHJldHVybiB0aGlz
Ll9vYmplY3RzLmxlbmd0aDsKKyAgICB9LAorCisgICAgYW5pbWF0ZTogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLmNvbnRleHQ7CisgICAgICAgIHRoaXMuX29i
amVjdHMuZm9yRWFjaChmdW5jdGlvbihvYmplY3QpIHsKKyAgICAgICAgICAgIG9iamVjdC5kcmF3
KGNvbnRleHQpOworICAgICAgICB9KTsKICAgICB9Cit9KTsKIAotICAgIGNvdW50ID0gTWF0aC5t
aW4oLWNvdW50LCB0aGlzLl9vYmplY3RzLmxlbmd0aCk7Ci0gICAgdGhpcy5fb2JqZWN0cy5zcGxp
Y2UoLWNvdW50LCBjb3VudCk7Ci0KLSAgICByZXR1cm4gdGhpcy5fb2JqZWN0cy5sZW5ndGg7Ci19
Ci1TaW1wbGVDYW52YXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkKLXsKLSAg
ICB2YXIgY29udGV4dCA9IHRoaXMuY29udGV4dDsKLSAgICB0aGlzLl9vYmplY3RzLmZvckVhY2go
ZnVuY3Rpb24ob2JqZWN0KSB7Ci0gICAgICAgIG9iamVjdC5kcmF3KGNvbnRleHQpOwotICAgIH0p
OwotfQotCi1mdW5jdGlvbiBTaW1wbGVDYW52YXNBbmltYXRvcihiZW5jaG1hcmssIG9wdGlvbnMp
Ci17Ci0gICAgU3RhZ2VBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyaywgb3B0aW9ucyk7Ci0g
ICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsKLX0KLQotU2ltcGxl
Q2FudmFzQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUFuaW1hdG9yLnBy
b3RvdHlwZSk7Ci1TaW1wbGVDYW52YXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBT
aW1wbGVDYW52YXNBbmltYXRvcjsKLVNpbXBsZUNhbnZhc0FuaW1hdG9yLnByb3RvdHlwZS5hbmlt
YXRlID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX2NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRo
aXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS54LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUu
eSk7Ci0gICAgcmV0dXJuIFN0YWdlQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlz
LCB0aGlzLl9vcHRpb25zKTsKLX0KLQotCi1mdW5jdGlvbiBTaW1wbGVDYW52YXNCZW5jaG1hcmso
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKSB7Ci0gICAgU3RhZ2VCZW5jaG1hcmsu
Y2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotfQotU2ltcGxl
Q2FudmFzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsu
cHJvdG90eXBlKTsKLVNpbXBsZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBTaW1wbGVDYW52YXNCZW5jaG1hcms7Ci1TaW1wbGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBl
LmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIG5ldyBTaW1wbGVDYW52
YXNBbmltYXRvcih0aGlzLCB0aGlzLl9vcHRpb25zKTsKLX0KK1NpbXBsZUNhbnZhc0FuaW1hdG9y
ID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlQW5pbWF0b3IsCisgICAgZnVuY3Rpb24o
YmVuY2htYXJrLCBvcHRpb25zKQorICAgIHsKKyAgICAgICAgU3RhZ2VBbmltYXRvci5jYWxsKHRo
aXMsIGJlbmNobWFyaywgb3B0aW9ucyk7CisgICAgICAgIHRoaXMuX2NvbnRleHQgPSBiZW5jaG1h
cmsuX3N0YWdlLmNvbnRleHQ7CisgICAgfSwgeworCisgICAgYW5pbWF0ZTogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5fYmVuY2ht
YXJrLl9zdGFnZS5zaXplLngsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS55KTsKKyAgICAg
ICAgcmV0dXJuIFN0YWdlQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aGlz
Ll9vcHRpb25zKTsKKyAgICB9Cit9KTsKKworU2ltcGxlQ2FudmFzQmVuY2htYXJrID0gVXRpbGl0
aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlQmVuY2htYXJrLAorICAgIGZ1bmN0aW9uKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikgeworICAgICAgICBTdGFnZUJlbmNobWFyay5jYWxs
KHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7CisgICAgfSwgeworCisg
ICAgY3JlYXRlQW5pbWF0b3I6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gbmV3IFNpbXBs
ZUNhbnZhc0FuaW1hdG9yKHRoaXMsIHRoaXMuX29wdGlvbnMpOworICAgIH0KK30pOwogCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3Vy
Y2VzL3RlbXBsYXRlLWNhbnZhcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzCmluZGV4IDNjODg5ZWUuLjg3
ZGUwYWIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1w
bGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzCkBA
IC0yLDk5ICsyLDk4IEBAIGZ1bmN0aW9uIFRlbXBsYXRlQ2FudmFzT2JqZWN0KHN0YWdlKQogewog
ICAgIC8vIEZvciB0aGUgY2FudmFzIHN0YWdlLCBtb3N0IGxpa2VseSB5b3Ugd2lsbCBuZWVkIHRv
IGNyZWF0ZSB5b3VyCiAgICAgLy8gYW5pbWF0ZWQgb2JqZWN0IHNpbmNlIGl0J3Mgb25seSBkcmF3
IHRpbWUgdGhpbmcuCi0gICAgCi0gICAgLy8gRmlsbCBpbiB5b3VyIG9iamVjdCBkYXRhLgotfQot
Ci1UZW1wbGF0ZUNhbnZhc09iamVjdC5wcm90b3R5cGUuX2RyYXcgPSBmdW5jdGlvbigpCi17Ci0g
ICAgLy8gRHJhdyB5b3VyIG9iamVjdC4KLX0KLQotVGVtcGxhdGVDYW52YXNPYmplY3QucHJvdG90
eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCi17Ci0gICAgLy8gUmVkcmF3IHRoZSBh
bmltYXRlZCBvYmplY3QuIFRoZSBsYXN0IHRpbWUgdGhpcyBhbmltYXRlZAotICAgIC8vIGl0ZW0g
d2FzIGRyYXduIGJlZm9yZSAndGltZURlbHRhJy4KLSAgICAKLSAgICAvLyBNb3ZlIHlvdXIgb2Jq
ZWN0LgotICAgIAotICAgIC8vIFJlZHJhdyB5b3VyIG9iamVjdC4KLSAgICB0aGlzLl9kcmF3KCk7
Ci19Ci0KLWZ1bmN0aW9uIFRlbXBsYXRlQ2FudmFzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKLXsK
LSAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOwotICAgIHRoaXMuY29udGV4
dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOwogCi0gICAgLy8gRGVmaW5lIGEgY29s
bGVjdGlvbiBmb3IgeW91ciBvYmplY3RzLgotfQotCi1UZW1wbGF0ZUNhbnZhc1N0YWdlLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2UucHJvdG90eXBlKTsKLVRlbXBsYXRlQ2FudmFzU3Rh
Z2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVGVtcGxhdGVDYW52YXNTdGFnZTsKLQotVGVtcGxh
dGVDYW52YXNTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQotewotICAgIC8v
IElmIGNvdW50IGlzIC12ZSwgLWNvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgcmVtb3ZlZCBmb3Jt
IHRoZQotICAgIC8vIHN0YWdlLiBJZiBjb3VudCBpcyArdmUsICtjb3VudCBlbGVtZW50cyBuZWVk
IHRvIGJlIGFkZGVkIHRvCi0gICAgLy8gdGhlIHN0YWdlLgotICAgIAotICAgIC8vIENoYW5nZSBv
YmplY3RzIGluIHRoZSBzdGFnZS4KLSAgICAKLSAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBh
bGwgdGhlIGVsZW1lbnRzIGluIHRoZSBzdGFnZS4KLSAgICAvLyBUaGlzIG51bWJlciBpcyByZWNv
cmRlZCBpbiB0aGUgc2FtcGxlZCBkYXRhLgotICAgIAotICAgIC8vIFJldHVybiB0aGUgY291bnQg
b2YgdGhlIG9iamVjdHMgaW4gdGhlIHN0YWdlLgotICAgIHJldHVybiAwOwotfQotCi1UZW1wbGF0
ZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQotewot
ICAgIC8vIEFuaW1hdGUgdGhlIGVsZW1lbnRzIHN1Y2ggdGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVk
cmF3bi4gTW9zdAotICAgIC8vIGxpa2VseSB5b3Ugd2lsbCBuZWVkIHRvIGNhbGwgVGVtcGxhdGVD
YW52YXNPYmplY3QuYW5pbWF0ZSgpCi0gICAgLy8gZm9yIGFsbCB5b3VyIGFuaW1hdGVkIG9iamVj
dHMgaGVyZS4KLQotICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgeW91ciBvYmplY3RzIGFuZCBhc2sg
dGhlbSB0byBhbmltYXRlLgotfQotCi1mdW5jdGlvbiBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yKGJl
bmNobWFyaywgb3B0aW9ucykKLXsKLSAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyaywg
b3B0aW9ucyk7Ci0gICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsK
LX0KLQotVGVtcGxhdGVDYW52YXNBbmltYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0
YWdlQW5pbWF0b3IucHJvdG90eXBlKTsKLVRlbXBsYXRlQ2FudmFzQW5pbWF0b3IucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gVGVtcGxhdGVDYW52YXNBbmltYXRvcjsKLQotVGVtcGxhdGVDYW52YXNB
bmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICAvLyBNb3N0IGxp
a2VseSB5b3Ugd2lsbCBuZWVkIHRvIGNsZWFyIHRoZSBjYW52YXMgd2l0aCBldmVyeSByZWRyYXcu
Ci0gICAgdGhpcy5fY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFn
ZS5zaXplLngsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS55KTsKLQotICAgIC8vIERyYXcg
c2NlbmUgc3R1ZmYgaGVyZSBpZiBuZWVkZWQuCi0KLSAgICByZXR1cm4gU3RhZ2VBbmltYXRvci5w
cm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMpOwotfQotCi1mdW5jdGlvbiBUZW1wbGF0ZUNhbnZh
c0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCi17Ci0gICAgU3Rh
Z2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIp
OwotfQotCi1UZW1wbGF0ZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7Ci1UZW1wbGF0ZUNhbnZhc0JlbmNobWFyay5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZUNhbnZhc0JlbmNobWFyazsKLQotVGVtcGxhdGVD
YW52YXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkK
LXsKLSAgICAvLyBBdHRhY2ggdGhlIHN0YWdlIHRvIHRoZSBiZW5jaG1hcmsuCi0gICAgcmV0dXJu
IG5ldyBUZW1wbGF0ZUNhbnZhc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworICAgIC8v
IEZpbGwgaW4geW91ciBvYmplY3QgZGF0YS4KIH0KIAotVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsu
cHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQotewotICAgIC8vIEF0dGFjaCB0
aGUgYW5pbWF0b3IgdG8gdGhlIGJlbmNobWFyay4KLSAgICByZXR1cm4gbmV3IFRlbXBsYXRlQ2Fu
dmFzQW5pbWF0b3IodGhpcywgdGhpcy5fb3B0aW9ucyk7Ci19CitUZW1wbGF0ZUNhbnZhc09iamVj
dC5wcm90b3R5cGUgPSB7CisgICAgX2RyYXc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIC8v
IERyYXcgeW91ciBvYmplY3QuCisgICAgfSwKKworICAgIGFuaW1hdGU6IGZ1bmN0aW9uKHRpbWVE
ZWx0YSkKKyAgICB7CisgICAgICAgIC8vIFJlZHJhdyB0aGUgYW5pbWF0ZWQgb2JqZWN0LiBUaGUg
bGFzdCB0aW1lIHRoaXMgYW5pbWF0ZWQKKyAgICAgICAgLy8gaXRlbSB3YXMgZHJhd24gYmVmb3Jl
ICd0aW1lRGVsdGEnLgorCisgICAgICAgIC8vIE1vdmUgeW91ciBvYmplY3QuCisKKyAgICAgICAg
Ly8gUmVkcmF3IHlvdXIgb2JqZWN0LgorICAgICAgICB0aGlzLl9kcmF3KCk7CisgICAgfQorfSk7
CisKK1RlbXBsYXRlQ2FudmFzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2Us
CisgICAgZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9ucykKKyAgICB7CisgICAgICAgIFN0YWdlLmNh
bGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgICAgIHRoaXMuY29udGV4dCA9IHRoaXMu
ZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOworCisgICAgICAgIC8vIERlZmluZSBhIGNvbGxlY3Rp
b24gZm9yIHlvdXIgb2JqZWN0cy4KKyAgICB9LCB7CisKKyAgICB0dW5lOiBmdW5jdGlvbihjb3Vu
dCkKKyAgICB7CisgICAgICAgIC8vIElmIGNvdW50IGlzIC12ZSwgLWNvdW50IGVsZW1lbnRzIG5l
ZWQgdG8gYmUgcmVtb3ZlZCBmb3JtIHRoZQorICAgICAgICAvLyBzdGFnZS4gSWYgY291bnQgaXMg
K3ZlLCArY291bnQgZWxlbWVudHMgbmVlZCB0byBiZSBhZGRlZCB0bworICAgICAgICAvLyB0aGUg
c3RhZ2UuCisKKyAgICAgICAgLy8gQ2hhbmdlIG9iamVjdHMgaW4gdGhlIHN0YWdlLgorCisgICAg
ICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIHN0YWdl
LgorICAgICAgICAvLyBUaGlzIG51bWJlciBpcyByZWNvcmRlZCBpbiB0aGUgc2FtcGxlZCBkYXRh
LgorCisgICAgICAgIC8vIFJldHVybiB0aGUgY291bnQgb2YgdGhlIG9iamVjdHMgaW4gdGhlIHN0
YWdlLgorICAgICAgICByZXR1cm4gMDsKKyAgICB9LAorCisgICAgYW5pbWF0ZTogZnVuY3Rpb24o
dGltZURlbHRhKQorICAgIHsKKyAgICAgICAgLy8gQW5pbWF0ZSB0aGUgZWxlbWVudHMgc3VjaCB0
aGF0IGFsbCBvZiB0aGVtIGFyZSByZWRyYXduLiBNb3N0CisgICAgICAgIC8vIGxpa2VseSB5b3Ug
d2lsbCBuZWVkIHRvIGNhbGwgVGVtcGxhdGVDYW52YXNPYmplY3QuYW5pbWF0ZSgpCisgICAgICAg
IC8vIGZvciBhbGwgeW91ciBhbmltYXRlZCBvYmplY3RzIGhlcmUuCisKKyAgICAgICAgLy8gTG9v
cCB0aHJvdWdoIGFsbCB5b3VyIG9iamVjdHMgYW5kIGFzayB0aGVtIHRvIGFuaW1hdGUuCisgICAg
fQorfSk7CisKK1RlbXBsYXRlQ2FudmFzQW5pbWF0b3IgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xh
c3MoU3RhZ2VBbmltYXRvciwKKyAgICBmdW5jdGlvbihiZW5jaG1hcmssIG9wdGlvbnMpCisgICAg
eworICAgICAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyaywgb3B0aW9ucyk7CisgICAg
ICAgIHRoaXMuX2NvbnRleHQgPSBiZW5jaG1hcmsuX3N0YWdlLmNvbnRleHQ7CisgICAgfSwgewor
CisgICAgYW5pbWF0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8gTW9zdCBsaWtlbHkg
eW91IHdpbGwgbmVlZCB0byBjbGVhciB0aGUgY2FudmFzIHdpdGggZXZlcnkgcmVkcmF3LgorICAg
ICAgICB0aGlzLl9jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdl
LnNpemUueCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLnkpOworCisgICAgICAgIC8vIERy
YXcgc2NlbmUgc3R1ZmYgaGVyZSBpZiBuZWVkZWQuCisKKyAgICAgICAgcmV0dXJuIFN0YWdlQW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKKyAgICB9Cit9KTsKKworVGVtcGxh
dGVDYW52YXNCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2VCZW5jaG1h
cmssCisgICAgZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQorICAg
IHsKKyAgICAgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcHJvZ3Jlc3NCYXIpOworICAgIH0sIHsKKworICAgIGNyZWF0ZVN0YWdlOiBmdW5jdGlvbihl
bGVtZW50KQorICAgIHsKKyAgICAgICAgLy8gQXR0YWNoIHRoZSBzdGFnZSB0byB0aGUgYmVuY2ht
YXJrLgorICAgICAgICByZXR1cm4gbmV3IFRlbXBsYXRlQ2FudmFzU3RhZ2UoZWxlbWVudCwgdGhp
cy5fb3B0aW9ucyk7CisgICAgfSwKKworICAgIGNyZWF0ZUFuaW1hdG9yOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICAvLyBBdHRhY2ggdGhlIGFuaW1hdG9yIHRvIHRoZSBiZW5jaG1hcmsuCisg
ICAgICAgIHJldHVybiBuZXcgVGVtcGxhdGVDYW52YXNBbmltYXRvcih0aGlzLCB0aGlzLl9vcHRp
b25zKTsKKyAgICB9Cit9KTsKIAogd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5j
dGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBs
YXRlLWNzcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9y
ZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpzCmluZGV4IDJlM2M5NTUuLmQ2NWQ4N2QgMTAwNjQ0Ci0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMv
dGVtcGxhdGUtY3NzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90
ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpzCkBAIC0xLDUxICsxLDQ5IEBACi1mdW5j
dGlvbiBUZW1wbGF0ZUNzc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCi17Ci0gICAgU3RhZ2UuY2Fs
bCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKLX0KK1RlbXBsYXRlQ3NzU3RhZ2UgPSBVdGlsaXRp
ZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2UsCisgICAgZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMp
CisgICAgeworICAgICAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAg
IH0sIHsKIAotVGVtcGxhdGVDc3NTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdl
LnByb3RvdHlwZSk7Ci1UZW1wbGF0ZUNzc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRl
bXBsYXRlQ3NzU3RhZ2U7CisgICAgdHVuZTogZnVuY3Rpb24oY291bnQpCisgICAgeworICAgICAg
ICAvLyBJZiBjb3VudCBpcyAtdmUsIC1jb3VudCBlbGVtZW50cyBuZWVkIHRvIGJlIHJlbW92ZWQg
Zm9ybSB0aGUKKyAgICAgICAgLy8gc3RhZ2UuIElmIGNvdW50IGlzICt2ZSwgK2NvdW50IGVsZW1l
bnRzIG5lZWQgdG8gYmUgYWRkZWQgdG8KKyAgICAgICAgLy8gdGhlIHN0YWdlLgogCi1UZW1wbGF0
ZUNzc1N0YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpCi17Ci0gICAgLy8gSWYg
Y291bnQgaXMgLXZlLCAtY291bnQgZWxlbWVudHMgbmVlZCB0byBiZSByZW1vdmVkIGZvcm0gdGhl
Ci0gICAgLy8gc3RhZ2UuIElmIGNvdW50IGlzICt2ZSwgK2NvdW50IGVsZW1lbnRzIG5lZWQgdG8g
YmUgYWRkZWQgdG8KLSAgICAvLyB0aGUgc3RhZ2UuCi0gICAgCi0gICAgLy8gQ2hhbmdlIG9iamVj
dHMgaW4gdGhlIHN0YWdlLgotICAgIAotICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGFsbCB0
aGUgZWxlbWVudHMgaW4gdGhlIHN0YWdlLgotICAgIC8vIFRoaXMgbnVtYmVyIGlzIHJlY29yZGVk
IGluIHRoZSBzYW1wbGVkIGRhdGEuCi0gICAgCi0gICAgLy8gUmV0dXJuIHRoZSBjb3VudCBvZiB0
aGUgb2JqZWN0cyBpbiB0aGUgc3RhZ2UuCi0gICAgcmV0dXJuIDA7Ci19CisgICAgICAgIC8vIENo
YW5nZSBvYmplY3RzIGluIHRoZSBzdGFnZS4KIAotVGVtcGxhdGVDc3NTdGFnZS5wcm90b3R5cGUu
YW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKLXsKLSAgICAvLyBBbmltYXRlIHRoZSBlbGVt
ZW50cyBzdWNoIHRoYXQgYWxsIG9mIHRoZW0gYXJlIHJlZHJhd24uIFlvdSAKLSAgICAvLyBtYXkg
bmVlZCB0byBkZWZpbmUgeW91ciBvYmplY3Qgc28gaXQga2VlcHMgaXRzIGFuaW1hdGlvbiBkYXRh
LgotICAgIC8vIFRoaXMgb2JqZWN0IHNob3VsZCBlbmNhcHN1bGF0ZSBhIGNvcnJvc3BvbmRpbmcg
SFRNTEVsZW1lbnQuCi0gICAgLy8gWW91IG1heSBhbHNvIGRlZmluZSBhIG1ldGhvZCBjYWxsZWQg
YW5pbWF0ZSgpIGluIHRoaXMgb2JqZWN0Ci0gICAgLy8gYW5kIGp1c3QgY2FsbCB0aGlzIGZ1bmN0
aW9uIGhlcmUgZm9yIGFsbCB0aGUgZWxlbWVudHMuCi0gICAgCi0gICAgLy8gTG9vcCB0aHJvdWdo
IGFsbCB5b3VyIG9iamVjdHMgYW5kIGFzayB0aGVtIHRvIGFuaW1hdGUuCi19CisgICAgICAgIC8v
IFJldHVybiB0aGUgbnVtYmVyIG9mIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIHN0YWdlLgorICAg
ICAgICAvLyBUaGlzIG51bWJlciBpcyByZWNvcmRlZCBpbiB0aGUgc2FtcGxlZCBkYXRhLgogCi1m
dW5jdGlvbiBUZW1wbGF0ZUNzc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jl
c3NCYXIpCi17Ci0gICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcHJvZ3Jlc3NCYXIpOwotfQorICAgICAgICAvLyBSZXR1cm4gdGhlIGNvdW50IG9mIHRo
ZSBvYmplY3RzIGluIHRoZSBzdGFnZS4KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfSwKIAotVGVt
cGxhdGVDc3NCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFy
ay5wcm90b3R5cGUpOwotVGVtcGxhdGVDc3NCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gVGVtcGxhdGVDc3NCZW5jaG1hcms7CisgICAgYW5pbWF0ZTogZnVuY3Rpb24odGltZURlbHRh
KQorICAgIHsKKyAgICAgICAgLy8gQW5pbWF0ZSB0aGUgZWxlbWVudHMgc3VjaCB0aGF0IGFsbCBv
ZiB0aGVtIGFyZSByZWRyYXduLiBZb3UKKyAgICAgICAgLy8gbWF5IG5lZWQgdG8gZGVmaW5lIHlv
dXIgb2JqZWN0IHNvIGl0IGtlZXBzIGl0cyBhbmltYXRpb24gZGF0YS4KKyAgICAgICAgLy8gVGhp
cyBvYmplY3Qgc2hvdWxkIGVuY2Fwc3VsYXRlIGEgY29ycm9zcG9uZGluZyBIVE1MRWxlbWVudC4K
KyAgICAgICAgLy8gWW91IG1heSBhbHNvIGRlZmluZSBhIG1ldGhvZCBjYWxsZWQgYW5pbWF0ZSgp
IGluIHRoaXMgb2JqZWN0CisgICAgICAgIC8vIGFuZCBqdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBo
ZXJlIGZvciBhbGwgdGhlIGVsZW1lbnRzLgogCi1UZW1wbGF0ZUNzc0JlbmNobWFyay5wcm90b3R5
cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQotewotICAgIC8vIFlvdSBuZWVkIHRv
IG92ZXJyaWRlIHRoaXMgbWV0aG9kIHN1Y2ggdGhhdCB5b3VyIHN0YWdlIGlzIGhvb2tlZAotICAg
IC8vIHVwIHRvIHRoZSBiZW5jaG1hcmsuCi0gICAgcmV0dXJuIG5ldyBUZW1wbGF0ZUNzc1N0YWdl
KGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwotfQorICAgICAgICAvLyBMb29wIHRocm91Z2ggYWxs
IHlvdXIgb2JqZWN0cyBhbmQgYXNrIHRoZW0gdG8gYW5pbWF0ZS4KKyAgICB9Cit9KTsKKworVGVt
cGxhdGVDc3NCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2VCZW5jaG1h
cmssCisgICAgZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQorICAg
IHsKKyAgICAgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcHJvZ3Jlc3NCYXIpOworICAgIH0sIHsKKworICAgIGNyZWF0ZVN0YWdlOiBmdW5jdGlvbihl
bGVtZW50KQorICAgIHsKKyAgICAgICAgLy8gWW91IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBtZXRo
b2Qgc3VjaCB0aGF0IHlvdXIgc3RhZ2UgaXMgaG9va2VkCisgICAgICAgIC8vIHVwIHRvIHRoZSBi
ZW5jaG1hcmsuCisgICAgICAgIHJldHVybiBuZXcgVGVtcGxhdGVDc3NTdGFnZShlbGVtZW50LCB0
aGlzLl9vcHRpb25zKTsKKyAgICB9Cit9KTsKIAogd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVh
dGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3Vy
Y2VzL3RlbXBsYXRlLXN2Zy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90
ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzCmluZGV4IGE4OGFkZDcuLmM4OTg4NjEg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9y
ZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzCkBAIC0xLDUxICsxLDQ5
IEBACi1mdW5jdGlvbiBUZW1wbGF0ZVN2Z1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCi17Ci0gICAg
U3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKLX0KK1RlbXBsYXRlU3ZnU3RhZ2Ug
PSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2UsCisgICAgZnVuY3Rpb24oZWxlbWVudCwg
b3B0aW9ucykKKyAgICB7CisgICAgICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9u
cyk7CisgICAgfSwgewogCi1UZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoU3RhZ2UucHJvdG90eXBlKTsKLVRlbXBsYXRlU3ZnU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gVGVtcGxhdGVTdmdTdGFnZTsKKyAgICB0dW5lOiBmdW5jdGlvbihjb3VudCkKKyAgICB7
CisgICAgICAgIC8vIElmIGNvdW50IGlzIC12ZSwgLWNvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUg
cmVtb3ZlZCBmb3JtIHRoZQorICAgICAgICAvLyBzdGFnZS4gSWYgY291bnQgaXMgK3ZlLCArY291
bnQgZWxlbWVudHMgbmVlZCB0byBiZSBhZGRlZCB0bworICAgICAgICAvLyB0aGUgc3RhZ2UuCiAK
LVRlbXBsYXRlU3ZnU3RhZ2UucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKLXsKLSAg
ICAvLyBJZiBjb3VudCBpcyAtdmUsIC1jb3VudCBlbGVtZW50cyBuZWVkIHRvIGJlIHJlbW92ZWQg
Zm9ybSB0aGUKLSAgICAvLyBzdGFnZS4gSWYgY291bnQgaXMgK3ZlLCArY291bnQgZWxlbWVudHMg
bmVlZCB0byBiZSBhZGRlZCB0bwotICAgIC8vIHRoZSBzdGFnZS4KLSAgICAKLSAgICAvLyBUT0RP
OiBDaGFuZ2Ugb2JqZWN0cyBpbiB0aGUgc3RhZ2UuCi0gICAgCi0gICAgLy8gUmV0dXJuIHRoZSBu
dW1iZXIgb2YgYWxsIHRoZSBlbGVtZW50cyBpbiB0aGUgc3RhZ2UuCi0gICAgLy8gVGhpcyBudW1i
ZXIgaXMgcmVjb3JkZWQgaW4gdGhlIHNhbXBsZWQgZGF0YS4KLSAgICAKLSAgICAvLyBUT0RPOiBS
ZXR1cm4gdGhlIGNvdW50IG9mIHRoZSBvYmplY3RzIGluIHRoZSBzdGFnZS4KLSAgICByZXR1cm4g
MDsKLX0KKyAgICAgICAgLy8gVE9ETzogQ2hhbmdlIG9iamVjdHMgaW4gdGhlIHN0YWdlLgogCi1U
ZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQot
ewotICAgIC8vIEFuaW1hdGUgdGhlIGVsZW1lbnRzIHN1Y2ggdGhhdCBhbGwgb2YgdGhlbSBhcmUg
cmVkcmF3bi4gWW91IAotICAgIC8vIG1heSBuZWVkIHRvIGRlZmluZSB5b3VyIG9iamVjdCBzbyBp
dCBrZWVwcyBpdHMgYW5pbWF0aW9uIGRhdGEuCi0gICAgLy8gVGhpcyBvYmplY3Qgc2hvdWxkIGVu
Y2Fwc3VsYXRlIGEgY29ycm9zcG9uZGluZyBTVkdFbGVtZW50LgotICAgIC8vIFlvdSBtYXkgYWxz
byBkZWZpbmUgYSBtZXRob2QgY2FsbGVkIGFuaW1hdGUoKSBpbiB0aGlzIG9iamVjdAotICAgIC8v
IGFuZCBqdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBoZXJlIGZvciBhbGwgdGhlIGVsZW1lbnRzLgot
ICAgIAotICAgIC8vIFRPRE86IExvb3AgdGhyb3VnaCBhbGwgeW91ciBvYmplY3RzIGFuZCBhc2sg
dGhlbSB0byBhbmltYXRlLgotfQorICAgICAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBhbGwg
dGhlIGVsZW1lbnRzIGluIHRoZSBzdGFnZS4KKyAgICAgICAgLy8gVGhpcyBudW1iZXIgaXMgcmVj
b3JkZWQgaW4gdGhlIHNhbXBsZWQgZGF0YS4KIAotZnVuY3Rpb24gVGVtcGxhdGVTdmdCZW5jaG1h
cmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQotewotICAgIFN0YWdlQmVuY2ht
YXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KKyAg
ICAgICAgLy8gVE9ETzogUmV0dXJuIHRoZSBjb3VudCBvZiB0aGUgb2JqZWN0cyBpbiB0aGUgc3Rh
Z2UuCisgICAgICAgIHJldHVybiAwOworICAgIH0sCiAKLVRlbXBsYXRlU3ZnQmVuY2htYXJrLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKLVRlbXBs
YXRlU3ZnQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRlbXBsYXRlU3ZnQmVuY2ht
YXJrOworICAgIGFuaW1hdGU6IGZ1bmN0aW9uKHRpbWVEZWx0YSkKKyAgICB7CisgICAgICAgIC8v
IEFuaW1hdGUgdGhlIGVsZW1lbnRzIHN1Y2ggdGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVkcmF3bi4g
WW91CisgICAgICAgIC8vIG1heSBuZWVkIHRvIGRlZmluZSB5b3VyIG9iamVjdCBzbyBpdCBrZWVw
cyBpdHMgYW5pbWF0aW9uIGRhdGEuCisgICAgICAgIC8vIFRoaXMgb2JqZWN0IHNob3VsZCBlbmNh
cHN1bGF0ZSBhIGNvcnJvc3BvbmRpbmcgU1ZHRWxlbWVudC4KKyAgICAgICAgLy8gWW91IG1heSBh
bHNvIGRlZmluZSBhIG1ldGhvZCBjYWxsZWQgYW5pbWF0ZSgpIGluIHRoaXMgb2JqZWN0CisgICAg
ICAgIC8vIGFuZCBqdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBoZXJlIGZvciBhbGwgdGhlIGVsZW1l
bnRzLgogCi1UZW1wbGF0ZVN2Z0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5j
dGlvbihlbGVtZW50KQotewotICAgIC8vIFlvdSBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9k
IHN1Y2ggdGhhdCB5b3VyIHN0YWdlIGlzIGhvb2tlZAotICAgIC8vIHVwIHRvIHRoZSBiZW5jaG1h
cmsuCi0gICAgcmV0dXJuIG5ldyBUZW1wbGF0ZVN2Z1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlv
bnMpOwotfQorICAgICAgICAvLyBUT0RPOiBMb29wIHRocm91Z2ggYWxsIHlvdXIgb2JqZWN0cyBh
bmQgYXNrIHRoZW0gdG8gYW5pbWF0ZS4KKyAgICB9Cit9KTsKKworVGVtcGxhdGVTdmdCZW5jaG1h
cmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2VCZW5jaG1hcmssCisgICAgZnVuY3Rp
b24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQorICAgIHsKKyAgICAgICAgU3Rh
Z2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIp
OworICAgIH0sIHsKKworICAgIGNyZWF0ZVN0YWdlOiBmdW5jdGlvbihlbGVtZW50KQorICAgIHsK
KyAgICAgICAgLy8gWW91IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBtZXRob2Qgc3VjaCB0aGF0IHlv
dXIgc3RhZ2UgaXMgaG9va2VkCisgICAgICAgIC8vIHVwIHRvIHRoZSBiZW5jaG1hcmsuCisgICAg
ICAgIHJldHVybiBuZXcgVGVtcGxhdGVTdmdTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsK
KyAgICB9Cit9KTsKIAogd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihz
dWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCiB7CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXll
cmluZy10ZXh0LmpzCmluZGV4IGUyYjdiYTkuLmVkZTZhYjMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0Lmpz
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9s
YXllcmluZy10ZXh0LmpzCkBAIC0xLDI1MyArMSwyNTcgQEAKLWZ1bmN0aW9uIExheWVyaW5nVGV4
dFN0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCi17Ci0gICAgU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50
LCBvcHRpb25zKTsKLSAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRoaXMuZWxlbWVudDsK
LSAgICB0aGlzLl90ZXh0RWxlbWVudHMgPSBbXTsKLSAgICB0aGlzLl90ZXh0SXRlbUluZGV4ID0g
MDsKLSAgICB0aGlzLl9jb2xvckluZGV4ID0gMDsKLSAgICB0aGlzLl9hbmltYXRlQ291bnRzID0g
MDsKLX0KLQotTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zID0gWwotICAgICI8ZGl2IGNsYXNz
PSd0ZXh0LWxheWVyJz4iLAotICAgICAgICAiPGgyPlR5cGVzIG9mIGJlbmNobWFya3M8L2gyPiIs
Ci0gICAgICAgICI8b2w+IiwKLSAgICAgICAgICAgICI8bGk+UmVhbCBwcm9ncmFtIiwKLSAgICAg
ICAgICAgICAgICAiPHVsPiIsCi0gICAgICAgICAgICAgICAgICAgICI8bGk+d29yZCBwcm9jZXNz
aW5nIHNvZnR3YXJlPC9saT4iLAotICAgICAgICAgICAgICAgICAgICAiPGxpPnRvb2wgc29mdHdh
cmUgb2YgQ0FEPC9saT4iLAotICAgICAgICAgICAgICAgICAgICAiPGxpPnVzZXIncyBhcHBsaWNh
dGlvbiBzb2Z0d2FyZSAoaS5lLjogTUlTKTwvbGk+IiwKLSAgICAgICAgICAgICAgICAiPC91bD4i
LAotICAgICAgICAgICAgIjwvbGk+IiwKLSAgICAgICAgICAgICI8bGk+S2VybmVsIiwKLSAgICAg
ICAgICAgICAgICAiPHVsPiIsCi0gICAgICAgICAgICAgICAgICAgICI8bGk+Y29udGFpbnMga2V5
IGNvZGVzPC9saT4iLAotICAgICAgICAgICAgICAgICAgICAiPGxpPm5vcm1hbGx5IGFic3RyYWN0
ZWQgZnJvbSBhY3R1YWwgcHJvZ3JhbTwvbGk+IiwKLSAgICAgICAgICAgICAgICAgICAgIjxsaT5w
b3B1bGFyIGtlcm5lbDogTGl2ZXJtb3JlIGxvb3A8L2xpPiIsCi0gICAgICAgICAgICAgICAgICAg
ICI8bGk+bGlucGFjayBiZW5jaG1hcmsgKGNvbnRhaW5zIGJhc2ljIGxpbmVhciBhbGdlYnJhIHN1
YnJvdXRpbmUgd3JpdHRlbiBpbiBGT1JUUkFOIGxhbmd1YWdlKTwvbGk+IiwKLSAgICAgICAgICAg
ICAgICAgICAgIjxsaT5yZXN1bHRzIGFyZSByZXByZXNlbnRlZCBpbiBNRkxPUFM8L2xpPiIsCi0g
ICAgICAgICAgICAgICAgIjwvdWw+IiwKLSAgICAgICAgICAgICI8L2xpPiIsCi0gICAgICAgICAg
ICAiPGxpPlN5bnRoZXRpYyBCZW5jaG1hcmsiLAotICAgICAgICAgICAgICAgICI8dWw+IiwKLSAg
ICAgICAgICAgICAgICAgICAgIjxsaT5Qcm9jZWR1cmUgZm9yIHByb2dyYW1taW5nIHN5bnRoZXRp
YyBiZW5jaG1hcms6IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWw+IiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiPGxpPnRha2Ugc3RhdGlzdGljcyBvZiBhbGwgdHlwZXMgb2Yg
b3BlcmF0aW9ucyBmcm9tIG1hbnkgYXBwbGljYXRpb24gcHJvZ3JhbXM8L2xpPiIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIjxsaT5nZXQgcHJvcG9ydGlvbiBvZiBlYWNoIG9wZXJhdGlv
bjwvbGk+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpPndyaXRlIHByb2dyYW0g
YmFzZWQgb24gdGhlIHByb3BvcnRpb24gYWJvdmU8L2xpPiIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAiPC91bD4iLAotICAgICAgICAgICAgICAgICAgICAiPC9saT4iLAotICAgICAgICAgICAg
ICAgICAgICAiPGxpPlR5cGVzIG9mIFN5bnRoZXRpYyBCZW5jaG1hcmsgYXJlOiIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAiPHVsPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxs
aT5XaGV0c3RvbmU8L2xpPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaT5EaHJ5
c3RvbmU8L2xpPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiPC91bD4iLAotICAgICAgICAg
ICAgICAgICAgICAiPC9saT4iLAotICAgICAgICAgICAgICAgICAgICAiPGxpPlRoZXNlIHdlcmUg
dGhlIGZpcnN0IGdlbmVyYWwgcHVycG9zZSBpbmR1c3RyeSBzdGFuZGFyZCBjb21wdXRlciBiZW5j
aG1hcmtzLiBUaGV5IGRvIG5vdCBuZWNlc3NhcmlseSBvYnRhaW4gaGlnaCBzY29yZXMgb24gbW9k
ZXJuIHBpcGVsaW5lZCBjb21wdXRlcnMuPC9saT4iLAotICAgICAgICAgICAgICAgICI8L3VsPiIs
Ci0gICAgICAgICAgICAiPC9saT4iLAotICAgICAgICAgICAgIjxsaT5JL08gYmVuY2htYXJrczwv
bGk+IiwKLSAgICAgICAgICAgICI8bGk+RGF0YWJhc2UgYmVuY2htYXJrczogdG8gbWVhc3VyZSB0
aGUgdGhyb3VnaHB1dCBhbmQgcmVzcG9uc2UgdGltZXMgb2YgZGF0YWJhc2UgbWFuYWdlbWVudCBz
eXN0ZW1zIChEQk1TJyk8L2xpPiIsCi0gICAgICAgICAgICAiPGxpPlBhcmFsbGVsIGJlbmNobWFy
a3M6IHVzZWQgb24gbWFjaGluZXMgd2l0aCBtdWx0aXBsZSBjb3JlcywgcHJvY2Vzc29ycyBvciBz
eXN0ZW1zIGNvbnNpc3Rpbmcgb2YgbXVsdGlwbGUgbWFjaGluZXM8L2xpPiIsCi0gICAgICAgICI8
L29sPiIsCi0gICAgICAgICI8aDI+Q29tbW9uIGJlbmNobWFya3M8L2gyPiIsCi0gICAgICAgICI8
dWw+IiwKLSAgICAgICAgICAgICI8bGk+QnVzaW5lc3MgQXBwbGljYXRpb25zIFBlcmZvcm1hbmNl
IENvcnBvcmF0aW9uIChCQVBDbyk8L2xpPiIsCi0gICAgICAgICAgICAiPGxpPkVtYmVkZGVkIE1p
Y3JvcHJvY2Vzc29yIEJlbmNobWFyayBDb25zb3J0aXVtIChFRU1CQyk8L2xpPiIsCi0gICAgICAg
ICAgICAiPGxpPlN0YW5kYXJkIFBlcmZvcm1hbmNlIEV2YWx1YXRpb24gQ29ycG9yYXRpb24gKFNQ
RUMpLCBpbiBwYXJ0aWN1bGFyIHRoZWlyIFNQRUNpbnQgYW5kIFNQRUNmcDwvbGk+IiwKLSAgICAg
ICAgICAgICI8bGk+VHJhbnNhY3Rpb24gUHJvY2Vzc2luZyBQZXJmb3JtYW5jZSBDb3VuY2lsIChU
UEMpPC9saT4iLAotICAgICAgICAgICAgIjxsaT5Db3JlbWFyazogRW1iZWRkZWQgY29tcHV0aW5n
IGJlbmNobWFyazwvbGk+IiwKLSAgICAgICAgIjwvdWw+IiwKLSAgICAgICAgIjxoMz5PcGVuIHNv
dXJjZSBiZW5jaG1hcmtzPC9oMz4iLAotICAgICAgICAiPHVsPiIsCi0gICAgICAgICAgICAiPGxp
PkFJTSBNdWx0aXVzZXIgQmVuY2htYXJrOiBjb21wb3NlZCBvZiBhIGxpc3Qgb2YgdGVzdHMgdGhh
dCBjb3VsZCBiZSBtaXhlZCB0byBjcmVhdGUgYSAnbG9hZCBtaXgnIHRoYXQgd291bGQgc2ltdWxh
dGUgYSBzcGVjaWZpYyBjb21wdXRlciBmdW5jdGlvbiBvbiBhbnkgVU5JWC10eXBlIE9TLjwvbGk+
IiwKLSAgICAgICAgICAgICI8bGk+Qm9ubmllKys6IGZpbGVzeXN0ZW0gYW5kIGhhcmQgZHJpdmUg
YmVuY2htYXJrPC9saT4iLAotICAgICAgICAgICAgIjxsaT5CUkwtQ0FEOiBjcm9zcy1wbGF0Zm9y
bSBhcmNoaXRlY3R1cmUtYWdub3N0aWMgYmVuY2htYXJrIHN1aXRlIGJhc2VkIG9uIG11bHRpdGhy
ZWFkZWQgcmF5IHRyYWNpbmcgcGVyZm9ybWFuY2U7IGJhc2VsaW5lZCBhZ2FpbnN0IGEgVkFYLTEx
Lzc4MDsgYW5kIHVzZWQgc2luY2UgMTk4NCBmb3IgZXZhbHVhdGluZyByZWxhdGl2ZSBDUFUgcGVy
Zm9ybWFuY2UsIGNvbXBpbGVyIGRpZmZlcmVuY2VzLCBvcHRpbWl6YXRpb24gbGV2ZWxzLCBjb2hl
cmVuY3ksIGFyY2hpdGVjdHVyZSBkaWZmZXJlbmNlcywgYW5kIG9wZXJhdGluZyBzeXN0ZW0gZGlm
ZmVyZW5jZXMuPC9saT4iLAotICAgICAgICAiPC91bD4iLAotICAgICI8L2Rpdj4iCi1dOwotCi1M
YXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW0pCi17Ci0g
ICAgdmFyIHBhcnNlUmVzdWx0ID0ge307Ci0gICAgcGFyc2VSZXN1bHQudGFnU3RhcnQgPSB0ZXh0
SXRlbS5tYXRjaCgvPCguKj8pPi9nKVswXTsKLSAgICB2YXIgc3BhY2VJbmRleCA9IHBhcnNlUmVz
dWx0LnRhZ1N0YXJ0LmluZGV4T2YoIiAiKTsKLSAgICBwYXJzZVJlc3VsdC5ub2RlTmFtZSA9IHBh
cnNlUmVzdWx0LnRhZ1N0YXJ0LnN1YnN0cmluZygxLCBzcGFjZUluZGV4ICE9IC0xID8gc3BhY2VJ
bmRleCA6IHBhcnNlUmVzdWx0LnRhZ1N0YXJ0Lmxlbmd0aCAtIDEpOwotICAgIHBhcnNlUmVzdWx0
LmFyZ3MgPSBzcGFjZUluZGV4ICE9IC0xID8gVXRpbGl0aWVzLnBhcnNlQXJndW1lbnRzKHBhcnNl
UmVzdWx0LnRhZ1N0YXJ0LnN1YnN0cmluZyhzcGFjZUluZGV4ICsgMSwgcGFyc2VSZXN1bHQudGFn
U3RhcnQubGVuZ3RoIC0gMSkpIDoge307Ci0gICAgdmFyIHRhZ0VuZCA9ICI8LyIgKyBwYXJzZVJl
c3VsdC5ub2RlTmFtZSArICI+IjsgICAgICAgICAgICAgICAgCi0gICAgcGFyc2VSZXN1bHQudGFn
RW5kID0gdGV4dEl0ZW0uZW5kc1dpdGgodGFnRW5kKSA/IHRhZ0VuZCA6ICIiOwotICAgIHJldHVy
biBwYXJzZVJlc3VsdDsKLX0KLQotTGF5ZXJpbmdUZXh0U3RhZ2UuaXNPcGVuaW5nVGV4dEl0ZW0g
PSBmdW5jdGlvbih0ZXh0SXRlbSkKLXsKLSAgICByZXR1cm4gIUxheWVyaW5nVGV4dFN0YWdlLnBh
cnNlVGV4dEl0ZW0odGV4dEl0ZW0pLnRhZ0VuZC5sZW5ndGg7Ci19Ci0KLUxheWVyaW5nVGV4dFN0
YWdlLmlzQ2xvc2luZ1RleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW0pCi17Ci0gICAgcmV0dXJu
IHRleHRJdGVtLmluZGV4T2YoIi8iKSA9PSArMTsKLX0KK0xheWVyaW5nVGV4dFN0YWdlID0gVXRp
bGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlLAorICAgIGZ1bmN0aW9uKGVsZW1lbnQsIG9wdGlv
bnMpCisgICAgeworICAgICAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOwor
ICAgICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRoaXMuZWxlbWVudDsKKyAgICAgICAg
dGhpcy5fdGV4dEVsZW1lbnRzID0gW107CisgICAgICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAw
OworICAgICAgICB0aGlzLl9jb2xvckluZGV4ID0gMDsKKyAgICAgICAgdGhpcy5fYW5pbWF0ZUNv
dW50cyA9IDA7CisgICAgfSwgeworCisgICAgX25leHRUZXh0SXRlbTogZnVuY3Rpb24odGV4dEl0
ZW1GbGFncykKKyAgICB7CisgICAgICAgIHZhciB0ZXh0SXRlbSA9IExheWVyaW5nVGV4dFN0YWdl
LnRleHRJdGVtc1t0aGlzLl90ZXh0SXRlbUluZGV4XTsKKyAgICAgICAgVXRpbGl0aWVzLmV4dGVu
ZE9iamVjdCh0ZXh0SXRlbUZsYWdzLCBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0
aGlzLl90ZXh0SXRlbUluZGV4XSk7CisgICAgICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAodGhp
cy5fdGV4dEl0ZW1JbmRleCArIDEpICUgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zLmxlbmd0
aDsKKyAgICAgICAgcmV0dXJuIHRleHRJdGVtOworICAgIH0sCisKKyAgICBfcHJldmlvdXNUZXh0
SXRlbTogZnVuY3Rpb24odGV4dEl0ZW1GbGFncykKKyAgICB7CisgICAgICAgIHRoaXMuX3RleHRJ
dGVtSW5kZXggPSAodGhpcy5fdGV4dEl0ZW1JbmRleCArIExheWVyaW5nVGV4dFN0YWdlLnRleHRJ
dGVtcy5sZW5ndGggLSAxKSAlIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5sZW5ndGg7Cisg
ICAgICAgIFV0aWxpdGllcy5leHRlbmRPYmplY3QodGV4dEl0ZW1GbGFncywgTGF5ZXJpbmdUZXh0
U3RhZ2UudGV4dEl0ZW1zRmxhZ3NbdGhpcy5fdGV4dEl0ZW1JbmRleF0pOworICAgICAgICByZXR1
cm4gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zW3RoaXMuX3RleHRJdGVtSW5kZXhdOworICAg
IH0sCisKKyAgICBfcHVzaFRleHRFbGVtZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2
YXIgdGV4dEl0ZW1GbGFncyA9IHt9OworICAgICAgICB2YXIgdGV4dEl0ZW0gPSB0aGlzLl9uZXh0
VGV4dEl0ZW0odGV4dEl0ZW1GbGFncyk7CisgICAgICAgIGZvciAoIDsgdGV4dEl0ZW1GbGFncy5p
c0Nsb3Npbmc7IHRleHRJdGVtID0gdGhpcy5fbmV4dFRleHRJdGVtKHRleHRJdGVtRmxhZ3MpKQor
ICAgICAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQgPSB0aGlzLl90ZXh0RWxlbWVudFBh
cmVudC5wYXJlbnROb2RlOworCisgICAgICAgIHZhciBwYXJzZVJlc3VsdCA9IExheWVyaW5nVGV4
dFN0YWdlLnBhcnNlVGV4dEl0ZW0odGV4dEl0ZW0pOworICAgICAgICB0ZXh0SXRlbSA9IHRleHRJ
dGVtLnN1YnN0cmluZyhwYXJzZVJlc3VsdC50YWdTdGFydC5sZW5ndGgsIHRleHRJdGVtLmxlbmd0
aCAtIHBhcnNlUmVzdWx0LnRhZ0VuZC5sZW5ndGgpOworCisgICAgICAgIHZhciB0ZXh0RWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocGFyc2VSZXN1bHQubm9kZU5hbWUpOworCisgICAg
ICAgIGZvciAodmFyIGF0dHJuYW1lIGluIHBhcnNlUmVzdWx0LmFyZ3MpCisgICAgICAgICAgICB0
ZXh0RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cm5hbWUsIHBhcnNlUmVzdWx0LmFyZ3NbYXR0cm5h
bWVdKTsKKworICAgICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5hcHBlbmRDaGlsZCh0ZXh0
RWxlbWVudCk7CisKKyAgICAgICAgaWYgKCFwYXJzZVJlc3VsdC50YWdFbmQubGVuZ3RoKQorICAg
ICAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQgPSB0ZXh0RWxlbWVudDsKKworICAgICAg
ICB0ZXh0RWxlbWVudC5pbm5lckhUTUwgPSB0ZXh0SXRlbTsKKworICAgICAgICB0aGlzLl90ZXh0
RWxlbWVudHMucHVzaCh0ZXh0RWxlbWVudCk7CisgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxl
bWVudHMubGVuZ3RoOworICAgIH0sCiAKLUxheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdz
ID0gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zLm1hcChmdW5jdGlvbih0ZXh0SXRlbSkKLXsK
LSAgIHZhciB0ZXh0SXRlbUZsYWdzID0ge307Ci0gICB0ZXh0SXRlbUZsYWdzLmlzT3BlbmluZyA9
IExheWVyaW5nVGV4dFN0YWdlLmlzT3BlbmluZ1RleHRJdGVtKHRleHRJdGVtKTsKLSAgIHRleHRJ
dGVtRmxhZ3MuaXNDbG9zaW5nID0gTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDbG9zaW5nVGV4dEl0ZW0o
dGV4dEl0ZW0pOyAgIAotICAgcmV0dXJuIHRleHRJdGVtRmxhZ3M7Ci19KTsKKyAgICBfcG9wVGV4
dEVsZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciB0ZXh0SXRlbUZsYWdzID0g
e307CisgICAgICAgIHZhciB0ZXh0SXRlbSA9IHRoaXMuX3ByZXZpb3VzVGV4dEl0ZW0odGV4dEl0
ZW1GbGFncyk7CisgICAgICAgIGZvciAoIDsgdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7IHRleHRJ
dGVtID0gdGhpcy5fcHJldmlvdXNUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKSkKKyAgICAgICAgICAg
IHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQubGFzdENo
aWxkOwogCi1MYXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtID0gZnVuY3Rpb24o
dGV4dEl0ZW1GbGFncykKLXsKLSAgICByZXR1cm4gISh0ZXh0SXRlbUZsYWdzLmlzT3BlbmluZyB8
fCB0ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZyk7Ci19CisgICAgICAgIGlmICh0ZXh0SXRlbUZsYWdz
LmlzT3BlbmluZykKKyAgICAgICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5f
dGV4dEVsZW1lbnRQYXJlbnQucGFyZW50Tm9kZTsKIAotTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNl
cnRhYmxlVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQotewotICAgIHJldHVybiAh
dGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7Ci19CisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50c1t0
aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoIC0gMV0ucmVtb3ZlKCk7CiAKLUxheWVyaW5nVGV4dFN0
YWdlLmNvbG9yYWJsZVRleHRJdGVtcyA9IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdz
LmZpbHRlcihmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQotewotICAgIHJldHVybiBMYXllcmluZ1Rl
eHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtKHRleHRJdGVtRmxhZ3MpOwotfSkubGVuZ3RoOwot
Ci1MYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxlVGV4dEl0ZW1zID0gTGF5ZXJpbmdUZXh0U3Rh
Z2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpCi17Ci0gICAg
cmV0dXJuIExheWVyaW5nVGV4dFN0YWdlLmlzSW5zZXJ0YWJsZVRleHRJdGVtKHRleHRJdGVtRmxh
Z3MpOwotfSkubGVuZ3RoOwotCi1MYXllcmluZ1RleHRTdGFnZS5jb2xvckluZGV4VG9UZXh0RWxl
bWVudEluZGV4ID0gZnVuY3Rpb24oY29sb3JJbmRleCkKLXsKLSAgICB2YXIgdGV4dEVsZW1lbnRJ
bmRleCA9IDA7Ci0gICAgdmFyIGluZGV4ID0gMDsKLSAgICAKLSAgICBmb3IgKHZhciB0ZXh0SXRl
bUluZGV4ID0gMDsgdGV4dEl0ZW1JbmRleCA8IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0Zs
YWdzLmxlbmd0aDsgKyt0ZXh0SXRlbUluZGV4KSB7Ci0gICAgICAgIGlmIChMYXllcmluZ1RleHRT
dGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtKExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdz
W3RleHRJdGVtSW5kZXhdKSkgewotICAgICAgICAgICAgaWYgKCsraW5kZXggPiBjb2xvckluZGV4
KQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB0aGlzLl90ZXh0RWxlbWVudHMucG9w
KCk7CisgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworICAgIH0sCisK
KyAgICBfY29sb3JUZXh0SXRlbTogZnVuY3Rpb24oY29sb3IpCisgICAgeworICAgICAgICB2YXIg
dGV4dEVsZW1lbnRJbmRleCA9IExheWVyaW5nVGV4dFN0YWdlLmNvbG9ySW5kZXhUb1RleHRFbGVt
ZW50SW5kZXgodGhpcy5fY29sb3JJbmRleCk7CisgICAgICAgIGZvciAoIDsgdGV4dEVsZW1lbnRJ
bmRleCA8IHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7IHRleHRFbGVtZW50SW5kZXggKz0gTGF5
ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVtcykKKyAgICAgICAgICAgIHRoaXMuX3Rl
eHRFbGVtZW50c1t0ZXh0RWxlbWVudEluZGV4XS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xv
cjsKKyAgICB9LAorCisgICAgYW5pbWF0ZTogZnVuY3Rpb24odGltZURlbHRhKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fY29sb3JUZXh0SXRlbSgidHJhbnNwYXJlbnQiKTsKKyAgICAgICAgdGhpcy5f
Y29sb3JJbmRleCA9ICh0aGlzLl9jb2xvckluZGV4ICsgMSkgJSBMYXllcmluZ1RleHRTdGFnZS5j
b2xvcmFibGVUZXh0SXRlbXM7CisgICAgICAgIHRoaXMuX2NvbG9yVGV4dEl0ZW0oIlllbGxvd0dy
ZWVuIik7CisKKyAgICAgICAgdmFyIGJsYWNrVGV4dEVsZW1lbnRzID0gTWF0aC5taW4odGhpcy5f
dGV4dEVsZW1lbnRzLmxlbmd0aCwgTGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVt
cyk7CisgICAgICAgIHZhciBpID0gMDsKKyAgICAgICAgZm9yICggOyBpIDwgdGhpcy5fdGV4dEVs
ZW1lbnRzLmxlbmd0aCAtIGJsYWNrVGV4dEVsZW1lbnRzOyArK2kpCisgICAgICAgICAgICB0aGlz
Ll90ZXh0RWxlbWVudHNbaV0uc3R5bGUuY29sb3IgPSAodGhpcy5fYW5pbWF0ZUNvdW50cyAmIDEp
ID8gIkxpZ2h0WWVsbG93IiA6ICJ3aGl0ZSI7CisKKyAgICAgICAgZm9yICggOyBpIDwgdGhpcy5f
dGV4dEVsZW1lbnRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRz
W2ldLnN0eWxlLmNvbG9yID0gImJsYWNrIjsKKworICAgICAgICArK3RoaXMuX2FuaW1hdGVDb3Vu
dHM7CisgICAgfSwKKworICAgIHR1bmU6IGZ1bmN0aW9uKGNvdW50KQorICAgIHsKKyAgICAgICAg
aWYgKGNvdW50ID09IDApCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxl
bmd0aDsKKworICAgICAgICBpZiAoY291bnQgPiAwKSB7CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICAgICAgdGhpcy5fcHVzaFRleHRFbGVt
ZW50KCk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKICAg
ICAgICAgfQotICAgICAgICBpZiAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4dEl0
ZW0oTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3NbdGV4dEl0ZW1JbmRleF0pKQotICAg
ICAgICAgICAgKyt0ZXh0RWxlbWVudEluZGV4OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gdGV4
dEVsZW1lbnRJbmRleDsKLX0KLQotTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOwotTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0gTGF5ZXJpbmdUZXh0U3RhZ2U7Ci0KLUxheWVyaW5nVGV4dFN0YWdlLnByb3Rv
dHlwZS5fbmV4dFRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW1GbGFncykKLXsKLSAgICB2YXIg
dGV4dEl0ZW0gPSBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNbdGhpcy5fdGV4dEl0ZW1JbmRl
eF07Ci0gICAgVXRpbGl0aWVzLmV4dGVuZE9iamVjdCh0ZXh0SXRlbUZsYWdzLCBMYXllcmluZ1Rl
eHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0aGlzLl90ZXh0SXRlbUluZGV4XSk7Ci0gICAgdGhpcy5f
dGV4dEl0ZW1JbmRleCA9ICh0aGlzLl90ZXh0SXRlbUluZGV4ICsgMSkgJSBMYXllcmluZ1RleHRT
dGFnZS50ZXh0SXRlbXMubGVuZ3RoOwotICAgIHJldHVybiB0ZXh0SXRlbTsKLX0KLQotTGF5ZXJp
bmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wcmV2aW91c1RleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0
ZW1GbGFncykKLXsKLSAgICB0aGlzLl90ZXh0SXRlbUluZGV4ID0gKHRoaXMuX3RleHRJdGVtSW5k
ZXggKyBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoIC0gMSkgJSBMYXllcmluZ1Rl
eHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoOwotICAgIFV0aWxpdGllcy5leHRlbmRPYmplY3QodGV4
dEl0ZW1GbGFncywgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3NbdGhpcy5fdGV4dEl0
ZW1JbmRleF0pOyAgICAKLSAgICByZXR1cm4gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zW3Ro
aXMuX3RleHRJdGVtSW5kZXhdOwotfQotCi1MYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX3B1
c2hUZXh0RWxlbWVudCA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgdGV4dEl0ZW1GbGFncyA9IHt9
OwotICAgIHZhciB0ZXh0SXRlbSA9IHRoaXMuX25leHRUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKTsK
LSAgICBmb3IgKCA7IHRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nOyB0ZXh0SXRlbSA9IHRoaXMuX25l
eHRUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKSkKLSAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJl
bnQgPSB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5wYXJlbnROb2RlOwogCi0gICAgdmFyIHBhcnNl
UmVzdWx0ID0gTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSh0ZXh0SXRlbSk7Ci0gICAg
dGV4dEl0ZW0gPSB0ZXh0SXRlbS5zdWJzdHJpbmcocGFyc2VSZXN1bHQudGFnU3RhcnQubGVuZ3Ro
LCB0ZXh0SXRlbS5sZW5ndGggLSBwYXJzZVJlc3VsdC50YWdFbmQubGVuZ3RoKTsKLQotICAgIHZh
ciB0ZXh0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocGFyc2VSZXN1bHQubm9kZU5h
bWUpOwotCi0gICAgZm9yICh2YXIgYXR0cm5hbWUgaW4gcGFyc2VSZXN1bHQuYXJncykKLSAgICAg
ICAgdGV4dEVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJuYW1lLCBwYXJzZVJlc3VsdC5hcmdzW2F0
dHJuYW1lXSk7Ci0KLSAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5hcHBlbmRDaGlsZCh0ZXh0
RWxlbWVudCk7Ci0gICAgCi0gICAgaWYgKCFwYXJzZVJlc3VsdC50YWdFbmQubGVuZ3RoKQotICAg
ICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRleHRFbGVtZW50OwotCi0gICAgdGV4dEVs
ZW1lbnQuaW5uZXJIVE1MID0gdGV4dEl0ZW07Ci0gICAgCi0gICAgdGhpcy5fdGV4dEVsZW1lbnRz
LnB1c2godGV4dEVsZW1lbnQpOwotICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3Ro
OwotfQorICAgICAgICBjb3VudCA9IE1hdGgubWluKC1jb3VudCwgdGhpcy5fdGV4dEVsZW1lbnRz
Lmxlbmd0aCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAg
ICAgICAgIHRoaXMuX3BvcFRleHRFbGVtZW50KCk7CiAKLUxheWVyaW5nVGV4dFN0YWdlLnByb3Rv
dHlwZS5fcG9wVGV4dEVsZW1lbnQgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIHRleHRJdGVtRmxh
Z3MgPSB7fTsgICAgCi0gICAgdmFyIHRleHRJdGVtID0gdGhpcy5fcHJldmlvdXNUZXh0SXRlbSh0
ZXh0SXRlbUZsYWdzKTsKLSAgICBmb3IgKCA7IHRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nOyB0ZXh0
SXRlbSA9IHRoaXMuX3ByZXZpb3VzVGV4dEl0ZW0odGV4dEl0ZW1GbGFncykpCi0gICAgICAgIHRo
aXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQubGFzdENoaWxk
OworICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKKyAgICB9Cit9KTsK
IAotICAgIGlmICh0ZXh0SXRlbUZsYWdzLmlzT3BlbmluZykKLSAgICAgICAgdGhpcy5fdGV4dEVs
ZW1lbnRQYXJlbnQgPSB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5wYXJlbnROb2RlOworVXRpbGl0
aWVzLmV4dGVuZE9iamVjdChMYXllcmluZ1RleHRTdGFnZSwgeworICAgIHRleHRJdGVtczogWwor
ICAgICAgICAiPGRpdiBjbGFzcz0ndGV4dC1sYXllcic+IiwKKyAgICAgICAgICAgICI8aDI+VHlw
ZXMgb2YgYmVuY2htYXJrczwvaDI+IiwKKyAgICAgICAgICAgICI8b2w+IiwKKyAgICAgICAgICAg
ICAgICAiPGxpPlJlYWwgcHJvZ3JhbSIsCisgICAgICAgICAgICAgICAgICAgICI8dWw+IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICI8bGk+d29yZCBwcm9jZXNzaW5nIHNvZnR3YXJlPC9saT4i
LAorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaT50b29sIHNvZnR3YXJlIG9mIENBRDwvbGk+
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGk+dXNlcidzIGFwcGxpY2F0aW9uIHNvZnR3
YXJlIChpLmUuOiBNSVMpPC9saT4iLAorICAgICAgICAgICAgICAgICAgICAiPC91bD4iLAorICAg
ICAgICAgICAgICAgICI8L2xpPiIsCisgICAgICAgICAgICAgICAgIjxsaT5LZXJuZWwiLAorICAg
ICAgICAgICAgICAgICAgICAiPHVsPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpPmNv
bnRhaW5zIGtleSBjb2RlczwvbGk+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGk+bm9y
bWFsbHkgYWJzdHJhY3RlZCBmcm9tIGFjdHVhbCBwcm9ncmFtPC9saT4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIjxsaT5wb3B1bGFyIGtlcm5lbDogTGl2ZXJtb3JlIGxvb3A8L2xpPiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAiPGxpPmxpbnBhY2sgYmVuY2htYXJrIChjb250YWlucyBi
YXNpYyBsaW5lYXIgYWxnZWJyYSBzdWJyb3V0aW5lIHdyaXR0ZW4gaW4gRk9SVFJBTiBsYW5ndWFn
ZSk8L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpPnJlc3VsdHMgYXJlIHJlcHJl
c2VudGVkIGluIE1GTE9QUzwvbGk+IiwKKyAgICAgICAgICAgICAgICAgICAgIjwvdWw+IiwKKyAg
ICAgICAgICAgICAgICAiPC9saT4iLAorICAgICAgICAgICAgICAgICI8bGk+U3ludGhldGljIEJl
bmNobWFyayIsCisgICAgICAgICAgICAgICAgICAgICI8dWw+IiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICI8bGk+UHJvY2VkdXJlIGZvciBwcm9ncmFtbWluZyBzeW50aGV0aWMgYmVuY2htYXJr
OiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bD4iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiPGxpPnRha2Ugc3RhdGlzdGljcyBvZiBhbGwgdHlwZXMgb2Ygb3Bl
cmF0aW9ucyBmcm9tIG1hbnkgYXBwbGljYXRpb24gcHJvZ3JhbXM8L2xpPiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICI8bGk+Z2V0IHByb3BvcnRpb24gb2YgZWFjaCBvcGVyYXRp
b248L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGk+d3JpdGUgcHJv
Z3JhbSBiYXNlZCBvbiB0aGUgcHJvcG9ydGlvbiBhYm92ZTwvbGk+IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiPC91bD4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIjwvbGk+IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICI8bGk+VHlwZXMgb2YgU3ludGhldGljIEJlbmNobWFy
ayBhcmU6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsPiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICI8bGk+V2hldHN0b25lPC9saT4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiPGxpPkRocnlzdG9uZTwvbGk+IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiPC91bD4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIjwvbGk+IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICI8bGk+VGhlc2Ugd2VyZSB0aGUgZmlyc3QgZ2VuZXJh
bCBwdXJwb3NlIGluZHVzdHJ5IHN0YW5kYXJkIGNvbXB1dGVyIGJlbmNobWFya3MuIFRoZXkgZG8g
bm90IG5lY2Vzc2FyaWx5IG9idGFpbiBoaWdoIHNjb3JlcyBvbiBtb2Rlcm4gcGlwZWxpbmVkIGNv
bXB1dGVycy48L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICI8L3VsPiIsCisgICAgICAgICAg
ICAgICAgIjwvbGk+IiwKKyAgICAgICAgICAgICAgICAiPGxpPkkvTyBiZW5jaG1hcmtzPC9saT4i
LAorICAgICAgICAgICAgICAgICI8bGk+RGF0YWJhc2UgYmVuY2htYXJrczogdG8gbWVhc3VyZSB0
aGUgdGhyb3VnaHB1dCBhbmQgcmVzcG9uc2UgdGltZXMgb2YgZGF0YWJhc2UgbWFuYWdlbWVudCBz
eXN0ZW1zIChEQk1TJyk8L2xpPiIsCisgICAgICAgICAgICAgICAgIjxsaT5QYXJhbGxlbCBiZW5j
aG1hcmtzOiB1c2VkIG9uIG1hY2hpbmVzIHdpdGggbXVsdGlwbGUgY29yZXMsIHByb2Nlc3NvcnMg
b3Igc3lzdGVtcyBjb25zaXN0aW5nIG9mIG11bHRpcGxlIG1hY2hpbmVzPC9saT4iLAorICAgICAg
ICAgICAgIjwvb2w+IiwKKyAgICAgICAgICAgICI8aDI+Q29tbW9uIGJlbmNobWFya3M8L2gyPiIs
CisgICAgICAgICAgICAiPHVsPiIsCisgICAgICAgICAgICAgICAgIjxsaT5CdXNpbmVzcyBBcHBs
aWNhdGlvbnMgUGVyZm9ybWFuY2UgQ29ycG9yYXRpb24gKEJBUENvKTwvbGk+IiwKKyAgICAgICAg
ICAgICAgICAiPGxpPkVtYmVkZGVkIE1pY3JvcHJvY2Vzc29yIEJlbmNobWFyayBDb25zb3J0aXVt
IChFRU1CQyk8L2xpPiIsCisgICAgICAgICAgICAgICAgIjxsaT5TdGFuZGFyZCBQZXJmb3JtYW5j
ZSBFdmFsdWF0aW9uIENvcnBvcmF0aW9uIChTUEVDKSwgaW4gcGFydGljdWxhciB0aGVpciBTUEVD
aW50IGFuZCBTUEVDZnA8L2xpPiIsCisgICAgICAgICAgICAgICAgIjxsaT5UcmFuc2FjdGlvbiBQ
cm9jZXNzaW5nIFBlcmZvcm1hbmNlIENvdW5jaWwgKFRQQyk8L2xpPiIsCisgICAgICAgICAgICAg
ICAgIjxsaT5Db3JlbWFyazogRW1iZWRkZWQgY29tcHV0aW5nIGJlbmNobWFyazwvbGk+IiwKKyAg
ICAgICAgICAgICI8L3VsPiIsCisgICAgICAgICAgICAiPGgzPk9wZW4gc291cmNlIGJlbmNobWFy
a3M8L2gzPiIsCisgICAgICAgICAgICAiPHVsPiIsCisgICAgICAgICAgICAgICAgIjxsaT5BSU0g
TXVsdGl1c2VyIEJlbmNobWFyazogY29tcG9zZWQgb2YgYSBsaXN0IG9mIHRlc3RzIHRoYXQgY291
bGQgYmUgbWl4ZWQgdG8gY3JlYXRlIGEgJ2xvYWQgbWl4JyB0aGF0IHdvdWxkIHNpbXVsYXRlIGEg
c3BlY2lmaWMgY29tcHV0ZXIgZnVuY3Rpb24gb24gYW55IFVOSVgtdHlwZSBPUy48L2xpPiIsCisg
ICAgICAgICAgICAgICAgIjxsaT5Cb25uaWUrKzogZmlsZXN5c3RlbSBhbmQgaGFyZCBkcml2ZSBi
ZW5jaG1hcms8L2xpPiIsCisgICAgICAgICAgICAgICAgIjxsaT5CUkwtQ0FEOiBjcm9zcy1wbGF0
Zm9ybSBhcmNoaXRlY3R1cmUtYWdub3N0aWMgYmVuY2htYXJrIHN1aXRlIGJhc2VkIG9uIG11bHRp
dGhyZWFkZWQgcmF5IHRyYWNpbmcgcGVyZm9ybWFuY2U7IGJhc2VsaW5lZCBhZ2FpbnN0IGEgVkFY
LTExLzc4MDsgYW5kIHVzZWQgc2luY2UgMTk4NCBmb3IgZXZhbHVhdGluZyByZWxhdGl2ZSBDUFUg
cGVyZm9ybWFuY2UsIGNvbXBpbGVyIGRpZmZlcmVuY2VzLCBvcHRpbWl6YXRpb24gbGV2ZWxzLCBj
b2hlcmVuY3ksIGFyY2hpdGVjdHVyZSBkaWZmZXJlbmNlcywgYW5kIG9wZXJhdGluZyBzeXN0ZW0g
ZGlmZmVyZW5jZXMuPC9saT4iLAorICAgICAgICAgICAgIjwvdWw+IiwKKyAgICAgICAgIjwvZGl2
PiIKKyAgICBdLAorCisgICAgcGFyc2VUZXh0SXRlbTogZnVuY3Rpb24odGV4dEl0ZW0pCisgICAg
eworICAgICAgICB2YXIgcGFyc2VSZXN1bHQgPSB7fTsKKyAgICAgICAgcGFyc2VSZXN1bHQudGFn
U3RhcnQgPSB0ZXh0SXRlbS5tYXRjaCgvPCguKj8pPi9nKVswXTsKKyAgICAgICAgdmFyIHNwYWNl
SW5kZXggPSBwYXJzZVJlc3VsdC50YWdTdGFydC5pbmRleE9mKCIgIik7CisgICAgICAgIHBhcnNl
UmVzdWx0Lm5vZGVOYW1lID0gcGFyc2VSZXN1bHQudGFnU3RhcnQuc3Vic3RyaW5nKDEsIHNwYWNl
SW5kZXggIT0gLTEgPyBzcGFjZUluZGV4IDogcGFyc2VSZXN1bHQudGFnU3RhcnQubGVuZ3RoIC0g
MSk7CisgICAgICAgIHBhcnNlUmVzdWx0LmFyZ3MgPSBzcGFjZUluZGV4ICE9IC0xID8gVXRpbGl0
aWVzLnBhcnNlQXJndW1lbnRzKHBhcnNlUmVzdWx0LnRhZ1N0YXJ0LnN1YnN0cmluZyhzcGFjZUlu
ZGV4ICsgMSwgcGFyc2VSZXN1bHQudGFnU3RhcnQubGVuZ3RoIC0gMSkpIDoge307CisgICAgICAg
IHZhciB0YWdFbmQgPSAiPC8iICsgcGFyc2VSZXN1bHQubm9kZU5hbWUgKyAiPiI7CisgICAgICAg
IHBhcnNlUmVzdWx0LnRhZ0VuZCA9IHRleHRJdGVtLmVuZHNXaXRoKHRhZ0VuZCkgPyB0YWdFbmQg
OiAiIjsKKyAgICAgICAgcmV0dXJuIHBhcnNlUmVzdWx0OworICAgIH0sCisKKyAgICBpc09wZW5p
bmdUZXh0SXRlbTogZnVuY3Rpb24odGV4dEl0ZW0pCisgICAgeworICAgICAgICByZXR1cm4gIUxh
eWVyaW5nVGV4dFN0YWdlLnBhcnNlVGV4dEl0ZW0odGV4dEl0ZW0pLnRhZ0VuZC5sZW5ndGg7Cisg
ICAgfSwKKworICAgIGlzQ2xvc2luZ1RleHRJdGVtOiBmdW5jdGlvbih0ZXh0SXRlbSkKKyAgICB7
CisgICAgICAgIHJldHVybiB0ZXh0SXRlbS5pbmRleE9mKCIvIikgPT0gKzE7CisgICAgfSwKKwor
ICAgIGlzQ29sb3JhYmxlVGV4dEl0ZW06IGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpCisgICAgewor
ICAgICAgICByZXR1cm4gISh0ZXh0SXRlbUZsYWdzLmlzT3BlbmluZyB8fCB0ZXh0SXRlbUZsYWdz
LmlzQ2xvc2luZyk7CisgICAgfSwKKworICAgIGlzSW5zZXJ0YWJsZVRleHRJdGVtOiBmdW5jdGlv
bih0ZXh0SXRlbUZsYWdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuICF0ZXh0SXRlbUZsYWdzLmlz
Q2xvc2luZzsKKyAgICB9LAorCisgICAgY29sb3JJbmRleFRvVGV4dEVsZW1lbnRJbmRleDogZnVu
Y3Rpb24oY29sb3JJbmRleCkKKyAgICB7CisgICAgICAgIHZhciB0ZXh0RWxlbWVudEluZGV4ID0g
MDsKKyAgICAgICAgdmFyIGluZGV4ID0gMDsKKworICAgICAgICBmb3IgKHZhciB0ZXh0SXRlbUlu
ZGV4ID0gMDsgdGV4dEl0ZW1JbmRleCA8IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdz
Lmxlbmd0aDsgKyt0ZXh0SXRlbUluZGV4KSB7CisgICAgICAgICAgICBpZiAoTGF5ZXJpbmdUZXh0
U3RhZ2UuaXNDb2xvcmFibGVUZXh0SXRlbShMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFn
c1t0ZXh0SXRlbUluZGV4XSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbmRleCA+IGNvbG9y
SW5kZXgpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKExheWVyaW5nVGV4dFN0YWdlLmlzSW5zZXJ0YWJsZVRleHRJdGVtKExheWVyaW5n
VGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzW3RleHRJdGVtSW5kZXhdKSkKKyAgICAgICAgICAgICAg
ICArK3RleHRFbGVtZW50SW5kZXg7CisgICAgICAgIH0KIAotICAgIHRoaXMuX3RleHRFbGVtZW50
c1t0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoIC0gMV0ucmVtb3ZlKCk7CisgICAgICAgIHJldHVy
biB0ZXh0RWxlbWVudEluZGV4OworICAgIH0KK30pOwogCi0gICAgdGhpcy5fdGV4dEVsZW1lbnRz
LnBvcCgpOwotICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOwotfQorVXRpbGl0
aWVzLmV4dGVuZE9iamVjdChMYXllcmluZ1RleHRTdGFnZSwgeworICAgIHRleHRJdGVtc0ZsYWdz
OiBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubWFwKGZ1bmN0aW9uKHRleHRJdGVtKQorICAg
IHsKKyAgICAgICB2YXIgdGV4dEl0ZW1GbGFncyA9IHt9OworICAgICAgIHRleHRJdGVtRmxhZ3Mu
aXNPcGVuaW5nID0gTGF5ZXJpbmdUZXh0U3RhZ2UuaXNPcGVuaW5nVGV4dEl0ZW0odGV4dEl0ZW0p
OworICAgICAgIHRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nID0gTGF5ZXJpbmdUZXh0U3RhZ2UuaXND
bG9zaW5nVGV4dEl0ZW0odGV4dEl0ZW0pOworICAgICAgIHJldHVybiB0ZXh0SXRlbUZsYWdzOwor
ICAgIH0pCit9KTsKIAotTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9jb2xvclRleHRJdGVt
ID0gZnVuY3Rpb24oY29sb3IpCi17Ci0gICAgdmFyIHRleHRFbGVtZW50SW5kZXggPSBMYXllcmlu
Z1RleHRTdGFnZS5jb2xvckluZGV4VG9UZXh0RWxlbWVudEluZGV4KHRoaXMuX2NvbG9ySW5kZXgp
OwotICAgIGZvciAoIDsgdGV4dEVsZW1lbnRJbmRleCA8IHRoaXMuX3RleHRFbGVtZW50cy5sZW5n
dGg7IHRleHRFbGVtZW50SW5kZXggKz0gTGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJ
dGVtcykKLSAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRzW3RleHRFbGVtZW50SW5kZXhdLnN0eWxl
LmJhY2tncm91bmRDb2xvciA9IGNvbG9yOwotfQorVXRpbGl0aWVzLmV4dGVuZE9iamVjdChMYXll
cmluZ1RleHRTdGFnZSwgeworICAgIGNvbG9yYWJsZVRleHRJdGVtczogTGF5ZXJpbmdUZXh0U3Rh
Z2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpCisgICAgewor
ICAgICAgICByZXR1cm4gTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDb2xvcmFibGVUZXh0SXRlbSh0ZXh0
SXRlbUZsYWdzKTsKKyAgICB9KS5sZW5ndGgsCiAKLUxheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlw
ZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQotewotICAgIHRoaXMuX2NvbG9yVGV4dEl0
ZW0oInRyYW5zcGFyZW50Iik7Ci0gICAgdGhpcy5fY29sb3JJbmRleCA9ICh0aGlzLl9jb2xvcklu
ZGV4ICsgMSkgJSBMYXllcmluZ1RleHRTdGFnZS5jb2xvcmFibGVUZXh0SXRlbXM7Ci0gICAgdGhp
cy5fY29sb3JUZXh0SXRlbSgiWWVsbG93R3JlZW4iKTsKLSAgICAKLSAgICB2YXIgYmxhY2tUZXh0
RWxlbWVudHMgPSBNYXRoLm1pbih0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoLCBMYXllcmluZ1Rl
eHRTdGFnZS5pbnNlcnRhYmxlVGV4dEl0ZW1zKTsKLSAgICB2YXIgaSA9IDA7Ci0gICAgZm9yICgg
OyBpIDwgdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCAtIGJsYWNrVGV4dEVsZW1lbnRzOyArK2kp
Ci0gICAgICAgIHRoaXMuX3RleHRFbGVtZW50c1tpXS5zdHlsZS5jb2xvciA9ICh0aGlzLl9hbmlt
YXRlQ291bnRzICYgMSkgPyAiTGlnaHRZZWxsb3ciIDogIndoaXRlIjsKLQotICAgIGZvciAoIDsg
aSA8IHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7ICsraSkKLSAgICAgICAgdGhpcy5fdGV4dEVs
ZW1lbnRzW2ldLnN0eWxlLmNvbG9yID0gImJsYWNrIjsKLSAgICAgICAgCi0gICAgKyt0aGlzLl9h
bmltYXRlQ291bnRzOwotfQorICAgIGluc2VydGFibGVUZXh0SXRlbXM6IExheWVyaW5nVGV4dFN0
YWdlLnRleHRJdGVtc0ZsYWdzLmZpbHRlcihmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIExheWVyaW5nVGV4dFN0YWdlLmlzSW5zZXJ0YWJsZVRleHRJdGVtKHRl
eHRJdGVtRmxhZ3MpOworICAgIH0pLmxlbmd0aAorfSk7CiAKLUxheWVyaW5nVGV4dFN0YWdlLnBy
b3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpCi17Ci0gICAgaWYgKGNvdW50ID09IDApCi0g
ICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworTGF5ZXJpbmdUZXh0QmVu
Y2htYXJrID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlQmVuY2htYXJrLAorICAgIGZ1
bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKKyAgICB7CisgICAgICAg
IFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNz
QmFyKTsKKyAgICB9LCB7CiAKLSAgICBpZiAoY291bnQgPiAwKSB7Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX3B1c2hUZXh0RWxlbWVu
dCgpOwotICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKKyAgICBjcmVh
dGVTdGFnZTogZnVuY3Rpb24oZWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgTGF5
ZXJpbmdUZXh0U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7CiAgICAgfQotICAgICAgICAK
LSAgICBjb3VudCA9IE1hdGgubWluKC1jb3VudCwgdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCk7
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQotICAgICAgICB0aGlzLl9wb3BU
ZXh0RWxlbWVudCgpOwotCi0gICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7Ci19
Ci0KLWZ1bmN0aW9uIExheWVyaW5nVGV4dEJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cHJvZ3Jlc3NCYXIpCi17Ci0gICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotfQotCi1MYXllcmluZ1RleHRCZW5jaG1hcmsucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOwotTGF5ZXJp
bmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExheWVyaW5nVGV4dEJlbmNo
bWFyazsKLQotTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1
bmN0aW9uKGVsZW1lbnQpCi17Ci0gICAgcmV0dXJuIG5ldyBMYXllcmluZ1RleHRTdGFnZShlbGVt
ZW50LCB0aGlzLl9vcHRpb25zKTsKLX0KK30pOwogCiB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNy
ZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKIHsKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNl
cy90ZXh0LWJveGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQv
cmVzb3VyY2VzL3RleHQtYm94ZXMuanMKaW5kZXggZTkwYWU3MS4uYmVjMWU3ZSAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL3RleHQt
Ym94ZXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvcmVz
b3VyY2VzL3RleHQtYm94ZXMuanMKQEAgLTEsNjMgKzEsNjAgQEAKLWZ1bmN0aW9uIEJvdW5jaW5n
VGV4dEJveChzdGFnZSwgc2FtcGxlVGV4dCkKLXsKLSAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwo
dGhpcywgc3RhZ2UpOwotCi0gICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3BhcnRpY2xlJyk7Ci0g
ICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5fc2l6ZS54ICsgInB4IjsKLSAgICB0
aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5fc2l6ZS55ICsgInB4IjsKLSAgICB0aGlz
LmVsZW1lbnQudGV4dENvbnRlbnQgPSBzYW1wbGVUZXh0OwotICAgIAotICAgIHN0YWdlLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTsKLSAgICB0aGlzLl9tb3ZlKCk7Ci19Ci0KLUJv
dW5jaW5nVGV4dEJveC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUu
cHJvdG90eXBlKTsKLUJvdW5jaW5nVGV4dEJveC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3Vu
Y2luZ1RleHRCb3g7Ci0KLUJvdW5jaW5nVGV4dEJveC5wcm90b3R5cGUuX21vdmUgPSBmdW5jdGlv
bigpCi17Ci0gICAgdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQgPSB0aGlzLl9wb3NpdGlvbi54ICsg
InB4IjsKLSAgICB0aGlzLmVsZW1lbnQuc3R5bGUudG9wID0gdGhpcy5fcG9zaXRpb24ueSArICJw
eCI7Ci19Ci0gICAgCi1Cb3VuY2luZ1RleHRCb3gucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlv
bih0aW1lRGVsdGEpCi17Ci0gICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5j
YWxsKHRoaXMsIHRpbWVEZWx0YSk7Ci0gICAgdGhpcy5fbW92ZSgpOwotfQotCi1mdW5jdGlvbiBC
b3VuY2luZ1RleHRCb3hTdGFnZShlbGVtZW50LCBvcHRpb25zKQotewotICAgIEJvdW5jaW5nUGFy
dGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKLSAgICB0aGlzLl9zYW1w
bGVUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbXBsZS10ZXh0JykudGV4dENvbnRl
bnQ7Ci19Ci0KLUJvdW5jaW5nVGV4dEJveFN0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
Qm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOwotQm91bmNpbmdUZXh0Qm94U3RhZ2Uu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdUZXh0Qm94U3RhZ2U7Ci0KLUJvdW5jaW5n
VGV4dEJveFN0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkKLXsKLSAg
ICByZXR1cm4gbmV3IEJvdW5jaW5nVGV4dEJveCh0aGlzLCB0aGlzLl9zYW1wbGVUZXh0KTsKLX0K
LQotQm91bmNpbmdUZXh0Qm94U3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9
IGZ1bmN0aW9uKHBhcnRpY2xlKQotewotICAgIHBhcnRpY2xlLmVsZW1lbnQucmVtb3ZlKCk7Ci19
Ci0KLWZ1bmN0aW9uIEJvdW5jaW5nVGV4dEJveHNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKLXsKLSAgICBCb3VuY2luZ1BhcnRpY2xlc0Jl
bmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpOwotfQotCi1Cb3VuY2luZ1RleHRCb3hzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKLUJvdW5j
aW5nVGV4dEJveHNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdUZXh0
Qm94c0JlbmNobWFyazsKLQotQm91bmNpbmdUZXh0Qm94c0JlbmNobWFyay5wcm90b3R5cGUuY3Jl
YXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQotewotICAgIHJldHVybiBuZXcgQm91bmNpbmdU
ZXh0Qm94U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Ci19CitCb3VuY2luZ1RleHRCb3gg
PSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZSwKKyAgICBmdW5jdGlv
bihzdGFnZSwgc2FtcGxlVGV4dCkKKyAgICB7CisgICAgICAgIEJvdW5jaW5nUGFydGljbGUuY2Fs
bCh0aGlzLCBzdGFnZSk7CisKKyAgICAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdwYXJ0
aWNsZScpOworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9zaXplLngg
KyAicHgiOworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5fc2l6ZS55
ICsgInB4IjsKKyAgICAgICAgdGhpcy5lbGVtZW50LnRleHRDb250ZW50ID0gc2FtcGxlVGV4dDsK
KyAgICAgICAgCisgICAgICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50
KTsKKyAgICAgICAgdGhpcy5fbW92ZSgpOworICAgIH0sIHsKKworICAgIF9tb3ZlOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUubGVmdCA9IHRoaXMuX3Bvc2l0
aW9uLnggKyAicHgiOworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudG9wID0gdGhpcy5fcG9z
aXRpb24ueSArICJweCI7CisgICAgfSwKKyAgICAgICAgCisgICAgYW5pbWF0ZTogZnVuY3Rpb24o
dGltZURlbHRhKQorICAgIHsKKyAgICAgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5p
bWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CisgICAgICAgIHRoaXMuX21vdmUoKTsKKyAgICB9
Cit9KTsKKworQm91bmNpbmdUZXh0Qm94U3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3Mo
Qm91bmNpbmdQYXJ0aWNsZXNTdGFnZSwKKyAgICBmdW5jdGlvbihlbGVtZW50LCBvcHRpb25zKQor
ICAgIHsKKyAgICAgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQs
IG9wdGlvbnMpOworICAgICAgICB0aGlzLl9zYW1wbGVUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3NhbXBsZS10ZXh0JykudGV4dENvbnRlbnQ7CisgICAgfSwgeworCisgICAgY3JlYXRl
UGFydGljbGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgQm91bmNpbmdU
ZXh0Qm94KHRoaXMsIHRoaXMuX3NhbXBsZVRleHQpOworICAgIH0sCisKKyAgICBwYXJ0aWNsZVdp
bGxCZVJlbW92ZWQ6IGZ1bmN0aW9uKHBhcnRpY2xlKQorICAgIHsKKyAgICAgICAgcGFydGljbGUu
ZWxlbWVudC5yZW1vdmUoKTsKKyAgICB9Cit9KTsKKworQm91bmNpbmdUZXh0Qm94c0JlbmNobWFy
ayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyaywK
KyAgICBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKQorICAgIHsKKyAgICAgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlz
LCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9
LCB7CisKKyAgICBjcmVhdGVTdGFnZTogZnVuY3Rpb24oZWxlbWVudCkKKyAgICB7CisgICAgICAg
IHJldHVybiBuZXcgQm91bmNpbmdUZXh0Qm94U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7
CisgICAgfQorfSk7CiAKIHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24o
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKIHsKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3RleHQtYm94ZXMu
aHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3RleHQtYm94ZXMu
aHRtbAppbmRleCA3ODgxY2YzLi45ZTkxYzJiIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC90ZXh0LWJveGVzLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvdGV4dC1ib3hlcy5odG1sCkBAIC0zNyw3ICszNyw2
IEBACiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAK
ICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCiAgICAgPHNjcmlw
dCBzcmM9Ii4uL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVz
LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzdkYjY0ZC4uMWI5ZmE2ZiAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9D
aGFuZ2VMb2cKQEAgLTUsNiArNSw0NyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgogCisgICAgICAgIFJlZmFjdG9yIHRoZSBzdWJjbGFzcyBwYXR0ZXJuLiBJbnRyb2R1
Y2UgVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKCkuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Jl
c291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qczoKKyAgICAgICAgKiBBbmlt
b21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzOgorICAgICAgICAod2luZG93LlV0aWxpdGll
cy5jcmVhdGVTdWJjbGFzcyk6IFRha2VzIHRoZSBzdXBlciBjbGFzcywgYSBmdW5jdGlvbiByZXBy
ZXNlbnRpbmcKKyAgICAgICAgdGhlIGNsYXNzJ3MgY29uc3RydWN0b3IsIGFuZCBhZGRpdGlvbmFs
IG1ldGhvZHMgdG8gYXR0YWNoIHRvIHRoZSBuZXcgY2xhc3MncworICAgICAgICBwcm90b3R5cGUg
b2JqZWN0LgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC90ZXh0LWJveGVzLmh0bWw6
IFJlbW92ZSB1bm5lZWRlZCByZWZlcmVuY2UgdG8gdXRpbGl0aWVzLmpzLgorCisgICAgICAgIFJl
ZmFjdG9yIHRlc3RzLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzOgorICAgICAgICAqIEFuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMt
cGFydGljbGVzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzOgorICAgICAgICAqIEFuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3MtaW1h
Z2VzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanM6Cisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLXN2Zy1pbWFnZXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanM6CisgICAgICAg
ICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5n
LXN2Zy1zaGFwZXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNv
dXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2V4
YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtc3RhcnMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90
ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy1zdGFnZS5qczoKKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpzOgorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5qczoK
KyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qczoKKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy1wYXRocy5q
czoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNh
bnZhcy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90
ZW1wbGF0ZS1jYW52YXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9y
ZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVt
cGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLXN2Zy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanM6IFJlb3JkZXIgc29tZSBvZiB0aGUg
bWV0aG9kcworICAgICAgICBhbmQgcHJvcGVydGllcyBzaW5jZSB0aGV5IHJlbHkgb24gZWFjaCBv
dGhlci4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL3RleHQtYm94
ZXMuanM6CisKKzIwMTUtMTItMjYgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAg
ICAgIFNpbXBsaWZ5IHRoZSB0ZXN0IGhhcm5lc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjU2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCiAgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVy
L2FuaW1vbWV0ZXIuanM6IEFycmFuZ2UgY2FsbHMKICAgICAgICAgaW4gdGhlIG9yZGVyIHRoZXkg
YXJlIGV2b2tlZC4KICAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIv
YmVuY2htYXJrLXJ1bm5lci5qczoKLS0gCjIuNS40IChBcHBsZSBHaXQtNjEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267956</attachid>
            <date>2015-12-28 10:07:08 -0800</date>
            <delta_ts>2015-12-28 10:07:25 -0800</delta_ts>
            <desc>3. Make the class relationships more easily understandable</desc>
            <filename>0003-Simplify-the-test-harness.patch</filename>
            <type>text/plain</type>
            <size>92566</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSAwN2NlMmQ4NTEwZjlkM2UxNDRhNzUwNjhmMzkxYjFjMzIwYjY0OWQwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDI3IERlYyAyMDE1IDAyOjQ1OjMxIC0wNzAwClN1YmplY3Q6IFtQQVRDSCAwMy8xM10gU2ltcGxp
ZnkgdGhlIHRlc3QgaGFybmVzcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjU2MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgoqIEFuaW1vbWV0ZXIvcmVz
b3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpzOgooQmVuY2htYXJrUnVubmVy
LnByb3RvdHlwZS5fcnVuQmVuY2htYXJrQW5kUmVjb3JkUmVzdWx0cyk6IEVhY2ggdGVzdCBpcyBy
dW4gYXMgYSBiZW5jaG1hcmsuClJlbW92ZSB0aGUgY2FsbCB0byBydW5CZW5jaG1hcmsgYnkgbWVy
Z2luZyB0aGUgb3B0aW9ucyBoZXJlLCBhbmQgY2FsbGluZyBiZW5jaG1hcmsucnVuKCkKZGlyZWN0
bHkuCgpNYWtlIHRoZSBjbGFzcyByZWxhdGlvbnNoaXBzIG1vcmUgZWFzaWx5IHVuZGVyc3RhbmRh
YmxlLiBUaGUgYmVuY2htYXJrIG93bnMgdGhlIHN0YWdlLAphbmltYXRvciwgYW5kIG9wdGlvbnMu
IE1ha2UgdGhlIHN0YWdlIGFuZCBhbmltYXRvciBubyBsb25nZXIgaGF2ZSB0aGVpciBvd24gcmVm
ZXJlbmNlcyB0bwp0aGUgb3B0aW9ucy4gTWFrZSBTdGFnZSBhIGZpcnN0LWNsYXNzIGNpdGl6ZW4g
YnkgcHJvbW90aW5nIGl0IHRvIG1haW4uanMuIExhdGVyIHBhdGNoZXMKd2lsbCB0cnkgdG8gZ2V0
IHJpZCBvZiBzdGFnZS5qcyBhbHRvZ2V0aGVyLgoqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2Vz
L21haW4uanM6CihTdGFnZSk6IE1vdmVkIGZyb20gc3RhZ2UuanMuCihBbmltYXRvcik6IERvbid0
IHBhc3MgaW4gYmVuY2htYXJrIGFuZCBvcHRpb25zIGluIGl0cyBjb25zdHJ1Y3Rvci4gSXQgd2ls
bCBnZXQgaW5pdGlhbGl6ZWQKYnkgYmVuY2htYXJrLXJlbGF0ZWQgcGFyYW1ldGVycyBpbiBpbml0
aWFsaXplKCkuCihBbmltYXRvci5wcm90b3R5cGUuaW5pdGlhbGl6ZSk6IEFkZCBhIGJhY2stcmVm
ZXJlbmNlIHRvIGJlbmNobWFyayBhbmQgY2FjaGUgYW4gb3B0aW9uLgooQW5pbWF0b3IucHJvdG90
eXBlLmdldCBiZW5jaG1hcmspOgooQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBSZWZhY3Rv
ciB0byB1c2UgdGhlIGNhY2hlZCBvcHRpb24sIHRvIHJlbW92ZSBpdHMgZGVwZW5kZW5jeSBvbgp0
aGUgb3B0aW9ucyBkaWN0aW9uYXJ5LgooQmVuY2htYXJrKTogUmVxdWlyZSBhbGwgYmVuY2htYXJr
cyB0byBoYXZlIGEgc3RhZ2UgYW5kIGFuaW1hdG9yLiBUaGUgaW5zdGFuY2Ugd2lsbCBpbml0aWFs
aXplCnRoZW0uCihCZW5jaG1hcmsucHJvdG90eXBlLmdldCBvcHRpb25zKToKKEJlbmNobWFyay5w
cm90b3R5cGUuZ2V0IHN0YWdlKTogQmVuY2htYXJrU3RhdGVzLnN0YWdlcyB3aWxsIG5lZWQgdG8g
YmUgcmVuYW1lZCB0byBhdm9pZCBjb25mdXNpb24uCihCZW5jaG1hcmsucHJvdG90eXBlLmdldCBh
bmltYXRvcik6CihCZW5jaG1hcmsucHJvdG90eXBlLnN0YXJ0KToKKEJlbmNobWFyay5wcm90b3R5
cGUudXBkYXRlKTogQXNrIHRoZSBzdGFnZSBkaXJlY3RseSB0byB0dW5lIG9yIGNsZWFyIGluc3Rl
YWQgb2YgYWRkaW5nIGFub3RoZXIKbGV2ZWwgb2YgaW5kaXJlY3Rpb24uCih3aW5kb3cucnVuQmVu
Y2htYXJrKTogRGVsZXRlZC4gUmVtb3ZlIHRoZSBuZWVkIGZvciBhIGJlbmNobWFya0NsaWVudC4g
QWxzbyByZW1vdmUgdGhlIHN0YW5kYWxvbmUKcGF0aCwgc2luY2UgdGVzdHMgY2FuIGJlIGluZGl2
aWR1YWxseSBzZWxlY3RlZCwgYW5kIHJlbW92ZSB0aGUgbmVlZCBmb3IgcnVuQmVuY2htYXJrIHNp
bmNlIHRoYXQgaXMKaGFuZGxlZCBpbiBCZW5jaG1hcmtSdW5uZXIuX3J1bkJlbmNobWFya0FuZFJl
Y29yZFJlc3VsdHMuCiogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanM6CihTdGFn
ZSk6IERlbGV0ZWQuIE1vdmVkIHRvIG1haW4uanMuCihTdGFnZUJlbmNobWFyayk6IFdoYXQncyBs
ZWZ0IGlzIHVwZGF0aW5nIHRoZSBwcm9ncmVzcyBiYXI7IHRvIGJlIHJlbW92ZWQuCihTdGFnZUFu
aW1hdG9yKTogV2hhdCdzIGxlZnQgY2FuIGJlIGZvbGRlZCBpbiBBbmltYXRvci4KClJlZmFjdG9y
IG1hc3RlciBzdWl0ZS4KKiBBbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFz
LXN0YWdlLmpzOiBUaGlzIG5vdyBvbmx5IGhhcyBTaW1wbGVDYW52YXNTdGFnZS4KKGFuaW1hdGUp
OiBQdXNoIHRoZSBjbGVhclJlY3QoKSBpbnRvIGVhY2ggc3RhZ2UuCihjb21wbGV4aXR5KToKKFN0
YWdlQmVuY2htYXJrLmNhbGwuY3JlYXRlQW5pbWF0b3IpOiBEZWxldGVkLgooU3RhZ2VCZW5jaG1h
cmsuY2FsbCk6IERlbGV0ZWQuCiogQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2Nh
bnZhcy10ZXN0cy5qczogU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlIGlzIG5vIGxvbmdlciBu
ZWVkZWQuCihDYW52YXNMaW5lU2VnbWVudC5wcm90b3R5cGUuZHJhdyk6CihDYW52YXNBcmMpOgoo
Q2FudmFzTGluZVBvaW50KTogUmVtb3ZlIHRoZSBkcmF3IGNhbGwgYmVjYXVzZSBkZXBlbmRpbmcg
b24gaXRzIGluZGV4IGl0IGVpdGhlciBuZWVkcyB0byBiZSBtb3ZlVG8Kb3IgbGluZVRvLCBhbmQg
aXQgaXMgb3RoZXJ3aXNlIGEgdmVyeSBzbWFsbCBkcmF3IG9wZXJhdGlvbiB0aGF0IGRvZXNuJ3Qg
bmVlZCB0aGUgb3ZlcmhlYWQgb2YgdGhlCmZ1bmN0aW9uIGNhbGwuIERvIGFsbCBvZiB0aGUgZHJh
d2luZyB0aHJvdWdoIHRoZSBzdGFnZS4KLS0tCiAuLi4vcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9i
ZW5jaG1hcmstcnVubmVyLmpzICAgICB8ICAxMSArLQogLi4uL3Rlc3RzL21hc3Rlci9yZXNvdXJj
ZXMvY2FudmFzLXN0YWdlLmpzICAgICAgICAgfCAgNjAgKystCiAuLi4vdGVzdHMvbWFzdGVyL3Jl
c291cmNlcy9jYW52YXMtdGVzdHMuanMgICAgICAgICB8IDE1NCArKysrLS0tLQogLi4uL0FuaW1v
bWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMgICAgICAgICAgICAgfCAyMTEgKysrKysrKyst
LS0KIC4uLi9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcyAgICAgICAgICAgIHwg
MTI0ICstLS0tLS0KIFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgNDA1ICsrKysrKysrKysrKy0tLS0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCA0OTkg
aW5zZXJ0aW9ucygrKSwgNDY2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9i
ZW5jaG1hcmstcnVubmVyLmpzCmluZGV4IDA0N2JjZGQuLjQyZDkyZDIgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2JlbmNobWFy
ay1ydW5uZXIuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9k
ZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qcwpAQCAtNzcsNyArNzcsNyBAQCBCZW5jaG1h
cmtSdW5uZXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIF9ydW5UZXN0
QW5kUmVjb3JkUmVzdWx0czogZnVuY3Rpb24oc3RhdGUpCisgICAgX3J1bkJlbmNobWFya0FuZFJl
Y29yZFJlc3VsdHM6IGZ1bmN0aW9uKHN0YXRlKQogICAgIHsKICAgICAgICAgdmFyIHByb21pc2Ug
PSBuZXcgU2ltcGxlUHJvbWlzZTsKICAgICAgICAgdmFyIHN1aXRlID0gc3RhdGUuY3VycmVudFN1
aXRlKCk7CkBAIC04OSw3ICs4OSwxMiBAQCBCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlID0gewog
ICAgICAgICB2YXIgY29udGVudFdpbmRvdyA9IHRoaXMuX2ZyYW1lLmNvbnRlbnRXaW5kb3c7CiAg
ICAgICAgIHZhciBzZWxmID0gdGhpczsKIAotICAgICAgICBjb250ZW50V2luZG93LnJ1bkJlbmNo
bWFyayhzdWl0ZSwgdGVzdCwgdGhpcy5fY2xpZW50Lm9wdGlvbnMsIHRoaXMuX2NsaWVudC5wcm9n
cmVzc0JhcikudGhlbihmdW5jdGlvbihzYW1wbGVyKSB7CisgICAgICAgIHZhciBvcHRpb25zID0g
eyBjb21wbGV4aXR5OiB0ZXN0LmNvbXBsZXhpdHkgfTsKKyAgICAgICAgVXRpbGl0aWVzLmV4dGVu
ZE9iamVjdChvcHRpb25zLCB0aGlzLl9jbGllbnQub3B0aW9ucyk7CisgICAgICAgIFV0aWxpdGll
cy5leHRlbmRPYmplY3Qob3B0aW9ucywgY29udGVudFdpbmRvdy5VdGlsaXRpZXMucGFyc2VQYXJh
bWV0ZXJzKCkpOworCisgICAgICAgIHZhciBiZW5jaG1hcmsgPSBuZXcgY29udGVudFdpbmRvdy5i
ZW5jaG1hcmtDbGFzcyhvcHRpb25zLCB0aGlzLl9jbGllbnQucHJvZ3Jlc3NCYXIpOworICAgICAg
ICBiZW5jaG1hcmsucnVuKCkudGhlbihmdW5jdGlvbihzYW1wbGVyKSB7CiAgICAgICAgICAgICB2
YXIgc2FtcGxlcnMgPSBzZWxmLl9zdWl0ZXNTYW1wbGVyc1tzdWl0ZS5uYW1lXSB8fCB7fTsKICAg
ICAgICAgICAgIHNhbXBsZXJzW3Rlc3QubmFtZV0gPSBzYW1wbGVyLnRvSlNPTih0cnVlLCB0cnVl
KTsKICAgICAgICAgICAgIHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1aXRlLm5hbWVdID0gc2FtcGxl
cnM7CkBAIC0xMjYsNyArMTMxLDcgQEAgQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybiBzdGF0ZS5wcmVwYXJlQ3VycmVudFRlc3QodGhpcywg
dGhpcy5fZnJhbWUpLnRoZW4oZnVuY3Rpb24ocHJlcGFyZVJldHVyblZhbHVlKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gdGhpcy5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMoc3RhdGUpOworICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX3J1bkJlbmNobWFya0FuZFJlY29yZFJlc3VsdHMoc3RhdGUpOwog
ICAgICAgICB9LmJpbmQodGhpcykpOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy1zdGFnZS5qcyBi
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZh
cy1zdGFnZS5qcwppbmRleCBhMzQ4OWY0Li41Yzg5MGRjIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtc3RhZ2UuanMK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMv
Y2FudmFzLXN0YWdlLmpzCkBAIC0xLDY0ICsxLDQ4IEBACiBTaW1wbGVDYW52YXNTdGFnZSA9IFV0
aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTdGFnZSwKLSAgICBmdW5jdGlvbihlbGVtZW50LCBvcHRp
b25zLCBjYW52YXNPYmplY3QpCisgICAgZnVuY3Rpb24oY2FudmFzT2JqZWN0KQogICAgIHsKLSAg
ICAgICAgU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKLSAgICAgICAgdGhpcy5v
cHRpb25zID0gb3B0aW9uczsKLSAgICAgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50Lmdl
dENvbnRleHQoIjJkIik7Ci0gICAgICAgIHRoaXMuY2FudmFzT2JqZWN0ID0gY2FudmFzT2JqZWN0
OwotICAgICAgICB0aGlzLl9vYmplY3RzID0gW107CisgICAgICAgIFN0YWdlLmNhbGwodGhpcyk7
CisgICAgICAgIHRoaXMuX2NhbnZhc09iamVjdCA9IGNhbnZhc09iamVjdDsKKyAgICAgICAgdGhp
cy5vYmplY3RzID0gW107CiAgICAgfSwgewogCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYmVu
Y2htYXJrKQorICAgIHsKKyAgICAgICAgU3RhZ2UucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0
aGlzLCBiZW5jaG1hcmspOworICAgICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0
Q29udGV4dCgiMmQiKTsKKyAgICB9LAorCiAgICAgdHVuZTogZnVuY3Rpb24oY291bnQpCiAgICAg
ewogICAgICAgICBpZiAoY291bnQgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9vYmpl
Y3RzLmxlbmd0aDsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLm9iamVjdHMubGVuZ3RoOwogCiAg
ICAgICAgIGlmIChjb3VudCA+IDApIHsKICAgICAgICAgICAgIC8vIEZvciBwYXRoLWJhc2VkIHRl
c3RzLCB1c2UgdGhlIG9iamVjdCBsZW5ndGggYXMgYSBtYXhpbXVtIGNvb3JkaW5hdGUgdmFsdWUK
ICAgICAgICAgICAgIC8vIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNlZSB3aGF0IHRoZSB0ZXN0IGlz
IGRvaW5nCi0gICAgICAgICAgICB2YXIgY29vcmRpbmF0ZU1heGltdW0gPSBNYXRoLm1heCh0aGlz
Ll9vYmplY3RzLmxlbmd0aCwgMjAwKTsKKyAgICAgICAgICAgIHZhciBjb29yZGluYXRlTWF4aW11
bSA9IE1hdGgubWF4KHRoaXMub2JqZWN0cy5sZW5ndGgsIDIwMCk7CiAgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9vYmpl
Y3RzLnB1c2gobmV3IHRoaXMuY2FudmFzT2JqZWN0KHRoaXMsIGNvb3JkaW5hdGVNYXhpbXVtKSk7
CisgICAgICAgICAgICAgICAgdGhpcy5vYmplY3RzLnB1c2gobmV3IHRoaXMuX2NhbnZhc09iamVj
dCh0aGlzLCBjb29yZGluYXRlTWF4aW11bSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX29iamVjdHMubGVuZ3RoOworICAgICAgICAgICAgcmV0dXJuIHRoaXMub2Jq
ZWN0cy5sZW5ndGg7CiAgICAgICAgIH0KIAotICAgICAgICBjb3VudCA9IE1hdGgubWluKC1jb3Vu
dCwgdGhpcy5fb2JqZWN0cy5sZW5ndGgpOwotICAgICAgICB0aGlzLl9vYmplY3RzLnNwbGljZSgw
LCBjb3VudCk7Ci0gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKKyAgICAgICAg
Y291bnQgPSBNYXRoLm1pbigtY291bnQsIHRoaXMub2JqZWN0cy5sZW5ndGgpOworICAgICAgICB0
aGlzLm9iamVjdHMuc3BsaWNlKDAsIGNvdW50KTsKKyAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0
cy5sZW5ndGg7CiAgICAgfSwKIAogICAgIGFuaW1hdGU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0OwotICAgICAgICB0aGlzLl9vYmplY3RzLmZv
ckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7CisgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAs
IHRoaXMuc2l6ZS54LCB0aGlzLnNpemUueSk7CisgICAgICAgIHRoaXMub2JqZWN0cy5mb3JFYWNo
KGZ1bmN0aW9uKG9iamVjdCkgewogICAgICAgICAgICAgb2JqZWN0LmRyYXcoY29udGV4dCk7CiAg
ICAgICAgIH0pOwotICAgIH0KLX0pOwotCi1TaW1wbGVDYW52YXNBbmltYXRvciA9IFV0aWxpdGll
cy5jcmVhdGVTdWJjbGFzcyhTdGFnZUFuaW1hdG9yLAotICAgIGZ1bmN0aW9uKGJlbmNobWFyaywg
b3B0aW9ucykKLSAgICB7Ci0gICAgICAgIFN0YWdlQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1h
cmssIG9wdGlvbnMpOwotICAgICAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5j
b250ZXh0OwotICAgIH0sIHsKLQotICAgIGFuaW1hdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuX2NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uu
c2l6ZS54LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueSk7Ci0gICAgICAgIHJldHVybiBT
dGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGhpcy5fb3B0aW9ucyk7
Ci0gICAgfQotfSk7Ci0KLVNpbXBsZUNhbnZhc0JlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVT
dWJjbGFzcyhTdGFnZUJlbmNobWFyaywKLSAgICBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcHJvZ3Jlc3NCYXIpCi0gICAgewotICAgICAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMs
IHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci0gICAgfSwgeworICAgIH0sCiAK
LSAgICBjcmVhdGVBbmltYXRvcjogZnVuY3Rpb24oKQorICAgIGNvbXBsZXhpdHk6IGZ1bmN0aW9u
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzQW5pbWF0b3IodGhpcywg
dGhpcy5fb3B0aW9ucyk7CisgICAgICAgIHJldHVybiB0aGlzLm9iamVjdHMubGVuZ3RoOwogICAg
IH0KIH0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21h
c3Rlci9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpzCmluZGV4IDgzMzhmYTYu
LmUzNzU2ZjUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9t
YXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMKQEAgLTIyLDcg
KzIyLDcgQEAgQ2FudmFzTGluZVNlZ21lbnQucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjb250
ZXh0KQogICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSB0aGlzLl9jb2xvcjsKICAgICBjb250ZXh0
LmxpbmVXaWR0aCA9IHRoaXMuX2xpbmVXaWR0aDsKIAotICAgIHRoaXMuX2xlbmd0aCs9TWF0aC5z
aW4oRGF0ZS5ub3coKS8xMDAqdGhpcy5fb21lZ2EpOworICAgIHRoaXMuX2xlbmd0aCArPSBNYXRo
LnNpbihEYXRlLm5vdygpLzEwMCp0aGlzLl9vbWVnYSk7CiAKICAgICBjb250ZXh0LmJlZ2luUGF0
aCgpOwogICAgIGNvbnRleHQubW92ZVRvKHRoaXMuX3N0YXJ0WCwgdGhpcy5fc3RhcnRZKTsKQEAg
LTQxLDcgKzQxLDcgQEAgZnVuY3Rpb24gQ2FudmFzQXJjKHN0YWdlKQogCiAgICAgdGhpcy5fcG9p
bnQgPSBuZXcgUG9pbnQoZGlzdGFuY2VYICogKHJhbmRYICsgKHJhbmRZICUgMikgLyAyKSwgZGlz
dGFuY2VZICogKHJhbmRZICsgLjUpKTsKIAotICAgIHRoaXMuX3JhZGl1cyA9IDIwICsgTWF0aC5w
b3coTWF0aC5yYW5kb20oKSwgNSkgKiAoTWF0aC5taW4oZGlzdGFuY2VYLCBkaXN0YW5jZVkpIC8g
MS42KTsKKyAgICB0aGlzLl9yYWRpdXMgPSAyMCArIE1hdGgucG93KE1hdGgucmFuZG9tKCksIDUp
ICogKE1hdGgubWluKGRpc3RhbmNlWCwgZGlzdGFuY2VZKSAvIDEuOCk7CiAgICAgdGhpcy5fc3Rh
cnRBbmdsZSA9IHN0YWdlLnJhbmRvbUFuZ2xlKCk7CiAgICAgdGhpcy5fZW5kQW5nbGUgPSBzdGFn
ZS5yYW5kb21BbmdsZSgpOwogICAgIHRoaXMuX29tZWdhID0gKE1hdGgucmFuZG9tKCkgLSAwLjUp
ICogMC4zOwpAQCAtNzQsNiArNzQsOCBAQCBDYW52YXNBcmMucHJvdG90eXBlLmRyYXcgPSBmdW5j
dGlvbihjb250ZXh0KQogICAgIH0KIH07CiAKKy8vIENhbnZhc0xpbmVQb2ludCBjb250YWlucyBu
byBkcmF3KCkgbWV0aG9kIHNpbmNlIGl0IGlzIGVpdGhlciBtb3ZlVG8gb3IKKy8vIGxpbmVUbyBk
ZXBlbmRpbmcgb24gaXRzIGluZGV4LgogZnVuY3Rpb24gQ2FudmFzTGluZVBvaW50KHN0YWdlLCBj
b29yZGluYXRlTWF4aW11bSkKIHsKICAgICB2YXIgWF9MT09QUyA9IDQwOwpAQCAtODMsOCArODUs
OCBAQCBmdW5jdGlvbiBDYW52YXNMaW5lUG9pbnQoc3RhZ2UsIGNvb3JkaW5hdGVNYXhpbXVtKQog
ICAgIHZhciBvZmZzZXQgPSBvZmZzZXRzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG9mZnNl
dHMubGVuZ3RoKV07CiAKICAgICB0aGlzLmNvb3JkaW5hdGUgPSBuZXcgUG9pbnQoWF9MT09QUy8y
LCBZX0xPT1BTLzIpOwotICAgIGlmIChzdGFnZS5fb2JqZWN0cy5sZW5ndGgpIHsKLSAgICAgICAg
dmFyIGhlYWQgPSBzdGFnZS5fb2JqZWN0c1tzdGFnZS5fb2JqZWN0cy5sZW5ndGggLSAxXS5jb29y
ZGluYXRlOworICAgIGlmIChzdGFnZS5vYmplY3RzLmxlbmd0aCkgeworICAgICAgICB2YXIgaGVh
ZCA9IHN0YWdlLm9iamVjdHNbc3RhZ2Uub2JqZWN0cy5sZW5ndGggLSAxXS5jb29yZGluYXRlOwog
ICAgICAgICB0aGlzLmNvb3JkaW5hdGUueCA9IGhlYWQueDsKICAgICAgICAgdGhpcy5jb29yZGlu
YXRlLnkgPSBoZWFkLnk7CiAgICAgfQpAQCAtMTAzLDczICsxMDUsMzUgQEAgZnVuY3Rpb24gQ2Fu
dmFzTGluZVBvaW50KHN0YWdlLCBjb29yZGluYXRlTWF4aW11bSkKICAgICB2YXIgeE9mZiA9IC4y
NSAqICh0aGlzLmNvb3JkaW5hdGUueSAlIDIpOwogICAgIHZhciByYW5kWCA9ICh4T2ZmICsgdGhp
cy5jb29yZGluYXRlLngpICogc3RhZ2Uuc2l6ZS54IC8gWF9MT09QUzsKICAgICB2YXIgcmFuZFkg
PSB0aGlzLmNvb3JkaW5hdGUueSAqIHN0YWdlLnNpemUueSAvIFlfTE9PUFM7Ci0gICAgdmFyIGNv
bG9ycyA9IFsiIzEwMTAxMCIsICIjODA4MDgwIiwgIiNjMGMwYzAiLCAiI2UwMTA0MCJdOwotICAg
IHRoaXMuX2NvbG9yID0gY29sb3JzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNvbG9ycy5s
ZW5ndGgpXTsKLQotICAgIHRoaXMuX3dpZHRoID0gTWF0aC5wb3coTWF0aC5yYW5kb20oKSwgNSkg
KiAyMCArIDE7Ci0gICAgdGhpcy5faXNTcGxpdCA9IE1hdGgucmFuZG9tKCkgPiAwLjk7Ci0gICAg
dGhpcy5fcG9pbnQgPSBuZXcgUG9pbnQocmFuZFgsIHJhbmRZKTsKKyAgICB2YXIgY29sb3JzID0g
WyIjMTAxMDEwIiwgIiM4MDgwODAiLCAiI2MwYzBjMCIsICIjMTAxMDEwIiwgIiM4MDgwODAiLCAi
I2MwYzBjMCIsICIjZTAxMDQwIl07CisgICAgdGhpcy5jb2xvciA9IGNvbG9yc1tNYXRoLmZsb29y
KE1hdGgucmFuZG9tKCkgKiBjb2xvcnMubGVuZ3RoKV07CiAKKyAgICB0aGlzLndpZHRoID0gTWF0
aC5wb3coTWF0aC5yYW5kb20oKSwgNSkgKiAyMCArIDE7CisgICAgdGhpcy5pc1NwbGl0ID0gTWF0
aC5yYW5kb20oKSA+IDAuOTsKKyAgICB0aGlzLnBvaW50ID0gbmV3IFBvaW50KHJhbmRYLCByYW5k
WSk7CiB9CiAKLUNhbnZhc0xpbmVQb2ludC5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGNvbnRl
eHQsIHN0YWdlKQotewotICAgIGNvbnRleHQubGluZVRvKHRoaXMuX3BvaW50LngsIHRoaXMuX3Bv
aW50LnkpOwotfTsKLQotCiAvLyA9PT0gU1RBR0VTID09PQogCi1TaW1wbGVDYW52YXNQYXRoU3Ry
b2tlU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU2ltcGxlQ2FudmFzU3RhZ2UsCi0g
ICAgZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9ucywgY2FudmFzT2JqZWN0KQorQ2FudmFzTGluZVNl
Z21lbnRTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTaW1wbGVDYW52YXNTdGFnZSwK
KyAgICBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBTaW1wbGVDYW52YXNTdGFnZS5jYWxsKHRo
aXMsIGVsZW1lbnQsIG9wdGlvbnMsIGNhbnZhc09iamVjdCk7Ci0gICAgICAgIHRoaXMuY29udGV4
dC5saW5lQ2FwID0gb3B0aW9uc1sibGluZUNhcCJdIHx8ICJidXR0IjsKLSAgICAgICAgdGhpcy5j
b250ZXh0LmxpbmVKb2luID0gb3B0aW9uc1sibGluZUpvaW4iXSB8fCAiYmV2ZWwiOworICAgICAg
ICBTaW1wbGVDYW52YXNTdGFnZS5jYWxsKHRoaXMsIENhbnZhc0xpbmVTZWdtZW50KTsKICAgICB9
LCB7CiAKLSAgICBhbmltYXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGNvbnRleHQgPSB0
aGlzLmNvbnRleHQ7Ci0gICAgICAgIHZhciBzdGFnZSA9IHRoaXM7Ci0KLSAgICAgICAgY29udGV4
dC5iZWdpblBhdGgoKTsKLSAgICAgICAgdGhpcy5fb2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uKG9i
amVjdCwgaW5kZXgpIHsKLSAgICAgICAgICAgIGlmIChpbmRleCA9PSAwKSB7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC5saW5lV2lkdGggPSBvYmplY3QuX3dpZHRoOwotICAgICAgICAgICAgICAg
IGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBvYmplY3QuX2NvbG9yOwotICAgICAgICAgICAgICAgIGNv
bnRleHQubW92ZVRvKG9iamVjdC5fcG9pbnQueCwgb2JqZWN0Ll9wb2ludC55KTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9iamVjdC5faXNTcGxpdCkgewotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpOwotCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQubGluZVdpZHRoID0gb2JqZWN0Ll93aWR0aDsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC5zdHJva2VTdHlsZSA9IG9iamVjdC5fY29sb3I7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuYmVnaW5QYXRoKCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgaWYgKE1hdGgucmFuZG9tKCkgPiAwLjk5OSkKLSAgICAgICAgICAgICAgICAgICAgb2JqZWN0
Ll9pc1NwbGl0ID0gIW9iamVjdC5faXNTcGxpdDsKLQotICAgICAgICAgICAgICAgIG9iamVjdC5k
cmF3KGNvbnRleHQpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgICAgY29udGV4
dC5zdHJva2UoKTsKLSAgICB9Ci19KTsKLQotQ2FudmFzTGluZVNlZ21lbnRTdGFnZSA9IFV0aWxp
dGllcy5jcmVhdGVTdWJjbGFzcyhTaW1wbGVDYW52YXNTdGFnZSwKLSAgICBmdW5jdGlvbihlbGVt
ZW50LCBvcHRpb25zKQorICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykKICAgICB7
Ci0gICAgICAgIFNpbXBsZUNhbnZhc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucywg
Q2FudmFzTGluZVNlZ21lbnQpOwotICAgICAgICB0aGlzLmNvbnRleHQubGluZUNhcCA9IG9wdGlv
bnNbImxpbmVDYXAiXSB8fCAiYnV0dCI7CisgICAgICAgIFNpbXBsZUNhbnZhc1N0YWdlLnByb3Rv
dHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAgICAgICAgdGhpcy5jb250
ZXh0LmxpbmVDYXAgPSBiZW5jaG1hcmsub3B0aW9uc1sibGluZUNhcCJdIHx8ICJidXR0IjsKICAg
ICAgICAgdGhpcy5jaXJjbGVSYWRpdXMgPSB0aGlzLnNpemUueCAvIDMgLyAyIC0gMjA7Ci0gICAg
fSwgeworICAgIH0sCiAKICAgICBhbmltYXRlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2
YXIgY29udGV4dCA9IHRoaXMuY29udGV4dDsKICAgICAgICAgdmFyIHN0YWdlID0gdGhpczsKIAor
ICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLnNpemUueCwgdGhpcy5zaXplLnkp
OwogICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDMwOwogICAgICAgICBmb3IodmFyIGkgPSAw
OyBpIDwgMzsgaSsrKSB7CiAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gWyIjZTAx
MDQwIiwgIiMxMGMwMzAiLCAiI2UwNTAxMCJdW2ldOwpAQCAtMTgwLDQ1ICsxNDQsNzcgQEAgQ2Fu
dmFzTGluZVNlZ21lbnRTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTaW1wbGVDYW52
YXNTdGFnZSwKICAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdGhpcy5fb2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uKG9iamVjdCkgeworICAgICAgICB0aGlz
Lm9iamVjdHMuZm9yRWFjaChmdW5jdGlvbihvYmplY3QpIHsKICAgICAgICAgICAgIG9iamVjdC5k
cmF3KGNvbnRleHQpOwogICAgICAgICB9KTsKICAgICB9CiB9KTsKIAotQ2FudmFzTGluZVBhdGhT
dGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3Rh
Z2UsCi0gICAgZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9ucykKK0NhbnZhc0xpbmVQYXRoU3RhZ2Ug
PSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU2ltcGxlQ2FudmFzU3RhZ2UsCisgICAgZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgU2ltcGxlQ2FudmFzU3RhZ2UuY2FsbCh0aGlzLCBDYW52YXNM
aW5lUG9pbnQpOworICAgIH0sIHsKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFy
aykKICAgICB7Ci0gICAgICAgIFNpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZS5jYWxsKHRoaXMs
IGVsZW1lbnQsIG9wdGlvbnMsIENhbnZhc0xpbmVQb2ludCk7Ci0gICAgICAgIHRoaXMuY29udGV4
dC5saW5lSm9pbiA9IG9wdGlvbnNbImxpbmVKb2luIl0gfHwgImJldmVsIjsKLSAgICAgICAgdGhp
cy5jb250ZXh0LmxpbmVDYXAgPSBvcHRpb25zWyJsaW5lQ2FwIl0gfHwgImJ1dHQiOworICAgICAg
ICBTaW1wbGVDYW52YXNTdGFnZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIGJlbmNo
bWFyayk7CisgICAgICAgIHRoaXMuY29udGV4dC5saW5lSm9pbiA9IGJlbmNobWFyay5vcHRpb25z
WyJsaW5lSm9pbiJdIHx8ICJiZXZlbCI7CisgICAgICAgIHRoaXMuY29udGV4dC5saW5lQ2FwID0g
YmVuY2htYXJrLm9wdGlvbnNbImxpbmVDYXAiXSB8fCAiYnV0dCI7CisgICAgfSwKKworICAgIGFu
aW1hdGU6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuY29udGV4dDsK
KyAgICAgICAgdmFyIHN0YWdlID0gdGhpczsKKworICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgw
LCAwLCB0aGlzLnNpemUueCwgdGhpcy5zaXplLnkpOworICAgICAgICBjb250ZXh0LmJlZ2luUGF0
aCgpOworICAgICAgICB0aGlzLm9iamVjdHMuZm9yRWFjaChmdW5jdGlvbihvYmplY3QsIGluZGV4
KSB7CisgICAgICAgICAgICBpZiAoaW5kZXggPT0gMCkgeworICAgICAgICAgICAgICAgIGNvbnRl
eHQubGluZVdpZHRoID0gb2JqZWN0LndpZHRoOworICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ry
b2tlU3R5bGUgPSBvYmplY3QuY29sb3I7CisgICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8o
b2JqZWN0LnBvaW50LngsIG9iamVjdC5wb2ludC55KTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG9iamVjdC5pc1NwbGl0KSB7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuc3Ryb2tlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5saW5lV2lk
dGggPSBvYmplY3Qud2lkdGg7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5
bGUgPSBvYmplY3QuY29sb3I7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRo
KCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8o
b2JqZWN0LnBvaW50LngsIG9iamVjdC5wb2ludC55KTsKKworICAgICAgICAgICAgICAgIGlmIChN
YXRoLnJhbmRvbSgpID4gMC45OTkpCisgICAgICAgICAgICAgICAgICAgIG9iamVjdC5pc1NwbGl0
ID0gIW9iamVjdC5pc1NwbGl0OworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAg
Y29udGV4dC5zdHJva2UoKTsKICAgICB9Ci0pOworfSk7CiAKIC8vID09PSBCRU5DSE1BUksgPT09
CiAKLUNhbnZhc1BhdGhCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU2ltcGxl
Q2FudmFzQmVuY2htYXJrLAotICAgIGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9n
cmVzc0JhcikKLSAgICB7Ci0gICAgICAgIFNpbXBsZUNhbnZhc0JlbmNobWFyay5jYWxsKHRoaXMs
IHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci0gICAgfSwgewotCi0gICAgY3Jl
YXRlU3RhZ2U6IGZ1bmN0aW9uKGVsZW1lbnQpCitDYW52YXNQYXRoQmVuY2htYXJrID0gVXRpbGl0
aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlQmVuY2htYXJrLAorICAgIGZ1bmN0aW9uKG9wdGlvbnMs
IHByb2dyZXNzQmFyKQogICAgIHsKLSAgICAgICAgc3dpdGNoICh0aGlzLl9vcHRpb25zWyJwYXRo
VHlwZSJdKSB7CisgICAgICAgIHZhciBzdGFnZTsKKyAgICAgICAgc3dpdGNoIChvcHRpb25zWyJw
YXRoVHlwZSJdKSB7CiAgICAgICAgIGNhc2UgImxpbmUiOgotICAgICAgICAgICAgcmV0dXJuIG5l
dyBDYW52YXNMaW5lU2VnbWVudFN0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwotICAgICAg
ICBjYXNlICJhcmNzIjoKLSAgICAgICAgICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzU3RhZ2Uo
ZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2FudmFzQXJjKTsKKyAgICAgICAgICAgIHN0YWdlID0g
bmV3IENhbnZhc0xpbmVTZWdtZW50U3RhZ2UoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlICJsaW5lUGF0aCI6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENhbnZhc0xpbmVQYXRo
U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7CisgICAgICAgICAgICBzdGFnZSA9IG5ldyBD
YW52YXNMaW5lUGF0aFN0YWdlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAi
YXJjcyI6CisgICAgICAgICAgICBzdGFnZSA9IG5ldyBTaW1wbGVDYW52YXNTdGFnZShDYW52YXNB
cmMpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBTdGFnZUJlbmNo
bWFyay5jYWxsKHRoaXMsIHN0YWdlLCBuZXcgU3RhZ2VBbmltYXRvcigpLCBvcHRpb25zLCBwcm9n
cmVzc0Jhcik7CiAgICAgfQotfSk7CispOwogCi13aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0
ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKLXsKLSAgICBy
ZXR1cm4gbmV3IENhbnZhc1BhdGhCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dy
ZXNzQmFyKTsKLX0KK3dpbmRvdy5iZW5jaG1hcmtDbGFzcyA9IENhbnZhc1BhdGhCZW5jaG1hcms7
CiAKIH0pKCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzCmluZGV4IDQ5MTNhMmUu
LjQxZTBhMzggMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9y
ZXNvdXJjZXMvbWFpbi5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL21haW4uanMKQEAgLTksNyArOSw3IEBAIEJlbmNobWFya1N0YXRlLnN0YWdlcyA9
IHsKICAgICBXQVJNSU5HOiAwLAogICAgIFNBTVBMSU5HOiAxLAogICAgIEZJTklTSEVEOiAyLAot
ICAgIG1lc3NhZ2VzOiBbIAorICAgIG1lc3NhZ2VzOiBbCiAgICAgICAgIFN0cmluZ3MudGV4dC5y
dW5uaW5nU3RhdGUud2FybWluZywKICAgICAgICAgU3RyaW5ncy50ZXh0LnJ1bm5pbmdTdGF0ZS5z
YW1wbGluZywKICAgICAgICAgU3RyaW5ncy50ZXh0LnJ1bm5pbmdTdGF0ZS5maW5pc2hlZApAQCAt
MjIsNyArMjIsNyBAQCBCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUgPQogICAgIHsKICAgICAgICAg
cmV0dXJuIHN0YWdlICogdGhpcy5fc3RhZ2VJbnRlcnZhbDsKICAgICB9LAotICAgIAorCiAgICAg
X21lc3NhZ2U6IGZ1bmN0aW9uKHN0YWdlLCB0aW1lT2Zmc2V0KQogICAgIHsKICAgICAgICAgaWYg
KHN0YWdlID09IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCkKQEAgLTMyLDE3ICszMiwx
NyBAQCBCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUgPQogICAgICAgICAgICAgKyBNYXRoLmZsb29y
KCh0aW1lT2Zmc2V0IC0gdGhpcy5fdGltZU9mZnNldChzdGFnZSkpIC8gMTAwMCkgKyAiLyIKICAg
ICAgICAgICAgICsgTWF0aC5mbG9vcigodGhpcy5fdGltZU9mZnNldChzdGFnZSArIDEpIC0gdGhp
cy5fdGltZU9mZnNldChzdGFnZSkpIC8gMTAwMCkgKyAiKSI7CiAgICAgfSwKLSAgICAKKwogICAg
IHVwZGF0ZTogZnVuY3Rpb24oY3VycmVudFRpbWVPZmZzZXQpCiAgICAgewogICAgICAgICB0aGlz
Ll9jdXJyZW50VGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OwogICAgIH0sCi0gICAgCisK
ICAgICBzYW1wbGluZ1RpbWVPZmZzZXQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl90aW1lT2Zmc2V0KEJlbmNobWFya1N0YXRlLnN0YWdlcy5TQU1QTElORyk7CiAgICAg
fSwKLSAgICAKKwogICAgIGN1cnJlbnRTdGFnZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
Zm9yICh2YXIgc3RhZ2UgPSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuV0FSTUlORzsgc3RhZ2UgPCBC
ZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQ7ICsrc3RhZ2UpIHsKQEAgLTUxLDI2ICs1MSwx
MTkgQEAgQmVuY2htYXJrU3RhdGUucHJvdG90eXBlID0KICAgICAgICAgfQogICAgICAgICByZXR1
cm4gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEOwogICAgIH0sCi0gICAgCisKICAgICBj
dXJyZW50TWVzc2FnZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX21l
c3NhZ2UodGhpcy5jdXJyZW50U3RhZ2UoKSwgdGhpcy5fY3VycmVudFRpbWVPZmZzZXQpOwogICAg
IH0sCi0gICAgCisKICAgICBjdXJyZW50UHJvZ3Jlc3M6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9jdXJyZW50VGltZU9mZnNldCAvIHRoaXMuX3RpbWVPZmZzZXQoQmVu
Y2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKTsKICAgICB9CiB9CiAKLWZ1bmN0aW9uIEFuaW1h
dG9yKGJlbmNobWFyaywgb3B0aW9ucykKKworZnVuY3Rpb24gU3RhZ2UoKSB7fQorCitTdGFnZS5w
cm90b3R5cGUgPQoreworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykKKyAgICB7
CisgICAgICAgIHRoaXMuX2JlbmNobWFyayA9IGJlbmNobWFyazsKKyAgICAgICAgdGhpcy5fZWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFnZSIpOworICAgICAgICB0aGlzLl9l
bGVtZW50LnNldEF0dHJpYnV0ZSgid2lkdGgiLCBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKTsK
KyAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIGRvY3VtZW50LmJv
ZHkub2Zmc2V0SGVpZ2h0KTsKKyAgICAgICAgdGhpcy5fc2l6ZSA9IFBvaW50LmVsZW1lbnRDbGll
bnRTaXplKHRoaXMuX2VsZW1lbnQpLnN1YnRyYWN0KEluc2V0cy5lbGVtZW50UGFkZGluZyh0aGlz
Ll9lbGVtZW50KS5zaXplKTsKKyAgICB9LAorCisgICAgZ2V0IGVsZW1lbnQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAgfSwKKworICAgIGdldCBzaXplKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zaXplOworICAgIH0sCisKKyAgICBjb21wbGV4aXR5
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9LAorCisgICAgcmFu
ZG9tOiBmdW5jdGlvbihtaW4sIG1heCkKKyAgICB7CisgICAgICAgIHJldHVybiAoTWF0aC5yYW5k
b20oKSAqIChtYXggLSBtaW4pKSArIG1pbjsKKyAgICB9LAorCisgICAgcmFuZG9tQm9vbDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhTWF0aC5yb3VuZCh0aGlzLnJhbmRvbSgw
LCAxKSk7CisgICAgfSwKKworICAgIHJhbmRvbUludDogZnVuY3Rpb24obWluLCBtYXgpCisgICAg
eworICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh0aGlzLnJhbmRvbShtaW4sIG1heCkpOworICAg
IH0sCisKKyAgICByYW5kb21Qb3NpdGlvbjogZnVuY3Rpb24obWF4UG9zaXRpb24pCisgICAgewor
ICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMucmFuZG9tSW50KDAsIG1heFBvc2l0aW9uLngp
LCB0aGlzLnJhbmRvbUludCgwLCBtYXhQb3NpdGlvbi55KSk7CisgICAgfSwKKworICAgIHJhbmRv
bVNxdWFyZVNpemU6IGZ1bmN0aW9uKG1pbiwgbWF4KQorICAgIHsKKyAgICAgICAgdmFyIHNpZGUg
PSB0aGlzLnJhbmRvbShtaW4sIG1heCk7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQoc2lkZSwg
c2lkZSk7CisgICAgfSwKKworICAgIHJhbmRvbVZlbG9jaXR5OiBmdW5jdGlvbihtYXhWZWxvY2l0
eSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnJhbmRvbShtYXhWZWxvY2l0eSAvIDgsIG1h
eFZlbG9jaXR5KTsKKyAgICB9LAorCisgICAgcmFuZG9tQW5nbGU6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLnJhbmRvbSgwLCBNYXRoLlBJICogMik7CisgICAgfSwKKwor
ICAgIHJhbmRvbUNvbG9yOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgbWluID0gMzI7
CisgICAgICAgIHZhciBtYXggPSAyNTYgLSAzMjsKKyAgICAgICAgcmV0dXJuICIjIgorICAgICAg
ICAgICAgKyB0aGlzLnJhbmRvbUludChtaW4sIG1heCkudG9TdHJpbmcoMTYpCisgICAgICAgICAg
ICArIHRoaXMucmFuZG9tSW50KG1pbiwgbWF4KS50b1N0cmluZygxNikKKyAgICAgICAgICAgICsg
dGhpcy5yYW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5nKDE2KTsKKyAgICB9LAorCisgICAgcmFu
ZG9tUm90YXRlcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBSb3RhdGVy
KHRoaXMucmFuZG9tKDEwMDAsIDEwMDAwKSk7CisgICAgfSwKKworICAgIHR1bmU6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHRocm93ICJOb3QgaW1wbGVtZW50ZWQiOworICAgIH0sCisKKyAg
ICBhbmltYXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aHJvdyAiTm90IGltcGxlbWVu
dGVkIjsKKyAgICB9LAorCisgICAgY2xlYXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLnR1bmUoLXRoaXMudHVuZSgwKSk7CisgICAgfQorfTsKKworZnVuY3Rpb24gQW5p
bWF0b3IoKQogewotICAgIHRoaXMuX2JlbmNobWFyayA9IGJlbmNobWFyazsKLSAgICB0aGlzLl9v
cHRpb25zID0gb3B0aW9uczsKLSAgICAKICAgICB0aGlzLl9mcmFtZUNvdW50ID0gMDsKICAgICB0
aGlzLl9kcm9wRnJhbWVDb3VudCA9IDE7Ci0gICAgdGhpcy5fbWVhc3VyZUZyYW1lQ291bnQgPSAz
OyAKKyAgICB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCA9IDM7CiAgICAgdGhpcy5fcmVmZXJlbmNl
VGltZSA9IDA7CiAgICAgdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPSAwOwogICAgIHRoaXMuX2Vz
dGltYXRvciA9IG5ldyBLYWxtYW5Fc3RpbWF0b3IoNjApOwpAQCAtNzgsMTEgKzE3MSwyMiBAQCBm
dW5jdGlvbiBBbmltYXRvcihiZW5jaG1hcmssIG9wdGlvbnMpCiAKIEFuaW1hdG9yLnByb3RvdHlw
ZSA9CiB7CisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYmVuY2htYXJrKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fYmVuY2htYXJrID0gYmVuY2htYXJrOworICAgICAgICB0aGlzLl9lc3RpbWF0ZUZy
YW1lUmF0ZSA9IGJlbmNobWFyay5vcHRpb25zWyJlc3RpbWF0ZWQtZnJhbWUtcmF0ZSJdOworICAg
IH0sCisKKyAgICBnZXQgYmVuY2htYXJrKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9i
ZW5jaG1hcms7CisgICAgfSwKKwogICAgIHRpbWVEZWx0YTogZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC0gdGhpcy5fc3RhcnRUaW1lT2Zm
c2V0OwogICAgIH0sCi0gICAgCisKICAgICBhbmltYXRlOiBmdW5jdGlvbigpCiAgICAgewogICAg
ICAgICB2YXIgY3VycmVudFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKQEAgLTEwOCwyMSArMjEy
LDIxIEBAIEFuaW1hdG9yLnByb3RvdHlwZSA9CiAgICAgICAgIC8vIEdldCB0aGUgYXZlcmFnZSBG
UFMgb2YgX21lYXN1cmVGcmFtZUNvdW50IGZyYW1lcyBvdmVyIG1lYXN1cmVUaW1lRGVsdGEuCiAg
ICAgICAgIHZhciBtZWFzdXJlVGltZURlbHRhID0gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLSB0
aGlzLl9tZWFzdXJlVGltZU9mZnNldDsKICAgICAgICAgdmFyIGN1cnJlbnRGcmFtZVJhdGUgPSBN
YXRoLmZsb29yKDEwMDAgLyAobWVhc3VyZVRpbWVEZWx0YSAvIHRoaXMuX21lYXN1cmVGcmFtZUNv
dW50KSk7Ci0gICAgICAgICAKKwogICAgICAgICAvLyBVc2UgS2FsbWFuIGZpbHRlciB0byBnZXQg
YSBtb3JlIG5vbi1mbHVjdHVhdGluZyBmcmFtZSByYXRlLgotICAgICAgICBpZiAodGhpcy5fb3B0
aW9uc1siZXN0aW1hdGVkLWZyYW1lLXJhdGUiXSkKKyAgICAgICAgaWYgKHRoaXMuX2VzdGltYXRl
RnJhbWVSYXRlKQogICAgICAgICAgICAgY3VycmVudEZyYW1lUmF0ZSA9IHRoaXMuX2VzdGltYXRv
ci5lc3RpbWF0ZShjdXJyZW50RnJhbWVSYXRlKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gQWRq
dXN0IHRoZSB0ZXN0IHRvIHJlYWNoIHRoZSBkZXNpcmVkIEZQUy4KICAgICAgICAgdmFyIHJlc3Vs
dCA9IHRoaXMuX2JlbmNobWFyay51cGRhdGUodGhpcy5fY3VycmVudFRpbWVPZmZzZXQsIHRoaXMu
dGltZURlbHRhKCksIGN1cnJlbnRGcmFtZVJhdGUpOwotICAgICAgICAKKwogICAgICAgICAvLyBT
dGFydCB0aGUgbmV4dCBkcm9wL21lYXN1cmUgY3ljbGUuCiAgICAgICAgIHRoaXMuX2ZyYW1lQ291
bnQgPSAwOwotICAgICAgICAKKwogICAgICAgICAvLyBJZiByZXN1bHQgPT0gMCwgbm8gbW9yZSBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSB3aWxsIGJlIGludm9rZWQuCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfSwKLSAgICAKKwogICAgIGFuaW1hdGVMb29wOiBmdW5jdGlvbih0aW1lc3Rh
bXApCiAgICAgewogICAgICAgICBpZiAodGhpcy5hbmltYXRlKCkpCkBAIC0xMzAsMTIgKzIzNCwx
NyBAQCBBbmltYXRvci5wcm90b3R5cGUgPQogICAgIH0KIH0KIAotZnVuY3Rpb24gQmVuY2htYXJr
KG9wdGlvbnMpCitmdW5jdGlvbiBCZW5jaG1hcmsoc3RhZ2UsIGFuaW1hdG9yLCBvcHRpb25zKQog
ewogICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zOwotICAgIHRoaXMuX3JlY29yZEludGVydmFs
ID0gMjAwOyAgICAKLSAgICB0aGlzLl9pc1NhbXBsaW5nID0gZmFsc2U7CiAKKyAgICB0aGlzLl9z
dGFnZSA9IHN0YWdlOworICAgIHRoaXMuX3N0YWdlLmluaXRpYWxpemUodGhpcyk7CisgICAgdGhp
cy5fYW5pbWF0b3IgPSBhbmltYXRvcjsKKyAgICB0aGlzLl9hbmltYXRvci5pbml0aWFsaXplKHRo
aXMpOworCisgICAgdGhpcy5fcmVjb3JkSW50ZXJ2YWwgPSAyMDA7CisgICAgdGhpcy5faXNTYW1w
bGluZyA9IGZhbHNlOwogICAgIHRoaXMuX2NvbnRyb2xsZXIgPSBuZXcgUElEQ29udHJvbGxlcih0
aGlzLl9vcHRpb25zWyJmcmFtZS1yYXRlIl0pOwogICAgIHRoaXMuX3NhbXBsZXIgPSBuZXcgU2Ft
cGxlcigyKTsKICAgICB0aGlzLl9zdGF0ZSA9IG5ldyBCZW5jaG1hcmtTdGF0ZSh0aGlzLl9vcHRp
b25zWyJ0ZXN0LWludGVydmFsIl0gKiAxMDAwKTsKQEAgLTE0MywyMCArMjUyLDM1IEBAIGZ1bmN0
aW9uIEJlbmNobWFyayhvcHRpb25zKQogCiBCZW5jaG1hcmsucHJvdG90eXBlID0KIHsKKyAgICBn
ZXQgb3B0aW9ucygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9uczsKKyAgICB9
LAorCisgICAgZ2V0IHN0YWdlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zdGFnZTsK
KyAgICB9LAorCisgICAgZ2V0IGFuaW1hdG9yKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9hbmltYXRvcjsKKyAgICB9LAorCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGxvYWQgZXZlbnQg
bGlzdGVuZXIgb3IgZnJvbSB0aGlzLnJ1bigpLgogICAgIHN0YXJ0OiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICB0aGlzLl9hbmltYXRvci5hbmltYXRlTG9vcCgpOwogICAgIH0sCi0gICAgCisK
ICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgYW5pbWF0b3IgdG8gYWRqdXN0IHRoZSBjb21wbGV4aXR5
IG9mIHRoZSB0ZXN0LgogICAgIHVwZGF0ZTogZnVuY3Rpb24oY3VycmVudFRpbWVPZmZzZXQsIHRp
bWVEZWx0YSwgY3VycmVudEZyYW1lUmF0ZSkKICAgICB7CiAgICAgICAgIHRoaXMuX3N0YXRlLnVw
ZGF0ZShjdXJyZW50VGltZU9mZnNldCk7Ci0gICAgICAgIAorCiAgICAgICAgIHZhciBzdGFnZSA9
IHRoaXMuX3N0YXRlLmN1cnJlbnRTdGFnZSgpOwogICAgICAgICBpZiAoc3RhZ2UgPT0gQmVuY2ht
YXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKSB7Ci0gICAgICAgICAgICB0aGlzLmNsZWFyKCk7Cisg
ICAgICAgICAgICB0aGlzLl9zdGFnZS5jbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAKQEAgLTE2OCw4ICsyOTIsOCBAQCBCZW5jaG1hcmsucHJvdG90eXBlID0K
ICAgICAgICAgdmFyIHR1bmVWYWx1ZSA9IDA7CiAgICAgICAgIGlmICh0aGlzLl9vcHRpb25zWyJh
ZGp1c3RtZW50Il0gPT0gImZpeGVkIikgewogICAgICAgICAgICAgaWYgKHRoaXMuX29wdGlvbnNb
ImNvbXBsZXhpdHkiXSkgewotICAgICAgICAgICAgICAgIC8vIHRoaXMudHVuZSgwKSByZXR1cm5z
IHRoZSBjdXJyZW50IGNvbXBsZXhpdHkgb2YgdGhlIHRlc3QuCi0gICAgICAgICAgICAgICAgdHVu
ZVZhbHVlID0gdGhpcy5fb3B0aW9uc1siY29tcGxleGl0eSJdIC0gdGhpcy50dW5lKDApOworICAg
ICAgICAgICAgICAgIC8vIHRoaXMuX3N0YWdlLnR1bmUoMCkgcmV0dXJucyB0aGUgY3VycmVudCBj
b21wbGV4aXR5IG9mIHRoZSB0ZXN0LgorICAgICAgICAgICAgICAgIHR1bmVWYWx1ZSA9IHRoaXMu
X29wdGlvbnNbImNvbXBsZXhpdHkiXSAtIHRoaXMuX3N0YWdlLnR1bmUoMCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoISh0aGlzLl9pc1NhbXBsaW5nICYmIHRo
aXMuX29wdGlvbnNbImFkanVzdG1lbnQiXSA9PSAiZml4ZWQtYWZ0ZXItd2FybXVwIikpIHsKQEAg
LTE3OSwxNSArMzAzLDE1IEBAIEJlbmNobWFyay5wcm90b3R5cGUgPQogICAgICAgICAgICAgdHVu
ZVZhbHVlID0gdHVuZVZhbHVlID4gMCA/IE1hdGguZmxvb3IodHVuZVZhbHVlKSA6IE1hdGguY2Vp
bCh0dW5lVmFsdWUpOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIGN1cnJlbnRDb21wbGV4aXR5
ID0gdGhpcy50dW5lKHR1bmVWYWx1ZSk7CisgICAgICAgIHZhciBjdXJyZW50Q29tcGxleGl0eSA9
IHRoaXMuX3N0YWdlLnR1bmUodHVuZVZhbHVlKTsKICAgICAgICAgdGhpcy5yZWNvcmQoY3VycmVu
dFRpbWVPZmZzZXQsIGN1cnJlbnRDb21wbGV4aXR5LCBjdXJyZW50RnJhbWVSYXRlKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfSwKLSAgICAKKwogICAgIHJlY29yZDogZnVuY3Rpb24oY3Vy
cmVudFRpbWVPZmZzZXQsIGN1cnJlbnRDb21wbGV4aXR5LCBjdXJyZW50RnJhbWVSYXRlKQogICAg
IHsKICAgICAgICAgdGhpcy5fc2FtcGxlci5zYW1wbGUoY3VycmVudFRpbWVPZmZzZXQsIFtjdXJy
ZW50Q29tcGxleGl0eSwgY3VycmVudEZyYW1lUmF0ZV0pOwotICAgICAgICAKKwogICAgICAgICBp
ZiAodHlwZW9mIHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgPT0gInVuZGVmaW5lZCIpCiAgICAgICAg
ICAgICB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWVPZmZzZXQ7CiAKQEAgLTE5
OCw3ICszMjIsNyBAQCBCZW5jaG1hcmsucHJvdG90eXBlID0KICAgICAgICAgdGhpcy5zaG93UmVz
dWx0cyh0aGlzLl9zdGF0ZS5jdXJyZW50UHJvZ3Jlc3MoKSwgdGhpcy5fc3RhdGUuY3VycmVudE1l
c3NhZ2UoKSk7CiAgICAgICAgIHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZU9m
ZnNldDsKICAgICB9LAotICAgIAorCiAgICAgcnVuOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICB0aGlzLnN0YXJ0KCk7CkBAIC0yMTAsMjkgKzMzNCw4IEBAIEJlbmNobWFyay5wcm90b3R5cGUg
PQogICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnJlc29sdmUoc2VsZi5fc2FtcGxlcik7
CiAgICAgICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmVXaGVuRmluaXNoZWQuYmluZChzZWxmKSwg
NTApOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc29sdmVXaGVuRmluaXNoZWQo
KTsKICAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgfQotfQotCi13aW5kb3cuYmVuY2htYXJr
Q2xpZW50ID0ge307Ci0KLS8vIFRoaXMgZXZlbnQgbGlzdGVuZXIgcnVucyB0aGUgdGVzdCBpZiBp
dCBpcyBsb2FkZWQgb3V0c2lkZSB0aGUgYmVuY2htYXJrIHJ1bm5lci4KLXdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKQotewotICAgIGlmICh3aW5kb3cuc2VsZiAhPT0g
d2luZG93LnRvcCkKLSAgICAgICAgcmV0dXJuOwotICAgIHdpbmRvdy5iZW5jaG1hcmsgPSB3aW5k
b3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZShudWxsLCBudWxsLCAzMDAwMCwgNTAsIG51bGwsIG51
bGwpOwotICAgIHdpbmRvdy5iZW5jaG1hcmsuc3RhcnQoKTsKLX0pOwotCi0vLyBUaGlzIGZ1bmN0
aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBzdWl0ZSBjb250cm9sbGVyIHJ1bi1jYWxsYmFjayB3aGVu
IHJ1bm5pbmcgdGhlIGJlbmNobWFyayBydW5uZXIuCi13aW5kb3cucnVuQmVuY2htYXJrID0gZnVu
Y3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQotewotICAgIHZhciBiZW5j
aG1hcmtPcHRpb25zID0geyBjb21wbGV4aXR5OiB0ZXN0LmNvbXBsZXhpdHkgfTsKLSAgICBiZW5j
aG1hcmtPcHRpb25zID0gVXRpbGl0aWVzLm1lcmdlT2JqZWN0cyhiZW5jaG1hcmtPcHRpb25zLCBv
cHRpb25zKTsKLSAgICBiZW5jaG1hcmtPcHRpb25zID0gVXRpbGl0aWVzLm1lcmdlT2JqZWN0cyhi
ZW5jaG1hcmtPcHRpb25zLCBVdGlsaXRpZXMucGFyc2VQYXJhbWV0ZXJzKCkpOwotICAgIHdpbmRv
dy5iZW5jaG1hcmsgPSB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZShzdWl0ZSwgdGVzdCwg
YmVuY2htYXJrT3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotICAgIHJldHVybiB3aW5kb3cuYmVuY2ht
YXJrLnJ1bigpOwotfQorfTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzCmluZGV4IDQ5ODMxNmQuLjg5M2ViMGQgMTAwNjQ0Ci0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5q
cwpAQCAtMzAsMTQyICszMCwzNCBAQCBSb3RhdGVyLnByb3RvdHlwZSA9CiAgICAgewogICAgICAg
ICByZXR1cm4gInJvdGF0ZSgiICsgTWF0aC5mbG9vcih0aGlzLmRlZ3JlZSgpKSArICIsICIgKyBj
ZW50ZXIueCArICIsIiArIGNlbnRlci55ICsgIikiOwogICAgIH0KLX0KLQotZnVuY3Rpb24gU3Rh
Z2UoZWxlbWVudCwgb3B0aW9ucykKLXsKLSAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OwotICAg
IHRoaXMuX3NpemUgPSBQb2ludC5lbGVtZW50Q2xpZW50U2l6ZShlbGVtZW50KS5zdWJ0cmFjdChJ
bnNldHMuZWxlbWVudFBhZGRpbmcoZWxlbWVudCkuc2l6ZSk7Ci19Ci0KLVN0YWdlLnByb3RvdHlw
ZSA9Ci17Ci0gICAgZ2V0IHNpemUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NpemUK
LSAgICB9LAotCi0gICAgcmFuZG9tOiBmdW5jdGlvbihtaW4sIG1heCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiAoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjsKLSAgICB9LAotCi0g
ICAgcmFuZG9tQm9vbDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuICEhTWF0aC5y
b3VuZCh0aGlzLnJhbmRvbSgwLCAxKSk7Ci0gICAgfSwKLQotICAgIHJhbmRvbUludDogZnVuY3Rp
b24obWluLCBtYXgpCi0gICAgewotICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh0aGlzLnJhbmRv
bShtaW4sIG1heCkpOwotICAgIH0sCi0KLSAgICByYW5kb21Qb3NpdGlvbjogZnVuY3Rpb24obWF4
UG9zaXRpb24pCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMucmFuZG9tSW50
KDAsIG1heFBvc2l0aW9uLngpLCB0aGlzLnJhbmRvbUludCgwLCBtYXhQb3NpdGlvbi55KSk7Ci0g
ICAgfSwKLQotICAgIHJhbmRvbVNxdWFyZVNpemU6IGZ1bmN0aW9uKG1pbiwgbWF4KQotICAgIHsK
LSAgICAgICAgdmFyIHNpZGUgPSB0aGlzLnJhbmRvbShtaW4sIG1heCk7Ci0gICAgICAgIHJldHVy
biBuZXcgUG9pbnQoc2lkZSwgc2lkZSk7Ci0gICAgfSwKLQotICAgIHJhbmRvbVZlbG9jaXR5OiBm
dW5jdGlvbihtYXhWZWxvY2l0eSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJhbmRvbSht
YXhWZWxvY2l0eSAvIDgsIG1heFZlbG9jaXR5KTsKLSAgICB9LAotCi0gICAgcmFuZG9tQW5nbGU6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJhbmRvbSgwLCBNYXRoLlBJ
ICogMik7Ci0gICAgfSwKLQotICAgIHJhbmRvbUNvbG9yOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB2YXIgbWluID0gMzI7Ci0gICAgICAgIHZhciBtYXggPSAyNTYgLSAzMjsKLSAgICAgICAg
cmV0dXJuICIjIgotICAgICAgICAgICAgKyB0aGlzLnJhbmRvbUludChtaW4sIG1heCkudG9TdHJp
bmcoMTYpCi0gICAgICAgICAgICArIHRoaXMucmFuZG9tSW50KG1pbiwgbWF4KS50b1N0cmluZygx
NikKLSAgICAgICAgICAgICsgdGhpcy5yYW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5nKDE2KTsK
LSAgICB9LAotCi0gICAgcmFuZG9tUm90YXRlcjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIG5ldyBSb3RhdGVyKHRoaXMucmFuZG9tKDEwMDAsIDEwMDAwKSk7Ci0gICAgfSwKLQot
ICAgIHR1bmU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRocm93ICJOb3QgaW1wbGVtZW50
ZWQiOwotICAgIH0sCi0KLSAgICBhbmltYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0
aHJvdyAiTm90IGltcGxlbWVudGVkIjsKLSAgICB9LAotCi0gICAgY2xlYXI6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnR1bmUoLXRoaXMudHVuZSgwKSk7Ci0gICAgfQot
fQorfTsKIAogU3RhZ2VBbmltYXRvciA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhBbmltYXRv
ciwKLSAgICBmdW5jdGlvbihiZW5jaG1hcmssIG9wdGlvbnMpCisgICAgZnVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmssIG9wdGlvbnMpOworICAg
ICAgICBBbmltYXRvci5jYWxsKHRoaXMpOwogICAgIH0sIHsKIAogICAgIGFuaW1hdGU6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2Fs
bCh0aGlzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdGhpcy5fYmVuY2ht
YXJrLl9zdGFnZS5hbmltYXRlKHRoaXMudGltZURlbHRhKCkpOworICAgICAgICB0aGlzLmJlbmNo
bWFyay5zdGFnZS5hbmltYXRlKHRoaXMudGltZURlbHRhKCkpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiB9KTsKIAogU3RhZ2VCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xh
c3MoQmVuY2htYXJrLAotICAgIGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVz
c0JhcikKKyAgICBmdW5jdGlvbihzdGFnZSwgYW5pbWF0b3IsIG9wdGlvbnMsIHByb2dyZXNzQmFy
KQogICAgIHsKLSAgICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgb3B0aW9ucyk7Ci0KLSAgICAg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhZ2UiKTsKLSAgICAg
ICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0
aCk7Ci0gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBkb2N1bWVudC5ib2R5
Lm9mZnNldEhlaWdodCk7CisgICAgICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIHN0YWdlLCBhbmlt
YXRvciwgb3B0aW9ucyk7CiAKLSAgICAgICAgdGhpcy5fc3RhZ2UgPSB0aGlzLmNyZWF0ZVN0YWdl
KGVsZW1lbnQpOwotICAgICAgICB0aGlzLl9hbmltYXRvciA9IHRoaXMuY3JlYXRlQW5pbWF0b3Io
KTsKLSAgICAgICAgdGhpcy5fc3VpdGUgPSBzdWl0ZTsKLSAgICAgICAgdGhpcy5fdGVzdCA9IHRl
c3Q7CiAgICAgICAgIHRoaXMuX3Byb2dyZXNzQmFyID0gcHJvZ3Jlc3NCYXI7CiAgICAgfSwgewog
Ci0gICAgY3JlYXRlU3RhZ2U6IGZ1bmN0aW9uKGVsZW1lbnQpCi0gICAgewotICAgICAgICByZXR1
cm4gbmV3IFN0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwotICAgIH0sCi0KLSAgICBjcmVh
dGVBbmltYXRvcjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBTdGFnZUFu
aW1hdG9yKHRoaXMsIHRoaXMuX29wdGlvbnMpOwotICAgIH0sCi0KLSAgICB0dW5lOiBmdW5jdGlv
bihjb3VudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zdGFnZS50dW5lKGNvdW50KTsK
LSAgICB9LAotCi0gICAgY2xlYXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl9zdGFnZS5jbGVhcigpOwotICAgIH0sCi0KLSAgICBzaG93UmVzdWx0czogZnVuY3Rpb24o
cHJvZ3Jlc3MsIG1lc3NhZ2UpCisgICAgc2hvd1Jlc3VsdHM6IGZ1bmN0aW9uKHByb2dyZXNzKQog
ICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9wcm9ncmVzc0JhciB8fCAhdGhpcy5fdGVzdCkKKyAg
ICAgICAgaWYgKCF0aGlzLl9wcm9ncmVzc0JhcikKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICB0aGlzLl9wcm9ncmVzc0Jhci5zZXRQb3MocHJvZ3Jlc3MpOwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRl
eCAxYjlmYTZmLi4xZWJjM2YxIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxv
ZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE1
LTEyLTI3ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSB0
aGUgdGVzdCBoYXJuZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTI1NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVu
bmVyLmpzOgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuQmVuY2htYXJr
QW5kUmVjb3JkUmVzdWx0cyk6IEVhY2ggdGVzdCBpcyBydW4gYXMgYSBiZW5jaG1hcmsuCisgICAg
ICAgIFJlbW92ZSB0aGUgY2FsbCB0byBydW5CZW5jaG1hcmsgYnkgbWVyZ2luZyB0aGUgb3B0aW9u
cyBoZXJlLCBhbmQgY2FsbGluZyBiZW5jaG1hcmsucnVuKCkKKyAgICAgICAgZGlyZWN0bHkuCisK
KyAgICAgICAgTWFrZSB0aGUgY2xhc3MgcmVsYXRpb25zaGlwcyBtb3JlIGVhc2lseSB1bmRlcnN0
YW5kYWJsZS4gVGhlIGJlbmNobWFyayBvd25zIHRoZSBzdGFnZSwKKyAgICAgICAgYW5pbWF0b3Is
IGFuZCBvcHRpb25zLiBNYWtlIHRoZSBzdGFnZSBhbmQgYW5pbWF0b3Igbm8gbG9uZ2VyIGhhdmUg
dGhlaXIgb3duIHJlZmVyZW5jZXMgdG8KKyAgICAgICAgdGhlIG9wdGlvbnMuIE1ha2UgU3RhZ2Ug
YSBmaXJzdC1jbGFzcyBjaXRpemVuIGJ5IHByb21vdGluZyBpdCB0byBtYWluLmpzLiBMYXRlciBw
YXRjaGVzCisgICAgICAgIHdpbGwgdHJ5IHRvIGdldCByaWQgb2Ygc3RhZ2UuanMgYWx0b2dldGhl
ci4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzOgorICAgICAg
ICAoU3RhZ2UpOiBNb3ZlZCBmcm9tIHN0YWdlLmpzLgorICAgICAgICAoQW5pbWF0b3IpOiBEb24n
dCBwYXNzIGluIGJlbmNobWFyayBhbmQgb3B0aW9ucyBpbiBpdHMgY29uc3RydWN0b3IuIEl0IHdp
bGwgZ2V0IGluaXRpYWxpemVkCisgICAgICAgIGJ5IGJlbmNobWFyay1yZWxhdGVkIHBhcmFtZXRl
cnMgaW4gaW5pdGlhbGl6ZSgpLgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLmluaXRpYWxp
emUpOiBBZGQgYSBiYWNrLXJlZmVyZW5jZSB0byBiZW5jaG1hcmsgYW5kIGNhY2hlIGFuIG9wdGlv
bi4KKyAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5nZXQgYmVuY2htYXJrKToKKyAgICAgICAg
KEFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlKTogUmVmYWN0b3IgdG8gdXNlIHRoZSBjYWNoZWQg
b3B0aW9uLCB0byByZW1vdmUgaXRzIGRlcGVuZGVuY3kgb24KKyAgICAgICAgdGhlIG9wdGlvbnMg
ZGljdGlvbmFyeS4KKyAgICAgICAgKEJlbmNobWFyayk6IFJlcXVpcmUgYWxsIGJlbmNobWFya3Mg
dG8gaGF2ZSBhIHN0YWdlIGFuZCBhbmltYXRvci4gVGhlIGluc3RhbmNlIHdpbGwgaW5pdGlhbGl6
ZQorICAgICAgICB0aGVtLgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5nZXQgb3B0aW9u
cyk6CisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLmdldCBzdGFnZSk6IEJlbmNobWFya1N0
YXRlcy5zdGFnZXMgd2lsbCBuZWVkIHRvIGJlIHJlbmFtZWQgdG8gYXZvaWQgY29uZnVzaW9uLgor
ICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5nZXQgYW5pbWF0b3IpOgorICAgICAgICAoQmVu
Y2htYXJrLnByb3RvdHlwZS5zdGFydCk6CisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnVw
ZGF0ZSk6IEFzayB0aGUgc3RhZ2UgZGlyZWN0bHkgdG8gdHVuZSBvciBjbGVhciBpbnN0ZWFkIG9m
IGFkZGluZyBhbm90aGVyCisgICAgICAgIGxldmVsIG9mIGluZGlyZWN0aW9uLgorICAgICAgICAo
d2luZG93LnJ1bkJlbmNobWFyayk6IERlbGV0ZWQuIFJlbW92ZSB0aGUgbmVlZCBmb3IgYSBiZW5j
aG1hcmtDbGllbnQuIEFsc28gcmVtb3ZlIHRoZSBzdGFuZGFsb25lCisgICAgICAgIHBhdGgsIHNp
bmNlIHRlc3RzIGNhbiBiZSBpbmRpdmlkdWFsbHkgc2VsZWN0ZWQsIGFuZCByZW1vdmUgdGhlIG5l
ZWQgZm9yIHJ1bkJlbmNobWFyayBzaW5jZSB0aGF0IGlzCisgICAgICAgIGhhbmRsZWQgaW4gQmVu
Y2htYXJrUnVubmVyLl9ydW5CZW5jaG1hcmtBbmRSZWNvcmRSZXN1bHRzLgorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzOgorICAgICAgICAoU3RhZ2UpOiBEZWxl
dGVkLiBNb3ZlZCB0byBtYWluLmpzLgorICAgICAgICAoU3RhZ2VCZW5jaG1hcmspOiBXaGF0J3Mg
bGVmdCBpcyB1cGRhdGluZyB0aGUgcHJvZ3Jlc3MgYmFyOyB0byBiZSByZW1vdmVkLgorICAgICAg
ICAoU3RhZ2VBbmltYXRvcik6IFdoYXQncyBsZWZ0IGNhbiBiZSBmb2xkZWQgaW4gQW5pbWF0b3Iu
CisKKyAgICAgICAgUmVmYWN0b3IgbWFzdGVyIHN1aXRlLgorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtc3RhZ2UuanM6IFRoaXMgbm93IG9ubHkgaGFz
IFNpbXBsZUNhbnZhc1N0YWdlLgorICAgICAgICAoYW5pbWF0ZSk6IFB1c2ggdGhlIGNsZWFyUmVj
dCgpIGludG8gZWFjaCBzdGFnZS4KKyAgICAgICAgKGNvbXBsZXhpdHkpOgorICAgICAgICAoU3Rh
Z2VCZW5jaG1hcmsuY2FsbC5jcmVhdGVBbmltYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChTdGFn
ZUJlbmNobWFyay5jYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL21h
c3Rlci9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpzOiBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3Rh
Z2UgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgKENhbnZhc0xpbmVTZWdtZW50LnByb3Rv
dHlwZS5kcmF3KToKKyAgICAgICAgKENhbnZhc0FyYyk6CisgICAgICAgIChDYW52YXNMaW5lUG9p
bnQpOiBSZW1vdmUgdGhlIGRyYXcgY2FsbCBiZWNhdXNlIGRlcGVuZGluZyBvbiBpdHMgaW5kZXgg
aXQgZWl0aGVyIG5lZWRzIHRvIGJlIG1vdmVUbworICAgICAgICBvciBsaW5lVG8sIGFuZCBpdCBp
cyBvdGhlcndpc2UgYSB2ZXJ5IHNtYWxsIGRyYXcgb3BlcmF0aW9uIHRoYXQgZG9lc24ndCBuZWVk
IHRoZSBvdmVyaGVhZCBvZiB0aGUKKyAgICAgICAgZnVuY3Rpb24gY2FsbC4gRG8gYWxsIG9mIHRo
ZSBkcmF3aW5nIHRocm91Z2ggdGhlIHN0YWdlLgorCiAyMDE1LTEyLTI2ICBKb24gTGVlICA8am9u
bGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1wbGlmeSB0aGUgdGVzdCBoYXJuZXNzCkBAIC03
Nyw3ICsxMzAsNyBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUyNTQ0CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzLgotICAgICAg
ICAKKwogICAgICAgICBBZGQgYSB0ZXN0IHRoYXQgZHJhd3MgbG90cyBvZiBpbnRlcm5hdGlvbmFs
IHRleHQuIFRoaXMgaXMgYSBwYXJ0aWNsZSB0ZXN0LAogICAgICAgICBtb3ZpbmcgdGhlIGJveGVz
IGFyb3VuZCB3aXRoIGFic29sdXRpb24gcG9zaXRpb25pbmcuCiAKQEAgLTQ2MSwxMSArNTE0LDEx
IEBACiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE3
MjQKIAogICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCi0gICAgICAgIAorCiAgICAg
ICAgIEFkZCBhICJib3VuY2luZyBwYXJ0aWNsZXMiIHRlc3QgdGhhdCBtb3ZlcyBjb21wb3NpdGVk
IGxheWVycyBhcm91bmQsIG9wdGlvbmFsbHkgd2l0aCBhIGZpbHRlci4KLSAgICAgICAgCisKICAg
ICAgICAgVGhpcyBpcyBhZGRlZCB1bmRlciBhIG5ldyAiTWlzY2VsbGFuZW91cyIgY2F0ZWdvcnku
Ci0gICAgICAgIAorCiAgICAgICAgIFJlbW92ZSB0aGUgdGVzdCB0ZW1wbGF0ZXMgY2F0ZWdvcnkg
ZnJvbSB0aGUgVUkuCiAKICAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVz
dHMuanM6CkBAIC01MDgsNyArNTYxLDcgQEAKICAgICAgICAgY2xpcGJvYXJkLgogCiAgICAgICAg
ICogQW5pbW9tZXRlci9ydW5uZXIvYW5pbW9tZXRlci5odG1sOiBBZGQgYSBuZXcgYnV0dG9uIHRv
IHNlbGVjdCB0aGUgcmVzdWx0cyB0YWJsZSBvciBKU09OLgotICAgICAgICAKKwogICAgICAgICAq
IEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzOgogICAgICAgICAod2lu
ZG93LnNlY3Rpb25zTWFuYWdlci5fc2VjdGlvbkRhdGFFbGVtZW50KTogU2VsZWN0cyB0aGUgY29u
dGFpbmVyIDxkYXRhPiBlbGVtZW50LgogICAgICAgICAod2luZG93LnNlY3Rpb25zTWFuYWdlci5f
c2VjdGlvbkRhdGFEaXZFbGVtZW50KTogUmVwbGFjZSBhIGxpdGVyYWwgc3RyaW5nIHdpdGggYSBz
dHJpbmcgdGFibGUgZW50cnkuCkBAIC01MjYsOSArNTc5LDkgQEAKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTUyNgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEZyYXNlci4KLSAgICAgICAgCisKICAgICAgICAgSGF2aW5nIHRoZSBncmFwaHMg
ZG8gaW50ZXJwb2xhdGlvbiBpcyBtaXNsZWFkaW5nLCBiZWNhdXNlIHlvdSBjYW4ndCBzZWUgdGhl
IGFjdHVhbCBkYXRhLgotICAgICAgICAKKwogICAgICAgICBBbHNvIHJlbW92ZSAic2hhcGUtcmVu
ZGVyaW5nOiBjcmlzcEVkZ2VzOyIgc28gdGhlIGxpbmVzIGdldCBhbnRpYWxpYXNlZC4KIAogICAg
ICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzczoKQEAgLTU1
NCwxNyArNjA3LDE3IEBACiAgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9u
cy5qczoKICAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX2lzTm9pc3lNZWFzdXJlbWVu
dCk6IEZpeCBhIHBhcmFtZXRlciBuYW1lLgogICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlw
ZS5faXNOb2lzeVRlc3QpOiBTaW5jZSBzY29yZSBpcyBhIG1lbWJlciBvZiB0ZXN0UmVzdWx0cywg
d2UgbmVlZCB0byBsaW1pdCBvdXIgc2VhcmNoIHRvIGZyYW1lIHJhdGUgYW5kIGNvbXBsZXhpdHku
Ci0gICAgICAgIChSZXN1bHRzVGFibGUucHJvdG90eXBlLl9zaG93VGVzdCk6IFBhc3MgdGhlIGNv
cnJlY3QgcGFyYW1ldGVyIHRvIF9pc05vaXN5TWVhc3VyZW1lbnQoKS4gCi0gICAgICAgIAorICAg
ICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5fc2hvd1Rlc3QpOiBQYXNzIHRoZSBjb3JyZWN0
IHBhcmFtZXRlciB0byBfaXNOb2lzeU1lYXN1cmVtZW50KCkuCisKICAgICAgICAgKiBBbmltb21l
dGVyL3Jlc291cmNlcy9zdHJpbmdzLmpzOiBGaXggdGhlIGluZGVudGF0aW9uIGFuZCBuYW1lIGFu
ZCB2YWx1ZSBvZiBhIHN0cmluZy4KIAogICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291
cmNlcy90ZXN0cy5qczogUmVtb3ZlIGFsbCB0aGUgbWFudWFsIGdhaW5zIGFuZCBsaW1pdHMgcGFy
YW1ldGVycyB3aGljaCBoYWQgdG8gYmUgcGFzc2VkIHRvIGV2ZXJ5IHRlc3QuCi0gICAgICAgIAor
CiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qczoKICAgICAgICAg
KEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50U3RhZ2UpOiBGaXggYW4gZW51bSBuYW1l
LgogICAgICAgICAoQmVuY2htYXJrKTogR2V0IHJpZCBvZiBtYW51YWwgZ2FpbiBhbmQgbGltaXRz
LgogICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS51cGRhdGUpOiBTaW1wbGlmeSB0aGUgY2Fs
Y3VsYXRpb24gYnkgaGF2aW5nIGFsbCB0aGUgdGltZXMgaW4gbXMuCi0gICAgICAgIAorCiAgICAg
ICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qczoKICAgICAgICAgKFBJRENv
bnRyb2xsZXIpOiBHZXQgcmlkIG9mIHRoZSBtYW51YWwgZ2FpbiBhbmQgbGltaXRzIGFuZCB0aGUg
bWFnaWMgbnVtYmVycyBmb3IgVGkgYW5kIFRkLgogICAgICAgICAoUElEQ29udHJvbGxlci5wcm90
b3R5cGUuX3lQb3NpdGlvbik6IFRlbGxzIHdoZXRoZXIgdGhlIHRlc3QgY3VycmVudCBvdXRwdXQg
aXMgbW92aW5nIHRvd2FyZHMgdGhlIHNldC1wb2ludCBvciBhd2F5IGZyb20gaXQuCkBAIC01Nzcs
NyArNjMwLDcgQEAKICAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl90dW5lKToKICAg
ICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl9zYXR1cmF0ZSk6CiAgICAgICAgIChQSURD
b250cm9sbGVyLnByb3RvdHlwZS50dW5lKTogTWFuYWdlcyBjYWxjdWxhdGluZyB0aGUgY29udHJv
bGxlciBwYXJhbWV0ZXJzLiBJdCB0aGVuIHJldHVybnMgYSBQSUQgdHVuaW5nIHZhbHVlLgotICAg
ICAgICAoUElEQ29udHJvbGxlci5wcm90b3R5cGUuX3NhdCk6IERlbGV0ZWQuIFdlIG1heSBuZWVk
IHRvIHJldHVybiBpdCBiYWNrIGJ1dCB0aGUgbGltaXRzIGhhdmUgdG8gYmUgY2FsY3VsYXRlZCBh
ZGFwdGl2ZWx5IG5vdCBtYW51YWxseS4gCisgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlw
ZS5fc2F0KTogRGVsZXRlZC4gV2UgbWF5IG5lZWQgdG8gcmV0dXJuIGl0IGJhY2sgYnV0IHRoZSBs
aW1pdHMgaGF2ZSB0byBiZSBjYWxjdWxhdGVkIGFkYXB0aXZlbHkgbm90IG1hbnVhbGx5LgogCiAy
MDE1LTExLTE3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAK
QEAgLTU4NSw3ICs2MzgsNyBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUxMzM0CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgot
ICAgICAgICAKKwogICAgICAgICBNYWtlIHRoZSBncmFwaGljcyBiZW5jaG1hcmsgc3RyaW5nIHRh
YmxlIGJlIGFuIG9iamVjdCBvZiBzdWItb2JqZWN0cy4gRWFjaAogICAgICAgICBzdWItb2JqZWN0
IHJlcHJlc2VudHMgYW4gYXNzb2NpYXRpdmUgYXJyYXksIHRoZSBrZXkgaXMgdGhlIHN0cmluZyBu
YW1lIGFuZAogICAgICAgICB0aGUgdmFsdWUgaXMgdGhlIHN0cmluZyBkYXRhLgpAQCAtNjE4LDcg
KzY3MSw3IEBACiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTEzNjEKIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCi0gICAgICAgIAor
CiAgICAgICAgIFVzZSBmaXhlZCBzaXplIGZvciBzdGFnZSBpZnJhbWUgb2YgdGhlIGdyYXBoaWNz
IGJlbmNobWFyayB0byBkaXNhYmxlCiAgICAgICAgIGZsYXR0ZW5pbmcgdGhlIGlmcmFtZSB3aGls
ZSBhbmltYXRpbmcgdGhlIHBhcnRpY2xlcy4gQWxzbyBlbnN1cmUgdGhlCiAgICAgICAgIGJvdW5j
aW5nIHBhcnRpY2xlcyBkbyBub3QgZ28gb3V0c2lkZSB0aGUgaWZyYW1lJ3MgYm91bmRhcmllcy4K
QEAgLTY2Myw3ICs3MTYsNyBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUxMjgzCiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0g
ICAgICAgIAorCiAgICAgICAgIEdldCByaWQgb2YgdGhlIG9wdGlvbiB0byBydW4gYW5pbWF0aW9u
IHVzaW5nIHNldEludGVydmFsKCkuCiAKICAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291
cmNlcy9tYWluLmpzOgpAQCAtNjc4LDEwICs3MzEsMTAgQEAKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTI4NgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEZyYXNlci4KLSAgICAgICAgCisKICAgICAgICAgV2hlbiBzaG93aW5nIHRoZSByZXN1
bHRzIG9mIGEgdGVzdCBpbiB0aGUgZ3JhcGhpY3MgYmVuY2htYXJrIHRoZSBmb2xsb3dpbmcKICAg
ICAgICAgY3JpdGVyaWEgaXMgZ29pbmcgdG8gYmUgYXBwbGllZDoKLSAgICAgICAgCisKICAgICAg
ICAgMS4gSWYgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBvZiB0aGUgdGVzdCBjb21wbGV4aXR5IG9y
IHRoZSBmcmFtZSByYXRlIGlzCiAgICAgICAgICAgIGVxdWFsIHRvIG9yIG1vcmUgdGhhbiAxMCUs
IHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gYW5kIHRoZSB0ZXN0IG5hbWUKICAgICAgICAgICAgd2ls
bCBiZSBkaXNwbGF5ZWQgaW4gcmVkLgpAQCAtNzY5LDcgKzgyMiw3IEBACiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEyODkKIAogICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIuCi0gICAgICAgIAorCiAgICAgICAgIENhY2hlIHRoZSBzdGFn
ZSBzaXplIHdoZW4gaXQgaXMgY3JlYXRlZCBpbnN0ZWFkIG9mIHJlcXVlc3RpbmcgZXZlcnkgdGlt
ZQogICAgICAgICBhbiBvYmplY3QgaXMgYWRkZWQgdmlhIGNsaWVudFdpZHRoIGFuZCBjbGllbnRI
ZWlnaHQuCiAKQEAgLTc5MywxNCArODQ2LDE0IEBACiAgICAgICAgIEFkZCAiZGVmZXIiIGJhY2sg
d2hlbiBsb2FkaW5nIHJlc291cmNlcy9hbmltb21ldGVyLmpzIHNpbmNlIHRoaXMgc2NyaXB0CiAg
ICAgICAgIGRlcGVuZHMgb24gbWFueSBvdGhlciBzY3JpcHRzIGFuZCB3ZSBuZWVkIHRvIHdhaXQg
dGlsbCB0aGUgcGFnZSBpcyBwYXJzZWQuCiAgICAgICAgIEFsc28gY2hhbmdlIHRoZSBkZWZhdWx0
IHRlc3QgaW50ZXJ2YWwgdG8gYmUgMTAgc2Vjb25kcy4KLSAgICAgICAgCisKICAgICAgICAgKiBB
bmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvZ3JhcGguanM6CiAgICAgICAgIChncmFwaCk6IE1h
a2UgdGhlIHRlc3QgcmVzdWx0cyBjdXJ2ZXMgc21vb3RoZXIuCi0gICAgICAgIAorCiAgICAgICAg
ICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qczoKICAgICAgICAgKEFuaW1hdG9y
KTogSW5pdGlhbGl6ZSB0aGUgS2FsbWFuIGZpbHRlciB3aXRoIDYwIEZQUyB3aGljaCBzaG91bGQg
YmUgdHJ1ZQogICAgICAgICBpZiB0aGUgdGVzdCBwYWdlIGlzIGVtcHR5LgotICAgICAgICAKKwog
ICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOgogICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanM6CiAgICAgICAgIChLYWxtYW5Fc3RpbWF0b3IpOiBG
aXggdGhlIGluaXRpYWwgdmFsdWUgb2YgX3ZlY1hfZXN0LgpAQCAtODExLDcgKzg2NCw3IEBACiAK
IDIwMTUtMTEtMDQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4K
IAotICAgICAgICBSZW1vdmUgImRlZmVyIiBmcm9tIHRoZSBzY3JpcHRzJyByZWZlcmVuY2VzIGlu
IHRoZSBncmFwaGljcyBiZW5jaG1hcmsgaG9tZSBwYWdlIAorICAgICAgICBSZW1vdmUgImRlZmVy
IiBmcm9tIHRoZSBzY3JpcHRzJyByZWZlcmVuY2VzIGluIHRoZSBncmFwaGljcyBiZW5jaG1hcmsg
aG9tZSBwYWdlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTA5MTUKIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCkBAIC04MzYsMTMg
Kzg4OSwxMyBAQAogICAgICAgICBmcmFtZSByYXRlIHdpbGwgYWxzbyBiZSBtZWFzdXJlZC4KIAog
ICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbDogQWRkIGEgbmV3IG9w
dGlvbiBmb3IgdGhlIG5vbi1hZGFwdGl2ZSBtb2RlLgotICAgICAgICAKKwogICAgICAgICAqIEFu
aW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzczoKICAgICAgICAgKHNlY3Rp
b24jaG9tZSBpbnB1dFt0eXBlPSJudW1iZXIiXSk6IERlZmluZSB0aGUgd2lkdGggb2YgYWxsIHRo
ZSBlZGl0IGNvbnRyb2wgaW4gdGhlIDxob21lPiBzZWN0aW9uLgogICAgICAgICAoc2VjdGlvbiNo
b21lID4gc3VpdGVzIGlucHV0W3R5cGU9Im51bWJlciJdKTogVGhlIGVkaXQgY29udHJvbHMgaW4g
dGhlIDxzdWl0ZXM+IGJveCB3aWxsIGJlIHJpZ2h0IGFsaWduZWQgYW5kIGhpZGRlbiBieSBkZWZh
dWx0LgogICAgICAgICAoc2VjdGlvbiNob21lID4gc3VpdGVzIGlucHV0W3R5cGU9Im51bWJlciJd
LnNlbGVjdGVkKTogV2hlbiB0aGUgY2xhc3MgInNlbGVjdGVkIiBpcyBhZGRlZCwgdGhlIGVkaXQg
Y29udHJvbHMgd2lsbCBiZSB2aXNpYmxlLgogICAgICAgICAoc2VjdGlvbiNob21lID4gb3B0aW9u
cyA+IGxhYmVsID4gaW5wdXRbdHlwZT0ibnVtYmVyIl0pOiBEZWxldGVkLgotICAgICAgICAKKwog
ICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzOgogICAg
ICAgICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9u
KTogVXBkYXRlIHRoZSBsb2NhbCBzdG9yYWdlIHdpdGggdGhlIHJlc3VsdHMgb2YgZWFjaCB0ZXN0
LgogICAgICAgICAod2luZG93Lm9wdGlvbnNNYW5hZ2VyLl9hZGFwdGl2ZVRlc3RFbGVtZW50KTog
UmV0dXJucyB0aGUgY2hlY2tib3ggZm9yIHNldHRpbmcgdGhlIGFkYXB0aXZlIHRlc3Qgb3B0aW9u
LgpAQCAtODU2LDggKzkwOSw4IEBACiAgICAgICAgICh3aW5kb3cuc3VpdGVzTWFuYWdlci51cGRh
dGVMb2NhbFN0b3JhZ2VGcm9tSlNPTik6IFNhdmVzIHRoZSBsYXN0IHJ1biByZXN1bHRzIHRvIHRo
ZSBsb2NhbCBzdG9yYWdlLgogICAgICAgICAod2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIuaW5p
dGlhbGl6ZSk6IFNob3dzL0hpZGVzIHRoZSB0ZXN0IGVkaXQgY29udHJvbHMgYmFzZWQgb24gdGhl
IGFkYXB0aXZlIHRlc3Qgb3B0aW9uLgogICAgICAgICAod2luZG93LmJlbmNobWFya0NvbnRyb2xs
ZXIub25DaGFuZ2VBZGFwdGl2ZVRlc3RDaGVja2JveCk6IEFuIG9uY2hhbmdlIGV2ZW50IGhhbmRs
ZXIgZm9yIHRoZSBhZGFwdGl2ZSB0ZXN0IGNoZWNrYm94LgotICAgICAgICAKLSAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzOiAKKworICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanM6CiAgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBl
LnVwZGF0ZSk6IEZpeCB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdCBpZiB0aGUgcnVubmluZyBt
b2RlIGlzIG5vbi1hZGFwdGl2ZSB0ZXN0IGFuZCBkZXNpcmVkIGNvbXBsZXhpdHkgaXMgbm90IHpl
cm8uCiAgICAgICAgICh3aW5kb3cucnVuQmVuY2htYXJrKTogQWRkIHRoZSB0ZXN0IGNvbXBsZXhp
dHkgYXMgYSBuZXcgYmVuY2htYXJrIG9wdGlvbi4KIApAQCAtODY3LDEzICs5MjAsMTMgQEAKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDUzMAogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotICAgICAgICAKKwogICAgICAgICBXZSB3
YW50IHRvIHNldCB0aGUgc2l6ZSBvZiB0aGUgYmVuY2htYXJrIHN0YWdlIGR5bmFtaWNhbGx5IHN1
Y2ggdGhhdCBpdAotICAgICAgICBkZXBlbmRzIG9uIHRoZSBzY3JlZW4gcmVzb2x1dGlvbiBhbmQg
dGhlIGRldmljZSBzY2FsZSBmYWN0b3IuIFRoaXMgcGF0Y2ggCisgICAgICAgIGRlcGVuZHMgb24g
dGhlIHNjcmVlbiByZXNvbHV0aW9uIGFuZCB0aGUgZGV2aWNlIHNjYWxlIGZhY3Rvci4gVGhpcyBw
YXRjaAogICAgICAgICBkb2VzIG1vcmUgdGhhbiB0aGF0IGJlY2F1c2UgdGhlIGhvbWUgcGFnZSBj
c3Mgd2FzIG5vdCBkb25lIHByb3Blcmx5LiBUbwogICAgICAgICB1c2UgdGhlIGZsZXggYm94IGxh
eW91dCwgdGhlIGFuaW1vbWV0ZXIuY3NzIGhhcyB0byBiZSByZXdyaXR0ZW4gYWxtb3N0IGZyb20K
ICAgICAgICAgc2NyYXRjaC4gVGhlIHN1aXRlcyB0cmVlIGhhcyB0byBiZSByZXdyaXR0ZW4gYWxz
byBiZWNhdXNlIGl0IHdhcyBub3QgY29sbGFwc2luZwotICAgICAgICBhbmQgd2l0aCB0aGUgZmxl
eCBib3ggbGF5b3V0IGl0IHdhcyBnb2luZyBvdXRzaWRlIG9mIHRoZSB3aW5kb3cgYXJlYS4gVGhl
IAorICAgICAgICBhbmQgd2l0aCB0aGUgZmxleCBib3ggbGF5b3V0IGl0IHdhcyBnb2luZyBvdXRz
aWRlIG9mIHRoZSB3aW5kb3cgYXJlYS4gVGhlCiAgICAgICAgIG9wdGlvbnMgaGFuZGxpbmcgYW5k
IHRoZSBsb2NhbCBzdG9yYWdlIGhhbmRsaW5nIGhhZCB0byBiZSByZXdyaXR0ZW4gdG8KICAgICAg
ICAgYWxsb3cgbW9yZSBmbGV4aWJpbGl0eSB3aXRoIHRoaXMgcGF0Y2ggYW5kIHRoZSBmdXR1cmUg
cGF0Y2hlcy4gVGhlIGNvZGUKICAgICAgICAgaW4gYW5pbW9tZXRlci5qcyB3YXMgcmVvcmdhbml6
ZWQgaW50byBvYmplY3RzIHRvIGFsbG93IGRpc3RyaWJ1dGluZyB0aGUgY29kZQpAQCAtODg0LDMw
ICs5MzcsMzAgQEAKICAgICAgICAgKEluc2V0cy5wcm90b3R5cGUuZ2V0IHdpZHRoKTogRm9sbG93
IHRoZSBmdW5jdGlvbiBvcGVuaW5nIGJyYWNlIHN0eWxlIGd1aWRlbGluZXMuCiAgICAgICAgIChJ
bnNldHMucHJvdG90eXBlLmdldCBoZWlnaHQpOgogICAgICAgICAoSW5zZXRzLnByb3RvdHlwZS5n
ZXQgc2l6ZSk6IFJldHVybnMgdGhlIHNpemUgb2YgYW4gSW5zZXRzIGFzIGEgUG9pbnQgb2JqZWN0
LgotICAgICAgICAKKwogICAgICAgICAod2luZG93LkRvY3VtZW50RXh0ZW5zaW9uKTogUHJvdmlk
ZXMgZG9jdW1lbnQgaGVscGVyIGZ1bmN0aW9ucy4gSXQgc2hvdWxkIGJlIGFzc2FpbGFibGUgZnJv
bSB0aGUgcnVubmVyIGFuZCB0aGUgdGVzdHMuCi0gICAgICAgICh3aW5kb3cuRG9jdW1lbnRFeHRl
bnNpb24uY3JlYXRlRWxlbWVudCk6IENyZWF0ZXMgYW4gSFRNTEVsZW1lbnQgZ2l2ZW4gaXRzIG5h
bWUsIGF0dHJpYnV0ZXMgYW5kIHBhcmVudEVsZW1lbnQuIAotICAgICAgICAod2luZG93LkRvY3Vt
ZW50RXh0ZW5zaW9uLmNyZWF0ZVN2Z0VsZW1lbnQpOiBDcmVhdGVzIGFuIFNWR0VsZW1lbnQgZ2l2
ZW4gaXRzIG5hbWUsIGF0dHJpYnV0ZXMgYW5kIHBhcmVudEVsZW1lbnQgKG1vdmVkIGZyb20gdXRp
bGl0aWVzLmpzKS4gCisgICAgICAgICh3aW5kb3cuRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxl
bWVudCk6IENyZWF0ZXMgYW4gSFRNTEVsZW1lbnQgZ2l2ZW4gaXRzIG5hbWUsIGF0dHJpYnV0ZXMg
YW5kIHBhcmVudEVsZW1lbnQuCisgICAgICAgICh3aW5kb3cuRG9jdW1lbnRFeHRlbnNpb24uY3Jl
YXRlU3ZnRWxlbWVudCk6IENyZWF0ZXMgYW4gU1ZHRWxlbWVudCBnaXZlbiBpdHMgbmFtZSwgYXR0
cmlidXRlcyBhbmQgcGFyZW50RWxlbWVudCAobW92ZWQgZnJvbSB1dGlsaXRpZXMuanMpLgogICAg
ICAgICAod2luZG93LkRvY3VtZW50RXh0ZW5zaW9uLmluc2VydENzc1J1bGVBZnRlcik6IEluc2Vy
dHMgYSBDU1MgcnVsZSBhZnRlciBhbiBleGl0aW5nIHJ1bGUgZ2l2ZW4gaXRzIHRleHQuCi0gICAg
ICAgIAorCiAgICAgICAgIChSZXN1bHRzVGFibGUucHJvdG90eXBlLl9zaG93SGVhZGVyKTogVXNl
IERvY3VtZW50RXh0ZW5zaW9uIGZ1bmN0aW9ucy4KICAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90
b3R5cGUuX3Nob3dHcmFwaCk6IFVzZSBEb2N1bWVudEV4dGVuc2lvbiBmdW5jdGlvbnMgYW5kIGNy
ZWF0ZSBhIHJlYWwgYnV0dG9uIGZvciAiR3JhcGguLi4iIG9wdGlvbi4KICAgICAgICAgKFJlc3Vs
dHNUYWJsZS5wcm90b3R5cGUuX3Nob3dKU09OKTogVXNlIERvY3VtZW50RXh0ZW5zaW9uIGZ1bmN0
aW9ucyBhbmQgY3JlYXRlIGEgcmVhbCBidXR0b24gZm9yICJKU09OLi4uIiBvcHRpb24uCiAgICAg
ICAgIChPcHRpb25zKTogRGVsZXRlZC4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21ldGVy
L3J1bm5lci9hbmltb21ldGVyLmh0bWw6IFJlc3RydWN0dXJlIHRoZSBwYWdlIHRvIHVzZSB0aGUg
ZmxleCBib3ggbGF5b3V0LgotICAgICAgICAKKwogICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVy
L3Jlc291cmNlcy9hbmltb21ldGVyLmNzczoKICAgICAgICAgKGh0bWwsYm9keSk6CiAgICAgICAg
IChidXR0b24pOgotICAgICAgICAKKwogICAgICAgICAoYnV0dG9uLmxhcmdlLWJ1dHRvbik6VGhl
IGxhcmdlIGJ1dHRvbiBhcHBlYXJzIGluIHRoZSBhbmltb21ldGVyLmh0bWwuCiAgICAgICAgIChi
dXR0b24ubGFyZ2UtYnV0dG9uOmFjdGl2ZSk6CiAgICAgICAgIChidXR0b24ubGFyZ2UtYnV0dG9u
OmRpc2FibGVkKToKLSAgICAgICAgCisKICAgICAgICAgKGJ1dHRvbi5zbWFsbC1idXR0b24pOiBU
aGUgc21hbGwgYnV0dG9uIGFwcGVhcnMgaW4gdGhlIHJlc3VsdHMgdGFibGUuCiAgICAgICAgIChi
dXR0b24uc21hbGwtYnV0dG9uOmFjdGl2ZSk6Ci0gICAgICAgIAorCiAgICAgICAgICgudHJlZSk6
IFRoZSB0cmVlIGNsYXNzIGlzIHVzZWQgdG8gbGlzdCB0aGUgc3VpdGVzIGFuZCB0aGVpciB0ZXN0
cy4KICAgICAgICAgKC50cmVlIC5leHBhbmQtYnV0dG9uKTogVGhpcyBidXR0b24gZXhwYW5kcyBh
IHRyZWUgZWxlbWVudC4KICAgICAgICAgKC50cmVlIC5leHBhbmQtYnV0dG9uIH4gdWwpOiBIaWRl
IHRoZSBjaGlsZHJlbiAoPHVsPi4uLjwvdWw+KSBvZiBhIHBhcmVudCBub2RlIGJ5IGRlZmF1bHQu
CkBAIC05MjAsMzMgKzk3MywzMyBAQAogICAgICAgICAobGFiZWwudHJlZS1sYWJlbCk6IFN0eWxl
IGZvciB0aGUgbGFiZWxzIGluIHRoZSB0b3AgbGV2ZWwgb25seSAodGhlIHN1aXRlcyBub2RlcyBp
biBvdXIgY2FzZSkuCiAgICAgICAgIChsYWJlbC50cmVlLWxhYmVsOmJlZm9yZSk6IFN0eWxlIHRo
ZSB1bmNoZWNrZWQgY2FzZSBvZiB0aGUgZXhwYW5kLWJ1dHRvbi4KICAgICAgICAgKDpjaGVja2Vk
IH4gbGFiZWwudHJlZS1sYWJlbDpiZWZvcmUpOiBTdHlsZSB0aGUgY2hlY2tlZCBjYXNlIG9mIHRo
ZSBleHBhbmQtYnV0dG9uLgotICAgICAgICAKKwogICAgICAgICAodGFibGUucmVzdWx0cy10YWJs
ZSk6IFRoZSByZXN1bHRzIHRhYmxlIGFwcGVhcnMgd2hpbGUgcnVubmluZyB0aGUgdGVzdCBhbmQg
YXQgdGhlIGVuZC4KICAgICAgICAgKC5yZXN1bHRzLXRhYmxlIHRkKToKICAgICAgICAgKC5yZXN1
bHRzLXRhYmxlIHRoKToKLSAgICAgICAgCisKICAgICAgICAgKGRpdi5yZXN1bHRzLWpzb24pOiBU
aGUgSlNPTiBkaXYgYXBwZWFycyBwZXIgdGVzdCBvciBmb3IgdGhlIHdob2xlIHJ1bi4KLSAgICAg
ICAgCisKICAgICAgICAgKG1haW4pOiBUaGlzIGlzIHRoZSBmbGV4IGJveCBjb250YWluZXIuCi0g
ICAgICAgIAorCiAgICAgICAgIChzZWN0aW9uKTogQSBzZWN0aW9uIGlzIGRpc3BsYXllZCBleGNs
dXNpdmVseSBpbnNpZGUgdGhlIDxtYWluPi4gSXQgaXMgaGlkZGVuIGJ5IGRlZmF1bHQuCiAgICAg
ICAgIChzZWN0aW9uLnNlbGVjdGVkKTogV2hlbiBpdCBpcyBzZWxlY3RlZCwgaXRzIGxheW91dCBp
cyBmbGV4IGxheW91dC4KICAgICAgICAgKHNlY3Rpb24gPiBmb290ZXIpOiBUaGUgaGVhZGVyIG9y
IHRoZSBmb290ZXIgb2YgYSBzZWN0aW9uIHNob3VsZCBub3QgdGFrZSBtb3JlIHRoYW4gMTUlIG9m
IHRoZSBjb250YWluZXIuCi0gICAgICAgIAorCiAgICAgICAgIChzZWN0aW9uI2hvbWUpOiBUaGUg
aG9tZSBzZWN0aW9uIGhhcyA8c3VpdGVzPiBhbmQgPG9wdGlvbnM+IHBhcnRzIHRvIGJlIGxhaWQg
b3V0IGluIHRoZSBtaWRkbGUuCi0gICAgICAgIChzZWN0aW9uI2hvbWUgPiBvcHRpb25zKTogCisg
ICAgICAgIChzZWN0aW9uI2hvbWUgPiBvcHRpb25zKToKICAgICAgICAgKHNlY3Rpb24jaG9tZSA+
IHN1aXRlcyk6IFRoZSA8c3VpdGVzPiBzaG91bGQgbm90IHRha2UgbW9yZSB0aGFuIDQwJSBvZiB0
aGUgd2lkdGguCiAgICAgICAgIChzZWN0aW9uI2hvbWUgPiBvcHRpb25zID4gbGFiZWwpOiBUaGUg
YmVuY2htYXJrIHRpdGxlLgogICAgICAgICAoc2VjdGlvbiNob21lID4gaGVhZGVyID4gaDIpOiBU
aGUgYmVuY2htYXJrIHRpdGxlLgogICAgICAgICAoc2VjdGlvbiNob21lID4gb3B0aW9ucyA+IGxh
YmVsID4gaW5wdXRbdHlwZT0ibnVtYmVyIl0pOiBTZXRzIHRoZSB3aWR0aCBvZiB0aGUgb3B0aW9u
IGVkaXQgY29udHJvbC4KLSAgICAgICAgCisKICAgICAgICAgKHNlY3Rpb24jcnVubmluZyk6IFRo
ZSBydW5uaW5nIHNlY3Rpb24gY29udGFpbiB0aGUgcnVubmVyIDxpZnJhbWU+IHdoaWNoIHRha2Vz
IHRoZSB3aG9sZSBhcmVhIG9mIHRoZSA8bWFpbj4uCiAgICAgICAgIChzZWN0aW9uI3J1bm5pbmcg
PiAjcnVubmluZy10ZXN0KTogVGhpcyBpcyB0aGUgPGlmcmFtZT4gY29udGFpbmVyLgogICAgICAg
ICAoc2VjdGlvbiNydW5uaW5nID4gI3J1bm5pbmctdGVzdCA+IGlmcmFtZSk6IFRoZSA8aWZyYW1l
PiBpcyBjcmVhdGVkIGJ5IHRoZSBydW5uZXIgZm9yIGVhY2ggdGVzdC4KICAgICAgICAgKHNlY3Rp
b24jcnVubmluZyA+ICNwcm9ncmVzcyk6IFRoaXMgaXMgdGhlIHByb2dyZXNzIGJhci4KICAgICAg
ICAgKHNlY3Rpb24jcnVubmluZyA+ICNwcm9ncmVzcyA+ICNwcm9ncmVzcy1jb21wbGV0ZWQpOiBU
aGlzIGlzIGFub3RoZXIgZWxlbWVudCB3aGljaCBncm93cyB3aGlsZSB0aGUgcnVubmVyIGlzIHBy
b2dyZXNzaW5nLgogICAgICAgICAoc2VjdGlvbiNydW5uaW5nID4gI3JlY29yZCk6IFRoaXMgdGhl
IGNvbnRhaW5lciBvZiB0aGUgcmVjb3JkIHJlc3VsdHMgdGFibGUgd2hpY2ggaXMgc2hvd24gd2hp
bGUgcnVubmluZyBhIHRlc3QuCi0gICAgICAgIAorCiAgICAgICAgIChzZWN0aW9uI3Jlc3VsdHMp
OgogICAgICAgICAoc2VjdGlvbiNqc29uKToKICAgICAgICAgKHNlY3Rpb24jdGVzdC1qc29uKToK
QEAgLTk1NiwxMyArMTAwOSwxMyBAQAogICAgICAgICAoc2VjdGlvbiNqc29uID4gZGF0YSk6CiAg
ICAgICAgIChzZWN0aW9uI3Rlc3QtanNvbiA+IGRhdGEpOgogICAgICAgICAoc2VjdGlvbiN0ZXN0
LWdyYXBoID4gZGF0YSk6IFRoZSA8ZGF0YT4gZWxlbWVudCBzaG91bGQgdGFrZSA3MCUgb2YgdGhl
IDxzZWN0aW9uPi4KLSAgICAgICAgCisKICAgICAgICAgKHNlY3Rpb24jdGVzdC1ncmFwaCA+IGRh
dGEgPiBzdmcpOgogICAgICAgICAoLmF4aXMgbGluZSk6CiAgICAgICAgICgubGVmdC1zYW1wbGVz
KTogVGhlc2Ugc3R5bGVzIGFyZSBmb3IgdGhlIGQzIGdyYXBoLgotICAgICAgICAKKwogICAgICAg
ICAoc2VjdGlvbiN0ZXN0LWpzb24gPiBkYXRhKTogVGhpcyBpcyB0aGUgc3R5bGUgb2YgdGhlIEpT
T04gPGRhdGE+IGVsZW1lbnQuCi0gICAgICAgIAorCiAgICAgICAgIChpZnJhbWUpOiBEZWxldGVk
LgogICAgICAgICAobGFiZWwsIHApOiBEZWxldGVkLgogICAgICAgICAoc2VjdGlvbiA+IHApOiBE
ZWxldGVkLgpAQCAtOTkwLDEyICsxMDQzLDEyIEBACiAgICAgICAgICguc2FtcGxlLXRpbWUpOiBE
ZWxldGVkLgogICAgICAgICAoLmxlZnQtbWVhbik6IERlbGV0ZWQuCiAgICAgICAgICgucmlnaHQt
bWVhbik6IERlbGV0ZWQuCi0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIv
cmVzb3VyY2VzL2FuaW1vbWV0ZXIuanM6CiAgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVy
Q2xpZW50LmluaXRpYWxpemUpOiBJbml0aWFsaXplIHRoZSBjbGllbnQgb2JqZWN0IHdpdGggdGhl
IG9wdGlvbnMgYW5kIHRoZSBzdWl0ZXMuCiAgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVy
Q2xpZW50LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKTogVXNlIG5ldyBjc3Mgc2VsZWN0b3JzIGZv
ciByZXN1bHRzIGFuZCB0aGUgcmVjb3JkIHRhYmxlLgogICAgICAgICAod2luZG93LmJlbmNobWFy
a1J1bm5lckNsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKTogTW92ZSB0aGUgY29kZSB3aGlj
aCBzZXRzIHRoZSBKU09OIHRleHQgdG8gc2VjdGlvbnNNYW5hZ2VyLnNob3dKU09OKCkuCi0gICAg
ICAgIAorCiAgICAgICAgICh3aW5kb3cuc2VjdGlvbnNNYW5hZ2VyKTogUmVzcG9uc2libGUgb2Yg
bWFuYWdpbmcgdGhlIDxzZWN0aW9uPnMgZWxlbWVudHMgaW5zaWRlIGFuaW1vbWV0ZXIuaHRtbC4K
ICAgICAgICAgKHdpbmRvdy5zZWN0aW9uc01hbmFnZXIuX3NlY3Rpb25IZWFkZXJIMUVsZW1lbnQp
OiBSZXR1cm4gdGhlIDxoMT4gaW5zaWRlIHRoZSA8aGVhZGVyPiBvZiBhIGdpdmVuIHNlY3Rpb24u
CiAgICAgICAgICh3aW5kb3cuc2VjdGlvbnNNYW5hZ2VyLl9zZWN0aW9uRGF0YURpdkVsZW1lbnQp
OiBSZXR1cm4gdGhlIDxkaXY+IGluc2lkZSB0aGUgPGRhdGE+IG9mIGEgZ2l2ZW4gc2VjdGlvbi4K
QEAgLTEwMDUsMTIgKzEwNTgsMTIgQEAKICAgICAgICAgKHdpbmRvdy5zZWN0aW9uc01hbmFnZXIu
c2hvd1NlY3Rpb24pOiBTaG93cyBhIHNwZWNpZmljIDxzZWN0aW9uPiBpbiB0aGUgPG1haW4+IGNv
bnRhaW5lci4KICAgICAgICAgKHdpbmRvdy5zZWN0aW9uc01hbmFnZXIuc2V0dXBTZWN0aW9uU3R5
bGUpOiBTZXRzIGNzcyBhdHRyaWJ1dGVzIGZvciBhbGwgdGhlIDxzZWN0aW9uPnMuCiAgICAgICAg
ICh3aW5kb3cuc2VjdGlvbnNNYW5hZ2VyLnNldHVwUnVubmluZ1NlY3Rpb25TdHlsZSk6IFNldHMg
dGhlIGNzcyBhdHRyaWJ1dGVzIGZvciB0aGUgcnVubmluZyA8c2VjdGlvbj4gb25seS4KLSAgICAg
ICAgCisKICAgICAgICAgKHdpbmRvdy5vcHRpb25zTWFuYWdlcik6IFJlc3BvbnNpYmxlIG9mIG1h
bmFnaW5nIHRoZSB1c2VyIG9wdGlvbnMgYW5kIHN0cmVhbWluZyB0aGVtIHRvL2Zvcm0gdGhlIGxv
Y2FsU3RvcmFnZS4KICAgICAgICAgKHdpbmRvdy5vcHRpb25zTWFuYWdlci5fb3B0aW9uc0VsZW1l
bnRzKTogUmV0dXJucyB0aGUgY2hpbGRyZW4gPGlucHV0PiBlbGVtZW50cyBvZiB0aGUgPG9wdGlv
bnM+LgogICAgICAgICAod2luZG93Lm9wdGlvbnNNYW5hZ2VyLnVwZGF0ZVVJRnJvbUxvY2FsU3Rv
cmFnZSk6IFJlc3RvcmUgdGhlIHZhbHVlcyBvZiB0aGUgPG9wdGlvbnM+IFVJIGVsZW1lbnRzIGZy
b20gdGhlIGxvY2FsIHN0b3JhZ2UuCiAgICAgICAgICh3aW5kb3cub3B0aW9uc01hbmFnZXIudXBk
YXRlTG9jYWxTdG9yYWdlRnJvbVVJKTogU2F2ZXMgdGhlIHZhbHVlcyBvZiB0aGUgPG9wdGlvbnM+
IFVJIGVsZW1lbnRzIHRvIHRoZSBsb2NhbCBzdG9yYWdlLgotICAgICAgICAKKwogICAgICAgICAo
d2luZG93LnN1aXRlc01hbmFnZXIpOiBSZXNwb25zaWJsZSBvZiBtYW5hZ2luZyB0aGUgdXNlciBz
dWl0ZXMgYW5kIHN0cmVhbWluZyB0aGVtIHRvL2Zvcm0gdGhlIGxvY2FsU3RvcmFnZS4KICAgICAg
ICAgKHdpbmRvdy5zdWl0ZXNNYW5hZ2VyLl90cmVlRWxlbWVudCk6IFJldHVybnMgdGhlIHN1aXRl
cyB0cmVlIGNvbnRhaW5lciBlbGVtZW50LgogICAgICAgICAod2luZG93LnN1aXRlc01hbmFnZXIu
X3N1aXRlc0VsZW1lbnRzKTogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIHN1aXRlcyBlbGVtZW50cy4K
QEAgLTEwMjUsNyArMTA3OCw3IEBACiAgICAgICAgICh3aW5kb3cuc3VpdGVzTWFuYWdlci5jcmVh
dGVFbGVtZW50cyk6IENyZWF0ZXMgdGhlIHN1aXRlcyB0cmVlIGR5bmFtaWNhbGx5IGZyb20gdGhl
IGFycmF5IFN1aXRlcy4KICAgICAgICAgKHdpbmRvdy5zdWl0ZXNNYW5hZ2VyLnVwZGF0ZVVJRnJv
bUxvY2FsU3RvcmFnZSk6IFJlc3RvcmUgdGhlIHZhbHVlcyBvZiB0aGUgPHN1aXRlcz4gVUkgZWxl
bWVudHMgZnJvbSB0aGUgbG9jYWwgc3RvcmFnZS4KICAgICAgICAgKHdpbmRvdy5zdWl0ZXNNYW5h
Z2VyLnVwZGF0ZUxvY2FsU3RvcmFnZUZyb21VSSk6IGF2ZXMgdGhlIHZhbHVlcyBvZiB0aGUgPHN1
aXRlcz4gVUkgZWxlbWVudHMgdG8gdGhlIGxvY2FsIHN0b3JhZ2UuCi0gICAgICAgIAorCiAgICAg
ICAgICh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlcik6IFRoaXMgaXMgdGhlIFVJIGNvbnRyb2xs
ZXIgb2YgdGhlIGFuaW1vbWV0ZXIuaHRtbCBwYWdlLgogICAgICAgICAod2luZG93LmJlbmNobWFy
a0NvbnRyb2xsZXIuaW5pdGlhbGl6ZSk6IENhbGxlZCB3aGVuIHRoZSBhbmltb21ldGVyLmh0bWwg
cGFnZSBpcyBsb2FkZWQuCiAgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlci5fcnVu
QmVuY2htYXJrKTogU3RhcnRzIGEgYmVuY2htYXJrIHJ1bi4KQEAgLTEwMzQsNyArMTA4Nyw3IEBA
CiAgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlci5zaG93SnNvbik6IENhbGxlZCBm
cm9tIHRoZSByZXN1bHRzIHBhZ2UgdG8gc2hvdyB0aGUgSlNPTiBvZiB0aGUgbGFzdCBiZW5jaG1h
cmsgcnVuLgogICAgICAgICAod2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Rlc3RHcmFw
aCk6IENhbGxlZCBmcm9tIHRoZSByZXN1bHRzIHRoZSB0YWJsZSB0byBzaG93IGEgZ3JhcGggZm9y
IHRoZSBzYW1wbGVzIG9mIGEgc3BlY2lmaWMgdGVzdC4KICAgICAgICAgKHdpbmRvdy5iZW5jaG1h
cmtDb250cm9sbGVyLnNob3dUZXN0SlNPTik6IENhbGxlZCBmcm9tIHRoZSByZXN1bHRzIHRoZSB0
YWJsZSB0byBzaG93IGEgSlNPTiBmb3IgdGhlIHNhbXBsZXMgb2YgYSBzcGVjaWZpYyB0ZXN0Lgot
ICAgICAgICAKKwogICAgICAgICAoc2hvd1NlY3Rpb24pOiBEZWxldGVkLgogICAgICAgICAoc3Rh
cnRUZXN0KTogRGVsZXRlZC4KICAgICAgICAgKHNob3dSZXN1bHRzKTogRGVsZXRlZC4KQEAgLTEw
NDksNyArMTEwMiw3IEBACiAgICAgICAgIChsb2NhbFN0b3JhZ2VOYW1lRm9yVGVzdCk6IERlbGV0
ZWQuCiAgICAgICAgIChwb3B1bGF0ZVNldHRpbmdzLik6IERlbGV0ZWQuCiAgICAgICAgIChwb3B1
bGF0ZVNldHRpbmdzKTogRGVsZXRlZC4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21ldGVy
L3J1bm5lci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qczoKICAgICAgICAgKEJlbmNobWFy
a1J1bm5lcik6IFBhc3MgdGhlIGZyYW1lQ29udGFpbmVyIGVsZW1lbnQgdG8gdGhlIEJlbmNobWFy
a1J1bm5lci4KICAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX2FwcGVuZEZyYW1l
KTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIgdW53YW50ZWQgc3R5bGluZyBjb2RlLgpAQCAtMTA1
NywxNyArMTExMCwxNyBAQAogCiAgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2Vz
L2dyYXBoLmpzOgogICAgICAgICAoZ3JhcGgpOiBDYWxjdWxhdGUgdGhlIHNpemUgb2YgdGhlIGNo
YXJ0IGZyb20gdGhlIGNvbnRhaW5lciBlbGVtZW50LgotICAgICAgICAKKwogICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmct
aW1hZ2VzLmpzOgogICAgICAgICAoQm91bmNpbmdTdmdJbWFnZSk6CiAgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0
aWNsZXMuanM6CiAgICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5f
Y3JlYXRlRGVmcyk6Ci0gICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlw
ZS5fY3JlYXRlQ2xpcFN0YXIpOiAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xl
c1N0YWdlLnByb3RvdHlwZS5fY3JlYXRlQ2xpcFN0YXIpOgogICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpz
OgogICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNoYXBlKToKICAg
ICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZUdyYWRpZW50KToK
ICAgICAgICAgQ2FsbCBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVTdmdFbGVtZW50KCkgaW5zdGVh
ZCBvZiBjYWxsaW5nIFV0aWxpdGllcy5jcmVhdGVTdmdFbGVtZW50KCkuCi0gICAgICAgIAorCiAg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qczoKICAgICAgICAgKEFu
aW1hdG9yLnByb3RvdHlwZS5hbmltYXRlKToKICAgICAgICAgKEJlbmNobWFyayk6CkBAIC0xMDc1
LDEwICsxMTI4LDEwIEBACiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3Rh
Z2UuanM6CiAgICAgICAgIChTdGFnZUJlbmNobWFyay5wcm90b3R5cGUuc2hvd1Jlc3VsdHMpOgog
ICAgICAgICBSZW5hbWUgdGhlIG9wdGlvbnMgdG8gbWF0Y2ggdGhlIDxpbnB1dD4gaWRzIGluIGFu
aW1vbWV0ZXIuaHRtbC4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jl
c291cmNlcy91dGlsaXRpZXMuanM6CiAgICAgICAgICh3aW5kb3cuVXRpbGl0aWVzLmNyZWF0ZVN2
Z0VsZW1lbnQpOiBEZWxldGVkLgotICAgICAgICAKKwogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVz
dHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWw6CiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90
ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzOgogICAgICAgICAoTGF5ZXJpbmdUZXh0U3Rh
Z2UpOgpAQCAtMTA5MCw3ICsxMTQzLDcgQEAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MDY5OAogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0
b24uCi0gICAgICAgIAorCiAgICAgICAgIFRoZSBleGlzdGluZyBjb2RlIGluY3JlbWVudGVkIHRo
aXMuX2ZyYW1lQ291bnQgYWZ0ZXIgY2hlY2tpbmcgYWdhaW5zdCB0aGlzLl9kcm9wRnJhbWVDb3Vu
dC4KICAgICAgICAgVGhpcyBoYXMgdGhlIGVmZmVjdCBvZiBzZXR0aW5nIHRoaXMuX21lYXN1cmVU
aW1lT2Zmc2V0IG9uZSBmcmFtZSB0b28gbGF0ZSwgc28KICAgICAgICAgd2Ugd2VyZSBtZWFzdXJp
bmcgb25seSB0d28gZnJhbWVzLCBub3QgdGhyZWUsIGFuZCB0aHVzIGNvbXB1dGluZyBhbiBpbmNv
cnJlY3QgZnBzLgpAQCAtMTE1NSw4ICsxMjA4LDggQEAKICAgICAgICAgKFJlY29yZFRhYmxlLnBy
b3RvdHlwZS5fc2hvd1Rlc3QpOiBTaG93cyB0aGUgcmVzdWx0cyBvZiBhIHNpbmdsZSB0ZXN0Lgog
ICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93U3VpdGUpOiBTaG93cyB0aGUgcmVz
dWx0cyBvZiBhIHNpbmdsZSBzdWl0ZS4KICAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5z
aG93UmVjb3JkKTogU2hvd3MgYSBzaW5nbGUgaXRlcmF0aW9uIGZvciBhIHNpbmdsZSB0ZXN0Lgot
ICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLnNob3dJdGVyYXRpb25zKTogU2hvd3MgdGhl
IHJlc3VsdHMgb2YgYWxsIHRoZSBzdWl0ZXMgb2YgdGhlIGl0ZXJhdGlvbnMuIAotICAgICAgICAK
KyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5zaG93SXRlcmF0aW9ucyk6IFNob3dzIHRo
ZSByZXN1bHRzIG9mIGFsbCB0aGUgc3VpdGVzIG9mIHRoZSBpdGVyYXRpb25zLgorCiAgICAgICAg
IChSZXN1bHRzVGFibGUpOiBSZWNvcmRUYWJsZSB3YXMgcmVuYW1lZCB0byBSZXN1bHRzVGFibGUu
CiAgICAgICAgIChSZXN1bHRzVGFibGUucHJvdG90eXBlLmNsZWFyKTogQ2xlYXJzIHRoZSB0YWJs
ZSBlbGVtZW50LgogICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5fc2hvd0hlYWRlclJv
dyk6IFNob3dzIGEgcm93IGluIHRoZSByZXN1bHRzIHRhYmxlIGhlYWRlci4KQEAgLTExODIsMjIg
KzEyMzUsMjIgQEAKICAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5fc2hvd1N1aXRlKTog
RGVsZXRlZC4KICAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5zaG93UmVjb3JkKTogRGVs
ZXRlZC4KICAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5zaG93SXRlcmF0aW9ucyk6IERl
bGV0ZWQuCi0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvc2FtcGxl
ci5qczoKICAgICAgICAgKFNhbXBsZXIucHJvdG90eXBlLnN0YXJ0U2FtcGxpbmcpOiBVc2UgZm9y
RWFjaC4KICAgICAgICAgKFNhbXBsZXIucHJvdG90eXBlLnNhbXBsZSk6IFVzZSBmb3JFYWNoLgog
ICAgICAgICAoU2FtcGxlci5wcm90b3R5cGUudG9KU09OKTogQ29udmVydHMgdGhlIHNhbXBsZXIg
ZGF0YSB0byBKU09OIGZvcm1hdC4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21ldGVyL3Jl
c291cmNlcy9zdHJpbmdzLmpzOiBBZGRlZC4KICAgICAgICAgVGhpcyBuZXcgZmlsZSB3aWxsIGJl
IHVzZWQgdG8gYXNzb2NpYXRlIHRoZSBzdHJpbmdzIHVzZWQgYnkgdGhlIGJlbmNobWFyawogICAg
ICAgICB3aXRoIElEcy4gQSBzdHJpbmcgY2FuIGJlIGNoYW5nZWQgaW4gb25lIHBsYWNlIHdpdGhv
dXQgaGF2aW5nIHRvIGNoYW5nZQogICAgICAgICBhbGwgdGhlIGluc3RhbmNlcyBvZiB0aGlzIHN0
cmluZyBpbiBtdWx0aXBsZSBmaWxlcy4gVGhlcmUgdHdvIGdyb3VwcyBvZgogICAgICAgICBzdHJp
bmdzIGluIHRoaXMgZmlsZS4gVGhlIGZpcnN0IG9uZSBpcyB1c2VkIGJ5IHRoZSBVSSBlbGVtZW50
cyBhbmQgdGhlIHNlY29uZAogICAgICAgICBncm91cCBpcyB1c2VkIHdoZW4gY29uc3RydWN0aW5n
IHRoZSByZXN1bHRzIEpTT04uCi0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9tZXRlci9ydW5u
ZXIvYW5pbW9tZXRlci5odG1sOgogICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNl
cy9hbmltb21ldGVyLmNzczoKLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21ldGVyL3J1bm5l
ci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qczoKICAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5u
ZXJDbGllbnQud2lsbEFkZFRlc3RGcmFtZSk6CiAgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVu
bmVyQ2xpZW50LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKToKQEAgLTEyMDYsMjAgKzEyNTksMjAg
QEAKICAgICAgICAgTWFrZSBiZW5jaG1hcmtSdW5uZXJDbGllbnQgdXNlcyBSZXN1bHRzRGFzaGJv
YXJkIGluc3RlYWQgb2YgX2l0ZXJhdGlvbnNTYW1wbGVycwogICAgICAgICBHZXQgdGhlIEpTT04g
ZnJvbSBSZXN1bHRzRGFzaGJvYXJkLnRvSlNPTigpIGFuZCBwYXNzIGl0IHRvIFJlc3VsdHNUYWJs
ZS5zaG93SXRlcmF0aW9ucygpLgogICAgICAgICBBbHNvIHNldCB0aGUgdGV4dENvbnRlbnQgb2Yg
dGhlICIjanNvbiIgdGV4dGFyZWEgd2l0aCB0aGUgcmVzdWx0cyBKU09OLgotICAgICAgICAKKwog
ICAgICAgICAoc2hvd1Jlc3VsdHMpOiBEZWxldGUgdW5uZWVkZWQgY29kZS4KICAgICAgICAgKHNo
b3dKc29uKTogU2hvd3MgdGhlICJqc29uIiBzZWN0aW9uLgogICAgICAgICAoc2hvd1Rlc3RHcmFw
aCk6IFJlbmFtZSBzaG93R3JhcGgoKSB0byBiZSBzaG93VGVzdEdyYXBoKCkuCiAgICAgICAgIChz
aG93VGVzdEpTT04pOiBTaG93cyB0aGUgSlNPTiBvZiBhIHNpbmdsZSB0ZXN0UmVzdWx0cy4KICAg
ICAgICAgKHNob3dHcmFwaCk6IERlbGV0ZWQuCi0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9t
ZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzOgogICAgICAgICBVc2UgdGhlIHN0cmluZyB0
YWJsZSBpbnN0ZWFkIG9mIHB1dHRpbmcgbGl0ZXJhbCBzdHJpbmdzLgogCiAgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanM6CiAgICAgICAgIChTdGFnZUJlbmNobWFy
ay5wcm90b3R5cGUuc2hvd1Jlc3VsdHMpOgogICAgICAgICBGaXggdGhlIHBhcmFtZXRlcnMgd2hp
Y2ggYXJlIHBhc3NlZCB0byBSZWNvcmRUYWJsZS5zaG93UmVjb3JkKCkuCi0gICAgICAgIAorCiAg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2Fu
dmFzLWltYWdlcy5odG1sOgogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbDoKICAgICAgICAgKiBBbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw6CkBAIC0x
NTM4LDExICsxNTkxLDExIEBACiAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGluY2x1ZGVzIGFsbCB0
aGUgdGVzdCBzdWl0ZXMgdG8gYmUgcnVuIGJ5IHRoZSBiZW5jaG1hcmsuCiAgICAgICAgIHJ1bm5l
ci4gQWxsIHRoZSB0ZXN0cyBzaG91bGQgdHJ5IHRvIHJ1biBvbiB0aHJlZSBzdGFnZXM6IENTUywg
Y2FudmFzIGFuZAogICAgICAgICBTVkcuCi0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXM6IEFkZGVkLgogICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlczogQWRkZWQuCiAgICAgICAgIFRoZSBi
b3VuY2luZyBwYXJ0aWNsZXMgdGVzdCBpcyBhbiBleGFtcGxlIG9mIGEgc2ltcGxlIGFuaW1hdGlv
biB0ZWNobmlxdWUuCi0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sOiBBZGRlZC4KICAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMt
c2hhcGVzLmh0bWw6IEFkZGVkLgogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbDogQWRkZWQuCkBAIC0xNTU1LDE1ICsx
NjA4LDE1IEBACiAgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlKTogQmFzZSBjbGFzcyBmb3IgYSBi
b3VuY2luZyBwYXJ0aWNsZS4KICAgICAgICAgKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmNl
bnRlcik6IFJldHVybnMgdGhlIGNlbnRlciBwb2ludCBvciB0aGUgcGFydGljbGUuCiAgICAgICAg
IChCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlKTogTW92ZXMgdGhlIHBhcnRpY2xl
IGJhc2VkIG9uIGl0cyBjdXJyZW50IHBvc2l0aW9uLCBhbmdsZSBhbmQgdmVsb2NpdHkuCi0gICAg
ICAgIAorCiAgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKTogQSBzdWIgY2xhc3Mg
b2YgQW5pbWF0b3IuCi0gICAgICAgIAorCiAgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdl
KTogUmVwcmVzZW50cyB0aGUgY29udGFpbmVyIG9mIGFsbCB0aGUgYm91bmNpbmcgcGFydGljbGVz
LgogICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFyc2VTaGFwZVBh
cmFtdGVycyk6IEdldHMgdGhlIHNoYXBlIHBhcmFtZXRlcnMgZm9yIHNoYXBlIGFuaW1hdGluZyB0
ZXN0cy4KICAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnJhbmRvbVJv
dGF0ZXIpOiBDcmVhdGVzIGEgcm90YXRlciBmb3IgdGhlIHBhcnRpY2xlcy4KICAgICAgICAgKEJv
dW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBBbmltYXRlcyBhbGwgdGhl
IHBhcnRpY2xlcy4KICAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnR1
bmUpOiBDaGFuZ2VzIHRoZSB0ZXN0IGJ5IGFkZGluZyBvciByZW1vdmluZyBwYXJ0aWNsZXMuCi0g
ICAgICAgIAorCiAgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayk6IFJ1bnMgdGhl
IGJlbmNobWFyayBmb3IgYm91bmNpbmcgcGFydGljbGVzIHRlc3QuCiAgICAgICAgIChCb3VuY2lu
Z1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBDcmVhdGVzIGFu
IGFuaW1hdG9yIG9mIHR5cGUgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci4KIApAQCAtMTU3Miw1
MiArMTYyNSw1MiBAQAogICAgICAgICAoQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUuX2NyZWF0
ZVNwYW4pOiBDcmVhdGVzIGEgPHNwYW4+IGVsZW1lbnQgYW5kIHRha2VzIHRoZSBzaGFwZSBhbmQg
Y2xpcHBpbmcgY2xhc3NlcyBpbnRvIGNvbnNpZGVyYXRpb24uCiAgICAgICAgIChCb3VuY2luZ0Nz
c1NoYXBlLnByb3RvdHlwZS5fbW92ZSk6IE1vdmVzIHRoZSBwYXJ0aWNsZSB0byBhIG5ldyBsb2Nh
dGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0IGRvZXMgbm90IHJlcXVpcmUgbGF5b3V0Lgog
ICAgICAgICAoQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUuYW5pbWF0ZSk6IFJvdGF0ZXMgYW5k
IG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KLSAgICAgICAgCisKICAgICAgICAg
KEJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xl
c1N0YWdlIGZvciBhbmltYXRpbmcgQ1NTIHNoYXBlcy4KICAgICAgICAgKEJvdW5jaW5nQ3NzU2hh
cGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9m
IHR5cGUgQm91bmNpbmdDc3NTaGFwZS4KICAgICAgICAgKEJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2Uu
cHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJlbW92ZXMgdGhlIGNvcnJlc3BvbmRp
bmcgZWxlbWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KLSAgICAgICAgCisKICAg
ICAgICAgKEJvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNp
bmdQYXJ0aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBDU1Mgc2hhcGVzLgogICAgICAgICAo
Qm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRl
cyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdDc3NTaGFwZXNTdGFnZS4KICAgICAgICAgKHdpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJv
dW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrLgotICAgICAgICAKKwogICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3MtaW1hZ2Vz
LmpzOiBBZGRlZC4KICAgICAgICAgKEJvdW5jaW5nQ3NzSW1hZ2UpOiBBIHN1YiBjbGFzcyBvZiBC
b3VuY2luZ1BhcnRpY2xlIGZvciBhbmltYXRpbmcgQ1NTIGltYWdlcy4KICAgICAgICAgKEJvdW5j
aW5nQ3NzSW1hZ2UucHJvdG90eXBlLl9tb3ZlKTogTW92ZSB0aGUgcGFydGljbGUgdG8gYSBuZXcg
bG9jYXRpb24uIEFwcGx5IHRyYW5zZm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1aXJlIGxheW91
dC4KICAgICAgICAgKEJvdW5jaW5nQ3NzSW1hZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBSb3RhdGVz
IGFuZCBtb3ZlcyB0aGUgc2hhcGUgdG8gYSBuZXcgbG9jYXRpb24uCi0gICAgICAgIAorCiAgICAg
ICAgIChCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZSBmb3IgYW5pbWF0aW5nIENTUyBpbWFnZXMuCiAgICAgICAgIChCb3VuY2luZ0Nz
c0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNs
ZSBvZiB0eXBlIEJvdW5jaW5nQ3NzSW1hZ2UuCiAgICAgICAgIChCb3VuY2luZ0Nzc0ltYWdlc1N0
YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmVzIHRoZSBjb3JyZXNw
b25kaW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxkcmVuIGxpc3QuCi0gICAgICAgIAor
CiAgICAgICAgIChCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNzIG9mIEJv
dW5jaW5nUGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgQ1NTIGltYWdlcy4KICAgICAg
ICAgKEJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENy
ZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UuCiAgICAgICAgICh3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlw
ZSBCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyay4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFz
LXBhcnRpY2xlcy5qczogQWRkZWQuCiAgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlKTog
QSBiYXNlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlIGZvciBhbmltYXRpbmcgY2FudmFz
IHBhcnRpY2xlcy4KICAgICAgICAgKEJvdW5jaW5nQ2FudmFzUGFydGljbGUucHJvdG90eXBlLl9h
cHBseVJvdGF0aW9uKTogQXBwbHkgdGhlIHBhcnRpY2xlIHJvdGF0aW9uLWFyb3VuZC1jZW50ZXIg
dHJhbnNmb3JtIHRvIHRoZSBjYW52YXMgY29udGV4dC4KICAgICAgICAgKEJvdW5jaW5nQ2FudmFz
UGFydGljbGUucHJvdG90eXBlLl9hcHBseUNsaXBwaW5nKTogQXBwbHkgdGhlIHBhcnRpY2xlIGNs
aXBwaW5nIHRvIHRoZSBjYW52YXMgY29udGV4dC4KICAgICAgICAgKEJvdW5jaW5nQ2FudmFzUGFy
dGljbGUucHJvdG90eXBlLl9kcmF3KTogQSBub24taW1wbGVtZW50ZWQgdmVyc2lvbiBvZiB0aGUg
ZHJhd2luZyBmdW5jdGlvbi4KICAgICAgICAgKEJvdW5jaW5nQ2FudmFzUGFydGljbGUucHJvdG90
eXBlLmFuaW1hdGUpOiBDYXJyaWVzIG91dCBhbGwgdGhlIHN0ZXBzIHRvIHJlZHJhdyB0aGUgY2Fu
dmFzIHBhcnRpY2xlLgotICAgICAgICAKKwogICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNs
ZXNTdGFnZSk6IEEgYmFzZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSBmb3Ig
YW5pbWF0aW5nIGNhbnZhcyBwYXJ0aWNsZXMuCi0gICAgICAgIAorCiAgICAgICAgIChCb3VuY2lu
Z0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNp
bmdQYXJ0aWNsZXNBbmltYXRvciBmb3IgYW5pbWF0aW5nIGNhbnZhcyBwYXJ0aWNsZXMuCiAgICAg
ICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlKTog
T3ZlcnJpZGVzIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB0byBjbGVhciB0aGUgY2FudmFzIGJlZm9y
ZSByZWRyYXdpbmcgdGhlIHN0YWdlLgotICAgICAgICAKKwogICAgICAgICAoQm91bmNpbmdDYW52
YXNQYXJ0aWNsZXNCZW5jaG1hcmspOiBBIGJhc2Ugc3ViLWNsYXNzIG9mIFN0YWdlQmVuY2htYXJr
IGZvciBhbmltYXRpbmcgY2FudmFzIHBhcnRpY2xlcy4KICAgICAgICAgKEJvdW5jaW5nQ2FudmFz
UGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0ZXMgdGhl
IGNhbnZhcyBwYXJ0aWNsZXMgYW5pbWF0b3IuCi0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1z
aGFwZXMuanM6IEFkZGVkLgogICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZSk6IEEgY29uY3Jl
dGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGUgZm9yIGFuaW1hdGluZyBjYW52
YXMgc2hhcGVzLgogICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2FwcGx5
RmlsbCk6IFNldHMgdGhlIGZpbGxTdHlsZSBpbiB0aGUgY2FudmFzIGNvbnRleHQuCiAgICAgICAg
IChCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fZHJhd1NoYXBlKTogQ2FycmllcyBvdXQg
dGhlIGFjdHVhbCBkcmF3aW5nLgogICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5
cGUuX2RyYXcpOiBDYXJyaWVzIG91dCBhbGwgdGhlIHN0ZXBzIHRvIGRyYXcgdGhlIHNoYXBlLgot
ICAgICAgICAKKwogICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZSk6IEEgY29uY3Jl
dGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGUgZm9yIGFuaW1hdGluZyBjYW52
YXMgc2hhcGVzLgogICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5wcm90b3R5cGUu
Y3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3VuY2luZ0NhbnZh
c1NoYXBlLgotICAgICAgICAKKwogICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1h
cmspOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNo
bWFyayBmb3IgYW5pbWF0aW5nIGNhbnZhcyBzaGFwZXMuCiAgICAgICAgIChCb3VuY2luZ0NhbnZh
c1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ug
b2YgdHlwZSBCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlLgogICAgICAgICAod2luZG93LmJlbmNo
bWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUgQm91bmNpbmdD
YW52YXNTaGFwZXNCZW5jaG1hcmsuCkBAIC0xNjI1LDEwICsxNjc4LDEwIEBACiAgICAgICAgICog
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNh
bnZhcy1pbWFnZXMuanM6IEFkZGVkLgogICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZSk6IEEg
Y29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGUgZm9yIGFuaW1hdGlu
ZyBjYW52YXMgaW1hZ2VzLgogICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUu
X2RyYXcpOiBEcmF3cyBhbiBpbWFnZSBvbiB0aGUgY29udGV4dCBvZiBhIGNhbnZhcy4KLSAgICAg
ICAgCisKICAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UpOiBBIGNvbmNyZXRlIHN1
Yi1jbGFzcyBvZiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyayBmb3IgYW5pbWF0aW5n
IGNhbnZhcyBpbWFnZXMuCiAgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlLnByb3Rv
dHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBvZiB0eXBlIEJvdW5jaW5n
Q2FudmFzSW1hZ2UuCi0gICAgICAgIAorCiAgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc0Jl
bmNobWFyayk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGVz
QmVuY2htYXJrIGZvciBhbmltYXRpbmcgY2FudmFzIGltYWdlcy4KICAgICAgICAgKEJvdW5jaW5n
Q2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBz
dGFnZSBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UuCiAgICAgICAgICh3aW5kb3cu
YmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3Vu
Y2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay4KQEAgLTE2NDksMjIgKzE3MDIsMjIgQEAKICAgICAg
ICAgKEJvdW5jaW5nU3ZnU2hhcGUpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1NW
R1BhcnRpY2xlIGZvciBhbmltYXRpbmcgU1ZHIHNoYXBlcy4KICAgICAgICAgKEJvdW5jaW5nU3Zn
U2hhcGUucHJvdG90eXBlLl9jcmVhdGVTaGFwZSk6IENyZWF0ZXMgYW4gU1ZHIHNoYXBlLgogICAg
ICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2FwcGx5RmlsbCk6IEFwcGxpZXMgdGhl
IHNlbGVjdGVkIGZpbGwgc3R5bGUgdG8gdGhlIFNWRyBzaGFwZS4KLSAgICAgICAgCisKICAgICAg
ICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3Vu
Y2luZ1N2Z1BhcnRpY2xlc1N0YWdlIGZvciBhbmltYXRpbmcgU1ZHIHNoYXBlcy4KICAgICAgICAg
KEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZUdyYWRpZW50KTogQ3JlYXRl
cyBhbiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuCiAgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBl
c1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBvZiB0
eXBlIEJvdW5jaW5nU3ZnU2hhcGUuCiAgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnBy
b3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBFbnN1cmVzIHRoZSBhdHRhY2hlZCBTVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBTVkdEZWZzRWxlbWVudC4K
LSAgICAgICAgCisKICAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrKTogQSBjb25j
cmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGlu
ZyBTVkcgaW1hZ2VzLgogICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90
eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdTdmdTaGFw
ZXNTdGFnZS4KICAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRl
cyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLgotICAgICAg
ICAKKwogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzOiBBZGRlZC4KICAgICAgICAgKEJvdW5jaW5nU3Zn
SW1hZ2UpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1NWR1BhcnRpY2xlIGZvciBh
bmltYXRpbmcgU1ZHIGltYWdlcy4KLSAgICAgICAgCisKICAgICAgICAgKEJvdW5jaW5nU3ZnSW1h
Z2VzU3RhZ2UpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1NWR1BhcnRpY2xlc0Jl
bmNobWFyayBmb3IgYW5pbWF0aW5nIFNWRyBpbWFnZXMuCiAgICAgICAgIChCb3VuY2luZ1N2Z0lt
YWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBv
ZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2UuCi0gICAgICAgIAorCiAgICAgICAgIChCb3VuY2luZ1N2
Z0ltYWdlc0JlbmNobWFyayk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nUGFydGlj
bGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgU1ZHIGltYWdlcy4KICAgICAgICAgKEJvdW5jaW5n
U3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFn
ZSBvZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UuCiAgICAgICAgICh3aW5kb3cuYmVuY2ht
YXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ1N2
Z0ltYWdlc0JlbmNobWFyay4KQEAgLTE2NzIsNTIgKzE3MjUsNTIgQEAKICAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL2V4YW1wbGVzOiBBZGRlZC4KICAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
L2V4YW1wbGVzL2NhbnZhcy1lbGVjdHJvbnMuaHRtbDogQWRkZWQuCiAgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtc3RhcnMuaHRtbDogQWRkZWQuCi0gICAgICAgIEV4
YW1wbGVzIHRlc3QgcGFnZXMuIAotICAgICAgICAKKyAgICAgICAgRXhhbXBsZXMgdGVzdCBwYWdl
cy4KKwogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzOiBBZGRl
ZC4KICAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMt
ZWxlY3Ryb25zLmpzOiBBZGRlZC4KICAgICAgICAgKENhbnZhc0VsZWN0cm9uKTogQW4gb2JqZWN0
IHdoaWNoIGRyYXdzIGFuZCBhbmltYXRlIGEgZWxlY3Ryb24gb2JqZWN0IG9uIGEgY2FudmFzIHN0
YWdlLgogICAgICAgICAoQ2FudmFzRWxlY3Ryb24ucHJvdG90eXBlLl9kcmF3KTogRHJhd3MgdGhl
IGVsZWN0cm9uIG9iamVjdC4KICAgICAgICAgKENhbnZhc0VsZWN0cm9uLnByb3RvdHlwZS5hbmlt
YXRlKTogQW5pbWF0ZXMgdGhlIGVsZWN0cm9uIG9iamVjdC4KLSAgICAgICAgCisKICAgICAgICAg
KENhbnZhc0VsZWN0cm9uc1N0YWdlKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgU3RhZ2UgZm9y
IGFuaW1hdGluZyBlbGVjdHJvbnMuCiAgICAgICAgIChDYW52YXNFbGVjdHJvbnNTdGFnZS5wcm90
b3R5cGUudHVuZSk6IENoYW5nZXMgdGhlIHRlc3QgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGVsZW1l
bnRzLgogICAgICAgICAoQ2FudmFzRWxlY3Ryb25zU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBB
bmltYXRlcyB0aGUgdGVzdCBlbGVtZW50cy4KLSAgICAgICAgCisKICAgICAgICAgKENhbnZhc0Vs
ZWN0cm9uc0FuaW1hdG9yKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgU3RhZ2VBbmltYXRvciBm
b3IgYW5pbWF0aW5nIGNhbnZhcyBlbGVjdHJvbnMuCiAgICAgICAgIChDYW52YXNFbGVjdHJvbnNB
bmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IE92ZXJyaWRlcyB0aGUgYmFzZSBjbGFzcyBtZXRo
b2QgdG8gY2xlYXIgdGhlIGNhbnZhcyBiZWZvcmUgcmVkcmF3aW5nIHRoZSBzdGFnZS4KLSAgICAg
ICAgCisKICAgICAgICAgKENhbnZhc0VsZWN0cm9uc0JlbmNobWFyayk6IEEgY29uY3JldGUgc3Vi
LWNsYXNzIG9mIFN0YWdlQmVuY2htYXJrIGZvciBhbmltYXRpbmcgZWxlY3Ryb25zLgogICAgICAg
ICAoQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0
ZXMgYSBzdGFnZSBvZiBDYW52YXNFbGVjdHJvbnNTdGFnZS4KICAgICAgICAgKENhbnZhc0VsZWN0
cm9uc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBDcmVhdGVzIGFuIGFuaW1h
dG9yIG9mIHR5cGUgQ2FudmFzRWxlY3Ryb25zQW5pbWF0b3IuCiAgICAgICAgICh3aW5kb3cuYmVu
Y2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBDYW52YXNF
bGVjdHJvbnNCZW5jaG1hcmsuCi0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzOiBBZGRlZC4KICAgICAgICAgKENh
bnZhc1N0YXIpOiBBbiBvYmplY3Qgd2hpY2ggZHJhd3MgYW5kIGFuaW1hdGUgYSBzdGFyIG9iamVj
dCBvbiBhIGNhbnZhcyBzdGFnZS4KICAgICAgICAgKENhbnZhc1N0YXIucHJvdG90eXBlLl9kcmF3
KTogRHJhd3MgdGhlIHN0YXIgb2JqZWN0LgogICAgICAgICAoQ2FudmFzU3Rhci5wcm90b3R5cGUu
YW5pbWF0ZSk6IEFuaW1hdGVzIHRoZSBzdGFyIG9iamVjdC4KLSAgICAgICAgCisKICAgICAgICAg
KENhbnZhc1N0YXJzU3RhZ2UpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBTdGFnZSBmb3IgYW5p
bWF0aW5nIHN0YXJzLgogICAgICAgICAoQ2FudmFzU3RhcnNTdGFnZS5wcm90b3R5cGUudHVuZSk6
IENoYW5nZXMgdGhlIHRlc3QgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGVsZW1lbnRzLgogICAgICAg
ICAoQ2FudmFzU3RhcnNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IEFuaW1hdGVzIHRoZSB0ZXN0
IGVsZW1lbnRzLgotICAgICAgICAKKwogICAgICAgICAoQ2FudmFzU3RhcnNBbmltYXRvcik6IEEg
Y29uY3JldGUgc3ViLWNsYXNzIG9mIFN0YWdlQW5pbWF0b3IgZm9yIGFuaW1hdGluZyBjYW52YXMg
c3RhcnMuCiAgICAgICAgIChDYW52YXNTdGFyc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlKTog
T3ZlcnJpZGVzIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB0byBjbGVhciB0aGUgY2FudmFzIGJlZm9y
ZSByZWRyYXdpbmcgdGhlIHN0YWdlLgotICAgICAgICAKKwogICAgICAgICAoQ2FudmFzU3RhcnNC
ZW5jaG1hcmspOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCZW5jaG1hcmsgZm9yIGFuaW1hdGlu
ZyBzdGFycy4KICAgICAgICAgKENhbnZhc1N0YXJzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVT
dGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiBDYW52YXNTdGFyc1N0YWdlLgogICAgICAgICAoQ2Fu
dmFzU3RhcnNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBh
bmltYXRvciBvZiB0eXBlIENhbnZhc1N0YXJzQW5pbWF0b3IuCiAgICAgICAgICh3aW5kb3cuYmVu
Y2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBDYW52YXNT
dGFyc0JlbmNobWFyay4KIAogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzOiBB
ZGRlZC4KLSAgICAgICAgVGhpcyBkaXJlY3RvcnkgaW5jbHVkZXMgdGhlIHNjcmlwdCB3aGljaCBp
cyByZXF1aXJlZCB0byBydW4gYW4gYWRhcHRpdmUgCisgICAgICAgIFRoaXMgZGlyZWN0b3J5IGlu
Y2x1ZGVzIHRoZSBzY3JpcHQgd2hpY2ggaXMgcmVxdWlyZWQgdG8gcnVuIGFuIGFkYXB0aXZlCiAg
ICAgICAgIGdyYXBoaWNzIGJlbmNobWFyay4gRnJvbSBhbiBlbXB0eSB0ZXN0IHBhZ2UsIHRoZSBz
ZXQgb2YgY2xhc3NlcyBpbiB0aGlzCiAgICAgICAgIGRpcmVjdG9yeSBhcmUgcmVzcG9uc2libGUg
Zm9yIG1lYXN1cmluZyB0aGUgY3VycmVudCBmcmFtZSByYXRlIGFuZAogICAgICAgICBjaGFuZ2lu
ZyB0aGUgdGVzdCB0byByZWFjaCBhIGRlc2lyZWQgRlBTLiBJdCBrZWVwcyBhc2tpbmcgdGhlIHRl
c3QgcGFnZQogICAgICAgICB0byB0dW5lIGl0c2VsZiBieSBhIGNlcnRhaW4gdmFsdWUgdG8gaW5j
cmVhc2Ugb3IgZGVjcmVhc2UgdGhlIGZyYW1lIHJhdGUuCiAgICAgICAgIEl0J3MgYWxzbyByZXNw
b25zaWJsZSBmb3Igc2FtcGxpbmcgdGhlIHRlc3Qgc3RhdGUgYW5kIHRoZSBjb3JyZXNwb25kaW5n
CiAgICAgICAgIGZyYW1lIHJhdGUuCi0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMvbWFpbi5qczogQWRkZWQuCiAgICAgICAgIChCZW5jaG1hcmtTdGF0ZSk6
IFRyYWNrcyB0aGUgc3RhdGUgb2YgdGhlIGJlbmNobWFyayB0ZXN0LgogICAgICAgICAoQmVuY2ht
YXJrU3RhdGUucHJvdG90eXBlLl90aW1lT2Zmc2V0KTogUmV0dXJucyB0aGUgdGltZU9mZnNldCBv
ZiBhIHN0YWdlLgpAQCAtMTcyNywxMiArMTc4MCwxMiBAQAogICAgICAgICAoQmVuY2htYXJrU3Rh
dGUucHJvdG90eXBlLmN1cnJlbnRTdGFnZSk6IFJldHVybnMgdGhlIGN1cnJlbnQgc3RhZ2Ugb2Yg
dGhlIGJlbmNobWFyay4KICAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50
TWVzc2FnZSk6IFJldHVybnMgdGhlIG1lc3NhZ2Ugb2YgdGhlIGN1cnJlbnQgc3RhZ2UgYW5kIHRp
bWVPZmZzZXQuCiAgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuY3VycmVudFByb2dy
ZXNzKTogUmV0dXJucyBhIHBlcmNlbnRhZ2Ugb2YgaG93IG11Y2ggdGhlIGJlbmNobWFyayBpcyBy
dW5uaW5nLgotICAgICAgICAKKwogICAgICAgICAoQW5pbWF0b3IpOiBNYW5hZ2VzIGFuaW1hdGlu
ZyB0aGUgdGVzdC4KICAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5zdGFydCk6IENhbGxlZCBp
ZiBhbmltYXRpbmcgdXNpbmcgc2V0SW50ZXJ2YWwgaXMgcmVxdWVzdGVkLgotICAgICAgICAoQW5p
bWF0b3IucHJvdG90eXBlLnRpbWVEZWx0YSk6IFJldHVybnMgdGhlIGN1cnJlbnQgdGltZURlbHRh
IAorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLnRpbWVEZWx0YSk6IFJldHVybnMgdGhlIGN1
cnJlbnQgdGltZURlbHRhCiAgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IE1h
bmFnZXMgdGhlIHRlc3QgYW5pbWF0aW9uLgotICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLmFu
aW1hdGVMb29wKTogQ2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUgaXMgcmVxdWVzdGVkLiAKKyAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlTG9v
cCk6IENhbGxlZCBpZiBhbmltYXRpbmcgdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlzIHJl
cXVlc3RlZC4KIAogICAgICAgICAoQmVuY2htYXJrKTogTWFuYWdlcyBydW5uaW5nIHRoZSB0ZXN0
IGJlbmNobWFyayBhbmQgcmVjb3JkaW5nIHRoZSBzYW1wbGVkIGRhdGEuCiAgICAgICAgIChCZW5j
aG1hcmsucHJvdG90eXBlLnN0YXJ0KTogU3RhcnRzIHRoZSBiZW5jaG1hcmsuCkBAIC0xNzQ2LDEx
ICsxNzk5LDExIEBACiAgICAgICAgIChNYXRyaXgpOiBBIG1hdHJpeCBvYmplY3QuCiAgICAgICAg
IChWZWN0b3IzKTogQSB2ZWN0b3Igb2Ygc2l6ZSAzIG9iamVjdC4KICAgICAgICAgKE1hdHJpeDMp
OiBBIG1hdHJpeCBvZiBzaXplIDN4MyBvYmplY3QuCi0gICAgICAgIAorCiAgICAgICAgIChQSURD
b250cm9sbGVyKTogQ2xvc2VkLWxvb3AgY29udHJvbGxlciBmb3IgYSBzZXQtcG9pbnQgeS4KICAg
ICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl9zYXQpOiBMaW1pdHMgdGhlIG91dHB1dCB0
byBhIGNlcnRhaW4gcmFuZ2UuCiAgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS50dW5l
KTogR2l2ZW4gdGhlIGN1cnJlbnQgb3V0cHV0IG9mIGEgc3lzdGVtLCBpdCBwcm9kdWNlcyBhIG5l
dyBwaWQgdmFsdWUgZm9yIHR1bmluZyBpdC4KLSAgICAgICAgCisKICAgICAgICAgKEthbG1hbkVz
dGltYXRvcik6IEltcGxlbWVudCBLYWxtYW4gZmlsdGVyIHRvIGdldCBhbiBlc3RpbWF0ZSBmb3Ig
YSBzYW1wbGVkIGRhdGEgcG9pbnQuCiAgICAgICAgIChLYWxtYW5Fc3RpbWF0b3IucHJvdG90eXBl
LmVzdGltYXRlKTogUmV0dXJucyBhbiBlc3RpbWF0ZSBmb3IgZm9yIGEgc2FtcGxlZCBkYXRhIHBv
aW50LgogCkBAIC0xNzYyLDcgKzE4MTUsNyBAQAogICAgICAgICAod2luZG93LlV0aWxpdGllcy5j
b3B5T2JqZWN0KTogQ29waWVzIHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgYW4g
b2JqZWN0IHRvIGEgbmV3IG9iamVjdC4KICAgICAgICAgKHdpbmRvdy5VdGlsaXRpZXMubWVyZ2VP
YmplY3RzKTogQ29waWVzIHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgdHdvIG9i
amVjdHMgdG8gYSBuZXcgb2JqZWN0LgogICAgICAgICAod2luZG93LlV0aWxpdGllcy5jcmVhdGVT
dmdFbGVtZW50KTogQ3JlYXRlcyBhbiBTVkdFbGVtZW50IGdpdmVuIGl0cyBuYW1lIGFuZCBpdHMg
YXR0cmlidXRlcy4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291
cmNlcy9zdGFnZS5jc3M6IEFkZGVkLgogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3Vy
Y2VzL3N0YWdlLmpzOiBBZGRlZC4KICAgICAgICAgKFJvdGF0ZXIpOiBNYW5hZ2VzIHJvdGF0aW5n
IGFuIGFuZ2xlIHdpdGhpbiBhIGZpeGVkIHRpbWUgaW50ZXJ2YWwuCkBAIC0xNzcxLDcgKzE4MjQs
NyBAQAogICAgICAgICAoUm90YXRlci5wcm90b3R5cGUuZGVncmVlKTogUmV0dXJucyB0aGUgY3Vy
cmVudCByb3RhdGluZyBkZWdyZWUuCiAgICAgICAgIChSb3RhdGVyLnByb3RvdHlwZS5yb3RhdGVa
KTogUmV0dXJucyBDU1MgZm9ybWF0dGVkIHRyYW5zZm9ybSByb3RhdGVaKCkgc3RyaW5nIGZvciB0
aGUgY3VycmVudCBkZWdyZWUuCiAgICAgICAgIChSb3RhdGVyLnByb3RvdHlwZS5yb3RhdGUpOiBS
ZXR1cm5zIFNWRyBmb3JtYXR0ZWQgdHJhbnNmb3JtIHJvdGF0ZSgpIHN0cmluZyBmb3IgdGhlIGN1
cnJlbnQgZGVncmVlLgotICAgICAgICAKKwogICAgICAgICAoU3RhZ2UpOiBBIGJhc2UgY2xhc3Mg
Zm9yIG1hbmFnaW5nIHRoZSB0ZXN0IGNvbXBsZXhpdHkgYW5kIHRlc3QgYW5pbWF0aW9uLgogICAg
ICAgICAoU3RhZ2UucHJvdG90eXBlLmdldCBzaXplKTogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUg
c3RhZ2UgZXhjbHVkaW5nIHRoZSBDU1MgcGFkZGluZy4KICAgICAgICAgKFN0YWdlLnByb3RvdHlw
ZS5yYW5kb20pOiBSZXR1cm5zIGEgcmFuZG9tIGZsb2F0LgpAQCAtMTc4NSwyMSArMTgzOCwyMSBA
QAogICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnR1bmUpOiBBIG5vdC1pbXBsZW1lbnRlZCB2ZXJz
aW9uIG9mIHRoaXMgZnVuY3Rpb24uCiAgICAgICAgIChTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6
IEEgbm90LWltcGxlbWVudGVkIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbi4KICAgICAgICAgKFN0
YWdlLnByb3RvdHlwZS5jbGVhcik6IENsZWFycyB0aGUgc3RhZ2UgZnJvbSBhbGwgaXRzIGFuaW1h
dGlvbiBlbGVtZW50cy4KLSAgICAgICAgCisKICAgICAgICAgKFN0YWdlQW5pbWF0b3IpOiBBIGJh
c2UgY2xhc3MgZm9yIHRoZSBzdGFnZS1iYXNlZCBhbmltYXRvcnMuCiAgICAgICAgIChTdGFnZUFu
aW1hdG9yLnByb3RvdHlwZS5hbmltYXRlKTogQ2FsbHMgQW5pbWF0b3IuYW5pbWF0ZSgpIHdoaWNo
IHVwZGF0ZXMgdGhlIHRlc3QgcGFnZSBhbmQgdGhlbiBjYWxscyBTdGFnZS5hbmltYXRlKCkgdG8g
Zm9yY2UgcmVkcmF3LgotICAgICAgICAKKwogICAgICAgICAoU3RhZ2VCZW5jaG1hcmspOiBBIGJh
c2UgY2xhc3MgZm9yIHRoZSBzdGFnZS1iYXNlZCBiZW5jaG1hcmtzLgogICAgICAgICAoU3RhZ2VC
ZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyB0aGUgZGVmYXVsdCBzdGFn
ZS4KICAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENy
ZWF0ZXMgdGhlIGRlZmF1bHQgYW5pbWF0b3IuCiAgICAgICAgIChTdGFnZUJlbmNobWFyay5wcm90
b3R5cGUudHVuZSk6IERlbGVnYXRlcyB0aGUgY2FsbCB0byBzdGFnZS4KICAgICAgICAgKFN0YWdl
QmVuY2htYXJrLnByb3RvdHlwZS5jbGVhcik6IERlbGVnYXRlcyB0aGUgY2FsbCB0byBzdGFnZS4K
ICAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5zaG93UmVzdWx0cyk6IFNob3dzIHRo
ZSByZXN1bHRzL3Byb2dyZXNzIHRocm91Z2ggaXRzIHJlY29yZFRhYmxlIGFuZCBwcm9ncmVzc0Jh
ci4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4t
eWFuZy5wbmc6IEFkZGVkLgogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lp
bi15YW5nLnN2ZzogQWRkZWQuCiAgICAgICAgIFRoZXNlIGltYWdlcyBhcmUgc2hhcmVkIGFtb25n
IGFsbCB0aGUgdGVzdHMuCi0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90
ZW1wbGF0ZTogQWRkZWQuCiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNv
dXJjZXM6IEFkZGVkLgogICAgICAgICBUaGlzIGRpcmVjdG9yeSBpbmNsdWRlcyB0ZW1wbGF0ZSB0
ZXN0cyB3aGljaCBkbyBub3RoaW5nLiBUaGV5IGNhbiBiZSB1c2VkCkBAIC0xODExLDE2ICsxODY0
LDE2IEBACiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcu
aHRtbDogQWRkZWQuCiAgICAgICAgIFRlbXBsYXRlIHRlc3QgcGFnZXMuIFRoZXkgY2FuIGJlIHVz
ZWQgYXMgdGhleSBhcmUuIENTUyBhdHRyaWJ1dGVzIG9yIGhpZGRlbgogICAgICAgICBlbGVtZW50
cyBjYW4gYmUgYWRkZWQgdG8gdGhlc2UgZGVyaXZlZCB0ZXN0IHBhZ2VzIGlmIG5lZWRlZC4KLSAg
ICAgICAgCisKICAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90
ZW1wbGF0ZS1jc3MuanM6IEFkZGVkLgotICAgICAgICAKKwogICAgICAgICAoVGVtcGxhdGVDc3NT
dGFnZSk6IEEgc3RhZ2UgdG8gY3JlYXRlIGFuZCBhbmltYXRlIEhUTUxFbGVtZW50cy4KICAgICAg
ICAgKFRlbXBsYXRlQ3NzU3RhZ2UucHJvdG90eXBlLnR1bmUpOiBDaGFuZ2VzIHRoZSB0ZXN0IGJ5
IGFkZGluZyBvciByZW1vdmluZyBlbGVtZW50cy4KICAgICAgICAgKFRlbXBsYXRlQ3NzU3RhZ2Uu
cHJvdG90eXBlLmFuaW1hdGUpOiBBbmltYXRlcyB0aGUgdGVzdCBlbGVtZW50cy4KLSAgICAgICAg
KFRlbXBsYXRlQ3NzQmVuY2htYXJrKTogCisgICAgICAgIChUZW1wbGF0ZUNzc0JlbmNobWFyayk6
CiAgICAgICAgIChUZW1wbGF0ZUNzc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBD
cmVhdGVzIHRoZSB0ZXN0IHN0YWdlLgogICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5j
cmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUgVGVtcGxhdGVDc3NCZW5jaG1hcmsu
Ci0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJj
ZXMvdGVtcGxhdGUtY2FudmFzLmpzOiBBZGRlZC4KICAgICAgICAgKFRlbXBsYXRlQ2FudmFzT2Jq
ZWN0KToKICAgICAgICAgKFRlbXBsYXRlQ2FudmFzT2JqZWN0LnByb3RvdHlwZS5fZHJhdyk6IERy
YXdzIHRoZSBvYmplY3RzIG9uIHRoZSBjYW52YXMgY29udGV4dC4KQEAgLTE4MjksMjYgKzE4ODIs
MjYgQEAKICAgICAgICAgKFRlbXBsYXRlQ2FudmFzU3RhZ2UucHJvdG90eXBlLnR1bmUpOiBoYW5n
ZXMgdGhlIHRlc3QgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGVsZW1lbnRzLgogICAgICAgICAoVGVt
cGxhdGVDYW52YXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6ICBBbmltYXRlcyB0aGUgdGVzdCBl
bGVtZW50cy4KICAgICAgICAgKFRlbXBsYXRlQ2FudmFzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1h
dGUpOiBTdGFydHMgdGhlIGFuaW1hdGlvbiBldmVyeSBmcmFtZS4KLSAgICAgICAgKFRlbXBsYXRl
Q2FudmFzQmVuY2htYXJrKTogCisgICAgICAgIChUZW1wbGF0ZUNhbnZhc0JlbmNobWFyayk6CiAg
ICAgICAgIChUZW1wbGF0ZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBD
cmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBUZW1wbGF0ZUNhbnZhc1N0YWdlLgogICAgICAgICAoVGVt
cGxhdGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBh
IGFuaW1hdG9yIG9mIHR5cGUgVGVtcGxhdGVDYW52YXNBbmltYXRvci4KICAgICAgICAgKHdpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIFRl
bXBsYXRlQ2FudmFzQmVuY2htYXJrLgotICAgICAgICAKKwogICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLXN2Zy5qczogQWRkZWQuCiAgICAgICAg
IChUZW1wbGF0ZVN2Z1N0YWdlKTogQSBzdGFnZSB0byBjcmVhdGUgYW5kIGFuaW1hdGUgU1ZHRWxl
bWVudHMuCiAgICAgICAgIChUZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlwZS50dW5lKTogQ2hhbmdl
cyB0aGUgdGVzdCBieSBhZGRpbmcgb3IgcmVtb3ZpbmcgZWxlbWVudHMuCiAgICAgICAgIChUZW1w
bGF0ZVN2Z1N0YWdlLnByb3RvdHlwZS5hbmltYXRlKTogQW5pbWF0ZXMgdGhlIHRlc3QgZWxlbWVu
dHMuCiAgICAgICAgIChUZW1wbGF0ZVN2Z0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2Up
OiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBUZW1wbGF0ZVN2Z1N0YWdlLgogICAgICAgICAod2lu
ZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUg
VGVtcGxhdGVTdmdCZW5jaG1hcmsuCi0gICAgICAgIAorCiAgICAgICAgICogQW5pbW9tZXRlci90
ZXN0cy90ZXh0OiBBZGRlZC4KICAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3Vy
Y2VzOiBBZGRlZC4KICAgICAgICAgVGhpcyBkaXJlY3RvcnkgaW5jbHVkZXMgdGhlIHRleHQgYW5p
bWF0aW5nIHRlc3RzIHdoaWNoIGN1cnJlbnRseSBydW5zCiAgICAgICAgIG9uIENTUyBzdGFnZSBv
bmx5LgotICAgICAgICAKKwogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmlu
Zy10ZXh0Lmh0bWw6IEFkZGVkLgogICAgICAgICBUZXh0IHRlc3QgcGFnZS4KLSAgICAgICAgCisK
ICAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQu
anM6IEFkZGVkLgogICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UpOiBSZXByZXNlbnRzIHRoZSBj
b250YWluZXIgb2YgYWxsIHRoZSBzdGFja2VkIHRleHQgbGF5ZXJzLgogICAgICAgICAoTGF5ZXJp
bmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSk6IFBhcnNlcyBhIHRleHRJdGVtIHdoaWNoIG1heSBi
ZSBhbiBvcGVuaW5nIHRhZywgYSBjbG9zaW5nIHRhZyBvciBhIHNlbGYtY2xvc2luZyB0YWcuCkBA
IC0xOTAxLDcgKzE5NTQsNyBAQAogCiAgICAgICAgIChBbGdvcml0aG0uY3JlYXRlTWluSGVhcCk6
IENyZWF0ZXMgYSBzaXplLWJvdW5kZWQgbWluLWhlYXAgb2JqZWN0LgogICAgICAgICAoQWxnb3Jp
dGhtLmNyZWF0ZU1heEhlYXApOiBDcmVhdGVzIGEgc2l6ZS1ib3VuZGVkIG1heC1oZWFwIG9iamVj
dC4KLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25z
LmpzOiBBZGRlZC4KICAgICAgICAgKFBvaW50KTogUG9pbnQgb2JqZWN0IGJ1dCBjYW4gYmUgdXNl
ZCBhcyBzaXplIGFsc28uCiAgICAgICAgIChQb2ludC5wb2ludE9uQ2lyY2xlKTogR2l2ZW4sIHRo
ZSByYWRpdXMgb2YgdGhlIGNpcmNsZSBhbmQgdGhlIGFuZ2xlIG9mIHRoZSBwb2ludCwgaXQgcmV0
dXJucyBhIHBvaW50IG9iamVjdC4KQEAgLTE5NDAsMTQgKzE5OTMsMTQgQEAKICAgICAgICAgKFJl
Y29yZFRhYmxlLnByb3RvdHlwZS5fc2hvd1Rlc3QpOiBTaG93cyB0aGUgcmVzdWx0cyBvZiBhIHNp
bmdsZSB0ZXN0LgogICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93U3VpdGUpOiBT
aG93cyB0aGUgcmVzdWx0cyBvZiBhIHNpbmdsZSBzdWl0ZS4KICAgICAgICAgKFJlY29yZFRhYmxl
LnByb3RvdHlwZS5zaG93UmVjb3JkKTogU2hvd3MgYSBzaW5nbGUgaXRlcmF0aW9uIGZvciBhIHNp
bmdsZSB0ZXN0LgotICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLnNob3dJdGVyYXRpb25z
KTogU2hvd3MgdGhlIHJlc3VsdHMgb2YgYWxsIHRoZSBzdWl0ZXMgb2YgdGhlIGl0ZXJhdGlvbnMu
IAorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLnNob3dJdGVyYXRpb25zKTogU2hvd3Mg
dGhlIHJlc3VsdHMgb2YgYWxsIHRoZSBzdWl0ZXMgb2YgdGhlIGl0ZXJhdGlvbnMuCiAKICAgICAg
ICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9zYW1wbGVyLmpzOiBBZGRlZC4KICAgICAgICAgKFN0
YXRpc3RpY3Muc2FtcGxlTWVhbik6IFJldHVybnMgdGhlIHNhbXBsZSBtZWFuLgogICAgICAgICAo
U3RhdGlzdGljcy51bmJpYXNlZFNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uKTogUmV0dXJucyB0aGUg
dW5iaWFzZWQgc2FtcGxlIHZhcmlhbmNlIChpLmUuIHdpdGggQmVzc2VsJ3MgY29ycmVjdGlvbikK
ICAgICAgICAgKFN0YXRpc3RpY3MuZ2VvbWV0cmljTWVhbik6IFJldHVybnMgdGhlIGdlb21ldHJp
YyBtZWFuLgogCi0gICAgICAgIChFeHBlcmltZW50KTogUmVwcmVzZW50cyBhIHNhbXBsaW5nIGV4
cGVyaW1lbnQuIAorICAgICAgICAoRXhwZXJpbWVudCk6IFJlcHJlc2VudHMgYSBzYW1wbGluZyBl
eHBlcmltZW50LgogICAgICAgICAoRXhwZXJpbWVudC5wcm90b3R5cGUuX2luaXQpOiBDYWxsZWQg
d2hlbiB0aGUgb2JqZWN0IGlzIGNyZWF0ZWQgYW5kIHdoZW4gc3RhcnRTYW1wbGluZygpIGlzIGNh
bGxlZC4KICAgICAgICAgKEV4cGVyaW1lbnQucHJvdG90eXBlLnN0YXJ0U2FtcGxpbmcpOiBDYWxs
ZWQgYWZ0ZXIgd2FybXVwIHBlcmlvZC4gUmVzdGFydHMgY29sbGVjdGluZyBzYW1wbGVkIGRhdGEg
cG9pbnRzLgogICAgICAgICAoRXhwZXJpbWVudC5wcm90b3R5cGUuc2FtcGxlKTogQWRkIGEgbmV3
IGRhdGEgcG9pbnQuCkBAIC0xOTYxLDcgKzIwMTQsNyBAQAogICAgICAgICAoU2FtcGxlcik6IFJl
cHJlc2VudHMgYSBjb21wb3VuZCBleHBlcmltZW50LiBJdCBtYW5hZ2VzIHNhbXBsaW5nIG11bHRp
cGxlIGRhdGEgcG9pbnRzIGF0IHRoZSBzYW1lIHRpbWUgb2Zmc2V0LgogICAgICAgICAoU2FtcGxl
ci5wcm90b3R5cGUuc3RhcnRTYW1wbGluZyk6IENhbGxlZCBhZnRlciB3YXJtaW5nIHVwIHBlcmlv
ZC4gUmVzdGFydHMgY29sbGVjdGluZyBzYW1wbGVkIGRhdGEgcG9pbnRzLgogICAgICAgICAoU2Ft
cGxlci5wcm90b3R5cGUuc2FtcGxlKTogQWRkIGEgbmV3IGRhdGEgdmVjdG9yIGF0IGEgZ2l2ZW4g
dGltZSBvZmZzZXQuCi0gICAgICAgIAorCiAyMDE1LTEwLTAyICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRoZSB0ZXN0IHJ1bm5lciBm
b3IgYSBuZXcgYSBncmFwaGljcyBiZW5jaG1hcmsKQEAgLTE5NzcsNyArMjAzMCw3IEBACiAgICAg
ICAgICogQW5pbW9tZXRlcjogQWRkZWQuCiAgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXI6IEFk
ZGVkLgogICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlczogQWRkZWQuCi0gICAg
ICAgIAorCiAgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvYW5pbW9tZXRlci5odG1sOiBBZGRl
ZC4KICAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3M6
IEFkZGVkLgogICAgICAgICBUaGUgYmVuY2htYXJrIHJ1bm5lciBwYWdlIGFuZCBjc3MuCkBAIC0x
OTg4LDEyICsyMDQxLDEyIEBACiAgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50
LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKTogQ2FsbGVkIGF0IHRoZSBiZWdpbm5pbmcgYmVmb3Jl
IHJ1bm5pbmcgYW55IHRlc3QuCiAgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50
LmRpZFJ1blN1aXRlcyk6IENhbGxlZCBhZnRlciBydW5uaW5nIGFsbCB0ZXN0cyBvZiBhIHN1aXRl
LgogICAgICAgICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC5kaWRGaW5pc2hMYXN0SXRl
cmF0aW9uKTogQ2FsbGVkIGFmdGVyIHJ1bm5pbmcgdGhlIGxhc3QgdGVzdC4KLSAgICAgICAgCisK
ICAgICAgICAgKHNob3dTZWN0aW9uKTogU2hvd3MgYSBzZWN0aW9uIGluIHRoZSBhbmltb21ldGVy
Lmh0bWwgcGFnZS4KICAgICAgICAgKHN0YXJ0VGVzdCk6IENhbGxlZCB3aGVuIHRoZSAiU3RhcnQg
VGVzdCIgYnV0dG9uIGlzIGNsaWNrZWQuCiAgICAgICAgIChzaG93UmVzdWx0cyk6IENhbGxlZCBh
ZnRlciBmaW5pc2hpbmcgYWxsIHRoZSB0ZXN0cy4KICAgICAgICAgKHNob3dHcmFwaCk6IENhbGxl
ZCB3aGVuICJDbGljay4uLiIgYnV0dG9uIGluIHRoZSAiU2FtcGxlcyIgY29sdW1uIG9mIHRoZSBy
ZXN1bHRzIHRhYmxlIGlzIGNsaWNrZWQKLSAgICAgICAgCisKICAgICAgICAgKiBBbmltb21ldGVy
L3J1bm5lci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qczogQ29waWVkIGZyb20gUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcy4KICAg
ICAgICAgKEJlbmNobWFya1J1bm5lclN0YXRlKTogVHJhY2tzIHRoZSBjdXJyZW50IHJ1bm5pbmcg
PHN1aXRlLCB0ZXN0PgogICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmN1
cnJlbnRTdWl0ZSk6IFJldHVybnMgdGhlIGN1cnJlbnQgcnVubmluZyBzdWl0ZS4KQEAgLTIwMDEs
NyArMjA1NCw3IEBACiAgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuaXNG
aXJzdFRlc3QpOiBSZXR1cm5zIHRydWUgaWYgd2UgYXJlIHJ1bm5pbmcgdGhlIGZpcnN0IHRlc3Qg
aW4gdGhlIGN1cnJlbnQgc3VpdGUuCiAgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90
b3R5cGUubmV4dCk6IEFkdmFuY2VzIHRvIHRoZSBuZXh0IHRlc3QuCiAgICAgICAgIChCZW5jaG1h
cmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUucHJlcGFyZUN1cnJlbnRUZXN0KTogQ3JlYXRlcyBhIG5l
dyA8aWZyYW1lPiBhbmQgd2FpdHMgZm9yIGl0IHRvIGxvYWQgYSB0ZXN0LgotICAgICAgICAKKwog
ICAgICAgICAoQmVuY2htYXJrUnVubmVyKTogTWFuYWdlcyBydW5uaW5nIHRoZSB0ZXN0cyBhbmQg
Y29tbXVuaWNhdGluZyB3aXRoIHRoZSBiZW5jaG1hcmtSdW5uZXJDbGllbnQuCiAgICAgICAgIChC
ZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLndhaXRGb3JFbGVtZW50KTogV2FpdHMgZm9yIGFuIGVs
ZW1lbnQgdG8gYmUgY3JlYXRlZC4KICAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUu
X2FwcGVuZEZyYW1lKTogQ3JlYXRlcyBhIG5ldyA8aWZyYW1lPiBlbGVtZW50LgpAQCAtMjAxOSw3
ICsyMDcyLDcgQEAKICAgICAgICAgKEJlbmNobWFya1Rlc3RTdGVwKTogRGVsZXRlZC4KICAgICAg
ICAgKEZpYm9uYWNjaSk6IERlbGV0ZWQuCiAgICAgICAgIFNpbXBsZVByb21pc2Ugd2FzIG1vdmVk
IHQgQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyBiZWNhdXNlIGl0IGlzIHVzZWQg
YnkgdGhlIHJ1bm5lciBhbmQgdGhlIHRlc3RzLgotICAgICAgICAKKwogICAgICAgICAoQmVuY2ht
YXJrUnVubmVyLnByb3RvdHlwZS5fd2FpdEFuZFdhcm1VcCk6IERlbGV0ZWQuCiAgICAgICAgIChC
ZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9ydW5UZXN0KTogRGVsZXRlZC4KICAgICAgICAgKEJl
bmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50U3VpdGUpOiBEZWxldGVkLgpAQCAtMjAyOCwx
MyArMjA4MSwxMyBAQAogICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLmlzRmlyc3RU
ZXN0KTogRGVsZXRlZC4KICAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5wcmVwYXJl
Q3VycmVudFN1aXRlKTogRGVsZXRlZC4KICAgICAgICAgQmVuY2htYXJrU3RhdGUgd2FzIHJlbmFt
ZWQgdG8gQmVuY2htYXJrUnVubmVyU3RhdGUgdG8gbm90IGJlIGNvbmZ1c2VkIHdpdGggdGhlIHRl
c3RzIEJlbmNobWFya1N0YXRlLgotICAgICAgICAKKwogICAgICAgICAqIEFuaW1vbWV0ZXIvcnVu
bmVyL3Jlc291cmNlcy9kMy5taW4uanM6IENvcGllZCBmcm9tIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjIvanMvZDMvZDMubWluLmpzLgogICAgICAgICBOZWVkZWQgZm9yIGRyYXdp
bmcgY2hhcnRzIGZvciB0aGUgc2FtcGxlZCBzY29yZXMgYW5kIGZyYW1lIHJhdGVzLgotICAgICAg
ICAKKwogICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9ncmFwaC5qczogQWRk
ZWQuCiAgICAgICAgIChncmFwaCk6IERyYXdzIGEgY2hhcnQgZm9yIGEgdGVzdCBzYW1wbGVkIGRh
dGEuIEl0IHNob3dzIHR3byB5LWF4ZXM6IG9uZSBmb3IgdGhlIGFuaW1hdGVkIGl0ZW1zIGFuZCB0
aGUgc2Vjb25kIGZvciBGUFMuCi0gICAgICAgICAgICAgICAgCisKICAgICAgICAgKiBTa2lwcGVk
OiBTa2lwIHRoZSBBbmltb21ldGVyIGJlbmNobWFyayBmb3Igbm93LgogCiAyMDE1LTA4LTI3ICBD
c2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CkBAIC0yMTEzLDcgKzIxNjYsNyBA
QAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2Mzc4
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCi0gICAgICAgIAorCiAgICAgICAgIFRo
ZSBjdXJyZW50IHBlcmNlbnRpbGUgaXMgOTUlLiAgV2hlbiBJIGxvb2tlZCBhdCB0aGUgc2FtcGxl
IGxpc3RzIGluIG91ciBHQywgaXQgd2FzCiAgICAgICAgIGNsZWFyIHRoYXQgdGhlIHdvcnN0IDUl
IHNhbXBsZXMgY29tcGxldGVseSBhbW9ydGl6ZSBvdXIgR0MgcGF1c2VzLiAgT3VyIEdDIHBhdXNl
cyBjYW4KICAgICAgICAgYmUgcXVpdGUgYmFkLiAgQ2xlYXJseSwgc3BsYXktbGF0ZW5jeSBpcyBt
ZWFudCB0byB0ZXN0IHdoZXRoZXIgd2UgaGF2ZSBhbiBpbmNyZW1lbnRhbApAQCAtMjE2NSwzNCAr
MjIxOCwzNCBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ2MTU2CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCi0gICAgICAg
IAorCiAgICAgICAgIFRoaXMgYWRkcyBhIEphdmFTY3JpcHQgcG9ydCBvZiB0aGUgQ0R4IHJlYWwt
dGltZSBiZW5jaG1hcmsgdG8gSmV0U3RyZWFtLCBhbmQgcmV0aXJlcwogICAgICAgICB0aGUgY29y
ZGljIHRlc3QgYmVjYXVzZSBpdCB3YXMgcHJldmlvdXNseSB0aGUgc21hbGxlc3QgYW5kIHByb2Jh
Ymx5IGxlYXN0IGludGVyZXN0aW5nLgotICAgICAgICAKKwogICAgICAgICBUaGUgbmV3IHRlc3Qs
ICJjZGpzIiwgaXMgbW9zdGx5IGEgZmFpdGhmdWwgcmV3cml0ZSBvZiB0aGUgSmF2YSBjb2RlIGlu
dG8gSmF2YVNjcmlwdC4KICAgICAgICAgSSBnb3QgdGhlIEphdmEgY29kZSBmcm9tIGh0dHBzOi8v
d3d3LmNzLnB1cmR1ZS5lZHUvc3NzL3Byb2plY3RzL2NkeC8uCi0gICAgICAgIAorCiAgICAgICAg
IFRoZXJlIGFyZSBzb21lIGRpZmZlcmVuY2VzOgotICAgICAgICAKKwogICAgICAgICAtIEl0IHVz
ZXMgUmVkQmxhY2tUcmVlJ3MgZm9yIGFsbCBzZXRzIGFuZCBtYXBzIHJhdGhlciB0aGFuIGhhc2h0
YWJsZXMuIFRoaXMgaXMgY2xlYXJseQogICAgICAgICAgIG1vcmUgaW4gdGhlIHNwaXJpdCBvZiBy
ZWFsLXRpbWUgdGhhbiB0aGUgQ0R4IGJlbmNobWFyay4gRldJVywgQ0R4IHVzZWQgdG8gdXNlIHRy
ZWVzCiAgICAgICAgICAgYW5kIEkgZG9uJ3Qga25vdyB3aHkgdGhhdCBjaGFuZ2VkIGluIHRoZSBs
YXRlc3QgdmVyc2lvbi4KLSAgICAgICAgCisKICAgICAgICAgLSBDRGpzIGRvZXNuJ3QgYXR0ZW1w
dCB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHVubGlrZSB0aGUgcmVhbC10aW1lIEphdmEg
dmVyc2lvbi4KICAgICAgICAgICBJIHdyb3RlIHRoZSBjb2RlIHRoYXQgSSB3YW50ZWQgdG8gd3Jp
dGUgZm9yIGFlc3RoZXRpY3MsIHJhdGhlciB0aGFuIHRoZSBjb2RlIHRoYXQgSQogICAgICAgICAg
IHdvdWxkIGhhdmUgd3JpdHRlbiBpZiBJIHRyaWVkIHRvIHdyaXRlIHRoZSBmYXN0ZXN0IGNvZGUg
cG9zc2libGUuIEFnYWluLCBJIGJlbGlldmUKICAgICAgICAgICB0aGF0IHRoaXMgaXMgaW4gdGhl
IHNwaXJpdCBvZiBDRGogLSBpdCdzIG1lYW50IHRvIHRlc3Qgd2hhdCB3b3VsZCBoYXBwZW4gaWYg
eW91IHdyb3RlCiAgICAgICAgICAgcmVhbC10aW1leSBzdHVmZiBpbiBhIGhpZ2ggbGV2ZWwgbGFu
Z3VhZ2UgYW5kIGFjdHVhbGx5IHRvb2sgYWR2YW50YWdlIG9mIHRoYXQKICAgICAgICAgICBsYW5n
dWFnZSB0byBiZSBtb3JlIHByb2R1Y3RpdmUuCi0gICAgICAgIAorCiAgICAgICAgIFRoZSB0ZXN0
IHNjb3JlIHJlZmxlY3RzIHRoZSBhdmVyYWdlIGxhdGVuY3kgb2YgdGhlIHdvcnN0IDEwIHNhbXBs
ZXMgb3V0IG9mIDIwMCBzYW1wbGVzLgogICAgICAgICBUaGUgc2ltdWxhdGlvbiB1c2VzIDEwMDAg
YWlyY3JhZnQsIGZseWluZyBhbG9uZyBwYXRocyB0aGF0IHJlc3VsdCBpbiBzb21lIGRldGVjdGVk
CiAgICAgICAgIGNvbGxpc2lvbnMgZXZlcnkgb25jZSBpbiBhIHdoaWxlLiBUaGUgYmVuY2htYXJr
IHZhbGlkYXRlcyBpdHMgcmVzdWx0cyBieSBjaGVja2luZyB0aGUKICAgICAgICAgdG90YWwgbnVt
YmVyIG9mIGNvbGxpc2lvbnMgZGV0ZWN0ZWQuCi0gICAgICAgIAorCiAgICAgICAgIEFwYXJ0IGZy
b20gdGhlIGludGVncmF0aW9uIGludG8gdGhlIEpldFN0cmVhbSBoYXJuZXNzLCB0aGUgQ0RqcyBk
aXJlY3RvcnkgY29udGFpbnMgYQogICAgICAgICBmdWxseSBzZWxmLWNvbnRhaW5lZCBiZW5jaG1h
cmsgdGhhdCBjb3VsZCBiZSBydW4gZWl0aGVyIGluIHRoZSBqc2Mgc2hlbGwgb3IgaW4gYnJvd3Nl
ci4KLSAgICAgICAgCisKICAgICAgICAgVGhpcyBuZXcgY29kZSB1c2VzIHRoZSBzYW1lIDMtY2xh
dXNlIEJTRCBsaWNlbnNlIGFzIHRoZSBQdXJkdWUgY29kZSwgYW5kIGdpdmVzCiAgICAgICAgIGF0
dHJpYnV0aW9uIHRvIFB1cmR1ZSBpbiBhbG1vc3QgYWxsIGZpbGVzLiBJIGJlbGlldmUgdGhhdCBp
cyBhcHByb3ByaWF0ZSBzaW5jZSBJIHdyb3RlCiAgICAgICAgIG1vc3Qgb2YgdGhlIEpTIGZpbGVz
IGJ5IGxvb2tpbmcgYXQgdGhlIFB1cmR1ZSBKYXZhIGNvZGUgYW5kIHRyYXNjcmliaW5nIHRvIEph
dmFTY3JpcHQuCkBAIC0yMzAwLDcgKzIzNTMsNyBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NzYyCiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2Vv
ZmZyZXkgR2FyZW4uCi0gICAgICAgIAorCiAgICAgICAgIEpldFN0cmVhbSBoYXMgc29tZSBsYXRl
bmN5IHRlc3RzIHRoYXQgYXJlIG1lYW50IHRvIG1lYXN1cmUgaml0dGVyLiAgUHJpb3IgdG8gdGhp
cyBjaGFuZ2UsIHRoZXkKICAgICAgICAgZGlkIHRoaXMgYnkgY29tcHV0aW5nIHRoZSBSTVMuICBC
dXQgdGhlIFJNUyBpcyBhIHByZXR0eSBiYWQgbWV0cmljLiAgVGhlIHRoaW5nIHRoYXQgaXQgcmV3
YXJkcwogICAgICAgICBpc24ndCByZWFsbHkgdGhlIHRoaW5nIHRoYXQgeW91J2Qgd2FudCB5b3Vy
IGJyb3dzZXIgdG8gZG8uICBUaGVzZSBSTVMtYmFzZWQgdGVzdHMgaW52b2x2ZSB0YWtpbmcKQEAg
LTIzMjEsNyArMjM3NCw3IEBACiAgICAgICAgIFRoZSB3b3JzdCAxJSBvciB0aGUgd29yc3QgNSUg
d291bGQgYmUgZ29vZCB0aGluZ3MgdG8gYXZlcmFnZS4gIFRoaXMgd2lsbCBjYXRjaCBjYXNlcyB3
aGVyZSB0aGUgVk0KICAgICAgICAgaml0dGVyZWQgZHVlIHRvIEpJVCBvciBHQywgYnV0IGl0IG5l
dmVyIGhhdmUgdGhlIHBhdGhvbG9neSB0aGF0IHdlIGVuZCB1cCBnaXZpbmcgdGhlIGJldHRlciBz
Y29yZQogICAgICAgICB0byBhIFZNIHdob3NlIGJlc3QgY2FzZSBpcyB3b3JzdCB0aGFuIGFub3Ro
ZXIgVk0ncyB3b3JzdCBjYXNlLgotICAgICAgICAKKwogICAgICAgICBGb3Igbm93LCB0aGlzIGNo
YW5nZSB1c2VzIHRoZSBoaWdoZXN0IHNhbXBsZXMgYWJvdmUgdGhlIDk1JSBwZXJjZW50aWxlLiBJ
J20gbm90IHlldCBzdXJlIGlmIHRoYXQKICAgICAgICAgaXMgdGhlIGJlc3QgdGhpbmcgLSBpdCBt
aWdodCBpbmNsdWRlIHRvbyBtYW55IHNjb3JlcyB0aGF0IGFyZSBhcm91bmQgdGhlIGJlc3QtY2Fz
ZSBwZXJmb3JtYW5jZSAtCiAgICAgICAgIGJ1dCBpdCdzIGNlcnRhaW5seSBiZXR0ZXIgdGhhbiBS
TVMgYW5kIGl0IG1pZ2h0IGJlIGdvb2QgZW5vdWdoIHRvIGtlZXAuIEJ1dCBiZWNhdXNlIG9mIHRo
YXQKQEAgLTIzNjUsNyArMjQxOCw3IEBACiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDQ2MTcKIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBH
YXJlbi4KLSAgICAgICAgCisKICAgICAgICAgQWRkIHRoZSBoYXNoLW1hcCBiZW5jaG1hcmsgdG8g
TG9uZ1NwaWRlci4gTG9uZ1NwaWRlciB3YXMgYWxyZWFkeSBub3QgYSBwZXJmZWN0IG1hdGNoIG9m
CiAgICAgICAgIFN1blNwaWRlci4gSXQncyBub3QgYW4gb2ZmaWNpYWwgYmVuY2htYXJrLiBJdCBj
b250YWlucyBiZW5jaG1hcmtzIHRoYXQgYXJlIHJlbGF0aXZlbHkKICAgICAgICAgbG9uZy1ydW5u
aW5nLiBTbywgaGFzaC1tYXAgc29ydCBvZiBiZWxvbmdzIGhlcmUuCkBAIC0yMzgwLDcgKzI0MzMs
NyBAQAogICAgICAgICBGaXggdHlwbyBidWcgaW4gU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL21haW4u
anMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDUw
NAogCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4gCisgICAgICAgIFJldmlld2Vk
IGJ5IFJ5b3N1a2UgTml3YS4KIAogICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy9tYWlu
LmpzOiBGaXggdHlwby4KICAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQudG90YWxUaW1l
SW5EaXNwbGF5VW5pdCk6CkBAIC0yNTMxLDcgKzI1ODQsNyBAQAogICAgICAgICAqIFNWRy9yZXNv
dXJjZXMvUmVuZGVyQW5pbWF0b3IuanM6IEFkZGVkLgogICAgICAgICBUaGVzZSBhcmUgYmVuY2ht
YXJrcyBmb3IgdGhlIFNWRyByZW5kZXJpbmcuIE1haW5seSB3ZSB3YW50IHRvIG1lYXN1cmUgaG93
IGZhc3QKICAgICAgICAgdGhlIFNWRyByZW5kZXJpbmcgd2lsbCBiZSB3aGVuIG9ubHkgYSBzbWFs
bCBwYXJ0IG9mIGl0IGlzIGRyYXduLgotICAgICAgICAKKwogMjAxNS0wMS0yMSAgR2VvZmZyZXkg
R2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIGJtYWxsb2M6IHN1cHBvcnQgYWxp
Z25lZCBhbGxvY2F0aW9uCkBAIC0yNjUyLDcgKzI3MDUsNyBAQAogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MjQ1CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgT2xpdmVyIEh1bnQuCi0gICAgICAgIAorCiAgICAgICAgIFRoaXMgYWRkcyB0aGUgc2NhZmZv
bGRpbmcgZm9yIHJ1bm5pbmcgT2N0YW5lIHZlcnNpb24gMiBpbnNpZGUgcnVuLWpzYy1iZW5jaG1h
cmtzLgogICAgICAgICBJbiB0aGUgZnV0dXJlIHdlIHNob3VsZCBqdXN0IGxhbmQgT2N0YW5lMiBp
biB0aGlzIGRpcmVjdG9yeSwgYW5kIHJ1bi1qc2MtYmVuY2htYXJrcwogICAgICAgICBzaG91bGQg
YmUgY2hhbmdlZCB0byBwb2ludCBkaXJlY3RseSBhdCB0aGlzIGRpcmVjdG9yeSBpbnN0ZWFkIG9m
IHJlcXVpcmluZyB0aGUKQEAgLTMzODcsNyArMzQ0MCw3IEBACiAKICAgICAgICAgW0NTUyBTaGFw
ZXNdIEFkZCBubyBzaGFwZXMgdmVyc2lvbiBvZiBSZWdpb25zU2hhcGVzIHBlcmZvcm1hbmNlIHRl
c3QKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTQ1
NQotICAgICAgICAKKwogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCiAKICAgICAg
ICAgVGhpcyBpcyBhIG5vIHNoYXBlcyB2ZXJzaW9uIG9mIHRoZSBSZWdpb25zU2hhcGVzIHBlcmZv
cm1hbmNlIHRlc3QuIEFsbCB0aGUgY29udGVudApAQCAtMzUzOCw3ICszNTkxLDcgQEAKICAgICAg
ICAgVGhlIGV4aXN0aW5nIHRlc3QgY2hlY2tzIGlmIHRoZSBsZWFkaW5nIGRpZ2l0IG9mIGEgc3Vt
IHN0YXJ0cyB3aXRoICItMSIuCiAgICAgICAgIEhvd2V2ZXIsIGl0IHR1cm5lZCBvdXQgdGhhdCB0
aGUgZXhwZWN0ZWQgc3VtIGlzIGluIHRoZSBvcmRlciBvZgogICAgICAgICAtMS44NzM1MDEzNTQw
NTQ5NTE3ZS0xNiAoaS5lLiB2ZXJ5IGNsb3NlIHRvIDApLiAgV2l0aCBzbWFsbCBlcnJvcnMgaW4K
LSAgICAgICAgdGhlIHRlcm1zIG9mIHRoZSBzdW0gYWRkaW5nIHVwLCBpdCBpcyB2ZXJ5IGVhc3kg
Zm9yIHRoZSByZXN1bHRhbnQgc3VtIAorICAgICAgICB0aGUgdGVybXMgb2YgdGhlIHN1bSBhZGRp
bmcgdXAsIGl0IGlzIHZlcnkgZWFzeSBmb3IgdGhlIHJlc3VsdGFudCBzdW0KICAgICAgICAgdG8g
Zmx1Y3R1YXRlLiAgVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIHJlc3VsdGFudCBzdW0n
cyBtb3N0CiAgICAgICAgIHNpZ25pZmljYW50IGRpZ2l0IHdpbGwgc3RhcnQgd2l0aCAtMSBlaXRo
ZXIuCiAKQEAgLTM3MDcsNyArMzc2MCw3IEBACiAKIDIwMTQtMDItMTAgIFpvbHRhbiBIb3J2YXRo
ICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKLSAgICAgICAgW0NTUyBTaGFwZXNdIEFkZCBpbml0aWFs
IHBlcmZvcm1hbmNlIHRlc3RzIGZvciBwb2x5Z29uIHNoYXBlIAorICAgICAgICBbQ1NTIFNoYXBl
c10gQWRkIGluaXRpYWwgcGVyZm9ybWFuY2UgdGVzdHMgZm9yIHBvbHlnb24gc2hhcGUKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODU1NAogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KQEAgLTQyMDYsNyArNDI1OSw3IEBACiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY1OTYKIAogICAg
ICAgICBSZXZpZXdlZCBieSBTdGVwaGFuaWUgTGV3aXMuCi0gICAgICAgIAorCiAgICAgICAgIEV4
dHJhY3RlZCBiZW5jaG1hcmstcnVubmVyLmpzIGFuZCB0ZXN0cy5qcyBvdXQgb2YgYmVuY2htYXJr
LmpzIGFuZCBiZW5jaG1hcmsuaHRtbC4KIAogICAgICAgICBBZGRlZCBhICJjbGllbnQiIGludGVy
ZmFjZSB0byBCZW5jaG1hcmtSdW5uZXIgc28gdGhhdCBiZW5jaG1hcmsuaHRtbCBjb3VsZCByZWdp
c3RlciBuZWNlc3NhcnkgaG9va3MgdG8KQEAgLTQyNDAsNyArNDI5Myw3IEBACiAgICAgICAgIChC
ZW5jaG1hcmtSdW5uZXIuc3RlcCk6IERpdHRvLgogICAgICAgICAoQmVuY2htYXJrUnVubmVyLl9y
dW5UZXN0QW5kUmVjb3JkUmVzdWx0cyk6IERpdHRvLiBOb3RlIHRoZSBjb2RlIHRvIHVwZGF0ZSB0
aGUgVUkgaGFzIGJlZW4gbW92ZSB0bwogICAgICAgICBiZW5jaG1hcmsuaHRtbC4gQWxzbyBtb3Zl
ZCB0aGUgY29kZSB0byBhY2N1bXVsYXRlIHRoZSB0b3RhbHMgaGVyZSBmcm9tIF9maW5hbGl6ZS4K
LSAgICAgICAgKEJlbmNobWFya1J1bm5lci5fZmluYWxpemUpOiBNb3ZlZC4gCisgICAgICAgIChC
ZW5jaG1hcmtSdW5uZXIuX2ZpbmFsaXplKTogTW92ZWQuCiAKICAgICAgICAgKiBEb1lvdUV2ZW5C
ZW5jaC9yZXNvdXJjZXMvdGVzdHMuanM6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvRG9Z
b3VFdmVuQmVuY2gvYmVuY2htYXJrLmh0bWwuCiAgICAgICAgIFVzZXMgQmVuY2htYXJrVGVzdFN0
ZXAgaW5zdGVhZCBvZiBhbiBhcnJheSBmb3IgZWFjaCB0ZXN0IHN0ZXAuCkBAIC00MjUwLDEyICs0
MzAzLDEyIEBACiAgICAgICAgIEFsbG93IEltYWdlQnVmZmVyIHRvIHJlLXVzZSBJT1N1cmZhY2Vz
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU0NzcK
IAotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4gCisgICAgICAgIFJldmlld2VkIGJ5
IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIFRoaXMgdGVzdCB0aW1lcyBjcmVhdGluZyBhIHZhcmll
dHkgb2YgZGlmZmVyZW50IHNpemVzIG9mIGNhbnZhc2VzCisgICAgICAgIG9uY2Ugc29tZSBoYXZl
IGFscmVhZHkgYmVlbiBjcmVhdGVkLiBUaGUgc2Vjb25kIGNyZWF0aW9uIG9mIHRoZQorICAgICAg
ICBjYW52YXNlcyBzaG91bGQgcmUtdXNlIHRoZSBleGlzdGluZyBJT1N1cmZhY2VzLgogCi0gICAg
ICAgIFRoaXMgdGVzdCB0aW1lcyBjcmVhdGluZyBhIHZhcmlldHkgb2YgZGlmZmVyZW50IHNpemVz
IG9mIGNhbnZhc2VzIAotICAgICAgICBvbmNlIHNvbWUgaGF2ZSBhbHJlYWR5IGJlZW4gY3JlYXRl
ZC4gVGhlIHNlY29uZCBjcmVhdGlvbiBvZiB0aGUgCi0gICAgICAgIGNhbnZhc2VzIHNob3VsZCBy
ZS11c2UgdGhlIGV4aXN0aW5nIElPU3VyZmFjZXMuIAotICAgICAgICAKICAgICAgICAgKiBDYW52
YXMvcmV1c2UuaHRtbDogQWRkZWQuCiAKIDIwMTMtMTItMjMgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgpAQCAtNDYwNCwxMyArNDY1NywxMyBAQAogCiAgICAgICAgIEFk
ZCBsaW5lIGxheW91dCBwZXJmb3JtYW5jZSB0ZXN0IHRoYXQgZXhlcmNpc2VzIG1vcmUgY2FzZXMK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDA0MQot
ICAgICAgICAKKwogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCiAKICAgICAg
ICAgVGhlIGV4aXN0aW5nIGxpbmUtbGF5b3V0Lmh0bWwgY292ZXJzIHRoZSBtb3N0IGJhc2ljIGxl
ZnQtYWxpZ25lZCBjYXNlIG9ubHkuCiAgICAgICAgIEFkZCBhIHRlc3Qgd2l0aCBtb3JlIGNvdmVy
YWdlIGZvciB0aGluZ3MgdGhhdCBhcmUgbW9zdGx5IG5vdCB5ZXQgc3VwcG9ydGVkIGJ5IHRoZSBz
aW1wbGUKICAgICAgICAgbGluZSBsYXlvdXQgcGF0aDoKLSAgICAgICAgCisKICAgICAgICAgLSBj
ZW50ZXJlZCB0ZXh0CiAgICAgICAgIC0gcmlnaHQgYWxpZ25lZCB0ZXh0CiAgICAgICAgIC0ganVz
dGlmaWVkIHRleHQKQEAgLTQ4OTUsNyArNDk0OCw3IEBACiAgICAgICAgICogRG9Zb3VFdmVuQmVu
Y2g6IEFkZGVkLgogICAgICAgICAqIERvWW91RXZlbkJlbmNoL2JlbmNobWFyay5odG1sOiBBZGRl
ZC4KICAgICAgICAgKiBEb1lvdUV2ZW5CZW5jaC9iZW5jaG1hcmsuanM6IEFkZGVkLgotICAgICAg
ICAoU2ltcGxlUHJvbWlzZSk6IAorICAgICAgICAoU2ltcGxlUHJvbWlzZSk6CiAgICAgICAgIChT
aW1wbGVQcm9taXNlLnByb3RvdHlwZS50aGVuKToKICAgICAgICAgKFNpbXBsZVByb21pc2UucHJv
dG90eXBlLnJlc29sdmUuZWxzZSk6CiAgICAgICAgIChTaW1wbGVQcm9taXNlLnByb3RvdHlwZS5y
ZXNvbHZlKToKQEAgLTUwMjIsNyArNTA3NSw3IEBACiAgICAgICAgIEludHJvZHVjZSBhIHZlcnNp
b24gb2YgU3VuU3BpZGVyIHRoYXQgcnVucyBmb3IgYSByZWFsbHkgbG9uZyB0aW1lIChhYm91dCAx
IHNlYyBvbiBteSBtYWNoaW5lKQogCiAgICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IE1hcmsgSGFo
bmVuYmVyZy4KLSAgICAgICAgCisKICAgICAgICAgVGhpcyBpc24ndCBtZWFudCBmb3Igc2VyaW91
cyBWTS10by1WTSBwZXJmb3JtYW5jZSBjb21wYXJpc29ucywgYnV0IGl0IGlzIHVzZWZ1bAogICAg
ICAgICB0byBzZWUgaG93IHRoZXNlIGJlbmNobWFya3MgYmVoYXZlIHdoZW4gdGhleSdyZSBjb21w
bGV0ZWx5IHdhcm1lZCB1cC4KIApAQCAtNTUxNSw3ICs1NTY4LDcgQEAKICAgICAgICAgc2luY2Ug
c3VjaCB0ZXN0cyBubyBsb25nZXIgZXhpc3QuIEFsc28gZml4ZWQgdXAgdGhlIGNvZGUgY29tcHV0
ZSB5LWF4aXMgcmFuZ2UuCiAKICAgICAgICAgKGNyZWF0ZVRhYmxlUm93Lm1hcmt1cEZvclJ1bik6
IFVwZGF0ZWQgdG8gdXNlIGNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKCkgaW5zdGVhZCBvZiBzdGRl
digpLgotICAgICAgICAKKwogICAgICAgICAoaW5pdC5hZGRUZXN0cyk6IEFkZGVkLiBSZWN1cnNp
dmVseSBhZGQgbWV0cmljcy4KIAogICAgICAgICAqIHJlc291cmNlcy9zdGF0aXN0aWNzLmpzOiBB
ZGRlZC4gSW1wb3J0ZWQgZnJvbSBwZXJmLndlYmtpdC5vcmcuCkBAIC01OTA4LDcgKzU5NjEsNyBA
QAogCiAyMDEyLTEwLTI5ICBab2x0YW4gSG9ydmF0aCAgPHpvbHRhbkB3ZWJraXQub3JnPgogCi0g
ICAgICAgIFR1cm4gUGFnZUxvYWQgdGVzdHMgaW50byBzaW1wbGUgcGVyZm9ybWFuY2V0ZXN0cywg
Y29tbWl0ICM3IChsYXN0KSAKKyAgICAgICAgVHVybiBQYWdlTG9hZCB0ZXN0cyBpbnRvIHNpbXBs
ZSBwZXJmb3JtYW5jZXRlc3RzLCBjb21taXQgIzcgKGxhc3QpCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTg5OQogCiAgICAgICAgIFJldmlld2VkIGJ5
IFJ5b3N1a2UgTml3YS4KQEAgLTU5NTIsNyArNjAwNSw3IEBACiAKIDIwMTItMTAtMjYgIFpvbHRh
biBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKLSAgICAgICAgVHVybiBQYWdlTG9hZCB0
ZXN0cyBpbnRvIHNpbXBsZSBwZXJmb3JtYW5jZXRlc3RzLCBjb21taXQgIzYgCisgICAgICAgIFR1
cm4gUGFnZUxvYWQgdGVzdHMgaW50byBzaW1wbGUgcGVyZm9ybWFuY2V0ZXN0cywgY29tbWl0ICM2
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTg5OQog
CiAgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KQEAgLTU5NzYsNyArNjAyOSw3IEBA
CiAKIDIwMTItMTAtMjYgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKLSAg
ICAgICAgVHVybiBQYWdlTG9hZCB0ZXN0cyBpbnRvIHNpbXBsZSBwZXJmb3JtYW5jZXRlc3RzLCBj
b21taXQgIzUgCisgICAgICAgIFR1cm4gUGFnZUxvYWQgdGVzdHMgaW50byBzaW1wbGUgcGVyZm9y
bWFuY2V0ZXN0cywgY29tbWl0ICM1CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTg5OQogCiAgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4K
QEAgLTYwMDIsNyArNjA1NSw3IEBACiAKIDIwMTItMTAtMjUgIFpvbHRhbiBIb3J2YXRoICA8em9s
dGFuQHdlYmtpdC5vcmc+CiAKLSAgICAgICAgVHVybiBQYWdlTG9hZCB0ZXN0cyBpbnRvIHNpbXBs
ZSBwZXJmb3JtYW5jZXRlc3RzLCBjb21taXQgIzQgCisgICAgICAgIFR1cm4gUGFnZUxvYWQgdGVz
dHMgaW50byBzaW1wbGUgcGVyZm9ybWFuY2V0ZXN0cywgY29tbWl0ICM0CiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTg5OQogCiAgICAgICAgIFJldmll
d2VkIGJ5IFJ5b3N1a2UgTml3YS4KQEAgLTYwMjMsNyArNjA3Niw3IEBACiAKIDIwMTItMTAtMjUg
IFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKLSAgICAgICAgVHVybiBQYWdl
TG9hZCB0ZXN0cyBpbnRvIHNpbXBsZSBwZXJmb3JtYW5jZXRlc3RzLCBjb21taXQgIzMgCisgICAg
ICAgIFR1cm4gUGFnZUxvYWQgdGVzdHMgaW50byBzaW1wbGUgcGVyZm9ybWFuY2V0ZXN0cywgY29t
bWl0ICMzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
OTg5OQogCiAgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KQEAgLTYwNDksNyArNjEw
Miw3IEBACiAKIDIwMTItMTAtMjQgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+
CiAKLSAgICAgICAgVHVybiBQYWdlTG9hZCB0ZXN0cyBpbnRvIHNpbXBsZSBwZXJmb3JtYW5jZXRl
c3RzLCBjb21taXQgIzIgCisgICAgICAgIFR1cm4gUGFnZUxvYWQgdGVzdHMgaW50byBzaW1wbGUg
cGVyZm9ybWFuY2V0ZXN0cywgY29tbWl0ICMyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05OTg5OQogCiAgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2Ug
Tml3YS4KQEAgLTYwNzMsNyArNjEyNiw3IEBACiAKIDIwMTItMTAtMjQgIFpvbHRhbiBIb3J2YXRo
ICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKLSAgICAgICAgVHVybiBQYWdlTG9hZCB0ZXN0cyBpbnRv
IHNpbXBsZSBwZXJmb3JtYW5jZXRlc3RzLCBjb21taXQgIzEgCisgICAgICAgIFR1cm4gUGFnZUxv
YWQgdGVzdHMgaW50byBzaW1wbGUgcGVyZm9ybWFuY2V0ZXN0cywgY29tbWl0ICMxCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTg5OQogCiAgICAgICAg
IFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KQEAgLTkzNTIsNyArOTQwNSw3IEBACiAyMDA2LTEy
LTI2ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBicmFkZWUtb2guCi0gICAgICAgIAorCiAgICAgICAgIEFkZCBuZXcgUGFnZUxvYWRUZXN0cyBk
aXJlY3RvcnkgKHRoaXMgb25lKQogICAgICAgICBBZGQgTElDRU5TRVMgZmlsZSB0byBleHBsYWlu
IHdoZXJlIGVhY2ggU1ZHIGNhbWUgZnJvbS4KIAotLSAKMi41LjQgKEFwcGxlIEdpdC02MSkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267957</attachid>
            <date>2015-12-28 10:08:03 -0800</date>
            <delta_ts>2015-12-28 10:08:03 -0800</delta_ts>
            <desc>4. Get rid of stage.js, StageAnimator, and StageBenchmark</desc>
            <filename>0004-Simplify-the-test-harness.patch</filename>
            <type>text/plain</type>
            <size>25905</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSA2YTc0YmIwOTFjNTJkYTliZDFmYjg0OWIyY2M4NDU4NzMyYjI2OTM3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDI3IERlYyAyMDE1IDAzOjE3OjI0IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAwNC8xM10gU2ltcGxp
ZnkgdGhlIHRlc3QgaGFybmVzcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjU2MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpHZXQgcmlkIG9mIHN0YWdl
LmpzLCBTdGFnZUFuaW1hdG9yLCBhbmQgU3RhZ2VCZW5jaG1hcmsuIERvbid0IGhhdmUgdGhlIHBy
b2dyZXNzIGJhciB1cGRhdGUgZHVyaW5nIHRoZSB0ZXN0LgoKKiBBbmltb21ldGVyL3Jlc291cmNl
cy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qczoKKGluaXRpYWxpemUpOiBNb3ZlIHRoZSBzZXR0
aW5nIG9mIHRlc3RzQ291bnQgdG8gdGhlIGRlYnVnIHJ1bm5lci4KKGRpZFJ1blRlc3QpOiBOaWNl
ciBuYW1lLgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVu
bmVyLmpzOgooQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuQmVuY2htYXJrQW5kUmVjb3Jk
UmVzdWx0cyk6IERvbid0IHBhc3MgaW4gdGhlIHByb2dyZXNzIGJhciB0byBiZW5jaG1hcmtzLgoq
IEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanM6CihQcm9ncmVzc0Jhcik6IFJlZmFj
dG9yLiBNYWtlIHZhcmlhYmxlcyAicHJpdmF0ZSIuIFJlc2V0dGluZyB0aGUgcHJvZ3Jlc3Mgd2hl
biBpbnN0YW50aWF0aW5nLgooUHJvZ3Jlc3NCYXIucHJvdG90eXBlLmluY3JlbWVudFJhbmdlKTog
VGhpcyBpcyBjYWxsZWQgZXZlcnkgdGltZSBhIGJlbmNobWFyayBjb21wbGV0ZXMuCiogQW5pbW9t
ZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuanM6Cih3aW5kb3cuYmVuY2htYXJrUnVu
bmVyQ2xpZW50LmluaXRpYWxpemUpOiBSZW1vdmUgdW5uZWVkZWQgc2V0dGluZyBvZiB0ZXN0c0Nv
dW50LgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3N0cmluZ3MuanM6IFRoZXNlIGFyZSBubyBsb25n
ZXIgbmVlZGVkLgoqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL2NhbnZhcy1zdGFnZS5odG1sOiBS
ZW1vdmUgc2NyaXB0IGluY2x1c2lvbi4gT3RoZXIgdGVzdHMgd2lsbCBmb2xsb3cuCiogQW5pbW9t
ZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5qczogVXNlIEJlbmNobWFy
ayBpbnN0ZWFkIG9mIFN0YWdlQmVuY2htYXJrLgoqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2Vz
L21haW4uanM6IE1lc3NhZ2VzIGFyZSBubyBsb25nZXIgbmVlZGVkCihBbmltYXRvci5wcm90b3R5
cGUuX3Nob3VsZFJlcXVlc3RBbm90aGVyRnJhbWUpOiBSZW5hbWUgZnJvbSBhbmltYXRlKCksIHNp
bmNlIHRoaXMgbWV0aG9kIHJldHVybnMgYSBib29sZWFuCmluZGljYXRpbmcgd2hldGhlciBhbm90
aGVyIGZyYW1lIHNob3VsZCBiZSByZXF1ZXN0ZWQuIENvbGxhcHNlIHRoZSBsb2dpYyBmcm9tIFN0
YWdlQW5pbWF0b3IgaW50byBhbmltYXRlTG9vcC4KKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5j
dXJyZW50U3RhZ2UpOiBEZWxldGVkLgooQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLmN1cnJlbnRN
ZXNzYWdlKTogRGVsZXRlZC4KKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50UHJvZ3Jl
c3MpOiBEZWxldGVkLgooQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBEZWxldGVkLgooQW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGVMb29wKTogVGhlIHN0YWdlIGlzIGFuaW1hdGVkIG9ubHkg
d2hlbiB3ZSBoYXZlIGFub3RoZXIgZnJhbWUgdG8gZHJhdy4KKEJlbmNobWFyay5wcm90b3R5cGUu
cmVjb3JkKTogTm8gbmVlZCB0byB1cGRhdGUgdGhlIHByb2dyZXNzIGJhci4KKiBBbmltb21ldGVy
L3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qczogUmVtb3ZlZC4gUm90YXRlciB3aWxsIGFwcGVhciBp
biBhIGxhdGVyIHBhdGNoLCBpbiBtYWluLmpzLgotLS0KIC4uLi9yZXNvdXJjZXMvZGVidWctcnVu
bmVyL2FuaW1vbWV0ZXIuanMgICAgICAgICAgIHwgNTAgKysrKysrKystLS0tLS0tCiAuLi4vcmVz
b3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpzICAgICB8ICAyICstCiAuLi4v
QW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyAgICAgICAgICAgICB8IDcxICsrKysr
KysrKysrLS0tLS0tLS0tLS0KIC4uLi9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9t
ZXRlci5qcyAgICAgIHwgIDEgLQogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNl
cy9zdHJpbmdzLmpzICAgfCAxOCArKy0tLS0KIC4uLi9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9j
YW52YXMtc3RhZ2UuaHRtbCAgICAgIHwgIDEgLQogLi4uL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMv
Y2FudmFzLXRlc3RzLmpzICAgICAgICAgfCAgNiArLQogLi4uL0FuaW1vbWV0ZXIvdGVzdHMvcmVz
b3VyY2VzL21haW4uanMgICAgICAgICAgICAgfCAyNCArKy0tLS0tLQogLi4uL0FuaW1vbWV0ZXIv
dGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzICAgICAgICAgICAgfCA2NSAtLS0tLS0tLS0tLS0tLS0t
LS0tLQogUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
fCAzMyArKysrKysrKysrCiAxMCBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgMTYx
IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMKCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRl
ci5qcwppbmRleCA3OTMxYmExLi40OGQ1MjNhIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0
ZXIuanMKQEAgLTEsNyArMSwxMyBAQAogVXRpbGl0aWVzLmV4dGVuZE9iamVjdCh3aW5kb3cuYmVu
Y2htYXJrUnVubmVyQ2xpZW50LCB7CiAgICAgdGVzdHNDb3VudDogbnVsbCwKICAgICBwcm9ncmVz
c0JhcjogbnVsbCwKLSAgICAKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHN1aXRlcywgb3B0
aW9ucykKKyAgICB7CisgICAgICAgIHRoaXMudGVzdHNDb3VudCA9IHRoaXMuaXRlcmF0aW9uQ291
bnQgKiBzdWl0ZXMucmVkdWNlKGZ1bmN0aW9uIChjb3VudCwgc3VpdGUpIHsgcmV0dXJuIGNvdW50
ICsgc3VpdGUudGVzdHMubGVuZ3RoOyB9LCAwKTsKKyAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0
aW9uczsKKyAgICB9LAorCiAgICAgd2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb246IGZ1bmN0aW9uICgp
CiAgICAgewogICAgICAgICB0aGlzLnJlc3VsdHMgPSBuZXcgUmVzdWx0c0Rhc2hib2FyZCgpOwpA
QCAtMTAsNyArMTYsNyBAQCBVdGlsaXRpZXMuZXh0ZW5kT2JqZWN0KHdpbmRvdy5iZW5jaG1hcmtS
dW5uZXJDbGllbnQsIHsKIAogICAgIGRpZFJ1blRlc3Q6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIHRoaXMucHJvZ3Jlc3NCYXIuaW5jUmFuZ2UoKTsKKyAgICAgICAgdGhpcy5wcm9ncmVzc0Jh
ci5pbmNyZW1lbnRSYW5nZSgpOwogICAgIH0KIH0pOwogCkBAIC0zMCw3ICszNiw3IEBAIHdpbmRv
dy5vcHRpb25zTWFuYWdlciA9CiAgICAgICAgICAgICByZXR1cm4gZm9ybUVsZW1lbnQuY2hlY2tl
ZDsKICAgICAgICAgcmV0dXJuIGZvcm1FbGVtZW50LnZhbHVlOwogICAgIH0sCi0gICAgCisKICAg
ICB1cGRhdGVVSUZyb21Mb2NhbFN0b3JhZ2U6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZh
ciBmb3JtRWxlbWVudHMgPSBkb2N1bWVudC5mb3Jtc1siYmVuY2htYXJrLW9wdGlvbnMiXS5lbGVt
ZW50czsKQEAgLTU2LDcgKzYyLDcgQEAgd2luZG93Lm9wdGlvbnNNYW5hZ2VyID0KICAgICB1cGRh
dGVMb2NhbFN0b3JhZ2VGcm9tVUk6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBmb3Jt
RWxlbWVudHMgPSBkb2N1bWVudC5mb3Jtc1siYmVuY2htYXJrLW9wdGlvbnMiXS5lbGVtZW50czsK
LSAgICAgICAgdmFyIG9wdGlvbnMgPSB7fTsgICAgICAgIAorICAgICAgICB2YXIgb3B0aW9ucyA9
IHt9OwogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZm9ybUVsZW1lbnRzLmxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICB2YXIgZm9ybUVsZW1lbnQgPSBmb3JtRWxlbWVudHNbaV07CkBA
IC02OSwxMCArNzUsMTAgQEAgd2luZG93Lm9wdGlvbnNNYW5hZ2VyID0KICAgICAgICAgICAgICAg
ICBvcHRpb25zW25hbWVdID0gZm9ybUVsZW1lbnQuY2hlY2tlZDsKICAgICAgICAgICAgIGVsc2Ug
aWYgKHR5cGUgPT0gInJhZGlvIikKICAgICAgICAgICAgICAgICBvcHRpb25zW25hbWVdID0gZm9y
bUVsZW1lbnRzW25hbWVdLnZhbHVlOwotICAgIAorCiAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uu
c2V0SXRlbShuYW1lLCBvcHRpb25zW25hbWVdKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAg
ICAgICByZXR1cm4gb3B0aW9uczsKICAgICB9CiB9CkBAIC04MywxMiArODksMTIgQEAgd2luZG93
LnN1aXRlc01hbmFnZXIgPQogICAgIHsKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoIiNzdWl0ZXMgPiAudHJlZSIpOwogICAgIH0sCi0gICAgCisKICAgICBfc3VpdGVzRWxl
bWVudHM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCIjc3VpdGVzID4gdWwgPiBsaSIpOwogICAgIH0sCi0gICAgCisKICAgICBfY2hl
Y2tib3hFbGVtZW50OiBmdW5jdGlvbihlbGVtZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQucXVlcnlTZWxlY3RvcigiaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpub3QoLmV4cGFuZC1i
dXR0b24pIik7CkBAIC0xMDMsNyArMTA5LDcgQEAgd2luZG93LnN1aXRlc01hbmFnZXIgPQogICAg
IHsKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNzdWl0ZXMgaW5w
dXRbdHlwZT0nbnVtYmVyJ10iKTsKICAgICB9LAotICAgICAgICAKKwogICAgIF9sb2NhbFN0b3Jh
Z2VOYW1lRm9yVGVzdDogZnVuY3Rpb24oc3VpdGVOYW1lLCB0ZXN0TmFtZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBzdWl0ZU5hbWUgKyAiLyIgKyB0ZXN0TmFtZTsKQEAgLTEyNSwxNyArMTMxLDE3
IEBAIHdpbmRvdy5zdWl0ZXNNYW5hZ2VyID0KICAgICB7CiAgICAgICAgIHZhciBzdWl0ZXNFbGVt
ZW50cyA9IHRoaXMuX3N1aXRlc0VsZW1lbnRzKCk7CiAgICAgICAgIHZhciBzdGFydEJ1dHRvbiA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNpbnRybyBidXR0b24iKTsKLSAgICAgICAgCisKICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdWl0ZXNFbGVtZW50cy5sZW5ndGg7ICsraSkgewog
ICAgICAgICAgICAgdmFyIHN1aXRlRWxlbWVudCA9IHN1aXRlc0VsZW1lbnRzW2ldOwogICAgICAg
ICAgICAgdmFyIHN1aXRlQ2hlY2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQoc3VpdGVFbGVt
ZW50KTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoc3VpdGVDaGVja2JveC5jaGVj
a2VkKSB7CiAgICAgICAgICAgICAgICAgc3RhcnRCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAKKwog
ICAgICAgICBzdGFydEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7CiAgICAgfSwKIApAQCAtMTQ0LDcg
KzE1MCw3IEBAIHdpbmRvdy5zdWl0ZXNNYW5hZ2VyID0KICAgICAgICAgdmFyIHNlbGVjdGVkID0g
ZXZlbnQudGFyZ2V0LmNoZWNrZWQ7CiAgICAgICAgIGV2ZW50LnRhcmdldC50ZXN0c0VsZW1lbnRz
LmZvckVhY2goZnVuY3Rpb24odGVzdEVsZW1lbnQpIHsKICAgICAgICAgICAgIHZhciB0ZXN0Q2hl
Y2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQodGVzdEVsZW1lbnQpOwotICAgICAgICAgICAg
dGVzdENoZWNrYm94LmNoZWNrZWQgPSBzZWxlY3RlZDsgICAgICAgIAorICAgICAgICAgICAgdGVz
dENoZWNrYm94LmNoZWNrZWQgPSBzZWxlY3RlZDsKICAgICAgICAgfSwgdGhpcyk7CiAgICAgICAg
IHRoaXMuX3VwZGF0ZVN0YXJ0QnV0dG9uU3RhdGUoKTsKICAgICB9LApAQCAtMjAxLDcgKzIwNyw3
IEBAIHdpbmRvdy5zdWl0ZXNNYW5hZ2VyID0KICAgICAgICAgICAgIH0sIHRoaXMpOwogICAgICAg
ICB9LCB0aGlzKTsKICAgICB9LAotICAgIAorCiAgICAgdXBkYXRlRWRpdHNFbGVtZW50c1N0YXRl
OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgZWRpdHNFbGVtZW50cyA9IHRoaXMuX2Vk
aXRzRWxlbWVudHMoKTsKQEAgLTIyNCwxNyArMjMwLDE3IEBAIHdpbmRvdy5zdWl0ZXNNYW5hZ2Vy
ID0KICAgICB1cGRhdGVVSUZyb21Mb2NhbFN0b3JhZ2U6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHZhciBzdWl0ZXNFbGVtZW50cyA9IHRoaXMuX3N1aXRlc0VsZW1lbnRzKCk7Ci0gICAgICAg
IAorCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3VpdGVzRWxlbWVudHMubGVuZ3RoOyAr
K2kpIHsKICAgICAgICAgICAgIHZhciBzdWl0ZUVsZW1lbnQgPSBzdWl0ZXNFbGVtZW50c1tpXTsK
ICAgICAgICAgICAgIHZhciBzdWl0ZUNoZWNrYm94ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50KHN1
aXRlRWxlbWVudCk7CiAgICAgICAgICAgICB2YXIgc3VpdGUgPSBzdWl0ZUNoZWNrYm94LnN1aXRl
OwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIHN1aXRlQ2hlY2tib3gudGVzdHNFbGVtZW50
cy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3RFbGVtZW50KSB7CiAgICAgICAgICAgICAgICAgdmFyIHRl
c3RDaGVja2JveCA9IHRoaXMuX2NoZWNrYm94RWxlbWVudCh0ZXN0RWxlbWVudCk7CiAgICAgICAg
ICAgICAgICAgdmFyIHRlc3RFZGl0ID0gdGhpcy5fZWRpdEVsZW1lbnQodGVzdEVsZW1lbnQpOwog
ICAgICAgICAgICAgICAgIHZhciB0ZXN0ID0gdGVzdENoZWNrYm94LnRlc3Q7Ci0gICAgICAgICAg
ICAgICAgCisKICAgICAgICAgICAgICAgICB2YXIgc3RyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0o
dGhpcy5fbG9jYWxTdG9yYWdlTmFtZUZvclRlc3Qoc3VpdGUubmFtZSwgdGVzdC5uYW1lKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0ciA9PT0gbnVsbCkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjQ2LDcgKzI1Miw3IEBAIHdpbmRvdy5zdWl0ZXNNYW5hZ2VyID0KIAogICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlU3VpdGVDaGVja2JveFN0YXRlKHN1aXRlQ2hlY2tib3gpOwogICAg
ICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX3VwZGF0ZVN0YXJ0QnV0dG9uU3RhdGUo
KTsKICAgICB9LAogCkBAIC0yNTQsNyArMjYwLDcgQEAgd2luZG93LnN1aXRlc01hbmFnZXIgPQog
ICAgIHsKICAgICAgICAgdmFyIHN1aXRlc0VsZW1lbnRzID0gdGhpcy5fc3VpdGVzRWxlbWVudHMo
KTsKICAgICAgICAgdmFyIHN1aXRlcyA9IFtdOwotICAgICAgICAKKwogICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHN1aXRlc0VsZW1lbnRzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2
YXIgc3VpdGVFbGVtZW50ID0gc3VpdGVzRWxlbWVudHNbaV07CiAgICAgICAgICAgICB2YXIgc3Vp
dGVDaGVja2JveCA9IHRoaXMuX2NoZWNrYm94RWxlbWVudChzdWl0ZUVsZW1lbnQpOwpAQCAtMjY1
LDEzICsyNzEsMTMgQEAgd2luZG93LnN1aXRlc01hbmFnZXIgPQogICAgICAgICAgICAgICAgIHZh
ciB0ZXN0Q2hlY2tib3ggPSB0aGlzLl9jaGVja2JveEVsZW1lbnQodGVzdEVsZW1lbnQpOwogICAg
ICAgICAgICAgICAgIHZhciB0ZXN0RWRpdCA9IHRoaXMuX2VkaXRFbGVtZW50KHRlc3RFbGVtZW50
KTsKICAgICAgICAgICAgICAgICB2YXIgdGVzdCA9IHRlc3RDaGVja2JveC50ZXN0OwotICAgICAg
ICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgaWYgKHRlc3RDaGVja2JveC5jaGVja2VkKSB7
CiAgICAgICAgICAgICAgICAgICAgIHRlc3QuY29tcGxleGl0eSA9IHRlc3RFZGl0LnZhbHVlOwog
ICAgICAgICAgICAgICAgICAgICB0ZXN0cy5wdXNoKHRlc3QpOwogICAgICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHsgY2hlY2tlZDogdGVzdENoZWNrYm94LmNo
ZWNrZWQsIGNvbXBsZXhpdHk6IHRlc3RFZGl0LnZhbHVlIH07IAorICAgICAgICAgICAgICAgIHZh
ciB2YWx1ZSA9IHsgY2hlY2tlZDogdGVzdENoZWNrYm94LmNoZWNrZWQsIGNvbXBsZXhpdHk6IHRl
c3RFZGl0LnZhbHVlIH07CiAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhp
cy5fbG9jYWxTdG9yYWdlTmFtZUZvclRlc3Qoc3VpdGUubmFtZSwgdGVzdC5uYW1lKSwgSlNPTi5z
dHJpbmdpZnkodmFsdWUpKTsKICAgICAgICAgICAgIH0sIHRoaXMpOwogCkBAIC0yODEsNyArMjg3
LDcgQEAgd2luZG93LnN1aXRlc01hbmFnZXIgPQogCiAgICAgICAgIHJldHVybiBzdWl0ZXM7CiAg
ICAgfSwKLSAgICAKKwogICAgIHVwZGF0ZUxvY2FsU3RvcmFnZUZyb21KU09OOiBmdW5jdGlvbihp
dGVyYXRpb25SZXN1bHRzKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgc3VpdGVOYW1lIGluIGl0
ZXJhdGlvblJlc3VsdHNbU3RyaW5ncy5qc29uLnJlc3VsdHMuc3VpdGVzXSkgewpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVu
Y2htYXJrLXJ1bm5lci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMv
ZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMKaW5kZXggNDJkOTJkMi4uMzc2YjUxYiAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1y
dW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpzCkBAIC05Myw3ICs5
Myw3IEBAIEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIFV0aWxpdGllcy5l
eHRlbmRPYmplY3Qob3B0aW9ucywgdGhpcy5fY2xpZW50Lm9wdGlvbnMpOwogICAgICAgICBVdGls
aXRpZXMuZXh0ZW5kT2JqZWN0KG9wdGlvbnMsIGNvbnRlbnRXaW5kb3cuVXRpbGl0aWVzLnBhcnNl
UGFyYW1ldGVycygpKTsKIAotICAgICAgICB2YXIgYmVuY2htYXJrID0gbmV3IGNvbnRlbnRXaW5k
b3cuYmVuY2htYXJrQ2xhc3Mob3B0aW9ucywgdGhpcy5fY2xpZW50LnByb2dyZXNzQmFyKTsKKyAg
ICAgICAgdmFyIGJlbmNobWFyayA9IG5ldyBjb250ZW50V2luZG93LmJlbmNobWFya0NsYXNzKG9w
dGlvbnMpOwogICAgICAgICBiZW5jaG1hcmsucnVuKCkudGhlbihmdW5jdGlvbihzYW1wbGVyKSB7
CiAgICAgICAgICAgICB2YXIgc2FtcGxlcnMgPSBzZWxmLl9zdWl0ZXNTYW1wbGVyc1tzdWl0ZS5u
YW1lXSB8fCB7fTsKICAgICAgICAgICAgIHNhbXBsZXJzW3Rlc3QubmFtZV0gPSBzYW1wbGVyLnRv
SlNPTih0cnVlLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9y
ZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcwppbmRleCA4NjA3Njg4Li44NGNjMWZkIDEwMDY0NAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzCkBA
IC03NiwzNCArNzYsMzQgQEAgUG9pbnQucHJvdG90eXBlID0KICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLng7CiAgICAgfSwKLSAgICAKKwogICAgIC8vIFVzZWQgd2hlbiB0aGUgcG9pbnQgb2Jq
ZWN0IGlzIHVzZWQgYXMgYSBzaXplIG9iamVjdC4KICAgICBnZXQgaGVpZ2h0KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLnk7CiAgICAgfSwKLSAgICAKKwogICAgIC8vIFVzZWQgd2hlbiB0
aGUgcG9pbnQgb2JqZWN0IGlzIHVzZWQgYXMgYSBzaXplIG9iamVjdC4KICAgICBnZXQgY2VudGVy
KCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54IC8gMiwgdGhpcy55IC8g
Mik7CiAgICAgfSwKLSAgICAKKwogICAgIGFkZDogZnVuY3Rpb24ob3RoZXIpCiAgICAgewogICAg
ICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMueCArIG90aGVyLngsIHRoaXMueSArIG90aGVyLnkp
OwogICAgIH0sCi0gICAgCisKICAgICBzdWJ0cmFjdDogZnVuY3Rpb24ob3RoZXIpCiAgICAgewog
ICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMueCAtIG90aGVyLngsIHRoaXMueSAtIG90aGVy
LnkpOwogICAgIH0sCi0gICAgCisKICAgICBtdWx0aXBseTogZnVuY3Rpb24ob3RoZXIpCiAgICAg
ewogICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMueCAqIG90aGVyLngsIHRoaXMueSAqIG90
aGVyLnkpOwogICAgIH0sCi0gICAgCisKICAgICBtb3ZlOiBmdW5jdGlvbihhbmdsZSwgdmVsb2Np
dHksIHRpbWVEZWx0YSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmFkZChQb2ludC5wb2lu
dE9uQ2lyY2xlKGFuZ2xlLCB2ZWxvY2l0eSAqICh0aW1lRGVsdGEgLyAxMDAwKSkpOwpAQCAtMTM5
LDcgKzEzOSw3IEBAIEluc2V0cy5wcm90b3R5cGUgPQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMudG9wICsgdGhpcy5ib3R0b207CiAgICAgfSwKLSAgICAKKwogICAgIGdldCBzaXplKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy53aWR0aCwgdGhpcy5oZWlnaHQpOwpA
QCAtMTU2LDEwICsxNTYsMTAgQEAgU2ltcGxlUHJvbWlzZS5wcm90b3R5cGUudGhlbiA9IGZ1bmN0
aW9uIChjYWxsYmFjaykKIHsKICAgICBpZiAodGhpcy5fY2FsbGJhY2spCiAgICAgICAgIHRocm93
ICJTaW1wbGVQcm9taXNlIGRvZXNuJ3Qgc3VwcG9ydCBtdWx0aXBsZSBjYWxscyB0byB0aGVuIjsK
LSAgICAgICAgCisKICAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNrOwogICAgIHRoaXMuX2No
YWluZWRQcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7Ci0gICAgCisKICAgICBpZiAodGhpcy5f
cmVzb2x2ZWQpCiAgICAgICAgIHRoaXMucmVzb2x2ZSh0aGlzLl9yZXNvbHZlZFZhbHVlKTsKIApA
QCAtMjAxLDEzICsyMDEsMTMgQEAgd2luZG93LkRvY3VtZW50RXh0ZW5zaW9uID0KICAgICAgICAg
Y29uc3QgeGxpbmtOYW1lc3BhY2UgPSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI7CiAK
ICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTmFtZXNw
YWNlLCBuYW1lKTsKLSAgICAgICAgCisKICAgICAgICAgZm9yICh2YXIga2V5IGluIGF0dHJzKQog
ICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyc1trZXldKTsKLSAgICAg
ICAgICAgIAorCiAgICAgICAgIGZvciAodmFyIGtleSBpbiB4bGlua0F0dHJzKQogICAgICAgICAg
ICAgZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyh4bGlua05hbWVzcGFjZSwga2V5LCB4bGlua0F0dHJz
W2tleV0pOwotICAgICAgICAgICAgCisKICAgICAgICAgcGFyZW50RWxlbWVudC5hcHBlbmRDaGls
ZChlbGVtZW50KTsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgfQpAQCAtMjE1LDI2ICsy
MTUsMjMgQEAgd2luZG93LkRvY3VtZW50RXh0ZW5zaW9uID0KIAogZnVuY3Rpb24gUHJvZ3Jlc3NC
YXIoZWxlbWVudCwgcmFuZ2VzKQogewotICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7Ci0gICAg
dGhpcy5yYW5nZXMgPSByYW5nZXM7Ci0gICAgdGhpcy5jdXJyZW50UmFuZ2UgPSAwOworICAgIHRo
aXMuX2VsZW1lbnQgPSBlbGVtZW50OworICAgIHRoaXMuX3JhbmdlcyA9IHJhbmdlczsKKyAgICB0
aGlzLl9jdXJyZW50UmFuZ2UgPSAwOworICAgIHRoaXMuX3VwZGF0ZUVsZW1lbnQoKTsKIH0KIAog
UHJvZ3Jlc3NCYXIucHJvdG90eXBlID0KIHsKLSAgICBfcHJvZ3Jlc3NUb1BlcmNlbnQ6IGZ1bmN0
aW9uKHByb2dyZXNzKQorICAgIF91cGRhdGVFbGVtZW50OiBmdW5jdGlvbigpCiAgICAgewotICAg
ICAgICByZXR1cm4gcHJvZ3Jlc3MgKiAoMTAwIC8gdGhpcy5yYW5nZXMpOworICAgICAgICB0aGlz
Ll9lbGVtZW50LnN0eWxlLndpZHRoID0gKHRoaXMuX2N1cnJlbnRSYW5nZSAqICgxMDAgLyB0aGlz
Ll9yYW5nZXMpKSArICIlIjsKICAgICB9LAotICAgIAotICAgIGluY1JhbmdlOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICArK3RoaXMuY3VycmVudFJhbmdlOwotICAgIH0sCi0gICAgCi0gICAg
c2V0UG9zOiBmdW5jdGlvbihwcm9ncmVzcykKKworICAgIGluY3JlbWVudFJhbmdlOiBmdW5jdGlv
bigpCiAgICAgewotICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9wcm9n
cmVzc1RvUGVyY2VudCh0aGlzLmN1cnJlbnRSYW5nZSArIHByb2dyZXNzKSArICIlIjsKKyAgICAg
ICAgKyt0aGlzLl9jdXJyZW50UmFuZ2U7CisgICAgICAgIHRoaXMuX3VwZGF0ZUVsZW1lbnQoKTsK
ICAgICB9CiB9CiAKQEAgLTI0OCwyNSArMjQ1LDI1IEBAIFJlc3VsdHNEYXNoYm9hcmQucHJvdG90
eXBlID0KIHsKICAgICBwdXNoOiBmdW5jdGlvbihzdWl0ZXNTYW1wbGVycykKICAgICB7Ci0gICAg
ICAgIHRoaXMuX2l0ZXJhdGlvbnNTYW1wbGVycy5wdXNoKHN1aXRlc1NhbXBsZXJzKTsgICAgICAg
IAorICAgICAgICB0aGlzLl9pdGVyYXRpb25zU2FtcGxlcnMucHVzaChzdWl0ZXNTYW1wbGVycyk7
CiAgICAgfSwKLSAgICAKKwogICAgIF9wcm9jZXNzRGF0YTogZnVuY3Rpb24oc3RhdGlzdGljcywg
Z3JhcGgpCiAgICAgewogICAgICAgICB2YXIgaXRlcmF0aW9uc1Jlc3VsdHMgPSBbXTsKICAgICAg
ICAgdmFyIGl0ZXJhdGlvbnNTY29yZXMgPSBbXTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5f
aXRlcmF0aW9uc1NhbXBsZXJzLmZvckVhY2goZnVuY3Rpb24oaXRlcmF0aW9uU2FtcGxlcnMsIGlu
ZGV4KSB7CiAgICAgICAgICAgICB2YXIgc3VpdGVzUmVzdWx0cyA9IHt9OwogICAgICAgICAgICAg
dmFyIHN1aXRlc1Njb3JlcyA9IFtdOwotICAgICAgICAKKwogICAgICAgICAgICAgZm9yICh2YXIg
c3VpdGVOYW1lIGluIGl0ZXJhdGlvblNhbXBsZXJzKSB7CiAgICAgICAgICAgICAgICAgdmFyIHN1
aXRlID0gc3VpdGVGcm9tTmFtZShzdWl0ZU5hbWUpOwogICAgICAgICAgICAgICAgIHZhciBzdWl0
ZVNhbXBsZXJEYXRhID0gaXRlcmF0aW9uU2FtcGxlcnNbc3VpdGVOYW1lXTsKIAogICAgICAgICAg
ICAgICAgIHZhciB0ZXN0c1Jlc3VsdHMgPSB7fTsKICAgICAgICAgICAgICAgICB2YXIgdGVzdHNT
Y29yZXMgPSBbXTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGZvciAodmFy
IHRlc3ROYW1lIGluIHN1aXRlU2FtcGxlckRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgdGVz
dHNSZXN1bHRzW3Rlc3ROYW1lXSA9IHN1aXRlU2FtcGxlckRhdGFbdGVzdE5hbWVdOwogICAgICAg
ICAgICAgICAgICAgICB0ZXN0c1Njb3Jlcy5wdXNoKHRlc3RzUmVzdWx0c1t0ZXN0TmFtZV1bU3Ry
aW5ncy5qc29uLnNjb3JlXSk7CkBAIC0yNzcsNyArMjc0LDcgQEAgUmVzdWx0c0Rhc2hib2FyZC5w
cm90b3R5cGUgPQogICAgICAgICAgICAgICAgIHN1aXRlc1Jlc3VsdHNbc3VpdGVOYW1lXVtTdHJp
bmdzLmpzb24ucmVzdWx0cy50ZXN0c10gPSB0ZXN0c1Jlc3VsdHM7CiAgICAgICAgICAgICAgICAg
c3VpdGVzU2NvcmVzLnB1c2goc3VpdGVzUmVzdWx0c1tzdWl0ZU5hbWVdW1N0cmluZ3MuanNvbi5z
Y29yZV0pOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGl0ZXJh
dGlvbnNSZXN1bHRzW2luZGV4XSA9IHt9OwogICAgICAgICAgICAgaXRlcmF0aW9uc1Jlc3VsdHNb
aW5kZXhdW1N0cmluZ3MuanNvbi5zY29yZV0gPSBTdGF0aXN0aWNzLmdlb21ldHJpY01lYW4oc3Vp
dGVzU2NvcmVzKTsKICAgICAgICAgICAgIGl0ZXJhdGlvbnNSZXN1bHRzW2luZGV4XVtTdHJpbmdz
Lmpzb24ucmVzdWx0cy5zdWl0ZXNdID0gc3VpdGVzUmVzdWx0czsKQEAgLTM0NSw3ICszNDIsNyBA
QCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVzdWx0
c1tTdHJpbmdzLmpzb24uc2FtcGxlc107CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgCisKICAgICAgICAgdmFyIGJ1dHRvbiA9IERvY3VtZW50RXh0ZW5z
aW9uLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIsIHsgY2xhc3M6ICJzbWFsbC1idXR0b24iIH0sIHRk
KTsKIAogICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigp
IHsKQEAgLTM2NSw3ICszNjIsNyBAQCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICAgICAg
ICAgICAgICBjb21wbGV4aXR5W1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuY29uY2Vybl0udG9G
aXhlZCgyKV0uam9pbigiIik7CiAgICAgICAgICAgICBiZW5jaG1hcmtDb250cm9sbGVyLnNob3dU
ZXN0R3JhcGgodGVzdE5hbWUsIHNjb3JlLCBtZWFuLCBheGVzLCBzYW1wbGVzLCBzYW1wbGluZ1Rp
bWVPZmZzZXQpOwogICAgICAgICB9KTsKLSAgICAgICAgICAgIAorCiAgICAgICAgIGJ1dHRvbi50
ZXh0Q29udGVudCA9IFN0cmluZ3MudGV4dC5yZXN1bHRzLmdyYXBoICsgIi4uLiI7CiAgICAgfSwK
IApAQCAtMzczLDEwICszNzAsMTAgQEAgUmVzdWx0c1RhYmxlLnByb3RvdHlwZSA9CiAgICAgewog
ICAgICAgICBjb25zdCBwZXJjZW50VGhyZXNob2xkID0gMTA7CiAgICAgICAgIGNvbnN0IGF2ZXJh
Z2VUaHJlc2hvbGQgPSAyOwotICAgICAgICAgCisKICAgICAgICAgaWYgKG1lYXN1cmVtZW50ID09
IFN0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMucGVyY2VudCkKICAgICAgICAgICAgIHJldHVybiBk
YXRhW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMucGVyY2VudF0gPj0gcGVyY2VudFRocmVzaG9s
ZDsKLSAgICAgICAgICAgIAorCiAgICAgICAgIGlmIChqc29uRXhwZXJpbWVudCA9PSBTdHJpbmdz
Lmpzb24uZXhwZXJpbWVudHMuZnJhbWVSYXRlICYmIG1lYXN1cmVtZW50ID09IFN0cmluZ3MuanNv
bi5tZWFzdXJlbWVudHMuYXZlcmFnZSkKICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyhkYXRh
W1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuYXZlcmFnZV0gLSBvcHRpb25zWyJmcmFtZS1yYXRl
Il0pID49IGF2ZXJhZ2VUaHJlc2hvbGQ7CiAKQEAgLTQ0NSw3ICs0NDIsNyBAQCBSZXN1bHRzVGFi
bGUucHJvdG90eXBlID0KICAgICAgICAgICAgIHRoaXMuX2FkZFRlc3QodGVzdE5hbWUsIHRlc3RS
ZXN1bHRzLCBvcHRpb25zKTsKICAgICAgICAgfQogICAgIH0sCi0gICAgCisKICAgICBfYWRkSXRl
cmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb25SZXN1bHQsIG9wdGlvbnMpCiAgICAgewogICAgICAg
ICBmb3IgKHZhciBzdWl0ZU5hbWUgaW4gaXRlcmF0aW9uUmVzdWx0W1N0cmluZ3MuanNvbi5yZXN1
bHRzLnN1aXRlc10pIHsKQEAgLTQ1OCw3ICs0NTUsNyBAQCBSZXN1bHRzVGFibGUucHJvdG90eXBl
ID0KICAgICB7CiAgICAgICAgIHRoaXMuY2xlYXIoKTsKICAgICAgICAgdGhpcy5fYWRkSGVhZGVy
KCk7Ci0gICAgICAgIAorCiAgICAgICAgIGl0ZXJhdGlvbnNSZXN1bHRzLmZvckVhY2goZnVuY3Rp
b24oaXRlcmF0aW9uUmVzdWx0KSB7CiAgICAgICAgICAgICB0aGlzLl9hZGRJdGVyYXRpb24oaXRl
cmF0aW9uUmVzdWx0LCBvcHRpb25zKTsKICAgICAgICAgfSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ydW5uZXIvYW5pbW9tZXRl
ci5qcwppbmRleCAwNDk4MTM1Li5lOWQ2MDJkIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmltb21ldGVyLmpzCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvcnVubmVyL2FuaW1vbWV0ZXIuanMKQEAgLTUs
NyArNSw2IEBAIHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQgPSB7CiAKICAgICBpbml0aWFs
aXplOiBmdW5jdGlvbihzdWl0ZXMsIG9wdGlvbnMpCiAgICAgewotICAgICAgICB0aGlzLnRlc3Rz
Q291bnQgPSB0aGlzLml0ZXJhdGlvbkNvdW50ICogc3VpdGVzLnJlZHVjZShmdW5jdGlvbiAoY291
bnQsIHN1aXRlKSB7IHJldHVybiBjb3VudCArIHN1aXRlLnRlc3RzLmxlbmd0aDsgfSwgMCk7CiAg
ICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zdHJpbmdzLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zdHJpbmdzLmpzCmluZGV4IDgyOTNjYmUuLjgx
ZjQ2YmUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMv
c3RyaW5ncy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3N0
cmluZ3MuanMKQEAgLTQsMjQgKzQsMTggQEAgdmFyIFN0cmluZ3MgPSB7CiAgICAgICAgIHNjb3Jl
OiAiU2NvcmUiLAogICAgICAgICBzYW1wbGVzOiAiU2FtcGxlcyIsCiAKLSAgICAgICAgcnVubmlu
Z1N0YXRlOiB7Ci0gICAgICAgICAgICB3YXJtaW5nOiAiV2FybWluZyIsCi0gICAgICAgICAgICBz
YW1wbGluZzogIlNhbXBsaW5nIiwKLSAgICAgICAgICAgIGZpbmlzaGVkOiAiRmluaXNoZWQiCi0g
ICAgICAgIH0sCi0KICAgICAgICAgZXhwZXJpbWVudHM6IHsKICAgICAgICAgICAgIGNvbXBsZXhp
dHk6ICJDb21wbGV4aXR5IiwKICAgICAgICAgICAgIGZyYW1lUmF0ZTogIkZQUyIKICAgICAgICAg
fSwKLSAgICAgICAgCisKICAgICAgICAgbWVhc3VyZW1lbnRzOiB7CiAgICAgICAgICAgICBhdmVy
YWdlOiAiQXZnLiIsCiAgICAgICAgICAgICBjb25jZXJuOiAiVy41JSIsCiAgICAgICAgICAgICBz
dGRldjogIlN0ZC4iLAogICAgICAgICAgICAgcGVyY2VudDogICIlIgogICAgICAgICB9LAotICAg
ICAgICAKKwogICAgICAgICByZXN1bHRzOiB7CiAgICAgICAgICAgICByZXN1bHRzOiAiUmVzdWx0
cyIsCiAgICAgICAgICAgICBncmFwaDogIkdyYXBoIiwKQEAgLTMxLDI1ICsyNSwyNSBAQCB2YXIg
U3RyaW5ncyA9IHsKICAgICBqc29uOiB7CiAgICAgICAgIHNjb3JlOiAic2NvcmUiLAogICAgICAg
ICBzYW1wbGVzOiAic2FtcGxlcyIsCi0gICAgICAgIAorCiAgICAgICAgIGV4cGVyaW1lbnRzOiB7
CiAgICAgICAgICAgICBjb21wbGV4aXR5OiAiY29tcGxleGl0eSIsCiAgICAgICAgICAgICBmcmFt
ZVJhdGU6ICJmcmFtZVJhdGUiCiAgICAgICAgIH0sCi0gICAgICAgIAorCiAgICAgICAgIG1lYXN1
cmVtZW50czogewogICAgICAgICAgICAgYXZlcmFnZTogImF2ZXJhZ2UiLAogICAgICAgICAgICAg
Y29uY2VybjogImNvbmNlcm4iLAogICAgICAgICAgICAgc3RkZXY6ICJzdGRldiIsCiAgICAgICAg
ICAgICBwZXJjZW50OiAicGVyY2VudCIKICAgICAgICAgfSwKLSAgICAgICAgCisKICAgICAgICAg
cmVzdWx0czogewogICAgICAgICAgICAgaXRlcmF0aW9uczogIml0ZXJhdGlvbnNSZXN1bHRzIiwK
ICAgICAgICAgICAgIHN1aXRlczogInN1aXRlc1Jlc3VsdHMiLAogICAgICAgICAgICAgdGVzdHM6
ICJ0ZXN0c1Jlc3VsdHMiCiAgICAgICAgIH0sCi0gICAgICAgIAorCiAgICAgICAgIGdyYXBoOiB7
CiAgICAgICAgICAgICBwb2ludHM6ICJwb2ludHMiLAogICAgICAgICAgICAgc2FtcGxpbmdUaW1l
T2Zmc2V0OiAic2FtcGxpbmdUaW1lT2Zmc2V0IgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9jYW52YXMtc3RhZ2UuaHRtbCBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvY2FudmFzLXN0YWdlLmh0bWwKaW5kZXggMjRi
MDliOS4uY2QwNjM0NiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL21hc3Rlci9jYW52YXMtc3RhZ2UuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvbWFzdGVyL2NhbnZhcy1zdGFnZS5odG1sCkBAIC0xMSw3ICsxMSw2IEBACiAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy9jYW52YXMtc3RhZ2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvY2FudmFzLXRlc3RzLmpzIj48L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy10
ZXN0cy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3Vy
Y2VzL2NhbnZhcy10ZXN0cy5qcwppbmRleCBlMzc1NmY1Li43ODQ2MWRiIDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMt
dGVzdHMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9y
ZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpzCkBAIC0xOTUsOCArMTk1LDggQEAgQ2FudmFzTGluZVBh
dGhTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTaW1wbGVDYW52YXNTdGFnZSwKIAog
Ly8gPT09IEJFTkNITUFSSyA9PT0KIAotQ2FudmFzUGF0aEJlbmNobWFyayA9IFV0aWxpdGllcy5j
cmVhdGVTdWJjbGFzcyhTdGFnZUJlbmNobWFyaywKLSAgICBmdW5jdGlvbihvcHRpb25zLCBwcm9n
cmVzc0JhcikKK0NhbnZhc1BhdGhCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3Mo
QmVuY2htYXJrLAorICAgIGZ1bmN0aW9uKG9wdGlvbnMpCiAgICAgewogICAgICAgICB2YXIgc3Rh
Z2U7CiAgICAgICAgIHN3aXRjaCAob3B0aW9uc1sicGF0aFR5cGUiXSkgewpAQCAtMjExLDcgKzIx
MSw3IEBAIENhbnZhc1BhdGhCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3Rh
Z2VCZW5jaG1hcmssCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIFN0
YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3RhZ2UsIG5ldyBTdGFnZUFuaW1hdG9yKCksIG9wdGlv
bnMsIHByb2dyZXNzQmFyKTsKKyAgICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgc3RhZ2UsIG5l
dyBBbmltYXRvcigpLCBvcHRpb25zKTsKICAgICB9CiApOwogCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMKaW5kZXggNDFlMGEzOC4u
YWY2YWVmOSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jl
c291cmNlcy9tYWluLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9y
ZXNvdXJjZXMvbWFpbi5qcwpAQCAtOSwxMSArOSw2IEBAIEJlbmNobWFya1N0YXRlLnN0YWdlcyA9
IHsKICAgICBXQVJNSU5HOiAwLAogICAgIFNBTVBMSU5HOiAxLAogICAgIEZJTklTSEVEOiAyLAot
ICAgIG1lc3NhZ2VzOiBbCi0gICAgICAgIFN0cmluZ3MudGV4dC5ydW5uaW5nU3RhdGUud2FybWlu
ZywKLSAgICAgICAgU3RyaW5ncy50ZXh0LnJ1bm5pbmdTdGF0ZS5zYW1wbGluZywKLSAgICAgICAg
U3RyaW5ncy50ZXh0LnJ1bm5pbmdTdGF0ZS5maW5pc2hlZAotICAgIF0KIH0KIAogQmVuY2htYXJr
U3RhdGUucHJvdG90eXBlID0KQEAgLTUwLDE2ICs0NSw2IEBAIEJlbmNobWFya1N0YXRlLnByb3Rv
dHlwZSA9CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YWdlOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQ7Ci0gICAgfSwKLQotICAgIGN1
cnJlbnRNZXNzYWdlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbWVz
c2FnZSh0aGlzLmN1cnJlbnRTdGFnZSgpLCB0aGlzLl9jdXJyZW50VGltZU9mZnNldCk7Ci0gICAg
fSwKLQotICAgIGN1cnJlbnRQcm9ncmVzczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC8gdGhpcy5fdGltZU9mZnNldChCZW5jaG1hcmtT
dGF0ZS5zdGFnZXMuRklOSVNIRUQpOwogICAgIH0KIH0KIApAQCAtMTg3LDcgKzE3Miw3IEBAIEFu
aW1hdG9yLnByb3RvdHlwZSA9CiAgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VGltZU9mZnNl
dCAtIHRoaXMuX3N0YXJ0VGltZU9mZnNldDsKICAgICB9LAogCi0gICAgYW5pbWF0ZTogZnVuY3Rp
b24oKQorICAgIF9zaG91bGRSZXF1ZXN0QW5vdGhlckZyYW1lOiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICB2YXIgY3VycmVudFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKICAgICAgICAgCkBA
IC0yMjcsMTAgKzIxMiwxMiBAQCBBbmltYXRvci5wcm90b3R5cGUgPQogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0sCiAKLSAgICBhbmltYXRlTG9vcDogZnVuY3Rpb24odGltZXN0YW1wKQor
ICAgIGFuaW1hdGVMb29wOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5hbmlt
YXRlKCkpCisgICAgICAgIGlmICh0aGlzLl9zaG91bGRSZXF1ZXN0QW5vdGhlckZyYW1lKCkpIHsK
KyAgICAgICAgICAgIHRoaXMuX2JlbmNobWFyay5zdGFnZS5hbmltYXRlKHRoaXMudGltZURlbHRh
KCkpOwogICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZUxvb3Au
YmluZCh0aGlzKSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTMxOSw3ICszMDYsNiBAQCBC
ZW5jaG1hcmsucHJvdG90eXBlID0KICAgICAgICAgaWYgKHN0YWdlICE9IEJlbmNobWFya1N0YXRl
LnN0YWdlcy5GSU5JU0hFRCAmJiBjdXJyZW50VGltZU9mZnNldCA8IHRoaXMuX3JlY29yZFRpbWVP
ZmZzZXQgKyB0aGlzLl9yZWNvcmRJbnRlcnZhbCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICB0aGlzLnNob3dSZXN1bHRzKHRoaXMuX3N0YXRlLmN1cnJlbnRQcm9ncmVzcygpLCB0aGlz
Ll9zdGF0ZS5jdXJyZW50TWVzc2FnZSgpKTsKICAgICAgICAgdGhpcy5fcmVjb3JkVGltZU9mZnNl
dCA9IGN1cnJlbnRUaW1lT2Zmc2V0OwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4OTNlYjBkLi4wMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMKKysrIC9kZXYvbnVsbApAQCAtMSw2NSAr
MCwwIEBACi1mdW5jdGlvbiBSb3RhdGVyKHJvdGF0ZUludGVydmFsKQotewotICAgIHRoaXMuX3Rp
bWVEZWx0YSA9IDA7Ci0gICAgdGhpcy5fcm90YXRlSW50ZXJ2YWwgPSByb3RhdGVJbnRlcnZhbDsK
LX0KLQotUm90YXRlci5wcm90b3R5cGUgPQotewotICAgIGdldCBpbnRlcnZhbCgpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fcm90YXRlSW50ZXJ2YWw7Ci0gICAgfSwKLQotICAgIG5leHQ6
IGZ1bmN0aW9uKHRpbWVEZWx0YSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RpbWVEZWx0YSA9ICh0
aGlzLl90aW1lRGVsdGEgKyB0aW1lRGVsdGEpICUgdGhpcy5fcm90YXRlSW50ZXJ2YWw7Ci0gICAg
fSwKLQotICAgIGRlZ3JlZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuICgzNjAg
KiB0aGlzLl90aW1lRGVsdGEpIC8gdGhpcy5fcm90YXRlSW50ZXJ2YWw7Ci0gICAgfSwKLQotICAg
IHJvdGF0ZVo6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAicm90YXRlWigiICsg
TWF0aC5mbG9vcih0aGlzLmRlZ3JlZSgpKSArICJkZWcpIjsKLSAgICB9LAotCi0gICAgcm90YXRl
OiBmdW5jdGlvbihjZW50ZXIpCi0gICAgewotICAgICAgICByZXR1cm4gInJvdGF0ZSgiICsgTWF0
aC5mbG9vcih0aGlzLmRlZ3JlZSgpKSArICIsICIgKyBjZW50ZXIueCArICIsIiArIGNlbnRlci55
ICsgIikiOwotICAgIH0KLX07Ci0KLVN0YWdlQW5pbWF0b3IgPSBVdGlsaXRpZXMuY3JlYXRlU3Vi
Y2xhc3MoQW5pbWF0b3IsCi0gICAgZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgQW5pbWF0b3Iu
Y2FsbCh0aGlzKTsKLSAgICB9LCB7Ci0KLSAgICBhbmltYXRlOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICBpZiAoIUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcykpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHRoaXMuYmVuY2htYXJrLnN0YWdlLmFuaW1h
dGUodGhpcy50aW1lRGVsdGEoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX0pOwot
Ci1TdGFnZUJlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCZW5jaG1hcmssCi0g
ICAgZnVuY3Rpb24oc3RhZ2UsIGFuaW1hdG9yLCBvcHRpb25zLCBwcm9ncmVzc0JhcikKLSAgICB7
Ci0gICAgICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIHN0YWdlLCBhbmltYXRvciwgb3B0aW9ucyk7
Ci0KLSAgICAgICAgdGhpcy5fcHJvZ3Jlc3NCYXIgPSBwcm9ncmVzc0JhcjsKLSAgICB9LCB7Ci0K
LSAgICBzaG93UmVzdWx0czogZnVuY3Rpb24ocHJvZ3Jlc3MpCi0gICAgewotICAgICAgICBpZiAo
IXRoaXMuX3Byb2dyZXNzQmFyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMu
X3Byb2dyZXNzQmFyLnNldFBvcyhwcm9ncmVzcyk7Ci0gICAgfQotfSk7CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDFlYmMzZjEuLmJiYWM2YzMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC01LDYgKzUsMzkgQEAKIAog
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBHZXQgcmlkIG9m
IHN0YWdlLmpzLCBTdGFnZUFuaW1hdG9yLCBhbmQgU3RhZ2VCZW5jaG1hcmsuIERvbid0IGhhdmUg
dGhlIHByb2dyZXNzIGJhciB1cGRhdGUgZHVyaW5nIHRoZSB0ZXN0LgorCisgICAgICAgICogQW5p
bW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanM6CisgICAgICAgIChp
bml0aWFsaXplKTogTW92ZSB0aGUgc2V0dGluZyBvZiB0ZXN0c0NvdW50IHRvIHRoZSBkZWJ1ZyBy
dW5uZXIuCisgICAgICAgIChkaWRSdW5UZXN0KTogTmljZXIgbmFtZS4KKyAgICAgICAgKiBBbmlt
b21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qczoKKyAgICAg
ICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1bkJlbmNobWFya0FuZFJlY29yZFJlc3Vs
dHMpOiBEb24ndCBwYXNzIGluIHRoZSBwcm9ncmVzcyBiYXIgdG8gYmVuY2htYXJrcy4KKyAgICAg
ICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzOgorICAgICAgICAoUHJvZ3Jl
c3NCYXIpOiBSZWZhY3Rvci4gTWFrZSB2YXJpYWJsZXMgInByaXZhdGUiLiBSZXNldHRpbmcgdGhl
IHByb2dyZXNzIHdoZW4gaW5zdGFudGlhdGluZy4KKyAgICAgICAgKFByb2dyZXNzQmFyLnByb3Rv
dHlwZS5pbmNyZW1lbnRSYW5nZSk6IFRoaXMgaXMgY2FsbGVkIGV2ZXJ5IHRpbWUgYSBiZW5jaG1h
cmsgY29tcGxldGVzLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3J1bm5lci9hbmlt
b21ldGVyLmpzOgorICAgICAgICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC5pbml0aWFs
aXplKTogUmVtb3ZlIHVubmVlZGVkIHNldHRpbmcgb2YgdGVzdHNDb3VudC4KKyAgICAgICAgKiBB
bmltb21ldGVyL3Jlc291cmNlcy9zdHJpbmdzLmpzOiBUaGVzZSBhcmUgbm8gbG9uZ2VyIG5lZWRl
ZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL21hc3Rlci9jYW52YXMtc3RhZ2UuaHRtbDog
UmVtb3ZlIHNjcmlwdCBpbmNsdXNpb24uIE90aGVyIHRlc3RzIHdpbGwgZm9sbG93LgorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanM6IFVz
ZSBCZW5jaG1hcmsgaW5zdGVhZCBvZiBTdGFnZUJlbmNobWFyay4KKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzOiBNZXNzYWdlcyBhcmUgbm8gbG9uZ2VyIG5lZWRl
ZAorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLl9zaG91bGRSZXF1ZXN0QW5vdGhlckZyYW1l
KTogUmVuYW1lIGZyb20gYW5pbWF0ZSgpLCBzaW5jZSB0aGlzIG1ldGhvZCByZXR1cm5zIGEgYm9v
bGVhbgorICAgICAgICBpbmRpY2F0aW5nIHdoZXRoZXIgYW5vdGhlciBmcmFtZSBzaG91bGQgYmUg
cmVxdWVzdGVkLiBDb2xsYXBzZSB0aGUgbG9naWMgZnJvbSBTdGFnZUFuaW1hdG9yIGludG8gYW5p
bWF0ZUxvb3AuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuY3VycmVudFN0YWdl
KTogRGVsZXRlZC4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50TWVz
c2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuY3VycmVu
dFByb2dyZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRl
KTogRGVsZXRlZC4KKyAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlTG9vcCk6IFRo
ZSBzdGFnZSBpcyBhbmltYXRlZCBvbmx5IHdoZW4gd2UgaGF2ZSBhbm90aGVyIGZyYW1lIHRvIGRy
YXcuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnJlY29yZCk6IE5vIG5lZWQgdG8gdXBk
YXRlIHRoZSBwcm9ncmVzcyBiYXIuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJj
ZXMvc3RhZ2UuanM6IFJlbW92ZWQuIFJvdGF0ZXIgd2lsbCBhcHBlYXIgaW4gYSBsYXRlciBwYXRj
aCwgaW4gbWFpbi5qcy4KKworMjAxNS0xMi0yNyAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+
CisKKyAgICAgICAgU2ltcGxpZnkgdGhlIHRlc3QgaGFybmVzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNTYyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1
Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qczoKICAgICAgICAgKEJlbmNobWFya1J1bm5lci5w
cm90b3R5cGUuX3J1bkJlbmNobWFya0FuZFJlY29yZFJlc3VsdHMpOiBFYWNoIHRlc3QgaXMgcnVu
IGFzIGEgYmVuY2htYXJrLgogICAgICAgICBSZW1vdmUgdGhlIGNhbGwgdG8gcnVuQmVuY2htYXJr
IGJ5IG1lcmdpbmcgdGhlIG9wdGlvbnMgaGVyZSwgYW5kIGNhbGxpbmcgYmVuY2htYXJrLnJ1bigp
Ci0tIAoyLjUuNCAoQXBwbGUgR2l0LTYxKQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267958</attachid>
            <date>2015-12-28 10:08:34 -0800</date>
            <delta_ts>2015-12-28 10:08:34 -0800</delta_ts>
            <desc>5. Refactor the simple suite.</desc>
            <filename>0005-Simplify-the-test-harness.patch</filename>
            <type>text/plain</type>
            <size>16234</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSA0Y2FiZWFlNWEzZjNiYjhhZmYyMzhiNGRiYTg5NzRmNTgyNDk0ZmVjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDI3IERlYyAyMDE1IDEyOjMzOjI5IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAwNS8xM10gU2ltcGxp
ZnkgdGhlIHRlc3QgaGFybmVzcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjU2MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpSZWZhY3RvciB0aGUgc2lt
cGxlIHN1aXRlLgoKKiBBbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0
YWdlLmpzOgoodHVuZSk6IFJlbW92ZSBjb29yZGluYXRlTWF4aW11bSBzaW5jZSBpdCBpcyBub3Qg
bmVlZGVkIGluIGFueQpvZiB0aGUgbWFzdGVyIHRlc3RzLgoqIEFuaW1vbWV0ZXIvdGVzdHMvc2lt
cGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLmpzOgpTaW1wbGVDYW52YXNBbmltYXRvciBhbmQg
U2ltcGxlQ2FudmFzQmVuY2htYXJrIGFyZSBubyBsb25nZXIKbmVlZGVkLgoodHVuZSk6IE1hbmFn
ZSB0aGUgb2JqZWN0cyBkaWZmZXJlbnRseSwgYnV0IGluc3RlYWQgb2YgZHVwbGljYXRpbmcKYWxs
IG9mIFNpbXBsZUNhbnZhc1N0YWdlIGhlcmUsIGp1c3QgcmVwbGFjZSB0dW5lKCkuIEluY2x1ZGUK
Y29vcmRpbmF0ZU1heGltdW0sIGFuZCByZW1vdmUgaXRlbXMgZnJvbSB0aGUgZW5kIG9mIHRoZSBs
aXN0Cmluc3RlYWQgb2YgdGhlIGJlZ2lubmluZy4KKFN0YWdlQmVuY2htYXJrLmNhbGwuY3JlYXRl
QW5pbWF0b3IpOiBEZWxldGVkLgooU3RhZ2VCZW5jaG1hcmsuY2FsbCk6IERlbGV0ZWQuCiogQW5p
bW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMtcGF0aHMuanM6Ciog
QW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sOiBNb3ZlCnNj
cmlwdHMgdG8gdGhlIGVuZC4KLS0tCiAuLi4vdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMt
c3RhZ2UuanMgICAgICAgICB8ICAgOCArLQogLi4uL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2lt
cGxlLWNhbnZhcy1wYXRocy5qcyAgfCAxMjkgKysrKysrKysrKysrKy0tLS0tLS0tCiAuLi4vdGVz
dHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLmpzICAgICAgICB8ICA2MiArKy0tLS0t
LS0tCiAuLi4vdGVzdHMvc2ltcGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbCAgICAgICAgICB8
ICAgOCArLQogUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgMjUgKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxMjEgaW5zZXJ0aW9ucygrKSwgMTExIGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy1zdGFnZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy1zdGFnZS5qcwppbmRleCA1Yzg5
MGRjLi41M2RiMTNjIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtc3RhZ2UuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpzCkBAIC0x
OCwxMiArMTgsOCBAQCBTaW1wbGVDYW52YXNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFz
cyhTdGFnZSwKICAgICAgICAgICAgIHJldHVybiB0aGlzLm9iamVjdHMubGVuZ3RoOwogCiAgICAg
ICAgIGlmIChjb3VudCA+IDApIHsKLSAgICAgICAgICAgIC8vIEZvciBwYXRoLWJhc2VkIHRlc3Rz
LCB1c2UgdGhlIG9iamVjdCBsZW5ndGggYXMgYSBtYXhpbXVtIGNvb3JkaW5hdGUgdmFsdWUKLSAg
ICAgICAgICAgIC8vIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNlZSB3aGF0IHRoZSB0ZXN0IGlzIGRv
aW5nCi0gICAgICAgICAgICB2YXIgY29vcmRpbmF0ZU1heGltdW0gPSBNYXRoLm1heCh0aGlzLm9i
amVjdHMubGVuZ3RoLCAyMDApOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5vYmplY3RzLnB1c2gobmV3IHRoaXMuX2Nh
bnZhc09iamVjdCh0aGlzLCBjb29yZGluYXRlTWF4aW11bSkpOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgICAg
IHRoaXMub2JqZWN0cy5wdXNoKG5ldyB0aGlzLl9jYW52YXNPYmplY3QodGhpcykpOwogICAgICAg
ICAgICAgcmV0dXJuIHRoaXMub2JqZWN0cy5sZW5ndGg7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2lt
cGxlLWNhbnZhcy1wYXRocy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9z
aW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMtcGF0aHMuanMKaW5kZXggZWM1YjE5OC4uMGQw
MTgyNCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBs
ZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy1wYXRocy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLXBhdGhzLmpz
CkBAIC0xLDMgKzEsNSBAQAorKGZ1bmN0aW9uKCkgeworCiAvLyA9PT0gUEFJTlQgT0JKRUNUUyA9
PT0KIAogZnVuY3Rpb24gQ2FudmFzTGluZVNlZ21lbnQoc3RhZ2UpIHsKQEAgLTE3MywxOCArMTc1
LDE5IEBAIENhbnZhc1JlY3RGaWxsLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oY29udGV4dCkg
ewogLy8gPT09IFNUQUdFUyA9PT0KIAogU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlID0gVXRp
bGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFNpbXBsZUNhbnZhc1N0YWdlLAotICAgIGZ1bmN0aW9uKGVs
ZW1lbnQsIG9wdGlvbnMsIGNhbnZhc09iamVjdCkgewotICAgICAgICBTaW1wbGVDYW52YXNTdGFn
ZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMsIGNhbnZhc09iamVjdCk7CisgICAgZnVuY3Rp
b24oY2FudmFzT2JqZWN0KSB7CisgICAgICAgIFNpbXBsZUNhbnZhc1N0YWdlLmNhbGwodGhpcywg
Y2FudmFzT2JqZWN0KTsKICAgICB9LCB7CiAKICAgICBhbmltYXRlOiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuY29udGV4dDsKKyAgICAgICAgY29udGV4dC5j
bGVhclJlY3QoMCwgMCwgdGhpcy5zaXplLngsIHRoaXMuc2l6ZS55KTsKICAgICAgICAgY29udGV4
dC5saW5lV2lkdGggPSB0aGlzLnJhbmRvbUludCgxLCAyMCk7CiAgICAgICAgIGNvbnRleHQuc3Ry
b2tlU3R5bGUgPSB0aGlzLnJhbmRvbUNvbG9yKCk7CiAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRo
KCk7CiAgICAgICAgIGNvbnRleHQubW92ZVRvKDAsMCk7Ci0gICAgICAgIHRoaXMuX29iamVjdHMu
Zm9yRWFjaChmdW5jdGlvbihvYmplY3QpIHsKKyAgICAgICAgdGhpcy5vYmplY3RzLmZvckVhY2go
ZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgICAgICAgICBvYmplY3QuZHJhdyhjb250ZXh0KTsKICAg
ICAgICAgfSk7CiAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7CkBAIC0xOTIsMTcgKzE5NSwxOCBA
QCBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3Mo
U2ltcGxlQ2FudmFzU3RhZ2UsCiB9KTsKIAogU2ltcGxlQ2FudmFzUGF0aEZpbGxTdGFnZSA9IFV0
aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTaW1wbGVDYW52YXNTdGFnZSwKLSAgICBmdW5jdGlvbihl
bGVtZW50LCBvcHRpb25zLCBjYW52YXNPYmplY3QpIHsKLSAgICAgICAgU2ltcGxlQ2FudmFzU3Rh
Z2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zLCBjYW52YXNPYmplY3QpOworICAgIGZ1bmN0
aW9uKGNhbnZhc09iamVjdCkgeworICAgICAgICBTaW1wbGVDYW52YXNTdGFnZS5jYWxsKHRoaXMs
IGNhbnZhc09iamVjdCk7CiAgICAgfSwgewogCiAgICAgYW5pbWF0ZTogZnVuY3Rpb24oKQogICAg
IHsKICAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLmNvbnRleHQ7CisgICAgICAgIGNvbnRleHQu
Y2xlYXJSZWN0KDAsIDAsIHRoaXMuc2l6ZS54LCB0aGlzLnNpemUueSk7CiAgICAgICAgIGNvbnRl
eHQuZmlsbFN0eWxlID0gdGhpcy5yYW5kb21Db2xvcigpOwogICAgICAgICBjb250ZXh0LmJlZ2lu
UGF0aCgpOwogICAgICAgICBjb250ZXh0Lm1vdmVUbygwLDApOwotICAgICAgICB0aGlzLl9vYmpl
Y3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7CisgICAgICAgIHRoaXMub2JqZWN0cy5mb3JF
YWNoKGZ1bmN0aW9uKG9iamVjdCkgewogICAgICAgICAgICAgb2JqZWN0LmRyYXcoY29udGV4dCk7
CiAgICAgICAgIH0pOwogICAgICAgICBjb250ZXh0LmZpbGwoKTsKQEAgLTIxMCwzOCArMjE0LDU0
IEBAIFNpbXBsZUNhbnZhc1BhdGhGaWxsU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3Mo
U2ltcGxlQ2FudmFzU3RhZ2UsCiB9KTsKIAogQ2FudmFzTGluZVNlZ21lbnRTdGFnZSA9IFV0aWxp
dGllcy5jcmVhdGVTdWJjbGFzcyhTaW1wbGVDYW52YXNTdGFnZSwKLSAgICBmdW5jdGlvbihlbGVt
ZW50LCBvcHRpb25zKQorICAgIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFNpbXBsZUNhbnZh
c1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucywgQ2FudmFzTGluZVNlZ21lbnQpOwot
ICAgICAgICB0aGlzLmNvbnRleHQubGluZUNhcCA9IG9wdGlvbnNbImxpbmVDYXAiXSB8fCAiYnV0
dCI7CisgICAgICAgIFNpbXBsZUNhbnZhc1N0YWdlLmNhbGwodGhpcywgQ2FudmFzTGluZVNlZ21l
bnQpOworICAgIH0sIHsKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykKKyAg
ICB7CisgICAgICAgIFNpbXBsZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwo
dGhpcywgYmVuY2htYXJrKTsKKyAgICAgICAgdGhpcy5jb250ZXh0LmxpbmVDYXAgPSBiZW5jaG1h
cmsub3B0aW9uc1sibGluZUNhcCJdIHx8ICJidXR0IjsKICAgICB9Ci0pOworfSk7CiAKIENhbnZh
c0xpbmVQYXRoU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU2ltcGxlQ2FudmFzUGF0
aFN0cm9rZVN0YWdlLAotICAgIGZ1bmN0aW9uKGVsZW1lbnQsIG9wdGlvbnMpCisgICAgZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlLmNhbGwodGhp
cywgZWxlbWVudCwgb3B0aW9ucywgQ2FudmFzTGluZVBvaW50KTsKLSAgICAgICAgdGhpcy5jb250
ZXh0LmxpbmVKb2luID0gb3B0aW9uc1sibGluZUpvaW4iXSB8fCAiYmV2ZWwiOworICAgICAgICBT
aW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2UuY2FsbCh0aGlzLCBDYW52YXNMaW5lUG9pbnQpOwor
ICAgIH0sIHsKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykKKyAgICB7Cisg
ICAgICAgIFNpbXBsZUNhbnZhc1BhdGhTdHJva2VTdGFnZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5j
YWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAgICAgIHRoaXMuY29udGV4dC5saW5lSm9pbiA9IGJl
bmNobWFyay5vcHRpb25zWyJsaW5lSm9pbiJdIHx8ICJiZXZlbCI7CiAgICAgfQotKTsKK30pOwog
CiBDYW52YXNMaW5lRGFzaFN0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFNpbXBsZUNh
bnZhc1N0YWdlLAotICAgIGZ1bmN0aW9uKGVsZW1lbnQsIG9wdGlvbnMpCisgICAgZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgU2ltcGxlQ2FudmFzU3RhZ2UuY2FsbCh0aGlzLCBDYW52YXNMaW5l
UG9pbnQpOworICAgICAgICB0aGlzLl9zdGVwID0gMDsKKyAgICB9LCB7CisKKyAgICBpbml0aWFs
aXplOiBmdW5jdGlvbihiZW5jaG1hcmspCiAgICAgewotICAgICAgICBTaW1wbGVDYW52YXNTdGFn
ZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMsIENhbnZhc0xpbmVQb2ludCk7CisgICAgICAg
IFNpbXBsZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgYmVuY2ht
YXJrKTsKICAgICAgICAgdGhpcy5jb250ZXh0LnNldExpbmVEYXNoKFsxLCAyLCAzLCA0LCA1LCA2
LCA3LCA4LCA5LCAxMF0pOwogICAgICAgICB0aGlzLmNvbnRleHQubGluZVdpZHRoID0gMTsKICAg
ICAgICAgdGhpcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gIiMwMDAiOwotICAgICAgICB0aGlzLl9z
dGVwID0gMDsKLSAgICB9LCB7CisgICAgfSwKIAogICAgIGFuaW1hdGU6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0OworICAgICAgICBjb250ZXh0
LmNsZWFyUmVjdCgwLCAwLCB0aGlzLnNpemUueCwgdGhpcy5zaXplLnkpOwogICAgICAgICBjb250
ZXh0LmxpbmVEYXNoT2Zmc2V0ID0gdGhpcy5fc3RlcCsrOwogICAgICAgICBjb250ZXh0LmJlZ2lu
UGF0aCgpOwogICAgICAgICBjb250ZXh0Lm1vdmVUbygwLDApOwotICAgICAgICB0aGlzLl9vYmpl
Y3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7CisgICAgICAgIHRoaXMub2JqZWN0cy5mb3JF
YWNoKGZ1bmN0aW9uKG9iamVjdCkgewogICAgICAgICAgICAgb2JqZWN0LmRyYXcoY29udGV4dCk7
CiAgICAgICAgIH0pOwogICAgICAgICBjb250ZXh0LnN0cm9rZSgpOwpAQCAtMjUwLDUzICsyNzAs
NjYgQEAgQ2FudmFzTGluZURhc2hTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTaW1w
bGVDYW52YXNTdGFnZSwKIAogLy8gPT09IEJFTkNITUFSSyA9PT0KIAotQ2FudmFzUGF0aEJlbmNo
bWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTaW1wbGVDYW52YXNCZW5jaG1hcmssCi0g
ICAgZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKSB7Ci0gICAgICAg
IFNpbXBsZUNhbnZhc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBw
cm9ncmVzc0Jhcik7Ci0gICAgfSwgewotCi0gICAgY3JlYXRlU3RhZ2U6IGZ1bmN0aW9uKGVsZW1l
bnQpCitDYW52YXNQYXRoQmVuY2htYXJrID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJlbmNo
bWFyaywKKyAgICBmdW5jdGlvbihvcHRpb25zKQogICAgIHsKLSAgICAgICAgc3dpdGNoICh0aGlz
Ll9vcHRpb25zWyJwYXRoVHlwZSJdKSB7CisgICAgICAgIHZhciBzdGFnZTsKKyAgICAgICAgc3dp
dGNoIChvcHRpb25zWyJwYXRoVHlwZSJdKSB7CiAgICAgICAgIGNhc2UgImxpbmUiOgotICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDYW52YXNMaW5lU2VnbWVudFN0YWdlKGVsZW1lbnQsIHRoaXMuX29w
dGlvbnMpOworICAgICAgICAgICAgc3RhZ2UgPSBuZXcgQ2FudmFzTGluZVNlZ21lbnRTdGFnZSgp
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgImxpbmVQYXRoIjogewotICAgICAg
ICAgICAgaWYgKCJsaW5lSm9pbiIgaW4gdGhpcy5fb3B0aW9ucykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENhbnZhc0xpbmVQYXRoU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Ci0g
ICAgICAgICAgICBpZiAoImxpbmVEYXNoIiBpbiB0aGlzLl9vcHRpb25zKQotICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ2FudmFzTGluZURhc2hTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25z
KTsKKyAgICAgICAgICAgIGlmICgibGluZUpvaW4iIGluIG9wdGlvbnMpCisgICAgICAgICAgICAg
ICAgc3RhZ2UgPSBuZXcgQ2FudmFzTGluZVBhdGhTdGFnZSgpOworICAgICAgICAgICAgaWYgKCJs
aW5lRGFzaCIgaW4gb3B0aW9ucykKKyAgICAgICAgICAgICAgICBzdGFnZSA9IG5ldyBDYW52YXNM
aW5lRGFzaFN0YWdlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlICJxdWFkcmF0aWMiOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVDYW52YXNTdGFn
ZShlbGVtZW50LCB0aGlzLl9vcHRpb25zLCBDYW52YXNRdWFkcmF0aWNTZWdtZW50KTsKKyAgICAg
ICAgICAgIHN0YWdlID0gbmV3IFNpbXBsZUNhbnZhc1N0YWdlKENhbnZhc1F1YWRyYXRpY1NlZ21l
bnQpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgInF1YWRyYXRpY1BhdGgiOgot
ICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVDYW52YXNQYXRoU3Ryb2tlU3RhZ2UoZWxlbWVu
dCwgdGhpcy5fb3B0aW9ucywgQ2FudmFzUXVhZHJhdGljUG9pbnQpOworICAgICAgICAgICAgc3Rh
Z2UgPSBuZXcgU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlKENhbnZhc1F1YWRyYXRpY1BvaW50
KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICJiZXppZXIiOgotICAgICAgICAg
ICAgcmV0dXJuIG5ldyBTaW1wbGVDYW52YXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zLCBD
YW52YXNCZXppZXJTZWdtZW50KTsKKyAgICAgICAgICAgIHN0YWdlID0gbmV3IFNpbXBsZUNhbnZh
c1N0YWdlKENhbnZhc0JlemllclNlZ21lbnQpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgImJlemllclBhdGgiOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVDYW52YXNQ
YXRoU3Ryb2tlU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2FudmFzQmV6aWVyUG9pbnQp
OworICAgICAgICAgICAgc3RhZ2UgPSBuZXcgU2ltcGxlQ2FudmFzUGF0aFN0cm9rZVN0YWdlKENh
bnZhc0JlemllclBvaW50KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICJhcmNU
byI6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFNpbXBsZUNhbnZhc1N0YWdlKGVsZW1lbnQsIHRo
aXMuX29wdGlvbnMsIENhbnZhc0FyY1RvU2VnbWVudCk7CisgICAgICAgICAgICBzdGFnZSA9IG5l
dyBTaW1wbGVDYW52YXNTdGFnZShDYW52YXNBcmNUb1NlZ21lbnQpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgImFyYyI6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFNpbXBsZUNh
bnZhc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMsIENhbnZhc0FyY1NlZ21lbnQpOworICAg
ICAgICAgICAgc3RhZ2UgPSBuZXcgU2ltcGxlQ2FudmFzU3RhZ2UoQ2FudmFzQXJjU2VnbWVudCk7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAicmVjdCI6Ci0gICAgICAgICAgICBy
ZXR1cm4gbmV3IFNpbXBsZUNhbnZhc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMsIENhbnZh
c1JlY3QpOworICAgICAgICAgICAgc3RhZ2UgPSBuZXcgU2ltcGxlQ2FudmFzU3RhZ2UoQ2FudmFz
UmVjdCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAibGluZUZpbGwiOgotICAg
ICAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVDYW52YXNQYXRoRmlsbFN0YWdlKGVsZW1lbnQsIHRo
aXMuX29wdGlvbnMsIENhbnZhc0xpbmVQb2ludCk7CisgICAgICAgICAgICBzdGFnZSA9IG5ldyBT
aW1wbGVDYW52YXNQYXRoRmlsbFN0YWdlKENhbnZhc0xpbmVQb2ludCk7CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSAicXVhZHJhdGljRmlsbCI6Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IFNpbXBsZUNhbnZhc1BhdGhGaWxsU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2Fu
dmFzUXVhZHJhdGljUG9pbnQpOworICAgICAgICAgICAgc3RhZ2UgPSBuZXcgU2ltcGxlQ2FudmFz
UGF0aEZpbGxTdGFnZShDYW52YXNRdWFkcmF0aWNQb2ludCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSAiYmV6aWVyRmlsbCI6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFNpbXBs
ZUNhbnZhc1BhdGhGaWxsU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2FudmFzQmV6aWVy
UG9pbnQpOworICAgICAgICAgICAgc3RhZ2UgPSBuZXcgU2ltcGxlQ2FudmFzUGF0aEZpbGxTdGFn
ZShDYW52YXNCZXppZXJQb2ludCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAi
YXJjVG9GaWxsIjoKLSAgICAgICAgICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzU3RhZ2UoZWxl
bWVudCwgdGhpcy5fb3B0aW9ucywgQ2FudmFzQXJjVG9TZWdtZW50RmlsbCk7CisgICAgICAgICAg
ICBzdGFnZSA9IG5ldyBTaW1wbGVDYW52YXNTdGFnZShDYW52YXNBcmNUb1NlZ21lbnRGaWxsKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICJhcmNGaWxsIjoKLSAgICAgICAgICAg
IHJldHVybiBuZXcgU2ltcGxlQ2FudmFzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2Fu
dmFzQXJjU2VnbWVudEZpbGwpOworICAgICAgICAgICAgc3RhZ2UgPSBuZXcgU2ltcGxlQ2FudmFz
U3RhZ2UoQ2FudmFzQXJjU2VnbWVudEZpbGwpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgInJlY3RGaWxsIjoKLSAgICAgICAgICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzU3Rh
Z2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucywgQ2FudmFzUmVjdEZpbGwpOworICAgICAgICAgICAg
c3RhZ2UgPSBuZXcgU2ltcGxlQ2FudmFzU3RhZ2UoQ2FudmFzUmVjdEZpbGwpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdGFn
ZSwgbmV3IEFuaW1hdG9yKCksIG9wdGlvbnMpOwogICAgIH0KLX0pOworKTsKIAotd2luZG93LmJl
bmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJv
Z3Jlc3NCYXIpIHsKLSAgICByZXR1cm4gbmV3IENhbnZhc1BhdGhCZW5jaG1hcmsoc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KK3dpbmRvdy5iZW5jaG1hcmtDbGFzcyA9IENh
bnZhc1BhdGhCZW5jaG1hcms7CisKK30pKCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNv
dXJjZXMvc2ltcGxlLWNhbnZhcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMuanMKaW5kZXggN2JiY2U3MC4uMTRhNDQ1
NCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9y
ZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLmpzCkBAIC0xLDY0ICsxLDIw
IEBACi0KLVNpbXBsZUNhbnZhc1N0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdl
LAotICAgIGZ1bmN0aW9uKGVsZW1lbnQsIG9wdGlvbnMsIGNhbnZhc09iamVjdCkKLSAgICB7Ci0g
ICAgICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Ci0gICAgICAgIHRoaXMu
Y29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOwotICAgICAgICB0aGlzLmNh
bnZhc09iamVjdCA9IGNhbnZhc09iamVjdDsKLSAgICAgICAgdGhpcy5fb2JqZWN0cyA9IFtdOwot
ICAgIH0sIHsKLQorVXRpbGl0aWVzLmV4dGVuZE9iamVjdChTaW1wbGVDYW52YXNTdGFnZS5wcm90
b3R5cGUsIHsKICAgICB0dW5lOiBmdW5jdGlvbihjb3VudCkKICAgICB7CiAgICAgICAgIGlmIChj
b3VudCA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdHMubGVuZ3RoOworICAg
ICAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0cy5sZW5ndGg7CiAKICAgICAgICAgaWYgKGNvdW50
ID4gMCkgewogICAgICAgICAgICAgLy8gRm9yIHBhdGgtYmFzZWQgdGVzdHMsIHVzZSB0aGUgb2Jq
ZWN0IGxlbmd0aCBhcyBhIG1heGltdW0gY29vcmRpbmF0ZSB2YWx1ZQogICAgICAgICAgICAgLy8g
dG8gbWFrZSBpdCBlYXNpZXIgdG8gc2VlIHdoYXQgdGhlIHRlc3QgaXMgZG9pbmcKLSAgICAgICAg
ICAgIHZhciBjb29yZGluYXRlTWF4aW11bSA9IE1hdGgubWF4KHRoaXMuX29iamVjdHMubGVuZ3Ro
LCAyMDApOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0cy5wdXNoKG5ldyB0aGlzLmNhbnZhc09iamVjdCh0
aGlzLCBjb29yZGluYXRlTWF4aW11bSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX29iamVjdHMubGVuZ3RoOworICAgICAgICAgICAgdmFyIGNvb3JkaW5hdGVNYXhp
bXVtID0gTWF0aC5tYXgodGhpcy5vYmplY3RzLmxlbmd0aCwgMjAwKTsKKyAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgICAgICB0aGlzLm9iamVj
dHMucHVzaChuZXcgdGhpcy5fY2FudmFzT2JqZWN0KHRoaXMsIGNvb3JkaW5hdGVNYXhpbXVtKSk7
CisgICAgICAgICAgICByZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aDsKICAgICAgICAgfQogCi0g
ICAgICAgIGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9vYmplY3RzLmxlbmd0aCk7Ci0g
ICAgICAgIHRoaXMuX29iamVjdHMuc3BsaWNlKC1jb3VudCwgY291bnQpOwotCi0gICAgICAgIHJl
dHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKLSAgICB9LAotCi0gICAgYW5pbWF0ZTogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLmNvbnRleHQ7Ci0gICAgICAg
IHRoaXMuX29iamVjdHMuZm9yRWFjaChmdW5jdGlvbihvYmplY3QpIHsKLSAgICAgICAgICAgIG9i
amVjdC5kcmF3KGNvbnRleHQpOwotICAgICAgICB9KTsKKyAgICAgICAgY291bnQgPSBNYXRoLm1p
bigtY291bnQsIHRoaXMub2JqZWN0cy5sZW5ndGgpOworICAgICAgICB0aGlzLm9iamVjdHMuc3Bs
aWNlKC1jb3VudCwgY291bnQpOworICAgICAgICByZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aDsK
ICAgICB9CiB9KTsKLQotU2ltcGxlQ2FudmFzQW5pbWF0b3IgPSBVdGlsaXRpZXMuY3JlYXRlU3Vi
Y2xhc3MoU3RhZ2VBbmltYXRvciwKLSAgICBmdW5jdGlvbihiZW5jaG1hcmssIG9wdGlvbnMpCi0g
ICAgewotICAgICAgICBTdGFnZUFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrLCBvcHRpb25z
KTsKLSAgICAgICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsKLSAg
ICB9LCB7Ci0KLSAgICBhbmltYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9j
b250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueCwgdGhp
cy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLnkpOwotICAgICAgICByZXR1cm4gU3RhZ2VBbmltYXRv
ci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRoaXMuX29wdGlvbnMpOwotICAgIH0KLX0p
OwotCi1TaW1wbGVDYW52YXNCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3Rh
Z2VCZW5jaG1hcmssCi0gICAgZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNz
QmFyKSB7Ci0gICAgICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHByb2dyZXNzQmFyKTsKLSAgICB9LCB7Ci0KLSAgICBjcmVhdGVBbmltYXRvcjogZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzQW5pbWF0b3IodGhpcywg
dGhpcy5fb3B0aW9ucyk7Ci0gICAgfQotfSk7Ci0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhz
Lmh0bWwKaW5kZXggMGQ1OTdmYi4uNGEyZGE4ZiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9zaW1wbGUtY2FudmFzLXBh
dGhzLmh0bWwKQEAgLTIsMTcgKzIsMTcgQEAKIDxodG1sPgogPGhlYWQ+CiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNz
cyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8Y2FudmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RyaW5ncy5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
bWFzdGVyL3Jlc291cmNlcy9jYW52YXMtc3RhZ2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaW1wbGUtY2FudmFzLXBhdGhzLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotICAgIDxjYW52YXMgaWQ9InN0YWdlIj48L2NhbnZhcz4KIDwvYm9keT4KIDwvaHRt
bD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmJhYzZjMy4uMDBkZTU0YyAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAg
LTUsNiArNSwzMSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisg
ICAgICAgIFJlZmFjdG9yIHRoZSBzaW1wbGUgc3VpdGUuCisKKyAgICAgICAgKiBBbmltb21ldGVy
L3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXN0YWdlLmpzOgorICAgICAgICAodHVuZSk6
IFJlbW92ZSBjb29yZGluYXRlTWF4aW11bSBzaW5jZSBpdCBpcyBub3QgbmVlZGVkIGluIGFueQor
ICAgICAgICBvZiB0aGUgbWFzdGVyIHRlc3RzLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMv
c2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLmpzOgorICAgICAgICBTaW1wbGVDYW52YXNB
bmltYXRvciBhbmQgU2ltcGxlQ2FudmFzQmVuY2htYXJrIGFyZSBubyBsb25nZXIKKyAgICAgICAg
bmVlZGVkLgorICAgICAgICAodHVuZSk6IE1hbmFnZSB0aGUgb2JqZWN0cyBkaWZmZXJlbnRseSwg
YnV0IGluc3RlYWQgb2YgZHVwbGljYXRpbmcKKyAgICAgICAgYWxsIG9mIFNpbXBsZUNhbnZhc1N0
YWdlIGhlcmUsIGp1c3QgcmVwbGFjZSB0dW5lKCkuIEluY2x1ZGUKKyAgICAgICAgY29vcmRpbmF0
ZU1heGltdW0sIGFuZCByZW1vdmUgaXRlbXMgZnJvbSB0aGUgZW5kIG9mIHRoZSBsaXN0CisgICAg
ICAgIGluc3RlYWQgb2YgdGhlIGJlZ2lubmluZy4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLmNh
bGwuY3JlYXRlQW5pbWF0b3IpOiBEZWxldGVkLgorICAgICAgICAoU3RhZ2VCZW5jaG1hcmsuY2Fs
bCk6IERlbGV0ZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2Vz
L3NpbXBsZS1jYW52YXMtcGF0aHMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9zaW1w
bGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sOiBNb3ZlCisgICAgICAgIHNjcmlwdHMgdG8gdGhl
IGVuZC4KKworMjAxNS0xMi0yNyAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAg
ICAgU2ltcGxpZnkgdGhlIHRlc3QgaGFybmVzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKICAgICAgICAgR2V0IHJpZCBvZiBzdGFnZS5qcywgU3RhZ2VBbmltYXRvciwg
YW5kIFN0YWdlQmVuY2htYXJrLiBEb24ndCBoYXZlIHRoZSBwcm9ncmVzcyBiYXIgdXBkYXRlIGR1
cmluZyB0aGUgdGVzdC4KIAogICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1
bm5lci9hbmltb21ldGVyLmpzOgotLSAKMi41LjQgKEFwcGxlIEdpdC02MSkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267959</attachid>
            <date>2015-12-28 10:08:54 -0800</date>
            <delta_ts>2015-12-28 10:08:54 -0800</delta_ts>
            <desc>6. Refactor miscellaneous suite.</desc>
            <filename>0006-Simplify-the-test-harness.patch</filename>
            <type>text/plain</type>
            <size>19203</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSA3MDVhYzFlZjgxOGRlN2E1N2ExM2M1Njk3MmI4YTBlYTdjNzQ2NmY5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDI3IERlYyAyMDE1IDE2OjE3OjM5IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAwNi8xM10gU2ltcGxp
ZnkgdGhlIHRlc3QgaGFybmVzcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjU2MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpSZWZhY3RvciBtaXNjZWxs
YW5lb3VzIHN1aXRlLgoKKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNv
dXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzOgpSZW1vdmUgQm91bmNpbmdQYXJ0aWNsZXNBbmlt
YXRvciBhbmQgQm91bmNpbmdQYXJ0aWNsZUJlbmNobWFyaywgd2hpY2ggYXJlCm5vdCBuZWVkZWQu
Cih0dW5lKTogUmVtb3ZlIGNvbnNvbGUgYXNzZXJ0LgoqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3Vy
Y2VzL21haW4uanM6IEFkZCBSb3RhdGVyIGJhY2sgaW4gZnJvbSBzdGFnZS5qcy4KCiogQW5pbW9t
ZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qczogUmVtb3Zl
IENhbnZhc0VsZWN0cm9uc0FuaW1hdG9yLgoqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVz
b3VyY2VzL2NhbnZhcy1zdGFycy5qczogUmVtb3ZlIENhbnZhc1N0YXJzQW5pbWF0b3IuCiogQW5p
bW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmpzOgoq
IEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sOiBNb3ZlIHNj
cmlwdHMgdG8gdGhlIGVuZC4KKiBBbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1zdGFy
cy5odG1sOiBEaXR0by4KKiBBbmltb21ldGVyL3Rlc3RzL21pc2MvY29tcG9zaXRpbmctdHJhbnNm
b3Jtcy5odG1sOiBEaXR0by4KLS0tCiAuLi4vcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5q
cyAgICAgICAgICAgICAgICB8IDQ1ICsrKystLS0tLS0tLS0tCiAuLi4vdGVzdHMvZXhhbXBsZXMv
Y2FudmFzLWVsZWN0cm9ucy5odG1sICAgICAgICAgICB8ICA3ICstLQogLi4uL0FuaW1vbWV0ZXIv
dGVzdHMvZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0bWwgICAgfCAgMSAtCiAuLi4vdGVzdHMvZXhh
bXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanMgICB8IDY5ICsrKysrKysrLS0tLS0t
LS0tLS0tLS0KIC4uLi90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzICAg
ICAgIHwgNjQgKysrKysrKy0tLS0tLS0tLS0tLS0KIC4uLi90ZXN0cy9taXNjL2NvbXBvc2l0aW5n
LXRyYW5zZm9ybXMuaHRtbCAgICAgICAgIHwgIDkgKystCiAuLi4vdGVzdHMvbWlzYy9yZXNvdXJj
ZXMvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5qcyB8IDM2ICsrKysrLS0tLS0tCiAuLi4vQW5pbW9t
ZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcyAgICAgICAgICAgICB8IDM0ICsrKysrKysrKysr
CiBQZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8IDIy
ICsrKysrKysKIDkgZmlsZXMgY2hhbmdlZCwgMTQwIGluc2VydGlvbnMoKyksIDE0NyBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9i
b3VuY2luZy1wYXJ0aWNsZXMuanMKaW5kZXggYjhjYTdiNS4uYTZjYTI4YyAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNv
dXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xl
cy5qcwpAQCAtMiw3ICsyLDcgQEAgZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZShzdGFnZSkKIHsK
ICAgICB0aGlzLl9zdGFnZVNpemUgPSBzdGFnZS5zaXplOwogICAgIHRoaXMuX3NpemUgPSBzdGFn
ZS5wYXJ0aWNsZVNpemU7Ci0gICAgCisKICAgICB0aGlzLl9wb3NpdGlvbiA9IHN0YWdlLnJhbmRv
bVBvc2l0aW9uKHN0YWdlLnNpemUuc3VidHJhY3Qoc3RhZ2UucGFydGljbGVTaXplKSk7CiAgICAg
dGhpcy5fYW5nbGUgPSBzdGFnZS5yYW5kb21BbmdsZSgpOwogICAgIHRoaXMuX3ZlbG9jaXR5ID0g
c3RhZ2UucmFuZG9tVmVsb2NpdHkoc3RhZ2UubWF4VmVsb2NpdHkpOwpAQCAtMTUsNyArMTUsNyBA
QCBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSA9CiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fcG9zaXRpb24uYWRkKHRoaXMuX3NpemUuY2VudGVyKTsKICAgICB9LAotICAgIAorCiAgICAg
YW5pbWF0ZTogZnVuY3Rpb24odGltZURlbHRhKQogICAgIHsKICAgICAgICAgdGhpcy5fcG9zaXRp
b24gPSB0aGlzLl9wb3NpdGlvbi5tb3ZlKHRoaXMuX2FuZ2xlLCB0aGlzLl92ZWxvY2l0eSwgdGlt
ZURlbHRhKTsKQEAgLTMyLDcgKzMyLDcgQEAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUgPQog
ICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwYXJ0aWNsZSBkb2VzIG5vdCBnbyBvdXRzaWRl
IHRoZSBzdGFnZSBib3VuZGFyaWVzLgogICAgICAgICAgICAgdGhpcy5fcG9zaXRpb24ueCA9IHRo
aXMuX3N0YWdlU2l6ZS54IC0gdGhpcy5fc2l6ZS54OwogICAgICAgICB9Ci0gICAgICAgIAorCiAg
ICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2ZmIGxlZnQgc2lkZQogICAg
ICAgICBpZiAodGhpcy5fcG9zaXRpb24ueCA8IDApIHsKICAgICAgICAgICAgIC8vIElmIGFuZ2xl
IGlzIFdlc3QtU291dGgsIGdvIEVhc3QtU291dGguCkBAIC02NSwyNyArNjUsMjEgQEAgQm91bmNp
bmdQYXJ0aWNsZS5wcm90b3R5cGUgPQogICAgIH0KIH0KIAotQm91bmNpbmdQYXJ0aWNsZXNBbmlt
YXRvciA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTdGFnZUFuaW1hdG9yLAotICAgIGZ1bmN0
aW9uKGJlbmNobWFyaywgb3B0aW9ucykKLSAgICB7Ci0gICAgICAgIFN0YWdlQW5pbWF0b3IuY2Fs
bCh0aGlzLCBiZW5jaG1hcmssIG9wdGlvbnMpOwotICAgIH0KLSk7Ci0KLQogQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTdGFnZSwKLSAgICBmdW5jdGlv
bihlbGVtZW50LCBvcHRpb25zKQorICAgIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFN0YWdl
LmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Ci0KLSAgICAgICAgdGhpcy5wYXJ0aWNsZVNp
emUgPSBuZXcgUG9pbnQocGFyc2VJbnQob3B0aW9uc1sicGFydGljbGVXaWR0aCJdKSB8fCAxMCwg
cGFyc2VJbnQob3B0aW9uc1sicGFydGljbGVIZWlnaHQiXSkgfHwgMTApOworICAgICAgICBTdGFn
ZS5jYWxsKCk7CiAgICAgICAgIHRoaXMuX3BhcnRpY2xlcyA9IFtdOwotCi0gICAgICAgIHRoaXMu
bWF4VmVsb2NpdHkgPSBwYXJzZUludChvcHRpb25zWyJtYXhWZWxvY2l0eSJdKSB8fCA1MDA7Ci0g
ICAgICAgIHRoaXMubWF4VmVsb2NpdHkgPSBNYXRoLm1heCh0aGlzLm1heFZlbG9jaXR5LCAxMDAp
OwogICAgIH0sIHsKIAotICAgIHBhcnNlU2hhcGVQYXJhbXRlcnM6IGZ1bmN0aW9uKG9wdGlvbnMp
CisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYmVuY2htYXJrKQorICAgIHsKKyAgICAgICAgU3Rh
Z2UucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworICAgICAgICB0
aGlzLnBhcnRpY2xlU2l6ZSA9IG5ldyBQb2ludChwYXJzZUludChiZW5jaG1hcmsub3B0aW9uc1si
cGFydGljbGVXaWR0aCJdKSB8fCAxMCwgcGFyc2VJbnQoYmVuY2htYXJrLm9wdGlvbnNbInBhcnRp
Y2xlSGVpZ2h0Il0pIHx8IDEwKTsKKyAgICAgICAgdGhpcy5tYXhWZWxvY2l0eSA9IE1hdGgubWF4
KHBhcnNlSW50KGJlbmNobWFyay5vcHRpb25zWyJtYXhWZWxvY2l0eSJdKSB8fCAxMDAsIDEwMCk7
CisgICAgfSwKKworICAgIHBhcnNlU2hhcGVQYXJhbWV0ZXJzOiBmdW5jdGlvbihvcHRpb25zKQog
ICAgIHsKICAgICAgICAgdGhpcy5zaGFwZSA9IG9wdGlvbnNbInNoYXBlIl0gfHwgImNpcmNsZSI7
CiAgICAgICAgIHRoaXMuZmlsbCA9IG9wdGlvbnNbImZpbGwiXSB8fCAic29saWQiOwpAQCAtMTA1
LDcgKzk5LDYgQEAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJj
bGFzcyhTdGFnZSwKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOwog
CiAgICAgICAgIGlmIChjb3VudCA+IDApIHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5
cGVvZih0aGlzLmNyZWF0ZVBhcnRpY2xlKSA9PSAiZnVuY3Rpb24iKTsKICAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKICAgICAgICAgICAgICAgICB0aGlzLl9wYXJ0
aWNsZXMucHVzaCh0aGlzLmNyZWF0ZVBhcnRpY2xlKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX3BhcnRpY2xlcy5sZW5ndGg7CkBAIC0xMjIsMTUgKzExNSwzIEBAIEJvdW5jaW5nUGFydGlj
bGVzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2UsCiAgICAgICAgIHJldHVy
biB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOwogICAgIH0KIH0pOwotCi1Cb3VuY2luZ1BhcnRpY2xl
c0JlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTdGFnZUJlbmNobWFyaywKLSAg
ICBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCi0gICAgewotICAg
ICAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9n
cmVzc0Jhcik7Ci0gICAgfSwgewotCi0gICAgY3JlYXRlQW5pbWF0b3I6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBuZXcgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvcih0aGlzLCB0
aGlzLl9vcHRpb25zKTsKLSAgICB9Ci19KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtZWxlY3Ryb25zLmh0bWwgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1s
CmluZGV4IDA5MDk3MzIuLjM0ZGEwM2EgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtZWxlY3Ryb25zLmh0bWwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1lbGVjdHJvbnMuaHRt
bApAQCAtMiwxNiArMiwxNSBAQAogPGh0bWw+CiA8aGVhZD4KICAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKzwv
aGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMgaWQ9InN0YWdlIj48L2NhbnZhcz4KICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdHJpbmdzLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Y2FudmFzLWVsZWN0cm9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8Y2Fu
dmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0
bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLXN0
YXJzLmh0bWwKaW5kZXggNTJhZDhmOC4uMWFiY2IxMSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1zdGFycy5odG1sCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtc3RhcnMuaHRt
bApAQCAtOCw3ICs4LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVu
c2lvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keT4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9u
cy5qcwppbmRleCAxODBkYTg2Li4wYjNmN2JkIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanMK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNl
cy9jYW52YXMtZWxlY3Ryb25zLmpzCkBAIC0xLDMgKzEsNSBAQAorKGZ1bmN0aW9uKCkgeworCiBm
dW5jdGlvbiBDYW52YXNFbGVjdHJvbihzdGFnZSkKIHsKICAgICB0aGlzLl9jb250ZXh0ID0gc3Rh
Z2UuY29udGV4dDsKQEAgLTUxLDEzICs1MywxOCBAQCBDYW52YXNFbGVjdHJvbi5wcm90b3R5cGUg
PSB7CiB9OwogCiBDYW52YXNFbGVjdHJvbnNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFz
cyhTdGFnZSwKLSAgICBmdW5jdGlvbihlbGVtZW50LCBvcHRpb25zKQorICAgIGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Ci0gICAg
ICAgIHRoaXMuY29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOworICAgICAg
ICBTdGFnZS5jYWxsKHRoaXMpOwogICAgICAgICB0aGlzLl9lbGVjdHJvbnMgPSBbXTsKICAgICB9
LCB7CiAKKyAgICBpbml0aWFsaXplOiBmdW5jdGlvbihiZW5jaG1hcmspCisgICAgeworICAgICAg
ICBTdGFnZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAg
ICAgIHRoaXMuY29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOworICAgIH0s
CisKICAgICB0dW5lOiBmdW5jdGlvbihjb3VudCkKICAgICB7CiAgICAgICAgIGlmIChjb3VudCA9
PSAwKQpAQCAtNzcsNTUgKzg0LDI3IEBAIENhbnZhc0VsZWN0cm9uc1N0YWdlID0gVXRpbGl0aWVz
LmNyZWF0ZVN1YmNsYXNzKFN0YWdlLAogCiAgICAgYW5pbWF0ZTogZnVuY3Rpb24odGltZURlbHRh
KQogICAgIHsKKyAgICAgICAgdGhpcy5jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLnNpemUu
eCwgdGhpcy5zaXplLnkpOworCisgICAgICAgIC8vIERyYXcgYSBiaWcgc3RhciBpbiB0aGUgbWlk
ZGxlLgorICAgICAgICB0aGlzLmNvbnRleHQuZmlsbFN0eWxlID0gIm9yYW5nZSI7CisgICAgICAg
IHRoaXMuY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgdGhpcy5jb250ZXh0LmFyYyh0aGlz
LnNpemUuY2VudGVyLngsIHRoaXMuc2l6ZS5jZW50ZXIueSwgNTAsIDAsIE1hdGguUEkgKiAyLCB0
cnVlKTsKKyAgICAgICAgdGhpcy5jb250ZXh0LmZpbGwoKTsKKwogICAgICAgICB0aGlzLl9lbGVj
dHJvbnMuZm9yRWFjaChmdW5jdGlvbihlbGVjdHJvbikgewogICAgICAgICAgICAgZWxlY3Ryb24u
YW5pbWF0ZSh0aW1lRGVsdGEpOwogICAgICAgICB9KTsKICAgICB9CiB9KTsKIAotQ2FudmFzRWxl
Y3Ryb25zQW5pbWF0b3IgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2VBbmltYXRvciwK
LSAgICBmdW5jdGlvbihiZW5jaG1hcmssIG9wdGlvbnMpCitDYW52YXNFbGVjdHJvbnNCZW5jaG1h
cmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQmVuY2htYXJrLAorICAgIGZ1bmN0aW9uKG9w
dGlvbnMpCiAgICAgewotICAgICAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyaywgb3B0
aW9ucyk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQgPSBiZW5jaG1hcmsuX3N0YWdlLmNvbnRleHQ7
Ci0gICAgfSwgewotCi0gICAgYW5pbWF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhp
cy5fY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLngs
IHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS55KTsKLQotICAgICAgICAvLyBEcmF3IGEgYmln
IHN0YXIgaW4gdGhlIG1pZGRsZS4KLSAgICAgICAgdGhpcy5fY29udGV4dC5maWxsU3R5bGUgPSAi
b3JhbmdlIjsKLSAgICAgICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICAgICAgdGhp
cy5fY29udGV4dC5hcmModGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLmNlbnRlci54LCB0aGlz
Ll9iZW5jaG1hcmsuX3N0YWdlLnNpemUuY2VudGVyLnksIDUwLCAwLCBNYXRoLlBJICogMiwgdHJ1
ZSk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbCgpOwotCi0gICAgICAgIHJldHVybiBTdGFn
ZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcyk7CisgICAgICAgIEJlbmNobWFy
ay5jYWxsKHRoaXMsIG5ldyBDYW52YXNFbGVjdHJvbnNTdGFnZSgpLCBuZXcgQW5pbWF0b3IoKSwg
b3B0aW9ucyk7CiAgICAgfQotfSk7CispOwogCi1DYW52YXNFbGVjdHJvbnNCZW5jaG1hcmsgPSBV
dGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2VCZW5jaG1hcmssCi0gICAgZnVuY3Rpb24gKHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKLSAgICB7Ci0gICAgICAgIFN0YWdlQmVu
Y2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLSAg
ICB9LCB7Ci0KLSAgICBjcmVhdGVTdGFnZTogZnVuY3Rpb24oZWxlbWVudCkKLSAgICB7Ci0gICAg
ICAgIC8vIEF0dGFjaCB0aGUgc3RhZ2UgdG8gdGhlIGJlbmNobWFyay4KLSAgICAgICAgcmV0dXJu
IG5ldyBDYW52YXNFbGVjdHJvbnNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKLSAgICB9
LAord2luZG93LmJlbmNobWFya0NsYXNzID0gQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJrOwogCi0g
ICAgY3JlYXRlQW5pbWF0b3I6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIEF0dGFjaCB0
aGUgYW5pbWF0b3IgdG8gdGhlIGJlbmNobWFyay4KLSAgICAgICAgcmV0dXJuIG5ldyBDYW52YXNF
bGVjdHJvbnNBbmltYXRvcih0aGlzLCB0aGlzLl9vcHRpb25zKTsKLSAgICB9Ci19KTsKLQotd2lu
ZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcHJvZ3Jlc3NCYXIpCi17Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0
aGUgdGVzdCBoYXJuZXNzIHdoaWNoIHN0YXJ0cyB0aGUKLSAgICAvLyB0ZXN0IGJ5IGNyZWF0aW5n
IHlvdXIgYmVuY2htYXJrIG9iamVjdC4KLSAgICByZXR1cm4gbmV3IENhbnZhc0VsZWN0cm9uc0Jl
bmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotfQorfSkoKTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0
YXJzLmpzCmluZGV4IDIxODc3Y2MuLmJjYjAwMmEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMv
Y2FudmFzLXN0YXJzLmpzCkBAIC0xLDcgKzEsOCBAQAorKGZ1bmN0aW9uKCkgeworCiBmdW5jdGlv
biBDYW52YXNTdGFyKHN0YWdlKQogewogICAgIHRoaXMuX2NvbnRleHQgPSBzdGFnZS5jb250ZXh0
OwotICAgIHRoaXMuX3N0YWdlU2l6ZSA9IHN0YWdlLnNpemU7CiAKICAgICB0aGlzLl9zaXplID0g
c3RhZ2UucmFuZG9tU3F1YXJlU2l6ZSg1LCAyMCk7CiAgICAgdGhpcy5fY2VudGVyID0gc3RhZ2Uu
cmFuZG9tUG9zaXRpb24oc3RhZ2Uuc2l6ZS5zdWJ0cmFjdCh0aGlzLl9zaXplKSkuYWRkKHRoaXMu
X3NpemUuY2VudGVyKTsKQEAgLTUxLDE0ICs1MiwxOCBAQCBDYW52YXNTdGFyLnByb3RvdHlwZSA9
IHsKIH07CiAKIENhbnZhc1N0YXJzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3Rh
Z2UsCi0gICAgZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9ucykKKyAgICBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOwotICAgICAgICB0
aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKLQorICAgICAgICBT
dGFnZS5jYWxsKHRoaXMpOwogICAgICAgICB0aGlzLl9vYmplY3RzID0gW107CiAgICAgfSwgewog
CisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYmVuY2htYXJrKQorICAgIHsKKyAgICAgICAgU3Rh
Z2UucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworICAgICAgICB0
aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICB9LAorCiAg
ICAgdHVuZTogZnVuY3Rpb24oY291bnQpCiAgICAgewogICAgICAgICBpZiAoY291bnQgPT0gMCkK
QEAgLTc4LDUxICs4MywyNCBAQCBDYW52YXNTdGFyc1N0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1
YmNsYXNzKFN0YWdlLAogCiAgICAgYW5pbWF0ZTogZnVuY3Rpb24odGltZURlbHRhKQogICAgIHsK
KyAgICAgICAgdGhpcy5jb250ZXh0LmJlZ2luUGF0aCgpOworICAgICAgICB0aGlzLmNvbnRleHQu
ZmlsbFN0eWxlID0gJ2JsYWNrJzsKKyAgICAgICAgdGhpcy5jb250ZXh0LnJlY3QoMCwgMCwgdGhp
cy5zaXplLndpZHRoLCB0aGlzLnNpemUuaGVpZ2h0KTsKKyAgICAgICAgdGhpcy5jb250ZXh0LmZp
bGwoKTsKKwogICAgICAgICB0aGlzLl9vYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7
CiAgICAgICAgICAgICBvYmplY3QuYW5pbWF0ZSh0aW1lRGVsdGEpOwogICAgICAgICB9KTsKICAg
ICB9CiB9KTsKIAotQ2FudmFzU3RhcnNBbmltYXRvciA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFz
cyhTdGFnZUFuaW1hdG9yLAotICAgIGZ1bmN0aW9uKGJlbmNobWFyaywgb3B0aW9ucykKLSAgICB7
Ci0gICAgICAgIEFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrLCBvcHRpb25zKTsKLSAgICAg
ICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsKLSAgICB9LCB7Ci0K
LSAgICBhbmltYXRlOiBmdW5jdGlvbigpCitDYW52YXNTdGFyc0JlbmNobWFyayA9IFV0aWxpdGll
cy5jcmVhdGVTdWJjbGFzcyhCZW5jaG1hcmssCisgICAgZnVuY3Rpb24ob3B0aW9ucykKICAgICB7
Ci0gICAgICAgIHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7Ci0gICAgICAgIHRoaXMuX2NvbnRl
eHQuZmlsbFN0eWxlID0gJ2JsYWNrJzsKLSAgICAgICAgdGhpcy5fY29udGV4dC5yZWN0KDAsIDAs
IHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS53aWR0aCwgdGhpcy5fYmVuY2htYXJrLl9zdGFn
ZS5zaXplLmhlaWdodCk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbCgpOwotICAgICAgICBy
ZXR1cm4gU3RhZ2VBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMpOworICAgICAg
ICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBuZXcgQ2FudmFzU3RhcnNTdGFnZSgpLCBuZXcgQW5pbWF0
b3IoKSwgb3B0aW9ucyk7CiAgICAgfQotfSk7Ci0KLUNhbnZhc1N0YXJzQmVuY2htYXJrID0gVXRp
bGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlQmVuY2htYXJrLAotICAgIGZ1bmN0aW9uKHN1aXRl
LCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKLSAgICB7Ci0gICAgICAgIFN0YWdlQmVuY2ht
YXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLSAgICB9
LCB7Ci0KLSAgICBjcmVhdGVTdGFnZTogZnVuY3Rpb24oZWxlbWVudCkKLSAgICB7Ci0gICAgICAg
IC8vIEF0dGFjaCB0aGUgc3RhZ2UgdG8gdGhlIGJlbmNobWFyay4KLSAgICAgICAgcmV0dXJuIG5l
dyBDYW52YXNTdGFyc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOwotICAgIH0sCispOwog
Ci0gICAgY3JlYXRlQW5pbWF0b3I6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIEF0dGFj
aCB0aGUgYW5pbWF0b3IgdG8gdGhlIGJlbmNobWFyay4KLSAgICAgICAgcmV0dXJuIG5ldyBDYW52
YXNTdGFyc0FuaW1hdG9yKHRoaXMsIHRoaXMuX29wdGlvbnMpOwotICAgIH0KLX0pOword2luZG93
LmJlbmNobWFya0NsYXNzID0gQ2FudmFzU3RhcnNCZW5jaG1hcms7CiAKLXdpbmRvdy5iZW5jaG1h
cmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNz
QmFyKQotewotICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIHRlc3QgaGFy
bmVzcyB3aGljaCBzdGFydHMgdGhlCi0gICAgLy8gdGVzdCBieSBjcmVhdGluZyB5b3VyIGJlbmNo
bWFyayBvYmplY3QuCi0gICAgcmV0dXJuIG5ldyBDYW52YXNTdGFyc0JlbmNobWFyayhzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKK30pKCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5o
dG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvY29tcG9zaXRpbmct
dHJhbnNmb3Jtcy5odG1sCmluZGV4IGRlYmY1ODIuLjZjMDc3OGMgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMu
aHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9jb21wb3Np
dGluZy10cmFuc2Zvcm1zLmh0bWwKQEAgLTEsNiArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxo
dG1sPgogPGhlYWQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIg
aHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CiAgICAgPHN0eWxlPgogICAgICAgICBpbWcg
ewogICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwpAQCAtOCwxOCArOSwxNiBAQAogICAg
ICAgICAgICAgaGVpZ2h0OiA4MHB4OwogICAgICAgICB9CiAgICAgPC9zdHlsZT4KLSAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3Rh
Z2UuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9InN0YWdlIj48L2Rpdj4KICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdHJpbmdzLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCiAgICAgPHNjcmlwdCBzcmM9Ii4u
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci0gICAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY29tcG9zaXRpbmct
dHJhbnNmb3Jtcy5qcwppbmRleCBiNmY2ZjQ1Li43MDdmYjExIDEwMDY0NAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY29tcG9zaXRpbmctdHJh
bnNmb3Jtcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9y
ZXNvdXJjZXMvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5qcwpAQCAtMSwzICsxLDUgQEAKKyhmdW5j
dGlvbigpIHsKKwogQm91bmNpbmdDb21wb3NpdGVkSW1hZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3Vi
Y2xhc3MoQm91bmNpbmdQYXJ0aWNsZSwKICAgICBmdW5jdGlvbihzdGFnZSkKICAgICB7CkBAIC0y
OCwxMyArMzAsMTkgQEAgQm91bmNpbmdDb21wb3NpdGVkSW1hZ2UgPSBVdGlsaXRpZXMuY3JlYXRl
U3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZSwKIH0pOwogCiBDb21wb3NpdGluZ1RyYW5zZm9ybXNT
dGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLAot
ICAgIGZ1bmN0aW9uKGVsZW1lbnQsIG9wdGlvbnMpCisgICAgZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMp
OwotICAgICAgICB0aGlzLmltYWdlU3JjID0gb3B0aW9uc1siaW1hZ2VTcmMiXSB8fCAiLi4vcmVz
b3VyY2VzL3lpbi15YW5nLnN2ZyI7Ci0gICAgICAgIHRoaXMudXNlRmlsdGVycyA9IG9wdGlvbnNb
ImZpbHRlcnMiXSA9PSAieWVzIjsKKyAgICAgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxs
KHRoaXMpOwogICAgIH0sIHsKIAorICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykK
KyAgICB7CisgICAgICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmluaXRpYWxp
emUuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworCisgICAgICAgIHRoaXMuaW1hZ2VTcmMgPSBiZW5j
aG1hcmsub3B0aW9uc1siaW1hZ2VTcmMiXSB8fCAiLi4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7
CisgICAgICAgIHRoaXMudXNlRmlsdGVycyA9IGJlbmNobWFyay5vcHRpb25zWyJmaWx0ZXJzIl0g
PT0gInllcyI7CisgICAgfSwKKwogICAgIGNyZWF0ZVBhcnRpY2xlOiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ29tcG9zaXRlZEltYWdlKHRoaXMpOwpAQCAt
NDYsMTkgKzU0LDEzIEBAIENvbXBvc2l0aW5nVHJhbnNmb3Jtc1N0YWdlID0gVXRpbGl0aWVzLmNy
ZWF0ZVN1YmNsYXNzKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UsCiAgICAgfQogfSk7CiAKLUNvbXBv
c2l0ZWRUcmFuc2Zvcm1zQmVuY2htYXJrID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJvdW5j
aW5nUGFydGljbGVzQmVuY2htYXJrLAotICAgIGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCBwcm9ncmVzc0JhcikKK0NvbXBvc2l0ZWRUcmFuc2Zvcm1zQmVuY2htYXJrID0gVXRpbGl0aWVz
LmNyZWF0ZVN1YmNsYXNzKEJlbmNobWFyaywKKyAgICBmdW5jdGlvbihvcHRpb25zKQogICAgIHsK
LSAgICAgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotICAgIH0sIHsKLQotICAgIGNyZWF0ZVN0YWdlOiBm
dW5jdGlvbihlbGVtZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBDb21wb3NpdGluZ1Ry
YW5zZm9ybXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKKyAgICAgICAgQmVuY2htYXJr
LmNhbGwodGhpcywgbmV3IENvbXBvc2l0aW5nVHJhbnNmb3Jtc1N0YWdlKCksIG5ldyBBbmltYXRv
cigpLCBvcHRpb25zKTsKICAgICB9Ci19KTsKKyk7CisKK3dpbmRvdy5iZW5jaG1hcmtDbGFzcyA9
IENvbXBvc2l0ZWRUcmFuc2Zvcm1zQmVuY2htYXJrOwogCi13aW5kb3cuYmVuY2htYXJrQ2xpZW50
LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKLXsK
LSAgICByZXR1cm4gbmV3IENvbXBvc2l0ZWRUcmFuc2Zvcm1zQmVuY2htYXJrKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci19Cit9KSgpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzCmluZGV4IGFmNmFlZjkuLmQ3
Zjk3ZDAgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNv
dXJjZXMvbWFpbi5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVz
b3VyY2VzL21haW4uanMKQEAgLTEsMyArMSwzNyBAQAorZnVuY3Rpb24gUm90YXRlcihyb3RhdGVJ
bnRlcnZhbCkKK3sKKyAgICB0aGlzLl90aW1lRGVsdGEgPSAwOworICAgIHRoaXMuX3JvdGF0ZUlu
dGVydmFsID0gcm90YXRlSW50ZXJ2YWw7Cit9CisKK1JvdGF0ZXIucHJvdG90eXBlID0KK3sKKyAg
ICBnZXQgaW50ZXJ2YWwoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3JvdGF0ZUludGVy
dmFsOworICAgIH0sCisKKyAgICBuZXh0OiBmdW5jdGlvbih0aW1lRGVsdGEpCisgICAgeworICAg
ICAgICB0aGlzLl90aW1lRGVsdGEgPSAodGhpcy5fdGltZURlbHRhICsgdGltZURlbHRhKSAlIHRo
aXMuX3JvdGF0ZUludGVydmFsOworICAgIH0sCisKKyAgICBkZWdyZWU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiAoMzYwICogdGhpcy5fdGltZURlbHRhKSAvIHRoaXMuX3JvdGF0
ZUludGVydmFsOworICAgIH0sCisKKyAgICByb3RhdGVaOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICByZXR1cm4gInJvdGF0ZVooIiArIE1hdGguZmxvb3IodGhpcy5kZWdyZWUoKSkgKyAiZGVn
KSI7CisgICAgfSwKKworICAgIHJvdGF0ZTogZnVuY3Rpb24oY2VudGVyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICJyb3RhdGUoIiArIE1hdGguZmxvb3IodGhpcy5kZWdyZWUoKSkgKyAiLCAiICsg
Y2VudGVyLnggKyAiLCIgKyBjZW50ZXIueSArICIpIjsKKyAgICB9Cit9OworCiBmdW5jdGlvbiBC
ZW5jaG1hcmtTdGF0ZSh0ZXN0SW50ZXJ2YWwpCiB7CiAgICAgdGhpcy5fY3VycmVudFRpbWVPZmZz
ZXQgPSAwOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCAwMGRlNTRjLi43NTc0NjJkIDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxv
ZwpAQCAtNSw2ICs1LDI4IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CiAKKyAgICAgICAgUmVmYWN0b3IgbWlzY2VsbGFuZW91cyBzdWl0ZS4KKworICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0
aWNsZXMuanM6CisgICAgICAgIFJlbW92ZSBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yIGFuZCBC
b3VuY2luZ1BhcnRpY2xlQmVuY2htYXJrLCB3aGljaCBhcmUKKyAgICAgICAgbm90IG5lZWRlZC4K
KyAgICAgICAgKHR1bmUpOiBSZW1vdmUgY29uc29sZSBhc3NlcnQuCisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qczogQWRkIFJvdGF0ZXIgYmFjayBpbiBmcm9tIHN0
YWdlLmpzLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMv
Y2FudmFzLWVsZWN0cm9ucy5qczogUmVtb3ZlIENhbnZhc0VsZWN0cm9uc0FuaW1hdG9yLgorICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5q
czogUmVtb3ZlIENhbnZhc1N0YXJzQW5pbWF0b3IuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9taXNjL3Jlc291cmNlcy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmpzOgorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sOiBNb3ZlIHNjcmlw
dHMgdG8gdGhlIGVuZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZh
cy1zdGFycy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL21pc2MvY29t
cG9zaXRpbmctdHJhbnNmb3Jtcy5odG1sOiBEaXR0by4KKworMjAxNS0xMi0yNyAgSm9uIExlZSAg
PGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgdGhlIHRlc3QgaGFybmVzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNTYyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgUmVmYWN0b3Ig
dGhlIHNpbXBsZSBzdWl0ZS4KIAogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jl
c291cmNlcy9jYW52YXMtc3RhZ2UuanM6Ci0tIAoyLjUuNCAoQXBwbGUgR2l0LTYxKQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267960</attachid>
            <date>2015-12-28 10:09:59 -0800</date>
            <delta_ts>2015-12-28 10:09:59 -0800</delta_ts>
            <desc>7. Move example/ files into misc/.</desc>
            <filename>0007-Simplify-the-test-harness.patch</filename>
            <type>text/plain</type>
            <size>24438</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBkZTA1OWFjMzhhNTQ2Njg0NmVhOGUyNTA1YTQ4MGQ3M2U5YzE2NjE2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDI3IERlYyAyMDE1IDE4OjU4OjMwIC0wNzAwClN1YmplY3Q6IFtQQVRDSCAwNy8xM10gU2ltcGxp
ZnkgdGhlIHRlc3QgaGFybmVzcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjU2MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpNb3ZlIGV4YW1wbGUvIGZp
bGVzIGludG8gbWlzYy8uCgoqIEFuaW1vbWV0ZXIvdGVzdHMvbWlzYy9jYW52YXMtZWxlY3Ryb25z
Lmh0bWw6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhh
bXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sLgoqIEFuaW1vbWV0ZXIvdGVzdHMvbWlzYy9jYW52
YXMtc3RhcnMuaHRtbDogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9leGFtcGxlcy9jYW52YXMtc3RhcnMuaHRtbC4KKiBBbmltb21ldGVyL3Rlc3RzL21pc2Mv
cmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanM6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMu
anMuCiogQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jYW52YXMtc3RhcnMuanM6IFJl
bmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVz
b3VyY2VzL2NhbnZhcy1zdGFycy5qcy4KCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVu
bmVyL3Rlc3RzLmpzOiBVcGRhdGUgdGVzdCBVUkxzLgotLS0KIC4uLi9Bbmltb21ldGVyL3Jlc291
cmNlcy9kZWJ1Zy1ydW5uZXIvdGVzdHMuanMgICAgIHwgIDIyICsrLS0tCiAuLi4vdGVzdHMvZXhh
bXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sICAgICAgICAgICB8ICAxNiAtLS0KIC4uLi9Bbmlt
b21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1zdGFycy5odG1sICAgIHwgIDE2IC0tLQogLi4u
L3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzICAgfCAxMTAgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1z
dGFycy5qcyAgICAgICB8IDEwNiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogLi4uL0FuaW1vbWV0ZXIv
dGVzdHMvbWlzYy9jYW52YXMtZWxlY3Ryb25zLmh0bWwgICAgfCAgMTYgKysrCiAuLi4vQW5pbW9t
ZXRlci90ZXN0cy9taXNjL2NhbnZhcy1zdGFycy5odG1sICAgICAgICB8ICAxNiArKysKIC4uLi90
ZXN0cy9taXNjL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzICAgICAgIHwgMTEwICsrKysr
KysrKysrKysrKysrKysrKwogLi4uL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5q
cyAgICAgICAgICAgfCAxMDYgKysrKysrKysrKysrKysrKysrKysKIFBlcmZvcm1hbmNlVGVzdHMv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2ICsrKwogMTAgZmlsZXMgY2hh
bmdlZCwgMjc1IGluc2VydGlvbnMoKyksIDI1OSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEw
MDY0NCBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLWVs
ZWN0cm9ucy5odG1sCiBkZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1zdGFycy5odG1sCiBkZWxldGUgbW9kZSAxMDA2NDQg
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52
YXMtZWxlY3Ryb25zLmpzCiBkZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtc3RhcnMuanMKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9jYW52YXMt
ZWxlY3Ryb25zLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvbWlzYy9jYW52YXMtc3RhcnMuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jYW52YXMtZWxl
Y3Ryb25zLmpzCiBjcmVhdGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcwoKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL3Rlc3RzLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvdGVzdHMu
anMKaW5kZXggMDgyZThiNy4uZjU0OTcxMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvdGVzdHMuanMKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvdGVzdHMuanMKQEAgLTcz
LDE1ICs3MywxNSBAQCBVdGlsaXRpZXMuZXh0ZW5kT2JqZWN0KEhlYWRlcnMsIHsKIAogU3VpdGVz
LnB1c2gobmV3IFN1aXRlKCJIVE1MIHN1aXRlIiwKICAgICBbCi0gICAgICAgIHsgCisgICAgICAg
IHsKICAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hh
cGVzLmh0bWw/cGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUi
LAogICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBjaXJjbGVzIgogICAgICAgICB9LAot
ICAgICAgICB7IAorICAgICAgICB7CiAgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWln
aHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAogICAgICAgICAgICAgbmFtZTogIkNTUyBib3Vu
Y2luZyBjbGlwcGVkIHJlY3RzIgogICAgICAgICB9LAotICAgICAgICB7IAorICAgICAgICB7CiAg
ICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5o
dG1sP3BhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9
Z3JhZGllbnQiLAogICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBncmFkaWVudCBjaXJj
bGVzIgogICAgICAgICB9LApAQCAtMTA2LDE5ICsxMDYsMTkgQEAgU3VpdGVzLnB1c2gobmV3IFN1
aXRlKCJIVE1MIHN1aXRlIiwKIAogU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJDYW52YXMgc3VpdGUi
LAogICAgIFsKLSAgICAgICAgeyAKKyAgICAgICAgewogICAgICAgICAgICAgdXJsOiAiYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTEy
JnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCiAgICAgICAgICAgICBuYW1lOiAiY2Fu
dmFzIGJvdW5jaW5nIGNpcmNsZXMiCiAgICAgICAgIH0sCi0gICAgICAgIHsgCisgICAgICAgIHsK
ICAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hh
cGVzLmh0bWw/cGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNs
aXA9c3RhciIsCiAgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNsaXBwZWQgcmVj
dHMiCiAgICAgICAgIH0sCi0gICAgICAgIHsgCisgICAgICAgIHsKICAgICAgICAgICAgIHVybDog
ImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/cGFydGljbGVX
aWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCiAg
ICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGdyYWRpZW50IGNpcmNsZXMiCiAgICAg
ICAgIH0sCi0gICAgICAgIHsgCisgICAgICAgIHsKICAgICAgICAgICAgIHVybDogImJvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZw
YXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKICAg
ICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgU1ZHIGltYWdlcyIKICAgICAgICAgfSwK
QEAgLTI0NiwxMiArMjQ2LDEyIEBAIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiTWlzY2VsbGFuZW91
cyBUZXN0cyIsCiAgICAgICAgICAgICBuYW1lOiAiQ29tcG9zaXRlZCBUcmFuc2Zvcm1zIgogICAg
ICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJleGFtcGxlcy9jYW52YXMtZWxl
Y3Ryb25zLmh0bWwiLAotICAgICAgICAgICAgbmFtZTogImNhbnZhcyBlbGVjdHJvbnMiCisgICAg
ICAgICAgICB1cmw6ICJtaXNjL2NhbnZhcy1lbGVjdHJvbnMuaHRtbCIsCisgICAgICAgICAgICBu
YW1lOiAiQ2FudmFzIGVsZWN0cm9ucyIKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAg
ICAgdXJsOiAiZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0bWwiLAotICAgICAgICAgICAgbmFtZTog
ImNhbnZhcyBzdGFycyIKKyAgICAgICAgICAgIHVybDogIm1pc2MvY2FudmFzLXN0YXJzLmh0bWwi
LAorICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBzdGFycyIKICAgICAgICAgfSwKICAgICBdCiAp
KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxl
cy9jYW52YXMtZWxlY3Ryb25zLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzNGRhMDNhLi4wMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9leGFtcGxlcy9jYW52YXMtZWxlY3Ryb25zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdl
LmNzcyI+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8Y2FudmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+
Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RyaW5ncy5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanMiPjwvc2NyaXB0PgotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4
YW1wbGVzL2NhbnZhcy1zdGFycy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2V4YW1wbGVzL2NhbnZhcy1zdGFycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxYWJjYjExLi4wMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9leGFtcGxlcy9jYW52YXMtc3RhcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4K
LSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdHJpbmdzLmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotICAgIDxjYW52YXMgaWQ9InN0YWdlIj48L2NhbnZhcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNv
dXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGIzZjdiZC4uMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotKGZ1bmN0aW9uKCkgewotCi1mdW5jdGlv
biBDYW52YXNFbGVjdHJvbihzdGFnZSkKLXsKLSAgICB0aGlzLl9jb250ZXh0ID0gc3RhZ2UuY29u
dGV4dDsKLSAgICB0aGlzLl9zdGFnZVNpemUgPSBzdGFnZS5zaXplOwotCi0gICAgdmFyIG1pblNp
ZGUgPSBNYXRoLm1pbih0aGlzLl9zdGFnZVNpemUud2lkdGgsIHRoaXMuX3N0YWdlU2l6ZS5oZWln
aHQpOwotICAgIHZhciByYWRpdXNYID0gc3RhZ2UucmFuZG9tKG1pblNpZGUgLyA4LCA3ICogbWlu
U2lkZSAvIDE2KTsKLSAgICB2YXIgcmFkaXVzWSA9IHN0YWdlLnJhbmRvbShtaW5TaWRlIC8gOCwg
MyAqIHJhZGl1c1ggLyA0KTsKLSAgICB0aGlzLl9vcmJpdFJhZGl1c2VzID0gbmV3IFBvaW50KHJh
ZGl1c1gsIHJhZGl1c1kpOwotICAgIHRoaXMuX3JhZGl1cyA9IHN0YWdlLnJhbmRvbSg1LCAxNSk7
Ci0gICAgdGhpcy5fZGlyZWN0aW9uID0gc3RhZ2UucmFuZG9tSW50KDAsIDIpOwotICAgIHRoaXMu
X2FuZ2xlID0gc3RhZ2UucmFuZG9tSW50KDAsIDM2MCk7Ci0gICAgdGhpcy5fY29sb3IgPSBzdGFn
ZS5yYW5kb21Db2xvcigpOwotICAgIHRoaXMuX3JvdGF0ZXIgPSBzdGFnZS5yYW5kb21Sb3RhdGVy
KCk7Ci0gICAgdGhpcy5fcm90YXRlci5uZXh0KHN0YWdlLnJhbmRvbSgwLCB0aGlzLl9yb3RhdGVy
LmludGVydmFsKSk7Ci19Ci0KLUNhbnZhc0VsZWN0cm9uLnByb3RvdHlwZSA9IHsKLSAgICBfZHJh
dzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBwb3NpdGlvbiBv
ZiB0aGUgb2JqZWN0IG9uIHRoZSBlbGxpcHNlLgotICAgICAgICB2YXIgYW5nbGUgPSB0aGlzLl9k
aXJlY3Rpb24gPyB0aGlzLl9yb3RhdGVyLmRlZ3JlZSgpIDogMzYwIC0gdGhpcy5fcm90YXRlci5k
ZWdyZWUoKTsKLSAgICAgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5fc3RhZ2VTaXplLmNlbnRlci5z
dWJ0cmFjdChQb2ludC5wb2ludE9uRWxsaXBzZShhbmdsZSwgdGhpcy5fb3JiaXRSYWRpdXNlcykp
OwotCi0gICAgICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOwotICAgICAgICAgICAgdGhpcy5fY29u
dGV4dC50cmFuc2xhdGUodGhpcy5fc3RhZ2VTaXplLmNlbnRlci54LCB0aGlzLl9zdGFnZVNpemUu
Y2VudGVyLnkpOwotICAgICAgICAgICAgdGhpcy5fY29udGV4dC5yb3RhdGUodGhpcy5fYW5nbGUg
KiBNYXRoLlBJIC8gMTgwKTsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRleHQudHJhbnNsYXRlKC10
aGlzLl9zdGFnZVNpemUuY2VudGVyLngsIC10aGlzLl9zdGFnZVNpemUuY2VudGVyLnkpOwotCi0g
ICAgICAgICAgICAvLyBTZXQgdGhlIHN0cm9rZSBhbmQgdGhlIGZpbGwgY29sb3JzCi0gICAgICAg
ICAgICB0aGlzLl9jb250ZXh0LnN0cm9rZVN0eWxlID0gInJnYmEoMTkyLCAxOTIsIDE5MiwgMC45
KSI7Ci0gICAgICAgICAgICB0aGlzLl9jb250ZXh0LmZpbGxTdHlsZSA9IHRoaXMuX2NvbG9yOwot
Ci0gICAgICAgICAgICAvLyBEcmF3IHRoZSBvcmJpdCBvZiB0aGUgb2JqZWN0LgotICAgICAgICAg
ICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRleHQu
ZWxsaXBzZSh0aGlzLl9zdGFnZVNpemUuY2VudGVyLngsIHRoaXMuX3N0YWdlU2l6ZS5jZW50ZXIu
eSwgdGhpcy5fb3JiaXRSYWRpdXNlcy54LCB0aGlzLl9vcmJpdFJhZGl1c2VzLnksIDAsIDAsIDIg
KiBNYXRoLlBJKTsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRleHQuc3Ryb2tlKCk7Ci0KLSAgICAg
ICAgICAgIC8vIERyYXcgdGhlIG9iamVjdC4KLSAgICAgICAgICAgIHRoaXMuX2NvbnRleHQuYmVn
aW5QYXRoKCk7Ci0gICAgICAgICAgICB0aGlzLl9jb250ZXh0LmFyYyhwb3NpdGlvbi54LCBwb3Np
dGlvbi55LCB0aGlzLl9yYWRpdXMsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTsKLSAgICAgICAgICAg
IHRoaXMuX2NvbnRleHQuZmlsbCgpOwotICAgICAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsK
LSAgICB9LAotCi0gICAgYW5pbWF0ZTogZnVuY3Rpb24odGltZURlbHRhKQotICAgIHsKLSAgICAg
ICAgdGhpcy5fcm90YXRlci5uZXh0KHRpbWVEZWx0YSAvIDEwMCk7Ci0gICAgICAgIHRoaXMuX2Ry
YXcoKTsKLSAgICB9Ci19OwotCi1DYW52YXNFbGVjdHJvbnNTdGFnZSA9IFV0aWxpdGllcy5jcmVh
dGVTdWJjbGFzcyhTdGFnZSwKLSAgICBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBTdGFnZS5j
YWxsKHRoaXMpOwotICAgICAgICB0aGlzLl9lbGVjdHJvbnMgPSBbXTsKLSAgICB9LCB7Ci0KLSAg
ICBpbml0aWFsaXplOiBmdW5jdGlvbihiZW5jaG1hcmspCi0gICAgewotICAgICAgICBTdGFnZS5w
cm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIGJlbmNobWFyayk7Ci0gICAgICAgIHRoaXMu
Y29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOwotICAgIH0sCi0KLSAgICB0
dW5lOiBmdW5jdGlvbihjb3VudCkKLSAgICB7Ci0gICAgICAgIGlmIChjb3VudCA9PSAwKQotICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZWN0cm9ucy5sZW5ndGg7Ci0KLSAgICAgICAgaWYgKGNv
dW50ID4gMCkgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQot
ICAgICAgICAgICAgICAgIHRoaXMuX2VsZWN0cm9ucy5wdXNoKG5ldyBDYW52YXNFbGVjdHJvbih0
aGlzKSk7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlY3Ryb25zLmxlbmd0aDsKLSAgICAg
ICAgfQotCi0gICAgICAgIGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9lbGVjdHJvbnMu
bGVuZ3RoKTsKLSAgICAgICAgdGhpcy5fZWxlY3Ryb25zLnNwbGljZSgtY291bnQsIGNvdW50KTsK
LQotICAgICAgICByZXR1cm4gdGhpcy5fZWxlY3Ryb25zLmxlbmd0aDsKLSAgICB9LAotCi0gICAg
YW5pbWF0ZTogZnVuY3Rpb24odGltZURlbHRhKQotICAgIHsKLSAgICAgICAgdGhpcy5jb250ZXh0
LmNsZWFyUmVjdCgwLCAwLCB0aGlzLnNpemUueCwgdGhpcy5zaXplLnkpOwotCi0gICAgICAgIC8v
IERyYXcgYSBiaWcgc3RhciBpbiB0aGUgbWlkZGxlLgotICAgICAgICB0aGlzLmNvbnRleHQuZmls
bFN0eWxlID0gIm9yYW5nZSI7Ci0gICAgICAgIHRoaXMuY29udGV4dC5iZWdpblBhdGgoKTsKLSAg
ICAgICAgdGhpcy5jb250ZXh0LmFyYyh0aGlzLnNpemUuY2VudGVyLngsIHRoaXMuc2l6ZS5jZW50
ZXIueSwgNTAsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTsKLSAgICAgICAgdGhpcy5jb250ZXh0LmZp
bGwoKTsKLQotICAgICAgICB0aGlzLl9lbGVjdHJvbnMuZm9yRWFjaChmdW5jdGlvbihlbGVjdHJv
bikgewotICAgICAgICAgICAgZWxlY3Ryb24uYW5pbWF0ZSh0aW1lRGVsdGEpOwotICAgICAgICB9
KTsKLSAgICB9Ci19KTsKLQotQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJrID0gVXRpbGl0aWVzLmNy
ZWF0ZVN1YmNsYXNzKEJlbmNobWFyaywKLSAgICBmdW5jdGlvbihvcHRpb25zKQotICAgIHsKLSAg
ICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgbmV3IENhbnZhc0VsZWN0cm9uc1N0YWdlKCksIG5l
dyBBbmltYXRvcigpLCBvcHRpb25zKTsKLSAgICB9Ci0pOwotCi13aW5kb3cuYmVuY2htYXJrQ2xh
c3MgPSBDYW52YXNFbGVjdHJvbnNCZW5jaG1hcms7Ci0KLX0pKCk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtc3RhcnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNiMDAyYS4uMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5q
cworKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0oZnVuY3Rpb24oKSB7Ci0KLWZ1bmN0
aW9uIENhbnZhc1N0YXIoc3RhZ2UpCi17Ci0gICAgdGhpcy5fY29udGV4dCA9IHN0YWdlLmNvbnRl
eHQ7Ci0KLSAgICB0aGlzLl9zaXplID0gc3RhZ2UucmFuZG9tU3F1YXJlU2l6ZSg1LCAyMCk7Ci0g
ICAgdGhpcy5fY2VudGVyID0gc3RhZ2UucmFuZG9tUG9zaXRpb24oc3RhZ2Uuc2l6ZS5zdWJ0cmFj
dCh0aGlzLl9zaXplKSkuYWRkKHRoaXMuX3NpemUuY2VudGVyKTsKLSAgICB0aGlzLl9yb3RhdGVY
ID0gMDsKLSAgICB0aGlzLl9yb3RhdGVEZWx0YVggPSBzdGFnZS5yYW5kb20oMC4zLCAwLjcpOwot
fQotCi1DYW52YXNTdGFyLnByb3RvdHlwZSA9IHsKLSAgICBfZHJhdzogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgdGhpcy5fY29udGV4dC5zYXZlKCk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQu
dHJhbnNsYXRlKHRoaXMuX2NlbnRlci54LCB0aGlzLl9jZW50ZXIueSk7Ci0KLSAgICAgICAgdGhp
cy5fY29udGV4dC5maWxsU3R5bGUgPSAneWVsbG93JzsKLSAgICAgICAgdGhpcy5fY29udGV4dC5z
dHJva2VTdHlsZSA9ICd3aGl0ZSc7Ci0KLSAgICAgICAgdGhpcy5fY29udGV4dC5saW5lV2lkdGgg
PSAxOwotCi0gICAgICAgIHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7Ci0gICAgICAgIHRoaXMu
X2NvbnRleHQubW92ZVRvKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAt
dGhpcy5fc2l6ZS55IC8gIDIpOwotICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbygrdGhpcy5f
c2l6ZS54IC8gMjAgLSB0aGlzLl9yb3RhdGVYIC8gNSwgLXRoaXMuX3NpemUueSAvIDEwKTsKLSAg
ICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oK3RoaXMuX3NpemUueCAvIDQgIC0gdGhpcy5fcm90
YXRlWCwgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQubGlu
ZVRvKCt0aGlzLl9zaXplLnggLyAyMCAtIHRoaXMuX3JvdGF0ZVggLyA1LCArdGhpcy5fc2l6ZS55
IC8gMTApOwotICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgK3RoaXMuX3NpemUueSAvICAyKTsKLSAgICAgICAgdGhpcy5f
Y29udGV4dC5saW5lVG8oLXRoaXMuX3NpemUueCAvIDIwICsgdGhpcy5fcm90YXRlWCAvIDUsICt0
aGlzLl9zaXplLnkgLyAxMCk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKC10aGlzLl9z
aXplLnggLyAgNCArIHRoaXMuX3JvdGF0ZVgsICAgICAgICAgICAgICAgICAgICAgIDApOwotICAg
ICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbygtdGhpcy5fc2l6ZS54IC8gMjAgKyB0aGlzLl9yb3Rh
dGVYIC8gNSwgLXRoaXMuX3NpemUueSAvIDEwKTsKLSAgICAgICAgdGhpcy5fY29udGV4dC5saW5l
VG8oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC10aGlzLl9zaXplLnkg
LyAgMik7Ci0KLSAgICAgICAgdGhpcy5fY29udGV4dC5maWxsKCk7Ci0gICAgICAgIHRoaXMuX2Nv
bnRleHQuc3Ryb2tlKCk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7Ci0gICAg
ICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOwotICAgIH0sCi0KLSAgICBhbmltYXRlOiBmdW5j
dGlvbih0aW1lRGVsdGEpCi0gICAgewotICAgICAgICB0aGlzLl9yb3RhdGVYICs9IHRoaXMuX3Jv
dGF0ZURlbHRhWDsKLQotICAgICAgICBpZiAodGhpcy5fcm90YXRlWCA+IHRoaXMuX3NpemUueCAv
IDQgfHwgdGhpcy5fcm90YXRlWCA8IC10aGlzLl9zaXplLnggLyA0KSB7Ci0gICAgICAgICAgICB0
aGlzLl9yb3RhdGVEZWx0YVggPSAtdGhpcy5fcm90YXRlRGVsdGFYOwotICAgICAgICAgICAgdGhp
cy5fcm90YXRlWCArPSB0aGlzLl9yb3RhdGVEZWx0YVg7Ci0gICAgICAgIH0KLQotICAgICAgICB0
aGlzLl9kcmF3KCk7Ci0gICAgfQotfTsKLQotQ2FudmFzU3RhcnNTdGFnZSA9IFV0aWxpdGllcy5j
cmVhdGVTdWJjbGFzcyhTdGFnZSwKLSAgICBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBTdGFn
ZS5jYWxsKHRoaXMpOwotICAgICAgICB0aGlzLl9vYmplY3RzID0gW107Ci0gICAgfSwgewotCi0g
ICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYmVuY2htYXJrKQotICAgIHsKLSAgICAgICAgU3RhZ2Uu
cHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBiZW5jaG1hcmspOwotICAgICAgICB0aGlz
LmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKLSAgICB9LAotCi0gICAg
dHVuZTogZnVuY3Rpb24oY291bnQpCi0gICAgewotICAgICAgICBpZiAoY291bnQgPT0gMCkKLSAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKLQotICAgICAgICBpZiAoY291
bnQgPiAwKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0g
ICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0cy5wdXNoKG5ldyBDYW52YXNTdGFyKHRoaXMpKTsK
LSAgICAgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKLSAgICAgICAgfQotCi0g
ICAgICAgIGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9vYmplY3RzLmxlbmd0aCk7Ci0g
ICAgICAgIHRoaXMuX29iamVjdHMuc3BsaWNlKC1jb3VudCwgY291bnQpOwotCi0gICAgICAgIHJl
dHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKLSAgICB9LAotCi0gICAgYW5pbWF0ZTogZnVuY3Rp
b24odGltZURlbHRhKQotICAgIHsKLSAgICAgICAgdGhpcy5jb250ZXh0LmJlZ2luUGF0aCgpOwot
ICAgICAgICB0aGlzLmNvbnRleHQuZmlsbFN0eWxlID0gJ2JsYWNrJzsKLSAgICAgICAgdGhpcy5j
b250ZXh0LnJlY3QoMCwgMCwgdGhpcy5zaXplLndpZHRoLCB0aGlzLnNpemUuaGVpZ2h0KTsKLSAg
ICAgICAgdGhpcy5jb250ZXh0LmZpbGwoKTsKLQotICAgICAgICB0aGlzLl9vYmplY3RzLmZvckVh
Y2goZnVuY3Rpb24ob2JqZWN0KSB7Ci0gICAgICAgICAgICBvYmplY3QuYW5pbWF0ZSh0aW1lRGVs
dGEpOwotICAgICAgICB9KTsKLSAgICB9Ci19KTsKLQotQ2FudmFzU3RhcnNCZW5jaG1hcmsgPSBV
dGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQmVuY2htYXJrLAotICAgIGZ1bmN0aW9uKG9wdGlvbnMp
Ci0gICAgewotICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBuZXcgQ2FudmFzU3RhcnNTdGFn
ZSgpLCBuZXcgQW5pbWF0b3IoKSwgb3B0aW9ucyk7Ci0gICAgfQotKTsKLQotd2luZG93LmJlbmNo
bWFya0NsYXNzID0gQ2FudmFzU3RhcnNCZW5jaG1hcms7Ci0KLX0pKCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL21pc2MvY2FudmFzLWVsZWN0cm9ucy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL21pc2MvY2FudmFzLWVsZWN0cm9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjM0ZGEwM2EKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9jYW52YXMtZWxlY3Ryb25zLmh0bWwKQEAgLTAsMCAr
MSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3Mi
PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFzPgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0cmluZ3MuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL2Nh
bnZhcy1zdGFycy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2Mv
Y2FudmFzLXN0YXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFi
Y2IxMQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9taXNjL2NhbnZhcy1zdGFycy5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQv
Y3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9zdHJpbmdzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FudmFz
LXN0YXJzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMgaWQ9InN0
YWdlIj48L2NhbnZhcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NhbnZh
cy1lbGVjdHJvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzZjdi
ZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9t
aXNjL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzCkBAIC0wLDAgKzEsMTEwIEBACisoZnVu
Y3Rpb24oKSB7CisKK2Z1bmN0aW9uIENhbnZhc0VsZWN0cm9uKHN0YWdlKQoreworICAgIHRoaXMu
X2NvbnRleHQgPSBzdGFnZS5jb250ZXh0OworICAgIHRoaXMuX3N0YWdlU2l6ZSA9IHN0YWdlLnNp
emU7CisKKyAgICB2YXIgbWluU2lkZSA9IE1hdGgubWluKHRoaXMuX3N0YWdlU2l6ZS53aWR0aCwg
dGhpcy5fc3RhZ2VTaXplLmhlaWdodCk7CisgICAgdmFyIHJhZGl1c1ggPSBzdGFnZS5yYW5kb20o
bWluU2lkZSAvIDgsIDcgKiBtaW5TaWRlIC8gMTYpOworICAgIHZhciByYWRpdXNZID0gc3RhZ2Uu
cmFuZG9tKG1pblNpZGUgLyA4LCAzICogcmFkaXVzWCAvIDQpOworICAgIHRoaXMuX29yYml0UmFk
aXVzZXMgPSBuZXcgUG9pbnQocmFkaXVzWCwgcmFkaXVzWSk7CisgICAgdGhpcy5fcmFkaXVzID0g
c3RhZ2UucmFuZG9tKDUsIDE1KTsKKyAgICB0aGlzLl9kaXJlY3Rpb24gPSBzdGFnZS5yYW5kb21J
bnQoMCwgMik7CisgICAgdGhpcy5fYW5nbGUgPSBzdGFnZS5yYW5kb21JbnQoMCwgMzYwKTsKKyAg
ICB0aGlzLl9jb2xvciA9IHN0YWdlLnJhbmRvbUNvbG9yKCk7CisgICAgdGhpcy5fcm90YXRlciA9
IHN0YWdlLnJhbmRvbVJvdGF0ZXIoKTsKKyAgICB0aGlzLl9yb3RhdGVyLm5leHQoc3RhZ2UucmFu
ZG9tKDAsIHRoaXMuX3JvdGF0ZXIuaW50ZXJ2YWwpKTsKK30KKworQ2FudmFzRWxlY3Ryb24ucHJv
dG90eXBlID0geworICAgIF9kcmF3OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAvLyBDYWxj
dWxhdGUgdGhlIHBvc2l0aW9uIG9mIHRoZSBvYmplY3Qgb24gdGhlIGVsbGlwc2UuCisgICAgICAg
IHZhciBhbmdsZSA9IHRoaXMuX2RpcmVjdGlvbiA/IHRoaXMuX3JvdGF0ZXIuZGVncmVlKCkgOiAz
NjAgLSB0aGlzLl9yb3RhdGVyLmRlZ3JlZSgpOworICAgICAgICB2YXIgcG9zaXRpb24gPSB0aGlz
Ll9zdGFnZVNpemUuY2VudGVyLnN1YnRyYWN0KFBvaW50LnBvaW50T25FbGxpcHNlKGFuZ2xlLCB0
aGlzLl9vcmJpdFJhZGl1c2VzKSk7CisKKyAgICAgICAgdGhpcy5fY29udGV4dC5zYXZlKCk7Cisg
ICAgICAgICAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSh0aGlzLl9zdGFnZVNpemUuY2VudGVy
LngsIHRoaXMuX3N0YWdlU2l6ZS5jZW50ZXIueSk7CisgICAgICAgICAgICB0aGlzLl9jb250ZXh0
LnJvdGF0ZSh0aGlzLl9hbmdsZSAqIE1hdGguUEkgLyAxODApOworICAgICAgICAgICAgdGhpcy5f
Y29udGV4dC50cmFuc2xhdGUoLXRoaXMuX3N0YWdlU2l6ZS5jZW50ZXIueCwgLXRoaXMuX3N0YWdl
U2l6ZS5jZW50ZXIueSk7CisKKyAgICAgICAgICAgIC8vIFNldCB0aGUgc3Ryb2tlIGFuZCB0aGUg
ZmlsbCBjb2xvcnMKKyAgICAgICAgICAgIHRoaXMuX2NvbnRleHQuc3Ryb2tlU3R5bGUgPSAicmdi
YSgxOTIsIDE5MiwgMTkyLCAwLjkpIjsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0
eWxlID0gdGhpcy5fY29sb3I7CisKKyAgICAgICAgICAgIC8vIERyYXcgdGhlIG9yYml0IG9mIHRo
ZSBvYmplY3QuCisgICAgICAgICAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOworICAgICAg
ICAgICAgdGhpcy5fY29udGV4dC5lbGxpcHNlKHRoaXMuX3N0YWdlU2l6ZS5jZW50ZXIueCwgdGhp
cy5fc3RhZ2VTaXplLmNlbnRlci55LCB0aGlzLl9vcmJpdFJhZGl1c2VzLngsIHRoaXMuX29yYml0
UmFkaXVzZXMueSwgMCwgMCwgMiAqIE1hdGguUEkpOworICAgICAgICAgICAgdGhpcy5fY29udGV4
dC5zdHJva2UoKTsKKworICAgICAgICAgICAgLy8gRHJhdyB0aGUgb2JqZWN0LgorICAgICAgICAg
ICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRleHQu
YXJjKHBvc2l0aW9uLngsIHBvc2l0aW9uLnksIHRoaXMuX3JhZGl1cywgMCwgTWF0aC5QSSAqIDIs
IHRydWUpOworICAgICAgICAgICAgdGhpcy5fY29udGV4dC5maWxsKCk7CisgICAgICAgIHRoaXMu
X2NvbnRleHQucmVzdG9yZSgpOworICAgIH0sCisKKyAgICBhbmltYXRlOiBmdW5jdGlvbih0aW1l
RGVsdGEpCisgICAgeworICAgICAgICB0aGlzLl9yb3RhdGVyLm5leHQodGltZURlbHRhIC8gMTAw
KTsKKyAgICAgICAgdGhpcy5fZHJhdygpOworICAgIH0KK307CisKK0NhbnZhc0VsZWN0cm9uc1N0
YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlLAorICAgIGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIFN0YWdlLmNhbGwodGhpcyk7CisgICAgICAgIHRoaXMuX2VsZWN0cm9ucyA9
IFtdOworICAgIH0sIHsKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykKKyAg
ICB7CisgICAgICAgIFN0YWdlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgYmVuY2ht
YXJrKTsKKyAgICAgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoIjJk
Iik7CisgICAgfSwKKworICAgIHR1bmU6IGZ1bmN0aW9uKGNvdW50KQorICAgIHsKKyAgICAgICAg
aWYgKGNvdW50ID09IDApCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlY3Ryb25zLmxlbmd0
aDsKKworICAgICAgICBpZiAoY291bnQgPiAwKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICAgICAgdGhpcy5fZWxlY3Ryb25zLnB1c2go
bmV3IENhbnZhc0VsZWN0cm9uKHRoaXMpKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVj
dHJvbnMubGVuZ3RoOworICAgICAgICB9CisKKyAgICAgICAgY291bnQgPSBNYXRoLm1pbigtY291
bnQsIHRoaXMuX2VsZWN0cm9ucy5sZW5ndGgpOworICAgICAgICB0aGlzLl9lbGVjdHJvbnMuc3Bs
aWNlKC1jb3VudCwgY291bnQpOworCisgICAgICAgIHJldHVybiB0aGlzLl9lbGVjdHJvbnMubGVu
Z3RoOworICAgIH0sCisKKyAgICBhbmltYXRlOiBmdW5jdGlvbih0aW1lRGVsdGEpCisgICAgewor
ICAgICAgICB0aGlzLmNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuc2l6ZS54LCB0aGlzLnNp
emUueSk7CisKKyAgICAgICAgLy8gRHJhdyBhIGJpZyBzdGFyIGluIHRoZSBtaWRkbGUuCisgICAg
ICAgIHRoaXMuY29udGV4dC5maWxsU3R5bGUgPSAib3JhbmdlIjsKKyAgICAgICAgdGhpcy5jb250
ZXh0LmJlZ2luUGF0aCgpOworICAgICAgICB0aGlzLmNvbnRleHQuYXJjKHRoaXMuc2l6ZS5jZW50
ZXIueCwgdGhpcy5zaXplLmNlbnRlci55LCA1MCwgMCwgTWF0aC5QSSAqIDIsIHRydWUpOworICAg
ICAgICB0aGlzLmNvbnRleHQuZmlsbCgpOworCisgICAgICAgIHRoaXMuX2VsZWN0cm9ucy5mb3JF
YWNoKGZ1bmN0aW9uKGVsZWN0cm9uKSB7CisgICAgICAgICAgICBlbGVjdHJvbi5hbmltYXRlKHRp
bWVEZWx0YSk7CisgICAgICAgIH0pOworICAgIH0KK30pOworCitDYW52YXNFbGVjdHJvbnNCZW5j
aG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQmVuY2htYXJrLAorICAgIGZ1bmN0aW9u
KG9wdGlvbnMpCisgICAgeworICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBuZXcgQ2FudmFz
RWxlY3Ryb25zU3RhZ2UoKSwgbmV3IEFuaW1hdG9yKCksIG9wdGlvbnMpOworICAgIH0KKyk7CisK
K3dpbmRvdy5iZW5jaG1hcmtDbGFzcyA9IENhbnZhc0VsZWN0cm9uc0JlbmNobWFyazsKKworfSko
KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NhbnZhcy1zdGFy
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2IwMDJhCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3Vy
Y2VzL2NhbnZhcy1zdGFycy5qcwpAQCAtMCwwICsxLDEwNiBAQAorKGZ1bmN0aW9uKCkgeworCitm
dW5jdGlvbiBDYW52YXNTdGFyKHN0YWdlKQoreworICAgIHRoaXMuX2NvbnRleHQgPSBzdGFnZS5j
b250ZXh0OworCisgICAgdGhpcy5fc2l6ZSA9IHN0YWdlLnJhbmRvbVNxdWFyZVNpemUoNSwgMjAp
OworICAgIHRoaXMuX2NlbnRlciA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKHN0YWdlLnNpemUuc3Vi
dHJhY3QodGhpcy5fc2l6ZSkpLmFkZCh0aGlzLl9zaXplLmNlbnRlcik7CisgICAgdGhpcy5fcm90
YXRlWCA9IDA7CisgICAgdGhpcy5fcm90YXRlRGVsdGFYID0gc3RhZ2UucmFuZG9tKDAuMywgMC43
KTsKK30KKworQ2FudmFzU3Rhci5wcm90b3R5cGUgPSB7CisgICAgX2RyYXc6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOworICAgICAgICB0aGlzLl9jb250
ZXh0LnRyYW5zbGF0ZSh0aGlzLl9jZW50ZXIueCwgdGhpcy5fY2VudGVyLnkpOworCisgICAgICAg
IHRoaXMuX2NvbnRleHQuZmlsbFN0eWxlID0gJ3llbGxvdyc7CisgICAgICAgIHRoaXMuX2NvbnRl
eHQuc3Ryb2tlU3R5bGUgPSAnd2hpdGUnOworCisgICAgICAgIHRoaXMuX2NvbnRleHQubGluZVdp
ZHRoID0gMTsKKworICAgICAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOworICAgICAgICB0
aGlzLl9jb250ZXh0Lm1vdmVUbyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwgLXRoaXMuX3NpemUueSAvICAyKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oK3Ro
aXMuX3NpemUueCAvIDIwIC0gdGhpcy5fcm90YXRlWCAvIDUsIC10aGlzLl9zaXplLnkgLyAxMCk7
CisgICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKCt0aGlzLl9zaXplLnggLyA0ICAtIHRoaXMu
X3JvdGF0ZVgsICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICB0aGlzLl9jb250ZXh0
LmxpbmVUbygrdGhpcy5fc2l6ZS54IC8gMjAgLSB0aGlzLl9yb3RhdGVYIC8gNSwgK3RoaXMuX3Np
emUueSAvIDEwKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsICt0aGlzLl9zaXplLnkgLyAgMik7CisgICAgICAgIHRo
aXMuX2NvbnRleHQubGluZVRvKC10aGlzLl9zaXplLnggLyAyMCArIHRoaXMuX3JvdGF0ZVggLyA1
LCArdGhpcy5fc2l6ZS55IC8gMTApOworICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbygtdGhp
cy5fc2l6ZS54IC8gIDQgKyB0aGlzLl9yb3RhdGVYLCAgICAgICAgICAgICAgICAgICAgICAwKTsK
KyAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oLXRoaXMuX3NpemUueCAvIDIwICsgdGhpcy5f
cm90YXRlWCAvIDUsIC10aGlzLl9zaXplLnkgLyAxMCk7CisgICAgICAgIHRoaXMuX2NvbnRleHQu
bGluZVRvKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAtdGhpcy5fc2l6
ZS55IC8gIDIpOworCisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbCgpOworICAgICAgICB0aGlz
Ll9jb250ZXh0LnN0cm9rZSgpOworICAgICAgICB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpOwor
ICAgICAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKKyAgICB9LAorCisgICAgYW5pbWF0ZTog
ZnVuY3Rpb24odGltZURlbHRhKQorICAgIHsKKyAgICAgICAgdGhpcy5fcm90YXRlWCArPSB0aGlz
Ll9yb3RhdGVEZWx0YVg7CisKKyAgICAgICAgaWYgKHRoaXMuX3JvdGF0ZVggPiB0aGlzLl9zaXpl
LnggLyA0IHx8IHRoaXMuX3JvdGF0ZVggPCAtdGhpcy5fc2l6ZS54IC8gNCkgeworICAgICAgICAg
ICAgdGhpcy5fcm90YXRlRGVsdGFYID0gLXRoaXMuX3JvdGF0ZURlbHRhWDsKKyAgICAgICAgICAg
IHRoaXMuX3JvdGF0ZVggKz0gdGhpcy5fcm90YXRlRGVsdGFYOworICAgICAgICB9CisKKyAgICAg
ICAgdGhpcy5fZHJhdygpOworICAgIH0KK307CisKK0NhbnZhc1N0YXJzU3RhZ2UgPSBVdGlsaXRp
ZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2UsCisgICAgZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
U3RhZ2UuY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy5fb2JqZWN0cyA9IFtdOworICAgIH0sIHsK
KworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykKKyAgICB7CisgICAgICAgIFN0
YWdlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAgICAgICAg
dGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoIjJkIik7CisgICAgfSwKKwor
ICAgIHR1bmU6IGZ1bmN0aW9uKGNvdW50KQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50ID09IDAp
CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0cy5sZW5ndGg7CisKKyAgICAgICAgaWYg
KGNvdW50ID4gMCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytp
KQorICAgICAgICAgICAgICAgIHRoaXMuX29iamVjdHMucHVzaChuZXcgQ2FudmFzU3Rhcih0aGlz
KSk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0cy5sZW5ndGg7CisgICAgICAgIH0K
KworICAgICAgICBjb3VudCA9IE1hdGgubWluKC1jb3VudCwgdGhpcy5fb2JqZWN0cy5sZW5ndGgp
OworICAgICAgICB0aGlzLl9vYmplY3RzLnNwbGljZSgtY291bnQsIGNvdW50KTsKKworICAgICAg
ICByZXR1cm4gdGhpcy5fb2JqZWN0cy5sZW5ndGg7CisgICAgfSwKKworICAgIGFuaW1hdGU6IGZ1
bmN0aW9uKHRpbWVEZWx0YSkKKyAgICB7CisgICAgICAgIHRoaXMuY29udGV4dC5iZWdpblBhdGgo
KTsKKyAgICAgICAgdGhpcy5jb250ZXh0LmZpbGxTdHlsZSA9ICdibGFjayc7CisgICAgICAgIHRo
aXMuY29udGV4dC5yZWN0KDAsIDAsIHRoaXMuc2l6ZS53aWR0aCwgdGhpcy5zaXplLmhlaWdodCk7
CisgICAgICAgIHRoaXMuY29udGV4dC5maWxsKCk7CisKKyAgICAgICAgdGhpcy5fb2JqZWN0cy5m
b3JFYWNoKGZ1bmN0aW9uKG9iamVjdCkgeworICAgICAgICAgICAgb2JqZWN0LmFuaW1hdGUodGlt
ZURlbHRhKTsKKyAgICAgICAgfSk7CisgICAgfQorfSk7CisKK0NhbnZhc1N0YXJzQmVuY2htYXJr
ID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJlbmNobWFyaywKKyAgICBmdW5jdGlvbihvcHRp
b25zKQorICAgIHsKKyAgICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgbmV3IENhbnZhc1N0YXJz
U3RhZ2UoKSwgbmV3IEFuaW1hdG9yKCksIG9wdGlvbnMpOworICAgIH0KKyk7CisKK3dpbmRvdy5i
ZW5jaG1hcmtDbGFzcyA9IENhbnZhc1N0YXJzQmVuY2htYXJrOworCit9KSgpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9n
IGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzU3NDYyZC4uNTBlZmVkYSAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKQEAgLTUsNiArNSwyMiBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgogCisgICAgICAgIE1vdmUgZXhhbXBsZS8gZmlsZXMgaW50byBtaXNjLy4KKwor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWlzYy9jYW52YXMtZWxlY3Ryb25zLmh0bWw6IFJl
bmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2Fu
dmFzLWVsZWN0cm9ucy5odG1sLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWlzYy9jYW52
YXMtc3RhcnMuaHRtbDogUmVuYW1lZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9leGFtcGxlcy9jYW52YXMtc3RhcnMuaHRtbC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzL21pc2MvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanM6IFJlbmFtZWQgZnJvbSBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1l
bGVjdHJvbnMuanMuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9j
YW52YXMtc3RhcnMuanM6IFJlbmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcy4KKworICAgICAgICAqIEFu
aW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci90ZXN0cy5qczogVXBkYXRlIHRlc3QgVVJM
cy4KKworMjAxNS0xMi0yNyAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAg
U2ltcGxpZnkgdGhlIHRlc3QgaGFybmVzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKICAgICAgICAgUmVmYWN0b3IgbWlzY2VsbGFuZW91cyBzdWl0ZS4KIAogICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1wYXJ0aWNsZXMuanM6Ci0tIAoyLjUuNCAoQXBwbGUgR2l0LTYxKQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267961</attachid>
            <date>2015-12-28 10:10:39 -0800</date>
            <delta_ts>2015-12-28 10:10:39 -0800</delta_ts>
            <desc>8. Refactor the bouncing canvas tests.</desc>
            <filename>0008-Simplify-the-test-harness.patch</filename>
            <type>text/plain</type>
            <size>25639</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSAxODVkNTIxZWY2NGE5ODFkY2Q3YmM5MDNiMjQ2MjBjYTFhMDE4NzVmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDI3IERlYyAyMDE1IDIxOjE3OjM5IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAwOC8xM10gU2ltcGxp
ZnkgdGhlIHRlc3QgaGFybmVzcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjU2MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpSZWZhY3RvciB0aGUgYm91
bmNpbmcgY2FudmFzIHRlc3RzLgoKKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw6IE1vdmUgc2NyaXB0cyB0byB0aGUgZW5kLgoq
IEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFw
ZXMuaHRtbDogTW92ZSBzY3JpcHRzIHRvIHRoZSBlbmQuCgoqIEFuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanM6IFByb21vdGUg
YSBmZXcKcHJvcGVydGllcyB0byAicHVibGljIiBzaW5jZSB0aGV5IGFyZSB1c2VkIGJ5IHN1YmNs
YXNzZXMuCihCb3VuY2luZ1BhcnRpY2xlc1N0YWdlKTogRml4IHRoZSBjb25zdHJ1Y3Rvciwgd2hp
Y2ggd2FzIG1pc3NpbmcgInRoaXMiLiBNYWtlIHBhcnRpY2xlcwoicHVibGljIiBmb3Igc3ViY2xh
c3Nlcy4KKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuaW5pdGlhbGl6ZSk6IEZpeCB0aGUgbWF4IHZl
bG9jaXR5LCB3aGljaCB3YXMgYWNjaWRlbnRhbGx5IGNoYW5nZWQuCiogQW5pbW9tZXRlci90ZXN0
cy9taXNjL3Jlc291cmNlcy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmpzOiBSZWZhY3Rvci4KCiog
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNh
bnZhcy1wYXJ0aWNsZXMuanM6CkJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0b3IgaXMgbm8g
bG9uZ2VyIG5lZWRlZC4KKEJvdW5jaW5nQ2FudmFzUGFydGljbGUpOiBDaGFuZ2UgY29uc3RydWN0
b3IgdG8gdGFrZSBhIHNoYXBlIGFzIGEgcGFyYW1ldGVyIGluc3RlYWQgb2YKaGF2aW5nIHN1YmNs
YXNzZXMgc2V0IHRoZSB2YXJpYWJsZS4KCiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanM6IFJlZmFjdG9yLgoqIEFu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52
YXMtc2hhcGVzLmpzOiBSZWZhY3Rvci4KLS0tCiAuLi4vYm91bmNpbmctcGFydGljbGVzL2JvdW5j
aW5nLWNhbnZhcy1pbWFnZXMuaHRtbCB8IDEzICsrLS0KIC4uLi9ib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sIHwgIDggKy0tCiAuLi4vcmVzb3VyY2VzL2JvdW5j
aW5nLWNhbnZhcy1pbWFnZXMuanMgICAgICAgICAgICB8IDQzICsrKysrKy0tLS0tLS0KIC4uLi9y
ZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcyAgICAgICAgIHwgNzUgKysrKysr
KysrKy0tLS0tLS0tLS0tLQogLi4uL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpz
ICAgICAgICAgICAgfCA2MCArKysrKysrKy0tLS0tLS0tLQogLi4uL3Jlc291cmNlcy9ib3VuY2lu
Zy1wYXJ0aWNsZXMuanMgICAgICAgICAgICAgICAgfCA1MCArKysrKysrLS0tLS0tLS0KIC4uLi90
ZXN0cy9taXNjL3Jlc291cmNlcy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmpzIHwgIDYgKy0KIFBl
cmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjcgKysr
KysrKysKIDggZmlsZXMgY2hhbmdlZCwgMTUwIGluc2VydGlvbnMoKyksIDEzMiBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbCBiL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWlt
YWdlcy5odG1sCmluZGV4IGFkODA2ZGIuLjYwMDQ4NWYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFz
LWltYWdlcy5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sCkBAIC0xLDI3ICsxLDI2
IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CisgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CiAg
ICAgPHN0eWxlPgogICAgICAgICBpbWcuaGlkZGVuIHsKICAgICAgICAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKICAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICAgfQogICAg
IDwvc3R5bGU+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJl
Zj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aW1nIGNs
YXNzPSJoaWRkZW4iIHNyYz0iLi4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI+CisgICAgPGltZyBj
bGFzcz0iaGlkZGVuIiBzcmM9Ii4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciPgorICAgIDxjYW52
YXMgaWQ9InN0YWdlIj48L2NhbnZhcz4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9zdHJpbmdzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3NhbXBsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
ZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9t
YXRoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2Ny
aXB0PiAgCiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBh
cnRpY2xlcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2lu
Zy1jYW52YXMtaW1hZ2VzLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotICAgIDxpbWcg
Y2xhc3M9ImhpZGRlbiIgc3JjPSIuLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIj4KLSAgICA8aW1n
IGNsYXNzPSJoaWRkZW4iIHNyYz0iLi4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyI+Ci0gICAgPGNh
bnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFzPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1jYW52YXMtc2hhcGVzLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbAppbmRleCBk
MWQ3YzA2Li5jMDAxZjQ1IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2Jv
dW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbApAQCAtMiwxOCArMiwxOCBAQAogPGh0bWw+CiA8aGVh
ZD4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9y
ZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMgaWQ9InN0
YWdlIj48L2NhbnZhcz4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRo
bS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdHJpbmdz
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9u
cy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCisg
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVz
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotICAgIDxjYW52YXMgaWQ9InN0YWdlIj48
L2NhbnZhcz4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNh
bnZhcy1pbWFnZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCmluZGV4IGVj
NGE2M2IuLjUxODIxNGUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMu
anMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcwpAQCAtMSwyOCArMSwzMyBA
QAorKGZ1bmN0aW9uKCkgeworCiBCb3VuY2luZ0NhbnZhc0ltYWdlID0gVXRpbGl0aWVzLmNyZWF0
ZVN1YmNsYXNzKEJvdW5jaW5nQ2FudmFzUGFydGljbGUsCiAgICAgZnVuY3Rpb24oc3RhZ2UpCiAg
ICAgewotICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisgICAg
ICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSwgImltYWdlIik7CiAg
ICAgICAgIHRoaXMuX2ltYWdlRWxlbWVudCA9IHN0YWdlLmltYWdlRWxlbWVudDsKLSAgICAgICAg
dGhpcy5fc2hhcGUgPSAiaW1hZ2UiOwogICAgIH0sIHsKIAogICAgIF9kcmF3OiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICB0aGlzLl9jb250ZXh0LnNhdmUoKTsKLSAgICAgICAgICAgIHRoaXMu
X2FwcGx5Um90YXRpb24oKTsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRleHQuZHJhd0ltYWdlKHRo
aXMuX2ltYWdlRWxlbWVudCwgMCwgMCwgdGhpcy5fc2l6ZS54LCB0aGlzLl9zaXplLnkpOwotICAg
ICAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKKyAgICAgICAgdGhpcy5jb250ZXh0LnNhdmUo
KTsKKyAgICAgICAgICAgIHRoaXMuYXBwbHlSb3RhdGlvbigpOworICAgICAgICAgICAgdGhpcy5j
b250ZXh0LmRyYXdJbWFnZSh0aGlzLl9pbWFnZUVsZW1lbnQsIDAsIDAsIHRoaXMuc2l6ZS54LCB0
aGlzLnNpemUueSk7CisgICAgICAgIHRoaXMuY29udGV4dC5yZXN0b3JlKCk7CiAgICAgfQogfSk7
CiAKIEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3Mo
Qm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZSwKLSAgICBmdW5jdGlvbihlbGVtZW50LCBvcHRp
b25zKQorICAgIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIEJvdW5jaW5nQ2FudmFzUGFydGlj
bGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICAgICAgQm91bmNpbmdD
YW52YXNQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMpOworICAgIH0sIHsKIAotICAgICAgICB2YXIg
aW1hZ2VTcmMgPSBvcHRpb25zWyJpbWFnZVNyYyJdIHx8ICJyZXNvdXJjZXMveWluLXlhbmcuc3Zn
IjsKKyAgICBpbml0aWFsaXplOiBmdW5jdGlvbihiZW5jaG1hcmspCisgICAgeworICAgICAgICBC
b3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhp
cywgYmVuY2htYXJrKTsKKyAgICAgICAgdmFyIGltYWdlU3JjID0gYmVuY2htYXJrLm9wdGlvbnNb
ImltYWdlU3JjIl0gfHwgInJlc291cmNlcy95aW4teWFuZy5zdmciOwogICAgICAgICB0aGlzLmlt
YWdlRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5oaWRkZW5bc3JjPVwiIiArIGlt
YWdlU3JjICsgIlwiXSIpOwotICAgIH0sIHsKKyAgICB9LAogCiAgICAgY3JlYXRlUGFydGljbGU6
IGZ1bmN0aW9uKCkKICAgICB7CkBAIC0zMSwxOCArMzYsMTIgQEAgQm91bmNpbmdDYW52YXNJbWFn
ZXNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ0NhbnZhc1BhcnRpY2xl
c1N0YWcKIH0pOwogCiBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayA9IFV0aWxpdGllcy5j
cmVhdGVTdWJjbGFzcyhCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyaywKLSAgICBmdW5j
dGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCisgICAgZnVuY3Rpb24ob3B0
aW9ucykKICAgICB7Ci0gICAgICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLmNh
bGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLSAgICB9LCB7Ci0K
LSAgICBjcmVhdGVTdGFnZTogZnVuY3Rpb24oZWxlbWVudCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsK
KyAgICAgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBuZXcg
Qm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZSgpLCBuZXcgQW5pbWF0b3IoKSwgb3B0aW9ucyk7CiAg
ICAgfQotfSk7CispOworCit3aW5kb3cuYmVuY2htYXJrQ2xhc3MgPSBCb3VuY2luZ0NhbnZhc0lt
YWdlc0JlbmNobWFyazsKIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlv
bihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCi17Ci0gICAgcmV0dXJuIG5ldyBC
b3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jl
c3NCYXIpOwotfQorfSkoKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0
aWNsZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzCmluZGV4IGMzMWY1
MGYuLjc1ZjcxMjIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMu
anMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcwpAQCAtMSwzOSArMSwz
OSBAQAogQm91bmNpbmdDYW52YXNQYXJ0aWNsZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhC
b3VuY2luZ1BhcnRpY2xlLAotICAgIGZ1bmN0aW9uKHN0YWdlKQorICAgIGZ1bmN0aW9uKHN0YWdl
LCBzaGFwZSkKICAgICB7CiAgICAgICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFn
ZSk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQgPSBzdGFnZS5jb250ZXh0OwotICAgICAgICB0aGlz
Ll9zaGFwZSA9ICIiOworICAgICAgICB0aGlzLmNvbnRleHQgPSBzdGFnZS5jb250ZXh0OworICAg
ICAgICB0aGlzLl9zaGFwZSA9IHNoYXBlOwogICAgICAgICB0aGlzLl9jbGlwID0gc3RhZ2UuY2xp
cDsKICAgICB9LCB7CiAKLSAgICBfYXBwbHlSb3RhdGlvbjogZnVuY3Rpb24oKQorICAgIGFwcGx5
Um90YXRpb246IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zaGFwZSA9PSAi
Y2lyY2xlIikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9jb250ZXh0LnRy
YW5zbGF0ZSh0aGlzLl9zaXplLnggLyAyLCB0aGlzLl9zaXplLnkgLyAyKTsKLSAgICAgICAgdGhp
cy5fY29udGV4dC5yb3RhdGUodGhpcy5fcm90YXRlci5kZWdyZWUoKSAqIE1hdGguUEkgLyAxODAp
OwotICAgICAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSgtdGhpcy5fc2l6ZS54IC8gMiwgLXRo
aXMuX3NpemUueSAvIDIpOworICAgICAgICB0aGlzLmNvbnRleHQudHJhbnNsYXRlKHRoaXMuc2l6
ZS54IC8gMiwgdGhpcy5zaXplLnkgLyAyKTsKKyAgICAgICAgdGhpcy5jb250ZXh0LnJvdGF0ZSh0
aGlzLnJvdGF0ZXIuZGVncmVlKCkgKiBNYXRoLlBJIC8gMTgwKTsKKyAgICAgICAgdGhpcy5jb250
ZXh0LnRyYW5zbGF0ZSgtdGhpcy5zaXplLnggLyAyLCAtdGhpcy5zaXplLnkgLyAyKTsKICAgICB9
LAogCi0gICAgX2FwcGx5Q2xpcHBpbmc6IGZ1bmN0aW9uKCkKKyAgICBhcHBseUNsaXBwaW5nOiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgY2xpcFBvaW50cyA9IEJvdW5jaW5nQ2FudmFz
UGFydGljbGUuY2xpcHNbdGhpcy5fY2xpcF07CiAgICAgICAgIGlmICghY2xpcFBvaW50cykKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOwor
ICAgICAgICB0aGlzLmNvbnRleHQuYmVnaW5QYXRoKCk7CiAgICAgICAgIGNsaXBQb2ludHMuZm9y
RWFjaChmdW5jdGlvbihwb2ludCwgaW5kZXgpIHsKLSAgICAgICAgICAgIHZhciBwb2ludCA9IHRo
aXMuX3NpemUubXVsdGlwbHkocG9pbnQpOworICAgICAgICAgICAgdmFyIHBvaW50ID0gdGhpcy5z
aXplLm11bHRpcGx5KHBvaW50KTsKICAgICAgICAgICAgIGlmICghaW5kZXgpCi0gICAgICAgICAg
ICAgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8ocG9pbnQueCwgcG9pbnQueSk7CisgICAgICAgICAg
ICAgICAgdGhpcy5jb250ZXh0Lm1vdmVUbyhwb2ludC54LCBwb2ludC55KTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyhwb2ludC54LCBwb2lu
dC55KTsKKyAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQubGluZVRvKHBvaW50LngsIHBvaW50
LnkpOwogICAgICAgICB9LCB0aGlzKTsKIAotICAgICAgICB0aGlzLl9jb250ZXh0LmNsb3NlUGF0
aCgpOwotICAgICAgICB0aGlzLl9jb250ZXh0LmNsaXAoKTsKKyAgICAgICAgdGhpcy5jb250ZXh0
LmNsb3NlUGF0aCgpOworICAgICAgICB0aGlzLmNvbnRleHQuY2xpcCgpOwogICAgIH0sCiAKICAg
ICBfZHJhdzogZnVuY3Rpb24oKQpAQCAtNDQsMTAgKzQ0LDEwIEBAIEJvdW5jaW5nQ2FudmFzUGFy
dGljbGUgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZSwKICAgICBh
bmltYXRlOiBmdW5jdGlvbih0aW1lRGVsdGEpCiAgICAgewogICAgICAgICBCb3VuY2luZ1BhcnRp
Y2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKLSAgICAgICAgdGhp
cy5fY29udGV4dC5zYXZlKCk7Ci0gICAgICAgICAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSh0
aGlzLl9wb3NpdGlvbi54LCB0aGlzLl9wb3NpdGlvbi55KTsKKyAgICAgICAgdGhpcy5jb250ZXh0
LnNhdmUoKTsKKyAgICAgICAgICAgIHRoaXMuY29udGV4dC50cmFuc2xhdGUodGhpcy5wb3NpdGlv
bi54LCB0aGlzLnBvc2l0aW9uLnkpOwogICAgICAgICAgICAgdGhpcy5fZHJhdygpOwotICAgICAg
ICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKKyAgICAgICAgdGhpcy5jb250ZXh0LnJlc3RvcmUo
KTsKICAgICB9CiB9KTsKIApAQCAtNjMsNDAgKzYzLDMzIEBAIEJvdW5jaW5nQ2FudmFzUGFydGlj
bGUuY2xpcHMgPSB7CiAgICAgICAgIG5ldyBQb2ludCgwLjcwLCAwLjYwKSwKICAgICAgICAgbmV3
IFBvaW50KDEuMDAsIDAuMzgpLAogICAgICAgICBuZXcgUG9pbnQoMC42MiwgMC4zOCkKLSAgICBd
LAorICAgIF0KIH07CiAKIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UgPSBVdGlsaXRpZXMu
Y3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSwKLSAgICBmdW5jdGlvbihlbGVt
ZW50LCBvcHRpb25zKQorICAgIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIEJvdW5jaW5nUGFy
dGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKLSAgICAgICAgdGhpcy5j
b250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoIjJkIik7Ci0gICAgfQotKTsKKyAgICAg
ICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMpOworICAgIH0sIHsKIAotQm91bmNp
bmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvciA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3Vu
Y2luZ1BhcnRpY2xlc0FuaW1hdG9yLAotICAgIGZ1bmN0aW9uKGJlbmNobWFyaywgb3B0aW9ucykK
KyAgICBpbml0aWFsaXplOiBmdW5jdGlvbihiZW5jaG1hcmspCiAgICAgewotICAgICAgICBCb3Vu
Y2luZ1BhcnRpY2xlc0FuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrLCBvcHRpb25zKTsKLSAg
ICAgICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsKLSAgICB9LCB7
CisgICAgICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmluaXRpYWxpemUuY2Fs
bCh0aGlzLCBiZW5jaG1hcmspOworICAgICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1lbnQu
Z2V0Q29udGV4dCgiMmQiKTsKKyAgICB9LAogCi0gICAgYW5pbWF0ZTogZnVuY3Rpb24oKQorICAg
IGFuaW1hdGU6IGZ1bmN0aW9uKHRpbWVEZWx0YSkKICAgICB7Ci0gICAgICAgIHRoaXMuX2NvbnRl
eHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS54LCB0aGlzLl9i
ZW5jaG1hcmsuX3N0YWdlLnNpemUueSk7Ci0gICAgICAgIHJldHVybiBCb3VuY2luZ1BhcnRpY2xl
c0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcyk7CisgICAgICAgIHRoaXMuY29u
dGV4dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5zaXplLngsIHRoaXMuc2l6ZS55KTsKKyAgICAgICAg
dGhpcy5wYXJ0aWNsZXMuZm9yRWFjaChmdW5jdGlvbihwYXJ0aWNsZSkgeworICAgICAgICAgICAg
cGFydGljbGUuYW5pbWF0ZSh0aW1lRGVsdGEpOworICAgICAgICB9KTsKICAgICB9CiB9KTsKIAot
Ci1Cb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJj
bGFzcyhTdGFnZUJlbmNobWFyaywKLSAgICBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cHJvZ3Jlc3NCYXIpCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyayA9IFV0aWxpdGll
cy5jcmVhdGVTdWJjbGFzcyhCZW5jaG1hcmssCisgICAgZnVuY3Rpb24oc3RhZ2UsIGFuaW1hdG9y
LCBvcHRpb25zKQogICAgIHsKLSAgICAgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotICAgIH0sIHsKLQotICAgIGNyZWF0ZUFu
aW1hdG9yOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2Fu
dmFzUGFydGljbGVzQW5pbWF0b3IodGhpcywgdGhpcy5fb3B0aW9ucyk7CisgICAgICAgIEJlbmNo
bWFyay5jYWxsKHRoaXMsIHN0YWdlLCBhbmltYXRvciwgb3B0aW9ucyk7CiAgICAgfQotfSk7Cisp
OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLWNhbnZhcy1zaGFwZXMuanMKaW5kZXggZWE4Y2Y3OC4uZDM2YWI0ZSAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9y
ZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1j
YW52YXMtc2hhcGVzLmpzCkBAIC0xLDkgKzEsMTAgQEAKKyhmdW5jdGlvbigpIHsKKwogQm91bmNp
bmdDYW52YXNTaGFwZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlLAogICAgIGZ1bmN0aW9uKHN0YWdlKQogICAgIHsKLSAgICAgICAgQm91bmNpbmdDYW52
YXNQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICAgICAgQm91bmNpbmdDYW52YXNQYXJ0
aWNsZS5jYWxsKHRoaXMsIHN0YWdlLCBzdGFnZS5zaGFwZSk7CiAgICAgICAgIHRoaXMuX2ZpbGwg
PSBzdGFnZS5maWxsOwotICAgICAgICB0aGlzLl9zaGFwZSA9IHN0YWdlLnNoYXBlOwogICAgICAg
ICB0aGlzLl9jb2xvcjAgPSBzdGFnZS5yYW5kb21Db2xvcigpOwogICAgICAgICB0aGlzLl9jb2xv
cjEgPSBzdGFnZS5yYW5kb21Db2xvcigpOwogICAgIH0sIHsKQEAgLTEyLDU3ICsxMyw2MiBAQCBC
b3VuY2luZ0NhbnZhc1NoYXBlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJvdW5jaW5nQ2Fu
dmFzUGFydGljbGUsCiAgICAgewogICAgICAgICBzd2l0Y2ggKHRoaXMuX2ZpbGwpIHsKICAgICAg
ICAgY2FzZSAiZ3JhZGllbnQiOgotICAgICAgICAgICAgdmFyIGdyYWRpZW50ID0gdGhpcy5fY29u
dGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCB0aGlzLl9zaXplLndpZHRoLCAwKTsKKyAg
ICAgICAgICAgIHZhciBncmFkaWVudCA9IHRoaXMuY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVu
dCgwLCAwLCB0aGlzLnNpemUud2lkdGgsIDApOwogICAgICAgICAgICAgZ3JhZGllbnQuYWRkQ29s
b3JTdG9wKDAsIHRoaXMuX2NvbG9yMCk7CiAgICAgICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0
b3AoMSwgdGhpcy5fY29sb3IxKTsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxl
ID0gZ3JhZGllbnQ7CisgICAgICAgICAgICB0aGlzLmNvbnRleHQuZmlsbFN0eWxlID0gZ3JhZGll
bnQ7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICJzb2xpZCI6CiAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICB0aGlzLl9jb250ZXh0LmZpbGxTdHlsZSA9IHRoaXMuX2Nv
bG9yMDsKKyAgICAgICAgICAgIHRoaXMuY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLl9jb2xvcjA7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0sCiAKICAgICBfZHJhd1NoYXBl
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOwor
ICAgICAgICB0aGlzLmNvbnRleHQuYmVnaW5QYXRoKCk7CiAKICAgICAgICAgc3dpdGNoICh0aGlz
Ll9zaGFwZSkgewogICAgICAgICBjYXNlICJyZWN0IjoKLSAgICAgICAgICAgIHRoaXMuX2NvbnRl
eHQucmVjdCgwLCAwLCB0aGlzLl9zaXplLndpZHRoLCB0aGlzLl9zaXplLmhlaWdodCk7CisgICAg
ICAgICAgICB0aGlzLmNvbnRleHQucmVjdCgwLCAwLCB0aGlzLnNpemUud2lkdGgsIHRoaXMuc2l6
ZS5oZWlnaHQpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAiY2lyY2xlIjoK
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHZhciBjZW50ZXIgPSB0aGlzLl9zaXplLmNl
bnRlcjsKLSAgICAgICAgICAgIHZhciByYWRpdXMgPSBNYXRoLm1pbih0aGlzLl9zaXplLngsIHRo
aXMuX3NpemUueSkgLyAyOwotICAgICAgICAgICAgdGhpcy5fY29udGV4dC5hcmMoY2VudGVyLngs
IGNlbnRlci55LCByYWRpdXMsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTsKKyAgICAgICAgICAgIHZh
ciBjZW50ZXIgPSB0aGlzLnNpemUuY2VudGVyOworICAgICAgICAgICAgdmFyIHJhZGl1cyA9IE1h
dGgubWluKHRoaXMuc2l6ZS54LCB0aGlzLnNpemUueSkgLyAyOworICAgICAgICAgICAgdGhpcy5j
b250ZXh0LmFyYyhjZW50ZXIueCwgY2VudGVyLnksIHJhZGl1cywgMCwgTWF0aC5QSSAqIDIsIHRy
dWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9jb250
ZXh0LmZpbGwoKTsKKyAgICAgICAgdGhpcy5jb250ZXh0LmZpbGwoKTsKICAgICB9LAogCiAgICAg
X2RyYXc6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOwor
ICAgICAgICB0aGlzLmNvbnRleHQuc2F2ZSgpOwogICAgICAgICAgICAgdGhpcy5fYXBwbHlGaWxs
KCk7Ci0gICAgICAgICAgICB0aGlzLl9hcHBseVJvdGF0aW9uKCk7Ci0gICAgICAgICAgICB0aGlz
Ll9hcHBseUNsaXBwaW5nKCk7CisgICAgICAgICAgICB0aGlzLmFwcGx5Um90YXRpb24oKTsKKyAg
ICAgICAgICAgIHRoaXMuYXBwbHlDbGlwcGluZygpOwogICAgICAgICAgICAgdGhpcy5fZHJhd1No
YXBlKCk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOworICAgICAgICB0aGlzLmNv
bnRleHQucmVzdG9yZSgpOwogICAgIH0KIH0pOwogCiBCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdl
ID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2Us
Ci0gICAgZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpCisgICAgZnVuY3Rpb24gKCkKICAgICB7
Ci0gICAgICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50
LCBvcHRpb25zKTsKLSAgICAgICAgdGhpcy5wYXJzZVNoYXBlUGFyYW10ZXJzKG9wdGlvbnMpOwor
ICAgICAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcyk7CiAgICAgfSwg
ewogCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYmVuY2htYXJrKQorICAgIHsKKyAgICAgICAg
Qm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRo
aXMsIGJlbmNobWFyayk7CisgICAgICAgIHRoaXMucGFyc2VTaGFwZVBhcmFtZXRlcnMoYmVuY2ht
YXJrLm9wdGlvbnMpOworICAgIH0sCisKICAgICBjcmVhdGVQYXJ0aWNsZTogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc1NoYXBlKHRoaXMpOwpAQCAt
NzAsMTggKzc2LDEyIEBAIEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UgPSBVdGlsaXRpZXMuY3Jl
YXRlU3ViY2xhc3MoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnCiB9KTsKIAogQm91bmNpbmdD
YW52YXNTaGFwZXNCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdD
YW52YXNQYXJ0aWNsZXNCZW5jaG1hcmssCi0gICAgZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHByb2dyZXNzQmFyKQorICAgIGZ1bmN0aW9uKG9wdGlvbnMpCiAgICAgewotICAgICAgICBC
b3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCBwcm9ncmVzc0Jhcik7Ci0gICAgfSwgewotCi0gICAgY3JlYXRlU3RhZ2U6IGZ1bmN0
aW9uKGVsZW1lbnQpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hh
cGVzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7CisgICAgICAgIEJvdW5jaW5nQ2FudmFz
UGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3Rh
Z2UoKSwgbmV3IEFuaW1hdG9yKCksIG9wdGlvbnMpOwogICAgIH0KLX0pOworKTsKKword2luZG93
LmJlbmNobWFya0NsYXNzID0gQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcms7CiAKLXdpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHByb2dyZXNzQmFyKQotewotICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNTaGFwZXNCZW5j
aG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KK30pKCk7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGlj
bGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCmluZGV4IGE2Y2EyOGMuLjUwZTY1
Y2MgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcworKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9i
b3VuY2luZy1wYXJ0aWNsZXMuanMKQEAgLTEsMjggKzEsMjggQEAKIGZ1bmN0aW9uIEJvdW5jaW5n
UGFydGljbGUoc3RhZ2UpCiB7CiAgICAgdGhpcy5fc3RhZ2VTaXplID0gc3RhZ2Uuc2l6ZTsKLSAg
ICB0aGlzLl9zaXplID0gc3RhZ2UucGFydGljbGVTaXplOworICAgIHRoaXMuc2l6ZSA9IHN0YWdl
LnBhcnRpY2xlU2l6ZTsKIAotICAgIHRoaXMuX3Bvc2l0aW9uID0gc3RhZ2UucmFuZG9tUG9zaXRp
b24oc3RhZ2Uuc2l6ZS5zdWJ0cmFjdChzdGFnZS5wYXJ0aWNsZVNpemUpKTsKKyAgICB0aGlzLnBv
c2l0aW9uID0gc3RhZ2UucmFuZG9tUG9zaXRpb24oc3RhZ2Uuc2l6ZS5zdWJ0cmFjdChzdGFnZS5w
YXJ0aWNsZVNpemUpKTsKICAgICB0aGlzLl9hbmdsZSA9IHN0YWdlLnJhbmRvbUFuZ2xlKCk7CiAg
ICAgdGhpcy5fdmVsb2NpdHkgPSBzdGFnZS5yYW5kb21WZWxvY2l0eShzdGFnZS5tYXhWZWxvY2l0
eSk7Ci0gICAgdGhpcy5fcm90YXRlciA9IHN0YWdlLnJhbmRvbVJvdGF0ZXIoKTsKKyAgICB0aGlz
LnJvdGF0ZXIgPSBzdGFnZS5yYW5kb21Sb3RhdGVyKCk7CiB9CiAKIEJvdW5jaW5nUGFydGljbGUu
cHJvdG90eXBlID0KIHsKICAgICBnZXQgY2VudGVyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl9wb3NpdGlvbi5hZGQodGhpcy5fc2l6ZS5jZW50ZXIpOworICAgICAgICByZXR1cm4gdGhp
cy5wb3NpdGlvbi5hZGQodGhpcy5zaXplLmNlbnRlcik7CiAgICAgfSwKIAogICAgIGFuaW1hdGU6
IGZ1bmN0aW9uKHRpbWVEZWx0YSkKICAgICB7Ci0gICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gdGhp
cy5fcG9zaXRpb24ubW92ZSh0aGlzLl9hbmdsZSwgdGhpcy5fdmVsb2NpdHksIHRpbWVEZWx0YSk7
Ci0gICAgICAgIHRoaXMuX3JvdGF0ZXIubmV4dCh0aW1lRGVsdGEpOworICAgICAgICB0aGlzLnBv
c2l0aW9uID0gdGhpcy5wb3NpdGlvbi5tb3ZlKHRoaXMuX2FuZ2xlLCB0aGlzLl92ZWxvY2l0eSwg
dGltZURlbHRhKTsKKyAgICAgICAgdGhpcy5yb3RhdGVyLm5leHQodGltZURlbHRhKTsKIAogICAg
ICAgICAvLyBJZiBwYXJ0aWNsZSBpcyBnb2luZyB0byBtb3ZlIG9mZiByaWdodCBzaWRlCi0gICAg
ICAgIGlmICh0aGlzLl9wb3NpdGlvbi54ICsgdGhpcy5fc2l6ZS54ID4gdGhpcy5fc3RhZ2VTaXpl
LngpIHsKKyAgICAgICAgaWYgKHRoaXMucG9zaXRpb24ueCArIHRoaXMuc2l6ZS54ID4gdGhpcy5f
c3RhZ2VTaXplLngpIHsKICAgICAgICAgICAgIC8vIElmIGRpcmVjdGlvbiBpcyBFYXN0LVNvdXRo
LCBnbyBXZXN0LVNvdXRoLgogICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID49IDAgJiYgdGhp
cy5fYW5nbGUgPCBNYXRoLlBJIC8gMikKICAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IE1h
dGguUEkgLSB0aGlzLl9hbmdsZTsKQEAgLTMwLDExICszMCwxMSBAQCBCb3VuY2luZ1BhcnRpY2xl
LnByb3RvdHlwZSA9CiAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9hbmdsZSA+IE1hdGguUEkg
LyAyICogMykKICAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IHRoaXMuX2FuZ2xlIC0gKHRo
aXMuX2FuZ2xlIC0gTWF0aC5QSSAvIDIgKiAzKSAqIDI7CiAgICAgICAgICAgICAvLyBNYWtlIHN1
cmUgdGhlIHBhcnRpY2xlIGRvZXMgbm90IGdvIG91dHNpZGUgdGhlIHN0YWdlIGJvdW5kYXJpZXMu
Ci0gICAgICAgICAgICB0aGlzLl9wb3NpdGlvbi54ID0gdGhpcy5fc3RhZ2VTaXplLnggLSB0aGlz
Ll9zaXplLng7CisgICAgICAgICAgICB0aGlzLnBvc2l0aW9uLnggPSB0aGlzLl9zdGFnZVNpemUu
eCAtIHRoaXMuc2l6ZS54OwogICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgcGFydGljbGUgaXMg
Z29pbmcgdG8gbW92ZSBvZmYgbGVmdCBzaWRlCi0gICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi54
IDwgMCkgeworICAgICAgICBpZiAodGhpcy5wb3NpdGlvbi54IDwgMCkgewogICAgICAgICAgICAg
Ly8gSWYgYW5nbGUgaXMgV2VzdC1Tb3V0aCwgZ28gRWFzdC1Tb3V0aC4KICAgICAgICAgICAgIGlm
ICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgLyAyICYmIHRoaXMuX2FuZ2xlIDwgTWF0aC5QSSkKICAg
ICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IE1hdGguUEkgLSB0aGlzLl9hbmdsZTsKQEAgLTQy
LDI1ICs0MiwyNSBAQCBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSA9CiAgICAgICAgICAgICBl
bHNlIGlmICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJIC8g
MiAqIDMpCiAgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSB0aGlzLl9hbmdsZSArIChNYXRo
LlBJIC8gMiAqIDMgLSB0aGlzLl9hbmdsZSkgKiAyOwogICAgICAgICAgICAgLy8gTWFrZSBzdXJl
IHRoZSBwYXJ0aWNsZSBkb2VzIG5vdCBnbyBvdXRzaWRlIHRoZSBzdGFnZSBib3VuZGFyaWVzLgot
ICAgICAgICAgICAgdGhpcy5fcG9zaXRpb24ueCA9IDA7CisgICAgICAgICAgICB0aGlzLnBvc2l0
aW9uLnggPSAwOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcg
dG8gbW92ZSBvZmYgYm90dG9tIHNpZGUKLSAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnkgKyB0
aGlzLl9zaXplLnkgPiB0aGlzLl9zdGFnZVNpemUueSkgeworICAgICAgICBpZiAodGhpcy5wb3Np
dGlvbi55ICsgdGhpcy5zaXplLnkgPiB0aGlzLl9zdGFnZVNpemUueSkgewogICAgICAgICAgICAg
Ly8gSWYgZGlyZWN0aW9uIGlzIFNvdXRoLCBnbyBOb3J0aC4KICAgICAgICAgICAgIGlmICh0aGlz
Ll9hbmdsZSA+IDAgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJKQogICAgICAgICAgICAgICAgIHRo
aXMuX2FuZ2xlID0gTWF0aC5QSSAqIDIgLSB0aGlzLl9hbmdsZTsKICAgICAgICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGUgcGFydGljbGUgZG9lcyBub3QgZ28gb3V0c2lkZSB0aGUgc3RhZ2UgYm91bmRh
cmllcy4KLSAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uLnkgPSB0aGlzLl9zdGFnZVNpemUueSAt
IHRoaXMuX3NpemUueTsKKyAgICAgICAgICAgIHRoaXMucG9zaXRpb24ueSA9IHRoaXMuX3N0YWdl
U2l6ZS55IC0gdGhpcy5zaXplLnk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJZiBwYXJ0aWNs
ZSBpcyBnb2luZyB0byBtb3ZlIG9mZiB0b3Agc2lkZQotICAgICAgICBpZiAodGhpcy5fcG9zaXRp
b24ueSA8IDApIHsKKyAgICAgICAgaWYgKHRoaXMucG9zaXRpb24ueSA8IDApIHsKICAgICAgICAg
ICAgIC8vIElmIGRpcmVjdGlvbiBpcyBOb3J0aCwgZ28gU291dGguCiAgICAgICAgICAgICBpZiAo
dGhpcy5fYW5nbGUgPiBNYXRoLlBJICYmIHRoaXMuX2FuZ2xlIDwgTWF0aC5QSSAqIDIpCiAgICAg
ICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSB0aGlzLl9hbmdsZSAtICh0aGlzLl9hbmdsZSAtIE1h
dGguUEkpICogMjsKICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFydGljbGUgZG9lcyBu
b3QgZ28gb3V0c2lkZSB0aGUgc3RhZ2UgYm91bmRhcmllcy4KLSAgICAgICAgICAgIHRoaXMuX3Bv
c2l0aW9uLnkgPSAwOworICAgICAgICAgICAgdGhpcy5wb3NpdGlvbi55ID0gMDsKICAgICAgICAg
fQogICAgIH0KIH0KQEAgLTY4LDE1ICs2OCwxNSBAQCBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlw
ZSA9CiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFN0
YWdlLAogICAgIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFN0YWdlLmNhbGwoKTsKLSAgICAg
ICAgdGhpcy5fcGFydGljbGVzID0gW107CisgICAgICAgIFN0YWdlLmNhbGwodGhpcyk7CisgICAg
ICAgIHRoaXMucGFydGljbGVzID0gW107CiAgICAgfSwgewogCiAgICAgaW5pdGlhbGl6ZTogZnVu
Y3Rpb24oYmVuY2htYXJrKQogICAgIHsKICAgICAgICAgU3RhZ2UucHJvdG90eXBlLmluaXRpYWxp
emUuY2FsbCh0aGlzLCBiZW5jaG1hcmspOwogICAgICAgICB0aGlzLnBhcnRpY2xlU2l6ZSA9IG5l
dyBQb2ludChwYXJzZUludChiZW5jaG1hcmsub3B0aW9uc1sicGFydGljbGVXaWR0aCJdKSB8fCAx
MCwgcGFyc2VJbnQoYmVuY2htYXJrLm9wdGlvbnNbInBhcnRpY2xlSGVpZ2h0Il0pIHx8IDEwKTsK
LSAgICAgICAgdGhpcy5tYXhWZWxvY2l0eSA9IE1hdGgubWF4KHBhcnNlSW50KGJlbmNobWFyay5v
cHRpb25zWyJtYXhWZWxvY2l0eSJdKSB8fCAxMDAsIDEwMCk7CisgICAgICAgIHRoaXMubWF4VmVs
b2NpdHkgPSBNYXRoLm1heChwYXJzZUludChiZW5jaG1hcmsub3B0aW9uc1sibWF4VmVsb2NpdHki
XSkgfHwgNTAwLCAxMDApOwogICAgIH0sCiAKICAgICBwYXJzZVNoYXBlUGFyYW1ldGVyczogZnVu
Y3Rpb24ob3B0aW9ucykKQEAgLTg4LDcgKzg4LDcgQEAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSA9
IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTdGFnZSwKIAogICAgIGFuaW1hdGU6IGZ1bmN0aW9u
KHRpbWVEZWx0YSkKICAgICB7Ci0gICAgICAgIHRoaXMuX3BhcnRpY2xlcy5mb3JFYWNoKGZ1bmN0
aW9uKHBhcnRpY2xlKSB7CisgICAgICAgIHRoaXMucGFydGljbGVzLmZvckVhY2goZnVuY3Rpb24o
cGFydGljbGUpIHsKICAgICAgICAgICAgIHBhcnRpY2xlLmFuaW1hdGUodGltZURlbHRhKTsKICAg
ICAgICAgfSk7CiAgICAgfSwKQEAgLTk2LDIyICs5NiwyMiBAQCBCb3VuY2luZ1BhcnRpY2xlc1N0
YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlLAogICAgIHR1bmU6IGZ1bmN0aW9u
KGNvdW50KQogICAgIHsKICAgICAgICAgaWYgKGNvdW50ID09IDApCi0gICAgICAgICAgICByZXR1
cm4gdGhpcy5fcGFydGljbGVzLmxlbmd0aDsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnRp
Y2xlcy5sZW5ndGg7CiAKICAgICAgICAgaWYgKGNvdW50ID4gMCkgewogICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQotICAgICAgICAgICAgICAgIHRoaXMuX3BhcnRp
Y2xlcy5wdXNoKHRoaXMuY3JlYXRlUGFydGljbGUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdGhp
cy5fcGFydGljbGVzLmxlbmd0aDsKKyAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2xlcy5wdXNo
KHRoaXMuY3JlYXRlUGFydGljbGUoKSk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJ0aWNs
ZXMubGVuZ3RoOwogICAgICAgICB9CiAKLSAgICAgICAgY291bnQgPSBNYXRoLm1pbigtY291bnQs
IHRoaXMuX3BhcnRpY2xlcy5sZW5ndGgpOworICAgICAgICBjb3VudCA9IE1hdGgubWluKC1jb3Vu
dCwgdGhpcy5wYXJ0aWNsZXMubGVuZ3RoKTsKIAogICAgICAgICBpZiAodHlwZW9mKHRoaXMucGFy
dGljbGVXaWxsQmVSZW1vdmVkKSA9PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNsZVdp
bGxCZVJlbW92ZWQodGhpcy5fcGFydGljbGVzW3RoaXMuX3BhcnRpY2xlcy5sZW5ndGggLSAxIC0g
aV0pOworICAgICAgICAgICAgICAgIHRoaXMucGFydGljbGVXaWxsQmVSZW1vdmVkKHRoaXMucGFy
dGljbGVzW3RoaXMucGFydGljbGVzLmxlbmd0aCAtIDEgLSBpXSk7CiAgICAgICAgIH0KIAotICAg
ICAgICB0aGlzLl9wYXJ0aWNsZXMuc3BsaWNlKC1jb3VudCwgY291bnQpOwotICAgICAgICByZXR1
cm4gdGhpcy5fcGFydGljbGVzLmxlbmd0aDsKKyAgICAgICAgdGhpcy5wYXJ0aWNsZXMuc3BsaWNl
KC1jb3VudCwgY291bnQpOworICAgICAgICByZXR1cm4gdGhpcy5wYXJ0aWNsZXMubGVuZ3RoOwog
ICAgIH0KIH0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L21pc2MvcmVzb3VyY2VzL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY29tcG9zaXRpbmctdHJhbnNmb3Jt
cy5qcwppbmRleCA3MDdmYjExLi5iYmQzOWVhIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5q
cworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMv
Y29tcG9zaXRpbmctdHJhbnNmb3Jtcy5qcwpAQCAtNiw4ICs2LDggQEAgQm91bmNpbmdDb21wb3Np
dGVkSW1hZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZSwKICAg
ICAgICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKIAogICAgICAgICB0aGlz
LmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKLSAgICAgICAgdGhpcy5l
bGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5fc2l6ZS54ICsgInB4IjsKLSAgICAgICAgdGhpcy5l
bGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuX3NpemUueSArICJweCI7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuc2l6ZS54ICsgInB4IjsKKyAgICAgICAgdGhpcy5l
bGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuc2l6ZS55ICsgInB4IjsKICAgICAgICAgdGhpcy5l
bGVtZW50LnNldEF0dHJpYnV0ZSgic3JjIiwgc3RhZ2UuaW1hZ2VTcmMpOwogCiAgICAgICAgIGlm
IChzdGFnZS51c2VGaWx0ZXJzKQpAQCAtMTksNyArMTksNyBAQCBCb3VuY2luZ0NvbXBvc2l0ZWRJ
bWFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ1BhcnRpY2xlLAogCiAgICAg
X21vdmU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS50cmFu
c2Zvcm0gPSAidHJhbnNsYXRlM2QoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAicHgsIiArIHRoaXMu
X3Bvc2l0aW9uLnkgKyAicHgsIDApICIgKyB0aGlzLl9yb3RhdGVyLnJvdGF0ZVooKTsKKyAgICAg
ICAgdGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUzZCgiICsgdGhpcy5w
b3NpdGlvbi54ICsgInB4LCIgKyB0aGlzLnBvc2l0aW9uLnkgKyAicHgsIDApICIgKyB0aGlzLnJv
dGF0ZXIucm90YXRlWigpOwogICAgIH0sCiAKICAgICBhbmltYXRlOiBmdW5jdGlvbih0aW1lRGVs
dGEpCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNl
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUwZWZlZGEuLjM3MGVlMGQgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBA
IC01LDYgKzUsMzMgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAor
ICAgICAgICBSZWZhY3RvciB0aGUgYm91bmNpbmcgY2FudmFzIHRlc3RzLgorCisgICAgICAgICog
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdl
cy5odG1sOiBNb3ZlIHNjcmlwdHMgdG8gdGhlIGVuZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw6IE1vdmUg
c2NyaXB0cyB0byB0aGUgZW5kLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qczogUHJvbW90ZSBhIGZl
dworICAgICAgICBwcm9wZXJ0aWVzIHRvICJwdWJsaWMiIHNpbmNlIHRoZXkgYXJlIHVzZWQgYnkg
c3ViY2xhc3Nlcy4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UpOiBGaXggdGhlIGNv
bnN0cnVjdG9yLCB3aGljaCB3YXMgbWlzc2luZyAidGhpcyIuIE1ha2UgcGFydGljbGVzCisgICAg
ICAgICJwdWJsaWMiIGZvciBzdWJjbGFzc2VzLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNT
dGFnZS5pbml0aWFsaXplKTogRml4IHRoZSBtYXggdmVsb2NpdHksIHdoaWNoIHdhcyBhY2NpZGVu
dGFsbHkgY2hhbmdlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2Vz
L2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMuanM6IFJlZmFjdG9yLgorCisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1w
YXJ0aWNsZXMuanM6CisgICAgICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0b3IgaXMg
bm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzUGFydGljbGUpOiBDaGFu
Z2UgY29uc3RydWN0b3IgdG8gdGFrZSBhIHNoYXBlIGFzIGEgcGFyYW1ldGVyIGluc3RlYWQgb2YK
KyAgICAgICAgaGF2aW5nIHN1YmNsYXNzZXMgc2V0IHRoZSB2YXJpYWJsZS4KKworICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1j
YW52YXMtaW1hZ2VzLmpzOiBSZWZhY3Rvci4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qczogUmVm
YWN0b3IuCisKKzIwMTUtMTItMjcgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAg
ICAgIFNpbXBsaWZ5IHRoZSB0ZXN0IGhhcm5lc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjU2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCiAgICAgICAgIE1vdmUgZXhhbXBsZS8gZmlsZXMgaW50byBtaXNjLy4KIAog
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWlzYy9jYW52YXMtZWxlY3Ryb25zLmh0bWw6IFJl
bmFtZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2Fu
dmFzLWVsZWN0cm9ucy5odG1sLgotLSAKMi41LjQgKEFwcGxlIEdpdC02MSkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267962</attachid>
            <date>2015-12-28 10:10:56 -0800</date>
            <delta_ts>2015-12-28 10:10:56 -0800</delta_ts>
            <desc>9. Refactor the HTML suite.</desc>
            <filename>0009-Simplify-the-test-harness.patch</filename>
            <type>text/plain</type>
            <size>19834</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBkZmFiOTcyOTBhMjNiNmFlYTU5OTEzZjJkZTkzNmMxYjk5NjIxYTQ0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDI3IERlYyAyMDE1IDIyOjA3OjE0IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAwOS8xM10gU2ltcGxp
ZnkgdGhlIHRlc3QgaGFybmVzcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjU2MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpSZWZhY3RvciB0aGUgSFRN
TCBzdWl0ZS4KCk1vdmUgc2NyaXB0cyB0byB0aGUgZW5kLgoqIEFuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbDoKKiBBbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw6CiogQW5pbW9t
ZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbDoKKiBBbmltb21ldGVyL3Rlc3RzL3Rl
eHQvdGV4dC1ib3hlcy5odG1sOgoKUmVmYWN0b3IgdG8gdXNlIHRoZSBuZXcgdmFyaWFibGVzLgoq
IEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1j
c3MtaW1hZ2VzLmpzOgoqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmpzOgoqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNv
dXJjZXMvbGF5ZXJpbmctdGV4dC5qczoKKiBBbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2Vz
L3RleHQtYm94ZXMuanM6Ci0tLQogLi4uL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mt
aW1hZ2VzLmh0bWwgICAgfCAgOSArKystLQogLi4uL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1jc3Mtc2hhcGVzLmh0bWwgICAgfCAxMSArKystLS0KIC4uLi9yZXNvdXJjZXMvYm91bmNpbmct
Y3NzLWltYWdlcy5qcyAgICAgICAgICAgICAgIHwgMzkgKysrKysrKysrKy0tLS0tLS0tLS0KIC4u
Li9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qcyAgICAgICAgICAgICAgIHwgNDEgKysr
KysrKysrKystLS0tLS0tLS0tLQogLi4uL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10
ZXh0Lmh0bWwgICAgICAgfCAxMSArKystLS0KIC4uLi90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXll
cmluZy10ZXh0LmpzICAgICAgICAgIHwgMzQgKysrKysrKysrLS0tLS0tLS0tCiAuLi4vQW5pbW9t
ZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy90ZXh0LWJveGVzLmpzICB8IDM4ICsrKysrKysrKy0t
LS0tLS0tLS0tCiAuLi4vQW5pbW9tZXRlci90ZXN0cy90ZXh0L3RleHQtYm94ZXMuaHRtbCAgICAg
ICAgICB8IDI2ICsrKysrKystLS0tLS0tCiBQZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICB8IDIxICsrKysrKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDEy
NCBpbnNlcnRpb25zKCspLCAxMDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mt
aW1hZ2VzLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbAppbmRleCA5NjFiY2ZjLi5iM2E3YmRh
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMu
aHRtbApAQCAtMSwyMyArMSwyMiBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgor
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291
cmNlcy9zdGFnZS5jc3MiPgogICAgIDxzdHlsZT4KICAgICAgICAgaW1nIHsKICAgICAgICAgICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgfQogICAgIDwvc3R5bGU+Ci0gICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdl
LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+CiAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RyaW5ncy5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4gIAogICAgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFnZXMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci0gICAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbAppbmRleCA0
ZWFiMWMyLi4zOWE0MjhjIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5j
aW5nLWNzcy1zaGFwZXMuaHRtbApAQCAtMSw2ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0
bWw+CiA8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBo
cmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KICAgICA8c3R5bGU+CiAgICAgICAgIC5jaXJj
bGUgewogICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwpAQCAtMTMsMjIgKzE0LDIwIEBA
CiAgICAgICAgIH0KICAgICAgICAgLnN0YXIgewogICAgICAgICAgICAgLXdlYmtpdC1jbGlwLXBh
dGg6IHBvbHlnb24oNTAlIDAlLCAzOCUgMzglLCAwJSAzOCUsIDMwJSA2MCUsIDE4JSAxMDAlLCA1
MCUgNzUlLCA4MiUgMTAwJSwgNzAlIDYwJSwgMTAwJSAzOCUsIDYyJSAzOCUpOwotICAgICAgICAg
ICAgLW1zLWNsaXAtcGF0aDogcG9seWdvbig1MCUgMCUsIDM4JSAzOCUsIDAlIDM4JSwgMzAlIDYw
JSwgMTglIDEwMCUsIDUwJSA3NSUsIDgyJSAxMDAlLCA3MCUgNjAlLCAxMDAlIDM4JSwgNjIlIDM4
JSk7ICAKKyAgICAgICAgICAgIC1tcy1jbGlwLXBhdGg6IHBvbHlnb24oNTAlIDAlLCAzOCUgMzgl
LCAwJSAzOCUsIDMwJSA2MCUsIDE4JSAxMDAlLCA1MCUgNzUlLCA4MiUgMTAwJSwgNzAlIDYwJSwg
MTAwJSAzOCUsIDYyJSAzOCUpOwogICAgICAgICAgICAgY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAw
JSwgMzglIDM4JSwgMCUgMzglLCAzMCUgNjAlLCAxOCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUs
IDcwJSA2MCUsIDEwMCUgMzglLCA2MiUgMzglKTsKICAgICAgICAgfQogICAgIDwvc3R5bGU+Ci0g
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3Vy
Y2VzL3N0YWdlLmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJzdGFnZSI+PC9k
aXY+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RyaW5ncy5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4gIAogICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci0gICAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2PgogPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLWNzcy1pbWFnZXMuanMKaW5kZXggOTZjNjBkOC4uMzg1MzRlMSAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJj
ZXMvYm91bmNpbmctY3NzLWltYWdlcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3MtaW1hZ2Vz
LmpzCkBAIC0xLDExICsxLDEzIEBACisoZnVuY3Rpb24oKSB7CisKIEJvdW5jaW5nQ3NzSW1hZ2Ug
PSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZSwKICAgICBmdW5jdGlv
bihzdGFnZSkKICAgICB7CiAgICAgICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFn
ZSk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1n
Iik7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuX3NpemUueCArICJw
eCI7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLl9zaXplLnkgKyAi
cHgiOworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLnNpemUueCArICJw
eCI7CisgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLnNpemUueSArICJw
eCI7CiAgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInNyYyIsIHN0YWdlLmltYWdl
U3JjKTsKIAogICAgICAgICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7
CkBAIC0xNCw3ICsxNiw3IEBAIEJvdW5jaW5nQ3NzSW1hZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3Vi
Y2xhc3MoQm91bmNpbmdQYXJ0aWNsZSwKIAogICAgIF9tb3ZlOiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgdGhp
cy5fcG9zaXRpb24ueCArICJweCwiICsgdGhpcy5fcG9zaXRpb24ueSArICJweCkgIiArIHRoaXMu
X3JvdGF0ZXIucm90YXRlWigpOworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudHJhbnNmb3Jt
ID0gInRyYW5zbGF0ZSgiICsgdGhpcy5wb3NpdGlvbi54ICsgInB4LCIgKyB0aGlzLnBvc2l0aW9u
LnkgKyAicHgpICIgKyB0aGlzLnJvdGF0ZXIucm90YXRlWigpOwogICAgIH0sCiAKICAgICBhbmlt
YXRlOiBmdW5jdGlvbih0aW1lRGVsdGEpCkBAIC0yNSwxMiArMjcsMTcgQEAgQm91bmNpbmdDc3NJ
bWFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ1BhcnRpY2xlLAogfSk7CiAK
IEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNp
bmdQYXJ0aWNsZXNTdGFnZSwKLSAgICBmdW5jdGlvbihlbGVtZW50LCBvcHRpb25zKQorICAgIGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlz
LCBlbGVtZW50LCBvcHRpb25zKTsKLSAgICAgICAgdGhpcy5pbWFnZVNyYyA9IG9wdGlvbnNbImlt
YWdlU3JjIl0gfHwgIi4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciOworICAgICAgICBCb3VuY2lu
Z1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcyk7CiAgICAgfSwgewogCisgICAgaW5pdGlhbGl6ZTog
ZnVuY3Rpb24oYmVuY2htYXJrKQorICAgIHsKKyAgICAgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFn
ZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAgICAgIHRo
aXMuaW1hZ2VTcmMgPSBiZW5jaG1hcmsub3B0aW9uc1siaW1hZ2VTcmMiXSB8fCAiLi4vcmVzb3Vy
Y2VzL3lpbi15YW5nLnN2ZyI7CisgICAgfSwKKwogICAgIGNyZWF0ZVBhcnRpY2xlOiBmdW5jdGlv
bigpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ3NzSW1hZ2UodGhpcyk7CkBA
IC00MiwxOSArNDksMTMgQEAgQm91bmNpbmdDc3NJbWFnZXNTdGFnZSA9IFV0aWxpdGllcy5jcmVh
dGVTdWJjbGFzcyhCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLAogICAgIH0KIH0pOwogCi1Cb3VuY2lu
Z0Nzc0ltYWdlc0JlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyaywKLSAgICBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJv
Z3Jlc3NCYXIpCitCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVT
dWJjbGFzcyhCZW5jaG1hcmssCisgICAgZnVuY3Rpb24ob3B0aW9ucykKICAgICB7Ci0gICAgICAg
IEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHByb2dyZXNzQmFyKTsKLSAgICB9LCB7Ci0KLSAgICBjcmVhdGVTdGFnZTogZnVuY3Rpb24o
ZWxlbWVudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NJbWFnZXNTdGFn
ZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKKyAgICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywg
bmV3IEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UoKSwgbmV3IEFuaW1hdG9yKCksIG9wdGlvbnMpOwog
ICAgIH0KLX0pOworKTsKKword2luZG93LmJlbmNobWFya0NsYXNzID0gQm91bmNpbmdDc3NJbWFn
ZXNCZW5jaG1hcms7CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24o
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQotewotICAgIHJldHVybiBuZXcgQm91
bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFy
KTsKLX0KK30pKCk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNv
dXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qcwppbmRleCA4OTc5OTRmLi5mN2UxMWQ2IDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5n
LWNzcy1zaGFwZXMuanMKQEAgLTEsMyArMSw1IEBACisoZnVuY3Rpb24oKSB7CisKIEJvdW5jaW5n
Q3NzU2hhcGUgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZSwKICAg
ICBmdW5jdGlvbihzdGFnZSkKICAgICB7CkBAIC0yMywzMiArMjUsMzcgQEAgQm91bmNpbmdDc3NT
aGFwZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ1BhcnRpY2xlLAogICAgIHsK
ICAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAg
ICAgIHNwYW4uY2xhc3NOYW1lID0gc3RhZ2Uuc2hhcGUgKyAiICIgKyBzdGFnZS5jbGlwOwotICAg
ICAgICBzcGFuLnN0eWxlLndpZHRoID0gdGhpcy5fc2l6ZS54ICsgInB4IjsKLSAgICAgICAgc3Bh
bi5zdHlsZS5oZWlnaHQgPSB0aGlzLl9zaXplLnkgKyAicHgiOworICAgICAgICBzcGFuLnN0eWxl
LndpZHRoID0gdGhpcy5zaXplLnggKyAicHgiOworICAgICAgICBzcGFuLnN0eWxlLmhlaWdodCA9
IHRoaXMuc2l6ZS55ICsgInB4IjsKICAgICAgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZChz
cGFuKTsKICAgICAgICAgcmV0dXJuIHNwYW47CiAgICAgfSwKIAogICAgIF9tb3ZlOiBmdW5jdGlv
bigpCiAgICAgewotICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gInRyYW5z
bGF0ZSgiICsgdGhpcy5fcG9zaXRpb24ueCArICJweCwiICsgdGhpcy5fcG9zaXRpb24ueSArICJw
eCkiICsgdGhpcy5fcm90YXRlci5yb3RhdGVaKCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5zdHls
ZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRlKCIgKyB0aGlzLnBvc2l0aW9uLnggKyAicHgsIiArIHRo
aXMucG9zaXRpb24ueSArICJweCkiICsgdGhpcy5yb3RhdGVyLnJvdGF0ZVooKTsKICAgICB9LAog
CiAgICAgYW5pbWF0ZTogZnVuY3Rpb24odGltZURlbHRhKQogICAgIHsKICAgICAgICAgQm91bmNp
bmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7Ci0gICAg
ICAgIHRoaXMuX3JvdGF0ZXIubmV4dCh0aW1lRGVsdGEpOworICAgICAgICB0aGlzLnJvdGF0ZXIu
bmV4dCh0aW1lRGVsdGEpOwogICAgICAgICB0aGlzLl9tb3ZlKCk7CiAgICAgfQogfSk7CiAKIEJv
dW5jaW5nQ3NzU2hhcGVzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQ
YXJ0aWNsZXNTdGFnZSwKLSAgICBmdW5jdGlvbihlbGVtZW50LCBvcHRpb25zKQorICAgIGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBl
bGVtZW50LCBvcHRpb25zKTsKLSAgICAgICAgdGhpcy5wYXJzZVNoYXBlUGFyYW10ZXJzKG9wdGlv
bnMpOworICAgICAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcyk7CiAgICAgfSwg
ewogCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYmVuY2htYXJrKQorICAgIHsKKyAgICAgICAg
Qm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIGJl
bmNobWFyayk7CisgICAgICAgIHRoaXMucGFyc2VTaGFwZVBhcmFtZXRlcnMoYmVuY2htYXJrLm9w
dGlvbnMpOworICAgIH0sCisKICAgICBjcmVhdGVQYXJ0aWNsZTogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc1NoYXBlKHRoaXMpOwpAQCAtNjAsMTkgKzY3
LDEzIEBAIEJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3Mo
Qm91bmNpbmdQYXJ0aWNsZXNTdGFnZSwKICAgICB9CiB9KTsKIAotQm91bmNpbmdDc3NTaGFwZXNC
ZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZXNCZW5j
aG1hcmssCi0gICAgZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQor
Qm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQmVu
Y2htYXJrLAorICAgIGZ1bmN0aW9uKG9wdGlvbnMpCiAgICAgewotICAgICAgICBCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVz
c0Jhcik7Ci0gICAgfSwgewotCi0gICAgY3JlYXRlU3RhZ2U6IGZ1bmN0aW9uKGVsZW1lbnQpCi0g
ICAgewotICAgICAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UoZWxlbWVudCwg
dGhpcy5fb3B0aW9ucyk7CisgICAgICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIG5ldyBCb3VuY2lu
Z0Nzc1NoYXBlc1N0YWdlKCksIG5ldyBBbmltYXRvcigpLCBvcHRpb25zKTsKICAgICB9Ci19KTsK
Kyk7CisKK3dpbmRvdy5iZW5jaG1hcmtDbGFzcyA9IEJvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJr
OwogCi13aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKLXsKLSAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ3NzU2hh
cGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci19Cit9KSgp
OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5
ZXJpbmctdGV4dC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQv
bGF5ZXJpbmctdGV4dC5odG1sCmluZGV4IDMyZGEyYWMuLmZiZmYzNzMgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0
Lmh0bWwKQEAgLTEsNiArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Cisg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3Vy
Y2VzL3N0YWdlLmNzcyI+CiAgICAgPHN0eWxlPgogICAgICAgICAudGV4dC1sYXllciB7CiAgICAg
ICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CkBAIC0xNywxOCArMTgsMTYgQEAKICAgICAgICAg
ICAgICAgICBmb250LXNpemU6IDAuOTZlbTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
IDwvc3R5bGU+ICAKLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBo
cmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisgICAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3N0cmluZ3MuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
bWFpbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5q
cyI+PC9zY3JpcHQ+ICAKICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xheWVyaW5nLXRleHQu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci0gICAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcwppbmRl
eCBlZGU2YWIzLi4wODIyNjZkIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcworKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcwpA
QCAtMSwxMyArMSwyMCBAQAorKGZ1bmN0aW9uKCkgeworCiBMYXllcmluZ1RleHRTdGFnZSA9IFV0
aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTdGFnZSwKLSAgICBmdW5jdGlvbihlbGVtZW50LCBvcHRp
b25zKQorICAgIGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFN0YWdlLmNhbGwodGhpcyk7Cisg
ICAgfSwgeworCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYmVuY2htYXJrKQogICAgIHsKLSAg
ICAgICAgU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICAgICAgU3RhZ2Uu
cHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBiZW5jaG1hcmspOwogICAgICAgICB0aGlz
Ll90ZXh0RWxlbWVudFBhcmVudCA9IHRoaXMuZWxlbWVudDsKICAgICAgICAgdGhpcy5fdGV4dEVs
ZW1lbnRzID0gW107CiAgICAgICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAwOwogICAgICAgICB0
aGlzLl9jb2xvckluZGV4ID0gMDsKICAgICAgICAgdGhpcy5fYW5pbWF0ZUNvdW50cyA9IDA7Ci0g
ICAgfSwgeworICAgIH0sCiAKICAgICBfbmV4dFRleHRJdGVtOiBmdW5jdGlvbih0ZXh0SXRlbUZs
YWdzKQogICAgIHsKQEAgLTI0MSwxOSArMjQ4LDE0IEBAIFV0aWxpdGllcy5leHRlbmRPYmplY3Qo
TGF5ZXJpbmdUZXh0U3RhZ2UsIHsKICAgICB9KS5sZW5ndGgKIH0pOwogCi1MYXllcmluZ1RleHRC
ZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2VCZW5jaG1hcmssCi0gICAg
ZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQorTGF5ZXJpbmdUZXh0
QmVuY2htYXJrID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJlbmNobWFyaywKKyAgICBmdW5j
dGlvbihvcHRpb25zKQogICAgIHsKLSAgICAgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBz
dWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotICAgIH0sIHsKLQotICAgIGNyZWF0
ZVN0YWdlOiBmdW5jdGlvbihlbGVtZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBMYXll
cmluZ1RleHRTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKKyAgICAgICAgQmVuY2htYXJr
LmNhbGwodGhpcywgbmV3IExheWVyaW5nVGV4dFN0YWdlKCksIG5ldyBBbmltYXRvcigpLCBvcHRp
b25zKTsKICAgICB9Ci19KTsKKyk7CisKK3dpbmRvdy5iZW5jaG1hcmtDbGFzcyA9IExheWVyaW5n
VGV4dEJlbmNobWFyazsKKworfSkoKTsKIAotd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUg
PSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCi17Ci0gICAgcmV0
dXJuIG5ldyBMYXllcmluZ1RleHRCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dy
ZXNzQmFyKTsKLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy90ZXh0L3Jlc291cmNlcy90ZXh0LWJveGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL3RleHQtYm94ZXMuanMKaW5kZXggYmVjMWU3ZS4uOGEw
OTlmYyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQv
cmVzb3VyY2VzL3RleHQtYm94ZXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3RleHQvcmVzb3VyY2VzL3RleHQtYm94ZXMuanMKQEAgLTEsMyArMSw1IEBACisoZnVu
Y3Rpb24oKSB7CisKIEJvdW5jaW5nVGV4dEJveCA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhC
b3VuY2luZ1BhcnRpY2xlLAogICAgIGZ1bmN0aW9uKHN0YWdlLCBzYW1wbGVUZXh0KQogICAgIHsK
QEAgLTUsMjAgKzcsMjAgQEAgQm91bmNpbmdUZXh0Qm94ID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNs
YXNzKEJvdW5jaW5nUGFydGljbGUsCiAKICAgICAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCdwYXJ0aWNsZScpOwotICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9z
aXplLnggKyAicHgiOwotICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5f
c2l6ZS55ICsgInB4IjsKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5z
aXplLnggKyAicHgiOworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5z
aXplLnkgKyAicHgiOwogICAgICAgICB0aGlzLmVsZW1lbnQudGV4dENvbnRlbnQgPSBzYW1wbGVU
ZXh0OwotICAgICAgICAKKwogICAgICAgICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
ZWxlbWVudCk7CiAgICAgICAgIHRoaXMuX21vdmUoKTsKICAgICB9LCB7CiAKICAgICBfbW92ZTog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQgPSB0aGlz
Ll9wb3NpdGlvbi54ICsgInB4IjsKLSAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRvcCA9IHRo
aXMuX3Bvc2l0aW9uLnkgKyAicHgiOworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUubGVmdCA9
IHRoaXMucG9zaXRpb24ueCArICJweCI7CisgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS50b3Ag
PSB0aGlzLnBvc2l0aW9uLnkgKyAicHgiOwogICAgIH0sCi0gICAgICAgIAorCiAgICAgYW5pbWF0
ZTogZnVuY3Rpb24odGltZURlbHRhKQogICAgIHsKICAgICAgICAgQm91bmNpbmdQYXJ0aWNsZS5w
cm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CkBAIC0yNyw5ICsyOSw5IEBA
IEJvdW5jaW5nVGV4dEJveCA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ1BhcnRp
Y2xlLAogfSk7CiAKIEJvdW5jaW5nVGV4dEJveFN0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNs
YXNzKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UsCi0gICAgZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9u
cykKKyAgICBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdl
LmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgICAgIEJvdW5jaW5nUGFydGljbGVz
U3RhZ2UuY2FsbCh0aGlzKTsKICAgICAgICAgdGhpcy5fc2FtcGxlVGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzYW1wbGUtdGV4dCcpLnRleHRDb250ZW50OwogICAgIH0sIHsKIApAQCAt
NDQsMTkgKzQ2LDEzIEBAIEJvdW5jaW5nVGV4dEJveFN0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1
YmNsYXNzKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UsCiAgICAgfQogfSk7CiAKLUJvdW5jaW5nVGV4
dEJveHNCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNs
ZXNCZW5jaG1hcmssCi0gICAgZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0JhcikKLSAgICB7Ci0gICAgICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2ht
YXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0Jhcik7Ci0gICAgfSwgewotCi0gICAgY3JlYXRlU3RhZ2U6IGZ1bmN0aW9uKGVsZW1lbnQpCitC
b3VuY2luZ1RleHRCb3hCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQmVuY2ht
YXJrLAorICAgIGZ1bmN0aW9uKG9wdGlvbnMpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IEJv
dW5jaW5nVGV4dEJveFN0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworICAgICAgICBCZW5j
aG1hcmsuY2FsbCh0aGlzLCBuZXcgQm91bmNpbmdUZXh0Qm94U3RhZ2UoKSwgbmV3IEFuaW1hdG9y
KCksIG9wdGlvbnMpOwogICAgIH0KLX0pOworKTsKKword2luZG93LmJlbmNobWFya0NsYXNzID0g
Qm91bmNpbmdUZXh0Qm94QmVuY2htYXJrOwogCi13aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0
ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NC
YXIpCi17Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ1RleHRCb3hzQmVuY2htYXJrKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOwotfQorfSkoKTsKZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3RleHQtYm94ZXMu
aHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3RleHQtYm94ZXMu
aHRtbAppbmRleCA5ZTkxYzJiLi41NWYyMzIzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC90ZXh0LWJveGVzLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvdGV4dC1ib3hlcy5odG1sCkBAIC0xOCw3ICsxOCw3
IEBACiAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjk2ZW07CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgLnBhcnRpY2xlIHsKICAgICAgICAgICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgIHdpZHRoOiAyODBweDsKQEAgLTI2LDIxICsy
NiwxMiBAQAogICAgICAgICAgICAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7CiAgICAgICAgICAg
ICBwYWRkaW5nOiAzcHg7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgI3NhbXBsZS10
ZXh0IHsKICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgIH0KLSAgICA8L3N0eWxl
PiAgCisgICAgPC9zdHlsZT4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQv
Y3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KLSAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9zdHJpbmdzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL21haW4uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3Rh
Z2UuanMiPjwvc2NyaXB0PiAgCi0gICAgPHNjcmlwdCBzcmM9Ii4uL2JvdW5jaW5nLXBhcnRpY2xl
cy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IGNoYXJzZXQ9InV0Zi04IiBzcmM9InJlc291cmNlcy90ZXh0LWJveGVzLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgogICAgIDxkaXYgaWQ9InNhbXBsZS10ZXh0IiBjbGFzcz0icGFydGlj
bGUiPkkgY2FuIGVhdCBnbGFzcyBhbmQgaXQgZG9lc24ndCBodXJ0IG1lLgpAQCAtNTYsOCArNDcs
MTcgQEAKICAgICAgICAg56eB44Gv44Ks44Op44K544KS6aOf44G544KJ44KM44G+44GZ44CC44Gd
44KM44Gv56eB44KS5YK344Gk44GR44G+44Gb44KT44CCCiAgICAgICAgIOuCmOuKlCDsnKDrpqzr
pbwg66i57J2EIOyImCDsnojslrTsmpQuIOq3uOuemOuPhCDslYTtlITsp4Ag7JWK7JWE7JqUCiAg
ICAgICAgINCvINC80L7QttGDINGX0YHRgtC4INGB0LrQu9C+LCDRliDQstC+0L3QviDQvNC10L3R
liDQvdC1INC30LDRiNC60L7QtNC40YLRjC4KLSAgICAgICAg4LKo4LKo4LKX4LOGIOCyueCyvuCy
qOCyvyDgsobgspfgsqbgs4YsIOCyqOCyvuCyqOCzgSDgspfgspzgsqjgs43gsqjgs4Eg4LKk4LK/
4LKo4LKs4LK54LOB4LKm4LOBIAorICAgICAgICDgsqjgsqjgspfgs4Yg4LK54LK+4LKo4LK/IOCy
huCyl+CypuCzhiwg4LKo4LK+4LKo4LOBIOCyl+CynOCyqOCzjeCyqOCzgSDgsqTgsr/gsqjgsqzg
srngs4Hgsqbgs4EKICAgICA8L2Rpdj4KICAgICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RyaW5ncy5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgY2hhcnNldD0idXRmLTgiIHNyYz0icmVzb3VyY2VzL3RleHQtYm94ZXMu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCAzNzBlZTBk
Li5kNjFkNDYyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtNSw2ICs1LDI3IEBACiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgUmVmYWN0b3IgdGhlIEhUTUwgc3Vp
dGUuCisKKyAgICAgICAgTW92ZSBzY3JpcHRzIHRvIHRoZSBlbmQuCisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sOgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNz
cy1zaGFwZXMuaHRtbDoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmct
dGV4dC5odG1sOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC90ZXh0LWJveGVzLmh0
bWw6CisKKyAgICAgICAgUmVmYWN0b3IgdG8gdXNlIHRoZSBuZXcgdmFyaWFibGVzLgorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1jc3MtaW1hZ2VzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmpzOgorICAgICAgICAqIEFuaW1v
bWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qczoKKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL3RleHQtYm94ZXMuanM6CisKKzIwMTUtMTIt
MjcgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IHRoZSB0
ZXN0IGhhcm5lc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjU2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAg
ICAgIFJlZmFjdG9yIHRoZSBib3VuY2luZyBjYW52YXMgdGVzdHMuCiAKICAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0
bWw6IE1vdmUgc2NyaXB0cyB0byB0aGUgZW5kLgotLSAKMi41LjQgKEFwcGxlIEdpdC02MSkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267963</attachid>
            <date>2015-12-28 10:11:34 -0800</date>
            <delta_ts>2015-12-28 10:11:34 -0800</delta_ts>
            <desc>10. Refactor the SVG suite.</desc>
            <filename>0010-Simplify-the-test-harness.patch</filename>
            <type>text/plain</type>
            <size>17687</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSAwM2MwNDA3OTY5Y2I0ZDUwYThlNmMzYTIxYmEwZjE1NmJiNDEzYzQ3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDI3IERlYyAyMDE1IDIyOjQ2OjU5IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAxMC8xM10gU2ltcGxp
ZnkgdGhlIHRlc3QgaGFybmVzcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjU2MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpSZWZhY3RvciB0aGUgU1ZH
IHN1aXRlLgoKKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1z
dmctaW1hZ2VzLmh0bWw6IE1vdmUgc2NyaXB0cyB0byB0aGUgZW5kLgoqIEFuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbDogRGl0dG8uCgoq
IEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFw
ZXMuaHRtbDogUmVtb3ZlIGV4dHJhbmVvdXMgaW5jbHVkZXMKdG8gc3RhZ2UuanMuCiogQW5pbW9t
ZXRlci90ZXN0cy90ZXh0L3RleHQtYm94ZXMuaHRtbDogRGl0dG8uCgpCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlc0JlbmNobWFyayBpcyBub3QgbmVjZXNzYXJ5LiBVc2UgQmVuY2htYXJrIGRpcmVjdGx5
IHdoZW4gc3ViY2xhc3NpbmcuCiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanM6IFJlbW92ZQpCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlc0JlbmNobWFyay4KKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qczogVXNlIEJlbmNobWFyay4K
KiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmct
Y2FudmFzLXNoYXBlcy5qczogRGl0dG8uCgoqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzOiBSZXF1aXJlIHRoZSBz
aGFwZQppbiB0aGUgY29uc3RydWN0b3IgaW5zdGVhZCBvZiBoYXZpbmcgc3ViY2xhc3NlcyBzZXQg
dGhlIHByaXZhdGUgdmFyaWFibGUuCgoqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzOiBSZWZhY3Rvci4KKiBBbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBl
cy5qczoKLS0tCiAuLi4vYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMu
aHRtbCB8ICAxIC0KIC4uLi9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5o
dG1sICAgIHwgIDcgKystLQogLi4uL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hh
cGVzLmh0bWwgICAgfCAgNyArKy0tCiAuLi4vcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFn
ZXMuanMgICAgICAgICAgICB8ICA0ICstCiAuLi4vcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1w
YXJ0aWNsZXMuanMgICAgICAgICB8ICA3IC0tLS0KIC4uLi9yZXNvdXJjZXMvYm91bmNpbmctY2Fu
dmFzLXNoYXBlcy5qcyAgICAgICAgICAgIHwgIDQgKy0KIC4uLi9yZXNvdXJjZXMvYm91bmNpbmct
c3ZnLWltYWdlcy5qcyAgICAgICAgICAgICAgIHwgMzkgKysrKysrKysrLS0tLS0tLS0tLQogLi4u
L3Jlc291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzICAgICAgICAgICAgfCAxMSArKyst
LS0KIC4uLi9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcyAgICAgICAgICAgICAgIHwg
NDQgKysrKysrKysrKystLS0tLS0tLS0tLQogLi4uL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC90ZXh0
LWJveGVzLmh0bWwgICAgICAgICAgfCAgMSAtCiBQZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICB8IDI4ICsrKysrKysrKysrKysrCiAxMSBmaWxlcyBjaGFu
Z2VkLCA4NiBpbnNlcnRpb25zKCspLCA2NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5n
LWNhbnZhcy1zaGFwZXMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sCmluZGV4IGMwMDFm
NDUuLjE3MGVkZjggMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctY2FudmFzLXNoYXBlcy5odG1sCkBAIC0xMSw3ICsxMSw2IEBACiAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9zdGFnZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2lu
Zy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91
bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91
bmNpbmctc3ZnLWltYWdlcy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWwKaW5kZXggNTJkYzE1
NS4uMjNkYTczNSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWwKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1z
dmctaW1hZ2VzLmh0bWwKQEAgLTIsMTggKzIsMTcgQEAKIDxodG1sPgogPGhlYWQ+CiAgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0
YWdlLmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c3ZnIGlkPSJzdGFnZSI+PC9zdmc+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RyaW5ncy5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4gIAogICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLSAgICA8c3ZnIGlkPSJzdGFnZSI+PC9zdmc+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5o
dG1sCmluZGV4IGQ1NzliNzEuLjdkMzJiNGUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5o
dG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sCkBAIC0yLDE4ICsyLDE3IEBACiA8aHRtbD4K
IDxoZWFkPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9
Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHN2ZyBpZD0i
c3RhZ2UiPjwvc3ZnPgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGht
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0cmluZ3Mu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25z
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKICAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci0gICAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3Zn
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWlt
YWdlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMKaW5kZXggNTE4MjE0ZS4u
Yzc0NzRhNSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcworKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCkBAIC0zNSwxMCArMzUsMTAgQEAgQm91
bmNpbmdDYW52YXNJbWFnZXNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2lu
Z0NhbnZhc1BhcnRpY2xlc1N0YWcKICAgICB9CiB9KTsKIAotQm91bmNpbmdDYW52YXNJbWFnZXNC
ZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdDYW52YXNQYXJ0aWNs
ZXNCZW5jaG1hcmssCitCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayA9IFV0aWxpdGllcy5j
cmVhdGVTdWJjbGFzcyhCZW5jaG1hcmssCiAgICAgZnVuY3Rpb24ob3B0aW9ucykKICAgICB7Ci0g
ICAgICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgbmV3IEJv
dW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UoKSwgbmV3IEFuaW1hdG9yKCksIG9wdGlvbnMpOworICAg
ICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZSgp
LCBuZXcgQW5pbWF0b3IoKSwgb3B0aW9ucyk7CiAgICAgfQogKTsKIApkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJj
ZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1w
YXJ0aWNsZXMuanMKaW5kZXggNzVmNzEyMi4uOWIxODk0NCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFy
dGljbGVzLmpzCkBAIC04NiwxMCArODYsMyBAQCBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdl
ID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UsCiAgICAg
ICAgIH0pOwogICAgIH0KIH0pOwotCi1Cb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyayA9
IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCZW5jaG1hcmssCi0gICAgZnVuY3Rpb24oc3RhZ2Us
IGFuaW1hdG9yLCBvcHRpb25zKQotICAgIHsKLSAgICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywg
c3RhZ2UsIGFuaW1hdG9yLCBvcHRpb25zKTsKLSAgICB9Ci0pOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMv
Ym91bmNpbmctY2FudmFzLXNoYXBlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMu
anMKaW5kZXggZDM2YWI0ZS4uYzY3YzBhNCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2Fu
dmFzLXNoYXBlcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCkBAIC03
NSwxMCArNzUsMTAgQEAgQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZSA9IFV0aWxpdGllcy5jcmVh
dGVTdWJjbGFzcyhCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWcKICAgICB9CiB9KTsKIAotQm91
bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91
bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmssCitCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNo
bWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCZW5jaG1hcmssCiAgICAgZnVuY3Rpb24o
b3B0aW9ucykKICAgICB7Ci0gICAgICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJr
LmNhbGwodGhpcywgbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UoKSwgbmV3IEFuaW1hdG9y
KCksIG9wdGlvbnMpOworICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBuZXcgQm91bmNpbmdD
YW52YXNTaGFwZXNTdGFnZSgpLCBuZXcgQW5pbWF0b3IoKSwgb3B0aW9ucyk7CiAgICAgfQogKTsK
IApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcyBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLXN2Zy1pbWFnZXMuanMKaW5kZXggNThjNzlkZi4uZWU5YmI3NSAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJj
ZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2Vz
LmpzCkBAIC0xLDEwICsxLDExIEBACisoZnVuY3Rpb24oKSB7CisKIEJvdW5jaW5nU3ZnSW1hZ2Ug
PSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdTdmdQYXJ0aWNsZSwKICAgICBmdW5j
dGlvbihzdGFnZSkKICAgICB7Ci0gICAgICAgIEJvdW5jaW5nU3ZnUGFydGljbGUuY2FsbCh0aGlz
LCBzdGFnZSk7Ci0gICAgICAgIHRoaXMuX3NoYXBlID0gImltYWdlIjsKKyAgICAgICAgQm91bmNp
bmdTdmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlLCAiaW1hZ2UiKTsKIAotICAgICAgICB2YXIg
YXR0cnMgPSB7IHg6IDAsIHk6IDAsIHdpZHRoOiB0aGlzLl9zaXplLngsIGhlaWdodDogdGhpcy5f
c2l6ZS55IH07CisgICAgICAgIHZhciBhdHRycyA9IHsgeDogMCwgeTogMCwgd2lkdGg6IHRoaXMu
c2l6ZS54LCBoZWlnaHQ6IHRoaXMuc2l6ZS55IH07CiAgICAgICAgIHZhciB4bGlua0F0dHJzID0g
eyBocmVmOiBzdGFnZS5pbWFnZVNyYyB9OwogICAgICAgICB0aGlzLmVsZW1lbnQgPSBEb2N1bWVu
dEV4dGVuc2lvbi5jcmVhdGVTdmdFbGVtZW50KCJpbWFnZSIsIGF0dHJzLCB4bGlua0F0dHJzLCBz
dGFnZS5lbGVtZW50KTsKICAgICAgICAgdGhpcy5fbW92ZSgpOwpAQCAtMTIsMzEgKzEzLDMxIEBA
IEJvdW5jaW5nU3ZnSW1hZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdTdmdQ
YXJ0aWNsZSwKICk7CiAKIEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRl
U3ViY2xhc3MoQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZSwKLSAgICBmdW5jdGlvbiAoZWxlbWVu
dCwgb3B0aW9ucykKKyAgICBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBCb3VuY2luZ1BhcnRp
Y2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Ci0gICAgICAgIHRoaXMuaW1h
Z2VTcmMgPSBvcHRpb25zWyJpbWFnZVNyYyJdIHx8ICJyZXNvdXJjZXMveWluLXlhbmcuc3ZnIjsK
KyAgICAgICAgQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMpOwogICAgIH0sIHsK
IAorICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykKKyAgICB7CisgICAgICAgIEJv
dW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBi
ZW5jaG1hcmspOworICAgICAgICB0aGlzLmltYWdlU3JjID0gYmVuY2htYXJrLm9wdGlvbnNbImlt
YWdlU3JjIl0gfHwgInJlc291cmNlcy95aW4teWFuZy5zdmciOworICAgIH0sCisKICAgICBjcmVh
dGVQYXJ0aWNsZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBCb3VuY2lu
Z1N2Z0ltYWdlKHRoaXMpOwogICAgIH0KIH0pOwogCi1Cb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFy
ayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyaywK
LSAgICBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpCi0gICAgewot
ICAgICAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci0gICAgfSwgewotCi0gICAgY3JlYXRlU3RhZ2U6IGZ1
bmN0aW9uKGVsZW1lbnQpCitCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyayA9IFV0aWxpdGllcy5j
cmVhdGVTdWJjbGFzcyhCZW5jaG1hcmssCisgICAgZnVuY3Rpb24ob3B0aW9ucykKICAgICB7Ci0g
ICAgICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdJbWFnZXNTdGFnZShlbGVtZW50LCB0aGlzLl9v
cHRpb25zKTsKKyAgICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgbmV3IEJvdW5jaW5nU3ZnSW1h
Z2VzU3RhZ2UoKSwgbmV3IEFuaW1hdG9yKCksIG9wdGlvbnMpOwogICAgIH0KLX0pOworKTsKKwor
d2luZG93LmJlbmNobWFya0NsYXNzID0gQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcms7CisKK30p
KCk7CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQotewotICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdJ
bWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanMgYi9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1zdmctcGFydGljbGVzLmpzCmluZGV4IDVjNTEwMDUuLmUzOWYyZjAgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3Vy
Y2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXBh
cnRpY2xlcy5qcwpAQCAtMSw3ICsxLDggQEAKIEJvdW5jaW5nU3ZnUGFydGljbGUgPSBVdGlsaXRp
ZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZSwKLSAgICBmdW5jdGlvbihzdGFnZSkK
KyAgICBmdW5jdGlvbihzdGFnZSwgc2hhcGUpCiAgICAgewogICAgICAgICBCb3VuY2luZ1BhcnRp
Y2xlLmNhbGwodGhpcywgc3RhZ2UpOworICAgICAgICB0aGlzLl9zaGFwZSA9IHNoYXBlOwogICAg
IH0sIHsKIAogICAgIF9hcHBseUNsaXBwaW5nOiBmdW5jdGlvbihzdGFnZSkKQEAgLTE1LDkgKzE2
LDkgQEAgQm91bmNpbmdTdmdQYXJ0aWNsZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3Vu
Y2luZ1BhcnRpY2xlLAogCiAgICAgX21vdmU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZh
ciB0cmFuc2Zvcm0gPSAidHJhbnNsYXRlKCIgKyB0aGlzLl9wb3NpdGlvbi54ICsgIiwgIiArIHRo
aXMuX3Bvc2l0aW9uLnkgKyAiKSI7CisgICAgICAgIHZhciB0cmFuc2Zvcm0gPSAidHJhbnNsYXRl
KCIgKyB0aGlzLnBvc2l0aW9uLnggKyAiLCAiICsgdGhpcy5wb3NpdGlvbi55ICsgIikiOwogICAg
ICAgICBpZiAodGhpcy5fc2hhcGUgIT0gImNpcmNsZSIpCi0gICAgICAgICAgICB0cmFuc2Zvcm0g
Kz0gdGhpcy5fcm90YXRlci5yb3RhdGUodGhpcy5fc2l6ZS5jZW50ZXIpOworICAgICAgICAgICAg
dHJhbnNmb3JtICs9IHRoaXMucm90YXRlci5yb3RhdGUodGhpcy5zaXplLmNlbnRlcik7CiAgICAg
ICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsIHRyYW5zZm9ybSk7CiAg
ICAgfSwKIApAQCAtMjksOSArMzAsOSBAQCBCb3VuY2luZ1N2Z1BhcnRpY2xlID0gVXRpbGl0aWVz
LmNyZWF0ZVN1YmNsYXNzKEJvdW5jaW5nUGFydGljbGUsCiB9KTsKIAogQm91bmNpbmdTdmdQYXJ0
aWNsZXNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ1BhcnRpY2xlc1N0
YWdlLAotICAgIGZ1bmN0aW9uKGVsZW1lbnQsIG9wdGlvbnMpCisgICAgZnVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9w
dGlvbnMpOworICAgICAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcyk7CiAgICAg
fSwgewogCiAgICAgX2NyZWF0ZURlZnM6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLXN2Zy1zaGFwZXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzCmluZGV4
IDFlNDhkOGQuLmEwYWQ5NTIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMu
anMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcwpAQCAtMSw4ICsxLDkgQEAKKyhm
dW5jdGlvbigpIHsKKwogQm91bmNpbmdTdmdTaGFwZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFz
cyhCb3VuY2luZ1N2Z1BhcnRpY2xlLAogICAgIGZ1bmN0aW9uKHN0YWdlKQogICAgIHsKLSAgICAg
ICAgQm91bmNpbmdTdmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKLSAgICAgICAgdGhpcy5f
c2hhcGUgPSBzdGFnZS5zaGFwZTsKKyAgICAgICAgQm91bmNpbmdTdmdQYXJ0aWNsZS5jYWxsKHRo
aXMsIHN0YWdlLCBzdGFnZS5zaGFwZSk7CiAgICAgICAgIHRoaXMuX2ZpbGwgPSBzdGFnZS5maWxs
OwogCiAgICAgICAgIHRoaXMuX2NyZWF0ZVNoYXBlKHN0YWdlKTsKQEAgLTE2LDEzICsxNywxMyBA
QCBCb3VuY2luZ1N2Z1NoYXBlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJvdW5jaW5nU3Zn
UGFydGljbGUsCiAgICAgewogICAgICAgICBzd2l0Y2ggKHRoaXMuX3NoYXBlKSB7CiAgICAgICAg
IGNhc2UgInJlY3QiOgotICAgICAgICAgICAgdmFyIGF0dHJzID0geyB4OiAwLCB5OiAwLCB3aWR0
aDogdGhpcy5fc2l6ZS54LCBoZWlnaHQ6IHRoaXMuX3NpemUueSB9OworICAgICAgICAgICAgdmFy
IGF0dHJzID0geyB4OiAwLCB5OiAwLCB3aWR0aDogdGhpcy5zaXplLngsIGhlaWdodDogdGhpcy5z
aXplLnkgfTsKICAgICAgICAgICAgIHRoaXMuZWxlbWVudCA9IERvY3VtZW50RXh0ZW5zaW9uLmNy
ZWF0ZVN2Z0VsZW1lbnQoInJlY3QiLCBhdHRycywge30sIHN0YWdlLmVsZW1lbnQpOwogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAiY2lyY2xlIjoKICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIHZhciBhdHRycyA9IHsgY3g6IHRoaXMuX3NpemUueCAvIDIsIGN5OiB0aGlz
Ll9zaXplLnkgLyAyLCByOiBNYXRoLm1pbih0aGlzLl9zaXplLngsIHRoaXMuX3NpemUueSkgLyAy
IH07CisgICAgICAgICAgICB2YXIgYXR0cnMgPSB7IGN4OiB0aGlzLnNpemUueCAvIDIsIGN5OiB0
aGlzLnNpemUueSAvIDIsIHI6IE1hdGgubWluKHRoaXMuc2l6ZS54LCB0aGlzLnNpemUueSkgLyAy
IH07CiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVT
dmdFbGVtZW50KCJjaXJjbGUiLCBhdHRycywge30sIHN0YWdlLmVsZW1lbnQpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQ1LDE2ICs0NiwyMSBAQCBCb3VuY2luZ1N2Z1NoYXBl
ID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJvdW5jaW5nU3ZnUGFydGljbGUsCiB9KTsKIAog
Qm91bmNpbmdTdmdTaGFwZXNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2lu
Z1N2Z1BhcnRpY2xlc1N0YWdlLAotICAgIGZ1bmN0aW9uKGVsZW1lbnQsIG9wdGlvbnMpCisgICAg
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5jYWxs
KHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOwotICAgICAgICB0aGlzLnBhcnNlU2hhcGVQYXJhbXRl
cnMob3B0aW9ucyk7Ci0gICAgICAgIHRoaXMuX2dyYWRpZW50c0NvdW50ID0gMDsKKyAgICAgICAg
Qm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMpOwogICAgIH0sIHsKIAorICAgIGlu
aXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykKKyAgICB7CisgICAgICAgIEJvdW5jaW5nU3Zn
UGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBiZW5jaG1hcmsp
OworICAgICAgICB0aGlzLnBhcnNlU2hhcGVQYXJhbWV0ZXJzKGJlbmNobWFyay5vcHRpb25zKTsK
KyAgICAgICAgdGhpcy5fZ3JhZGllbnRzQ291bnQgPSAwOworICAgIH0sCisKICAgICBjcmVhdGVH
cmFkaWVudDogZnVuY3Rpb24oc3RvcHMpCiAgICAgewotICAgICAgICB2YXIgYXR0cnMgPSB7IGlk
OiAiZ2FkaWVudC0iICsgKyt0aGlzLl9ncmFkaWVudHNDb3VudCB9OworICAgICAgICB2YXIgYXR0
cnMgPSB7IGlkOiAiZ3JhZGllbnQtIiArICsrdGhpcy5fZ3JhZGllbnRzQ291bnQgfTsKICAgICAg
ICAgdmFyIGdyYWRpZW50ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlU3ZnRWxlbWVudCgibGlu
ZWFyR3JhZGllbnQiLCBhdHRycywge30sIHRoaXMuX2Vuc3VyZURlZnNJc0NyZWF0ZWQoKSk7CiAK
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdG9wczsgKytpKSB7CkBAIC04MywxOSArODks
MTMgQEAgQm91bmNpbmdTdmdTaGFwZXNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhC
b3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLAogICAgIH0KIH0pOwogCi1Cb3VuY2luZ1N2Z1NoYXBl
c0JlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2luZ1BhcnRpY2xlc0Jl
bmNobWFyaywKLSAgICBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIp
CitCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhC
ZW5jaG1hcmssCisgICAgZnVuY3Rpb24ob3B0aW9ucykKICAgICB7Ci0gICAgICAgIEJvdW5jaW5n
UGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dy
ZXNzQmFyKTsKLSAgICB9LCB7Ci0KLSAgICBjcmVhdGVTdGFnZTogZnVuY3Rpb24oZWxlbWVudCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdTaGFwZXNTdGFnZShlbGVtZW50
LCB0aGlzLl9vcHRpb25zKTsKKyAgICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgbmV3IEJvdW5j
aW5nU3ZnU2hhcGVzU3RhZ2UoKSwgbmV3IEFuaW1hdG9yKCksIG9wdGlvbnMpOwogICAgIH0KLX0p
OworKTsKKword2luZG93LmJlbmNobWFya0NsYXNzID0gQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1h
cms7CiAKLXdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQotewotICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdT
aGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0KK30p
KCk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC90
ZXh0LWJveGVzLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC90
ZXh0LWJveGVzLmh0bWwKaW5kZXggNTVmMjMyMy4uNmMxMDZmOCAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvdGV4dC1ib3hlcy5odG1sCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3RleHQtYm94ZXMuaHRtbApAQCAt
NTYsNyArNTYsNiBAQAogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9u
cy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSIuLi9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBh
cnRpY2xlcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBjaGFyc2V0PSJ1dGYtOCIgc3JjPSJy
ZXNvdXJjZXMvdGV4dC1ib3hlcy5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGQ2MWQ0NjIuLjA1NGU2NWEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC01LDYgKzUsMzQgQEAKIAog
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBSZWZhY3RvciB0
aGUgU1ZHIHN1aXRlLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sOiBNb3ZlIHNjcmlwdHMgdG8gdGhlIGVuZC4K
KyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1z
dmctc2hhcGVzLmh0bWw6IERpdHRvLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sOiBSZW1vdmUgZXh0cmFu
ZW91cyBpbmNsdWRlcworICAgICAgICB0byBzdGFnZS5qcy4KKyAgICAgICAgKiBBbmltb21ldGVy
L3Rlc3RzL3RleHQvdGV4dC1ib3hlcy5odG1sOiBEaXR0by4KKworICAgICAgICBCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlc0JlbmNobWFyayBpcyBub3QgbmVjZXNzYXJ5LiBVc2UgQmVuY2htYXJrIGRp
cmVjdGx5IHdoZW4gc3ViY2xhc3NpbmcuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanM6IFJl
bW92ZQorICAgICAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay4KKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmct
Y2FudmFzLWltYWdlcy5qczogVXNlIEJlbmNobWFyay4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5q
czogRGl0dG8uCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXBhcnRpY2xlcy5qczogUmVxdWlyZSB0aGUgc2hhcGUK
KyAgICAgICAgaW4gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgaGF2aW5nIHN1YmNsYXNzZXMg
c2V0IHRoZSBwcml2YXRlIHZhcmlhYmxlLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanM6IFJlZmFj
dG9yLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzOgorCisyMDE1LTEyLTI3ICBKb24gTGVlICA8am9u
bGVlQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSB0aGUgdGVzdCBoYXJuZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI1NjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBSZWZhY3RvciB0aGUg
SFRNTCBzdWl0ZS4KIAogICAgICAgICBNb3ZlIHNjcmlwdHMgdG8gdGhlIGVuZC4KLS0gCjIuNS40
IChBcHBsZSBHaXQtNjEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267964</attachid>
            <date>2015-12-28 10:11:50 -0800</date>
            <delta_ts>2015-12-28 10:11:50 -0800</delta_ts>
            <desc>11. Refactor the template.</desc>
            <filename>0011-Simplify-the-test-harness.patch</filename>
            <type>text/plain</type>
            <size>11756</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSBiZmJiYzk2YzZhYzE2MDA4MTkyNjdjNDQxZTE1ZTFjMWJmODZlNGRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDI3IERlYyAyMDE1IDIyOjU2OjM5IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAxMS8xM10gU2ltcGxp
ZnkgdGhlIHRlc3QgaGFybmVzcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjU2MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpSZWZhY3RvciB0aGUgdGVt
cGxhdGUuCgoqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNh
bnZhcy5qczoKKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1j
c3MuanM6CiogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3Zn
LmpzOgoqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWw6Ciog
QW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jc3MuaHRtbDoKKiBBbmltb21ldGVy
L3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1sOgotLS0KIC4uLi90ZXN0cy90ZW1wbGF0
ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzICAgIHwgNjMgKysrKysrKy0tLS0tLS0tLS0t
LS0tLQogLi4uL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jc3MuanMgICAgICAg
fCAzNyArKysrKysrLS0tLS0tCiAuLi4vdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRl
LXN2Zy5qcyAgICAgICB8IDM3ICsrKysrKystLS0tLS0KIC4uLi9Bbmltb21ldGVyL3Rlc3RzL3Rl
bXBsYXRlL3RlbXBsYXRlLWNhbnZhcy5odG1sIHwgIDcgKystCiAuLi4vQW5pbW9tZXRlci90ZXN0
cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jc3MuaHRtbCAgICB8ICA3ICsrLQogLi4uL0FuaW1vbWV0ZXIv
dGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWwgICAgfCAgNyArKy0KIFBlcmZvcm1hbmNl
VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKysrCiA3IGZp
bGVzIGNoYW5nZWQsIDgxIGluc2VydGlvbnMoKyksIDkzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMv
dGVtcGxhdGUtY2FudmFzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Rl
bXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMKaW5kZXggODdkZTBhYi4uMWI2Zjc1
YiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRl
L3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMKQEAgLTEs
MyArMSw1IEBACisoZnVuY3Rpb24oKSB7CisKIGZ1bmN0aW9uIFRlbXBsYXRlQ2FudmFzT2JqZWN0
KHN0YWdlKQogewogICAgIC8vIEZvciB0aGUgY2FudmFzIHN0YWdlLCBtb3N0IGxpa2VseSB5b3Ug
d2lsbCBuZWVkIHRvIGNyZWF0ZSB5b3VyCkBAIC0yMiwxNiArMjQsMjEgQEAgVGVtcGxhdGVDYW52
YXNPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICAvLyBSZWRyYXcgeW91ciBvYmplY3QuCiAg
ICAgICAgIHRoaXMuX2RyYXcoKTsKICAgICB9Ci19KTsKK307CiAKIFRlbXBsYXRlQ2FudmFzU3Rh
Z2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2UsCi0gICAgZnVuY3Rpb24oZWxlbWVu
dCwgb3B0aW9ucykKKyAgICBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBTdGFnZS5jYWxsKHRo
aXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgICAgICBTdGFnZS5jYWxsKHRoaXMpOworICAgIH0s
IHsKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykKKyAgICB7CisgICAgICAg
IFN0YWdlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgYmVuY2htYXJrKTsKICAgICAg
ICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoIjJkIik7CiAKICAgICAg
ICAgLy8gRGVmaW5lIGEgY29sbGVjdGlvbiBmb3IgeW91ciBvYmplY3RzLgotICAgIH0sIHsKKyAg
ICB9LAogCiAgICAgdHVuZTogZnVuY3Rpb24oY291bnQpCiAgICAgewpAQCAtNTQsNTAgKzYxLDIw
IEBAIFRlbXBsYXRlQ2FudmFzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2Us
CiAgICAgICAgIC8vIGxpa2VseSB5b3Ugd2lsbCBuZWVkIHRvIGNhbGwgVGVtcGxhdGVDYW52YXNP
YmplY3QuYW5pbWF0ZSgpCiAgICAgICAgIC8vIGZvciBhbGwgeW91ciBhbmltYXRlZCBvYmplY3Rz
IGhlcmUuCiAKLSAgICAgICAgLy8gTG9vcCB0aHJvdWdoIGFsbCB5b3VyIG9iamVjdHMgYW5kIGFz
ayB0aGVtIHRvIGFuaW1hdGUuCi0gICAgfQotfSk7Ci0KLVRlbXBsYXRlQ2FudmFzQW5pbWF0b3Ig
PSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2VBbmltYXRvciwKLSAgICBmdW5jdGlvbihi
ZW5jaG1hcmssIG9wdGlvbnMpCi0gICAgewotICAgICAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJl
bmNobWFyaywgb3B0aW9ucyk7Ci0gICAgICAgIHRoaXMuX2NvbnRleHQgPSBiZW5jaG1hcmsuX3N0
YWdlLmNvbnRleHQ7Ci0gICAgfSwgewotCi0gICAgYW5pbWF0ZTogZnVuY3Rpb24oKQotICAgIHsK
ICAgICAgICAgLy8gTW9zdCBsaWtlbHkgeW91IHdpbGwgbmVlZCB0byBjbGVhciB0aGUgY2FudmFz
IHdpdGggZXZlcnkgcmVkcmF3LgotICAgICAgICB0aGlzLl9jb250ZXh0LmNsZWFyUmVjdCgwLCAw
LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5z
aXplLnkpOwotCi0gICAgICAgIC8vIERyYXcgc2NlbmUgc3R1ZmYgaGVyZSBpZiBuZWVkZWQuCisg
ICAgICAgIHRoaXMuY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5zaXplLngsIHRoaXMuc2l6
ZS55KTsKIAotICAgICAgICByZXR1cm4gU3RhZ2VBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5j
YWxsKHRoaXMpOworICAgICAgICAvLyBMb29wIHRocm91Z2ggYWxsIHlvdXIgb2JqZWN0cyBhbmQg
YXNrIHRoZW0gdG8gYW5pbWF0ZS4KICAgICB9CiB9KTsKIAotVGVtcGxhdGVDYW52YXNCZW5jaG1h
cmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2VCZW5jaG1hcmssCi0gICAgZnVuY3Rp
b24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKQorVGVtcGxhdGVDYW52YXNCZW5j
aG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQmVuY2htYXJrLAorICAgIGZ1bmN0aW9u
KG9wdGlvbnMpCiAgICAgewotICAgICAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRl
LCB0ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci0gICAgfSwgewotCi0gICAgY3JlYXRlU3Rh
Z2U6IGZ1bmN0aW9uKGVsZW1lbnQpCi0gICAgewotICAgICAgICAvLyBBdHRhY2ggdGhlIHN0YWdl
IHRvIHRoZSBiZW5jaG1hcmsuCi0gICAgICAgIHJldHVybiBuZXcgVGVtcGxhdGVDYW52YXNTdGFn
ZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKLSAgICB9LAotCi0gICAgY3JlYXRlQW5pbWF0b3I6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIEF0dGFjaCB0aGUgYW5pbWF0b3IgdG8gdGhl
IGJlbmNobWFyay4KLSAgICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yKHRo
aXMsIHRoaXMuX29wdGlvbnMpOworICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBuZXcgVGVt
cGxhdGVDYW52YXNTdGFnZSgpLCBuZXcgQW5pbWF0b3IoKSwgb3B0aW9ucyk7CiAgICAgfQotfSk7
CispOwogCi13aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKLXsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNh
bGxlZCBmcm9tIHRoZSB0ZXN0IGhhcm5lc3Mgd2hpY2ggc3RhcnRzIHRoZQotICAgIC8vIHRlc3Qg
YnkgY3JlYXRpbmcgeW91ciBiZW5jaG1hcmsgb2JqZWN0LgotICAgIHJldHVybiBuZXcgVGVtcGxh
dGVDYW52YXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHByb2dyZXNzQmFyKTsKLX0K
K3dpbmRvdy5iZW5jaG1hcmtDbGFzcyA9IFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrOworCit9KSgp
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1w
bGF0ZS1jc3MuanMKaW5kZXggZDY1ZDg3ZC4uNzYzNjBkNiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jc3Mu
anMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291
cmNlcy90ZW1wbGF0ZS1jc3MuanMKQEAgLTEsOSArMSwxOCBAQAorKGZ1bmN0aW9uKCkgeworCiBU
ZW1wbGF0ZUNzc1N0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlLAotICAgIGZ1
bmN0aW9uIChlbGVtZW50LCBvcHRpb25zKQorICAgIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgICAgIFN0YWdlLmNhbGwo
dGhpcyk7CiAgICAgfSwgewogCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYmVuY2htYXJrKQor
ICAgIHsKKyAgICAgICAgU3RhZ2UucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBiZW5j
aG1hcmspOworCisgICAgICAgIC8vIERvIGluaXRpYWxpemF0aW9uIGhlcmUuCisgICAgfSwKKwog
ICAgIHR1bmU6IGZ1bmN0aW9uKGNvdW50KQogICAgIHsKICAgICAgICAgLy8gSWYgY291bnQgaXMg
LXZlLCAtY291bnQgZWxlbWVudHMgbmVlZCB0byBiZSByZW1vdmVkIGZvcm0gdGhlCkBAIC0zMSwy
MyArNDAsMTMgQEAgVGVtcGxhdGVDc3NTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhT
dGFnZSwKICAgICB9CiB9KTsKIAotVGVtcGxhdGVDc3NCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3Jl
YXRlU3ViY2xhc3MoU3RhZ2VCZW5jaG1hcmssCi0gICAgZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHByb2dyZXNzQmFyKQorVGVtcGxhdGVDc3NCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3Jl
YXRlU3ViY2xhc3MoQmVuY2htYXJrLAorICAgIGZ1bmN0aW9uKG9wdGlvbnMpCiAgICAgewotICAg
ICAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBwcm9n
cmVzc0Jhcik7Ci0gICAgfSwgewotCi0gICAgY3JlYXRlU3RhZ2U6IGZ1bmN0aW9uKGVsZW1lbnQp
Ci0gICAgewotICAgICAgICAvLyBZb3UgbmVlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZCBzdWNo
IHRoYXQgeW91ciBzdGFnZSBpcyBob29rZWQKLSAgICAgICAgLy8gdXAgdG8gdGhlIGJlbmNobWFy
ay4KLSAgICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZUNzc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29w
dGlvbnMpOworICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBuZXcgVGVtcGxhdGVDc3NTdGFn
ZSgpLCBuZXcgQW5pbWF0b3IoKSwgb3B0aW9ucyk7CiAgICAgfQotfSk7CispOworCit3aW5kb3cu
YmVuY2htYXJrQ2xhc3MgPSBUZW1wbGF0ZUNzc0JlbmNobWFyazsKIAotd2luZG93LmJlbmNobWFy
a0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NC
YXIpCi17Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgdGVzdCBoYXJu
ZXNzIHdoaWNoIHN0YXJ0cyB0aGUKLSAgICAvLyB0ZXN0IGJ5IGNyZWF0aW5nIHlvdXIgYmVuY2ht
YXJrIG9iamVjdC4KLSAgICByZXR1cm4gbmV3IFRlbXBsYXRlQ3NzQmVuY2htYXJrKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0Jhcik7Ci19Cit9KSgpOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1z
dmcuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3Vy
Y2VzL3RlbXBsYXRlLXN2Zy5qcwppbmRleCBjODk4ODYxLi4zM2JiZGM0IDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBs
YXRlLXN2Zy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxh
dGUvcmVzb3VyY2VzL3RlbXBsYXRlLXN2Zy5qcwpAQCAtMSw5ICsxLDE4IEBACisoZnVuY3Rpb24o
KSB7CisKIFRlbXBsYXRlU3ZnU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2Us
Ci0gICAgZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9ucykKKyAgICBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgICAgICBTdGFn
ZS5jYWxsKHRoaXMpOwogICAgIH0sIHsKIAorICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNo
bWFyaykKKyAgICB7CisgICAgICAgIFN0YWdlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhp
cywgYmVuY2htYXJrKTsKKworICAgICAgICAvLyBEbyBpbml0aWFsaXphdGlvbiBoZXJlLgorICAg
IH0sCisKICAgICB0dW5lOiBmdW5jdGlvbihjb3VudCkKICAgICB7CiAgICAgICAgIC8vIElmIGNv
dW50IGlzIC12ZSwgLWNvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgcmVtb3ZlZCBmb3JtIHRoZQpA
QCAtMzEsMjMgKzQwLDEzIEBAIFRlbXBsYXRlU3ZnU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3Vi
Y2xhc3MoU3RhZ2UsCiAgICAgfQogfSk7CiAKLVRlbXBsYXRlU3ZnQmVuY2htYXJrID0gVXRpbGl0
aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlQmVuY2htYXJrLAotICAgIGZ1bmN0aW9uKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCBwcm9ncmVzc0JhcikKK1RlbXBsYXRlU3ZnQmVuY2htYXJrID0gVXRpbGl0
aWVzLmNyZWF0ZVN1YmNsYXNzKEJlbmNobWFyaywKKyAgICBmdW5jdGlvbihvcHRpb25zKQogICAg
IHsKLSAgICAgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcHJvZ3Jlc3NCYXIpOwotICAgIH0sIHsKLQotICAgIGNyZWF0ZVN0YWdlOiBmdW5jdGlvbihl
bGVtZW50KQotICAgIHsKLSAgICAgICAgLy8gWW91IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBtZXRo
b2Qgc3VjaCB0aGF0IHlvdXIgc3RhZ2UgaXMgaG9va2VkCi0gICAgICAgIC8vIHVwIHRvIHRoZSBi
ZW5jaG1hcmsuCi0gICAgICAgIHJldHVybiBuZXcgVGVtcGxhdGVTdmdTdGFnZShlbGVtZW50LCB0
aGlzLl9vcHRpb25zKTsKKyAgICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgbmV3IFRlbXBsYXRl
U3ZnU3RhZ2UoKSwgbmV3IEFuaW1hdG9yKCksIG9wdGlvbnMpOwogICAgIH0KLX0pOworKTsKKwor
d2luZG93LmJlbmNobWFya0NsYXNzID0gVGVtcGxhdGVTdmdCZW5jaG1hcms7CiAKLXdpbmRvdy5i
ZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHBy
b2dyZXNzQmFyKQotewotICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIHRl
c3QgaGFybmVzcyB3aGljaCBzdGFydHMgdGhlCi0gICAgLy8gdGVzdCBieSBjcmVhdGluZyB5b3Vy
IGJlbmNobWFyayBvYmplY3QuCi0gICAgcmV0dXJuIG5ldyBUZW1wbGF0ZVN2Z0JlbmNobWFyayhz
dWl0ZSwgdGVzdCwgb3B0aW9ucywgcHJvZ3Jlc3NCYXIpOwotfQorfSkoKTsKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jYW52
YXMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1w
bGF0ZS1jYW52YXMuaHRtbAppbmRleCBjMTdkN2Y5Li5iODdiYTc5IDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0
bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBs
YXRlLWNhbnZhcy5odG1sCkBAIC0yLDE2ICsyLDE1IEBACiA8aHRtbD4KIDxoZWFkPgogICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9z
dGFnZS5jc3MiPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2Fu
dmFzPgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0cmluZ3MuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci0gICAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFzPgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Rl
bXBsYXRlLWNzcy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBs
YXRlL3RlbXBsYXRlLWNzcy5odG1sCmluZGV4IDFiOWIwZmIuLjkwYmYyZTkgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jc3Mu
aHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVt
cGxhdGUtY3NzLmh0bWwKQEAgLTIsMTYgKzIsMTUgQEAKIDxodG1sPgogPGhlYWQ+CiAgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0
YWdlLmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RyaW5ncy5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3RlbXBsYXRlLWNzcy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8
ZGl2IGlkPSJzdGFnZSI+PC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWwg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3Zn
Lmh0bWwKaW5kZXggYTgxZjgwOC4uMmUwZGY5YSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1sCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbApA
QCAtMiwxNiArMiwxNSBAQAogPGh0bWw+CiA8aGVhZD4KICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKzwvaGVh
ZD4KKzxib2R5PgorICAgIDxzdmcgaWQ9InN0YWdlIj48L3N2Zz4KICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9zdHJpbmdzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
c3RhZ2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVtcGxhdGUt
c3ZnLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotICAgIDxzdmcgaWQ9InN0YWdlIj48
L3N2Zz4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hh
bmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDU0ZTY1YS4uY2RhZTQ1
MyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTUsNiArNSwyMiBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIFJlZmFjdG9yIHRoZSB0ZW1wbGF0ZS4KKworICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNhbnZh
cy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1w
bGF0ZS1jc3MuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJj
ZXMvdGVtcGxhdGUtc3ZnLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUv
dGVtcGxhdGUtY2FudmFzLmh0bWw6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0
ZS90ZW1wbGF0ZS1jc3MuaHRtbDoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRl
L3RlbXBsYXRlLXN2Zy5odG1sOgorCisyMDE1LTEyLTI3ICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KKworICAgICAgICBTaW1wbGlmeSB0aGUgdGVzdCBoYXJuZXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI1NjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBSZWZhY3RvciB0aGUgU1ZHIHN1aXRl
LgogCiAgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctc3ZnLWltYWdlcy5odG1sOiBNb3ZlIHNjcmlwdHMgdG8gdGhlIGVuZC4KLS0gCjIuNS40IChB
cHBsZSBHaXQtNjEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267965</attachid>
            <date>2015-12-28 10:12:14 -0800</date>
            <delta_ts>2015-12-28 10:12:14 -0800</delta_ts>
            <desc>12. Don&apos;t require new tests to pass a new instance of Animator</desc>
            <filename>0012-Simplify-the-test-harness.patch</filename>
            <type>text/plain</type>
            <size>16178</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSAzY2E0YzFhMWRlNmRmNGUxN2ZkN2NiZWU2ZTUyNjZhNzU3MDc3MmM1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDI3IERlYyAyMDE1IDIzOjAyOjQ4IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAxMi8xM10gU2ltcGxp
ZnkgdGhlIHRlc3QgaGFybmVzcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjU2MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpBbGwgb2YgdGhlIGJlbmNo
bWFya3MgdXNlIHRoZSBkZWZhdWx0IEFuaW1hdG9yKCkuIERvbid0IHJlcXVpcmUgbmV3IHRlc3Rz
CnRvIHBhc3MgYSBuZXcgaW5zdGFuY2UsIGFuZCBpbnN0ZWFkIGp1c3QgbWFrZSBvbmUgaW4gdGhl
IEJlbmNobWFyayBjb25zdHJ1Y3Rvci4KCiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanM6CiogQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMu
anM6CiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLWNzcy1pbWFnZXMuanM6CiogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanM6CiogQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanM6CiogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFw
ZXMuanM6CiogQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5q
czoKKiBBbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanM6
CiogQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jYW52YXMtc3RhcnMuanM6CiogQW5p
bW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmpzOgoq
IEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanM6CiogQW5pbW9tZXRlci90ZXN0cy9z
aW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMtcGF0aHMuanM6CiogQW5pbW9tZXRlci90ZXN0
cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzOgoqIEFuaW1vbWV0ZXIvdGVz
dHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qczoKKiBBbmltb21ldGVyL3Rlc3Rz
L3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcuanM6CiogQW5pbW9tZXRlci90ZXN0cy90
ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzOgoqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC9y
ZXNvdXJjZXMvdGV4dC1ib3hlcy5qczoKLS0tCiAuLi4vcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZh
cy1pbWFnZXMuanMgICAgICAgICAgICB8ICAyICstCiAuLi4vcmVzb3VyY2VzL2JvdW5jaW5nLWNh
bnZhcy1zaGFwZXMuanMgICAgICAgICAgICB8ICAyICstCiAuLi4vcmVzb3VyY2VzL2JvdW5jaW5n
LWNzcy1pbWFnZXMuanMgICAgICAgICAgICAgICB8ICAyICstCiAuLi4vcmVzb3VyY2VzL2JvdW5j
aW5nLWNzcy1zaGFwZXMuanMgICAgICAgICAgICAgICB8ICAyICstCiAuLi4vcmVzb3VyY2VzL2Jv
dW5jaW5nLXN2Zy1pbWFnZXMuanMgICAgICAgICAgICAgICB8ICAyICstCiAuLi4vcmVzb3VyY2Vz
L2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMgICAgICAgICAgICAgICB8ICAyICstCiAuLi4vdGVzdHMv
bWFzdGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMgICAgICAgICB8ICAyICstCiAuLi4vdGVz
dHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcyAgICAgICB8ICAyICstCiAuLi4v
dGVzdHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzICAgICAgICAgICB8ICAyICstCiAu
Li4vdGVzdHMvbWlzYy9yZXNvdXJjZXMvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5qcyB8ICAyICst
CiAuLi4vQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcyAgICAgICAgICAgICB8ICA0
ICsrLS0KIC4uLi90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMtcGF0aHMuanMg
IHwgIDIgKy0KIC4uLi90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpz
ICAgIHwgIDIgKy0KIC4uLi90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpz
ICAgICAgIHwgIDIgKy0KIC4uLi90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3Zn
LmpzICAgICAgIHwgIDIgKy0KIC4uLi90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0
LmpzICAgICAgICAgIHwgIDIgKy0KIC4uLi9Bbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2Vz
L3RleHQtYm94ZXMuanMgIHwgIDIgKy0KIFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgMjggKysrKysrKysrKysrKysrKysrKysrKwogMTggZmlsZXMg
Y2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNv
dXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1p
bWFnZXMuanMKaW5kZXggYzc0NzRhNS4uZDFlYjExMSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNp
bmctY2FudmFzLWltYWdlcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpz
CkBAIC0zOCw3ICszOCw3IEBAIEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UgPSBVdGlsaXRpZXMu
Y3JlYXRlU3ViY2xhc3MoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnCiBCb3VuY2luZ0NhbnZh
c0ltYWdlc0JlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCZW5jaG1hcmssCiAg
ICAgZnVuY3Rpb24ob3B0aW9ucykKICAgICB7Ci0gICAgICAgIEJlbmNobWFyay5jYWxsKHRoaXMs
IG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlKCksIG5ldyBBbmltYXRvcigpLCBvcHRpb25z
KTsKKyAgICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgbmV3IEJvdW5jaW5nQ2FudmFzSW1hZ2Vz
U3RhZ2UoKSwgb3B0aW9ucyk7CiAgICAgfQogKTsKIApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNp
bmctY2FudmFzLXNoYXBlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMKaW5k
ZXggYzY3YzBhNC4uMTNiMTcyNyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNo
YXBlcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCkBAIC03OCw3ICs3
OCw3IEBAIEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xh
c3MoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnCiBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNo
bWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCZW5jaG1hcmssCiAgICAgZnVuY3Rpb24o
b3B0aW9ucykKICAgICB7Ci0gICAgICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIG5ldyBCb3VuY2lu
Z0NhbnZhc1NoYXBlc1N0YWdlKCksIG5ldyBBbmltYXRvcigpLCBvcHRpb25zKTsKKyAgICAgICAg
QmVuY2htYXJrLmNhbGwodGhpcywgbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UoKSwgb3B0
aW9ucyk7CiAgICAgfQogKTsKIApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdl
cy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFnZXMuanMKaW5kZXggMzg1MzRlMS4uNGQwMDZj
MyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qcworKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9i
b3VuY2luZy1jc3MtaW1hZ2VzLmpzCkBAIC01Miw3ICs1Miw3IEBAIEJvdW5jaW5nQ3NzSW1hZ2Vz
U3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSwK
IEJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJl
bmNobWFyaywKICAgICBmdW5jdGlvbihvcHRpb25zKQogICAgIHsKLSAgICAgICAgQmVuY2htYXJr
LmNhbGwodGhpcywgbmV3IEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UoKSwgbmV3IEFuaW1hdG9yKCks
IG9wdGlvbnMpOworICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBuZXcgQm91bmNpbmdDc3NJ
bWFnZXNTdGFnZSgpLCBvcHRpb25zKTsKICAgICB9CiApOwogCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9i
b3VuY2luZy1jc3Mtc2hhcGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qcwppbmRl
eCBmN2UxMWQ2Li4xNDFlMjgyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVz
LmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanMKQEAgLTcwLDcgKzcwLDcgQEAg
Qm91bmNpbmdDc3NTaGFwZXNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCb3VuY2lu
Z1BhcnRpY2xlc1N0YWdlLAogQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsgPSBVdGlsaXRpZXMu
Y3JlYXRlU3ViY2xhc3MoQmVuY2htYXJrLAogICAgIGZ1bmN0aW9uKG9wdGlvbnMpCiAgICAgewot
ICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBuZXcgQm91bmNpbmdDc3NTaGFwZXNTdGFnZSgp
LCBuZXcgQW5pbWF0b3IoKSwgb3B0aW9ucyk7CisgICAgICAgIEJlbmNobWFyay5jYWxsKHRoaXMs
IG5ldyBCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlKCksIG9wdGlvbnMpOwogICAgIH0KICk7CiAKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1z
dmctaW1hZ2VzLmpzCmluZGV4IGVlOWJiNzUuLmUzMzFjYzQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLXN2Zy1pbWFnZXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcwpA
QCAtMzMsNyArMzMsNyBAQCBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlID0gVXRpbGl0aWVzLmNyZWF0
ZVN1YmNsYXNzKEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UsCiBCb3VuY2luZ1N2Z0ltYWdlc0Jl
bmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCZW5jaG1hcmssCiAgICAgZnVuY3Rp
b24ob3B0aW9ucykKICAgICB7Ci0gICAgICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIG5ldyBCb3Vu
Y2luZ1N2Z0ltYWdlc1N0YWdlKCksIG5ldyBBbmltYXRvcigpLCBvcHRpb25zKTsKKyAgICAgICAg
QmVuY2htYXJrLmNhbGwodGhpcywgbmV3IEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UoKSwgb3B0aW9u
cyk7CiAgICAgfQogKTsKIApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMKaW5kZXggYTBhZDk1Mi4uODhjZWJhYSAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcworKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1zdmctc2hhcGVzLmpzCkBAIC05Miw3ICs5Miw3IEBAIEJvdW5jaW5nU3ZnU2hhcGVzU3Rh
Z2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZSwK
IEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJl
bmNobWFyaywKICAgICBmdW5jdGlvbihvcHRpb25zKQogICAgIHsKLSAgICAgICAgQmVuY2htYXJr
LmNhbGwodGhpcywgbmV3IEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UoKSwgbmV3IEFuaW1hdG9yKCks
IG9wdGlvbnMpOworICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBuZXcgQm91bmNpbmdTdmdT
aGFwZXNTdGFnZSgpLCBvcHRpb25zKTsKICAgICB9CiApOwogCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWFzdGVyL3Jlc291cmNlcy9j
YW52YXMtdGVzdHMuanMKaW5kZXggNzg0NjFkYi4uYzNkNzRiMSAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21hc3Rlci9yZXNvdXJjZXMvY2FudmFzLXRlc3Rz
LmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9tYXN0ZXIvcmVzb3Vy
Y2VzL2NhbnZhcy10ZXN0cy5qcwpAQCAtMjExLDcgKzIxMSw3IEBAIENhbnZhc1BhdGhCZW5jaG1h
cmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQmVuY2htYXJrLAogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAotICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdGFnZSwgbmV3
IEFuaW1hdG9yKCksIG9wdGlvbnMpOworICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdGFn
ZSwgb3B0aW9ucyk7CiAgICAgfQogKTsKIApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0
cm9ucy5qcwppbmRleCAwYjNmN2JkLi5mMTU4MDRmIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcwor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2Fu
dmFzLWVsZWN0cm9ucy5qcwpAQCAtMTAxLDcgKzEwMSw3IEBAIENhbnZhc0VsZWN0cm9uc1N0YWdl
ID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlLAogQ2FudmFzRWxlY3Ryb25zQmVuY2ht
YXJrID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJlbmNobWFyaywKICAgICBmdW5jdGlvbihv
cHRpb25zKQogICAgIHsKLSAgICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgbmV3IENhbnZhc0Vs
ZWN0cm9uc1N0YWdlKCksIG5ldyBBbmltYXRvcigpLCBvcHRpb25zKTsKKyAgICAgICAgQmVuY2ht
YXJrLmNhbGwodGhpcywgbmV3IENhbnZhc0VsZWN0cm9uc1N0YWdlKCksIG9wdGlvbnMpOwogICAg
IH0KICk7CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9t
aXNjL3Jlc291cmNlcy9jYW52YXMtc3RhcnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCmluZGV4IGJjYjAwMmEuLmU4
NTM5NzYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNj
L3Jlc291cmNlcy9jYW52YXMtc3RhcnMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcwpAQCAtOTcsNyArOTcsNyBA
QCBDYW52YXNTdGFyc1N0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlLAogQ2Fu
dmFzU3RhcnNCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQmVuY2htYXJrLAog
ICAgIGZ1bmN0aW9uKG9wdGlvbnMpCiAgICAgewotICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlz
LCBuZXcgQ2FudmFzU3RhcnNTdGFnZSgpLCBuZXcgQW5pbWF0b3IoKSwgb3B0aW9ucyk7CisgICAg
ICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIG5ldyBDYW52YXNTdGFyc1N0YWdlKCksIG9wdGlvbnMp
OwogICAgIH0KICk7CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9taXNjL3Jlc291cmNlcy9jb21wb3NpdGluZy10cmFuc2Zvcm1zLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NvbXBvc2l0aW5nLXRyYW5z
Zm9ybXMuanMKaW5kZXggYmJkMzllYS4uYWJkMTY5MSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NvbXBvc2l0aW5nLXRyYW5zZm9y
bXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3Vy
Y2VzL2NvbXBvc2l0aW5nLXRyYW5zZm9ybXMuanMKQEAgLTU3LDcgKzU3LDcgQEAgQ29tcG9zaXRp
bmdUcmFuc2Zvcm1zU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZSwKIENvbXBvc2l0ZWRUcmFuc2Zvcm1zQmVuY2htYXJrID0gVXRpbGl0aWVzLmNy
ZWF0ZVN1YmNsYXNzKEJlbmNobWFyaywKICAgICBmdW5jdGlvbihvcHRpb25zKQogICAgIHsKLSAg
ICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgbmV3IENvbXBvc2l0aW5nVHJhbnNmb3Jtc1N0YWdl
KCksIG5ldyBBbmltYXRvcigpLCBvcHRpb25zKTsKKyAgICAgICAgQmVuY2htYXJrLmNhbGwodGhp
cywgbmV3IENvbXBvc2l0aW5nVHJhbnNmb3Jtc1N0YWdlKCksIG9wdGlvbnMpOwogICAgIH0KICk7
CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJj
ZXMvbWFpbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMv
bWFpbi5qcwppbmRleCBkN2Y5N2QwLi43NGY2NGVjIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzCkBAIC0yNTUsMTMgKzI1NSwx
MyBAQCBBbmltYXRvci5wcm90b3R5cGUgPQogICAgIH0KIH0KIAotZnVuY3Rpb24gQmVuY2htYXJr
KHN0YWdlLCBhbmltYXRvciwgb3B0aW9ucykKK2Z1bmN0aW9uIEJlbmNobWFyayhzdGFnZSwgb3B0
aW9ucykKIHsKICAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9uczsKIAogICAgIHRoaXMuX3N0YWdl
ID0gc3RhZ2U7CiAgICAgdGhpcy5fc3RhZ2UuaW5pdGlhbGl6ZSh0aGlzKTsKLSAgICB0aGlzLl9h
bmltYXRvciA9IGFuaW1hdG9yOworICAgIHRoaXMuX2FuaW1hdG9yID0gbmV3IEFuaW1hdG9yKCk7
CiAgICAgdGhpcy5fYW5pbWF0b3IuaW5pdGlhbGl6ZSh0aGlzKTsKIAogICAgIHRoaXMuX3JlY29y
ZEludGVydmFsID0gMjAwOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy1wYXRocy5qcyBiL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMt
cGF0aHMuanMKaW5kZXggMGQwMTgyNC4uYTc0M2EyYiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy1wYXRo
cy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291
cmNlcy9zaW1wbGUtY2FudmFzLXBhdGhzLmpzCkBAIC0zMjYsNyArMzI2LDcgQEAgQ2FudmFzUGF0
aEJlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCZW5jaG1hcmssCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIHN0
YWdlLCBuZXcgQW5pbWF0b3IoKSwgb3B0aW9ucyk7CisgICAgICAgIEJlbmNobWFyay5jYWxsKHRo
aXMsIHN0YWdlLCBvcHRpb25zKTsKICAgICB9CiApOwogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNhbnZh
cy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJj
ZXMvdGVtcGxhdGUtY2FudmFzLmpzCmluZGV4IDFiNmY3NWIuLjQyNTBlMzkgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVt
cGxhdGUtY2FudmFzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90
ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzCkBAIC03MSw3ICs3MSw3IEBAIFRl
bXBsYXRlQ2FudmFzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2UsCiBUZW1w
bGF0ZUNhbnZhc0JlbmNobWFyayA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhCZW5jaG1hcmss
CiAgICAgZnVuY3Rpb24ob3B0aW9ucykKICAgICB7Ci0gICAgICAgIEJlbmNobWFyay5jYWxsKHRo
aXMsIG5ldyBUZW1wbGF0ZUNhbnZhc1N0YWdlKCksIG5ldyBBbmltYXRvcigpLCBvcHRpb25zKTsK
KyAgICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgbmV3IFRlbXBsYXRlQ2FudmFzU3RhZ2UoKSwg
b3B0aW9ucyk7CiAgICAgfQogKTsKIApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jc3MuanMgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNz
cy5qcwppbmRleCA3NjM2MGQ2Li42YzA3N2ZhIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qcworKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3Rl
bXBsYXRlLWNzcy5qcwpAQCAtNDMsNyArNDMsNyBAQCBUZW1wbGF0ZUNzc1N0YWdlID0gVXRpbGl0
aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlLAogVGVtcGxhdGVDc3NCZW5jaG1hcmsgPSBVdGlsaXRp
ZXMuY3JlYXRlU3ViY2xhc3MoQmVuY2htYXJrLAogICAgIGZ1bmN0aW9uKG9wdGlvbnMpCiAgICAg
ewotICAgICAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBuZXcgVGVtcGxhdGVDc3NTdGFnZSgpLCBu
ZXcgQW5pbWF0b3IoKSwgb3B0aW9ucyk7CisgICAgICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIG5l
dyBUZW1wbGF0ZUNzc1N0YWdlKCksIG9wdGlvbnMpOwogICAgIH0KICk7CiAKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVt
cGxhdGUtc3ZnLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRl
L3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcuanMKaW5kZXggMzNiYmRjNC4uN2ZkYWRiYiAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNl
cy90ZW1wbGF0ZS1zdmcuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcuanMKQEAgLTQzLDcgKzQzLDcgQEAgVGVt
cGxhdGVTdmdTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTdGFnZSwKIFRlbXBsYXRl
U3ZnQmVuY2htYXJrID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJlbmNobWFyaywKICAgICBm
dW5jdGlvbihvcHRpb25zKQogICAgIHsKLSAgICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgbmV3
IFRlbXBsYXRlU3ZnU3RhZ2UoKSwgbmV3IEFuaW1hdG9yKCksIG9wdGlvbnMpOworICAgICAgICBC
ZW5jaG1hcmsuY2FsbCh0aGlzLCBuZXcgVGVtcGxhdGVTdmdTdGFnZSgpLCBvcHRpb25zKTsKICAg
ICB9CiApOwogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
dGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzCmluZGV4IDA4MjI2NmQu
LjEzOGIwNDYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90
ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzCkBAIC0yNTEsNyAr
MjUxLDcgQEAgVXRpbGl0aWVzLmV4dGVuZE9iamVjdChMYXllcmluZ1RleHRTdGFnZSwgewogTGF5
ZXJpbmdUZXh0QmVuY2htYXJrID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKEJlbmNobWFyaywK
ICAgICBmdW5jdGlvbihvcHRpb25zKQogICAgIHsKLSAgICAgICAgQmVuY2htYXJrLmNhbGwodGhp
cywgbmV3IExheWVyaW5nVGV4dFN0YWdlKCksIG5ldyBBbmltYXRvcigpLCBvcHRpb25zKTsKKyAg
ICAgICAgQmVuY2htYXJrLmNhbGwodGhpcywgbmV3IExheWVyaW5nVGV4dFN0YWdlKCksIG9wdGlv
bnMpOwogICAgIH0KICk7CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy90ZXh0L3Jlc291cmNlcy90ZXh0LWJveGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL3RleHQtYm94ZXMuanMKaW5kZXggOGEwOTlm
Yy4uNmEzNTIzZSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3RleHQvcmVzb3VyY2VzL3RleHQtYm94ZXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL3RleHQtYm94ZXMuanMKQEAgLTQ5LDcgKzQ5LDcg
QEAgQm91bmNpbmdUZXh0Qm94U3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQm91bmNp
bmdQYXJ0aWNsZXNTdGFnZSwKIEJvdW5jaW5nVGV4dEJveEJlbmNobWFyayA9IFV0aWxpdGllcy5j
cmVhdGVTdWJjbGFzcyhCZW5jaG1hcmssCiAgICAgZnVuY3Rpb24ob3B0aW9ucykKICAgICB7Ci0g
ICAgICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIG5ldyBCb3VuY2luZ1RleHRCb3hTdGFnZSgpLCBu
ZXcgQW5pbWF0b3IoKSwgb3B0aW9ucyk7CisgICAgICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIG5l
dyBCb3VuY2luZ1RleHRCb3hTdGFnZSgpLCBvcHRpb25zKTsKICAgICB9CiApOwogCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGNkYWU0NTMuLjFjNjI5Y2QgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
Q2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC01LDYgKzUsMzQg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBBbGwg
b2YgdGhlIGJlbmNobWFya3MgdXNlIHRoZSBkZWZhdWx0IEFuaW1hdG9yKCkuIERvbid0IHJlcXVp
cmUgbmV3IHRlc3RzCisgICAgICAgIHRvIHBhc3MgYSBuZXcgaW5zdGFuY2UsIGFuZCBpbnN0ZWFk
IGp1c3QgbWFrZSBvbmUgaW4gdGhlIEJlbmNobWFyayBjb25zdHJ1Y3Rvci4KKworICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1j
YW52YXMtaW1hZ2VzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzOgorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3Mt
aW1hZ2VzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L3Jlc291cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpz
OgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNl
cy9ib3VuY2luZy1zdmctc2hhcGVzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWFz
dGVyL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9taXNjL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzOgorICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzOgorICAgICAgICAqIEFuaW1v
bWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY29tcG9zaXRpbmctdHJhbnNmb3Jtcy5qczoKKyAg
ICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzOgorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLXBhdGhzLmpzOgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNh
bnZhcy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90
ZW1wbGF0ZS1jc3MuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNv
dXJjZXMvdGVtcGxhdGUtc3ZnLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC9y
ZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Rl
eHQvcmVzb3VyY2VzL3RleHQtYm94ZXMuanM6CisKKzIwMTUtMTItMjcgIEpvbiBMZWUgIDxqb25s
ZWVAYXBwbGUuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IHRoZSB0ZXN0IGhhcm5lc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjU2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFJlZmFjdG9yIHRoZSB0
ZW1wbGF0ZS4KIAogICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2Vz
L3RlbXBsYXRlLWNhbnZhcy5qczoKLS0gCjIuNS40IChBcHBsZSBHaXQtNjEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267966</attachid>
            <date>2015-12-28 10:12:49 -0800</date>
            <delta_ts>2015-12-28 10:12:49 -0800</delta_ts>
            <desc>13. Will be checked in separately: update the simple canvas tests</desc>
            <filename>0013-Simplify-the-test-harness.patch</filename>
            <type>text/plain</type>
            <size>8406</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSA5MWExYmE0MTI4MDg5ZDMwZTZhYjNhZDhkYjE2MDk4ZDY1ZTJhOGRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDI3IERlYyAyMDE1IDIzOjA3OjA0IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAxMy8xM10gU2ltcGxp
ZnkgdGhlIHRlc3QgaGFybmVzcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjU2MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpVcGRhdGUgdGhlIHNpbXBs
ZSBjYW52YXMgdGVzdHMuIEZvciB0aGUgcGF0aHMsIHN0YXJ0IGZyb20gdGhlIGNlbnRlciBpbnN0
ZWFkIG9mIHRoZQp0b3AtbGVmdCBjb3JuZXIuIEluc3RlYWQgb2YgdXNpbmcgYSBjb29yZGluYXRl
IGxpbWl0LCB1c2UgYSBjYW5vbml6ZWQgZmFjdG9yLCBhbmQKdXNlIHRoYXQgYWxvbmcgYm90aCB0
aGUgeCBhbmQgeSBheGVzLCBzbyB0aGF0IG1vcmUgY2FwYWJsZSB0ZXN0cyB1c2UgbW9yZSBvZiB0
aGUKY2FudmFzLgoKKiBBbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNh
bnZhcy1wYXRocy5qczoKKENhbnZhc0xpbmVQb2ludCk6IFJld3JpdGUgdG8gdXNlIHRoZSBjb29y
ZGluYXRlIG1heGltdW0gZmFjdG9yLgooQ2FudmFzUXVhZHJhdGljUG9pbnQpOiBEaXR0by4KKENh
bnZhc0JlemllclBvaW50KTogRGl0dG8uCiogQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3Vy
Y2VzL3NpbXBsZS1jYW52YXMuanM6Cih0dW5lKTogQ2FsY3VsYXRlIGEgZmFjdG9yIGluc3RlYWQg
b2YgYSBtYXhpbXVtIGNvb3JkaW5hdGUuCi0tLQogLi4uL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMv
c2ltcGxlLWNhbnZhcy1wYXRocy5qcyAgfCAyOSArKysrKysrKysrKy0tLS0tLS0tLS0tCiAuLi4v
dGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLmpzICAgICAgICB8ICA4ICsrKy0t
LQogUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgfCAx
OSArKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCAxOCBk
ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLXBhdGhzLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy1wYXRo
cy5qcwppbmRleCBhNzQzYTJiLi5mNDk2ZTRlIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLXBhdGhzLmpz
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2Vz
L3NpbXBsZS1jYW52YXMtcGF0aHMuanMKQEAgLTIxLDggKzIxLDkgQEAgQ2FudmFzTGluZVNlZ21l
bnQucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjb250ZXh0KSB7CiAgICAgY29udGV4dC5zdHJv
a2UoKTsKIH07CiAKLWZ1bmN0aW9uIENhbnZhc0xpbmVQb2ludChzdGFnZSwgY29vcmRpbmF0ZU1h
eGltdW0pIHsKLSAgICB0aGlzLl9wb2ludCA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKG5ldyBQb2lu
dChNYXRoLm1pbihzdGFnZS5zaXplLngsIGNvb3JkaW5hdGVNYXhpbXVtKSwgTWF0aC5taW4oc3Rh
Z2Uuc2l6ZS55LCBjb29yZGluYXRlTWF4aW11bSkpKTsKK2Z1bmN0aW9uIENhbnZhc0xpbmVQb2lu
dChzdGFnZSwgY29vcmRpbmF0ZU1heGltdW1GYWN0b3IpIHsKKyAgICB2YXIgcG9pbnRNYXhpbXVt
ID0gbmV3IFBvaW50KE1hdGgubWluKHN0YWdlLnNpemUueCwgY29vcmRpbmF0ZU1heGltdW1GYWN0
b3IgKiBzdGFnZS5zaXplLngpLCBNYXRoLm1pbihzdGFnZS5zaXplLnksIGNvb3JkaW5hdGVNYXhp
bXVtRmFjdG9yICogc3RhZ2Uuc2l6ZS55KSk7CisgICAgdGhpcy5fcG9pbnQgPSBzdGFnZS5yYW5k
b21Qb3NpdGlvbihwb2ludE1heGltdW0pLmFkZChuZXcgUG9pbnQoKHN0YWdlLnNpemUueCAtIHBv
aW50TWF4aW11bS54KSAvIDIsIChzdGFnZS5zaXplLnkgLSBwb2ludE1heGltdW0ueSkgLyAyKSk7
CiB9CiBDYW52YXNMaW5lUG9pbnQucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjb250ZXh0KSB7
CiAgICAgY29udGV4dC5saW5lVG8odGhpcy5fcG9pbnQueCwgdGhpcy5fcG9pbnQueSk7CkBAIC00
NywxMCArNDgsMTAgQEAgQ2FudmFzUXVhZHJhdGljU2VnbWVudC5wcm90b3R5cGUuZHJhdyA9IGZ1
bmN0aW9uKGNvbnRleHQpIHsKICAgICBjb250ZXh0LnN0cm9rZSgpOwogfTsKIAotZnVuY3Rpb24g
Q2FudmFzUXVhZHJhdGljUG9pbnQoc3RhZ2UsIGNvb3JkaW5hdGVNYXhpbXVtKSB7Ci0gICAgdmFy
IHBvaW50TWF4aW11bSA9IG5ldyBQb2ludChNYXRoLm1pbihzdGFnZS5zaXplLngsIGNvb3JkaW5h
dGVNYXhpbXVtKSwgTWF0aC5taW4oc3RhZ2Uuc2l6ZS55LCBjb29yZGluYXRlTWF4aW11bSkpOwot
ICAgIHRoaXMuX3BvaW50MSA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKHBvaW50TWF4aW11bSk7Ci0g
ICAgdGhpcy5fcG9pbnQyID0gc3RhZ2UucmFuZG9tUG9zaXRpb24ocG9pbnRNYXhpbXVtKTsKK2Z1
bmN0aW9uIENhbnZhc1F1YWRyYXRpY1BvaW50KHN0YWdlLCBjb29yZGluYXRlTWF4aW11bUZhY3Rv
cikgeworICAgIHZhciBwb2ludE1heGltdW0gPSBzdGFnZS5yYW5kb21Qb3NpdGlvbihuZXcgUG9p
bnQoTWF0aC5taW4oc3RhZ2Uuc2l6ZS54LCBjb29yZGluYXRlTWF4aW11bUZhY3RvciAqIHN0YWdl
LnNpemUueCksIE1hdGgubWluKHN0YWdlLnNpemUueSwgY29vcmRpbmF0ZU1heGltdW1GYWN0b3Ig
KiBzdGFnZS5zaXplLnkpKSk7CisgICAgdGhpcy5fcG9pbnQxID0gc3RhZ2UucmFuZG9tUG9zaXRp
b24ocG9pbnRNYXhpbXVtKS5hZGQobmV3IFBvaW50KChzdGFnZS5zaXplLnggLSBwb2ludE1heGlt
dW0ueCkgLyAyLCAoc3RhZ2Uuc2l6ZS55IC0gcG9pbnRNYXhpbXVtLnkpIC8gMikpOworICAgIHRo
aXMuX3BvaW50MiA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKHBvaW50TWF4aW11bSkuYWRkKG5ldyBQ
b2ludCgoc3RhZ2Uuc2l6ZS54IC0gcG9pbnRNYXhpbXVtLngpIC8gMiwgKHN0YWdlLnNpemUueSAt
IHBvaW50TWF4aW11bS55KSAvIDIpKTsKIH07CiBDYW52YXNRdWFkcmF0aWNQb2ludC5wcm90b3R5
cGUuZHJhdyA9IGZ1bmN0aW9uKGNvbnRleHQpIHsKICAgICBjb250ZXh0LnF1YWRyYXRpY0N1cnZl
VG8odGhpcy5fcG9pbnQxLngsIHRoaXMuX3BvaW50MS55LCB0aGlzLl9wb2ludDIueCwgdGhpcy5f
cG9pbnQyLnkpOwpAQCAtNzYsMTEgKzc3LDExIEBAIENhbnZhc0JlemllclNlZ21lbnQucHJvdG90
eXBlLmRyYXcgPSBmdW5jdGlvbihjb250ZXh0KSB7CiAgICAgY29udGV4dC5zdHJva2UoKTsKIH07
CiAKLWZ1bmN0aW9uIENhbnZhc0JlemllclBvaW50KHN0YWdlLCBjb29yZGluYXRlTWF4aW11bSkg
ewotICAgIHZhciBwb2ludE1heGltdW0gPSBuZXcgUG9pbnQoTWF0aC5taW4oc3RhZ2Uuc2l6ZS54
LCBjb29yZGluYXRlTWF4aW11bSksIE1hdGgubWluKHN0YWdlLnNpemUueSwgY29vcmRpbmF0ZU1h
eGltdW0pKTsKLSAgICB0aGlzLl9wb2ludDEgPSBzdGFnZS5yYW5kb21Qb3NpdGlvbihwb2ludE1h
eGltdW0pOwotICAgIHRoaXMuX3BvaW50MiA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKHBvaW50TWF4
aW11bSk7Ci0gICAgdGhpcy5fcG9pbnQzID0gc3RhZ2UucmFuZG9tUG9zaXRpb24ocG9pbnRNYXhp
bXVtKTsKK2Z1bmN0aW9uIENhbnZhc0JlemllclBvaW50KHN0YWdlLCBjb29yZGluYXRlTWF4aW11
bUZhY3RvcikgeworICAgIHZhciBwb2ludE1heGltdW0gPSBzdGFnZS5yYW5kb21Qb3NpdGlvbihu
ZXcgUG9pbnQoTWF0aC5taW4oc3RhZ2Uuc2l6ZS54LCBjb29yZGluYXRlTWF4aW11bUZhY3RvciAq
IHN0YWdlLnNpemUueCksIE1hdGgubWluKHN0YWdlLnNpemUueSwgY29vcmRpbmF0ZU1heGltdW1G
YWN0b3IgKiBzdGFnZS5zaXplLnkpKSk7CisgICAgdGhpcy5fcG9pbnQxID0gc3RhZ2UucmFuZG9t
UG9zaXRpb24ocG9pbnRNYXhpbXVtKS5hZGQobmV3IFBvaW50KChzdGFnZS5zaXplLnggLSBwb2lu
dE1heGltdW0ueCkgLyAyLCAoc3RhZ2Uuc2l6ZS55IC0gcG9pbnRNYXhpbXVtLnkpIC8gMikpOwor
ICAgIHRoaXMuX3BvaW50MiA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKHBvaW50TWF4aW11bSkuYWRk
KG5ldyBQb2ludCgoc3RhZ2Uuc2l6ZS54IC0gcG9pbnRNYXhpbXVtLngpIC8gMiwgKHN0YWdlLnNp
emUueSAtIHBvaW50TWF4aW11bS55KSAvIDIpKTsKKyAgICB0aGlzLl9wb2ludDMgPSBzdGFnZS5y
YW5kb21Qb3NpdGlvbihwb2ludE1heGltdW0pLmFkZChuZXcgUG9pbnQoKHN0YWdlLnNpemUueCAt
IHBvaW50TWF4aW11bS54KSAvIDIsIChzdGFnZS5zaXplLnkgLSBwb2ludE1heGltdW0ueSkgLyAy
KSk7CiB9OwogQ2FudmFzQmV6aWVyUG9pbnQucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjb250
ZXh0KSB7CiAgICAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKHRoaXMuX3BvaW50MS54LCB0aGlzLl9w
b2ludDEueSwgdGhpcy5fcG9pbnQyLngsIHRoaXMuX3BvaW50Mi55LCB0aGlzLl9wb2ludDMueCwg
dGhpcy5fcG9pbnQzLnkpOwpAQCAtMTg2LDcgKzE4Nyw3IEBAIFNpbXBsZUNhbnZhc1BhdGhTdHJv
a2VTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTaW1wbGVDYW52YXNTdGFnZSwKICAg
ICAgICAgY29udGV4dC5saW5lV2lkdGggPSB0aGlzLnJhbmRvbUludCgxLCAyMCk7CiAgICAgICAg
IGNvbnRleHQuc3Ryb2tlU3R5bGUgPSB0aGlzLnJhbmRvbUNvbG9yKCk7CiAgICAgICAgIGNvbnRl
eHQuYmVnaW5QYXRoKCk7Ci0gICAgICAgIGNvbnRleHQubW92ZVRvKDAsMCk7CisgICAgICAgIGNv
bnRleHQubW92ZVRvKHRoaXMuc2l6ZS54IC8gMiwgdGhpcy5zaXplLnkgLyAyKTsKICAgICAgICAg
dGhpcy5vYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgICAgICAgICBvYmpl
Y3QuZHJhdyhjb250ZXh0KTsKICAgICAgICAgfSk7CkBAIC0yMDUsNyArMjA2LDcgQEAgU2ltcGxl
Q2FudmFzUGF0aEZpbGxTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTaW1wbGVDYW52
YXNTdGFnZSwKICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5zaXplLngsIHRo
aXMuc2l6ZS55KTsKICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLnJhbmRvbUNvbG9y
KCk7CiAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7Ci0gICAgICAgIGNvbnRleHQubW92ZVRv
KDAsMCk7CisgICAgICAgIGNvbnRleHQubW92ZVRvKHRoaXMuc2l6ZS54IC8gMiwgdGhpcy5zaXpl
LnkgLyAyKTsKICAgICAgICAgdGhpcy5vYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7
CiAgICAgICAgICAgICBvYmplY3QuZHJhdyhjb250ZXh0KTsKICAgICAgICAgfSk7CkBAIC0yNjAs
NyArMjYxLDcgQEAgQ2FudmFzTGluZURhc2hTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFz
cyhTaW1wbGVDYW52YXNTdGFnZSwKICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdGhp
cy5zaXplLngsIHRoaXMuc2l6ZS55KTsKICAgICAgICAgY29udGV4dC5saW5lRGFzaE9mZnNldCA9
IHRoaXMuX3N0ZXArKzsKICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTsKLSAgICAgICAgY29u
dGV4dC5tb3ZlVG8oMCwwKTsKKyAgICAgICAgY29udGV4dC5tb3ZlVG8odGhpcy5zaXplLnggLyAy
LCB0aGlzLnNpemUueSAvIDIpOwogICAgICAgICB0aGlzLm9iamVjdHMuZm9yRWFjaChmdW5jdGlv
bihvYmplY3QpIHsKICAgICAgICAgICAgIG9iamVjdC5kcmF3KGNvbnRleHQpOwogICAgICAgICB9
KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUv
cmVzb3VyY2VzL3NpbXBsZS1jYW52YXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLmpzCmluZGV4IDE0YTQ0NTQuLjMz
Y2Y2ZjAgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1w
bGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy5qcwpAQCAtNSwxMSAr
NSwxMSBAQCBVdGlsaXRpZXMuZXh0ZW5kT2JqZWN0KFNpbXBsZUNhbnZhc1N0YWdlLnByb3RvdHlw
ZSwgewogICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0cy5sZW5ndGg7CiAKICAgICAgICAg
aWYgKGNvdW50ID4gMCkgewotICAgICAgICAgICAgLy8gRm9yIHBhdGgtYmFzZWQgdGVzdHMsIHVz
ZSB0aGUgb2JqZWN0IGxlbmd0aCBhcyBhIG1heGltdW0gY29vcmRpbmF0ZSB2YWx1ZQotICAgICAg
ICAgICAgLy8gdG8gbWFrZSBpdCBlYXNpZXIgdG8gc2VlIHdoYXQgdGhlIHRlc3QgaXMgZG9pbmcK
LSAgICAgICAgICAgIHZhciBjb29yZGluYXRlTWF4aW11bSA9IE1hdGgubWF4KHRoaXMub2JqZWN0
cy5sZW5ndGgsIDIwMCk7CisgICAgICAgICAgICAvLyBGb3Igc29tZSB0ZXN0cywgaXQgbWF5IGJl
IGVhc2llciB0byBzZWUgaG93IHdlbGwgdGhlIHRlc3QgaXMgZ29pbmcKKyAgICAgICAgICAgIC8v
IGJ5IGxpbWl0aW5nIHRoZSByYW5nZSBvZiBjb29yZGluYXRlcyBpbiB3aGljaCBuZXcgb2JqZWN0
cyBjYW4gcmVzaWRlCisgICAgICAgICAgICB2YXIgY29vcmRpbmF0ZU1heGltdW1GYWN0b3IgPSBN
YXRoLm1pbih0aGlzLm9iamVjdHMubGVuZ3RoLCBNYXRoLm1pbih0aGlzLnNpemUueCwgdGhpcy5z
aXplLnkpKSAvIE1hdGgubWluKHRoaXMuc2l6ZS54LCB0aGlzLnNpemUueSk7CiAgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgICAgICAgICAgdGhpcy5v
YmplY3RzLnB1c2gobmV3IHRoaXMuX2NhbnZhc09iamVjdCh0aGlzLCBjb29yZGluYXRlTWF4aW11
bSkpOworICAgICAgICAgICAgICAgIHRoaXMub2JqZWN0cy5wdXNoKG5ldyB0aGlzLl9jYW52YXNP
YmplY3QodGhpcywgY29vcmRpbmF0ZU1heGltdW1GYWN0b3IpKTsKICAgICAgICAgICAgIHJldHVy
biB0aGlzLm9iamVjdHMubGVuZ3RoOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWM2
MjljZC4uMTBmYjY5OSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTUsNiArNSwyNSBAQAogCiAgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIFVwZGF0ZSB0aGUgc2ltcGxl
IGNhbnZhcyB0ZXN0cy4gRm9yIHRoZSBwYXRocywgc3RhcnQgZnJvbSB0aGUgY2VudGVyIGluc3Rl
YWQgb2YgdGhlCisgICAgICAgIHRvcC1sZWZ0IGNvcm5lci4gSW5zdGVhZCBvZiB1c2luZyBhIGNv
b3JkaW5hdGUgbGltaXQsIHVzZSBhIGNhbm9uaXplZCBmYWN0b3IsIGFuZAorICAgICAgICB1c2Ug
dGhhdCBhbG9uZyBib3RoIHRoZSB4IGFuZCB5IGF4ZXMsIHNvIHRoYXQgbW9yZSBjYXBhYmxlIHRl
c3RzIHVzZSBtb3JlIG9mIHRoZQorICAgICAgICBjYW52YXMuCisKKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy1wYXRocy5qczoKKyAgICAg
ICAgKENhbnZhc0xpbmVQb2ludCk6IFJld3JpdGUgdG8gdXNlIHRoZSBjb29yZGluYXRlIG1heGlt
dW0gZmFjdG9yLgorICAgICAgICAoQ2FudmFzUXVhZHJhdGljUG9pbnQpOiBEaXR0by4KKyAgICAg
ICAgKENhbnZhc0JlemllclBvaW50KTogRGl0dG8uCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMuanM6CisgICAgICAgICh0dW5lKTogQ2Fs
Y3VsYXRlIGEgZmFjdG9yIGluc3RlYWQgb2YgYSBtYXhpbXVtIGNvb3JkaW5hdGUuCisKKzIwMTUt
MTItMjcgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IHRo
ZSB0ZXN0IGhhcm5lc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MjU2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAg
ICAgICAgIEFsbCBvZiB0aGUgYmVuY2htYXJrcyB1c2UgdGhlIGRlZmF1bHQgQW5pbWF0b3IoKS4g
RG9uJ3QgcmVxdWlyZSBuZXcgdGVzdHMKICAgICAgICAgdG8gcGFzcyBhIG5ldyBpbnN0YW5jZSwg
YW5kIGluc3RlYWQganVzdCBtYWtlIG9uZSBpbiB0aGUgQmVuY2htYXJrIGNvbnN0cnVjdG9yLgog
Ci0tIAoyLjUuNCAoQXBwbGUgR2l0LTYxKQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>