<?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>176581</bug_id>
          
          <creation_ts>2017-09-07 20:57:59 -0700</creation_ts>
          <short_desc>WSL should support while loops</short_desc>
          <delta_ts>2018-10-13 16:53:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          <blocked>176199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1346702</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-07 20:57:59 -0700</bug_when>
    <thetext>WSL should support while loops</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346703</commentid>
    <comment_count>1</comment_count>
      <attachid>320230</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-07 20:58:36 -0700</bug_when>
    <thetext>Created attachment 320230
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346738</commentid>
    <comment_count>2</comment_count>
      <attachid>320246</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-08 00:02:01 -0700</bug_when>
    <thetext>Created attachment 320246
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346739</commentid>
    <comment_count>3</comment_count>
      <attachid>320246</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-08 00:03:17 -0700</bug_when>
    <thetext>Comment on attachment 320246
WIP

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

&gt; Tools/WebGPUShadingLanguageRI/Node.js:40
&gt; +        //memoTable.set(this, returnValue);

Because Evaluator is a Visitor, the memo table doesn&apos;t work when evaluating, because while loops&apos; conditions need to actually be evaluated each time. Fil: Do you know a way to solve this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346882</commentid>
    <comment_count>4</comment_count>
      <attachid>320285</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-08 11:25:20 -0700</bug_when>
    <thetext>Created attachment 320285
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347317</commentid>
    <comment_count>5</comment_count>
      <attachid>320406</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-10 16:51:18 -0700</bug_when>
    <thetext>Created attachment 320406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347319</commentid>
    <comment_count>6</comment_count>
      <attachid>320408</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-10 17:17:47 -0700</bug_when>
    <thetext>Created attachment 320408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347326</commentid>
    <comment_count>7</comment_count>
      <attachid>320409</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-10 17:37:05 -0700</bug_when>
    <thetext>Created attachment 320409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347329</commentid>
    <comment_count>8</comment_count>
      <attachid>320409</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-10 17:57:07 -0700</bug_when>
    <thetext>Comment on attachment 320409
Patch

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

Nice!  R=me.

&gt; Tools/WebGPUShadingLanguageRI/Break.js:38
&gt; +        return &quot;Break&quot;;

Lowercase is better since that’s what te language does.

&gt; Tools/WebGPUShadingLanguageRI/Checker.js:245
&gt; +            throw new Error(&quot;Trying to negate something with no type: &quot; + node.conditional);

I don’t think negation is what is going on here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347332</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-10 18:05:25 -0700</bug_when>
    <thetext>Committed r221842: &lt;http://trac.webkit.org/changeset/221842&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348634</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-13 21:15:21 -0700</bug_when>
    <thetext>*** Bug 176263 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353529</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:37:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693608&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468945</commentid>
    <comment_count>12</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 16:53:55 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/146</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320230</attachid>
            <date>2017-09-07 20:58:36 -0700</date>
            <delta_ts>2017-09-08 00:01:59 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-176581-20170907205835.patch</filename>
            <type>text/plain</type>
            <size>17346</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNzc2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmYzMWRlNDY4ZjM3M2Q3ODU4NGMyODgwYWNlYWI5OGI5
MGMxZjc0ZC4uZTMyMTIwMmU0OGQ1OTgwZTA2YzMyN2YwYTZmOWU0ZTcwNThmM2JjZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4
IEBACiAyMDE3LTA5LTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKKyAgICAgICAgV1NMIHNob3VsZCBzdXBwb3J0IHdoaWxlIGxvb3BzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY1ODEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpz
OgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0V2YWx1YXRvci5qczoKKyAgICAg
ICAgKEV2YWx1YXRvci5wcm90b3R5cGUudmlzaXRXaGlsZUxvb3ApOgorICAgICAgICAqIFdlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzKToK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qczoKKyAgICAgICAgKExl
eGVyLnByb3RvdHlwZS5uZXh0KToKKyAgICAgICAgKExleGVyKToKKyAgICAgICAgKiBXZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanM6CisgICAgICAgIChOYW1lUmVzb2x2ZXIu
cHJvdG90eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9Ob2RlLmpzOgorICAgICAgICAoTm9kZS5wcm90b3R5cGUudmlzaXQpOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAgICAgICAocGFyc2VCcmVhayk6
CisgICAgICAgIChwYXJzZUNvbnRpbnVlKToKKyAgICAgICAgKHBhcnNlV2hpbGUpOgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzOgorICAgICAgICAoUmV3cml0
ZXIucHJvdG90eXBlLnZpc2l0Q29udGludWUpOgorICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBl
LnZpc2l0QnJlYWspOgorICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZpc2l0V2hpbGVMb29w
KToKKyAgICAgICAgKFJld3JpdGVyKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TdGFuZGFyZExpYnJhcnlQcm9sb2d1ZS5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9UZXN0Lmh0bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVz
dC5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzOgorICAg
ICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRXaGlsZUxvb3ApOgorICAgICAgICAoVmlzaXRv
ci5wcm90b3R5cGUudmlzaXRDb250aW51ZSk6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52
aXNpdEJyZWFrKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XaGlsZUxvb3Au
anM6IENvcGllZCBmcm9tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGli
cmFyeVByb2xvZ3VlLmpzLgorICAgICAgICAoV2hpbGVMb29wKToKKyAgICAgICAgKFdoaWxlTG9v
cC5wcm90b3R5cGUuZ2V0IG9yaWdpbik6CisgICAgICAgIChXaGlsZUxvb3AucHJvdG90eXBlLmdl
dCBjb25kaXRpb25hbCk6CisgICAgICAgIChXaGlsZUxvb3AucHJvdG90eXBlLmdldCBib2R5KToK
KyAgICAgICAgKFdoaWxlTG9vcC5wcm90b3R5cGUudG9TdHJpbmcpOgorCisyMDE3LTA5LTA3ICBN
eWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKICAgICAgICAgQWRkICJp
ZiIgc3RhdGVtZW50cyB0byBXU0wKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NjI5NAogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9BbGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5k
ZXggNjBiNzVmZDMzN2MyN2Y2YmNiYjVjN2Y5ZmFkZGYxOGIyZWNjZTVmYS4uMzhmYTMxMzYwMGVh
MDNjZThhY2YwMzQ4ZmE1Mzc5ODJhOTFkYTcwZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvQWxsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0FsbC5qcwpAQCAtMzksNiArMzksNyBAQCBsb2FkKCJBcnJheVR5cGUuanMiKTsKIGxvYWQoIkFz
c2lnbm1lbnQuanMiKTsKIGxvYWQoIkJsb2NrLmpzIik7CiBsb2FkKCJCb29sTGl0ZXJhbC5qcyIp
OworbG9hZCgiQnJlYWsuanMiKTsKIGxvYWQoIkNhbGxBc3NpZ25tZW50LmpzIik7CiBsb2FkKCJD
YWxsRXhwcmVzc2lvbi5qcyIpOwogbG9hZCgiQ2FsbEZ1bmN0aW9uLmpzIik7CkBAIC01MSw2ICs1
Miw3IEBAIGxvYWQoIkNoZWNrVW5yZWFjaGFibGVDb2RlLmpzIik7CiBsb2FkKCJDaGVja2VyLmpz
Iik7CiBsb2FkKCJDb21tYUV4cHJlc3Npb24uanMiKTsKIGxvYWQoIkNvbnN0ZXhwclR5cGVQYXJh
bWV0ZXIuanMiKTsKK2xvYWQoIkNvbnRpbnVlLmpzIik7CiBsb2FkKCJEZXJlZmVyZW5jZUV4cHJl
c3Npb24uanMiKTsKIGxvYWQoIkRvdEV4cHJlc3Npb24uanMiKTsKIGxvYWQoIkVBcnJheVJlZi5q
cyIpOwpAQCAtMTIyLDMgKzEyNCw0IEBAIGxvYWQoIlZpc2l0aW5nU2V0LmpzIik7CiBsb2FkKCJX
U3ludGF4RXJyb3IuanMiKTsKIGxvYWQoIldUcmFwRXJyb3IuanMiKTsKIGxvYWQoIldUeXBlRXJy
b3IuanMiKTsKK2xvYWQoIldoaWxlTG9vcC5qcyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0NoZWNrZXIuanMKaW5kZXggYjY2ZDk0YzIyNWQzN2E1MzA3ZmUyMjRhOGM3ZDk4OTAxMjZl
ZWMzMC4uNWMxMDIxNjNjZTgzMWI4MTQwMDQ0ODkzMGQ5ZTg4MmU1MDBjYjFiOSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcworKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCkBAIC0yMzcsNiArMjM3LDE2IEBAIGNs
YXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgaWYgKG5vZGUuZWxzZUJvZHkp
CiAgICAgICAgICAgICBub2RlLmVsc2VCb2R5LnZpc2l0KHRoaXMpOwogICAgIH0KKworICAgIHZp
c2l0V2hpbGVMb29wKG5vZGUpCisgICAgeworICAgICAgICBsZXQgY29uZGl0aW9uYWxSZXN1bHRU
eXBlID0gbm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKTsKKyAgICAgICAgaWYgKCFjb25kaXRp
b25hbFJlc3VsdFR5cGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRyeWluZyB0byBu
ZWdhdGUgc29tZXRoaW5nIHdpdGggbm8gdHlwZTogIiArIG5vZGUuY29uZGl0aW9uYWwpOworICAg
ICAgICBpZiAoIWNvbmRpdGlvbmFsUmVzdWx0VHlwZS5lcXVhbHModGhpcy5fcHJvZ3JhbS5pbnRy
aW5zaWNzLmJvb2wpKQorICAgICAgICAgICAgdGhyb3cgbmV3IFdFcnJvcigiVHJ5aW5nIHRvIG5l
Z2F0ZSBzb21ldGhpbmcgdGhhdCBpc24ndCBhIGJvb2w6ICIgKyBub2RlLmNvbmRpdGlvbmFsKTsK
KyAgICAgICAgbm9kZS5ib2R5LnZpc2l0KHRoaXMpOworICAgIH0KICAgICAKICAgICB2aXNpdENv
bW1hRXhwcmVzc2lvbihub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0V2YWx1YXRvci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0V2YWx1YXRvci5qcwppbmRleCA3NzIxOWU2MzM5NzRhMTBkNjEwMzRiMjNjM2M4ZGU1NTljOTNh
ZjM5Li4zZDUxMWU0NmI5Y2QwN2EzYzcwMjAxYjgxNTMyZjBkNGVmMTJmNWViIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzCkBAIC0xNTgsNiArMTU4LDEyIEBA
IGNsYXNzIEV2YWx1YXRvciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBlbHNlIGlmIChub2Rl
LmVsc2VCb2R5KQogICAgICAgICAgICAgcmV0dXJuIG5vZGUuZWxzZUJvZHkudmlzaXQodGhpcyk7
CiAgICAgfQorCisgICAgdmlzaXRXaGlsZUxvb3Aobm9kZSkKKyAgICB7CisgICAgICAgIHdoaWxl
IChub2RlLmNvbmRpdGlvbmFsLnZpc2l0KHRoaXMpLmxvYWRWYWx1ZSgpKQorICAgICAgICAgICAg
bm9kZS5ib2R5LnZpc2l0KHRoaXMpOworICAgIH0KICAgICAKICAgICB2aXNpdENhbGxFeHByZXNz
aW9uKG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvSW50cmluc2ljcy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNp
Y3MuanMKaW5kZXggYmNhNDA3MzdiNDUyNGIzZGZkMzU4NGM2YzM4NDRkMDZhZWE2MjlhZS4uMWJk
ODIxZDVhNjNlOGQ2ZTMwNzY0ZTE3MDlkMDc1NDlhYjczZDgyMCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcworKysgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCkBAIC0xNzgsNiArMTc4LDYyIEBAIGNsYXNz
IEludHJpbnNpY3MgewogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1
ZSgpID09IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAKKyAg
ICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcjw8
PihpbnQsaW50KSIsCisgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAgICBmdW5j
LmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CisgICAgICAgICAgICAgICAgICAg
IEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPCByaWdodC5sb2FkVmFsdWUoKSk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAi
bmF0aXZlIGJvb2wgb3BlcmF0b3I8PD4odWludCx1aW50KSIsCisgICAgICAgICAgICBmdW5jID0+
IHsKKyAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0p
ID0+CisgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPCByaWdo
dC5sb2FkVmFsdWUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMu
X21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8PTw+KGludCxpbnQp
IiwKKyAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KKyAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3go
bGVmdC5sb2FkVmFsdWUoKSA8PSByaWdodC5sb2FkVmFsdWUoKSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIGJv
b2wgb3BlcmF0b3I8PTw+KHVpbnQsdWludCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgorICAg
ICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDw9IHJpZ2h0LmxvYWRW
YWx1ZSgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgdGhpcy5fbWFwLnNl
dCgKKyAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj48PihpbnQsaW50KSIsCisgICAg
ICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KFtsZWZ0LCByaWdodF0pID0+CisgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9h
ZFZhbHVlKCkgPiByaWdodC5sb2FkVmFsdWUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
CisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0
b3I+PD4odWludCx1aW50KSIsCisgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CisgICAgICAgICAgICAg
ICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPiByaWdodC5sb2FkVmFsdWUoKSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAg
ICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PTw+KGludCxpbnQpIiwKKyAgICAgICAgICAgIGZ1
bmMgPT4geworICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJp
Z2h0XSkgPT4KKyAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+
PSByaWdodC5sb2FkVmFsdWUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAg
IHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PTw+KHVp
bnQsdWludCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgorICAgICAgICAgICAgICAgICAgICBF
UHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID49IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAKICAgICAgICAgbGV0IGFycmF5RWxlbWVudFB0ciA9IGZ1bmMgPT4g
ewogICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbcmVmLCBpbmRleF0sIG5vZGUp
ID0+IHsKICAgICAgICAgICAgICAgICByZWYgPSByZWYubG9hZFZhbHVlKCk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qcyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzCmluZGV4IDk0ZTAxNDEwMzM4NmJiODc3NDg3ZTgyNzM0
OWRhZmVlNTgyMGNhNTQuLmZhMDhlN2VlZDA4ZjJhM2JhYThjOWViYmE4Y2NlNTM4YjJhYTVjZTIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzCisrKyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzCkBAIC0xMTgsNyArMTE4LDcg
QEAgY2xhc3MgTGV4ZXIgewogICAgICAgICBpZiAoL14oWzAtOV0qXC5bMC05XSspfChbMC05XStc
LlswLTldKikvLnRlc3QocmVsZXZhbnRUZXh0KSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQo
ImRvdWJsZUxpdGVyYWwiKTsKICAgICAgICAgCi0gICAgICAgIGlmICgvXi0+fD0+fDw9fD09fCE9
fFwrPXwtPXxcKj18XC89fCU9fF49fFx8PXwmPXwoW3t9KClcW1xdPzo9KypcLywuJSF+XiZ8PD5A
Oy1dKS8udGVzdChyZWxldmFudFRleHQpKQorICAgICAgICBpZiAoL14tPnw+PXw8PXw9PXwhPXxc
Kz18LT18XCo9fFwvPXwlPXxePXxcfD18Jj18KFt7fSgpXFtcXT86PSsqXC8sLiUhfl4mfDw+QDst
XSkvLnRlc3QocmVsZXZhbnRUZXh0KSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQoInB1bmN0
dWF0aW9uIik7CiAgICAgICAgIAogICAgICAgICBsZXQgcmVtYWluaW5nID0gcmVsZXZhbnRUZXh0
LnN1YnN0cmluZygwLCAyMCkuc3BsaXQoL1xzLylbMF07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMKaW5kZXggMTE2ZTMxODI4NTJkODRjNmU3ZGQ2Y2E3
MzJlN2FjOWY5OWEyZWQ5ZC4uNjA3ZmM1YzFiNjg3YmJiOTc4NGJhNjAyZmI0NzBkYWU0ZmU0Mzg4
MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZVJlc29sdmVy
LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZlci5qcwpA
QCAtOTksNiArOTksMTMgQEAgY2xhc3MgTmFtZVJlc29sdmVyIGV4dGVuZHMgVmlzaXRvciB7CiAg
ICAgICAgIGlmIChub2RlLmVsc2VCb2R5KQogICAgICAgICAgICAgbm9kZS5lbHNlQm9keS52aXNp
dChuZXcgTmFtZVJlc29sdmVyKG5ldyBOYW1lQ29udGV4dCh0aGlzLl9uYW1lQ29udGV4dCkpKTsK
ICAgICB9CisKKyAgICB2aXNpdFdoaWxlTG9vcChub2RlKQorICAgIHsKKyAgICAgICAgbm9kZS5j
b25kaXRpb25hbC52aXNpdCh0aGlzKTsKKyAgICAgICAgLy8gSWYgc3RhdGVtZW50J3MgYm9kaWVz
IG1pZ2h0IG5vdCBiZSBCbG9ja3MsIHNvIHdlIG5lZWQgdG8gZXhwbGljaXRseSBnaXZlIHRoZW0g
YSBuZXcgY29udGV4dC4KKyAgICAgICAgbm9kZS5ib2R5LnZpc2l0KG5ldyBOYW1lUmVzb2x2ZXIo
bmV3IE5hbWVDb250ZXh0KHRoaXMuX25hbWVDb250ZXh0KSkpOworICAgIH0KICAgICAKICAgICB2
aXNpdFByb3RvY29sRGVjbChub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL05vZGUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9O
b2RlLmpzCmluZGV4IDA0ZTM4ODk4Yjk5NDY2MDc0ZmJlOGEwYTBlYTdjNGNkOWU1M2ZjNmEuLmMx
MjBkNzIzYzRiMzQ5ZDNmM2NhODVkNjY4Mjk1YTM4MjAwZWQyYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05vZGUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvTm9kZS5qcwpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBOb2RlIHsKICAgICAg
ICAgbGV0IHJldHVyblZhbHVlID0gdmlzaXRGdW5jLmNhbGwodmlzaXRvciwgdGhpcyk7CiAgICAg
ICAgIGlmICgicmV0dXJuVmFsdWUiIGluIHZpc2l0b3IpCiAgICAgICAgICAgICByZXR1cm5WYWx1
ZSA9IHZpc2l0b3IucmV0dXJuVmFsdWU7Ci0gICAgICAgIG1lbW9UYWJsZS5zZXQodGhpcywgcmV0
dXJuVmFsdWUpOworICAgICAgICAvL21lbW9UYWJsZS5zZXQodGhpcywgcmV0dXJuVmFsdWUpOwog
ICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9QYXJzZS5qcwppbmRleCBhNjFhNDhjYzljMTZjMzVkZjE1Yjc1MjkzNmZhNjg1
ODk4NjBlMjFhLi4xYjg3N2Q0MTQ3NTVjMzM4OWRmZjM2MGFlZDQ5YzgwNjlkZTFhMGM2IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwpAQCAtNTM1LDYgKzUzNSwyMCBAQCBm
dW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAg
ICAgICAgIGNvbnN1bWUoIjsiKTsKICAgICAgICAgcmV0dXJuIG5ldyBSZXR1cm4ob3JpZ2luLCBl
eHByZXNzaW9uKTsKICAgICB9CisgICAgCisgICAgZnVuY3Rpb24gcGFyc2VCcmVhaygpCisgICAg
eworICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgiYnJlYWsiKTsKKyAgICAgICAgY29uc3Vt
ZSgiOyIpOworICAgICAgICByZXR1cm4gbmV3IEJyZWFrKG9yaWdpbik7CisgICAgfQorICAgIAor
ICAgIGZ1bmN0aW9uIHBhcnNlQ29udGludWUoKQorICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9
IGNvbnN1bWUoImNvbnRpbnVlIik7CisgICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgcmV0
dXJuIG5ldyBDb250aW51ZShvcmlnaW4pOworICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlSWZT
dGF0ZW1lbnQoKQogICAgIHsKQEAgLTU0OCw2ICs1NjIsMTYgQEAgZnVuY3Rpb24gcGFyc2UocHJv
Z3JhbSwgb3JpZ2luLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgZWxzZUJv
ZHkgPSBwYXJzZVN0YXRlbWVudCgpOwogICAgICAgICByZXR1cm4gbmV3IElmU3RhdGVtZW50KG9y
aWdpbiwgbmV3IENhc3RFeHByZXNzaW9uKGNvbmRpdGlvbmFsLm9yaWdpbiwgbmV3IFR5cGVSZWYo
Y29uZGl0aW9uYWwub3JpZ2luLCAiYm9vbCIsIFtdKSwgW10sIFtjb25kaXRpb25hbF0pLCBib2R5
LCBlbHNlQm9keSk7CiAgICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VXaGlsZSgpCisgICAgewor
ICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgid2hpbGUiKTsKKyAgICAgICAgY29uc3VtZSgi
KCIpOworICAgICAgICBsZXQgY29uZGl0aW9uYWwgPSBwYXJzZUV4cHJlc3Npb24oKTsKKyAgICAg
ICAgY29uc3VtZSgiKSIpOworICAgICAgICBsZXQgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7Cisg
ICAgICAgIHJldHVybiBuZXcgV2hpbGVMb29wKG9yaWdpbiwgbmV3IENhc3RFeHByZXNzaW9uKGNv
bmRpdGlvbmFsLm9yaWdpbiwgbmV3IFR5cGVSZWYoY29uZGl0aW9uYWwub3JpZ2luLCAiYm9vbCIs
IFtdKSwgW10sIFtjb25kaXRpb25hbF0pLCBib2R5KTsKKyAgICB9CiAgICAgCiAgICAgZnVuY3Rp
b24gcGFyc2VWYXJpYWJsZURlY2xzKCkKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1Jld3JpdGVyLmpzCmluZGV4IDk1ODgxYWJlYWNhNzkxZmE4Mjc1ZmViZjkwNDRmZGVmZTQ1
MmQzOTEuLmFkN2EwMGNiNTJmMWM0MGY4MDAzOTM3MGIwYzgxM2NmYjZlZTY1ZDYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzCisrKyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzCkBAIC0xOTksNiArMTk5LDE2IEBA
IGNsYXNzIFJld3JpdGVyIGV4dGVuZHMgVmlzaXRvckJhc2UgewogICAgICAgICByZXR1cm4gbmV3
IFJldHVybihub2RlLm9yaWdpbiwgbm9kZS52YWx1ZSA/IG5vZGUudmFsdWUudmlzaXQodGhpcykg
OiBudWxsKTsKICAgICB9CiAgICAgCisgICAgdmlzaXRDb250aW51ZShub2RlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBDb250aW51ZShub2RlLm9yaWdpbik7CisgICAgfQorICAgIAorICAg
IHZpc2l0QnJlYWsobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgQnJlYWsobm9kZS5v
cmlnaW4pOworICAgIH0KKyAgICAKICAgICB2aXNpdEludExpdGVyYWwobm9kZSkKICAgICB7CiAg
ICAgICAgIGxldCByZXN1bHQgPSBuZXcgSW50TGl0ZXJhbChub2RlLm9yaWdpbiwgbm9kZS52YWx1
ZSk7CkBAIC0yODgsNSArMjk4LDEwIEBAIGNsYXNzIFJld3JpdGVyIGV4dGVuZHMgVmlzaXRvckJh
c2UgewogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBJZlN0YXRlbWVudChub2RlLm9yaWdpbiwg
bm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKSwgbm9kZS5ib2R5LnZpc2l0KHRoaXMpLCBub2Rl
LmVsc2VCb2R5ID8gbm9kZS5lbHNlQm9keS52aXNpdCh0aGlzKSA6IHVuZGVmaW5lZCk7CiAgICAg
fQorCisgICAgdmlzaXRXaGlsZUxvb3Aobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcg
V2hpbGVMb29wKG5vZGUub3JpZ2luLCBub2RlLmNvbmRpdGlvbmFsLnZpc2l0KHRoaXMpLCBub2Rl
LmJvZHkudmlzaXQodGhpcykpOworICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5UHJvbG9ndWUuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnlQcm9sb2d1ZS5qcwppbmRleCAwMTM2
MzE2YTllODJlNzVlNzVhMWVlZmJiZTJiOThlYTIyODc5M2JhLi5mNGVkZjM3NTE5ZmY0MjBlOWI4
YmVjYjJlZjBhOTI2ZTZmNmI3YzE5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TdGFuZGFyZExpYnJhcnlQcm9sb2d1ZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnlQcm9sb2d1ZS5qcwpAQCAtNTIsNiArNTIsMTQg
QEAgbmF0aXZlIHVpbnQgb3BlcmF0b3IvKHVpbnQsIHVpbnQpOwogbmF0aXZlIGJvb2wgb3BlcmF0
b3I9PShpbnQsIGludCk7CiBuYXRpdmUgYm9vbCBvcGVyYXRvcj09KHVpbnQsIHVpbnQpOwogbmF0
aXZlIGJvb2wgb3BlcmF0b3I9PShib29sLCBib29sKTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPChp
bnQsIGludCk7CituYXRpdmUgYm9vbCBvcGVyYXRvcjwodWludCwgdWludCk7CituYXRpdmUgYm9v
bCBvcGVyYXRvcjw9KGludCwgaW50KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPD0odWludCwgdWlu
dCk7CituYXRpdmUgYm9vbCBvcGVyYXRvcj4oaW50LCBpbnQpOworbmF0aXZlIGJvb2wgb3BlcmF0
b3I+KHVpbnQsIHVpbnQpOworbmF0aXZlIGJvb2wgb3BlcmF0b3I+PShpbnQsIGludCk7CituYXRp
dmUgYm9vbCBvcGVyYXRvcj49KHVpbnQsIHVpbnQpOwogCiBwcm90b2NvbCBFcXVhdGFibGUgewog
ICAgIGJvb2wgb3BlcmF0b3I9PShFcXVhdGFibGUsIEVxdWF0YWJsZSk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKaW5kZXggYWJmZjk2YWY3MjlkNTZhMDYzYTI1YThkNmU2
MjFmZTRiYmYzOWU5NS4uOTc3NjdkZTg3ZTk4MzIzMmRhYzBlYmJhYzJjNTJmN2Q4ZDc2OTlhYyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCisrKyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbApAQCAtMTUsNiArMTUsNyBA
QAogPHNjcmlwdCBzcmM9IkFzc2lnbm1lbnQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkJs
b2NrLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCb29sTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iQnJlYWsuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNhbGxBc3Np
Z25tZW50LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDYWxsRXhwcmVzc2lvbi5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2FsbEZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KQEAgLTI3LDYg
KzI4LDcgQEAKIDxzY3JpcHQgc3JjPSJDaGVja2VyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJDb21tYUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNvbnN0ZXhwclR5
cGVQYXJhbWV0ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNvbnRpbnVlLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJEb3RFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJEZXJlZmVyZW5jZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkVB
cnJheVJlZi5qcyI+PC9zY3JpcHQ+CkBAIC05OCw2ICsxMDAsNyBAQAogPHNjcmlwdCBzcmM9IldT
eW50YXhFcnJvci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iV1RyYXBFcnJvci5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iV1R5cGVFcnJvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iV2hpbGVMb29wLmpzIj48L3NjcmlwdD4KIAogPHNjcmlwdCBzcmM9IlRlc3QuanMiPjwvc2Ny
aXB0PgogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwppbmRleCA3YWY3NDRmNDZl
NDk3ZDBiYWZhNjVhNTUzNmNlOTY3YTQyMDY5NjliLi4yZDllMzQ5OTU3NWYxZjIyNzM0MWIyODAx
M2NmOGM2ZDVmMThkOTk1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UZXN0LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKQEAg
LTEzMzYsNiArMTMzNiwxOSBAQCBmdW5jdGlvbiBURVNUX3JldHVybklmKCkKICAgICAgICAgKGUp
ID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKIH0KIAorZnVuY3Rpb24gVEVTVF9zaW1wbGVX
aGlsZSgpCit7CisgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICBpbnQgZm9vKGlu
dCB4KQorICAgICAgICB7CisgICAgICAgICAgICB3aGlsZSAoeCA8IDEzKQorICAgICAgICAgICAg
ICAgIHggPSB4ICogMjsKKyAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICB9CisgICAgYCk7
CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwg
W21ha2VJbnQocHJvZ3JhbSwgMSldKSwgMTYpOworfQorCiBmdW5jdGlvbiBURVNUX3Byb3RvY29s
TW9ub1BvbHlTaWdEb3VibGVQb2x5RGVmRXhwbGljaXQoKQogewogICAgIGNoZWNrRmFpbCgKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCmluZGV4IGQ2ZTg2NjlmNTViOGM2
NjU1NTgxZGIwYTMyMTM3M2Y1MThmYmE0MjEuLjQyYWNjZGEyMzJjMTg3Y2RkYTU4MzA2YTllYjdl
YzZlNjA3MGViYmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zp
c2l0b3IuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwpA
QCAtMjE1LDEyICsyMTUsMjYgQEAgY2xhc3MgVmlzaXRvciBleHRlbmRzIFZpc2l0b3JCYXNlIHsK
ICAgICAgICAgaWYgKG5vZGUuZWxzZUJvZHkpCiAgICAgICAgICAgICBub2RlLmVsc2VCb2R5LnZp
c2l0KHRoaXMpOwogICAgIH0KKyAgICAKKyAgICB2aXNpdFdoaWxlTG9vcChub2RlKQorICAgIHsK
KyAgICAgICAgbm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKTsKKyAgICAgICAgbm9kZS5ib2R5
LnZpc2l0KHRoaXMpOworICAgIH0KIAogICAgIHZpc2l0UmV0dXJuKG5vZGUpCiAgICAgewogICAg
ICAgICBpZiAobm9kZS52YWx1ZSkKICAgICAgICAgICAgIG5vZGUudmFsdWUudmlzaXQodGhpcyk7
CiAgICAgfQorCisgICAgdmlzaXRDb250aW51ZShub2RlKQorICAgIHsKKyAgICB9CisKKyAgICB2
aXNpdEJyZWFrKG5vZGUpCisgICAgeworICAgIH0KICAgICAKICAgICB2aXNpdEludExpdGVyYWwo
bm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9X
aGlsZUxvb3AuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XaGlsZUxvb3AuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGMxOWMzNGU1YTc3Nzk0ZjU2ZjlkNTc2ZDg4OTdkMmVlNDM5ZTc5YQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1doaWxlTG9vcC5q
cwpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIFdoaWxlTG9vcCBleHRlbmRzIE5vZGUgewor
ICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgY29uZGl0aW9uYWwsIGJvZHkpCisgICAgeworICAgICAg
ICBzdXBlcigpOworICAgICAgICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47CisgICAgICAgIHRoaXMu
X2NvbmRpdGlvbmFsID0gY29uZGl0aW9uYWw7CisgICAgICAgIHRoaXMuX2JvZHkgPSBib2R5Owor
ICAgIH0KKworICAgIGdldCBvcmlnaW4oKSB7IHJldHVybiB0aGlzLl9vcmlnaW47IH0KKyAgICBn
ZXQgY29uZGl0aW9uYWwoKSB7IHJldHVybiB0aGlzLl9jb25kaXRpb25hbDsgfQorICAgIGdldCBi
b2R5KCkgeyByZXR1cm4gdGhpcy5fYm9keTsgfQorCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICJ3aGlsZSAoIiArIHRoaXMuY29uZGl0aW9uYWwgKyAiKSAiICsgdGhpcy5i
b2R5OworICAgIH0KK307CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320246</attachid>
            <date>2017-09-08 00:02:01 -0700</date>
            <delta_ts>2017-09-08 11:25:20 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-176581-20170908000200.patch</filename>
            <type>text/plain</type>
            <size>19682</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNzc2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmYzMWRlNDY4ZjM3M2Q3ODU4NGMyODgwYWNlYWI5OGI5
MGMxZjc0ZC4uZTMyMTIwMmU0OGQ1OTgwZTA2YzMyN2YwYTZmOWU0ZTcwNThmM2JjZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4
IEBACiAyMDE3LTA5LTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKKyAgICAgICAgV1NMIHNob3VsZCBzdXBwb3J0IHdoaWxlIGxvb3BzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY1ODEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpz
OgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0V2YWx1YXRvci5qczoKKyAgICAg
ICAgKEV2YWx1YXRvci5wcm90b3R5cGUudmlzaXRXaGlsZUxvb3ApOgorICAgICAgICAqIFdlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzKToK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qczoKKyAgICAgICAgKExl
eGVyLnByb3RvdHlwZS5uZXh0KToKKyAgICAgICAgKExleGVyKToKKyAgICAgICAgKiBXZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanM6CisgICAgICAgIChOYW1lUmVzb2x2ZXIu
cHJvdG90eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9Ob2RlLmpzOgorICAgICAgICAoTm9kZS5wcm90b3R5cGUudmlzaXQpOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAgICAgICAocGFyc2VCcmVhayk6
CisgICAgICAgIChwYXJzZUNvbnRpbnVlKToKKyAgICAgICAgKHBhcnNlV2hpbGUpOgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzOgorICAgICAgICAoUmV3cml0
ZXIucHJvdG90eXBlLnZpc2l0Q29udGludWUpOgorICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBl
LnZpc2l0QnJlYWspOgorICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZpc2l0V2hpbGVMb29w
KToKKyAgICAgICAgKFJld3JpdGVyKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TdGFuZGFyZExpYnJhcnlQcm9sb2d1ZS5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9UZXN0Lmh0bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVz
dC5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzOgorICAg
ICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRXaGlsZUxvb3ApOgorICAgICAgICAoVmlzaXRv
ci5wcm90b3R5cGUudmlzaXRDb250aW51ZSk6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52
aXNpdEJyZWFrKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XaGlsZUxvb3Au
anM6IENvcGllZCBmcm9tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGli
cmFyeVByb2xvZ3VlLmpzLgorICAgICAgICAoV2hpbGVMb29wKToKKyAgICAgICAgKFdoaWxlTG9v
cC5wcm90b3R5cGUuZ2V0IG9yaWdpbik6CisgICAgICAgIChXaGlsZUxvb3AucHJvdG90eXBlLmdl
dCBjb25kaXRpb25hbCk6CisgICAgICAgIChXaGlsZUxvb3AucHJvdG90eXBlLmdldCBib2R5KToK
KyAgICAgICAgKFdoaWxlTG9vcC5wcm90b3R5cGUudG9TdHJpbmcpOgorCisyMDE3LTA5LTA3ICBN
eWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKICAgICAgICAgQWRkICJp
ZiIgc3RhdGVtZW50cyB0byBXU0wKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NjI5NAogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9BbGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5k
ZXggNjBiNzVmZDMzN2MyN2Y2YmNiYjVjN2Y5ZmFkZGYxOGIyZWNjZTVmYS4uMzhmYTMxMzYwMGVh
MDNjZThhY2YwMzQ4ZmE1Mzc5ODJhOTFkYTcwZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvQWxsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0FsbC5qcwpAQCAtMzksNiArMzksNyBAQCBsb2FkKCJBcnJheVR5cGUuanMiKTsKIGxvYWQoIkFz
c2lnbm1lbnQuanMiKTsKIGxvYWQoIkJsb2NrLmpzIik7CiBsb2FkKCJCb29sTGl0ZXJhbC5qcyIp
OworbG9hZCgiQnJlYWsuanMiKTsKIGxvYWQoIkNhbGxBc3NpZ25tZW50LmpzIik7CiBsb2FkKCJD
YWxsRXhwcmVzc2lvbi5qcyIpOwogbG9hZCgiQ2FsbEZ1bmN0aW9uLmpzIik7CkBAIC01MSw2ICs1
Miw3IEBAIGxvYWQoIkNoZWNrVW5yZWFjaGFibGVDb2RlLmpzIik7CiBsb2FkKCJDaGVja2VyLmpz
Iik7CiBsb2FkKCJDb21tYUV4cHJlc3Npb24uanMiKTsKIGxvYWQoIkNvbnN0ZXhwclR5cGVQYXJh
bWV0ZXIuanMiKTsKK2xvYWQoIkNvbnRpbnVlLmpzIik7CiBsb2FkKCJEZXJlZmVyZW5jZUV4cHJl
c3Npb24uanMiKTsKIGxvYWQoIkRvdEV4cHJlc3Npb24uanMiKTsKIGxvYWQoIkVBcnJheVJlZi5q
cyIpOwpAQCAtMTIyLDMgKzEyNCw0IEBAIGxvYWQoIlZpc2l0aW5nU2V0LmpzIik7CiBsb2FkKCJX
U3ludGF4RXJyb3IuanMiKTsKIGxvYWQoIldUcmFwRXJyb3IuanMiKTsKIGxvYWQoIldUeXBlRXJy
b3IuanMiKTsKK2xvYWQoIldoaWxlTG9vcC5qcyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0NoZWNrZXIuanMKaW5kZXggYjY2ZDk0YzIyNWQzN2E1MzA3ZmUyMjRhOGM3ZDk4OTAxMjZl
ZWMzMC4uNWMxMDIxNjNjZTgzMWI4MTQwMDQ0ODkzMGQ5ZTg4MmU1MDBjYjFiOSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcworKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCkBAIC0yMzcsNiArMjM3LDE2IEBAIGNs
YXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgaWYgKG5vZGUuZWxzZUJvZHkp
CiAgICAgICAgICAgICBub2RlLmVsc2VCb2R5LnZpc2l0KHRoaXMpOwogICAgIH0KKworICAgIHZp
c2l0V2hpbGVMb29wKG5vZGUpCisgICAgeworICAgICAgICBsZXQgY29uZGl0aW9uYWxSZXN1bHRU
eXBlID0gbm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKTsKKyAgICAgICAgaWYgKCFjb25kaXRp
b25hbFJlc3VsdFR5cGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRyeWluZyB0byBu
ZWdhdGUgc29tZXRoaW5nIHdpdGggbm8gdHlwZTogIiArIG5vZGUuY29uZGl0aW9uYWwpOworICAg
ICAgICBpZiAoIWNvbmRpdGlvbmFsUmVzdWx0VHlwZS5lcXVhbHModGhpcy5fcHJvZ3JhbS5pbnRy
aW5zaWNzLmJvb2wpKQorICAgICAgICAgICAgdGhyb3cgbmV3IFdFcnJvcigiVHJ5aW5nIHRvIG5l
Z2F0ZSBzb21ldGhpbmcgdGhhdCBpc24ndCBhIGJvb2w6ICIgKyBub2RlLmNvbmRpdGlvbmFsKTsK
KyAgICAgICAgbm9kZS5ib2R5LnZpc2l0KHRoaXMpOworICAgIH0KICAgICAKICAgICB2aXNpdENv
bW1hRXhwcmVzc2lvbihub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0V2YWx1YXRvci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0V2YWx1YXRvci5qcwppbmRleCA3NzIxOWU2MzM5NzRhMTBkNjEwMzRiMjNjM2M4ZGU1NTljOTNh
ZjM5Li42MTA4OTkzODljMTJiY2RjOWY2Y2UwMTM5MjYzZjMxY2NkYzFjMWM2IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzCkBAIC0xNTgsNiArMTU4LDMwIEBA
IGNsYXNzIEV2YWx1YXRvciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBlbHNlIGlmIChub2Rl
LmVsc2VCb2R5KQogICAgICAgICAgICAgcmV0dXJuIG5vZGUuZWxzZUJvZHkudmlzaXQodGhpcyk7
CiAgICAgfQorCisgICAgdmlzaXRXaGlsZUxvb3Aobm9kZSkKKyAgICB7CisgICAgICAgIHdoaWxl
IChub2RlLmNvbmRpdGlvbmFsLnZpc2l0KHRoaXMpLmxvYWRWYWx1ZSgpKSB7CisgICAgICAgICAg
ICB0cnkgeworICAgICAgICAgICAgICAgIG5vZGUuYm9keS52aXNpdCh0aGlzKTsKKyAgICAgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEJyZWFr
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoZSBpbnN0
YW5jZW9mIENvbnRpbnVlKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZpc2l0QnJlYWsobm9kZSkKKyAgICB7Cisg
ICAgICAgIHRocm93IG5vZGU7CisgICAgfQorCisgICAgdmlzaXRDb250aW51ZShub2RlKQorICAg
IHsKKyAgICAgICAgdGhyb3cgbm9kZTsKKyAgICB9CiAgICAgCiAgICAgdmlzaXRDYWxsRXhwcmVz
c2lvbihub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0ludHJpbnNpY3MuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5z
aWNzLmpzCmluZGV4IGJjYTQwNzM3YjQ1MjRiM2RmZDM1ODRjNmMzODQ0ZDA2YWVhNjI5YWUuLjFi
ZDgyMWQ1YTYzZThkNmUzMDc2NGUxNzA5ZDA3NTQ5YWI3M2Q4MjAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcwpAQCAtMTc4LDYgKzE3OCw2MiBAQCBjbGFz
cyBJbnRyaW5zaWNzIHsKICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFs
dWUoKSA9PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCisg
ICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8
PD4oaW50LGludCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVu
Yy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgorICAgICAgICAgICAgICAgICAg
ICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDwgcmlnaHQubG9hZFZhbHVlKCkpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAg
Im5hdGl2ZSBib29sIG9wZXJhdG9yPDw+KHVpbnQsdWludCkiLAorICAgICAgICAgICAgZnVuYyA9
PiB7CisgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRd
KSA9PgorICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDwgcmln
aHQubG9hZFZhbHVlKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICB0aGlz
Ll9tYXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPD08PihpbnQsaW50
KSIsCisgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVu
dGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CisgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94
KGxlZnQubG9hZFZhbHVlKCkgPD0gcmlnaHQubG9hZFZhbHVlKCkpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIAorICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSBi
b29sIG9wZXJhdG9yPD08Pih1aW50LHVpbnQpIiwKKyAgICAgICAgICAgIGZ1bmMgPT4geworICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KKyAg
ICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA8PSByaWdodC5sb2Fk
VmFsdWUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX21hcC5z
ZXQoCisgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PD4oaW50LGludCkiLAorICAg
ICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9
IChbbGVmdCwgcmlnaHRdKSA9PgorICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0Lmxv
YWRWYWx1ZSgpID4gcmlnaHQubG9hZFZhbHVlKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IAorICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJh
dG9yPjw+KHVpbnQsdWludCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAg
ICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgorICAgICAgICAgICAg
ICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID4gcmlnaHQubG9hZFZhbHVlKCkpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAg
ICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPj08PihpbnQsaW50KSIsCisgICAgICAgICAgICBm
dW5jID0+IHsKKyAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCBy
aWdodF0pID0+CisgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkg
Pj0gcmlnaHQubG9hZFZhbHVlKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAg
ICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPj08Pih1
aW50LHVpbnQpIiwKKyAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KKyAgICAgICAgICAgICAgICAgICAg
RVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+PSByaWdodC5sb2FkVmFsdWUoKSk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgCiAgICAgICAgIGxldCBhcnJheUVsZW1lbnRQdHIgPSBmdW5jID0+
IHsKICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3JlZiwgaW5kZXhdLCBub2Rl
KSA9PiB7CiAgICAgICAgICAgICAgICAgcmVmID0gcmVmLmxvYWRWYWx1ZSgpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qcwppbmRleCA5NGUwMTQxMDMzODZiYjg3NzQ4N2U4Mjcz
NDlkYWZlZTU4MjBjYTU0Li5mYTA4ZTdlZWQwOGYyYTNiYWE4YzllYmJhOGNjZTUzOGIyYWE1Y2Uy
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qcwpAQCAtMTE4LDcgKzExOCw3
IEBAIGNsYXNzIExleGVyIHsKICAgICAgICAgaWYgKC9eKFswLTldKlwuWzAtOV0rKXwoWzAtOV0r
XC5bMC05XSopLy50ZXN0KHJlbGV2YW50VGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
KCJkb3VibGVMaXRlcmFsIik7CiAgICAgICAgIAotICAgICAgICBpZiAoL14tPnw9Pnw8PXw9PXwh
PXxcKz18LT18XCo9fFwvPXwlPXxePXxcfD18Jj18KFt7fSgpXFtcXT86PSsqXC8sLiUhfl4mfDw+
QDstXSkvLnRlc3QocmVsZXZhbnRUZXh0KSkKKyAgICAgICAgaWYgKC9eLT58Pj18PD18PT18IT18
XCs9fC09fFwqPXxcLz18JT18Xj18XHw9fCY9fChbe30oKVxbXF0/Oj0rKlwvLC4lIX5eJnw8PkA7
LV0pLy50ZXN0KHJlbGV2YW50VGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0KCJwdW5j
dHVhdGlvbiIpOwogICAgICAgICAKICAgICAgICAgbGV0IHJlbWFpbmluZyA9IHJlbGV2YW50VGV4
dC5zdWJzdHJpbmcoMCwgMjApLnNwbGl0KC9ccy8pWzBdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZVJlc29sdmVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvTmFtZVJlc29sdmVyLmpzCmluZGV4IDExNmUzMTgyODUyZDg0YzZlN2RkNmNh
NzMyZTdhYzlmOTlhMmVkOWQuLjYwN2ZjNWMxYjY4N2JiYjk3ODRiYTYwMmZiNDcwZGFlNGZlNDM4
ODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZl
ci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMK
QEAgLTk5LDYgKzk5LDEzIEBAIGNsYXNzIE5hbWVSZXNvbHZlciBleHRlbmRzIFZpc2l0b3Igewog
ICAgICAgICBpZiAobm9kZS5lbHNlQm9keSkKICAgICAgICAgICAgIG5vZGUuZWxzZUJvZHkudmlz
aXQobmV3IE5hbWVSZXNvbHZlcihuZXcgTmFtZUNvbnRleHQodGhpcy5fbmFtZUNvbnRleHQpKSk7
CiAgICAgfQorCisgICAgdmlzaXRXaGlsZUxvb3Aobm9kZSkKKyAgICB7CisgICAgICAgIG5vZGUu
Y29uZGl0aW9uYWwudmlzaXQodGhpcyk7CisgICAgICAgIC8vIElmIHN0YXRlbWVudCdzIGJvZGll
cyBtaWdodCBub3QgYmUgQmxvY2tzLCBzbyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgZ2l2ZSB0aGVt
IGEgbmV3IGNvbnRleHQuCisgICAgICAgIG5vZGUuYm9keS52aXNpdChuZXcgTmFtZVJlc29sdmVy
KG5ldyBOYW1lQ29udGV4dCh0aGlzLl9uYW1lQ29udGV4dCkpKTsKKyAgICB9CiAgICAgCiAgICAg
dmlzaXRQcm90b2NvbERlY2wobm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9Ob2RlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
Tm9kZS5qcwppbmRleCAwNGUzODg5OGI5OTQ2NjA3NGZiZThhMGEwZWE3YzRjZDllNTNmYzZhLi5j
MTIwZDcyM2M0YjM0OWQzZjNjYTg1ZDY2ODI5NWEzODIwMGVkMmMyIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Ob2RlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL05vZGUuanMKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgTm9kZSB7CiAgICAg
ICAgIGxldCByZXR1cm5WYWx1ZSA9IHZpc2l0RnVuYy5jYWxsKHZpc2l0b3IsIHRoaXMpOwogICAg
ICAgICBpZiAoInJldHVyblZhbHVlIiBpbiB2aXNpdG9yKQogICAgICAgICAgICAgcmV0dXJuVmFs
dWUgPSB2aXNpdG9yLnJldHVyblZhbHVlOwotICAgICAgICBtZW1vVGFibGUuc2V0KHRoaXMsIHJl
dHVyblZhbHVlKTsKKyAgICAgICAgLy9tZW1vVGFibGUuc2V0KHRoaXMsIHJldHVyblZhbHVlKTsK
ICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvUGFyc2UuanMKaW5kZXggYTYxYTQ4Y2M5YzE2YzM1ZGYxNWI3NTI5MzZmYTY4
NTg5ODYwZTIxYS4uNTA2Y2JkYmMwOTc2NDdiZmI2Y2JiMjkyNzVmODNjZTU5YjNiZWVhNSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKQEAgLTQwNCw3ICs0MDQsNyBAQCBm
dW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAg
ICAgCiAgICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJsZVJlbGF0aW9uYWxJbmVxdWFsaXR5KCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBwYXJzZUxlZnRPcGVyYXRvckNhbGwoWyI8IiwgIj4iLCAiPD0i
LCAiPT4iXSwgcGFyc2VQb3NzaWJsZVNoaWZ0KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlTGVmdE9w
ZXJhdG9yQ2FsbChbIjwiLCAiPiIsICI8PSIsICI+PSJdLCBwYXJzZVBvc3NpYmxlU2hpZnQpOwog
ICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlUmVsYXRpb25hbEVxdWFsaXR5
KCkKQEAgLTUzNSw2ICs1MzUsMjAgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBs
aW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBjb25zdW1lKCI7Iik7CiAgICAgICAgIHJl
dHVybiBuZXcgUmV0dXJuKG9yaWdpbiwgZXhwcmVzc2lvbik7CiAgICAgfQorICAgIAorICAgIGZ1
bmN0aW9uIHBhcnNlQnJlYWsoKQorICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUo
ImJyZWFrIik7CisgICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgcmV0dXJuIG5ldyBCcmVh
ayhvcmlnaW4pOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBwYXJzZUNvbnRpbnVlKCkKKyAg
ICB7CisgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJjb250aW51ZSIpOworICAgICAgICBj
b25zdW1lKCI7Iik7CisgICAgICAgIHJldHVybiBuZXcgQ29udGludWUob3JpZ2luKTsKKyAgICB9
CiAKICAgICBmdW5jdGlvbiBwYXJzZUlmU3RhdGVtZW50KCkKICAgICB7CkBAIC01NDgsNiArNTYy
LDE2IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwg
dGV4dCkKICAgICAgICAgICAgIGVsc2VCb2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKICAgICAgICAg
cmV0dXJuIG5ldyBJZlN0YXRlbWVudChvcmlnaW4sIG5ldyBDYXN0RXhwcmVzc2lvbihjb25kaXRp
b25hbC5vcmlnaW4sIG5ldyBUeXBlUmVmKGNvbmRpdGlvbmFsLm9yaWdpbiwgImJvb2wiLCBbXSks
IFtdLCBbY29uZGl0aW9uYWxdKSwgYm9keSwgZWxzZUJvZHkpOwogICAgIH0KKworICAgIGZ1bmN0
aW9uIHBhcnNlV2hpbGUoKQorICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoIndo
aWxlIik7CisgICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgbGV0IGNvbmRpdGlvbmFsID0g
cGFyc2VFeHByZXNzaW9uKCk7CisgICAgICAgIGNvbnN1bWUoIikiKTsKKyAgICAgICAgbGV0IGJv
ZHkgPSBwYXJzZVN0YXRlbWVudCgpOworICAgICAgICByZXR1cm4gbmV3IFdoaWxlTG9vcChvcmln
aW4sIG5ldyBDYXN0RXhwcmVzc2lvbihjb25kaXRpb25hbC5vcmlnaW4sIG5ldyBUeXBlUmVmKGNv
bmRpdGlvbmFsLm9yaWdpbiwgImJvb2wiLCBbXSksIFtdLCBbY29uZGl0aW9uYWxdKSwgYm9keSk7
CisgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVEZWNscygpCiAgICAgewpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwppbmRleCA5NTg4MWFiZWFj
YTc5MWZhODI3NWZlYmY5MDQ0ZmRlZmU0NTJkMzkxLi5hZDdhMDBjYjUyZjFjNDBmODAwMzkzNzBi
MGM4MTNjZmI2ZWU2NWQ2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9SZXdyaXRlci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRl
ci5qcwpAQCAtMTk5LDYgKzE5OSwxNiBAQCBjbGFzcyBSZXdyaXRlciBleHRlbmRzIFZpc2l0b3JC
YXNlIHsKICAgICAgICAgcmV0dXJuIG5ldyBSZXR1cm4obm9kZS5vcmlnaW4sIG5vZGUudmFsdWUg
PyBub2RlLnZhbHVlLnZpc2l0KHRoaXMpIDogbnVsbCk7CiAgICAgfQogICAgIAorICAgIHZpc2l0
Q29udGludWUobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgQ29udGludWUobm9kZS5v
cmlnaW4pOworICAgIH0KKyAgICAKKyAgICB2aXNpdEJyZWFrKG5vZGUpCisgICAgeworICAgICAg
ICByZXR1cm4gbmV3IEJyZWFrKG5vZGUub3JpZ2luKTsKKyAgICB9CisgICAgCiAgICAgdmlzaXRJ
bnRMaXRlcmFsKG5vZGUpCiAgICAgewogICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEludExpdGVy
YWwobm9kZS5vcmlnaW4sIG5vZGUudmFsdWUpOwpAQCAtMjg4LDUgKzI5OCwxMCBAQCBjbGFzcyBS
ZXdyaXRlciBleHRlbmRzIFZpc2l0b3JCYXNlIHsKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcg
SWZTdGF0ZW1lbnQobm9kZS5vcmlnaW4sIG5vZGUuY29uZGl0aW9uYWwudmlzaXQodGhpcyksIG5v
ZGUuYm9keS52aXNpdCh0aGlzKSwgbm9kZS5lbHNlQm9keSA/IG5vZGUuZWxzZUJvZHkudmlzaXQo
dGhpcykgOiB1bmRlZmluZWQpOwogICAgIH0KKworICAgIHZpc2l0V2hpbGVMb29wKG5vZGUpCisg
ICAgeworICAgICAgICByZXR1cm4gbmV3IFdoaWxlTG9vcChub2RlLm9yaWdpbiwgbm9kZS5jb25k
aXRpb25hbC52aXNpdCh0aGlzKSwgbm9kZS5ib2R5LnZpc2l0KHRoaXMpKTsKKyAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFy
eVByb2xvZ3VlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJy
YXJ5UHJvbG9ndWUuanMKaW5kZXggMDEzNjMxNmE5ZTgyZTc1ZTc1YTFlZWZiYmUyYjk4ZWEyMjg3
OTNiYS4uZjRlZGYzNzUxOWZmNDIwZTliOGJlY2IyZWYwYTkyNmU2ZjZiN2MxOSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5UHJvbG9ndWUu
anMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5UHJv
bG9ndWUuanMKQEAgLTUyLDYgKzUyLDE0IEBAIG5hdGl2ZSB1aW50IG9wZXJhdG9yLyh1aW50LCB1
aW50KTsKIG5hdGl2ZSBib29sIG9wZXJhdG9yPT0oaW50LCBpbnQpOwogbmF0aXZlIGJvb2wgb3Bl
cmF0b3I9PSh1aW50LCB1aW50KTsKIG5hdGl2ZSBib29sIG9wZXJhdG9yPT0oYm9vbCwgYm9vbCk7
CituYXRpdmUgYm9vbCBvcGVyYXRvcjwoaW50LCBpbnQpOworbmF0aXZlIGJvb2wgb3BlcmF0b3I8
KHVpbnQsIHVpbnQpOworbmF0aXZlIGJvb2wgb3BlcmF0b3I8PShpbnQsIGludCk7CituYXRpdmUg
Ym9vbCBvcGVyYXRvcjw9KHVpbnQsIHVpbnQpOworbmF0aXZlIGJvb2wgb3BlcmF0b3I+KGludCwg
aW50KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPih1aW50LCB1aW50KTsKK25hdGl2ZSBib29sIG9w
ZXJhdG9yPj0oaW50LCBpbnQpOworbmF0aXZlIGJvb2wgb3BlcmF0b3I+PSh1aW50LCB1aW50KTsK
IAogcHJvdG9jb2wgRXF1YXRhYmxlIHsKICAgICBib29sIG9wZXJhdG9yPT0oRXF1YXRhYmxlLCBF
cXVhdGFibGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVz
dC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCmluZGV4IGFi
ZmY5NmFmNzI5ZDU2YTA2M2EyNWE4ZDZlNjIxZmU0YmJmMzllOTUuLjk3NzY3ZGU4N2U5ODMyMzJk
YWMwZWJiYWMyYzUyZjdkOGQ3Njk5YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9U
ZXN0Lmh0bWwKQEAgLTE1LDYgKzE1LDcgQEAKIDxzY3JpcHQgc3JjPSJBc3NpZ25tZW50LmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCbG9jay5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Qm9vbExpdGVyYWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkJyZWFrLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJDYWxsQXNzaWdubWVudC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iQ2FsbEV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNhbGxGdW5jdGlv
bi5qcyI+PC9zY3JpcHQ+CkBAIC0yNyw2ICsyOCw3IEBACiA8c2NyaXB0IHNyYz0iQ2hlY2tlci5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ29tbWFFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJDb25zdGV4cHJUeXBlUGFyYW1ldGVyLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJDb250aW51ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRG90RXhwcmVzc2lv
bi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRGVyZWZlcmVuY2VFeHByZXNzaW9uLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJFQXJyYXlSZWYuanMiPjwvc2NyaXB0PgpAQCAtOTgsNiAr
MTAwLDcgQEAKIDxzY3JpcHQgc3JjPSJXU3ludGF4RXJyb3IuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IldUcmFwRXJyb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IldUeXBlRXJyb3Iu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IldoaWxlTG9vcC5qcyI+PC9zY3JpcHQ+CiAKIDxz
Y3JpcHQgc3JjPSJUZXN0LmpzIj48L3NjcmlwdD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1Rlc3QuanMKaW5kZXggN2FmNzQ0ZjQ2ZTQ5N2QwYmFmYTY1YTU1MzZjZTk2N2E0MjA2OTY5Yi4u
N2Q2NDgwNDM0OTNmNWM2MzNjOWY3MjM2YmRlN2JiNWNlOWIzYTAxYiAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCkBAIC0xMzM2LDYgKzEzMzYsMTkgQEAgZnVuY3Rpb24gVEVT
VF9yZXR1cm5JZigpCiAgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CiB9
CiAKK2Z1bmN0aW9uIFRFU1Rfc2ltcGxlV2hpbGUoKQoreworICAgIGxldCBwcm9ncmFtID0gZG9Q
cmVwKGAKKyAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgeworICAgICAgICAgICAgd2hp
bGUgKHggPCAxMykKKyAgICAgICAgICAgICAgICB4ID0geCAqIDI7CisgICAgICAgICAgICByZXR1
cm4geDsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDEpXSksIDE2KTsKK30K
KwogZnVuY3Rpb24gVEVTVF9wcm90b2NvbE1vbm9Qb2x5U2lnRG91YmxlUG9seURlZkV4cGxpY2l0
KCkKIHsKICAgICBjaGVja0ZhaWwoCkBAIC0xMzY4LDYgKzEzODEsNTkgQEAgZnVuY3Rpb24gVEVT
VF9wcm90b2NvbE1vbm9Qb2x5U2lnRG91YmxlUG9seURlZkV4cGxpY2l0KCkKICAgICAgICAgKGUp
ID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKIH0KIAorZnVuY3Rpb24gVEVTVF9icmVhaygp
Cit7CisgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICBpbnQgZm9vKGludCB4KQor
ICAgICAgICB7CisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIHgg
PSB4ICogMjsKKyAgICAgICAgICAgICAgICBpZiAoeCA+PSA3KQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICB9
CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgMSldKSwgOCk7CisgICAgY2hlY2tJbnQocHJvZ3Jh
bSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgMTAp
XSksIDIwKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgaW50IGZvbyhpbnQgeCkK
KyAgICAgICAgeworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICB4ID0geCAqIDI7CisgICAgICAgICAg
ICAgICAgICAgIGlmICh4ID49IDcpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgeCA9IHggLSAxOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAg
ICAgICAKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDEpXSksIDcpOworICAg
IGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtl
SW50KHByb2dyYW0sIDEwKV0pLCAxOSk7Cit9CisKK2Z1bmN0aW9uIFRFU1RfY29udGludWUoKQor
eworICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAg
ICAgICAgeworICAgICAgICAgICAgd2hpbGUgKHggPCAxMCkgeworICAgICAgICAgICAgICAgIGlm
ICh4ID09IDgpIHsKKyAgICAgICAgICAgICAgICAgICAgeCA9IHggKyAxOworICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgeCA9
IHggKiAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0K
KyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFtdLCBbbWFrZUludChwcm9ncmFtLCAxKV0pLCAxOCk7Cit9CisKIGxldCBmaWx0ZXIgPSAv
LiovOyAvLyBydW4gZXZlcnl0aGluZyBieSBkZWZhdWx0CiBpZiAodGhpc1siYXJndW1lbnRzIl0p
IHsKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMKaW5kZXggZDZlODY2OWY1NWI4YzY2
NTU1ODFkYjBhMzIxMzczZjUxOGZiYTQyMS4uNDJhY2NkYTIzMmMxODdjZGRhNTgzMDZhOWViN2Vj
NmU2MDcwZWJiYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlz
aXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCkBA
IC0yMTUsMTIgKzIxNSwyNiBAQCBjbGFzcyBWaXNpdG9yIGV4dGVuZHMgVmlzaXRvckJhc2Ugewog
ICAgICAgICBpZiAobm9kZS5lbHNlQm9keSkKICAgICAgICAgICAgIG5vZGUuZWxzZUJvZHkudmlz
aXQodGhpcyk7CiAgICAgfQorICAgIAorICAgIHZpc2l0V2hpbGVMb29wKG5vZGUpCisgICAgewor
ICAgICAgICBub2RlLmNvbmRpdGlvbmFsLnZpc2l0KHRoaXMpOworICAgICAgICBub2RlLmJvZHku
dmlzaXQodGhpcyk7CisgICAgfQogCiAgICAgdmlzaXRSZXR1cm4obm9kZSkKICAgICB7CiAgICAg
ICAgIGlmIChub2RlLnZhbHVlKQogICAgICAgICAgICAgbm9kZS52YWx1ZS52aXNpdCh0aGlzKTsK
ICAgICB9CisKKyAgICB2aXNpdENvbnRpbnVlKG5vZGUpCisgICAgeworICAgIH0KKworICAgIHZp
c2l0QnJlYWsobm9kZSkKKyAgICB7CisgICAgfQogICAgIAogICAgIHZpc2l0SW50TGl0ZXJhbChu
b2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1do
aWxlTG9vcC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1doaWxlTG9vcC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YzE5YzM0ZTVhNzc3OTRmNTZmOWQ1NzZkODg5N2QyZWU0MzllNzlhCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvV2hpbGVMb29wLmpz
CkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgV2hpbGVMb29wIGV4dGVuZHMgTm9kZSB7Cisg
ICAgY29uc3RydWN0b3Iob3JpZ2luLCBjb25kaXRpb25hbCwgYm9keSkKKyAgICB7CisgICAgICAg
IHN1cGVyKCk7CisgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKKyAgICAgICAgdGhpcy5f
Y29uZGl0aW9uYWwgPSBjb25kaXRpb25hbDsKKyAgICAgICAgdGhpcy5fYm9keSA9IGJvZHk7Cisg
ICAgfQorCisgICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQorICAgIGdl
dCBjb25kaXRpb25hbCgpIHsgcmV0dXJuIHRoaXMuX2NvbmRpdGlvbmFsOyB9CisgICAgZ2V0IGJv
ZHkoKSB7IHJldHVybiB0aGlzLl9ib2R5OyB9CisKKyAgICB0b1N0cmluZygpCisgICAgeworICAg
ICAgICByZXR1cm4gIndoaWxlICgiICsgdGhpcy5jb25kaXRpb25hbCArICIpICIgKyB0aGlzLmJv
ZHk7CisgICAgfQorfTsKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320285</attachid>
            <date>2017-09-08 11:25:20 -0700</date>
            <delta_ts>2017-09-10 16:51:16 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>23492</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGMxY2QzNzgwMDk3NDhlY2RjNjI0YzEwOTNjODkyYTJjOTRiYThiYmYKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgU2VwIDgg
MTA6NDg6MzIgMjAxNyAtMDcwMAoKICAgIFdJUAoKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmNjU5MGEwM2EyNi4uYTJlM2JiZGJlZDcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
NiBAQAorMjAxNy0wOS0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIFdTTCBzaG91bGQgc3VwcG9ydCB3aGlsZSBsb29wcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NTgxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9BbGwuanM6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5q
czoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanM6CisgICAg
ICAgIChFdmFsdWF0b3IucHJvdG90eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzOgorICAgICAgICAoSW50cmluc2ljcyk6
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanM6CisgICAgICAgIChM
ZXhlci5wcm90b3R5cGUubmV4dCk6CisgICAgICAgIChMZXhlcik6CisgICAgICAgICogV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvTmFtZVJlc29sdmVyLmpzOgorICAgICAgICAoTmFtZVJlc29sdmVy
LnByb3RvdHlwZS52aXNpdFdoaWxlTG9vcCk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvTm9kZS5qczoKKyAgICAgICAgKE5vZGUucHJvdG90eXBlLnZpc2l0KToKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qczoKKyAgICAgICAgKHBhcnNlQnJlYWsp
OgorICAgICAgICAocGFyc2VDb250aW51ZSk6CisgICAgICAgIChwYXJzZVdoaWxlKToKKyAgICAg
ICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qczoKKyAgICAgICAgKFJld3Jp
dGVyLnByb3RvdHlwZS52aXNpdENvbnRpbnVlKToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlw
ZS52aXNpdEJyZWFrKToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNpdFdoaWxlTG9v
cCk6CisgICAgICAgIChSZXdyaXRlcik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvU3RhbmRhcmRMaWJyYXJ5UHJvbG9ndWUuanM6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVGVzdC5odG1sOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rl
c3QuanM6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qczoKKyAg
ICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKFZpc2l0
b3IucHJvdG90eXBlLnZpc2l0Q29udGludWUpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUu
dmlzaXRCcmVhayk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvV2hpbGVMb29w
LmpzOiBDb3BpZWQgZnJvbSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExp
YnJhcnlQcm9sb2d1ZS5qcy4KKyAgICAgICAgKFdoaWxlTG9vcCk6CisgICAgICAgIChXaGlsZUxv
b3AucHJvdG90eXBlLmdldCBvcmlnaW4pOgorICAgICAgICAoV2hpbGVMb29wLnByb3RvdHlwZS5n
ZXQgY29uZGl0aW9uYWwpOgorICAgICAgICAoV2hpbGVMb29wLnByb3RvdHlwZS5nZXQgYm9keSk6
CisgICAgICAgIChXaGlsZUxvb3AucHJvdG90eXBlLnRvU3RyaW5nKToKKwogMjAxNy0wOS0wNyAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdCBz
aG91bGQgY2xhaW0gdGhhdCBpdCBjYW4gc2hvdyByZXNwb25zZXMgZm9yIGEgYnJvYWRlciByYW5n
ZSBvZiBKU09OIE1JTUVUeXBlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvQWxsLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCmluZGV4
IDYwYjc1ZmQzMzdjLi4zOGZhMzEzNjAwZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQWxsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Fs
bC5qcwpAQCAtMzksNiArMzksNyBAQCBsb2FkKCJBcnJheVR5cGUuanMiKTsKIGxvYWQoIkFzc2ln
bm1lbnQuanMiKTsKIGxvYWQoIkJsb2NrLmpzIik7CiBsb2FkKCJCb29sTGl0ZXJhbC5qcyIpOwor
bG9hZCgiQnJlYWsuanMiKTsKIGxvYWQoIkNhbGxBc3NpZ25tZW50LmpzIik7CiBsb2FkKCJDYWxs
RXhwcmVzc2lvbi5qcyIpOwogbG9hZCgiQ2FsbEZ1bmN0aW9uLmpzIik7CkBAIC01MSw2ICs1Miw3
IEBAIGxvYWQoIkNoZWNrVW5yZWFjaGFibGVDb2RlLmpzIik7CiBsb2FkKCJDaGVja2VyLmpzIik7
CiBsb2FkKCJDb21tYUV4cHJlc3Npb24uanMiKTsKIGxvYWQoIkNvbnN0ZXhwclR5cGVQYXJhbWV0
ZXIuanMiKTsKK2xvYWQoIkNvbnRpbnVlLmpzIik7CiBsb2FkKCJEZXJlZmVyZW5jZUV4cHJlc3Np
b24uanMiKTsKIGxvYWQoIkRvdEV4cHJlc3Npb24uanMiKTsKIGxvYWQoIkVBcnJheVJlZi5qcyIp
OwpAQCAtMTIyLDMgKzEyNCw0IEBAIGxvYWQoIlZpc2l0aW5nU2V0LmpzIik7CiBsb2FkKCJXU3lu
dGF4RXJyb3IuanMiKTsKIGxvYWQoIldUcmFwRXJyb3IuanMiKTsKIGxvYWQoIldUeXBlRXJyb3Iu
anMiKTsKK2xvYWQoIldoaWxlTG9vcC5qcyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvQnJlYWsuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9C
cmVhay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmUyMjYxMDZj
OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9CcmVh
ay5qcwpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIEJyZWFrIGV4dGVuZHMgTm9kZSB7Cisg
ICAgY29uc3RydWN0b3Iob3JpZ2luKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAg
dGhpcy5fb3JpZ2luID0gb3JpZ2luOworICAgIH0KKyAgICAKKyAgICBnZXQgb3JpZ2luKCkgeyBy
ZXR1cm4gdGhpcy5fb3JpZ2luOyB9CisgICAgCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICJCcmVhayI7CisgICAgfQorfTsKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0NoZWNrZXIuanMKaW5kZXggYjY2ZDk0YzIyNWQuLjVjMTAyMTYzY2U4IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKQEAgLTIzNyw2ICsyMzcsMTYgQEAgY2xh
c3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBpZiAobm9kZS5lbHNlQm9keSkK
ICAgICAgICAgICAgIG5vZGUuZWxzZUJvZHkudmlzaXQodGhpcyk7CiAgICAgfQorCisgICAgdmlz
aXRXaGlsZUxvb3Aobm9kZSkKKyAgICB7CisgICAgICAgIGxldCBjb25kaXRpb25hbFJlc3VsdFR5
cGUgPSBub2RlLmNvbmRpdGlvbmFsLnZpc2l0KHRoaXMpOworICAgICAgICBpZiAoIWNvbmRpdGlv
bmFsUmVzdWx0VHlwZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVHJ5aW5nIHRvIG5l
Z2F0ZSBzb21ldGhpbmcgd2l0aCBubyB0eXBlOiAiICsgbm9kZS5jb25kaXRpb25hbCk7CisgICAg
ICAgIGlmICghY29uZGl0aW9uYWxSZXN1bHRUeXBlLmVxdWFscyh0aGlzLl9wcm9ncmFtLmludHJp
bnNpY3MuYm9vbCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgV0Vycm9yKCJUcnlpbmcgdG8gbmVn
YXRlIHNvbWV0aGluZyB0aGF0IGlzbid0IGEgYm9vbDogIiArIG5vZGUuY29uZGl0aW9uYWwpOwor
ICAgICAgICBub2RlLmJvZHkudmlzaXQodGhpcyk7CisgICAgfQogICAgIAogICAgIHZpc2l0Q29t
bWFFeHByZXNzaW9uKG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQ29udGludWUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9D
b250aW51ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2I1Y2M5
MzcyNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9D
b250aW51ZS5qcwpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIENvbnRpbnVlIGV4dGVuZHMg
Tm9kZSB7CisgICAgY29uc3RydWN0b3Iob3JpZ2luKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsK
KyAgICAgICAgdGhpcy5fb3JpZ2luID0gb3JpZ2luOworICAgIH0KKyAgICAKKyAgICBnZXQgb3Jp
Z2luKCkgeyByZXR1cm4gdGhpcy5fb3JpZ2luOyB9CisgICAgCisgICAgdG9TdHJpbmcoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuICJDb250aW51ZSI7CisgICAgfQorfTsKKwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzCmluZGV4IDc3MjE5ZTYzMzk3Li42MTA4OTkz
ODljMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9y
LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0V2YWx1YXRvci5qcwpAQCAt
MTU4LDYgKzE1OCwzMCBAQCBjbGFzcyBFdmFsdWF0b3IgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAg
ICAgZWxzZSBpZiAobm9kZS5lbHNlQm9keSkKICAgICAgICAgICAgIHJldHVybiBub2RlLmVsc2VC
b2R5LnZpc2l0KHRoaXMpOwogICAgIH0KKworICAgIHZpc2l0V2hpbGVMb29wKG5vZGUpCisgICAg
eworICAgICAgICB3aGlsZSAobm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKS5sb2FkVmFsdWUo
KSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBub2RlLmJvZHkudmlzaXQo
dGhpcyk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgaWYgKGUg
aW5zdGFuY2VvZiBCcmVhaykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgaWYgKGUgaW5zdGFuY2VvZiBDb250aW51ZSkKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2aXNpdEJyZWFr
KG5vZGUpCisgICAgeworICAgICAgICB0aHJvdyBub2RlOworICAgIH0KKworICAgIHZpc2l0Q29u
dGludWUobm9kZSkKKyAgICB7CisgICAgICAgIHRocm93IG5vZGU7CisgICAgfQogICAgIAogICAg
IHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvSW50cmluc2ljcy5qcwppbmRleCBiY2E0MDczN2I0NS4uMWJkODIxZDVhNjMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKKysr
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcwpAQCAtMTc4LDYg
KzE3OCw2MiBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAgICAgICAgICAgICAgRVB0ci5i
b3gobGVmdC5sb2FkVmFsdWUoKSA9PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZl
IGJvb2wgb3BlcmF0b3I8PD4oaW50LGludCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgorICAg
ICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDwgcmlnaHQubG9hZFZh
bHVlKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9tYXAuc2V0
KAorICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPDw+KHVpbnQsdWludCkiLAorICAg
ICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9
IChbbGVmdCwgcmlnaHRdKSA9PgorICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0Lmxv
YWRWYWx1ZSgpIDwgcmlnaHQubG9hZFZhbHVlKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IAorICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJh
dG9yPD08PihpbnQsaW50KSIsCisgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CisgICAgICAgICAgICAg
ICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPD0gcmlnaHQubG9hZFZhbHVlKCkpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAg
ICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPD08Pih1aW50LHVpbnQpIiwKKyAgICAgICAgICAg
IGZ1bmMgPT4geworICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQs
IHJpZ2h0XSkgPT4KKyAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUo
KSA8PSByaWdodC5sb2FkVmFsdWUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAg
ICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PD4o
aW50LGludCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgorICAgICAgICAgICAgICAgICAgICBF
UHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID4gcmlnaHQubG9hZFZhbHVlKCkpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgIm5h
dGl2ZSBib29sIG9wZXJhdG9yPjw+KHVpbnQsdWludCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7
CisgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9
PgorICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID4gcmlnaHQu
bG9hZFZhbHVlKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9t
YXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPj08PihpbnQsaW50KSIs
CisgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0
aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CisgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxl
ZnQubG9hZFZhbHVlKCkgPj0gcmlnaHQubG9hZFZhbHVlKCkpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIAorICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSBib29s
IG9wZXJhdG9yPj08Pih1aW50LHVpbnQpIiwKKyAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAg
ICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KKyAgICAg
ICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+PSByaWdodC5sb2FkVmFs
dWUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCiAgICAgICAgIGxldCBhcnJheUVsZW1l
bnRQdHIgPSBmdW5jID0+IHsKICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3Jl
ZiwgaW5kZXhdLCBub2RlKSA9PiB7CiAgICAgICAgICAgICAgICAgcmVmID0gcmVmLmxvYWRWYWx1
ZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qcwppbmRleCA5NGUwMTQxMDMz
OC4uZmEwOGU3ZWVkMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0xleGVyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzCkBA
IC0xMTgsNyArMTE4LDcgQEAgY2xhc3MgTGV4ZXIgewogICAgICAgICBpZiAoL14oWzAtOV0qXC5b
MC05XSspfChbMC05XStcLlswLTldKikvLnRlc3QocmVsZXZhbnRUZXh0KSkKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQoImRvdWJsZUxpdGVyYWwiKTsKICAgICAgICAgCi0gICAgICAgIGlmICgv
Xi0+fD0+fDw9fD09fCE9fFwrPXwtPXxcKj18XC89fCU9fF49fFx8PXwmPXwoW3t9KClcW1xdPzo9
KypcLywuJSF+XiZ8PD5AOy1dKS8udGVzdChyZWxldmFudFRleHQpKQorICAgICAgICBpZiAoL14t
Pnw+PXw8PXw9PXwhPXxcKz18LT18XCo9fFwvPXwlPXxePXxcfD18Jj18KFt7fSgpXFtcXT86PSsq
XC8sLiUhfl4mfDw+QDstXSkvLnRlc3QocmVsZXZhbnRUZXh0KSkKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQoInB1bmN0dWF0aW9uIik7CiAgICAgICAgIAogICAgICAgICBsZXQgcmVtYWluaW5n
ID0gcmVsZXZhbnRUZXh0LnN1YnN0cmluZygwLCAyMCkuc3BsaXQoL1xzLylbMF07CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMKaW5kZXggMTE2ZTMxODI4
NTIuLjYwN2ZjNWMxYjY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9OYW1lUmVzb2x2ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFt
ZVJlc29sdmVyLmpzCkBAIC05OSw2ICs5OSwxMyBAQCBjbGFzcyBOYW1lUmVzb2x2ZXIgZXh0ZW5k
cyBWaXNpdG9yIHsKICAgICAgICAgaWYgKG5vZGUuZWxzZUJvZHkpCiAgICAgICAgICAgICBub2Rl
LmVsc2VCb2R5LnZpc2l0KG5ldyBOYW1lUmVzb2x2ZXIobmV3IE5hbWVDb250ZXh0KHRoaXMuX25h
bWVDb250ZXh0KSkpOwogICAgIH0KKworICAgIHZpc2l0V2hpbGVMb29wKG5vZGUpCisgICAgewor
ICAgICAgICBub2RlLmNvbmRpdGlvbmFsLnZpc2l0KHRoaXMpOworICAgICAgICAvLyBJZiBzdGF0
ZW1lbnQncyBib2RpZXMgbWlnaHQgbm90IGJlIEJsb2Nrcywgc28gd2UgbmVlZCB0byBleHBsaWNp
dGx5IGdpdmUgdGhlbSBhIG5ldyBjb250ZXh0LgorICAgICAgICBub2RlLmJvZHkudmlzaXQobmV3
IE5hbWVSZXNvbHZlcihuZXcgTmFtZUNvbnRleHQodGhpcy5fbmFtZUNvbnRleHQpKSk7CisgICAg
fQogICAgIAogICAgIHZpc2l0UHJvdG9jb2xEZWNsKG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTm9kZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL05vZGUuanMKaW5kZXggMDRlMzg4OThiOTkuLmMxMjBkNzIzYzRiIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Ob2RlLmpzCisrKyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05vZGUuanMKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3Mg
Tm9kZSB7CiAgICAgICAgIGxldCByZXR1cm5WYWx1ZSA9IHZpc2l0RnVuYy5jYWxsKHZpc2l0b3Is
IHRoaXMpOwogICAgICAgICBpZiAoInJldHVyblZhbHVlIiBpbiB2aXNpdG9yKQogICAgICAgICAg
ICAgcmV0dXJuVmFsdWUgPSB2aXNpdG9yLnJldHVyblZhbHVlOwotICAgICAgICBtZW1vVGFibGUu
c2V0KHRoaXMsIHJldHVyblZhbHVlKTsKKyAgICAgICAgLy9tZW1vVGFibGUuc2V0KHRoaXMsIHJl
dHVyblZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogICAgIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKaW5kZXggYTYxYTQ4Y2M5YzEuLjUwNmNi
ZGJjMDk3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5q
cworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwpAQCAtNDA0LDcg
KzQwNCw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNl
dCwgdGV4dCkKICAgICAKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlUmVsYXRpb25hbEluZXF1
YWxpdHkoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHBhcnNlTGVmdE9wZXJhdG9yQ2FsbChbIjwi
LCAiPiIsICI8PSIsICI9PiJdLCBwYXJzZVBvc3NpYmxlU2hpZnQpOworICAgICAgICByZXR1cm4g
cGFyc2VMZWZ0T3BlcmF0b3JDYWxsKFsiPCIsICI+IiwgIjw9IiwgIj49Il0sIHBhcnNlUG9zc2li
bGVTaGlmdCk7CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIHBhcnNlUG9zc2libGVSZWxhdGlv
bmFsRXF1YWxpdHkoKQpAQCAtNTM1LDYgKzUzNSwyMCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFt
LCBvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGNvbnN1bWUoIjsiKTsK
ICAgICAgICAgcmV0dXJuIG5ldyBSZXR1cm4ob3JpZ2luLCBleHByZXNzaW9uKTsKICAgICB9Cisg
ICAgCisgICAgZnVuY3Rpb24gcGFyc2VCcmVhaygpCisgICAgeworICAgICAgICBsZXQgb3JpZ2lu
ID0gY29uc3VtZSgiYnJlYWsiKTsKKyAgICAgICAgY29uc3VtZSgiOyIpOworICAgICAgICByZXR1
cm4gbmV3IEJyZWFrKG9yaWdpbik7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHBhcnNlQ29u
dGludWUoKQorICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoImNvbnRpbnVlIik7
CisgICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgcmV0dXJuIG5ldyBDb250aW51ZShvcmln
aW4pOworICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlSWZTdGF0ZW1lbnQoKQogICAgIHsKQEAg
LTU0OCw2ICs1NjIsMTYgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBsaW5lTnVt
YmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgZWxzZUJvZHkgPSBwYXJzZVN0YXRlbWVudCgp
OwogICAgICAgICByZXR1cm4gbmV3IElmU3RhdGVtZW50KG9yaWdpbiwgbmV3IENhc3RFeHByZXNz
aW9uKGNvbmRpdGlvbmFsLm9yaWdpbiwgbmV3IFR5cGVSZWYoY29uZGl0aW9uYWwub3JpZ2luLCAi
Ym9vbCIsIFtdKSwgW10sIFtjb25kaXRpb25hbF0pLCBib2R5LCBlbHNlQm9keSk7CiAgICAgfQor
CisgICAgZnVuY3Rpb24gcGFyc2VXaGlsZSgpCisgICAgeworICAgICAgICBsZXQgb3JpZ2luID0g
Y29uc3VtZSgid2hpbGUiKTsKKyAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBsZXQgY29u
ZGl0aW9uYWwgPSBwYXJzZUV4cHJlc3Npb24oKTsKKyAgICAgICAgY29uc3VtZSgiKSIpOworICAg
ICAgICBsZXQgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7CisgICAgICAgIHJldHVybiBuZXcgV2hp
bGVMb29wKG9yaWdpbiwgbmV3IENhc3RFeHByZXNzaW9uKGNvbmRpdGlvbmFsLm9yaWdpbiwgbmV3
IFR5cGVSZWYoY29uZGl0aW9uYWwub3JpZ2luLCAiYm9vbCIsIFtdKSwgW10sIFtjb25kaXRpb25h
bF0pLCBib2R5KTsKKyAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gcGFyc2VWYXJpYWJsZURlY2xz
KCkKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXR1
cm5DaGVja2VyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV0dXJuQ2hlY2tl
ci5qcwppbmRleCA0NzJjMGQwYzBmYS4uZWRhOTlkODY2NjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JldHVybkNoZWNrZXIuanMKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvUmV0dXJuQ2hlY2tlci5qcwpAQCAtNDYsNyArNDYsMTUgQEAgY2xh
c3MgUmV0dXJuQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICByZXR1cm4gbm9kZS5l
bHNlQm9keSAmJiBub2RlLmJvZHkudmlzaXQodGhpcykgJiYgbm9kZS5lbHNlQm9keS52aXNpdCh0
aGlzKTsKICAgICB9CiAKLSAgICAvLyBJZiBhIGxvb3AgcmV0dXJucywgdGhlbiBpdCBjb3VudHMg
b25seSBpZiB0aGUgbG9vcCBpcyBndWFyYW50ZWVkIHRvIHJ1biBhdCBsZWFzdCBvbmNlLgorICAg
IHZpc2l0V2hpbGVMb29wKG5vZGUpCisgICAgeworICAgICAgICAvLyBGSVhNRTogQ29sbGFwc2Ug
dGhpbmdzIGxpa2UgIjMgPT0gNCIgdG8gInRydWUiCisgICAgICAgIGlmIChub2RlLmNvbmRpdGlv
bmFsIGluc3RhbmNlb2YgQm9vbExpdGVyYWwgJiYgbm9kZS5jb25kaXRpb25hbC52YWx1ZSkgewor
ICAgICAgICAgICAgLy8gTm93IHdlIGtub3cgdGhhdCB0aGUgbG9vcCB3aWxsIGV4ZWN1dGUgYXQg
bGVhc3Qgb25jZSwgc28gaWYgdGhlIGJvZHkgcmV0dXJucywgd2UgcmV0dXJuLgorICAgICAgICAg
ICAgcmV0dXJuIG5vZGUuYm9keS52aXNpdCh0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQogICAgIAogICAgIHZpc2l0UmV0dXJuKG5vZGUpCiAgICAgewpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwppbmRleCA5NTg4MWFiZWFjYS4u
YWQ3YTAwY2I1MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jl
d3JpdGVyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpz
CkBAIC0xOTksNiArMTk5LDE2IEBAIGNsYXNzIFJld3JpdGVyIGV4dGVuZHMgVmlzaXRvckJhc2Ug
ewogICAgICAgICByZXR1cm4gbmV3IFJldHVybihub2RlLm9yaWdpbiwgbm9kZS52YWx1ZSA/IG5v
ZGUudmFsdWUudmlzaXQodGhpcykgOiBudWxsKTsKICAgICB9CiAgICAgCisgICAgdmlzaXRDb250
aW51ZShub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBDb250aW51ZShub2RlLm9yaWdp
bik7CisgICAgfQorICAgIAorICAgIHZpc2l0QnJlYWsobm9kZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBuZXcgQnJlYWsobm9kZS5vcmlnaW4pOworICAgIH0KKyAgICAKICAgICB2aXNpdEludExp
dGVyYWwobm9kZSkKICAgICB7CiAgICAgICAgIGxldCByZXN1bHQgPSBuZXcgSW50TGl0ZXJhbChu
b2RlLm9yaWdpbiwgbm9kZS52YWx1ZSk7CkBAIC0yODgsNSArMjk4LDEwIEBAIGNsYXNzIFJld3Jp
dGVyIGV4dGVuZHMgVmlzaXRvckJhc2UgewogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBJZlN0
YXRlbWVudChub2RlLm9yaWdpbiwgbm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKSwgbm9kZS5i
b2R5LnZpc2l0KHRoaXMpLCBub2RlLmVsc2VCb2R5ID8gbm9kZS5lbHNlQm9keS52aXNpdCh0aGlz
KSA6IHVuZGVmaW5lZCk7CiAgICAgfQorCisgICAgdmlzaXRXaGlsZUxvb3Aobm9kZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBuZXcgV2hpbGVMb29wKG5vZGUub3JpZ2luLCBub2RlLmNvbmRpdGlv
bmFsLnZpc2l0KHRoaXMpLCBub2RlLmJvZHkudmlzaXQodGhpcykpOworICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5UHJv
bG9ndWUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnlQ
cm9sb2d1ZS5qcwppbmRleCAwMTM2MzE2YTllOC4uZjRlZGYzNzUxOWYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeVByb2xvZ3VlLmpzCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeVByb2xvZ3Vl
LmpzCkBAIC01Miw2ICs1MiwxNCBAQCBuYXRpdmUgdWludCBvcGVyYXRvci8odWludCwgdWludCk7
CiBuYXRpdmUgYm9vbCBvcGVyYXRvcj09KGludCwgaW50KTsKIG5hdGl2ZSBib29sIG9wZXJhdG9y
PT0odWludCwgdWludCk7CiBuYXRpdmUgYm9vbCBvcGVyYXRvcj09KGJvb2wsIGJvb2wpOworbmF0
aXZlIGJvb2wgb3BlcmF0b3I8KGludCwgaW50KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPCh1aW50
LCB1aW50KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPD0oaW50LCBpbnQpOworbmF0aXZlIGJvb2wg
b3BlcmF0b3I8PSh1aW50LCB1aW50KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPihpbnQsIGludCk7
CituYXRpdmUgYm9vbCBvcGVyYXRvcj4odWludCwgdWludCk7CituYXRpdmUgYm9vbCBvcGVyYXRv
cj49KGludCwgaW50KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPj0odWludCwgdWludCk7CiAKIHBy
b3RvY29sIEVxdWF0YWJsZSB7CiAgICAgYm9vbCBvcGVyYXRvcj09KEVxdWF0YWJsZSwgRXF1YXRh
YmxlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRt
bCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAppbmRleCBhYmZmOTZh
ZjcyOS4uOTc3NjdkZTg3ZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0
bWwKQEAgLTE1LDYgKzE1LDcgQEAKIDxzY3JpcHQgc3JjPSJBc3NpZ25tZW50LmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJCbG9jay5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQm9vbExp
dGVyYWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkJyZWFrLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJDYWxsQXNzaWdubWVudC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2Fs
bEV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNhbGxGdW5jdGlvbi5qcyI+
PC9zY3JpcHQ+CkBAIC0yNyw2ICsyOCw3IEBACiA8c2NyaXB0IHNyYz0iQ2hlY2tlci5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ29tbWFFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJDb25zdGV4cHJUeXBlUGFyYW1ldGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJDb250aW51ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRG90RXhwcmVzc2lvbi5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRGVyZWZlcmVuY2VFeHByZXNzaW9uLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJFQXJyYXlSZWYuanMiPjwvc2NyaXB0PgpAQCAtOTgsNiArMTAwLDcg
QEAKIDxzY3JpcHQgc3JjPSJXU3ludGF4RXJyb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IldUcmFwRXJyb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IldUeXBlRXJyb3IuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9IldoaWxlTG9vcC5qcyI+PC9zY3JpcHQ+CiAKIDxzY3JpcHQg
c3JjPSJUZXN0LmpzIj48L3NjcmlwdD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3Qu
anMKaW5kZXggN2FmNzQ0ZjQ2ZTQuLjdkNjQ4MDQzNDkzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Rlc3QuanMKQEAgLTEzMzYsNiArMTMzNiwxOSBAQCBmdW5jdGlvbiBURVNUX3JldHVy
bklmKCkKICAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKIH0KIAorZnVu
Y3Rpb24gVEVTVF9zaW1wbGVXaGlsZSgpCit7CisgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAor
ICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB7CisgICAgICAgICAgICB3aGlsZSAoeCA8
IDEzKQorICAgICAgICAgICAgICAgIHggPSB4ICogMjsKKyAgICAgICAgICAgIHJldHVybiB4Owor
ICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgMSldKSwgMTYpOworfQorCiBmdW5j
dGlvbiBURVNUX3Byb3RvY29sTW9ub1BvbHlTaWdEb3VibGVQb2x5RGVmRXhwbGljaXQoKQogewog
ICAgIGNoZWNrRmFpbCgKQEAgLTEzNjgsNiArMTM4MSw1OSBAQCBmdW5jdGlvbiBURVNUX3Byb3Rv
Y29sTW9ub1BvbHlTaWdEb3VibGVQb2x5RGVmRXhwbGljaXQoKQogICAgICAgICAoZSkgPT4gZSBp
bnN0YW5jZW9mIFdUeXBlRXJyb3IpOwogfQogCitmdW5jdGlvbiBURVNUX2JyZWFrKCkKK3sKKyAg
ICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgeCA9IHggKiAy
OworICAgICAgICAgICAgICAgIGlmICh4ID49IDcpCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0KKyAgICBg
KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtd
LCBbbWFrZUludChwcm9ncmFtLCAxKV0pLCA4KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxs
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCAxMCldKSwgMjAp
OworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAg
ICB7CisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgICAgICAgICAgICAgIHggPSB4ICogMjsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHggPj0gNykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB4ID0geCAtIDE7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgIAor
ICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgMSldKSwgNyk7CisgICAgY2hlY2tJ
bnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJv
Z3JhbSwgMTApXSksIDE5KTsKK30KKworZnVuY3Rpb24gVEVTVF9jb250aW51ZSgpCit7CisgICAg
bGV0IHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB7
CisgICAgICAgICAgICB3aGlsZSAoeCA8IDEwKSB7CisgICAgICAgICAgICAgICAgaWYgKHggPT0g
OCkgeworICAgICAgICAgICAgICAgICAgICB4ID0geCArIDE7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB4ID0geCAqIDI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgfQorICAgIGAp
OworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10s
IFttYWtlSW50KHByb2dyYW0sIDEpXSksIDE4KTsKK30KKwogbGV0IGZpbHRlciA9IC8uKi87IC8v
IHJ1biBldmVyeXRoaW5nIGJ5IGRlZmF1bHQKIGlmICh0aGlzWyJhcmd1bWVudHMiXSkgewogICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwppbmRleCBkNmU4NjY5ZjU1Yi4uNDJhY2NkYTIz
MmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwpAQCAtMjE1LDEy
ICsyMTUsMjYgQEAgY2xhc3MgVmlzaXRvciBleHRlbmRzIFZpc2l0b3JCYXNlIHsKICAgICAgICAg
aWYgKG5vZGUuZWxzZUJvZHkpCiAgICAgICAgICAgICBub2RlLmVsc2VCb2R5LnZpc2l0KHRoaXMp
OwogICAgIH0KKyAgICAKKyAgICB2aXNpdFdoaWxlTG9vcChub2RlKQorICAgIHsKKyAgICAgICAg
bm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKTsKKyAgICAgICAgbm9kZS5ib2R5LnZpc2l0KHRo
aXMpOworICAgIH0KIAogICAgIHZpc2l0UmV0dXJuKG5vZGUpCiAgICAgewogICAgICAgICBpZiAo
bm9kZS52YWx1ZSkKICAgICAgICAgICAgIG5vZGUudmFsdWUudmlzaXQodGhpcyk7CiAgICAgfQor
CisgICAgdmlzaXRDb250aW51ZShub2RlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXNpdEJyZWFr
KG5vZGUpCisgICAgeworICAgIH0KICAgICAKICAgICB2aXNpdEludExpdGVyYWwobm9kZSkKICAg
ICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XaGlsZUxvb3Au
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XaGlsZUxvb3AuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRjMTljMzRlNWE3Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvV2hpbGVMb29wLmpzCkBAIC0wLDAg
KzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyJ1
c2Ugc3RyaWN0IjsKKworY2xhc3MgV2hpbGVMb29wIGV4dGVuZHMgTm9kZSB7CisgICAgY29uc3Ry
dWN0b3Iob3JpZ2luLCBjb25kaXRpb25hbCwgYm9keSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CisgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKKyAgICAgICAgdGhpcy5fY29uZGl0aW9u
YWwgPSBjb25kaXRpb25hbDsKKyAgICAgICAgdGhpcy5fYm9keSA9IGJvZHk7CisgICAgfQorCisg
ICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQorICAgIGdldCBjb25kaXRp
b25hbCgpIHsgcmV0dXJuIHRoaXMuX2NvbmRpdGlvbmFsOyB9CisgICAgZ2V0IGJvZHkoKSB7IHJl
dHVybiB0aGlzLl9ib2R5OyB9CisKKyAgICB0b1N0cmluZygpCisgICAgeworICAgICAgICByZXR1
cm4gIndoaWxlICgiICsgdGhpcy5jb25kaXRpb25hbCArICIpICIgKyB0aGlzLmJvZHk7CisgICAg
fQorfTsKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320406</attachid>
            <date>2017-09-10 16:51:18 -0700</date>
            <delta_ts>2017-09-10 17:17:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176581-20170910165117.patch</filename>
            <type>text/plain</type>
            <size>40529</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODM2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGMyNzFmZWY0OWFkMDI4NTZhNmVmYzdkY2UyY2JlZTZj
ZGI1ODcyNC4uZWI2MTdkNjIxOGQyYTQzNGQ3Zjk5NTQ1ZjFlMTk4NGQ1ZGZiYmY5NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1
IEBACisyMDE3LTA5LTEwICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgV1NMIHNob3VsZCBzdXBwb3J0IHdoaWxlIGxvb3BzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY1ODEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgYSBmZXcgaW50ZXJl
c3RpbmcgcGllY2VzIHRvIHRoaXMgcGF0Y2g6CisgICAgICAgIDEuIEJlY2F1c2UgdGhlIGV2YWx1
YXRvciBpcyBqdXN0IGEgbm9kZS1iYXNlZCBkZXNjZW50IHRocm91Z2ggdGhlIHRyZWUsIHRoZSBp
bXBsZW1lbnRhdGlvbiBvZiBicmVhaworICAgICAgICBhbmQgY29udGludWUgYXJlIGp1c3QgInRo
cm93Ii4KKyAgICAgICAgMi4gVGhlIFJldHVybkNoZWNrZXIgbm93IGhhcyB0byByZXR1cm4gYSB0
aHJlZS1zdGF0ZSBlbnVtIGJlY2F1c2Ugb2YgbmVzdGVkIGJsb2Nrcy4gVGhlIG91dGVyIGJsb2Nr
CisgICAgICAgIGNhcmVzIGFib3V0IGlmIHRoZSBpbm5lciBibG9jayBoYXMgImJyZWFrIiBhcyBv
cHBvc2VkIHRvIGl0IGhhdmluZyBubyByZXR1cm5zIG5vciBicmVha3MvY29udGludWVzLgorICAg
ICAgICAzLiBSZXR1cm5DaGVja2VyIHdpbGwgdHJlYXQgIndoaWxlICh0cnVlKSIgdGhlIHNhbWUg
YXMgeyB9LCBidXQgd2lsbCBub3QgZGVzY2VuZCBkZWVwZXIgZm9yIHRoaW5ncworICAgICAgICBs
aWtlICJ3aGlsZSAoMyA9PSAzKSIuCisgICAgICAgIDQuIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEg
ZmV3IG1vcmUgYm9vbGVhbiBjb25kaXRpb25hbCBmdW5jdGlvbnMgbGlrZSBvcGVyYXRvcjwoKS4K
KyAgICAgICAgNS4gSSBhZGRlZCBhbm90aGVyIHBhc3Mgd2hpY2ggbWFrZXMgc3VyZSB0aGVyZSBh
cmUgbm8gYmFyZSBicmVhay9yZXR1cm4ga2V5d29yZHMgb3V0c2lkZSBvZiBsb29wcy4KKworICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9CcmVhay5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQ2hlY2tVbnJlYWNoYWJsZUNvZGUuanMuCisgICAgICAgIChCcmVhayk6Cisg
ICAgICAgIChCcmVhay5wcm90b3R5cGUuZ2V0IG9yaWdpbik6CisgICAgICAgIChCcmVhay5wcm90
b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNr
TG9vcHMuanM6IENvcGllZCBmcm9tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNr
UmV0dXJucy5qcy4KKyAgICAgICAgKGNoZWNrTG9vcHMpOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0NoZWNrUmV0dXJucy5qczoKKyAgICAgICAgKGNoZWNrUmV0dXJucyk6Cisg
ICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tVbnJlYWNoYWJsZUNvZGUuanM6
CisgICAgICAgIChjaGVja1VucmVhY2hhYmxlQ29kZSk6CisgICAgICAgICogV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQ2hlY2tlci5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9Db250aW51ZS5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
Q2hlY2tSZXR1cm5zLmpzLgorICAgICAgICAoQ29udGludWUpOgorICAgICAgICAoQ29udGludWUu
cHJvdG90eXBlLmdldCBvcmlnaW4pOgorICAgICAgICAoQ29udGludWUucHJvdG90eXBlLnRvU3Ry
aW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanM6Cisg
ICAgICAgIChFdmFsdWF0b3IucHJvdG90eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKEV2
YWx1YXRvci5wcm90b3R5cGUudmlzaXRCcmVhayk6CisgICAgICAgIChFdmFsdWF0b3IucHJvdG90
eXBlLnZpc2l0Q29udGludWUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lu
dHJpbnNpY3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzKToKKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9MZXhlci5qczoKKyAgICAgICAgKExleGVyLnByb3RvdHlwZS5uZXh0KToK
KyAgICAgICAgKExleGVyKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Mb29w
Q2hlY2tlci5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV0
dXJuQ2hlY2tlci5qcy4KKyAgICAgICAgKExvb3BDaGVja2VyKToKKyAgICAgICAgKExvb3BDaGVj
a2VyLnByb3RvdHlwZS52aXNpdEZ1bmNEZWYpOgorICAgICAgICAoTG9vcENoZWNrZXIucHJvdG90
eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKExvb3BDaGVja2VyLnByb3RvdHlwZS52aXNp
dEJyZWFrKToKKyAgICAgICAgKExvb3BDaGVja2VyLnByb3RvdHlwZS52aXNpdENvbnRpbnVlKToK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanM6CisgICAg
ICAgIChOYW1lUmVzb2x2ZXIucHJvdG90eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Ob2RlLmpzOgorICAgICAgICAoTm9kZS5wcm90b3R5cGUu
dmlzaXQpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAg
ICAgICAocGFyc2VQb3NzaWJsZVJlbGF0aW9uYWxJbmVxdWFsaXR5KToKKyAgICAgICAgKHBhcnNl
QnJlYWspOgorICAgICAgICAocGFyc2VDb250aW51ZSk6CisgICAgICAgIChwYXJzZVdoaWxlKToK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzOgorICAgICAgICAo
cHJlcGFyZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV0dXJuQ2hlY2tl
ci5qczoKKyAgICAgICAgKFJldHVybkNoZWNrZXIpOgorICAgICAgICAoUmV0dXJuQ2hlY2tlci5w
cm90b3R5cGUudmlzaXRGdW5jRGVmKToKKyAgICAgICAgKFJldHVybkNoZWNrZXIucHJvdG90eXBl
LnZpc2l0QmxvY2spOgorICAgICAgICAoUmV0dXJuQ2hlY2tlci5wcm90b3R5cGUudmlzaXRJZlN0
YXRlbWVudCk6CisgICAgICAgIChSZXR1cm5DaGVja2VyLnByb3RvdHlwZS52aXNpdFdoaWxlTG9v
cCk6CisgICAgICAgIChSZXR1cm5DaGVja2VyLnByb3RvdHlwZS52aXNpdFJldHVybik6CisgICAg
ICAgIChSZXR1cm5DaGVja2VyLnByb3RvdHlwZS52aXNpdEJyZWFrKToKKyAgICAgICAgKFJldHVy
bkNoZWNrZXIucHJvdG90eXBlLnZpc2l0Q29udGludWUpOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzOgorICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZp
c2l0Q29udGludWUpOgorICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZpc2l0QnJlYWspOgor
ICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKFJl
d3JpdGVyKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJh
cnlQcm9sb2d1ZS5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0
bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qczoKKyAgICAgICAg
KFRFU1RfcmV0dXJuSWYpOgorICAgICAgICAoVEVTVF9zaW1wbGVXaGlsZSk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5yZWFjaGFibGVDb2RlQ2hlY2tlci5qczoKKyAgICAg
ICAgKFVucmVhY2hhYmxlQ29kZUNoZWNrZXIpOgorICAgICAgICAoVW5yZWFjaGFibGVDb2RlQ2hl
Y2tlci5wcm90b3R5cGUudmlzaXRCbG9jayk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVmlzaXRvci5qczoKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0V2hpbGVM
b29wKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0Q29udGludWUpOgorICAgICAg
ICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRCcmVhayk6CisgICAgICAgICogV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvV2hpbGVMb29wLmpzOiBDb3BpZWQgZnJvbSBUb29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9DaGVja1JldHVybnMuanMuCisgICAgICAgIChXaGlsZUxvb3ApOgorICAgICAg
ICAoV2hpbGVMb29wLnByb3RvdHlwZS5nZXQgb3JpZ2luKToKKyAgICAgICAgKFdoaWxlTG9vcC5w
cm90b3R5cGUuZ2V0IGNvbmRpdGlvbmFsKToKKyAgICAgICAgKFdoaWxlTG9vcC5wcm90b3R5cGUu
Z2V0IGJvZHkpOgorICAgICAgICAoV2hpbGVMb29wLnByb3RvdHlwZS50b1N0cmluZyk6CisKIDIw
MTctMDktMTAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFRy
eSB0byBhdm9pZCBjcmVhdGluZyB0aGUgZGVmYXVsdCBXS1dlYnNpdGVEYXRhU3RvcmUgdW50aWwg
aXRzIGFjdHVhbGx5IG5lZWRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0FsbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwppbmRl
eCA2MGI3NWZkMzM3YzI3ZjZiY2JiNWM3ZjlmYWRkZjE4YjJlY2NlNWZhLi43MmYwYjljZGMwODUz
NGU3N2NjYmE0NmQxMzkyMWNlZjM2ZTZkYzZjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9BbGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
QWxsLmpzCkBAIC0zOSwxOCArMzksMjEgQEAgbG9hZCgiQXJyYXlUeXBlLmpzIik7CiBsb2FkKCJB
c3NpZ25tZW50LmpzIik7CiBsb2FkKCJCbG9jay5qcyIpOwogbG9hZCgiQm9vbExpdGVyYWwuanMi
KTsKK2xvYWQoIkJyZWFrLmpzIik7CiBsb2FkKCJDYWxsQXNzaWdubWVudC5qcyIpOwogbG9hZCgi
Q2FsbEV4cHJlc3Npb24uanMiKTsKIGxvYWQoIkNhbGxGdW5jdGlvbi5qcyIpOwogbG9hZCgiQ2Fz
dEV4cHJlc3Npb24uanMiKTsKIGxvYWQoIkNoZWNrLmpzIik7CiBsb2FkKCJDaGVja0xpdGVyYWxU
eXBlcy5qcyIpOworbG9hZCgiQ2hlY2tMb29wcy5qcyIpOwogbG9hZCgiQ2hlY2tSZWN1cnNpb24u
anMiKTsKIGxvYWQoIkNoZWNrUmV0dXJucy5qcyIpOwogbG9hZCgiQ2hlY2tVbnJlYWNoYWJsZUNv
ZGUuanMiKTsKIGxvYWQoIkNoZWNrZXIuanMiKTsKIGxvYWQoIkNvbW1hRXhwcmVzc2lvbi5qcyIp
OwogbG9hZCgiQ29uc3RleHByVHlwZVBhcmFtZXRlci5qcyIpOworbG9hZCgiQ29udGludWUuanMi
KTsKIGxvYWQoIkRlcmVmZXJlbmNlRXhwcmVzc2lvbi5qcyIpOwogbG9hZCgiRG90RXhwcmVzc2lv
bi5qcyIpOwogbG9hZCgiRUFycmF5UmVmLmpzIik7CkBAIC03Niw2ICs3OSw3IEBAIGxvYWQoIkxl
eGVyLmpzIik7CiBsb2FkKCJMZXhlclRva2VuLmpzIik7CiBsb2FkKCJMaXRlcmFsVHlwZUNoZWNr
ZXIuanMiKTsKIGxvYWQoIkxvZ2ljYWxOb3QuanMiKTsKK2xvYWQoIkxvb3BDaGVja2VyLmpzIik7
CiBsb2FkKCJNYWtlUHRyRXhwcmVzc2lvbi5qcyIpOwogbG9hZCgiTmFtZUNvbnRleHQuanMiKTsK
IGxvYWQoIk5hbWVSZXNvbHZlci5qcyIpOwpAQCAtMTIyLDMgKzEyNiw0IEBAIGxvYWQoIlZpc2l0
aW5nU2V0LmpzIik7CiBsb2FkKCJXU3ludGF4RXJyb3IuanMiKTsKIGxvYWQoIldUcmFwRXJyb3Iu
anMiKTsKIGxvYWQoIldUeXBlRXJyb3IuanMiKTsKK2xvYWQoIldoaWxlTG9vcC5qcyIpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQnJlYWsuanMgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9CcmVhay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTIyNjEwNmM5ZmY5
ZTY4NmQwYmIxZDU2ZTc5NWQ0NzUzZDcxNWMxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvQnJlYWsuanMKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworInVzZSBzdHJpY3QiOworCitjbGFz
cyBCcmVhayBleHRlbmRzIE5vZGUgeworICAgIGNvbnN0cnVjdG9yKG9yaWdpbikKKyAgICB7Cisg
ICAgICAgIHN1cGVyKCk7CisgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKKyAgICB9Cisg
ICAgCisgICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQorICAgIAorICAg
IHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiAiQnJlYWsiOworICAgIH0KK307CisK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrTG9vcHMuanMg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja0xvb3BzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNiMzYyZTllZmQ3MDUyZmE1ZDE5ZjBlZDYxMjkyZDE4OTQ3ZWFhOGQKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja0xvb3BzLmpzCkBAIC0wLDAg
KzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyJ1
c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gY2hlY2tMb29wcyhwcm9ncmFtKQoreworICAgIHByb2dy
YW0udmlzaXQobmV3IExvb3BDaGVja2VyKCkpOworfQorCmRpZmYgLS1naXQgYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja1JldHVybnMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9DaGVja1JldHVybnMuanMKaW5kZXggNGI2MGExYjI3ODdlYTJiZDhlMmEzZmE5
NjY5MDhjODNmODgzYjEyYS4uNDY1ZmUzNjhhNDhmYzhiYjNlZjJiNzgxNzA4NzcxYjE2NjZmN2Rm
MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tSZXR1cm5z
LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrUmV0dXJucy5qcwpA
QCAtMjYsNiArMjYsNiBAQAogCiBmdW5jdGlvbiBjaGVja1JldHVybnMocHJvZ3JhbSkKIHsKLSAg
ICBwcm9ncmFtLnZpc2l0KG5ldyBSZXR1cm5DaGVja2VyKCkpOworICAgIHByb2dyYW0udmlzaXQo
bmV3IFJldHVybkNoZWNrZXIocHJvZ3JhbSkpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja1VucmVhY2hhYmxlQ29kZS5qcyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrVW5yZWFjaGFibGVDb2RlLmpzCmluZGV4IGQ1NDYwNmI3
MmE5ZTNiYTg5ZmQ0ZGUxNmFkNzExNWMwN2IxNmJhNjIuLmRmMzFkYTk0NmQxNTFiZjFkZDg2YmQz
YjRmNTNmYzY4N2RjYTkzNWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0NoZWNrVW5yZWFjaGFibGVDb2RlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0NoZWNrVW5yZWFjaGFibGVDb2RlLmpzCkBAIC0yNiw2ICsyNiw2IEBACiAKIGZ1bmN0
aW9uIGNoZWNrVW5yZWFjaGFibGVDb2RlKHByb2dyYW0pCiB7Ci0gICAgcHJvZ3JhbS52aXNpdChu
ZXcgVW5yZWFjaGFibGVDb2RlQ2hlY2tlcigpKTsKKyAgICBwcm9ncmFtLnZpc2l0KG5ldyBVbnJl
YWNoYWJsZUNvZGVDaGVja2VyKHByb2dyYW0pKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0NoZWNrZXIuanMKaW5kZXggYjY2ZDk0YzIyNWQzN2E1MzA3ZmUyMjRhOGM3ZDk4OTAx
MjZlZWMzMC4uNWMxMDIxNjNjZTgzMWI4MTQwMDQ0ODkzMGQ5ZTg4MmU1MDBjYjFiOSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCkBAIC0yMzcsNiArMjM3LDE2IEBA
IGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgaWYgKG5vZGUuZWxzZUJv
ZHkpCiAgICAgICAgICAgICBub2RlLmVsc2VCb2R5LnZpc2l0KHRoaXMpOwogICAgIH0KKworICAg
IHZpc2l0V2hpbGVMb29wKG5vZGUpCisgICAgeworICAgICAgICBsZXQgY29uZGl0aW9uYWxSZXN1
bHRUeXBlID0gbm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKTsKKyAgICAgICAgaWYgKCFjb25k
aXRpb25hbFJlc3VsdFR5cGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRyeWluZyB0
byBuZWdhdGUgc29tZXRoaW5nIHdpdGggbm8gdHlwZTogIiArIG5vZGUuY29uZGl0aW9uYWwpOwor
ICAgICAgICBpZiAoIWNvbmRpdGlvbmFsUmVzdWx0VHlwZS5lcXVhbHModGhpcy5fcHJvZ3JhbS5p
bnRyaW5zaWNzLmJvb2wpKQorICAgICAgICAgICAgdGhyb3cgbmV3IFdFcnJvcigiVHJ5aW5nIHRv
IG5lZ2F0ZSBzb21ldGhpbmcgdGhhdCBpc24ndCBhIGJvb2w6ICIgKyBub2RlLmNvbmRpdGlvbmFs
KTsKKyAgICAgICAgbm9kZS5ib2R5LnZpc2l0KHRoaXMpOworICAgIH0KICAgICAKICAgICB2aXNp
dENvbW1hRXhwcmVzc2lvbihub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0NvbnRpbnVlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQ29udGludWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I1Y2M5MzcyNjQ1ZDQ3MGQwZjZhNTU0NTJlZTU3
M2JhMDYxZDVlOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0NvbnRpbnVlLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgQ29udGludWUgZXh0
ZW5kcyBOb2RlIHsKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4pCisgICAgeworICAgICAgICBzdXBl
cigpOworICAgICAgICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47CisgICAgfQorICAgIAorICAgIGdl
dCBvcmlnaW4oKSB7IHJldHVybiB0aGlzLl9vcmlnaW47IH0KKyAgICAKKyAgICB0b1N0cmluZygp
CisgICAgeworICAgICAgICByZXR1cm4gIkNvbnRpbnVlIjsKKyAgICB9Cit9OworCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanMgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanMKaW5kZXggNzcyMTllNjMzOTc0YTEw
ZDYxMDM0YjIzYzNjOGRlNTU5YzkzYWYzOS4uMTFiZDk5MzJjMTNlNzg4ZGFkZjAyZDlmMWNiY2Q5
ZDVhNjk1OWNhZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZh
bHVhdG9yLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0V2YWx1YXRvci5q
cwpAQCAtMTU4LDYgKzE1OCwzMSBAQCBjbGFzcyBFdmFsdWF0b3IgZXh0ZW5kcyBWaXNpdG9yIHsK
ICAgICAgICAgZWxzZSBpZiAobm9kZS5lbHNlQm9keSkKICAgICAgICAgICAgIHJldHVybiBub2Rl
LmVsc2VCb2R5LnZpc2l0KHRoaXMpOwogICAgIH0KKworICAgIHZpc2l0V2hpbGVMb29wKG5vZGUp
CisgICAgeworICAgICAgICB3aGlsZSAobm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKS5sb2Fk
VmFsdWUoKSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBub2RlLmJvZHku
dmlzaXQodGhpcyk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAg
aWYgKGUgaW5zdGFuY2VvZiBCcmVhaykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBDb250aW51ZSkKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIHZpc2l0QnJlYWsobm9kZSkKKyAgICB7CisgICAgICAgIHRo
cm93IG5vZGU7CisgICAgfQorCisgICAgdmlzaXRDb250aW51ZShub2RlKQorICAgIHsKKyAgICAg
ICAgdGhyb3cgbm9kZTsKKyAgICB9CiAgICAgCiAgICAgdmlzaXRDYWxsRXhwcmVzc2lvbihub2Rl
KQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJp
bnNpY3MuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCmlu
ZGV4IGJjYTQwNzM3YjQ1MjRiM2RmZDM1ODRjNmMzODQ0ZDA2YWVhNjI5YWUuLjFiZDgyMWQ1YTYz
ZThkNmUzMDc2NGUxNzA5ZDA3NTQ5YWI3M2Q4MjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvSW50cmluc2ljcy5qcwpAQCAtMTc4LDYgKzE3OCw2MiBAQCBjbGFzcyBJbnRyaW5z
aWNzIHsKICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA9PSBy
aWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCisgICAgICAgIHRo
aXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8PD4oaW50LGlu
dCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1l
bnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgorICAgICAgICAgICAgICAgICAgICBFUHRyLmJv
eChsZWZ0LmxvYWRWYWx1ZSgpIDwgcmlnaHQubG9hZFZhbHVlKCkpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIAorICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSBi
b29sIG9wZXJhdG9yPDw+KHVpbnQsdWludCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgorICAg
ICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDwgcmlnaHQubG9hZFZh
bHVlKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9tYXAuc2V0
KAorICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPD08PihpbnQsaW50KSIsCisgICAg
ICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KFtsZWZ0LCByaWdodF0pID0+CisgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9h
ZFZhbHVlKCkgPD0gcmlnaHQubG9hZFZhbHVlKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IAorICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJh
dG9yPD08Pih1aW50LHVpbnQpIiwKKyAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAg
ICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KKyAgICAgICAgICAg
ICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA8PSByaWdodC5sb2FkVmFsdWUoKSk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAg
ICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PD4oaW50LGludCkiLAorICAgICAgICAgICAg
ZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwg
cmlnaHRdKSA9PgorICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgp
ID4gcmlnaHQubG9hZFZhbHVlKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAg
ICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPjw+KHVp
bnQsdWludCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgorICAgICAgICAgICAgICAgICAgICBF
UHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID4gcmlnaHQubG9hZFZhbHVlKCkpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgIm5h
dGl2ZSBib29sIG9wZXJhdG9yPj08PihpbnQsaW50KSIsCisgICAgICAgICAgICBmdW5jID0+IHsK
KyAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+
CisgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPj0gcmlnaHQu
bG9hZFZhbHVlKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9t
YXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPj08Pih1aW50LHVpbnQp
IiwKKyAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KKyAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3go
bGVmdC5sb2FkVmFsdWUoKSA+PSByaWdodC5sb2FkVmFsdWUoKSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgCiAgICAgICAgIGxldCBhcnJheUVsZW1lbnRQdHIgPSBmdW5jID0+IHsKICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3JlZiwgaW5kZXhdLCBub2RlKSA9PiB7CiAg
ICAgICAgICAgICAgICAgcmVmID0gcmVmLmxvYWRWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9MZXhlci5qcwppbmRleCA5NGUwMTQxMDMzODZiYjg3NzQ4N2U4MjczNDlkYWZlZTU4
MjBjYTU0Li5mYTA4ZTdlZWQwOGYyYTNiYWE4YzllYmJhOGNjZTUzOGIyYWE1Y2UyIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qcworKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qcwpAQCAtMTE4LDcgKzExOCw3IEBAIGNsYXNz
IExleGVyIHsKICAgICAgICAgaWYgKC9eKFswLTldKlwuWzAtOV0rKXwoWzAtOV0rXC5bMC05XSop
Ly50ZXN0KHJlbGV2YW50VGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0KCJkb3VibGVM
aXRlcmFsIik7CiAgICAgICAgIAotICAgICAgICBpZiAoL14tPnw9Pnw8PXw9PXwhPXxcKz18LT18
XCo9fFwvPXwlPXxePXxcfD18Jj18KFt7fSgpXFtcXT86PSsqXC8sLiUhfl4mfDw+QDstXSkvLnRl
c3QocmVsZXZhbnRUZXh0KSkKKyAgICAgICAgaWYgKC9eLT58Pj18PD18PT18IT18XCs9fC09fFwq
PXxcLz18JT18Xj18XHw9fCY9fChbe30oKVxbXF0/Oj0rKlwvLC4lIX5eJnw8PkA7LV0pLy50ZXN0
KHJlbGV2YW50VGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0KCJwdW5jdHVhdGlvbiIp
OwogICAgICAgICAKICAgICAgICAgbGV0IHJlbWFpbmluZyA9IHJlbGV2YW50VGV4dC5zdWJzdHJp
bmcoMCwgMjApLnNwbGl0KC9ccy8pWzBdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvTG9vcENoZWNrZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9Mb29wQ2hlY2tlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWYwM2VlNDY4YjU5ZjlhOGVkZDQyODRlZWI4
YWFlZTVjMTc0N2I5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvTG9vcENoZWNrZXIuanMKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworInVzZSBzdHJpY3QiOworCitjbGFzcyBMb29wQ2hl
Y2tlciBleHRlbmRzIFZpc2l0b3IgeworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAg
IHN1cGVyKCk7CisgICAgICAgIHRoaXMuX2xvb3BEZXB0aCA9IDA7CisgICAgfQorCisgICAgdmlz
aXRGdW5jRGVmKG5vZGUpCisgICAgeworICAgICAgICBpZiAodGhpcy5fbG9vcERlcHRoICE9IDAp
IHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTG9vcENoZWNrZXIgZG9lcyBub3QgdW5k
ZXJzdGFuZCBuZXN0ZWQgZnVuY3Rpb25zLiIpOworICAgICAgICB9CisgICAgICAgIHN1cGVyLnZp
c2l0RnVuY0RlZihub2RlKTsKKyAgICB9CisKKyAgICB2aXNpdFdoaWxlTG9vcChub2RlKQorICAg
IHsKKyAgICAgICAgbm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKTsKKyAgICAgICAgKyt0aGlz
Ll9sb29wRGVwdGg7CisgICAgICAgIG5vZGUuYm9keS52aXNpdCh0aGlzKTsKKyAgICAgICAgaWYg
KHRoaXMuX2xvb3BEZXB0aCA9PSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRo
ZSBudW1iZXIgb2YgbmVzdGVkIGxvb3BzIGlzIG5lZ2F0aXZlISIpOworICAgICAgICB9CisgICAg
ICAgIC0tdGhpcy5fbG9vcERlcHRoOworICAgIH0KKyAgICAKKyAgICB2aXNpdEJyZWFrKG5vZGUp
CisgICAgeworICAgICAgICBpZiAodGhpcy5fbG9vcERlcHRoID09IDApIHsKKyAgICAgICAgICAg
IHRocm93IG5ldyBXRXJyb3IoIkJyZWFrIHN0YXRlbWVudCB3aXRob3V0IGVuY2xvc2luZyBsb29w
ISIpOworICAgICAgICB9CisgICAgICAgIHN1cGVyLnZpc2l0QnJlYWsobm9kZSk7CisgICAgfQor
ICAgIAorICAgIHZpc2l0Q29udGludWUobm9kZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9s
b29wRGVwdGggPT0gMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFdFcnJvcigiQ29udGludWUg
c3RhdGVtZW50IHdpdGhvdXQgZW5jbG9zaW5nIGxvb3AhIik7CisgICAgICAgIH0KKyAgICAgICAg
c3VwZXIudmlzaXRDb250aW51ZShub2RlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMKaW5kZXggMTE2ZTMxODI4NTJkODRjNmU3ZGQ2
Y2E3MzJlN2FjOWY5OWEyZWQ5ZC4uNjA3ZmM1YzFiNjg3YmJiOTc4NGJhNjAyZmI0NzBkYWU0ZmU0
Mzg4MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZVJlc29s
dmVyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZlci5q
cwpAQCAtOTksNiArOTksMTMgQEAgY2xhc3MgTmFtZVJlc29sdmVyIGV4dGVuZHMgVmlzaXRvciB7
CiAgICAgICAgIGlmIChub2RlLmVsc2VCb2R5KQogICAgICAgICAgICAgbm9kZS5lbHNlQm9keS52
aXNpdChuZXcgTmFtZVJlc29sdmVyKG5ldyBOYW1lQ29udGV4dCh0aGlzLl9uYW1lQ29udGV4dCkp
KTsKICAgICB9CisKKyAgICB2aXNpdFdoaWxlTG9vcChub2RlKQorICAgIHsKKyAgICAgICAgbm9k
ZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKTsKKyAgICAgICAgLy8gSWYgc3RhdGVtZW50J3MgYm9k
aWVzIG1pZ2h0IG5vdCBiZSBCbG9ja3MsIHNvIHdlIG5lZWQgdG8gZXhwbGljaXRseSBnaXZlIHRo
ZW0gYSBuZXcgY29udGV4dC4KKyAgICAgICAgbm9kZS5ib2R5LnZpc2l0KG5ldyBOYW1lUmVzb2x2
ZXIobmV3IE5hbWVDb250ZXh0KHRoaXMuX25hbWVDb250ZXh0KSkpOworICAgIH0KICAgICAKICAg
ICB2aXNpdFByb3RvY29sRGVjbChub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL05vZGUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9Ob2RlLmpzCmluZGV4IDA0ZTM4ODk4Yjk5NDY2MDc0ZmJlOGEwYTBlYTdjNGNkOWU1M2ZjNmEu
LmMxMjBkNzIzYzRiMzQ5ZDNmM2NhODVkNjY4Mjk1YTM4MjAwZWQyYzIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05vZGUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTm9kZS5qcwpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBOb2RlIHsKICAg
ICAgICAgbGV0IHJldHVyblZhbHVlID0gdmlzaXRGdW5jLmNhbGwodmlzaXRvciwgdGhpcyk7CiAg
ICAgICAgIGlmICgicmV0dXJuVmFsdWUiIGluIHZpc2l0b3IpCiAgICAgICAgICAgICByZXR1cm5W
YWx1ZSA9IHZpc2l0b3IucmV0dXJuVmFsdWU7Ci0gICAgICAgIG1lbW9UYWJsZS5zZXQodGhpcywg
cmV0dXJuVmFsdWUpOworICAgICAgICAvL21lbW9UYWJsZS5zZXQodGhpcywgcmV0dXJuVmFsdWUp
OwogICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwppbmRleCBhNjFhNDhjYzljMTZjMzVkZjE1Yjc1MjkzNmZh
Njg1ODk4NjBlMjFhLi41MDZjYmRiYzA5NzY0N2JmYjZjYmIyOTI3NWY4M2NlNTliM2JlZWE1IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwpAQCAtNDA0LDcgKzQwNCw3IEBA
IGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCkK
ICAgICAKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlUmVsYXRpb25hbEluZXF1YWxpdHkoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHBhcnNlTGVmdE9wZXJhdG9yQ2FsbChbIjwiLCAiPiIsICI8
PSIsICI9PiJdLCBwYXJzZVBvc3NpYmxlU2hpZnQpOworICAgICAgICByZXR1cm4gcGFyc2VMZWZ0
T3BlcmF0b3JDYWxsKFsiPCIsICI+IiwgIjw9IiwgIj49Il0sIHBhcnNlUG9zc2libGVTaGlmdCk7
CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIHBhcnNlUG9zc2libGVSZWxhdGlvbmFsRXF1YWxp
dHkoKQpAQCAtNTM1LDYgKzUzNSwyMCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4s
IGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGNvbnN1bWUoIjsiKTsKICAgICAgICAg
cmV0dXJuIG5ldyBSZXR1cm4ob3JpZ2luLCBleHByZXNzaW9uKTsKICAgICB9CisgICAgCisgICAg
ZnVuY3Rpb24gcGFyc2VCcmVhaygpCisgICAgeworICAgICAgICBsZXQgb3JpZ2luID0gY29uc3Vt
ZSgiYnJlYWsiKTsKKyAgICAgICAgY29uc3VtZSgiOyIpOworICAgICAgICByZXR1cm4gbmV3IEJy
ZWFrKG9yaWdpbik7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHBhcnNlQ29udGludWUoKQor
ICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoImNvbnRpbnVlIik7CisgICAgICAg
IGNvbnN1bWUoIjsiKTsKKyAgICAgICAgcmV0dXJuIG5ldyBDb250aW51ZShvcmlnaW4pOworICAg
IH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlSWZTdGF0ZW1lbnQoKQogICAgIHsKQEAgLTU0OCw2ICs1
NjIsMTYgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBsaW5lTnVtYmVyT2Zmc2V0
LCB0ZXh0KQogICAgICAgICAgICAgZWxzZUJvZHkgPSBwYXJzZVN0YXRlbWVudCgpOwogICAgICAg
ICByZXR1cm4gbmV3IElmU3RhdGVtZW50KG9yaWdpbiwgbmV3IENhc3RFeHByZXNzaW9uKGNvbmRp
dGlvbmFsLm9yaWdpbiwgbmV3IFR5cGVSZWYoY29uZGl0aW9uYWwub3JpZ2luLCAiYm9vbCIsIFtd
KSwgW10sIFtjb25kaXRpb25hbF0pLCBib2R5LCBlbHNlQm9keSk7CiAgICAgfQorCisgICAgZnVu
Y3Rpb24gcGFyc2VXaGlsZSgpCisgICAgeworICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgi
d2hpbGUiKTsKKyAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBsZXQgY29uZGl0aW9uYWwg
PSBwYXJzZUV4cHJlc3Npb24oKTsKKyAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICBsZXQg
Ym9keSA9IHBhcnNlU3RhdGVtZW50KCk7CisgICAgICAgIHJldHVybiBuZXcgV2hpbGVMb29wKG9y
aWdpbiwgbmV3IENhc3RFeHByZXNzaW9uKGNvbmRpdGlvbmFsLm9yaWdpbiwgbmV3IFR5cGVSZWYo
Y29uZGl0aW9uYWwub3JpZ2luLCAiYm9vbCIsIFtdKSwgW10sIFtjb25kaXRpb25hbF0pLCBib2R5
KTsKKyAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gcGFyc2VWYXJpYWJsZURlY2xzKCkKICAgICB7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcwppbmRleCAyYmRhOTI1MDE3
NTkxOTUyYmU1YzMxY2I5YTE2MTMyNmZmZTkzZjRhLi5lNTZlMzhmNzA4MzQxNzJiOWIzNTc2ODQ0
OTdhZTFmNjA4Y2Q1OGVlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9QcmVwYXJlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUu
anMKQEAgLTM2LDYgKzM2LDcgQEAgZnVuY3Rpb24gcHJlcGFyZShvcmlnaW4sIGxpbmVOdW1iZXJP
ZmZzZXQsIHRleHQpCiAgICAgY2hlY2tMaXRlcmFsVHlwZXMocHJvZ3JhbSk7CiAgICAgY2hlY2tS
ZXR1cm5zKHByb2dyYW0pOwogICAgIGNoZWNrVW5yZWFjaGFibGVDb2RlKHByb2dyYW0pOworICAg
IGNoZWNrTG9vcHMocHJvZ3JhbSk7CiAgICAgY2hlY2tSZWN1cnNpb24ocHJvZ3JhbSk7CiAgICAg
aW5saW5lKHByb2dyYW0pOwogICAgIHJldHVybiBwcm9ncmFtOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV0dXJuQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1JldHVybkNoZWNrZXIuanMKaW5kZXggNDcyYzBkMGMwZmE4MzVkOTc1
YjRkMmE5NDdjOWMzZGQ1MDAyMDY4NC4uOWI2OGYyM2EzNjIxMzgxZTFiNzdiZjMwMDhkZmIyMTdm
ODgyZjlmYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV0dXJu
Q2hlY2tlci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXR1cm5DaGVj
a2VyLmpzCkBAIC0yNSwzMSArMjUsODEgQEAKICJ1c2Ugc3RyaWN0IjsKIAogY2xhc3MgUmV0dXJu
Q2hlY2tlciBleHRlbmRzIFZpc2l0b3IgeworICAgIGNvbnN0cnVjdG9yKHByb2dyYW0pCisgICAg
eworICAgICAgICBzdXBlcigpOworICAgICAgICB0aGlzLnJldHVyblN0eWxlID0geworICAgICAg
ICAgICAgRGVmaW5pdGVseVJldHVybnM6ICJEZWZpbml0ZWx5IFJldHVybnMiLAorICAgICAgICAg
ICAgRGVmaW5pdGVseURvZXNudFJldHVybjogIkRlZmluaXRlbHkgRG9lc24ndCBSZXR1cm4iLAor
ICAgICAgICAgICAgSGFzbnRSZXR1cm5lZFlldDogIkhhc24ndCBSZXR1cm5lZCBZZXQiCisgICAg
ICAgIH07CisgICAgICAgIHRoaXMuX3Byb2dyYW0gPSBwcm9ncmFtOworICAgIH0KKwogICAgIHZp
c2l0RnVuY0RlZihub2RlKQogICAgIHsKICAgICAgICAgaWYgKG5vZGUucmV0dXJuVHlwZS5lcXVh
bHMobm9kZS5wcm9ncmFtLmludHJpbnNpY3Mudm9pZCkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIAotICAgICAgICBpZiAoIW5vZGUuYm9keS52aXNpdCh0aGlzKSkKKyAgICAgICAgbGV0
IGJvZHlWYWx1ZSA9IG5vZGUuYm9keS52aXNpdCh0aGlzKTsKKyAgICAgICAgaWYgKGJvZHlWYWx1
ZSA9PSB0aGlzLnJldHVyblN0eWxlLkRlZmluaXRlbHlEb2VzbnRSZXR1cm4gfHwgYm9keVZhbHVl
ID09IHRoaXMucmV0dXJuU3R5bGUuSGFzbnRSZXR1cm5lZFlldCkKICAgICAgICAgICAgIHRocm93
IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkZ1bmN0aW9uIGRvZXMg
bm90IHJldHVybiIpOwogICAgIH0KICAgICAKICAgICB2aXNpdEJsb2NrKG5vZGUpCiAgICAgewot
ICAgICAgICAvLyBGSVhNRTogVGhpcyBpc24ndCByaWdodCBmb3IgYnJlYWsvY29udGludWUuCi0g
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYyNjMK
LSAgICAgICAgcmV0dXJuIG5vZGUuc3RhdGVtZW50cy5yZWR1Y2UoKHJlc3VsdCwgc3RhdGVtZW50
KSA9PiByZXN1bHQgfHwgc3RhdGVtZW50LnZpc2l0KHRoaXMpLCBmYWxzZSk7CisgICAgICAgIGZv
ciAobGV0IHN0YXRlbWVudCBvZiBub2RlLnN0YXRlbWVudHMpIHsKKyAgICAgICAgICAgIHN3aXRj
aCAoc3RhdGVtZW50LnZpc2l0KHRoaXMpKSB7CisgICAgICAgICAgICBjYXNlIHRoaXMucmV0dXJu
U3R5bGUuRGVmaW5pdGVseVJldHVybnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0
dXJuU3R5bGUuRGVmaW5pdGVseVJldHVybnM7CisgICAgICAgICAgICBjYXNlIHRoaXMucmV0dXJu
U3R5bGUuRGVmaW5pdGVseURvZXNudFJldHVybjoKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5yZXR1cm5TdHlsZS5EZWZpbml0ZWx5RG9lc250UmV0dXJuOworICAgICAgICAgICAgY2FzZSB0
aGlzLnJldHVyblN0eWxlLkhhc250UmV0dXJuZWRZZXQ6CisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJu
U3R5bGUuSGFzbnRSZXR1cm5lZFlldDsKICAgICB9CiAKICAgICB2aXNpdElmU3RhdGVtZW50KG5v
ZGUpCiAgICAgewotICAgICAgICByZXR1cm4gbm9kZS5lbHNlQm9keSAmJiBub2RlLmJvZHkudmlz
aXQodGhpcykgJiYgbm9kZS5lbHNlQm9keS52aXNpdCh0aGlzKTsKKyAgICAgICAgaWYgKG5vZGUu
ZWxzZUJvZHkpIHsKKyAgICAgICAgICAgIGxldCBib2R5VmFsdWUgPSBub2RlLmJvZHkudmlzaXQo
dGhpcyk7CisgICAgICAgICAgICBsZXQgZWxzZVZhbHVlID0gbm9kZS5lbHNlQm9keS52aXNpdCh0
aGlzKTsKKyAgICAgICAgICAgIGlmIChib2R5VmFsdWUgPT0gdGhpcy5yZXR1cm5TdHlsZS5EZWZp
bml0ZWx5UmV0dXJucyAmJiBlbHNlVmFsdWUgPT0gdGhpcy5yZXR1cm5TdHlsZS5EZWZpbml0ZWx5
UmV0dXJucykKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5TdHlsZS5EZWZpbml0
ZWx5UmV0dXJuczsKKyAgICAgICAgICAgIGlmIChib2R5VmFsdWUgPT0gdGhpcy5yZXR1cm5TdHls
ZS5EZWZpbml0ZWx5RG9lc250UmV0dXJuICYmIGVsc2VWYWx1ZSA9PSB0aGlzLnJldHVyblN0eWxl
LkRlZmluaXRlbHlEb2VzbnRSZXR1cm4pCisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0
dXJuU3R5bGUuRGVmaW5pdGVseURvZXNudFJldHVybjsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdGhpcy5yZXR1cm5TdHlsZS5IYXNudFJldHVybmVkWWV0OwogICAgIH0KIAotICAgIC8vIElm
IGEgbG9vcCByZXR1cm5zLCB0aGVuIGl0IGNvdW50cyBvbmx5IGlmIHRoZSBsb29wIGlzIGd1YXJh
bnRlZWQgdG8gcnVuIGF0IGxlYXN0IG9uY2UuCisgICAgdmlzaXRXaGlsZUxvb3Aobm9kZSkKKyAg
ICB7CisgICAgICAgIGlmIChub2RlLmNvbmRpdGlvbmFsIGluc3RhbmNlb2YgQ2FzdEV4cHJlc3Np
b24gJiYgbm9kZS5jb25kaXRpb25hbC5yZXR1cm5UeXBlIGluc3RhbmNlb2YgVHlwZVJlZiAmJiBu
b2RlLmNvbmRpdGlvbmFsLnJldHVyblR5cGUuZXF1YWxzKHRoaXMuX3Byb2dyYW0uaW50cmluc2lj
cy5ib29sKSAmJiBub2RlLmNvbmRpdGlvbmFsLmFyZ3VtZW50TGlzdC5sZW5ndGggPT0gMSAmJiBu
b2RlLmNvbmRpdGlvbmFsLmFyZ3VtZW50TGlzdFswXS5saXN0Lmxlbmd0aCA9PSAxICYmIG5vZGUu
Y29uZGl0aW9uYWwuYXJndW1lbnRMaXN0WzBdLmxpc3RbMF0gaW5zdGFuY2VvZiBCb29sTGl0ZXJh
bCAmJiBub2RlLmNvbmRpdGlvbmFsLmFyZ3VtZW50TGlzdFswXS5saXN0WzBdLnZhbHVlKSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKG5vZGUuYm9keS52aXNpdCh0aGlzKSkgeworICAgICAgICAgICAg
Y2FzZSB0aGlzLnJldHVyblN0eWxlLkRlZmluaXRlbHlSZXR1cm5zOgorICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzLnJldHVyblN0eWxlLkRlZmluaXRlbHlSZXR1cm5zOworICAgICAgICAgICAg
Y2FzZSB0aGlzLnJldHVyblN0eWxlLkRlZmluaXRlbHlEb2VzbnRSZXR1cm46CisgICAgICAgICAg
ICBjYXNlIHRoaXMucmV0dXJuU3R5bGUuSGFzbnRSZXR1cm5lZFlldDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5yZXR1cm5TdHlsZS5IYXNudFJldHVybmVkWWV0OworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLnJldHVyblN0eWxlLkhhc250UmV0dXJu
ZWRZZXQ7CisgICAgfQogICAgIAogICAgIHZpc2l0UmV0dXJuKG5vZGUpCiAgICAgewotICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuU3R5bGUuRGVmaW5pdGVs
eVJldHVybnM7CisgICAgfQorCisgICAgdmlzaXRCcmVhayhub2RlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMucmV0dXJuU3R5bGUuRGVmaW5pdGVseURvZXNudFJldHVybjsKKyAgICB9CisK
KyAgICB2aXNpdENvbnRpbnVlKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5yZXR1
cm5TdHlsZS5EZWZpbml0ZWx5RG9lc250UmV0dXJuOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKaW5kZXggOTU4ODFhYmVhY2E3OTFmYTgyNzVmZWJm
OTA0NGZkZWZlNDUyZDM5MS4uYWQ3YTAwY2I1MmYxYzQwZjgwMDM5MzcwYjBjODEzY2ZiNmVlNjVk
NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKQEAgLTE5OSw2
ICsxOTksMTYgQEAgY2xhc3MgUmV3cml0ZXIgZXh0ZW5kcyBWaXNpdG9yQmFzZSB7CiAgICAgICAg
IHJldHVybiBuZXcgUmV0dXJuKG5vZGUub3JpZ2luLCBub2RlLnZhbHVlID8gbm9kZS52YWx1ZS52
aXNpdCh0aGlzKSA6IG51bGwpOwogICAgIH0KICAgICAKKyAgICB2aXNpdENvbnRpbnVlKG5vZGUp
CisgICAgeworICAgICAgICByZXR1cm4gbmV3IENvbnRpbnVlKG5vZGUub3JpZ2luKTsKKyAgICB9
CisgICAgCisgICAgdmlzaXRCcmVhayhub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBC
cmVhayhub2RlLm9yaWdpbik7CisgICAgfQorICAgIAogICAgIHZpc2l0SW50TGl0ZXJhbChub2Rl
KQogICAgIHsKICAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBJbnRMaXRlcmFsKG5vZGUub3JpZ2lu
LCBub2RlLnZhbHVlKTsKQEAgLTI4OCw1ICsyOTgsMTAgQEAgY2xhc3MgUmV3cml0ZXIgZXh0ZW5k
cyBWaXNpdG9yQmFzZSB7CiAgICAgewogICAgICAgICByZXR1cm4gbmV3IElmU3RhdGVtZW50KG5v
ZGUub3JpZ2luLCBub2RlLmNvbmRpdGlvbmFsLnZpc2l0KHRoaXMpLCBub2RlLmJvZHkudmlzaXQo
dGhpcyksIG5vZGUuZWxzZUJvZHkgPyBub2RlLmVsc2VCb2R5LnZpc2l0KHRoaXMpIDogdW5kZWZp
bmVkKTsKICAgICB9CisKKyAgICB2aXNpdFdoaWxlTG9vcChub2RlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG5ldyBXaGlsZUxvb3Aobm9kZS5vcmlnaW4sIG5vZGUuY29uZGl0aW9uYWwudmlzaXQo
dGhpcyksIG5vZGUuYm9keS52aXNpdCh0aGlzKSk7CisgICAgfQogfQogCmRpZmYgLS1naXQgYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnlQcm9sb2d1ZS5qcyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeVByb2xvZ3VlLmpz
CmluZGV4IDAxMzYzMTZhOWU4MmU3NWU3NWExZWVmYmJlMmI5OGVhMjI4NzkzYmEuLmY0ZWRmMzc1
MTlmZjQyMGU5YjhiZWNiMmVmMGE5MjZlNmY2YjdjMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeVByb2xvZ3VlLmpzCisrKyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeVByb2xvZ3VlLmpzCkBAIC01
Miw2ICs1MiwxNCBAQCBuYXRpdmUgdWludCBvcGVyYXRvci8odWludCwgdWludCk7CiBuYXRpdmUg
Ym9vbCBvcGVyYXRvcj09KGludCwgaW50KTsKIG5hdGl2ZSBib29sIG9wZXJhdG9yPT0odWludCwg
dWludCk7CiBuYXRpdmUgYm9vbCBvcGVyYXRvcj09KGJvb2wsIGJvb2wpOworbmF0aXZlIGJvb2wg
b3BlcmF0b3I8KGludCwgaW50KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPCh1aW50LCB1aW50KTsK
K25hdGl2ZSBib29sIG9wZXJhdG9yPD0oaW50LCBpbnQpOworbmF0aXZlIGJvb2wgb3BlcmF0b3I8
PSh1aW50LCB1aW50KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPihpbnQsIGludCk7CituYXRpdmUg
Ym9vbCBvcGVyYXRvcj4odWludCwgdWludCk7CituYXRpdmUgYm9vbCBvcGVyYXRvcj49KGludCwg
aW50KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPj0odWludCwgdWludCk7CiAKIHByb3RvY29sIEVx
dWF0YWJsZSB7CiAgICAgYm9vbCBvcGVyYXRvcj09KEVxdWF0YWJsZSwgRXF1YXRhYmxlKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAppbmRleCBhYmZmOTZhZjcyOWQ1NmEw
NjNhMjVhOGQ2ZTYyMWZlNGJiZjM5ZTk1Li5iZDM4MWE3ZDY2NjY5NGI1NTg1ZWFlNjMzOTY2ZTEy
MGJjYWYxNzZhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0
Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC0x
NSwxOCArMTUsMjEgQEAKIDxzY3JpcHQgc3JjPSJBc3NpZ25tZW50LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJCbG9jay5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQm9vbExpdGVyYWwu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkJyZWFrLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJDYWxsQXNzaWdubWVudC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2FsbEV4cHJl
c3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNhbGxGdW5jdGlvbi5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iQ2FzdEV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9IkNoZWNrLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja0xpdGVyYWxUeXBlcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tMb29wcy5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iQ2hlY2tSZWN1cnNpb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNr
UmV0dXJucy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tVbnJlYWNoYWJsZUNvZGUu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IkNvbW1hRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ29uc3Rl
eHByVHlwZVBhcmFtZXRlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ29udGludWUuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkRvdEV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IkRlcmVmZXJlbmNlRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iRUFycmF5UmVmLmpzIj48L3NjcmlwdD4KQEAgLTUyLDYgKzU1LDcgQEAKIDxzY3JpcHQgc3Jj
PSJMZXhlclRva2VuLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJMaXRlcmFsVHlwZUNoZWNr
ZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxvZ2ljYWxOb3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ikxvb3BDaGVja2VyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJNYWtl
UHRyRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTmFtZUNvbnRleHQuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ik5hbWVSZXNvbHZlci5qcyI+PC9zY3JpcHQ+CkBAIC05
OCw2ICsxMDIsNyBAQAogPHNjcmlwdCBzcmM9IldTeW50YXhFcnJvci5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iV1RyYXBFcnJvci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iV1R5cGVF
cnJvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iV2hpbGVMb29wLmpzIj48L3NjcmlwdD4K
IAogPHNjcmlwdCBzcmM9IlRlc3QuanMiPjwvc2NyaXB0PgogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVGVzdC5qcwppbmRleCA3YWY3NDRmNDZlNDk3ZDBiYWZhNjVhNTUzNmNlOTY3YTQyMDY5
NjliLi5hMzJiYmZiZTAyNmY0MTQyM2JlYzM3NzBlZmFiNGU4ZTFlODRiNTU2IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKQEAgLTEzMzQsNiArMTMzNCwyOSBAQCBmdW5jdGlv
biBURVNUX3JldHVybklmKCkKICAgICAgICAgICAgIH0KICAgICAgICAgYCksCiAgICAgICAgIChl
KSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisg
ICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCB5ID0gNjsK
KyAgICAgICAgICAgIGlmICh4ID09IDcpCisgICAgICAgICAgICAgICAgaW50IHkgPSA4OworICAg
ICAgICAgICAgcmV0dXJuIHk7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9n
cmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCA3
KV0pLCA2KTsKK30KKworZnVuY3Rpb24gVEVTVF9zaW1wbGVXaGlsZSgpCit7CisgICAgbGV0IHBy
b2dyYW0gPSBkb1ByZXAoYAorICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB7CisgICAg
ICAgICAgICB3aGlsZSAoeCA8IDEzKQorICAgICAgICAgICAgICAgIHggPSB4ICogMjsKKyAgICAg
ICAgICAgIHJldHVybiB4OworICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3Jh
bSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgMSld
KSwgMTYpOwogfQogCiBmdW5jdGlvbiBURVNUX3Byb3RvY29sTW9ub1BvbHlTaWdEb3VibGVQb2x5
RGVmRXhwbGljaXQoKQpAQCAtMTM2OCw2ICsxMzkxLDEzNSBAQCBmdW5jdGlvbiBURVNUX3Byb3Rv
Y29sTW9ub1BvbHlTaWdEb3VibGVQb2x5RGVmRXhwbGljaXQoKQogICAgICAgICAoZSkgPT4gZSBp
bnN0YW5jZW9mIFdUeXBlRXJyb3IpOwogfQogCitmdW5jdGlvbiBURVNUX2JyZWFrKCkKK3sKKyAg
ICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgeCA9IHggKiAy
OworICAgICAgICAgICAgICAgIGlmICh4ID49IDcpCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0KKyAgICBg
KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtd
LCBbbWFrZUludChwcm9ncmFtLCAxKV0pLCA4KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxs
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCAxMCldKSwgMjAp
OworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAg
ICB7CisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgICAgICAgICAgICAgIHggPSB4ICogMjsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHggPj0gNykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB4ID0geCAtIDE7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgIAor
ICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgMSldKSwgNyk7CisgICAgY2hlY2tJ
bnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJv
Z3JhbSwgMTApXSksIDE5KTsKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChg
CisgICAgICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIHggPSB4ICsgMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJu
IHg7CisgICAgICAgICAgICB9CisgICAgICAgIGApLAorICAgICAgICAoZSkgPT4gZSBpbnN0YW5j
ZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAK
KyAgICAgICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIGApLAorICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIHBy
b2dyYW0gPSBkb1ByZXAoYAorICAgICAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoeCA9PSA3KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB4ID0geCArIDE7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICAgICAgfQorICAgIGApOwor
ICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFtt
YWtlSW50KHByb2dyYW0sIDEpXSksIDcpOworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAg
ICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB3aGls
ZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgICAgICB9CisgICAgYCk7CisgICAg
Y2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJ
bnQocHJvZ3JhbSwgMSldKSwgMSk7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgICAg
ICBpbnQgZm9vKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gNzsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSwgW10pLCA3KTsKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+
IGRvUHJlcChgCisgICAgICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiA3OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJv
cik7Cit9CisKK2Z1bmN0aW9uIFRFU1RfY29udGludWUoKQoreworICAgIGxldCBwcm9ncmFtID0g
ZG9QcmVwKGAKKyAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgeworICAgICAgICAgICAg
d2hpbGUgKHggPCAxMCkgeworICAgICAgICAgICAgICAgIGlmICh4ID09IDgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgeCA9IHggKyAxOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgeCA9IHggKiAyOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0lu
dChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9n
cmFtLCAxKV0pLCAxOCk7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAor
ICAgICAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2Yg
V1R5cGVFcnJvcik7Cit9CisKIGxldCBmaWx0ZXIgPSAvLiovOyAvLyBydW4gZXZlcnl0aGluZyBi
eSBkZWZhdWx0CiBpZiAodGhpc1siYXJndW1lbnRzIl0pIHsKICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVW5yZWFjaGFibGVDb2RlQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1VucmVhY2hhYmxlQ29kZUNoZWNrZXIuanMKaW5kZXggNWVmMTczMWRh
ZTA3Y2I4MDcxMjU3ZTU3ZjFlZDA4MDk1ZjUxNDk4My4uMTFjOGUxOWVlMTZmY2MwY2RhZDBlZDlh
MmNmNDBkNDk0MWUzMGI4MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVW5yZWFjaGFibGVDb2RlQ2hlY2tlci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9VbnJlYWNoYWJsZUNvZGVDaGVja2VyLmpzCkBAIC0yNSwyMiArMjUsMjUgQEAKICJ1
c2Ugc3RyaWN0IjsKIAogY2xhc3MgVW5yZWFjaGFibGVDb2RlQ2hlY2tlciBleHRlbmRzIFZpc2l0
b3IgewotICAgIGNvbnN0cnVjdG9yKCkKKyAgICBjb25zdHJ1Y3Rvcihwcm9ncmFtKQogICAgIHsK
ICAgICAgICAgc3VwZXIoKTsKLSAgICAgICAgdGhpcy5fcmV0dXJuQ2hlY2tlciA9IG5ldyBSZXR1
cm5DaGVja2VyKCk7CisgICAgICAgIHRoaXMuX3JldHVybkNoZWNrZXIgPSBuZXcgUmV0dXJuQ2hl
Y2tlcihwcm9ncmFtKTsKICAgICB9CiAgICAgCiAgICAgdmlzaXRCbG9jayhub2RlKQogICAgIHsK
KyAgICAgICAgc3VwZXIudmlzaXRCbG9jayhub2RlKTsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBub2RlLnN0YXRlbWVudHMubGVuZ3RoIC0gMTsgKytpKSB7Ci0gICAgICAgICAgICBsZXQg
c3RhdGVtZW50ID0gbm9kZS5zdGF0ZW1lbnRzW2ldOwotICAgICAgICAgICAgLy8gRklYTUU6IE5l
ZWQgdG8gYWxzbyBjaGVjayBpZiB0aGlzIHN0YXRlbWVudCBjYW4gYnJlYWsgb3IgY29udGludWUu
Ci0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc2MjYzCi0gICAgICAgICAgICBpZiAoc3RhdGVtZW50LnZpc2l0KHRoaXMuX3JldHVybkNoZWNr
ZXIpKQorICAgICAgICAgICAgc3dpdGNoKG5vZGUuc3RhdGVtZW50c1tpXS52aXNpdCh0aGlzLl9y
ZXR1cm5DaGVja2VyKSkgeworICAgICAgICAgICAgY2FzZSB0aGlzLl9yZXR1cm5DaGVja2VyLnJl
dHVyblN0eWxlLkRlZmluaXRlbHlSZXR1cm5zOgorICAgICAgICAgICAgY2FzZSB0aGlzLl9yZXR1
cm5DaGVja2VyLnJldHVyblN0eWxlLkRlZmluaXRlbHlEb2VzbnRSZXR1cm46CiAgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgIG5vZGUuc3Rh
dGVtZW50c1tpICsgMV0ub3JpZ2luLm9yaWdpblN0cmluZywKICAgICAgICAgICAgICAgICAgICAg
IlVucmVhY2hhYmxlIGNvZGUiKTsKKyAgICAgICAgICAgIGNhc2UgdGhpcy5fcmV0dXJuQ2hlY2tl
ci5yZXR1cm5TdHlsZS5IYXNudFJldHVybmVkWWV0OgorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Zpc2l0b3IuanMKaW5kZXggZDZlODY2OWY1NWI4YzY2NTU1ODFkYjBhMzIxMzcz
ZjUxOGZiYTQyMS4uNDJhY2NkYTIzMmMxODdjZGRhNTgzMDZhOWViN2VjNmU2MDcwZWJiYiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCkBAIC0yMTUsMTIgKzIxNSwy
NiBAQCBjbGFzcyBWaXNpdG9yIGV4dGVuZHMgVmlzaXRvckJhc2UgewogICAgICAgICBpZiAobm9k
ZS5lbHNlQm9keSkKICAgICAgICAgICAgIG5vZGUuZWxzZUJvZHkudmlzaXQodGhpcyk7CiAgICAg
fQorICAgIAorICAgIHZpc2l0V2hpbGVMb29wKG5vZGUpCisgICAgeworICAgICAgICBub2RlLmNv
bmRpdGlvbmFsLnZpc2l0KHRoaXMpOworICAgICAgICBub2RlLmJvZHkudmlzaXQodGhpcyk7Cisg
ICAgfQogCiAgICAgdmlzaXRSZXR1cm4obm9kZSkKICAgICB7CiAgICAgICAgIGlmIChub2RlLnZh
bHVlKQogICAgICAgICAgICAgbm9kZS52YWx1ZS52aXNpdCh0aGlzKTsKICAgICB9CisKKyAgICB2
aXNpdENvbnRpbnVlKG5vZGUpCisgICAgeworICAgIH0KKworICAgIHZpc2l0QnJlYWsobm9kZSkK
KyAgICB7CisgICAgfQogICAgIAogICAgIHZpc2l0SW50TGl0ZXJhbChub2RlKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1doaWxlTG9vcC5qcyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1doaWxlTG9vcC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzE5
YzM0ZTVhNzc3OTRmNTZmOWQ1NzZkODg5N2QyZWU0MzllNzlhCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvV2hpbGVMb29wLmpzCkBAIC0wLDAgKzEsNDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyJ1c2Ugc3Ry
aWN0IjsKKworY2xhc3MgV2hpbGVMb29wIGV4dGVuZHMgTm9kZSB7CisgICAgY29uc3RydWN0b3Io
b3JpZ2luLCBjb25kaXRpb25hbCwgYm9keSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisgICAg
ICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKKyAgICAgICAgdGhpcy5fY29uZGl0aW9uYWwgPSBj
b25kaXRpb25hbDsKKyAgICAgICAgdGhpcy5fYm9keSA9IGJvZHk7CisgICAgfQorCisgICAgZ2V0
IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQorICAgIGdldCBjb25kaXRpb25hbCgp
IHsgcmV0dXJuIHRoaXMuX2NvbmRpdGlvbmFsOyB9CisgICAgZ2V0IGJvZHkoKSB7IHJldHVybiB0
aGlzLl9ib2R5OyB9CisKKyAgICB0b1N0cmluZygpCisgICAgeworICAgICAgICByZXR1cm4gIndo
aWxlICgiICsgdGhpcy5jb25kaXRpb25hbCArICIpICIgKyB0aGlzLmJvZHk7CisgICAgfQorfTsK
Kwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320408</attachid>
            <date>2017-09-10 17:17:47 -0700</date>
            <delta_ts>2017-09-10 17:37:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176581-20170910171746.patch</filename>
            <type>text/plain</type>
            <size>39754</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODQwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzZhZjIxZjI4OTFjYmQ2NmY5M2YxMThkNmVhYTBiY2Uw
ZTNmZTg3Yi4uNTllYTQzMjZkY2FlZDBhMzcwOWFlZGNmNWRhM2U2MTRkZDgyOGMxMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1
IEBACisyMDE3LTA5LTEwICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgV1NMIHNob3VsZCBzdXBwb3J0IHdoaWxlIGxvb3BzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY1ODEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgYSBmZXcgaW50ZXJl
c3RpbmcgcGllY2VzIHRvIHRoaXMgcGF0Y2g6CisgICAgICAgIDEuIEJlY2F1c2UgdGhlIGV2YWx1
YXRvciBpcyBqdXN0IGEgbm9kZS1iYXNlZCBkZXNjZW50IHRocm91Z2ggdGhlIHRyZWUsIHRoZSBp
bXBsZW1lbnRhdGlvbiBvZiBicmVhaworICAgICAgICBhbmQgY29udGludWUgYXJlIGp1c3QgInRo
cm93Ii4KKyAgICAgICAgMi4gVGhlIFJldHVybkNoZWNrZXIgbm93IGhhcyB0byByZXR1cm4gYSB0
aHJlZS1zdGF0ZSBlbnVtIGJlY2F1c2Ugb2YgbmVzdGVkIGJsb2Nrcy4gVGhlIG91dGVyIGJsb2Nr
CisgICAgICAgIGNhcmVzIGFib3V0IGlmIHRoZSBpbm5lciBibG9jayBoYXMgImJyZWFrIiBhcyBv
cHBvc2VkIHRvIGl0IGhhdmluZyBubyByZXR1cm5zIG5vciBicmVha3MvY29udGludWVzLgorICAg
ICAgICAzLiBSZXR1cm5DaGVja2VyIHdpbGwgdHJlYXQgIndoaWxlICh0cnVlKSIgdGhlIHNhbWUg
YXMgeyB9LCBidXQgd2lsbCBub3QgZGVzY2VuZCBkZWVwZXIgZm9yIHRoaW5ncworICAgICAgICBs
aWtlICJ3aGlsZSAoMyA9PSAzKSIuCisgICAgICAgIDQuIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEg
ZmV3IG1vcmUgYm9vbGVhbiBjb25kaXRpb25hbCBmdW5jdGlvbnMgbGlrZSBvcGVyYXRvcjwoKS4K
KyAgICAgICAgNS4gSSBhZGRlZCBhbm90aGVyIHBhc3Mgd2hpY2ggbWFrZXMgc3VyZSB0aGVyZSBh
cmUgbm8gYmFyZSBicmVhay9yZXR1cm4ga2V5d29yZHMgb3V0c2lkZSBvZiBsb29wcy4KKworICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9CcmVhay5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQ2hlY2tVbnJlYWNoYWJsZUNvZGUuanMuCisgICAgICAgIChCcmVhayk6Cisg
ICAgICAgIChCcmVhay5wcm90b3R5cGUuZ2V0IG9yaWdpbik6CisgICAgICAgIChCcmVhay5wcm90
b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNr
TG9vcHMuanM6IENvcGllZCBmcm9tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNr
UmV0dXJucy5qcy4KKyAgICAgICAgKGNoZWNrTG9vcHMpOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0NoZWNrUmV0dXJucy5qczoKKyAgICAgICAgKGNoZWNrUmV0dXJucyk6Cisg
ICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tVbnJlYWNoYWJsZUNvZGUuanM6
CisgICAgICAgIChjaGVja1VucmVhY2hhYmxlQ29kZSk6CisgICAgICAgICogV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQ2hlY2tlci5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9Db250aW51ZS5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
Q2hlY2tSZXR1cm5zLmpzLgorICAgICAgICAoQ29udGludWUpOgorICAgICAgICAoQ29udGludWUu
cHJvdG90eXBlLmdldCBvcmlnaW4pOgorICAgICAgICAoQ29udGludWUucHJvdG90eXBlLnRvU3Ry
aW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanM6Cisg
ICAgICAgIChFdmFsdWF0b3IucHJvdG90eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKEV2
YWx1YXRvci5wcm90b3R5cGUudmlzaXRCcmVhayk6CisgICAgICAgIChFdmFsdWF0b3IucHJvdG90
eXBlLnZpc2l0Q29udGludWUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lu
dHJpbnNpY3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzKToKKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9MZXhlci5qczoKKyAgICAgICAgKExleGVyLnByb3RvdHlwZS5uZXh0KToK
KyAgICAgICAgKExleGVyKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Mb29w
Q2hlY2tlci5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV0
dXJuQ2hlY2tlci5qcy4KKyAgICAgICAgKExvb3BDaGVja2VyKToKKyAgICAgICAgKExvb3BDaGVj
a2VyLnByb3RvdHlwZS52aXNpdEZ1bmNEZWYpOgorICAgICAgICAoTG9vcENoZWNrZXIucHJvdG90
eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKExvb3BDaGVja2VyLnByb3RvdHlwZS52aXNp
dEJyZWFrKToKKyAgICAgICAgKExvb3BDaGVja2VyLnByb3RvdHlwZS52aXNpdENvbnRpbnVlKToK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanM6CisgICAg
ICAgIChOYW1lUmVzb2x2ZXIucHJvdG90eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Ob2RlLmpzOgorICAgICAgICAoTm9kZS5wcm90b3R5cGUu
dmlzaXQpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAg
ICAgICAocGFyc2VQb3NzaWJsZVJlbGF0aW9uYWxJbmVxdWFsaXR5KToKKyAgICAgICAgKHBhcnNl
QnJlYWspOgorICAgICAgICAocGFyc2VDb250aW51ZSk6CisgICAgICAgIChwYXJzZVdoaWxlKToK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzOgorICAgICAgICAo
cHJlcGFyZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV0dXJuQ2hlY2tl
ci5qczoKKyAgICAgICAgKFJldHVybkNoZWNrZXIpOgorICAgICAgICAoUmV0dXJuQ2hlY2tlci5w
cm90b3R5cGUudmlzaXRGdW5jRGVmKToKKyAgICAgICAgKFJldHVybkNoZWNrZXIucHJvdG90eXBl
LnZpc2l0QmxvY2spOgorICAgICAgICAoUmV0dXJuQ2hlY2tlci5wcm90b3R5cGUudmlzaXRJZlN0
YXRlbWVudCk6CisgICAgICAgIChSZXR1cm5DaGVja2VyLnByb3RvdHlwZS52aXNpdFdoaWxlTG9v
cCk6CisgICAgICAgIChSZXR1cm5DaGVja2VyLnByb3RvdHlwZS52aXNpdFJldHVybik6CisgICAg
ICAgIChSZXR1cm5DaGVja2VyLnByb3RvdHlwZS52aXNpdEJyZWFrKToKKyAgICAgICAgKFJldHVy
bkNoZWNrZXIucHJvdG90eXBlLnZpc2l0Q29udGludWUpOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzOgorICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZp
c2l0Q29udGludWUpOgorICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZpc2l0QnJlYWspOgor
ICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKFJl
d3JpdGVyKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJh
cnlQcm9sb2d1ZS5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0
bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qczoKKyAgICAgICAg
KFRFU1RfcmV0dXJuSWYpOgorICAgICAgICAoVEVTVF9zaW1wbGVXaGlsZSk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5yZWFjaGFibGVDb2RlQ2hlY2tlci5qczoKKyAgICAg
ICAgKFVucmVhY2hhYmxlQ29kZUNoZWNrZXIpOgorICAgICAgICAoVW5yZWFjaGFibGVDb2RlQ2hl
Y2tlci5wcm90b3R5cGUudmlzaXRCbG9jayk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVmlzaXRvci5qczoKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0V2hpbGVM
b29wKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0Q29udGludWUpOgorICAgICAg
ICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRCcmVhayk6CisgICAgICAgICogV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvV2hpbGVMb29wLmpzOiBDb3BpZWQgZnJvbSBUb29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9DaGVja1JldHVybnMuanMuCisgICAgICAgIChXaGlsZUxvb3ApOgorICAgICAg
ICAoV2hpbGVMb29wLnByb3RvdHlwZS5nZXQgb3JpZ2luKToKKyAgICAgICAgKFdoaWxlTG9vcC5w
cm90b3R5cGUuZ2V0IGNvbmRpdGlvbmFsKToKKyAgICAgICAgKFdoaWxlTG9vcC5wcm90b3R5cGUu
Z2V0IGJvZHkpOgorICAgICAgICAoV2hpbGVMb29wLnByb3RvdHlwZS50b1N0cmluZyk6CisKIDIw
MTctMDktMDcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBXU0wg
b3ZlcmxvYWQgcmVzb2x1dGlvbiBzaG91bGQgbm90IGJlIGNhc2NhZGluZwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQWxsLmpzCmluZGV4IDgzYzBjYzZiOTllZDNjYjc2YTFjZmMxZTM5MDMwYTIy
Njg3ZGNjNGQuLjA3MmU3N2RiYWExMGQ0YzNiMjAxYTU0ZGQ2NTUxOWFlYzQyNjMxNWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcworKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKQEAgLTM5LDE3ICszOSwyMCBAQCBsb2FkKCJB
cnJheVR5cGUuanMiKTsKIGxvYWQoIkFzc2lnbm1lbnQuanMiKTsKIGxvYWQoIkJsb2NrLmpzIik7
CiBsb2FkKCJCb29sTGl0ZXJhbC5qcyIpOworbG9hZCgiQnJlYWsuanMiKTsKIGxvYWQoIkNhbGxB
c3NpZ25tZW50LmpzIik7CiBsb2FkKCJDYWxsRXhwcmVzc2lvbi5qcyIpOwogbG9hZCgiQ2FsbEZ1
bmN0aW9uLmpzIik7CiBsb2FkKCJDaGVjay5qcyIpOwogbG9hZCgiQ2hlY2tMaXRlcmFsVHlwZXMu
anMiKTsKK2xvYWQoIkNoZWNrTG9vcHMuanMiKTsKIGxvYWQoIkNoZWNrUmVjdXJzaW9uLmpzIik7
CiBsb2FkKCJDaGVja1JldHVybnMuanMiKTsKIGxvYWQoIkNoZWNrVW5yZWFjaGFibGVDb2RlLmpz
Iik7CiBsb2FkKCJDaGVja2VyLmpzIik7CiBsb2FkKCJDb21tYUV4cHJlc3Npb24uanMiKTsKIGxv
YWQoIkNvbnN0ZXhwclR5cGVQYXJhbWV0ZXIuanMiKTsKK2xvYWQoIkNvbnRpbnVlLmpzIik7CiBs
b2FkKCJEZXJlZmVyZW5jZUV4cHJlc3Npb24uanMiKTsKIGxvYWQoIkRvdEV4cHJlc3Npb24uanMi
KTsKIGxvYWQoIkVBcnJheVJlZi5qcyIpOwpAQCAtNzYsNiArNzksNyBAQCBsb2FkKCJMZXhlci5q
cyIpOwogbG9hZCgiTGV4ZXJUb2tlbi5qcyIpOwogbG9hZCgiTGl0ZXJhbFR5cGVDaGVja2VyLmpz
Iik7CiBsb2FkKCJMb2dpY2FsTm90LmpzIik7Citsb2FkKCJMb29wQ2hlY2tlci5qcyIpOwogbG9h
ZCgiTWFrZVB0ckV4cHJlc3Npb24uanMiKTsKIGxvYWQoIk5hbWVDb250ZXh0LmpzIik7CiBsb2Fk
KCJOYW1lUmVzb2x2ZXIuanMiKTsKQEAgLTEyMSwzICsxMjUsNCBAQCBsb2FkKCJWaXNpdGluZ1Nl
dC5qcyIpOwogbG9hZCgiV1N5bnRheEVycm9yLmpzIik7CiBsb2FkKCJXVHJhcEVycm9yLmpzIik7
CiBsb2FkKCJXVHlwZUVycm9yLmpzIik7Citsb2FkKCJXaGlsZUxvb3AuanMiKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0JyZWFrLmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQnJlYWsuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUyMjYxMDZjOWZmOWU2ODZk
MGJiMWQ1NmU3OTVkNDc1M2Q3MTVjMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0JyZWFrLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgQnJl
YWsgZXh0ZW5kcyBOb2RlIHsKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4pCisgICAgeworICAgICAg
ICBzdXBlcigpOworICAgICAgICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47CisgICAgfQorICAgIAor
ICAgIGdldCBvcmlnaW4oKSB7IHJldHVybiB0aGlzLl9vcmlnaW47IH0KKyAgICAKKyAgICB0b1N0
cmluZygpCisgICAgeworICAgICAgICByZXR1cm4gIkJyZWFrIjsKKyAgICB9Cit9OworCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja0xvb3BzLmpzIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tMb29wcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjM2
MmU5ZWZkNzA1MmZhNWQxOWYwZWQ2MTI5MmQxODk0N2VhYThkCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tMb29wcy5qcwpAQCAtMCwwICsxLDMx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0
cmljdCI7CisKK2Z1bmN0aW9uIGNoZWNrTG9vcHMocHJvZ3JhbSkKK3sKKyAgICBwcm9ncmFtLnZp
c2l0KG5ldyBMb29wQ2hlY2tlcigpKTsKK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvQ2hlY2tSZXR1cm5zLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvQ2hlY2tSZXR1cm5zLmpzCmluZGV4IDRiNjBhMWIyNzg3ZWEyYmQ4ZTJhM2ZhOTY2OTA4
YzgzZjg4M2IxMmEuLjQ2NWZlMzY4YTQ4ZmM4YmIzZWYyYjc4MTcwODc3MWIxNjY2ZjdkZjEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrUmV0dXJucy5qcwor
KysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja1JldHVybnMuanMKQEAgLTI2
LDYgKzI2LDYgQEAKIAogZnVuY3Rpb24gY2hlY2tSZXR1cm5zKHByb2dyYW0pCiB7Ci0gICAgcHJv
Z3JhbS52aXNpdChuZXcgUmV0dXJuQ2hlY2tlcigpKTsKKyAgICBwcm9ncmFtLnZpc2l0KG5ldyBS
ZXR1cm5DaGVja2VyKHByb2dyYW0pKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvQ2hlY2tVbnJlYWNoYWJsZUNvZGUuanMgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9DaGVja1VucmVhY2hhYmxlQ29kZS5qcwppbmRleCBkNTQ2MDZiNzJhOWUz
YmE4OWZkNGRlMTZhZDcxMTVjMDdiMTZiYTYyLi5kZjMxZGE5NDZkMTUxYmYxZGQ4NmJkM2I0ZjUz
ZmM2ODdkY2E5MzVjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9D
aGVja1VucmVhY2hhYmxlQ29kZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9DaGVja1VucmVhY2hhYmxlQ29kZS5qcwpAQCAtMjYsNiArMjYsNiBAQAogCiBmdW5jdGlvbiBj
aGVja1VucmVhY2hhYmxlQ29kZShwcm9ncmFtKQogewotICAgIHByb2dyYW0udmlzaXQobmV3IFVu
cmVhY2hhYmxlQ29kZUNoZWNrZXIoKSk7CisgICAgcHJvZ3JhbS52aXNpdChuZXcgVW5yZWFjaGFi
bGVDb2RlQ2hlY2tlcihwcm9ncmFtKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9DaGVja2VyLmpzCmluZGV4IDgwODFiNjczY2YwMDQ4OGQ4ZTEwNTNhNjUyNjQ4YzkwZDlmNzVh
NDUuLmQ4YzhiYmY1NTU4N2JlZDhkY2JjNTJhZTE4YTM4NjUzNjlhZWZjNTYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKKysrIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcwpAQCAtMjM3LDYgKzIzNywxNiBAQCBjbGFz
cyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgIGlmIChub2RlLmVsc2VCb2R5KQog
ICAgICAgICAgICAgbm9kZS5lbHNlQm9keS52aXNpdCh0aGlzKTsKICAgICB9CisKKyAgICB2aXNp
dFdoaWxlTG9vcChub2RlKQorICAgIHsKKyAgICAgICAgbGV0IGNvbmRpdGlvbmFsUmVzdWx0VHlw
ZSA9IG5vZGUuY29uZGl0aW9uYWwudmlzaXQodGhpcyk7CisgICAgICAgIGlmICghY29uZGl0aW9u
YWxSZXN1bHRUeXBlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUcnlpbmcgdG8gbmVn
YXRlIHNvbWV0aGluZyB3aXRoIG5vIHR5cGU6ICIgKyBub2RlLmNvbmRpdGlvbmFsKTsKKyAgICAg
ICAgaWYgKCFjb25kaXRpb25hbFJlc3VsdFR5cGUuZXF1YWxzKHRoaXMuX3Byb2dyYW0uaW50cmlu
c2ljcy5ib29sKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBXRXJyb3IoIlRyeWluZyB0byBuZWdh
dGUgc29tZXRoaW5nIHRoYXQgaXNuJ3QgYSBib29sOiAiICsgbm9kZS5jb25kaXRpb25hbCk7Cisg
ICAgICAgIG5vZGUuYm9keS52aXNpdCh0aGlzKTsKKyAgICB9CiAgICAgCiAgICAgdmlzaXRDb21t
YUV4cHJlc3Npb24obm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9Db250aW51ZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Nv
bnRpbnVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiNWNjOTM3MjY0NWQ0NzBkMGY2YTU1NDUyZWU1NzNiYTA2
MWQ1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9D
b250aW51ZS5qcwpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIENvbnRpbnVlIGV4dGVuZHMg
Tm9kZSB7CisgICAgY29uc3RydWN0b3Iob3JpZ2luKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsK
KyAgICAgICAgdGhpcy5fb3JpZ2luID0gb3JpZ2luOworICAgIH0KKyAgICAKKyAgICBnZXQgb3Jp
Z2luKCkgeyByZXR1cm4gdGhpcy5fb3JpZ2luOyB9CisgICAgCisgICAgdG9TdHJpbmcoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuICJDb250aW51ZSI7CisgICAgfQorfTsKKwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzCmluZGV4IDFlMjcwZTIzNWJhYjNjNWUwZDRi
Yzk3ODUwMGU3NmUwZDE3NjAyMDMuLjk4NDE3NjE5MmUyYTAyZGU2M2Q1ZGVmNWM3NTYwZjY1OTQ3
ZmM4NTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0V2YWx1YXRv
ci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanMKQEAg
LTE1OSw2ICsxNTksMzEgQEAgY2xhc3MgRXZhbHVhdG9yIGV4dGVuZHMgVmlzaXRvciB7CiAgICAg
ICAgIGVsc2UgaWYgKG5vZGUuZWxzZUJvZHkpCiAgICAgICAgICAgICByZXR1cm4gbm9kZS5lbHNl
Qm9keS52aXNpdCh0aGlzKTsKICAgICB9CisKKyAgICB2aXNpdFdoaWxlTG9vcChub2RlKQorICAg
IHsKKyAgICAgICAgd2hpbGUgKG5vZGUuY29uZGl0aW9uYWwudmlzaXQodGhpcykubG9hZFZhbHVl
KCkpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgbm9kZS5ib2R5LnZpc2l0
KHRoaXMpOworICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIGlmIChl
IGluc3RhbmNlb2YgQnJlYWspCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGlmIChlIGluc3RhbmNlb2YgQ29udGludWUpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB2aXNpdEJyZWFrKG5vZGUpCisgICAgeworICAgICAgICB0aHJvdyBu
b2RlOworICAgIH0KKworICAgIHZpc2l0Q29udGludWUobm9kZSkKKyAgICB7CisgICAgICAgIHRo
cm93IG5vZGU7CisgICAgfQogICAgIAogICAgIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZSkKICAg
ICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNz
LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcwppbmRleCBi
Y2E0MDczN2I0NTI0YjNkZmQzNTg0YzZjMzg0NGQwNmFlYTYyOWFlLi4xYmQ4MjFkNWE2M2U4ZDZl
MzA3NjRlMTcwOWQwNzU0OWFiNzNkODIwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0ludHJpbnNpY3MuanMKQEAgLTE3OCw2ICsxNzgsNjIgQEAgY2xhc3MgSW50cmluc2ljcyB7
CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPT0gcmlnaHQu
bG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIAorICAgICAgICB0aGlzLl9t
YXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPDw+KGludCxpbnQpIiwK
KyAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRp
b24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KKyAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVm
dC5sb2FkVmFsdWUoKSA8IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAKKyAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICJuYXRpdmUgYm9vbCBv
cGVyYXRvcjw8Pih1aW50LHVpbnQpIiwKKyAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KKyAgICAgICAg
ICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA8IHJpZ2h0LmxvYWRWYWx1ZSgp
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAg
ICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcjw9PD4oaW50LGludCkiLAorICAgICAgICAg
ICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVm
dCwgcmlnaHRdKSA9PgorICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1
ZSgpIDw9IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAg
ICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcjw9
PD4odWludCx1aW50KSIsCisgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CisgICAgICAgICAgICAgICAg
ICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPD0gcmlnaHQubG9hZFZhbHVlKCkpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAg
ICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPjw+KGludCxpbnQpIiwKKyAgICAgICAgICAgIGZ1bmMg
PT4geworICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0
XSkgPT4KKyAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+IHJp
Z2h0LmxvYWRWYWx1ZSgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgdGhp
cy5fbWFwLnNldCgKKyAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj48Pih1aW50LHVp
bnQpIiwKKyAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVt
ZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KKyAgICAgICAgICAgICAgICAgICAgRVB0ci5i
b3gobGVmdC5sb2FkVmFsdWUoKSA+IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICAKKyAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICJuYXRpdmUg
Ym9vbCBvcGVyYXRvcj49PD4oaW50LGludCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgorICAg
ICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID49IHJpZ2h0LmxvYWRW
YWx1ZSgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgdGhpcy5fbWFwLnNl
dCgKKyAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj49PD4odWludCx1aW50KSIsCisg
ICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9u
ID0gKFtsZWZ0LCByaWdodF0pID0+CisgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQu
bG9hZFZhbHVlKCkgPj0gcmlnaHQubG9hZFZhbHVlKCkpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIAogICAgICAgICBsZXQgYXJyYXlFbGVtZW50UHRyID0gZnVuYyA9PiB7CiAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtyZWYsIGluZGV4XSwgbm9kZSkgPT4gewogICAgICAg
ICAgICAgICAgIHJlZiA9IHJlZi5sb2FkVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvTGV4ZXIuanMKaW5kZXggMjE0YjM2YTkzODkzZmJhZTRhNmI0NTUzMjNjNGVmYzNiMzY5ZWUx
Yi4uMzYwNDM3NTE1NGQzYjIzZTJkNDljZDhkNGVmMmRhZmZlMDE3ODUyNyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMKQEAgLTEyMyw3ICsxMjMsNyBAQCBjbGFzcyBMZXhl
ciB7CiAgICAgICAgIGlmICgvXihbMC05XSpcLlswLTldKyl8KFswLTldK1wuWzAtOV0qKS8udGVz
dChyZWxldmFudFRleHQpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCgiZG91YmxlTGl0ZXJh
bCIpOwogICAgICAgICAKLSAgICAgICAgaWYgKC9eLT58PT58PD18PT18IT18XCs9fC09fFwqPXxc
Lz18JT18Xj18XHw9fCY9fChbe30oKVxbXF0/Oj0rKlwvLC4lIX5eJnw8PkA7LV0pLy50ZXN0KHJl
bGV2YW50VGV4dCkpCisgICAgICAgIGlmICgvXi0+fD49fDw9fD09fCE9fFwrPXwtPXxcKj18XC89
fCU9fF49fFx8PXwmPXwoW3t9KClcW1xdPzo9KypcLywuJSF+XiZ8PD5AOy1dKS8udGVzdChyZWxl
dmFudFRleHQpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCgicHVuY3R1YXRpb24iKTsKICAg
ICAgICAgCiAgICAgICAgIGxldCByZW1haW5pbmcgPSByZWxldmFudFRleHQuc3Vic3RyaW5nKDAs
IDIwKS5zcGxpdCgvXHMvKVswXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0xvb3BDaGVja2VyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTG9v
cENoZWNrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVmMDNlZTQ2OGI1OWY5YThlZGQ0Mjg0ZWViOGFhZWU1
YzE3NDdiOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0xvb3BDaGVja2VyLmpzCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgTG9vcENoZWNrZXIg
ZXh0ZW5kcyBWaXNpdG9yIHsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBl
cigpOworICAgICAgICB0aGlzLl9sb29wRGVwdGggPSAwOworICAgIH0KKworICAgIHZpc2l0RnVu
Y0RlZihub2RlKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2xvb3BEZXB0aCAhPSAwKSB7Cisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkxvb3BDaGVja2VyIGRvZXMgbm90IHVuZGVyc3Rh
bmQgbmVzdGVkIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgfQorICAgICAgICBzdXBlci52aXNpdEZ1
bmNEZWYobm9kZSk7CisgICAgfQorCisgICAgdmlzaXRXaGlsZUxvb3Aobm9kZSkKKyAgICB7Cisg
ICAgICAgIG5vZGUuY29uZGl0aW9uYWwudmlzaXQodGhpcyk7CisgICAgICAgICsrdGhpcy5fbG9v
cERlcHRoOworICAgICAgICBub2RlLmJvZHkudmlzaXQodGhpcyk7CisgICAgICAgIGlmICh0aGlz
Ll9sb29wRGVwdGggPT0gMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUaGUgbnVt
YmVyIG9mIG5lc3RlZCBsb29wcyBpcyBuZWdhdGl2ZSEiKTsKKyAgICAgICAgfQorICAgICAgICAt
LXRoaXMuX2xvb3BEZXB0aDsKKyAgICB9CisgICAgCisgICAgdmlzaXRCcmVhayhub2RlKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX2xvb3BEZXB0aCA9PSAwKSB7CisgICAgICAgICAgICB0aHJv
dyBuZXcgV0Vycm9yKCJCcmVhayBzdGF0ZW1lbnQgd2l0aG91dCBlbmNsb3NpbmcgbG9vcCEiKTsK
KyAgICAgICAgfQorICAgICAgICBzdXBlci52aXNpdEJyZWFrKG5vZGUpOworICAgIH0KKyAgICAK
KyAgICB2aXNpdENvbnRpbnVlKG5vZGUpCisgICAgeworICAgICAgICBpZiAodGhpcy5fbG9vcERl
cHRoID09IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBXRXJyb3IoIkNvbnRpbnVlIHN0YXRl
bWVudCB3aXRob3V0IGVuY2xvc2luZyBsb29wISIpOworICAgICAgICB9CisgICAgICAgIHN1cGVy
LnZpc2l0Q29udGludWUobm9kZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvTmFtZVJlc29sdmVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvTmFtZVJlc29sdmVyLmpzCmluZGV4IGQ0NGMyNTA1MDAzYTczNGVkNDI5ODc2NzNh
NmZmZGY4OTU3ZDc2MmUuLjhjNzk5NTA0ZmUwYWFjYmJiMTE5YzNhMjY0NzkzMDEyOTE5YTdjMmEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZlci5q
cworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMKQEAg
LTEwMCw2ICsxMDAsMTMgQEAgY2xhc3MgTmFtZVJlc29sdmVyIGV4dGVuZHMgVmlzaXRvciB7CiAg
ICAgICAgIGlmIChub2RlLmVsc2VCb2R5KQogICAgICAgICAgICAgbm9kZS5lbHNlQm9keS52aXNp
dChuZXcgTmFtZVJlc29sdmVyKG5ldyBOYW1lQ29udGV4dCh0aGlzLl9uYW1lQ29udGV4dCkpKTsK
ICAgICB9CisKKyAgICB2aXNpdFdoaWxlTG9vcChub2RlKQorICAgIHsKKyAgICAgICAgbm9kZS5j
b25kaXRpb25hbC52aXNpdCh0aGlzKTsKKyAgICAgICAgLy8gSWYgc3RhdGVtZW50J3MgYm9kaWVz
IG1pZ2h0IG5vdCBiZSBCbG9ja3MsIHNvIHdlIG5lZWQgdG8gZXhwbGljaXRseSBnaXZlIHRoZW0g
YSBuZXcgY29udGV4dC4KKyAgICAgICAgbm9kZS5ib2R5LnZpc2l0KG5ldyBOYW1lUmVzb2x2ZXIo
bmV3IE5hbWVDb250ZXh0KHRoaXMuX25hbWVDb250ZXh0KSkpOworICAgIH0KICAgICAKICAgICB2
aXNpdFByb3RvY29sRGVjbChub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UGFyc2UuanMKaW5kZXggYWY2Y2M4MDYwMzE3Y2Y5N2Q4Y2VmNTk1N2ZiY2UyOTBiMTQ2M2RjNS4u
YjRjZGVmYzRlMWZkNTE2ZGEyY2IwYjVkNWFlZTkxOWZjZmY3YzExZiAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKQEAgLTQwNCw3ICs0MDQsNyBAQCBmdW5jdGlvbiBwYXJz
ZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAg
ICAgCiAgICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJsZVJlbGF0aW9uYWxJbmVxdWFsaXR5KCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBwYXJzZUxlZnRPcGVyYXRvckNhbGwoWyI8IiwgIj4iLCAiPD0i
LCAiPT4iXSwgcGFyc2VQb3NzaWJsZVNoaWZ0KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlTGVmdE9w
ZXJhdG9yQ2FsbChbIjwiLCAiPiIsICI8PSIsICI+PSJdLCBwYXJzZVBvc3NpYmxlU2hpZnQpOwog
ICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlUmVsYXRpb25hbEVxdWFsaXR5
KCkKQEAgLTUzNSw2ICs1MzUsMjAgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBv
cmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBjb25zdW1lKCI7Iik7
CiAgICAgICAgIHJldHVybiBuZXcgUmV0dXJuKG9yaWdpbiwgZXhwcmVzc2lvbik7CiAgICAgfQor
ICAgIAorICAgIGZ1bmN0aW9uIHBhcnNlQnJlYWsoKQorICAgIHsKKyAgICAgICAgbGV0IG9yaWdp
biA9IGNvbnN1bWUoImJyZWFrIik7CisgICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgcmV0
dXJuIG5ldyBCcmVhayhvcmlnaW4pOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBwYXJzZUNv
bnRpbnVlKCkKKyAgICB7CisgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJjb250aW51ZSIp
OworICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgIHJldHVybiBuZXcgQ29udGludWUob3Jp
Z2luKTsKKyAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZUlmU3RhdGVtZW50KCkKICAgICB7CkBA
IC01NDgsNiArNTYyLDE2IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2lu
S2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIGVsc2VCb2R5ID0gcGFy
c2VTdGF0ZW1lbnQoKTsKICAgICAgICAgcmV0dXJuIG5ldyBJZlN0YXRlbWVudChvcmlnaW4sIG5l
dyBDYWxsRXhwcmVzc2lvbihjb25kaXRpb25hbC5vcmlnaW4sICJib29sIiwgW10sIFtjb25kaXRp
b25hbF0pLCBib2R5LCBlbHNlQm9keSk7CiAgICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VXaGls
ZSgpCisgICAgeworICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgid2hpbGUiKTsKKyAgICAg
ICAgY29uc3VtZSgiKCIpOworICAgICAgICBsZXQgY29uZGl0aW9uYWwgPSBwYXJzZUV4cHJlc3Np
b24oKTsKKyAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICBsZXQgYm9keSA9IHBhcnNlU3Rh
dGVtZW50KCk7CisgICAgICAgIHJldHVybiBuZXcgV2hpbGVMb29wKG9yaWdpbiwgbmV3IENhbGxF
eHByZXNzaW9uKGNvbmRpdGlvbmFsLm9yaWdpbiwgImJvb2wiLCBbXSwgW2NvbmRpdGlvbmFsXSks
IGJvZHkpOworICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbHMoKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUu
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzCmluZGV4IGEwNTBi
MTcwMThjZTJiYzJhNzQyYjEzZmMxM2FiN2M1MDgwY2NhNTcuLmE4NTkxMTgyZmVlZTg4OTVlY2Jh
YzAxZWE1MDg2ZTM3OTM1MjRlODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1ByZXBhcmUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJl
cGFyZS5qcwpAQCAtMzUsNiArMzUsNyBAQCBmdW5jdGlvbiBwcmVwYXJlKG9yaWdpbiwgbGluZU51
bWJlck9mZnNldCwgdGV4dCkKICAgICBjaGVja0xpdGVyYWxUeXBlcyhwcm9ncmFtKTsKICAgICBj
aGVja1JldHVybnMocHJvZ3JhbSk7CiAgICAgY2hlY2tVbnJlYWNoYWJsZUNvZGUocHJvZ3JhbSk7
CisgICAgY2hlY2tMb29wcyhwcm9ncmFtKTsKICAgICBjaGVja1JlY3Vyc2lvbihwcm9ncmFtKTsK
ICAgICBpbmxpbmUocHJvZ3JhbSk7CiAgICAgcmV0dXJuIHByb2dyYW07CmRpZmYgLS1naXQgYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXR1cm5DaGVja2VyLmpzIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV0dXJuQ2hlY2tlci5qcwppbmRleCA0NzJjMGQwYzBmYTgz
NWQ5NzViNGQyYTk0N2M5YzNkZDUwMDIwNjg0Li5kYTRkZjIxYTMyOTMzNGM2Yzk3MDEwNmJhYmY1
MDJhYTk2YjhhZWE0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9S
ZXR1cm5DaGVja2VyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JldHVy
bkNoZWNrZXIuanMKQEAgLTI1LDMxICsyNSw4MSBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBS
ZXR1cm5DaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CisgICAgY29uc3RydWN0b3IocHJvZ3JhbSkK
KyAgICB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIHRoaXMucmV0dXJuU3R5bGUgPSB7Cisg
ICAgICAgICAgICBEZWZpbml0ZWx5UmV0dXJuczogIkRlZmluaXRlbHkgUmV0dXJucyIsCisgICAg
ICAgICAgICBEZWZpbml0ZWx5RG9lc250UmV0dXJuOiAiRGVmaW5pdGVseSBEb2Vzbid0IFJldHVy
biIsCisgICAgICAgICAgICBIYXNudFJldHVybmVkWWV0OiAiSGFzbid0IFJldHVybmVkIFlldCIK
KyAgICAgICAgfTsKKyAgICAgICAgdGhpcy5fcHJvZ3JhbSA9IHByb2dyYW07CisgICAgfQorCiAg
ICAgdmlzaXRGdW5jRGVmKG5vZGUpCiAgICAgewogICAgICAgICBpZiAobm9kZS5yZXR1cm5UeXBl
LmVxdWFscyhub2RlLnByb2dyYW0uaW50cmluc2ljcy52b2lkKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCi0gICAgICAgIGlmICghbm9kZS5ib2R5LnZpc2l0KHRoaXMpKQorICAgICAg
ICBsZXQgYm9keVZhbHVlID0gbm9kZS5ib2R5LnZpc2l0KHRoaXMpOworICAgICAgICBpZiAoYm9k
eVZhbHVlID09IHRoaXMucmV0dXJuU3R5bGUuRGVmaW5pdGVseURvZXNudFJldHVybiB8fCBib2R5
VmFsdWUgPT0gdGhpcy5yZXR1cm5TdHlsZS5IYXNudFJldHVybmVkWWV0KQogICAgICAgICAgICAg
dGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiRnVuY3Rpb24g
ZG9lcyBub3QgcmV0dXJuIik7CiAgICAgfQogICAgIAogICAgIHZpc2l0QmxvY2sobm9kZSkKICAg
ICB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IHJpZ2h0IGZvciBicmVhay9jb250aW51
ZS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NjI2MwotICAgICAgICByZXR1cm4gbm9kZS5zdGF0ZW1lbnRzLnJlZHVjZSgocmVzdWx0LCBzdGF0
ZW1lbnQpID0+IHJlc3VsdCB8fCBzdGF0ZW1lbnQudmlzaXQodGhpcyksIGZhbHNlKTsKKyAgICAg
ICAgZm9yIChsZXQgc3RhdGVtZW50IG9mIG5vZGUuc3RhdGVtZW50cykgeworICAgICAgICAgICAg
c3dpdGNoIChzdGF0ZW1lbnQudmlzaXQodGhpcykpIHsKKyAgICAgICAgICAgIGNhc2UgdGhpcy5y
ZXR1cm5TdHlsZS5EZWZpbml0ZWx5UmV0dXJuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5yZXR1cm5TdHlsZS5EZWZpbml0ZWx5UmV0dXJuczsKKyAgICAgICAgICAgIGNhc2UgdGhpcy5y
ZXR1cm5TdHlsZS5EZWZpbml0ZWx5RG9lc250UmV0dXJuOgorICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLnJldHVyblN0eWxlLkRlZmluaXRlbHlEb2VzbnRSZXR1cm47CisgICAgICAgICAgICBj
YXNlIHRoaXMucmV0dXJuU3R5bGUuSGFzbnRSZXR1cm5lZFlldDoKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpcy5y
ZXR1cm5TdHlsZS5IYXNudFJldHVybmVkWWV0OwogICAgIH0KIAogICAgIHZpc2l0SWZTdGF0ZW1l
bnQobm9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBub2RlLmVsc2VCb2R5ICYmIG5vZGUuYm9k
eS52aXNpdCh0aGlzKSAmJiBub2RlLmVsc2VCb2R5LnZpc2l0KHRoaXMpOworICAgICAgICBpZiAo
bm9kZS5lbHNlQm9keSkgeworICAgICAgICAgICAgbGV0IGJvZHlWYWx1ZSA9IG5vZGUuYm9keS52
aXNpdCh0aGlzKTsKKyAgICAgICAgICAgIGxldCBlbHNlVmFsdWUgPSBub2RlLmVsc2VCb2R5LnZp
c2l0KHRoaXMpOworICAgICAgICAgICAgaWYgKGJvZHlWYWx1ZSA9PSB0aGlzLnJldHVyblN0eWxl
LkRlZmluaXRlbHlSZXR1cm5zICYmIGVsc2VWYWx1ZSA9PSB0aGlzLnJldHVyblN0eWxlLkRlZmlu
aXRlbHlSZXR1cm5zKQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVyblN0eWxlLkRl
ZmluaXRlbHlSZXR1cm5zOworICAgICAgICAgICAgaWYgKGJvZHlWYWx1ZSA9PSB0aGlzLnJldHVy
blN0eWxlLkRlZmluaXRlbHlEb2VzbnRSZXR1cm4gJiYgZWxzZVZhbHVlID09IHRoaXMucmV0dXJu
U3R5bGUuRGVmaW5pdGVseURvZXNudFJldHVybikKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5yZXR1cm5TdHlsZS5EZWZpbml0ZWx5RG9lc250UmV0dXJuOworICAgICAgICB9CisgICAgICAg
IHJldHVybiB0aGlzLnJldHVyblN0eWxlLkhhc250UmV0dXJuZWRZZXQ7CiAgICAgfQogCi0gICAg
Ly8gSWYgYSBsb29wIHJldHVybnMsIHRoZW4gaXQgY291bnRzIG9ubHkgaWYgdGhlIGxvb3AgaXMg
Z3VhcmFudGVlZCB0byBydW4gYXQgbGVhc3Qgb25jZS4KKyAgICB2aXNpdFdoaWxlTG9vcChub2Rl
KQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuY29uZGl0aW9uYWwgaW5zdGFuY2VvZiBDYWxsRXhw
cmVzc2lvbiAmJiBub2RlLmNvbmRpdGlvbmFsLmlzQ2FzdCAmJiBub2RlLmNvbmRpdGlvbmFsLnJl
dHVyblR5cGUgaW5zdGFuY2VvZiBUeXBlUmVmICYmIG5vZGUuY29uZGl0aW9uYWwucmV0dXJuVHlw
ZS5lcXVhbHModGhpcy5fcHJvZ3JhbS5pbnRyaW5zaWNzLmJvb2wpICYmIG5vZGUuY29uZGl0aW9u
YWwuYXJndW1lbnRMaXN0Lmxlbmd0aCA9PSAxICYmIG5vZGUuY29uZGl0aW9uYWwuYXJndW1lbnRM
aXN0WzBdLmxpc3QubGVuZ3RoID09IDEgJiYgbm9kZS5jb25kaXRpb25hbC5hcmd1bWVudExpc3Rb
MF0ubGlzdFswXSBpbnN0YW5jZW9mIEJvb2xMaXRlcmFsICYmIG5vZGUuY29uZGl0aW9uYWwuYXJn
dW1lbnRMaXN0WzBdLmxpc3RbMF0udmFsdWUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS5i
b2R5LnZpc2l0KHRoaXMpKSB7CisgICAgICAgICAgICBjYXNlIHRoaXMucmV0dXJuU3R5bGUuRGVm
aW5pdGVseVJldHVybnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuU3R5bGUu
RGVmaW5pdGVseVJldHVybnM7CisgICAgICAgICAgICBjYXNlIHRoaXMucmV0dXJuU3R5bGUuRGVm
aW5pdGVseURvZXNudFJldHVybjoKKyAgICAgICAgICAgIGNhc2UgdGhpcy5yZXR1cm5TdHlsZS5I
YXNudFJldHVybmVkWWV0OgorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVyblN0eWxl
Lkhhc250UmV0dXJuZWRZZXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHRoaXMucmV0dXJuU3R5bGUuSGFzbnRSZXR1cm5lZFlldDsKKyAgICB9CiAgICAgCiAgICAg
dmlzaXRSZXR1cm4obm9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBy
ZXR1cm4gdGhpcy5yZXR1cm5TdHlsZS5EZWZpbml0ZWx5UmV0dXJuczsKKyAgICB9CisKKyAgICB2
aXNpdEJyZWFrKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5TdHlsZS5E
ZWZpbml0ZWx5RG9lc250UmV0dXJuOworICAgIH0KKworICAgIHZpc2l0Q29udGludWUobm9kZSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnJldHVyblN0eWxlLkRlZmluaXRlbHlEb2VzbnRS
ZXR1cm47CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUmV3cml0ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5q
cwppbmRleCAyMWQ1YTFhZWY2Y2M5NGU4MTk5YTE3ZDg0YWUzMTY3MmVkMmRiMjgyLi43YzIxODA0
ZDcyM2Q4OGI5OTQ0OTgwOTc4OTJhZjkyMGNjMmY2NTcyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwpAQCAtMjAwLDYgKzIwMCwxNiBAQCBjbGFzcyBSZXdyaXRl
ciBleHRlbmRzIFZpc2l0b3JCYXNlIHsKICAgICAgICAgcmV0dXJuIG5ldyBSZXR1cm4obm9kZS5v
cmlnaW4sIG5vZGUudmFsdWUgPyBub2RlLnZhbHVlLnZpc2l0KHRoaXMpIDogbnVsbCk7CiAgICAg
fQogICAgIAorICAgIHZpc2l0Q29udGludWUobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBu
ZXcgQ29udGludWUobm9kZS5vcmlnaW4pOworICAgIH0KKyAgICAKKyAgICB2aXNpdEJyZWFrKG5v
ZGUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IEJyZWFrKG5vZGUub3JpZ2luKTsKKyAgICB9
CisgICAgCiAgICAgdmlzaXRJbnRMaXRlcmFsKG5vZGUpCiAgICAgewogICAgICAgICBsZXQgcmVz
dWx0ID0gbmV3IEludExpdGVyYWwobm9kZS5vcmlnaW4sIG5vZGUudmFsdWUpOwpAQCAtMjgzLDUg
KzI5MywxMCBAQCBjbGFzcyBSZXdyaXRlciBleHRlbmRzIFZpc2l0b3JCYXNlIHsKICAgICB7CiAg
ICAgICAgIHJldHVybiBuZXcgSWZTdGF0ZW1lbnQobm9kZS5vcmlnaW4sIG5vZGUuY29uZGl0aW9u
YWwudmlzaXQodGhpcyksIG5vZGUuYm9keS52aXNpdCh0aGlzKSwgbm9kZS5lbHNlQm9keSA/IG5v
ZGUuZWxzZUJvZHkudmlzaXQodGhpcykgOiB1bmRlZmluZWQpOwogICAgIH0KKworICAgIHZpc2l0
V2hpbGVMb29wKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdoaWxlTG9vcChub2Rl
Lm9yaWdpbiwgbm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKSwgbm9kZS5ib2R5LnZpc2l0KHRo
aXMpKTsKKyAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1N0YW5kYXJkTGlicmFyeS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0
YW5kYXJkTGlicmFyeS5qcwppbmRleCA2MDMxMzRkODBjODQzNDhlYjkxYjg4OGQ2NWU2ODI1Mzk5
YmVmOGMwLi4wNDdjNWE5NmRmODRhMjM5MWM4YTcwYjRjY2U1ODA5ODY2NTg2YjgzIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMKKysr
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCkBAIC01
Miw2ICs1MiwxNCBAQCBuYXRpdmUgdWludCBvcGVyYXRvci8odWludCwgdWludCk7CiBuYXRpdmUg
Ym9vbCBvcGVyYXRvcj09KGludCwgaW50KTsKIG5hdGl2ZSBib29sIG9wZXJhdG9yPT0odWludCwg
dWludCk7CiBuYXRpdmUgYm9vbCBvcGVyYXRvcj09KGJvb2wsIGJvb2wpOworbmF0aXZlIGJvb2wg
b3BlcmF0b3I8KGludCwgaW50KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPCh1aW50LCB1aW50KTsK
K25hdGl2ZSBib29sIG9wZXJhdG9yPD0oaW50LCBpbnQpOworbmF0aXZlIGJvb2wgb3BlcmF0b3I8
PSh1aW50LCB1aW50KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPihpbnQsIGludCk7CituYXRpdmUg
Ym9vbCBvcGVyYXRvcj4odWludCwgdWludCk7CituYXRpdmUgYm9vbCBvcGVyYXRvcj49KGludCwg
aW50KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPj0odWludCwgdWludCk7CiAKIHByb3RvY29sIEVx
dWF0YWJsZSB7CiAgICAgYm9vbCBvcGVyYXRvcj09KEVxdWF0YWJsZSwgRXF1YXRhYmxlKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAppbmRleCAyYjQxZTI4MTI3YTdmYzZj
M2FmMzk1ZDZjMzk4N2JhMzJhZmM1MDcwLi5iZjc4MTdhMzhiM2ExZDg2NDEwY2QwZmI1MzE0ZWEy
N2JkMDk5ZmRkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0
Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC0x
NSwxNyArMTUsMjAgQEAKIDxzY3JpcHQgc3JjPSJBc3NpZ25tZW50LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJCbG9jay5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQm9vbExpdGVyYWwu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkJyZWFrLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJDYWxsQXNzaWdubWVudC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2FsbEV4cHJl
c3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNhbGxGdW5jdGlvbi5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2suanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNr
TGl0ZXJhbFR5cGVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDaGVja0xvb3BzLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja1JlY3Vyc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iQ2hlY2tSZXR1cm5zLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja1Vu
cmVhY2hhYmxlQ29kZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tlci5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ29tbWFFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJDb25zdGV4cHJUeXBlUGFyYW1ldGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJDb250aW51ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRG90RXhwcmVzc2lvbi5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRGVyZWZlcmVuY2VFeHByZXNzaW9uLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJFQXJyYXlSZWYuanMiPjwvc2NyaXB0PgpAQCAtNTIsNiArNTUsNyBA
QAogPHNjcmlwdCBzcmM9IkxleGVyVG9rZW4uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ikxp
dGVyYWxUeXBlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTG9naWNhbE5vdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTG9vcENoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ik1ha2VQdHJFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJO
YW1lQ29udGV4dC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTmFtZVJlc29sdmVyLmpzIj48
L3NjcmlwdD4KQEAgLTk3LDYgKzEwMSw3IEBACiA8c2NyaXB0IHNyYz0iV1N5bnRheEVycm9yLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJXVHJhcEVycm9yLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJXVHlwZUVycm9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJXaGlsZUxvb3Au
anMiPjwvc2NyaXB0PgogCiA8c2NyaXB0IHNyYz0iVGVzdC5qcyI+PC9zY3JpcHQ+CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCmluZGV4IGE2NDJjNDQ5NjQ3NTE2ZDM1OGYxZTU4
YTRlYjJhY2JkYzI0ODYyNzcuLjA0Zjc1NTQ0ZDY5MzY1NWNiOTRjOGNlOGE1MjI0NTM5NmE3OTlk
YmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKKysr
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwpAQCAtMTMzNCw2ICsxMzM0
LDI5IEBAIGZ1bmN0aW9uIFRFU1RfcmV0dXJuSWYoKQogICAgICAgICAgICAgfQogICAgICAgICBg
KSwKICAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBwcm9ncmFt
ID0gZG9QcmVwKGAKKyAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaW50IHkgPSA2OworICAgICAgICAgICAgaWYgKHggPT0gNykKKyAgICAgICAgICAgICAgICBp
bnQgeSA9IDg7CisgICAgICAgICAgICByZXR1cm4geTsKKyAgICAgICAgfQorICAgIGApOworICAg
IGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtl
SW50KHByb2dyYW0sIDcpXSksIDYpOworfQorCitmdW5jdGlvbiBURVNUX3NpbXBsZVdoaWxlKCkK
K3sKKyAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIGludCBmb28oaW50IHgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHdoaWxlICh4IDwgMTMpCisgICAgICAgICAgICAgICAgeCA9
IHggKiAyOworICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBj
aGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUlu
dChwcm9ncmFtLCAxKV0pLCAxNik7CiB9CiAKIGZ1bmN0aW9uIFRFU1RfcHJvdG9jb2xNb25vUG9s
eVNpZ0RvdWJsZVBvbHlEZWZFeHBsaWNpdCgpCkBAIC0xNDAwLDYgKzE0MjMsMTM1IEBAIGZ1bmN0
aW9uIFRFU1RfYW1iaWd1b3VzT3ZlcmxvYWRUaWVCcmVhaygpCiAgICAgYCk7CiB9CiAKK2Z1bmN0
aW9uIFRFU1RfYnJlYWsoKQoreworICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAg
aW50IGZvbyhpbnQgeCkKKyAgICAgICAgeworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgICAgICAgICB4ID0geCAqIDI7CisgICAgICAgICAgICAgICAgaWYgKHggPj0gNykKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4geDsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDEpXSksIDgpOworICAg
IGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtl
SW50KHByb2dyYW0sIDEwKV0pLCAyMCk7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAg
IGludCBmb28oaW50IHgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Cisg
ICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgeCA9IHgg
KiAyOworICAgICAgICAgICAgICAgICAgICBpZiAoeCA+PSA3KQorICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHggPSB4IC0g
MTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiB4OworICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChw
cm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFt
LCAxKV0pLCA3KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCAxMCldKSwgMTkpOworICAgIGNoZWNrRmFpbCgK
KyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAgIGludCBmb28oaW50IHgpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgeCA9IHggKyAxOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCksCisg
ICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAor
ICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICByZXR1cm4g
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNl
b2YgV1R5cGVFcnJvcik7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgICAgICBpbnQg
Zm9vKGludCB4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICh4ID09IDcpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHgg
PSB4ICsgMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHg7Cisg
ICAgICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgMSldKSwgNyk7CisgICAgcHJv
Z3JhbSA9IGRvUHJlcChgCisgICAgICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAg
ICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCAxKV0pLCAxKTsKKyAgICBwcm9ncmFt
ID0gZG9QcmVwKGAKKyAgICAgICAgICAgIGludCBmb28oKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiA3Owor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChw
cm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbXSksIDcpOworICAgIGNo
ZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAgIGludCBmb28oaW50
IHgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDc7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBgKSwKKyAgICAgICAgKGUpID0+
IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKK30KKworZnVuY3Rpb24gVEVTVF9jb250aW51ZSgp
Cit7CisgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICBpbnQgZm9vKGludCB4KQor
ICAgICAgICB7CisgICAgICAgICAgICB3aGlsZSAoeCA8IDEwKSB7CisgICAgICAgICAgICAgICAg
aWYgKHggPT0gOCkgeworICAgICAgICAgICAgICAgICAgICB4ID0geCArIDE7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB4
ID0geCAqIDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAg
fQorICAgIGApOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDEpXSksIDE4KTsKKyAgICBjaGVja0ZhaWwoCisg
ICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHJldHVy
biB4OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICBgKSwKKyAgICAg
ICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKK30KKwogbGV0IGZpbHRlciA9IC8u
Ki87IC8vIHJ1biBldmVyeXRoaW5nIGJ5IGRlZmF1bHQKIGlmICh0aGlzWyJhcmd1bWVudHMiXSkg
ewogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9VbnJlYWNoYWJsZUNvZGVDaGVj
a2VyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5yZWFjaGFibGVDb2RlQ2hl
Y2tlci5qcwppbmRleCA1ZWYxNzMxZGFlMDdjYjgwNzEyNTdlNTdmMWVkMDgwOTVmNTE0OTgzLi4x
MWM4ZTE5ZWUxNmZjYzBjZGFkMGVkOWEyY2Y0MGQ0OTQxZTMwYjgwIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9VbnJlYWNoYWJsZUNvZGVDaGVja2VyLmpzCisrKyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1VucmVhY2hhYmxlQ29kZUNoZWNrZXIuanMK
QEAgLTI1LDIyICsyNSwyNSBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBVbnJlYWNoYWJsZUNv
ZGVDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7Ci0gICAgY29uc3RydWN0b3IoKQorICAgIGNvbnN0
cnVjdG9yKHByb2dyYW0pCiAgICAgewogICAgICAgICBzdXBlcigpOwotICAgICAgICB0aGlzLl9y
ZXR1cm5DaGVja2VyID0gbmV3IFJldHVybkNoZWNrZXIoKTsKKyAgICAgICAgdGhpcy5fcmV0dXJu
Q2hlY2tlciA9IG5ldyBSZXR1cm5DaGVja2VyKHByb2dyYW0pOwogICAgIH0KICAgICAKICAgICB2
aXNpdEJsb2NrKG5vZGUpCiAgICAgeworICAgICAgICBzdXBlci52aXNpdEJsb2NrKG5vZGUpOwog
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuc3RhdGVtZW50cy5sZW5ndGggLSAxOyAr
K2kpIHsKLSAgICAgICAgICAgIGxldCBzdGF0ZW1lbnQgPSBub2RlLnN0YXRlbWVudHNbaV07Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBhbHNvIGNoZWNrIGlmIHRoaXMgc3RhdGVtZW50
IGNhbiBicmVhayBvciBjb250aW51ZS4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYyNjMKLSAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQu
dmlzaXQodGhpcy5fcmV0dXJuQ2hlY2tlcikpCisgICAgICAgICAgICBzd2l0Y2gobm9kZS5zdGF0
ZW1lbnRzW2ldLnZpc2l0KHRoaXMuX3JldHVybkNoZWNrZXIpKSB7CisgICAgICAgICAgICBjYXNl
IHRoaXMuX3JldHVybkNoZWNrZXIucmV0dXJuU3R5bGUuRGVmaW5pdGVseVJldHVybnM6CisgICAg
ICAgICAgICBjYXNlIHRoaXMuX3JldHVybkNoZWNrZXIucmV0dXJuU3R5bGUuRGVmaW5pdGVseURv
ZXNudFJldHVybjoKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcigKICAgICAg
ICAgICAgICAgICAgICAgbm9kZS5zdGF0ZW1lbnRzW2kgKyAxXS5vcmlnaW4ub3JpZ2luU3RyaW5n
LAogICAgICAgICAgICAgICAgICAgICAiVW5yZWFjaGFibGUgY29kZSIpOworICAgICAgICAgICAg
Y2FzZSB0aGlzLl9yZXR1cm5DaGVja2VyLnJldHVyblN0eWxlLkhhc250UmV0dXJuZWRZZXQ6Cisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwppbmRleCA5NWQxNWNl
NDY0YTE1MWI5NGM2OTYxZTY4MjdjMjk1YTdhNzViZWY1Li5kMmQyMDVmYzY4MTExODgyMGFkZDRh
ZjE0MzcwMDczYjU2MzQxNGY0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9WaXNpdG9yLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0
b3IuanMKQEAgLTIxNSwxMiArMjE1LDI2IEBAIGNsYXNzIFZpc2l0b3IgZXh0ZW5kcyBWaXNpdG9y
QmFzZSB7CiAgICAgICAgIGlmIChub2RlLmVsc2VCb2R5KQogICAgICAgICAgICAgbm9kZS5lbHNl
Qm9keS52aXNpdCh0aGlzKTsKICAgICB9CisgICAgCisgICAgdmlzaXRXaGlsZUxvb3Aobm9kZSkK
KyAgICB7CisgICAgICAgIG5vZGUuY29uZGl0aW9uYWwudmlzaXQodGhpcyk7CisgICAgICAgIG5v
ZGUuYm9keS52aXNpdCh0aGlzKTsKKyAgICB9CiAKICAgICB2aXNpdFJldHVybihub2RlKQogICAg
IHsKICAgICAgICAgaWYgKG5vZGUudmFsdWUpCiAgICAgICAgICAgICBub2RlLnZhbHVlLnZpc2l0
KHRoaXMpOwogICAgIH0KKworICAgIHZpc2l0Q29udGludWUobm9kZSkKKyAgICB7CisgICAgfQor
CisgICAgdmlzaXRCcmVhayhub2RlKQorICAgIHsKKyAgICB9CiAgICAgCiAgICAgdmlzaXRJbnRM
aXRlcmFsKG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvV2hpbGVMb29wLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvV2hpbGVM
b29wLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRjMTljMzRlNWE3Nzc5NGY1NmY5ZDU3NmQ4ODk3ZDJlZTQzOWU3
OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XaGls
ZUxvb3AuanMKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworInVzZSBzdHJpY3QiOworCitjbGFzcyBXaGlsZUxvb3AgZXh0ZW5kcyBO
b2RlIHsKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIGNvbmRpdGlvbmFsLCBib2R5KQorICAgIHsK
KyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgdGhpcy5fb3JpZ2luID0gb3JpZ2luOworICAgICAg
ICB0aGlzLl9jb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsOworICAgICAgICB0aGlzLl9ib2R5ID0g
Ym9keTsKKyAgICB9CisKKyAgICBnZXQgb3JpZ2luKCkgeyByZXR1cm4gdGhpcy5fb3JpZ2luOyB9
CisgICAgZ2V0IGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gdGhpcy5fY29uZGl0aW9uYWw7IH0KKyAg
ICBnZXQgYm9keSgpIHsgcmV0dXJuIHRoaXMuX2JvZHk7IH0KKworICAgIHRvU3RyaW5nKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiAid2hpbGUgKCIgKyB0aGlzLmNvbmRpdGlvbmFsICsgIikgIiAr
IHRoaXMuYm9keTsKKyAgICB9Cit9OworCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320409</attachid>
            <date>2017-09-10 17:37:05 -0700</date>
            <delta_ts>2017-09-10 17:57:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176581-20170910173704.patch</filename>
            <type>text/plain</type>
            <size>45979</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODQwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzZhZjIxZjI4OTFjYmQ2NmY5M2YxMThkNmVhYTBiY2Uw
ZTNmZTg3Yi4uNTllYTQzMjZkY2FlZDBhMzcwOWFlZGNmNWRhM2U2MTRkZDgyOGMxMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1
IEBACisyMDE3LTA5LTEwICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgV1NMIHNob3VsZCBzdXBwb3J0IHdoaWxlIGxvb3BzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY1ODEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgYSBmZXcgaW50ZXJl
c3RpbmcgcGllY2VzIHRvIHRoaXMgcGF0Y2g6CisgICAgICAgIDEuIEJlY2F1c2UgdGhlIGV2YWx1
YXRvciBpcyBqdXN0IGEgbm9kZS1iYXNlZCBkZXNjZW50IHRocm91Z2ggdGhlIHRyZWUsIHRoZSBp
bXBsZW1lbnRhdGlvbiBvZiBicmVhaworICAgICAgICBhbmQgY29udGludWUgYXJlIGp1c3QgInRo
cm93Ii4KKyAgICAgICAgMi4gVGhlIFJldHVybkNoZWNrZXIgbm93IGhhcyB0byByZXR1cm4gYSB0
aHJlZS1zdGF0ZSBlbnVtIGJlY2F1c2Ugb2YgbmVzdGVkIGJsb2Nrcy4gVGhlIG91dGVyIGJsb2Nr
CisgICAgICAgIGNhcmVzIGFib3V0IGlmIHRoZSBpbm5lciBibG9jayBoYXMgImJyZWFrIiBhcyBv
cHBvc2VkIHRvIGl0IGhhdmluZyBubyByZXR1cm5zIG5vciBicmVha3MvY29udGludWVzLgorICAg
ICAgICAzLiBSZXR1cm5DaGVja2VyIHdpbGwgdHJlYXQgIndoaWxlICh0cnVlKSIgdGhlIHNhbWUg
YXMgeyB9LCBidXQgd2lsbCBub3QgZGVzY2VuZCBkZWVwZXIgZm9yIHRoaW5ncworICAgICAgICBs
aWtlICJ3aGlsZSAoMyA9PSAzKSIuCisgICAgICAgIDQuIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEg
ZmV3IG1vcmUgYm9vbGVhbiBjb25kaXRpb25hbCBmdW5jdGlvbnMgbGlrZSBvcGVyYXRvcjwoKS4K
KyAgICAgICAgNS4gSSBhZGRlZCBhbm90aGVyIHBhc3Mgd2hpY2ggbWFrZXMgc3VyZSB0aGVyZSBh
cmUgbm8gYmFyZSBicmVhay9yZXR1cm4ga2V5d29yZHMgb3V0c2lkZSBvZiBsb29wcy4KKworICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9CcmVhay5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQ2hlY2tVbnJlYWNoYWJsZUNvZGUuanMuCisgICAgICAgIChCcmVhayk6Cisg
ICAgICAgIChCcmVhay5wcm90b3R5cGUuZ2V0IG9yaWdpbik6CisgICAgICAgIChCcmVhay5wcm90
b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNr
TG9vcHMuanM6IENvcGllZCBmcm9tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNr
UmV0dXJucy5qcy4KKyAgICAgICAgKGNoZWNrTG9vcHMpOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0NoZWNrUmV0dXJucy5qczoKKyAgICAgICAgKGNoZWNrUmV0dXJucyk6Cisg
ICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tVbnJlYWNoYWJsZUNvZGUuanM6
CisgICAgICAgIChjaGVja1VucmVhY2hhYmxlQ29kZSk6CisgICAgICAgICogV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQ2hlY2tlci5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9Db250aW51ZS5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
Q2hlY2tSZXR1cm5zLmpzLgorICAgICAgICAoQ29udGludWUpOgorICAgICAgICAoQ29udGludWUu
cHJvdG90eXBlLmdldCBvcmlnaW4pOgorICAgICAgICAoQ29udGludWUucHJvdG90eXBlLnRvU3Ry
aW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanM6Cisg
ICAgICAgIChFdmFsdWF0b3IucHJvdG90eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKEV2
YWx1YXRvci5wcm90b3R5cGUudmlzaXRCcmVhayk6CisgICAgICAgIChFdmFsdWF0b3IucHJvdG90
eXBlLnZpc2l0Q29udGludWUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lu
dHJpbnNpY3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzKToKKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9MZXhlci5qczoKKyAgICAgICAgKExleGVyLnByb3RvdHlwZS5uZXh0KToK
KyAgICAgICAgKExleGVyKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Mb29w
Q2hlY2tlci5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV0
dXJuQ2hlY2tlci5qcy4KKyAgICAgICAgKExvb3BDaGVja2VyKToKKyAgICAgICAgKExvb3BDaGVj
a2VyLnByb3RvdHlwZS52aXNpdEZ1bmNEZWYpOgorICAgICAgICAoTG9vcENoZWNrZXIucHJvdG90
eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKExvb3BDaGVja2VyLnByb3RvdHlwZS52aXNp
dEJyZWFrKToKKyAgICAgICAgKExvb3BDaGVja2VyLnByb3RvdHlwZS52aXNpdENvbnRpbnVlKToK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanM6CisgICAg
ICAgIChOYW1lUmVzb2x2ZXIucHJvdG90eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Ob2RlLmpzOgorICAgICAgICAoTm9kZS5wcm90b3R5cGUu
dmlzaXQpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAg
ICAgICAocGFyc2VQb3NzaWJsZVJlbGF0aW9uYWxJbmVxdWFsaXR5KToKKyAgICAgICAgKHBhcnNl
QnJlYWspOgorICAgICAgICAocGFyc2VDb250aW51ZSk6CisgICAgICAgIChwYXJzZVdoaWxlKToK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzOgorICAgICAgICAo
cHJlcGFyZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV0dXJuQ2hlY2tl
ci5qczoKKyAgICAgICAgKFJldHVybkNoZWNrZXIpOgorICAgICAgICAoUmV0dXJuQ2hlY2tlci5w
cm90b3R5cGUudmlzaXRGdW5jRGVmKToKKyAgICAgICAgKFJldHVybkNoZWNrZXIucHJvdG90eXBl
LnZpc2l0QmxvY2spOgorICAgICAgICAoUmV0dXJuQ2hlY2tlci5wcm90b3R5cGUudmlzaXRJZlN0
YXRlbWVudCk6CisgICAgICAgIChSZXR1cm5DaGVja2VyLnByb3RvdHlwZS52aXNpdFdoaWxlTG9v
cCk6CisgICAgICAgIChSZXR1cm5DaGVja2VyLnByb3RvdHlwZS52aXNpdFJldHVybik6CisgICAg
ICAgIChSZXR1cm5DaGVja2VyLnByb3RvdHlwZS52aXNpdEJyZWFrKToKKyAgICAgICAgKFJldHVy
bkNoZWNrZXIucHJvdG90eXBlLnZpc2l0Q29udGludWUpOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzOgorICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZp
c2l0Q29udGludWUpOgorICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZpc2l0QnJlYWspOgor
ICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZpc2l0V2hpbGVMb29wKToKKyAgICAgICAgKFJl
d3JpdGVyKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJh
cnlQcm9sb2d1ZS5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0
bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qczoKKyAgICAgICAg
KFRFU1RfcmV0dXJuSWYpOgorICAgICAgICAoVEVTVF9zaW1wbGVXaGlsZSk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5yZWFjaGFibGVDb2RlQ2hlY2tlci5qczoKKyAgICAg
ICAgKFVucmVhY2hhYmxlQ29kZUNoZWNrZXIpOgorICAgICAgICAoVW5yZWFjaGFibGVDb2RlQ2hl
Y2tlci5wcm90b3R5cGUudmlzaXRCbG9jayk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVmlzaXRvci5qczoKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0V2hpbGVM
b29wKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0Q29udGludWUpOgorICAgICAg
ICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRCcmVhayk6CisgICAgICAgICogV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvV2hpbGVMb29wLmpzOiBDb3BpZWQgZnJvbSBUb29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9DaGVja1JldHVybnMuanMuCisgICAgICAgIChXaGlsZUxvb3ApOgorICAgICAg
ICAoV2hpbGVMb29wLnByb3RvdHlwZS5nZXQgb3JpZ2luKToKKyAgICAgICAgKFdoaWxlTG9vcC5w
cm90b3R5cGUuZ2V0IGNvbmRpdGlvbmFsKToKKyAgICAgICAgKFdoaWxlTG9vcC5wcm90b3R5cGUu
Z2V0IGJvZHkpOgorICAgICAgICAoV2hpbGVMb29wLnByb3RvdHlwZS50b1N0cmluZyk6CisKIDIw
MTctMDktMDcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBXU0wg
b3ZlcmxvYWQgcmVzb2x1dGlvbiBzaG91bGQgbm90IGJlIGNhc2NhZGluZwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQWxsLmpzCmluZGV4IDgzYzBjYzZiOTllZDNjYjc2YTFjZmMxZTM5MDMwYTIy
Njg3ZGNjNGQuLmU3MDU2ZjAyNmFkODY4MTQxNjgzNmE1ZDkzMDA5NmJkMGViM2Q2MTUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcworKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKQEAgLTM5LDE4ICszOSwyMiBAQCBsb2FkKCJB
cnJheVR5cGUuanMiKTsKIGxvYWQoIkFzc2lnbm1lbnQuanMiKTsKIGxvYWQoIkJsb2NrLmpzIik7
CiBsb2FkKCJCb29sTGl0ZXJhbC5qcyIpOworbG9hZCgiQnJlYWsuanMiKTsKIGxvYWQoIkNhbGxB
c3NpZ25tZW50LmpzIik7CiBsb2FkKCJDYWxsRXhwcmVzc2lvbi5qcyIpOwogbG9hZCgiQ2FsbEZ1
bmN0aW9uLmpzIik7CiBsb2FkKCJDaGVjay5qcyIpOwogbG9hZCgiQ2hlY2tMaXRlcmFsVHlwZXMu
anMiKTsKK2xvYWQoIkNoZWNrTG9vcHMuanMiKTsKIGxvYWQoIkNoZWNrUmVjdXJzaW9uLmpzIik7
CiBsb2FkKCJDaGVja1JldHVybnMuanMiKTsKIGxvYWQoIkNoZWNrVW5yZWFjaGFibGVDb2RlLmpz
Iik7CiBsb2FkKCJDaGVja2VyLmpzIik7CiBsb2FkKCJDb21tYUV4cHJlc3Npb24uanMiKTsKIGxv
YWQoIkNvbnN0ZXhwclR5cGVQYXJhbWV0ZXIuanMiKTsKK2xvYWQoIkNvbnRpbnVlLmpzIik7CiBs
b2FkKCJEZXJlZmVyZW5jZUV4cHJlc3Npb24uanMiKTsKK2xvYWQoIkRvV2hpbGVMb29wLmpzIik7
CiBsb2FkKCJEb3RFeHByZXNzaW9uLmpzIik7CiBsb2FkKCJFQXJyYXlSZWYuanMiKTsKIGxvYWQo
IkVCdWZmZXIuanMiKTsKQEAgLTc2LDYgKzgwLDcgQEAgbG9hZCgiTGV4ZXIuanMiKTsKIGxvYWQo
IkxleGVyVG9rZW4uanMiKTsKIGxvYWQoIkxpdGVyYWxUeXBlQ2hlY2tlci5qcyIpOwogbG9hZCgi
TG9naWNhbE5vdC5qcyIpOworbG9hZCgiTG9vcENoZWNrZXIuanMiKTsKIGxvYWQoIk1ha2VQdHJF
eHByZXNzaW9uLmpzIik7CiBsb2FkKCJOYW1lQ29udGV4dC5qcyIpOwogbG9hZCgiTmFtZVJlc29s
dmVyLmpzIik7CkBAIC0xMjEsMyArMTI2LDQgQEAgbG9hZCgiVmlzaXRpbmdTZXQuanMiKTsKIGxv
YWQoIldTeW50YXhFcnJvci5qcyIpOwogbG9hZCgiV1RyYXBFcnJvci5qcyIpOwogbG9hZCgiV1R5
cGVFcnJvci5qcyIpOworbG9hZCgiV2hpbGVMb29wLmpzIik7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9CcmVhay5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0JyZWFrLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlMjI2MTA2YzlmZjllNjg2ZDBiYjFkNTZlNzk1
ZDQ3NTNkNzE1YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9CcmVhay5qcwpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIEJyZWFrIGV4dGVuZHMg
Tm9kZSB7CisgICAgY29uc3RydWN0b3Iob3JpZ2luKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsK
KyAgICAgICAgdGhpcy5fb3JpZ2luID0gb3JpZ2luOworICAgIH0KKyAgICAKKyAgICBnZXQgb3Jp
Z2luKCkgeyByZXR1cm4gdGhpcy5fb3JpZ2luOyB9CisgICAgCisgICAgdG9TdHJpbmcoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuICJCcmVhayI7CisgICAgfQorfTsKKwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tMb29wcy5qcyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0NoZWNrTG9vcHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2IzNjJlOWVmZDcwNTJm
YTVkMTlmMGVkNjEyOTJkMTg5NDdlYWE4ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrTG9vcHMuanMKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworInVzZSBzdHJpY3QiOworCitm
dW5jdGlvbiBjaGVja0xvb3BzKHByb2dyYW0pCit7CisgICAgcHJvZ3JhbS52aXNpdChuZXcgTG9v
cENoZWNrZXIoKSk7Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0NoZWNrUmV0dXJucy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNr
UmV0dXJucy5qcwppbmRleCA0YjYwYTFiMjc4N2VhMmJkOGUyYTNmYTk2NjkwOGM4M2Y4ODNiMTJh
Li40NjVmZTM2OGE0OGZjOGJiM2VmMmI3ODE3MDg3NzFiMTY2NmY3ZGYxIDEwMDY0NAotLS0gYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja1JldHVybnMuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tSZXR1cm5zLmpzCkBAIC0yNiw2ICsyNiw2IEBA
CiAKIGZ1bmN0aW9uIGNoZWNrUmV0dXJucyhwcm9ncmFtKQogewotICAgIHByb2dyYW0udmlzaXQo
bmV3IFJldHVybkNoZWNrZXIoKSk7CisgICAgcHJvZ3JhbS52aXNpdChuZXcgUmV0dXJuQ2hlY2tl
cihwcm9ncmFtKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0NoZWNrVW5yZWFjaGFibGVDb2RlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQ2hlY2tVbnJlYWNoYWJsZUNvZGUuanMKaW5kZXggZDU0NjA2YjcyYTllM2JhODlmZDRkZTE2
YWQ3MTE1YzA3YjE2YmE2Mi4uZGYzMWRhOTQ2ZDE1MWJmMWRkODZiZDNiNGY1M2ZjNjg3ZGNhOTM1
YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tVbnJlYWNo
YWJsZUNvZGUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tVbnJl
YWNoYWJsZUNvZGUuanMKQEAgLTI2LDYgKzI2LDYgQEAKIAogZnVuY3Rpb24gY2hlY2tVbnJlYWNo
YWJsZUNvZGUocHJvZ3JhbSkKIHsKLSAgICBwcm9ncmFtLnZpc2l0KG5ldyBVbnJlYWNoYWJsZUNv
ZGVDaGVja2VyKCkpOworICAgIHByb2dyYW0udmlzaXQobmV3IFVucmVhY2hhYmxlQ29kZUNoZWNr
ZXIocHJvZ3JhbSkpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9DaGVja2VyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5q
cwppbmRleCA4MDgxYjY3M2NmMDA0ODhkOGUxMDUzYTY1MjY0OGM5MGQ5Zjc1YTQ1Li40ODQyMDVk
NzMzNmIwM2Q5MzIwYjZhMWI2NTExNDkyNWQyMDkyNDkzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0NoZWNrZXIuanMKQEAgLTIzNyw2ICsyMzcsMjYgQEAgY2xhc3MgQ2hlY2tlciBl
eHRlbmRzIFZpc2l0b3IgewogICAgICAgICBpZiAobm9kZS5lbHNlQm9keSkKICAgICAgICAgICAg
IG5vZGUuZWxzZUJvZHkudmlzaXQodGhpcyk7CiAgICAgfQorCisgICAgdmlzaXRXaGlsZUxvb3Ao
bm9kZSkKKyAgICB7CisgICAgICAgIGxldCBjb25kaXRpb25hbFJlc3VsdFR5cGUgPSBub2RlLmNv
bmRpdGlvbmFsLnZpc2l0KHRoaXMpOworICAgICAgICBpZiAoIWNvbmRpdGlvbmFsUmVzdWx0VHlw
ZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVHJ5aW5nIHRvIG5lZ2F0ZSBzb21ldGhp
bmcgd2l0aCBubyB0eXBlOiAiICsgbm9kZS5jb25kaXRpb25hbCk7CisgICAgICAgIGlmICghY29u
ZGl0aW9uYWxSZXN1bHRUeXBlLmVxdWFscyh0aGlzLl9wcm9ncmFtLmludHJpbnNpY3MuYm9vbCkp
CisgICAgICAgICAgICB0aHJvdyBuZXcgV0Vycm9yKCJUcnlpbmcgdG8gbmVnYXRlIHNvbWV0aGlu
ZyB0aGF0IGlzbid0IGEgYm9vbDogIiArIG5vZGUuY29uZGl0aW9uYWwpOworICAgICAgICBub2Rl
LmJvZHkudmlzaXQodGhpcyk7CisgICAgfQorCisgICAgdmlzaXREb1doaWxlTG9vcChub2RlKQor
ICAgIHsKKyAgICAgICAgbm9kZS5ib2R5LnZpc2l0KHRoaXMpOworICAgICAgICBsZXQgY29uZGl0
aW9uYWxSZXN1bHRUeXBlID0gbm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKTsKKyAgICAgICAg
aWYgKCFjb25kaXRpb25hbFJlc3VsdFR5cGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IlRyeWluZyB0byBuZWdhdGUgc29tZXRoaW5nIHdpdGggbm8gdHlwZTogIiArIG5vZGUuY29uZGl0
aW9uYWwpOworICAgICAgICBpZiAoIWNvbmRpdGlvbmFsUmVzdWx0VHlwZS5lcXVhbHModGhpcy5f
cHJvZ3JhbS5pbnRyaW5zaWNzLmJvb2wpKQorICAgICAgICAgICAgdGhyb3cgbmV3IFdFcnJvcigi
VHJ5aW5nIHRvIG5lZ2F0ZSBzb21ldGhpbmcgdGhhdCBpc24ndCBhIGJvb2w6ICIgKyBub2RlLmNv
bmRpdGlvbmFsKTsKKyAgICB9CiAgICAgCiAgICAgdmlzaXRDb21tYUV4cHJlc3Npb24obm9kZSkK
ICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Db250aW51
ZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NvbnRpbnVlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNiNWNjOTM3MjY0NWQ0NzBkMGY2YTU1NDUyZWU1NzNiYTA2MWQ1ZTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Db250aW51ZS5qcwpAQCAtMCww
ICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisi
dXNlIHN0cmljdCI7CisKK2NsYXNzIENvbnRpbnVlIGV4dGVuZHMgTm9kZSB7CisgICAgY29uc3Ry
dWN0b3Iob3JpZ2luKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgdGhpcy5fb3Jp
Z2luID0gb3JpZ2luOworICAgIH0KKyAgICAKKyAgICBnZXQgb3JpZ2luKCkgeyByZXR1cm4gdGhp
cy5fb3JpZ2luOyB9CisgICAgCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
ICJDb250aW51ZSI7CisgICAgfQorfTsKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvRG9XaGlsZUxvb3AuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9Eb1doaWxlTG9vcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMmI4YTIxMzIyZGNiODcwNTA3MDZmYzk0NTg4
MmU2NGU2ZWZhYjcwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvRG9XaGlsZUxvb3AuanMKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworInVzZSBzdHJpY3QiOworCitjbGFzcyBEb1doaWxl
TG9vcCBleHRlbmRzIE5vZGUgeworICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgYm9keSwgY29uZGl0
aW9uYWwpCisgICAgeworICAgICAgICBzdXBlcigpOworICAgICAgICB0aGlzLl9vcmlnaW4gPSBv
cmlnaW47CisgICAgICAgIHRoaXMuX2JvZHkgPSBib2R5OworICAgICAgICB0aGlzLl9jb25kaXRp
b25hbCA9IGNvbmRpdGlvbmFsOworICAgIH0KKworICAgIGdldCBvcmlnaW4oKSB7IHJldHVybiB0
aGlzLl9vcmlnaW47IH0KKyAgICBnZXQgYm9keSgpIHsgcmV0dXJuIHRoaXMuX2JvZHk7IH0KKyAg
ICBnZXQgY29uZGl0aW9uYWwoKSB7IHJldHVybiB0aGlzLl9jb25kaXRpb25hbDsgfQorCisgICAg
dG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJkbyAiICsgdGhpcy5ib2R5ICsgIiB3
aGlsZSAoIiArIHRoaXMuY29uZGl0aW9uYWwgKyAiKTsiOworICAgIH0KK307CisKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0V2YWx1YXRvci5qcyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0V2YWx1YXRvci5qcwppbmRleCAxZTI3MGUyMzViYWIzYzVl
MGQ0YmM5Nzg1MDBlNzZlMGQxNzYwMjAzLi5jMTdiYzhiM2FkMWE4MmY1M2RiYTdjOTE1MWVlNzg1
ZjRjYjEwZTgzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFs
dWF0b3IuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpz
CkBAIC0xNTksNiArMTU5LDQ2IEBAIGNsYXNzIEV2YWx1YXRvciBleHRlbmRzIFZpc2l0b3Igewog
ICAgICAgICBlbHNlIGlmIChub2RlLmVsc2VCb2R5KQogICAgICAgICAgICAgcmV0dXJuIG5vZGUu
ZWxzZUJvZHkudmlzaXQodGhpcyk7CiAgICAgfQorCisgICAgdmlzaXRXaGlsZUxvb3Aobm9kZSkK
KyAgICB7CisgICAgICAgIHdoaWxlIChub2RlLmNvbmRpdGlvbmFsLnZpc2l0KHRoaXMpLmxvYWRW
YWx1ZSgpKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG5vZGUuYm9keS52
aXNpdCh0aGlzKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoZSBpbnN0YW5jZW9mIEJyZWFrKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIENvbnRpbnVlKQorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgdmlzaXREb1doaWxlTG9vcChub2RlKQorICAgIHsKKyAgICAg
ICAgZG8geworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBub2RlLmJvZHkudmlz
aXQodGhpcyk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgaWYg
KGUgaW5zdGFuY2VvZiBCcmVhaykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBDb250aW51ZSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSB3aGlsZSAobm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKS5sb2FkVmFsdWUoKSk7Cisg
ICAgfQorCisgICAgdmlzaXRCcmVhayhub2RlKQorICAgIHsKKyAgICAgICAgdGhyb3cgbm9kZTsK
KyAgICB9CisKKyAgICB2aXNpdENvbnRpbnVlKG5vZGUpCisgICAgeworICAgICAgICB0aHJvdyBu
b2RlOworICAgIH0KICAgICAKICAgICB2aXNpdENhbGxFeHByZXNzaW9uKG5vZGUpCiAgICAgewpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKaW5kZXggYmNhNDA3
MzdiNDUyNGIzZGZkMzU4NGM2YzM4NDRkMDZhZWE2MjlhZS4uMWJkODIxZDVhNjNlOGQ2ZTMwNzY0
ZTE3MDlkMDc1NDlhYjczZDgyMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvSW50cmluc2ljcy5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9J
bnRyaW5zaWNzLmpzCkBAIC0xNzgsNiArMTc4LDYyIEBAIGNsYXNzIEludHJpbnNpY3MgewogICAg
ICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID09IHJpZ2h0LmxvYWRW
YWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAKKyAgICAgICAgdGhpcy5fbWFwLnNl
dCgKKyAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcjw8PihpbnQsaW50KSIsCisgICAg
ICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KFtsZWZ0LCByaWdodF0pID0+CisgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9h
ZFZhbHVlKCkgPCByaWdodC5sb2FkVmFsdWUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
CisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0
b3I8PD4odWludCx1aW50KSIsCisgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CisgICAgICAgICAgICAg
ICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPCByaWdodC5sb2FkVmFsdWUoKSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAg
ICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8PTw+KGludCxpbnQpIiwKKyAgICAgICAgICAgIGZ1
bmMgPT4geworICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJp
Z2h0XSkgPT4KKyAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA8
PSByaWdodC5sb2FkVmFsdWUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAg
IHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8PTw+KHVp
bnQsdWludCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgorICAgICAgICAgICAgICAgICAgICBF
UHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDw9IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAKKyAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICJu
YXRpdmUgYm9vbCBvcGVyYXRvcj48PihpbnQsaW50KSIsCisgICAgICAgICAgICBmdW5jID0+IHsK
KyAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+
CisgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPiByaWdodC5s
b2FkVmFsdWUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX21h
cC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PD4odWludCx1aW50KSIs
CisgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0
aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CisgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxl
ZnQubG9hZFZhbHVlKCkgPiByaWdodC5sb2FkVmFsdWUoKSk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIGJvb2wg
b3BlcmF0b3I+PTw+KGludCxpbnQpIiwKKyAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KKyAgICAgICAg
ICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+PSByaWdodC5sb2FkVmFsdWUo
KSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisg
ICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PTw+KHVpbnQsdWludCkiLAorICAgICAg
ICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChb
bGVmdCwgcmlnaHRdKSA9PgorICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRW
YWx1ZSgpID49IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAK
ICAgICAgICAgbGV0IGFycmF5RWxlbWVudFB0ciA9IGZ1bmMgPT4gewogICAgICAgICAgICAgZnVu
Yy5pbXBsZW1lbnRhdGlvbiA9IChbcmVmLCBpbmRleF0sIG5vZGUpID0+IHsKICAgICAgICAgICAg
ICAgICByZWYgPSByZWYubG9hZFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9MZXhlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xl
eGVyLmpzCmluZGV4IDIxNGIzNmE5Mzg5M2ZiYWU0YTZiNDU1MzIzYzRlZmMzYjM2OWVlMWIuLjM2
MDQzNzUxNTRkM2IyM2UyZDQ5Y2Q4ZDRlZjJkYWZmZTAxNzg1MjcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0xleGVyLmpzCkBAIC0xMjMsNyArMTIzLDcgQEAgY2xhc3MgTGV4ZXIgewog
ICAgICAgICBpZiAoL14oWzAtOV0qXC5bMC05XSspfChbMC05XStcLlswLTldKikvLnRlc3QocmVs
ZXZhbnRUZXh0KSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQoImRvdWJsZUxpdGVyYWwiKTsK
ICAgICAgICAgCi0gICAgICAgIGlmICgvXi0+fD0+fDw9fD09fCE9fFwrPXwtPXxcKj18XC89fCU9
fF49fFx8PXwmPXwoW3t9KClcW1xdPzo9KypcLywuJSF+XiZ8PD5AOy1dKS8udGVzdChyZWxldmFu
dFRleHQpKQorICAgICAgICBpZiAoL14tPnw+PXw8PXw9PXwhPXxcKz18LT18XCo9fFwvPXwlPXxe
PXxcfD18Jj18KFt7fSgpXFtcXT86PSsqXC8sLiUhfl4mfDw+QDstXSkvLnRlc3QocmVsZXZhbnRU
ZXh0KSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQoInB1bmN0dWF0aW9uIik7CiAgICAgICAg
IAogICAgICAgICBsZXQgcmVtYWluaW5nID0gcmVsZXZhbnRUZXh0LnN1YnN0cmluZygwLCAyMCku
c3BsaXQoL1xzLylbMF07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9Mb29wQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xvb3BDaGVj
a2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdlZjlhNzQ3NzE1YWM2MmIyZDFmMjc4ODM0NTM1YzQ5NDY4ZTBk
MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Mb29w
Q2hlY2tlci5qcwpAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIExvb3BDaGVja2VyIGV4dGVu
ZHMgVmlzaXRvciB7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsK
KyAgICAgICAgdGhpcy5fbG9vcERlcHRoID0gMDsKKyAgICB9CisKKyAgICB2aXNpdEZ1bmNEZWYo
bm9kZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9sb29wRGVwdGggIT0gMCkgeworICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJMb29wQ2hlY2tlciBkb2VzIG5vdCB1bmRlcnN0YW5kIG5l
c3RlZCBmdW5jdGlvbnMuIik7CisgICAgICAgIH0KKyAgICAgICAgc3VwZXIudmlzaXRGdW5jRGVm
KG5vZGUpOworICAgIH0KKworICAgIHZpc2l0V2hpbGVMb29wKG5vZGUpCisgICAgeworICAgICAg
ICBub2RlLmNvbmRpdGlvbmFsLnZpc2l0KHRoaXMpOworICAgICAgICArK3RoaXMuX2xvb3BEZXB0
aDsKKyAgICAgICAgbm9kZS5ib2R5LnZpc2l0KHRoaXMpOworICAgICAgICBpZiAodGhpcy5fbG9v
cERlcHRoID09IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGhlIG51bWJlciBv
ZiBuZXN0ZWQgbG9vcHMgaXMgbmVnYXRpdmUhIik7CisgICAgICAgIH0KKyAgICAgICAgLS10aGlz
Ll9sb29wRGVwdGg7CisgICAgfQorCisgICAgdmlzaXREb1doaWxlTG9vcChub2RlKQorICAgIHsK
KyAgICAgICAgKyt0aGlzLl9sb29wRGVwdGg7CisgICAgICAgIG5vZGUuYm9keS52aXNpdCh0aGlz
KTsKKyAgICAgICAgaWYgKHRoaXMuX2xvb3BEZXB0aCA9PSAwKSB7CisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIlRoZSBudW1iZXIgb2YgbmVzdGVkIGxvb3BzIGlzIG5lZ2F0aXZlISIpOwor
ICAgICAgICB9CisgICAgICAgIC0tdGhpcy5fbG9vcERlcHRoOworICAgICAgICBub2RlLmNvbmRp
dGlvbmFsLnZpc2l0KHRoaXMpOworICAgIH0KKyAgICAKKyAgICB2aXNpdEJyZWFrKG5vZGUpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5fbG9vcERlcHRoID09IDApIHsKKyAgICAgICAgICAgIHRo
cm93IG5ldyBXRXJyb3IoIkJyZWFrIHN0YXRlbWVudCB3aXRob3V0IGVuY2xvc2luZyBsb29wISIp
OworICAgICAgICB9CisgICAgICAgIHN1cGVyLnZpc2l0QnJlYWsobm9kZSk7CisgICAgfQorICAg
IAorICAgIHZpc2l0Q29udGludWUobm9kZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9sb29w
RGVwdGggPT0gMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFdFcnJvcigiQ29udGludWUgc3Rh
dGVtZW50IHdpdGhvdXQgZW5jbG9zaW5nIGxvb3AhIik7CisgICAgICAgIH0KKyAgICAgICAgc3Vw
ZXIudmlzaXRDb250aW51ZShub2RlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMKaW5kZXggZDQ0YzI1MDUwMDNhNzM0ZWQ0Mjk4NzY3
M2E2ZmZkZjg5NTdkNzYyZS4uOTc2ODRmMTBlZTg5ZmNlNjA1ZjIxMTY4YzQwZjc5YTVlNGQyYTQz
NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZVJlc29sdmVy
LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZlci5qcwpA
QCAtOTUsMTEgKzk1LDI1IEBAIGNsYXNzIE5hbWVSZXNvbHZlciBleHRlbmRzIFZpc2l0b3Igewog
ICAgIHZpc2l0SWZTdGF0ZW1lbnQobm9kZSkKICAgICB7CiAgICAgICAgIG5vZGUuY29uZGl0aW9u
YWwudmlzaXQodGhpcyk7Ci0gICAgICAgIC8vIElmIHN0YXRlbWVudCdzIGJvZGllcyBtaWdodCBu
b3QgYmUgQmxvY2tzLCBzbyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgZ2l2ZSB0aGVtIGEgbmV3IGNv
bnRleHQuCisgICAgICAgIC8vIFRoZSBib2RpZXMgbWlnaHQgbm90IGJlIEJsb2Nrcywgc28gd2Ug
bmVlZCB0byBleHBsaWNpdGx5IGdpdmUgdGhlbSBhIG5ldyBjb250ZXh0LgogICAgICAgICBub2Rl
LmJvZHkudmlzaXQobmV3IE5hbWVSZXNvbHZlcihuZXcgTmFtZUNvbnRleHQodGhpcy5fbmFtZUNv
bnRleHQpKSk7CiAgICAgICAgIGlmIChub2RlLmVsc2VCb2R5KQogICAgICAgICAgICAgbm9kZS5l
bHNlQm9keS52aXNpdChuZXcgTmFtZVJlc29sdmVyKG5ldyBOYW1lQ29udGV4dCh0aGlzLl9uYW1l
Q29udGV4dCkpKTsKICAgICB9CisKKyAgICB2aXNpdFdoaWxlTG9vcChub2RlKQorICAgIHsKKyAg
ICAgICAgbm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKTsKKyAgICAgICAgLy8gVGhlIGJvZGll
cyBtaWdodCBub3QgYmUgQmxvY2tzLCBzbyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgZ2l2ZSB0aGVt
IGEgbmV3IGNvbnRleHQuCisgICAgICAgIG5vZGUuYm9keS52aXNpdChuZXcgTmFtZVJlc29sdmVy
KG5ldyBOYW1lQ29udGV4dCh0aGlzLl9uYW1lQ29udGV4dCkpKTsKKyAgICB9CisKKyAgICB2aXNp
dERvV2hpbGVMb29wKG5vZGUpCisgICAgeworICAgICAgICAvLyBUaGUgYm9kaWVzIG1pZ2h0IG5v
dCBiZSBCbG9ja3MsIHNvIHdlIG5lZWQgdG8gZXhwbGljaXRseSBnaXZlIHRoZW0gYSBuZXcgY29u
dGV4dC4KKyAgICAgICAgbm9kZS5ib2R5LnZpc2l0KG5ldyBOYW1lUmVzb2x2ZXIobmV3IE5hbWVD
b250ZXh0KHRoaXMuX25hbWVDb250ZXh0KSkpOworICAgICAgICBub2RlLmNvbmRpdGlvbmFsLnZp
c2l0KHRoaXMpOworICAgIH0KICAgICAKICAgICB2aXNpdFByb3RvY29sRGVjbChub2RlKQogICAg
IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKaW5kZXggYWY2Y2M4MDYwMzE3
Y2Y5N2Q4Y2VmNTk1N2ZiY2UyOTBiMTQ2M2RjNS4uZWRhN2M3YzUyYjFkYWQ3NzY5ZjFiZDgzNjIx
ZGQ5NjJjMjI5Y2M0OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UGFyc2UuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKQEAg
LTQwNCw3ICs0MDQsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktp
bmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgCiAgICAgZnVuY3Rpb24gcGFyc2VQb3Nz
aWJsZVJlbGF0aW9uYWxJbmVxdWFsaXR5KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBwYXJzZUxl
ZnRPcGVyYXRvckNhbGwoWyI8IiwgIj4iLCAiPD0iLCAiPT4iXSwgcGFyc2VQb3NzaWJsZVNoaWZ0
KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlTGVmdE9wZXJhdG9yQ2FsbChbIjwiLCAiPiIsICI8PSIs
ICI+PSJdLCBwYXJzZVBvc3NpYmxlU2hpZnQpOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBw
YXJzZVBvc3NpYmxlUmVsYXRpb25hbEVxdWFsaXR5KCkKQEAgLTUzNSw2ICs1MzUsMjAgQEAgZnVu
Y3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0
LCB0ZXh0KQogICAgICAgICBjb25zdW1lKCI7Iik7CiAgICAgICAgIHJldHVybiBuZXcgUmV0dXJu
KG9yaWdpbiwgZXhwcmVzc2lvbik7CiAgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHBhcnNlQnJl
YWsoKQorICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoImJyZWFrIik7CisgICAg
ICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgcmV0dXJuIG5ldyBCcmVhayhvcmlnaW4pOworICAg
IH0KKyAgICAKKyAgICBmdW5jdGlvbiBwYXJzZUNvbnRpbnVlKCkKKyAgICB7CisgICAgICAgIGxl
dCBvcmlnaW4gPSBjb25zdW1lKCJjb250aW51ZSIpOworICAgICAgICBjb25zdW1lKCI7Iik7Cisg
ICAgICAgIHJldHVybiBuZXcgQ29udGludWUob3JpZ2luKTsKKyAgICB9CiAKICAgICBmdW5jdGlv
biBwYXJzZUlmU3RhdGVtZW50KCkKICAgICB7CkBAIC01NDgsNiArNTYyLDI3IEBAIGZ1bmN0aW9u
IHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4
dCkKICAgICAgICAgICAgIGVsc2VCb2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKICAgICAgICAgcmV0
dXJuIG5ldyBJZlN0YXRlbWVudChvcmlnaW4sIG5ldyBDYWxsRXhwcmVzc2lvbihjb25kaXRpb25h
bC5vcmlnaW4sICJib29sIiwgW10sIFtjb25kaXRpb25hbF0pLCBib2R5LCBlbHNlQm9keSk7CiAg
ICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VXaGlsZSgpCisgICAgeworICAgICAgICBsZXQgb3Jp
Z2luID0gY29uc3VtZSgid2hpbGUiKTsKKyAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBs
ZXQgY29uZGl0aW9uYWwgPSBwYXJzZUV4cHJlc3Npb24oKTsKKyAgICAgICAgY29uc3VtZSgiKSIp
OworICAgICAgICBsZXQgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7CisgICAgICAgIHJldHVybiBu
ZXcgV2hpbGVMb29wKG9yaWdpbiwgbmV3IENhbGxFeHByZXNzaW9uKGNvbmRpdGlvbmFsLm9yaWdp
biwgImJvb2wiLCBbXSwgW2NvbmRpdGlvbmFsXSksIGJvZHkpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHBhcnNlRG8oKQorICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoImRvIik7
CisgICAgICAgIGxldCBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKKyAgICAgICAgY29uc3VtZSgi
d2hpbGUiKTsKKyAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBsZXQgY29uZGl0aW9uYWwg
PSBwYXJzZUV4cHJlc3Npb24oKTsKKyAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICByZXR1
cm4gbmV3IERvV2hpbGVMb29wKG9yaWdpbiwgYm9keSwgbmV3IENhbGxFeHByZXNzaW9uKGNvbmRp
dGlvbmFsLm9yaWdpbiwgImJvb2wiLCBbXSwgW2NvbmRpdGlvbmFsXSkpOworICAgIH0KICAgICAK
ICAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbHMoKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzCmluZGV4IGEwNTBiMTcwMThjZTJiYzJhNzQyYjEzZmMx
M2FiN2M1MDgwY2NhNTcuLmE4NTkxMTgyZmVlZTg4OTVlY2JhYzAxZWE1MDg2ZTM3OTM1MjRlODkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMKKysr
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcwpAQCAtMzUsNiArMzUs
NyBAQCBmdW5jdGlvbiBwcmVwYXJlKG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAg
ICBjaGVja0xpdGVyYWxUeXBlcyhwcm9ncmFtKTsKICAgICBjaGVja1JldHVybnMocHJvZ3JhbSk7
CiAgICAgY2hlY2tVbnJlYWNoYWJsZUNvZGUocHJvZ3JhbSk7CisgICAgY2hlY2tMb29wcyhwcm9n
cmFtKTsKICAgICBjaGVja1JlY3Vyc2lvbihwcm9ncmFtKTsKICAgICBpbmxpbmUocHJvZ3JhbSk7
CiAgICAgcmV0dXJuIHByb2dyYW07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9SZXR1cm5DaGVja2VyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UmV0dXJuQ2hlY2tlci5qcwppbmRleCA0NzJjMGQwYzBmYTgzNWQ5NzViNGQyYTk0N2M5YzNkZDUw
MDIwNjg0Li4yZjA0OGI3MGI3MTBmOTlmY2E3NmE3MTI4NGY2NTgwZWIxZDZiZTI1IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXR1cm5DaGVja2VyLmpzCisrKyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JldHVybkNoZWNrZXIuanMKQEAgLTI1LDMx
ICsyNSw5NiBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBSZXR1cm5DaGVja2VyIGV4dGVuZHMg
VmlzaXRvciB7CisgICAgY29uc3RydWN0b3IocHJvZ3JhbSkKKyAgICB7CisgICAgICAgIHN1cGVy
KCk7CisgICAgICAgIHRoaXMucmV0dXJuU3R5bGUgPSB7CisgICAgICAgICAgICBEZWZpbml0ZWx5
UmV0dXJuczogIkRlZmluaXRlbHkgUmV0dXJucyIsCisgICAgICAgICAgICBEZWZpbml0ZWx5RG9l
c250UmV0dXJuOiAiRGVmaW5pdGVseSBEb2Vzbid0IFJldHVybiIsCisgICAgICAgICAgICBIYXNu
dFJldHVybmVkWWV0OiAiSGFzbid0IFJldHVybmVkIFlldCIKKyAgICAgICAgfTsKKyAgICAgICAg
dGhpcy5fcHJvZ3JhbSA9IHByb2dyYW07CisgICAgfQorCiAgICAgdmlzaXRGdW5jRGVmKG5vZGUp
CiAgICAgewogICAgICAgICBpZiAobm9kZS5yZXR1cm5UeXBlLmVxdWFscyhub2RlLnByb2dyYW0u
aW50cmluc2ljcy52b2lkKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAg
IGlmICghbm9kZS5ib2R5LnZpc2l0KHRoaXMpKQorICAgICAgICBsZXQgYm9keVZhbHVlID0gbm9k
ZS5ib2R5LnZpc2l0KHRoaXMpOworICAgICAgICBpZiAoYm9keVZhbHVlID09IHRoaXMucmV0dXJu
U3R5bGUuRGVmaW5pdGVseURvZXNudFJldHVybiB8fCBib2R5VmFsdWUgPT0gdGhpcy5yZXR1cm5T
dHlsZS5IYXNudFJldHVybmVkWWV0KQogICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Io
bm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiRnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIik7CiAg
ICAgfQogICAgIAogICAgIHZpc2l0QmxvY2sobm9kZSkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1F
OiBUaGlzIGlzbid0IHJpZ2h0IGZvciBicmVhay9jb250aW51ZS4KLSAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjI2MwotICAgICAgICByZXR1cm4g
bm9kZS5zdGF0ZW1lbnRzLnJlZHVjZSgocmVzdWx0LCBzdGF0ZW1lbnQpID0+IHJlc3VsdCB8fCBz
dGF0ZW1lbnQudmlzaXQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgZm9yIChsZXQgc3RhdGVtZW50
IG9mIG5vZGUuc3RhdGVtZW50cykgeworICAgICAgICAgICAgc3dpdGNoIChzdGF0ZW1lbnQudmlz
aXQodGhpcykpIHsKKyAgICAgICAgICAgIGNhc2UgdGhpcy5yZXR1cm5TdHlsZS5EZWZpbml0ZWx5
UmV0dXJuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5TdHlsZS5EZWZpbml0
ZWx5UmV0dXJuczsKKyAgICAgICAgICAgIGNhc2UgdGhpcy5yZXR1cm5TdHlsZS5EZWZpbml0ZWx5
RG9lc250UmV0dXJuOgorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVyblN0eWxlLkRl
ZmluaXRlbHlEb2VzbnRSZXR1cm47CisgICAgICAgICAgICBjYXNlIHRoaXMucmV0dXJuU3R5bGUu
SGFzbnRSZXR1cm5lZFlldDoKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5TdHlsZS5IYXNudFJldHVy
bmVkWWV0OwogICAgIH0KIAogICAgIHZpc2l0SWZTdGF0ZW1lbnQobm9kZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBub2RlLmVsc2VCb2R5ICYmIG5vZGUuYm9keS52aXNpdCh0aGlzKSAmJiBub2Rl
LmVsc2VCb2R5LnZpc2l0KHRoaXMpOworICAgICAgICBpZiAobm9kZS5lbHNlQm9keSkgeworICAg
ICAgICAgICAgbGV0IGJvZHlWYWx1ZSA9IG5vZGUuYm9keS52aXNpdCh0aGlzKTsKKyAgICAgICAg
ICAgIGxldCBlbHNlVmFsdWUgPSBub2RlLmVsc2VCb2R5LnZpc2l0KHRoaXMpOworICAgICAgICAg
ICAgaWYgKGJvZHlWYWx1ZSA9PSB0aGlzLnJldHVyblN0eWxlLkRlZmluaXRlbHlSZXR1cm5zICYm
IGVsc2VWYWx1ZSA9PSB0aGlzLnJldHVyblN0eWxlLkRlZmluaXRlbHlSZXR1cm5zKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLnJldHVyblN0eWxlLkRlZmluaXRlbHlSZXR1cm5zOworICAg
ICAgICAgICAgaWYgKGJvZHlWYWx1ZSA9PSB0aGlzLnJldHVyblN0eWxlLkRlZmluaXRlbHlEb2Vz
bnRSZXR1cm4gJiYgZWxzZVZhbHVlID09IHRoaXMucmV0dXJuU3R5bGUuRGVmaW5pdGVseURvZXNu
dFJldHVybikKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5TdHlsZS5EZWZpbml0
ZWx5RG9lc250UmV0dXJuOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLnJldHVyblN0
eWxlLkhhc250UmV0dXJuZWRZZXQ7CiAgICAgfQogCi0gICAgLy8gSWYgYSBsb29wIHJldHVybnMs
IHRoZW4gaXQgY291bnRzIG9ubHkgaWYgdGhlIGxvb3AgaXMgZ3VhcmFudGVlZCB0byBydW4gYXQg
bGVhc3Qgb25jZS4KKyAgICB2aXNpdFdoaWxlTG9vcChub2RlKQorICAgIHsKKyAgICAgICAgaWYg
KG5vZGUuY29uZGl0aW9uYWwgaW5zdGFuY2VvZiBDYWxsRXhwcmVzc2lvbiAmJiBub2RlLmNvbmRp
dGlvbmFsLmlzQ2FzdCAmJiBub2RlLmNvbmRpdGlvbmFsLnJldHVyblR5cGUgaW5zdGFuY2VvZiBU
eXBlUmVmICYmIG5vZGUuY29uZGl0aW9uYWwucmV0dXJuVHlwZS5lcXVhbHModGhpcy5fcHJvZ3Jh
bS5pbnRyaW5zaWNzLmJvb2wpICYmIG5vZGUuY29uZGl0aW9uYWwuYXJndW1lbnRMaXN0Lmxlbmd0
aCA9PSAxICYmIG5vZGUuY29uZGl0aW9uYWwuYXJndW1lbnRMaXN0WzBdLmxpc3QubGVuZ3RoID09
IDEgJiYgbm9kZS5jb25kaXRpb25hbC5hcmd1bWVudExpc3RbMF0ubGlzdFswXSBpbnN0YW5jZW9m
IEJvb2xMaXRlcmFsICYmIG5vZGUuY29uZGl0aW9uYWwuYXJndW1lbnRMaXN0WzBdLmxpc3RbMF0u
dmFsdWUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS5ib2R5LnZpc2l0KHRoaXMpKSB7Cisg
ICAgICAgICAgICBjYXNlIHRoaXMucmV0dXJuU3R5bGUuRGVmaW5pdGVseVJldHVybnM6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuU3R5bGUuRGVmaW5pdGVseVJldHVybnM7Cisg
ICAgICAgICAgICBjYXNlIHRoaXMucmV0dXJuU3R5bGUuRGVmaW5pdGVseURvZXNudFJldHVybjoK
KyAgICAgICAgICAgIGNhc2UgdGhpcy5yZXR1cm5TdHlsZS5IYXNudFJldHVybmVkWWV0OgorICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVyblN0eWxlLkhhc250UmV0dXJuZWRZZXQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbm9kZS5jb25kaXRpb25h
bC52aXNpdCh0aGlzKTsKKyAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuU3R5bGUuSGFzbnRSZXR1
cm5lZFlldDsKKyAgICB9CisKKyAgICB2aXNpdERvV2hpbGVMb29wKG5vZGUpCisgICAgeworICAg
ICAgICBsZXQgcmVzdWx0OworICAgICAgICBzd2l0Y2ggKG5vZGUuYm9keS52aXNpdCh0aGlzKSkg
eworICAgICAgICBjYXNlIHRoaXMucmV0dXJuU3R5bGUuRGVmaW5pdGVseVJldHVybnM6CisgICAg
ICAgICAgICByZXN1bHQgPSB0aGlzLnJldHVyblN0eWxlLkRlZmluaXRlbHlSZXR1cm5zOworICAg
ICAgICBjYXNlIHRoaXMucmV0dXJuU3R5bGUuRGVmaW5pdGVseURvZXNudFJldHVybjoKKyAgICAg
ICAgY2FzZSB0aGlzLnJldHVyblN0eWxlLkhhc250UmV0dXJuZWRZZXQ6CisgICAgICAgICAgICBy
ZXN1bHQgPSB0aGlzLnJldHVyblN0eWxlLkhhc250UmV0dXJuZWRZZXQ7CisgICAgICAgIH0KKyAg
ICAgICAgbm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CiAgICAgCiAgICAgdmlzaXRSZXR1cm4obm9kZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5TdHlsZS5EZWZpbml0ZWx5UmV0
dXJuczsKKyAgICB9CisKKyAgICB2aXNpdEJyZWFrKG5vZGUpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5yZXR1cm5TdHlsZS5EZWZpbml0ZWx5RG9lc250UmV0dXJuOworICAgIH0KKworICAg
IHZpc2l0Q29udGludWUobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnJldHVyblN0
eWxlLkRlZmluaXRlbHlEb2VzbnRSZXR1cm47CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwppbmRleCAyMWQ1YTFhZWY2Y2M5NGU4MTk5YTE3ZDg0YWUz
MTY3MmVkMmRiMjgyLi5kZjI1Y2Q2ZDllZjkyODQzNmE2MGNjY2FkYTEzNTRkYWYyYmFkMTRiIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwpAQCAtMjAwLDYgKzIw
MCwxNiBAQCBjbGFzcyBSZXdyaXRlciBleHRlbmRzIFZpc2l0b3JCYXNlIHsKICAgICAgICAgcmV0
dXJuIG5ldyBSZXR1cm4obm9kZS5vcmlnaW4sIG5vZGUudmFsdWUgPyBub2RlLnZhbHVlLnZpc2l0
KHRoaXMpIDogbnVsbCk7CiAgICAgfQogICAgIAorICAgIHZpc2l0Q29udGludWUobm9kZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBuZXcgQ29udGludWUobm9kZS5vcmlnaW4pOworICAgIH0KKyAg
ICAKKyAgICB2aXNpdEJyZWFrKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IEJyZWFr
KG5vZGUub3JpZ2luKTsKKyAgICB9CisgICAgCiAgICAgdmlzaXRJbnRMaXRlcmFsKG5vZGUpCiAg
ICAgewogICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEludExpdGVyYWwobm9kZS5vcmlnaW4sIG5v
ZGUudmFsdWUpOwpAQCAtMjgzLDUgKzI5MywxNSBAQCBjbGFzcyBSZXdyaXRlciBleHRlbmRzIFZp
c2l0b3JCYXNlIHsKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgSWZTdGF0ZW1lbnQobm9kZS5v
cmlnaW4sIG5vZGUuY29uZGl0aW9uYWwudmlzaXQodGhpcyksIG5vZGUuYm9keS52aXNpdCh0aGlz
KSwgbm9kZS5lbHNlQm9keSA/IG5vZGUuZWxzZUJvZHkudmlzaXQodGhpcykgOiB1bmRlZmluZWQp
OwogICAgIH0KKworICAgIHZpc2l0V2hpbGVMb29wKG5vZGUpCisgICAgeworICAgICAgICByZXR1
cm4gbmV3IFdoaWxlTG9vcChub2RlLm9yaWdpbiwgbm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlz
KSwgbm9kZS5ib2R5LnZpc2l0KHRoaXMpKTsKKyAgICB9CisKKyAgICB2aXNpdERvV2hpbGVMb29w
KG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IERvV2hpbGVMb29wKG5vZGUub3JpZ2lu
LCBub2RlLmJvZHkudmlzaXQodGhpcyksIG5vZGUuY29uZGl0aW9uYWwudmlzaXQodGhpcykpOwor
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3Rh
bmRhcmRMaWJyYXJ5LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRM
aWJyYXJ5LmpzCmluZGV4IDYwMzEzNGQ4MGM4NDM0OGViOTFiODg4ZDY1ZTY4MjUzOTliZWY4YzAu
LjA0N2M1YTk2ZGY4NGEyMzkxYzhhNzBiNGNjZTU4MDk4NjY1ODZiODMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMKQEAgLTUyLDYgKzUy
LDE0IEBAIG5hdGl2ZSB1aW50IG9wZXJhdG9yLyh1aW50LCB1aW50KTsKIG5hdGl2ZSBib29sIG9w
ZXJhdG9yPT0oaW50LCBpbnQpOwogbmF0aXZlIGJvb2wgb3BlcmF0b3I9PSh1aW50LCB1aW50KTsK
IG5hdGl2ZSBib29sIG9wZXJhdG9yPT0oYm9vbCwgYm9vbCk7CituYXRpdmUgYm9vbCBvcGVyYXRv
cjwoaW50LCBpbnQpOworbmF0aXZlIGJvb2wgb3BlcmF0b3I8KHVpbnQsIHVpbnQpOworbmF0aXZl
IGJvb2wgb3BlcmF0b3I8PShpbnQsIGludCk7CituYXRpdmUgYm9vbCBvcGVyYXRvcjw9KHVpbnQs
IHVpbnQpOworbmF0aXZlIGJvb2wgb3BlcmF0b3I+KGludCwgaW50KTsKK25hdGl2ZSBib29sIG9w
ZXJhdG9yPih1aW50LCB1aW50KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPj0oaW50LCBpbnQpOwor
bmF0aXZlIGJvb2wgb3BlcmF0b3I+PSh1aW50LCB1aW50KTsKIAogcHJvdG9jb2wgRXF1YXRhYmxl
IHsKICAgICBib29sIG9wZXJhdG9yPT0oRXF1YXRhYmxlLCBFcXVhdGFibGUpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCmluZGV4IDJiNDFlMjgxMjdhN2ZjNmMzYWYzOTVk
NmMzOTg3YmEzMmFmYzUwNzAuLmU3N2FiMTk4ZjA1OTMzM2Y3MzgyOGU2NzViNTNjN2Y3Y2YwNzVh
ODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAor
KysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKQEAgLTE1LDE3ICsx
NSwyMSBAQAogPHNjcmlwdCBzcmM9IkFzc2lnbm1lbnQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9IkJsb2NrLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCb29sTGl0ZXJhbC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iQnJlYWsuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNh
bGxBc3NpZ25tZW50LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDYWxsRXhwcmVzc2lvbi5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2FsbEZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJDaGVjay5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tMaXRlcmFs
VHlwZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNoZWNrTG9vcHMuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9IkNoZWNrUmVjdXJzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJDaGVja1JldHVybnMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrVW5yZWFjaGFi
bGVDb2RlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja2VyLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJDb21tYUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IkNvbnN0ZXhwclR5cGVQYXJhbWV0ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNvbnRp
bnVlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJEb1doaWxlTG9vcC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iRG90RXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
RGVyZWZlcmVuY2VFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJFQXJyYXlS
ZWYuanMiPjwvc2NyaXB0PgpAQCAtNTIsNiArNTYsNyBAQAogPHNjcmlwdCBzcmM9IkxleGVyVG9r
ZW4uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxpdGVyYWxUeXBlQ2hlY2tlci5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iTG9naWNhbE5vdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iTG9vcENoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ik1ha2VQdHJFeHByZXNz
aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJOYW1lQ29udGV4dC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iTmFtZVJlc29sdmVyLmpzIj48L3NjcmlwdD4KQEAgLTk3LDYgKzEwMiw3
IEBACiA8c2NyaXB0IHNyYz0iV1N5bnRheEVycm9yLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJXVHJhcEVycm9yLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJXVHlwZUVycm9yLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJXaGlsZUxvb3AuanMiPjwvc2NyaXB0PgogCiA8c2NyaXB0
IHNyYz0iVGVzdC5qcyI+PC9zY3JpcHQ+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Rlc3QuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0
LmpzCmluZGV4IGE2NDJjNDQ5NjQ3NTE2ZDM1OGYxZTU4YTRlYjJhY2JkYzI0ODYyNzcuLmY5Y2Ix
YzRkODgxYTkwMDkwOGJiM2VlNjQ0YWI2NjE4NTM3ZjNiOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVGVzdC5qcwpAQCAtMTMzNCw2ICsxMzM0LDI5IEBAIGZ1bmN0aW9uIFRFU1RfcmV0
dXJuSWYoKQogICAgICAgICAgICAgfQogICAgICAgICBgKSwKICAgICAgICAgKGUpID0+IGUgaW5z
dGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgaW50
IGZvbyhpbnQgeCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IHkgPSA2OworICAgICAgICAg
ICAgaWYgKHggPT0gNykKKyAgICAgICAgICAgICAgICBpbnQgeSA9IDg7CisgICAgICAgICAgICBy
ZXR1cm4geTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDcpXSksIDYpOwor
fQorCitmdW5jdGlvbiBURVNUX3NpbXBsZVdoaWxlKCkKK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGRv
UHJlcChgCisgICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdo
aWxlICh4IDwgMTMpCisgICAgICAgICAgICAgICAgeCA9IHggKiAyOworICAgICAgICAgICAgcmV0
dXJuIHg7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCAxKV0pLCAxNik7CiB9
CiAKIGZ1bmN0aW9uIFRFU1RfcHJvdG9jb2xNb25vUG9seVNpZ0RvdWJsZVBvbHlEZWZFeHBsaWNp
dCgpCkBAIC0xNDAwLDYgKzE0MjMsMTgwIEBAIGZ1bmN0aW9uIFRFU1RfYW1iaWd1b3VzT3Zlcmxv
YWRUaWVCcmVhaygpCiAgICAgYCk7CiB9CiAKK2Z1bmN0aW9uIFRFU1RfYnJlYWsoKQoreworICAg
IGxldCBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAg
eworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICB4ID0geCAqIDI7
CisgICAgICAgICAgICAgICAgaWYgKHggPj0gNykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgfQorICAgIGAp
OworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10s
IFttYWtlSW50KHByb2dyYW0sIDEpXSksIDgpOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDEwKV0pLCAyMCk7
CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgICAgICAgICAgICAgICAgeCA9IHggKiAyOworICAgICAgICAgICAgICAgICAg
ICBpZiAoeCA+PSA3KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHggPSB4IC0gMTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICAgICAgCisg
ICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCAxKV0pLCA3KTsKKyAgICBjaGVja0lu
dChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9n
cmFtLCAxMCldKSwgMTkpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAK
KyAgICAgICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgeCA9IHggKyAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4g
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNl
b2YgV1R5cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAor
ICAgICAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgcHJv
Z3JhbSA9IGRvUHJlcChgCisgICAgICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh4ID09IDcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHggPSB4ICsgMTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgICAgICB9CisgICAgYCk7Cisg
ICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21h
a2VJbnQocHJvZ3JhbSwgMSldKSwgNyk7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAg
ICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgIH0KKyAgICBgKTsKKyAgICBj
aGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUlu
dChwcm9ncmFtLCAxKV0pLCAxKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgICAg
IGludCBmb28oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiA3OworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFtdLCBbXSksIDcpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4g
ZG9QcmVwKGAKKyAgICAgICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICBgKSwKKyAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9y
KTsKK30KKworZnVuY3Rpb24gVEVTVF9jb250aW51ZSgpCit7CisgICAgbGV0IHByb2dyYW0gPSBk
b1ByZXAoYAorICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB7CisgICAgICAgICAgICB3
aGlsZSAoeCA8IDEwKSB7CisgICAgICAgICAgICAgICAgaWYgKHggPT0gOCkgeworICAgICAgICAg
ICAgICAgICAgICB4ID0geCArIDE7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB4ID0geCAqIDI7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrSW50
KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dy
YW0sIDEpXSksIDE4KTsKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisg
ICAgICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgfQorICAgICAgICBgKSwKKyAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBX
VHlwZUVycm9yKTsKK30KKworZnVuY3Rpb24gVEVTVF9kb1doaWxlKCkKK3sKKyAgICBsZXQgcHJv
Z3JhbSA9IGRvUHJlcChgCisgICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGludCB5ID0gNzsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICB5ID0g
ODsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gd2hpbGUgKHggPCAxMCk7
CisgICAgICAgICAgICByZXR1cm4geTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrSW50
KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dy
YW0sIDEpXSksIDgpOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDExKV0pLCA4KTsKKyAgICBwcm9ncmFtID0g
ZG9QcmVwKGAKKyAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgeworICAgICAgICAgICAg
aW50IHkgPSA3OworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIHkgPSA4OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfSB3aGlsZSAoeSA9PSA3KTsKKyAgICAg
ICAgICAgIHJldHVybiB5OworICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3Jh
bSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgMSld
KSwgOCk7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIGludCBmb28oaW50IHgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGludCBzdW0gPSAwOworICAgICAgICAgICAgZG8geworICAg
ICAgICAgICAgICAgIGlmICh4ID09IDExKSB7CisgICAgICAgICAgICAgICAgICAgIHggPSAxNTsK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHN1bSA9IHN1bSArIHg7CisgICAgICAgICAgICAgICAgeCA9IHggKyAxOworICAg
ICAgICAgICAgfSB3aGlsZSAoeCA8IDEzKTsKKyAgICAgICAgICAgIHJldHVybiBzdW07CisgICAg
ICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCA5KV0pLCAxOSk7Cit9CisKIGxldCBmaWx0
ZXIgPSAvLiovOyAvLyBydW4gZXZlcnl0aGluZyBieSBkZWZhdWx0CiBpZiAodGhpc1siYXJndW1l
bnRzIl0pIHsKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykg
ewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5yZWFjaGFibGVD
b2RlQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1VucmVhY2hhYmxl
Q29kZUNoZWNrZXIuanMKaW5kZXggNWVmMTczMWRhZTA3Y2I4MDcxMjU3ZTU3ZjFlZDA4MDk1ZjUx
NDk4My4uMTFjOGUxOWVlMTZmY2MwY2RhZDBlZDlhMmNmNDBkNDk0MWUzMGI4MCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5yZWFjaGFibGVDb2RlQ2hlY2tlci5q
cworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9VbnJlYWNoYWJsZUNvZGVDaGVj
a2VyLmpzCkBAIC0yNSwyMiArMjUsMjUgQEAKICJ1c2Ugc3RyaWN0IjsKIAogY2xhc3MgVW5yZWFj
aGFibGVDb2RlQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewotICAgIGNvbnN0cnVjdG9yKCkKKyAg
ICBjb25zdHJ1Y3Rvcihwcm9ncmFtKQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKLSAgICAgICAg
dGhpcy5fcmV0dXJuQ2hlY2tlciA9IG5ldyBSZXR1cm5DaGVja2VyKCk7CisgICAgICAgIHRoaXMu
X3JldHVybkNoZWNrZXIgPSBuZXcgUmV0dXJuQ2hlY2tlcihwcm9ncmFtKTsKICAgICB9CiAgICAg
CiAgICAgdmlzaXRCbG9jayhub2RlKQogICAgIHsKKyAgICAgICAgc3VwZXIudmlzaXRCbG9jayhu
b2RlKTsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnN0YXRlbWVudHMubGVuZ3Ro
IC0gMTsgKytpKSB7Ci0gICAgICAgICAgICBsZXQgc3RhdGVtZW50ID0gbm9kZS5zdGF0ZW1lbnRz
W2ldOwotICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gYWxzbyBjaGVjayBpZiB0aGlzIHN0
YXRlbWVudCBjYW4gYnJlYWsgb3IgY29udGludWUuCi0gICAgICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjYzCi0gICAgICAgICAgICBpZiAoc3Rh
dGVtZW50LnZpc2l0KHRoaXMuX3JldHVybkNoZWNrZXIpKQorICAgICAgICAgICAgc3dpdGNoKG5v
ZGUuc3RhdGVtZW50c1tpXS52aXNpdCh0aGlzLl9yZXR1cm5DaGVja2VyKSkgeworICAgICAgICAg
ICAgY2FzZSB0aGlzLl9yZXR1cm5DaGVja2VyLnJldHVyblN0eWxlLkRlZmluaXRlbHlSZXR1cm5z
OgorICAgICAgICAgICAgY2FzZSB0aGlzLl9yZXR1cm5DaGVja2VyLnJldHVyblN0eWxlLkRlZmlu
aXRlbHlEb2VzbnRSZXR1cm46CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Io
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUuc3RhdGVtZW50c1tpICsgMV0ub3JpZ2luLm9yaWdp
blN0cmluZywKICAgICAgICAgICAgICAgICAgICAgIlVucmVhY2hhYmxlIGNvZGUiKTsKKyAgICAg
ICAgICAgIGNhc2UgdGhpcy5fcmV0dXJuQ2hlY2tlci5yZXR1cm5TdHlsZS5IYXNudFJldHVybmVk
WWV0OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlz
aXRvci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMKaW5kZXgg
OTVkMTVjZTQ2NGExNTFiOTRjNjk2MWU2ODI3YzI5NWE3YTc1YmVmNS4uMWI1ZDQxNjJjYjJlMmZm
MzY3NjE0ZGU1OTYzZGYwNzA4ZGQ1NjgzMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvVmlzaXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9WaXNpdG9yLmpzCkBAIC0yMTUsMTIgKzIxNSwzMiBAQCBjbGFzcyBWaXNpdG9yIGV4dGVuZHMg
VmlzaXRvckJhc2UgewogICAgICAgICBpZiAobm9kZS5lbHNlQm9keSkKICAgICAgICAgICAgIG5v
ZGUuZWxzZUJvZHkudmlzaXQodGhpcyk7CiAgICAgfQorICAgIAorICAgIHZpc2l0V2hpbGVMb29w
KG5vZGUpCisgICAgeworICAgICAgICBub2RlLmNvbmRpdGlvbmFsLnZpc2l0KHRoaXMpOworICAg
ICAgICBub2RlLmJvZHkudmlzaXQodGhpcyk7CisgICAgfQorICAgIAorICAgIHZpc2l0RG9XaGls
ZUxvb3Aobm9kZSkKKyAgICB7CisgICAgICAgIG5vZGUuYm9keS52aXNpdCh0aGlzKTsKKyAgICAg
ICAgbm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKTsKKyAgICB9CiAKICAgICB2aXNpdFJldHVy
bihub2RlKQogICAgIHsKICAgICAgICAgaWYgKG5vZGUudmFsdWUpCiAgICAgICAgICAgICBub2Rl
LnZhbHVlLnZpc2l0KHRoaXMpOwogICAgIH0KKworICAgIHZpc2l0Q29udGludWUobm9kZSkKKyAg
ICB7CisgICAgfQorCisgICAgdmlzaXRCcmVhayhub2RlKQorICAgIHsKKyAgICB9CiAgICAgCiAg
ICAgdmlzaXRJbnRMaXRlcmFsKG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvV2hpbGVMb29wLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvV2hpbGVMb29wLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMTljMzRlNWE3Nzc5NGY1NmY5ZDU3NmQ4
ODk3ZDJlZTQzOWU3OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9XaGlsZUxvb3AuanMKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworInVzZSBzdHJpY3QiOworCitjbGFzcyBXaGlsZUxv
b3AgZXh0ZW5kcyBOb2RlIHsKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIGNvbmRpdGlvbmFsLCBi
b2R5KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgdGhpcy5fb3JpZ2luID0gb3Jp
Z2luOworICAgICAgICB0aGlzLl9jb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsOworICAgICAgICB0
aGlzLl9ib2R5ID0gYm9keTsKKyAgICB9CisKKyAgICBnZXQgb3JpZ2luKCkgeyByZXR1cm4gdGhp
cy5fb3JpZ2luOyB9CisgICAgZ2V0IGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gdGhpcy5fY29uZGl0
aW9uYWw7IH0KKyAgICBnZXQgYm9keSgpIHsgcmV0dXJuIHRoaXMuX2JvZHk7IH0KKworICAgIHRv
U3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiAid2hpbGUgKCIgKyB0aGlzLmNvbmRpdGlv
bmFsICsgIikgIiArIHRoaXMuYm9keTsKKyAgICB9Cit9OworCg==
</data>
<flag name="review"
          id="340506"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>