<?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>206563</bug_id>
          
          <creation_ts>2020-01-21 17:21:50 -0800</creation_ts>
          <short_desc>Shrink BytecodeStructs.h</short_desc>
          <delta_ts>2020-05-21 20:04:53 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=206566</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1609396</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-21 17:21:50 -0800</bug_when>
    <thetext>BytecodeStructs.h is autogenerated by a ruby script, and is more than 60k lines of complex C++ templates.
It is included in a bunch of places, including CommonSlowPaths.h which is included in JIT.h which is included approximately everywhere.
The commit that introduced it slowed the compilation of JSC by 20%.

I have several ideas for shrinking it (with the goal to regain some of the compilation time loss), in particular through having opcodes of a same op_group share some of their code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609397</commentid>
    <comment_count>1</comment_count>
      <attachid>388381</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-21 17:24:41 -0800</bug_when>
    <thetext>Created attachment 388381
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609423</commentid>
    <comment_count>2</comment_count>
      <attachid>388387</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-21 18:32:33 -0800</bug_when>
    <thetext>Created attachment 388387
Patch

The compile time saving is disappointing, but there is a nice binary size saving.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609425</commentid>
    <comment_count>3</comment_count>
      <attachid>388387</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-01-21 18:53:33 -0800</bug_when>
    <thetext>Comment on attachment 388387
Patch

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

Looks good to me, just a couple very minor comments.

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        - The checks that op_wide16, op_wide32, wasm_wide16, wasm_wide32 fit in OpcodeID/WasmOpcodeID are now in a single place as a static assert in Fits.h, instead of being repeated in the checkImpl of every single instruction

Nice!

&gt; Source/JavaScriptCore/generator/Opcode.rb:159
&gt; +    def baseClass

nit: in ruby we usually use snake_case

&gt; Source/JavaScriptCore/generator/OpcodeGroup.rb:59
&gt; +    def constructors

Would it make sense to share this code with Opcode.rb?

&gt; Source/JavaScriptCore/generator/Section.rb:46
&gt; +  def create_opcode(name, config, opcode_group)

You can also use a default argument, e.g. `opcode_group = nil`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609426</commentid>
    <comment_count>4</comment_count>
      <attachid>388389</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-21 19:08:32 -0800</bug_when>
    <thetext>Created attachment 388389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609427</commentid>
    <comment_count>5</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-21 19:09:08 -0800</bug_when>
    <thetext>Thanks for the quick review!

&gt; &gt; Source/JavaScriptCore/generator/Opcode.rb:159
&gt; &gt; +    def baseClass
&gt; 
&gt; nit: in ruby we usually use snake_case

Fixed.
 
&gt; &gt; Source/JavaScriptCore/generator/OpcodeGroup.rb:59
&gt; &gt; +    def constructors
&gt; 
&gt; Would it make sense to share this code with Opcode.rb?

Yes, fixed.

&gt; &gt; Source/JavaScriptCore/generator/Section.rb:46
&gt; &gt; +  def create_opcode(name, config, opcode_group)
&gt; 
&gt; You can also use a default argument, e.g. `opcode_group = nil`

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610421</commentid>
    <comment_count>6</comment_count>
      <attachid>388623</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-23 17:13:14 -0800</bug_when>
    <thetext>Created attachment 388623
Patch

I found the bug: I was just putting dst as the last argument instead of first, for autogenerated Wasm opcodes. And because all of the arguments are of type VirtualRegister, there was no compilation failure.
I&apos;ve fixed it, and also grouped a few more manually written Wasm opcodes, saving another 30kB from the binary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611867</commentid>
    <comment_count>7</comment_count>
      <attachid>388623</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-28 04:27:24 -0800</bug_when>
    <thetext>Comment on attachment 388623
Patch

Marking as obsolete in the hope of unblocking the jsc-armv7 test queue which appears stuck on this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615412</commentid>
    <comment_count>8</comment_count>
      <attachid>389903</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-02-05 17:08:41 -0800</bug_when>
    <thetext>Created attachment 389903
Patch

Re-trying to get this patch through EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655211</commentid>
    <comment_count>9</comment_count>
      <attachid>400015</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-05-21 20:04:53 -0700</bug_when>
    <thetext>Created attachment 400015
Patch

rebased, let&apos;s see if the armv7 EWS bot still dislikes this patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388381</attachid>
            <date>2020-01-21 17:24:41 -0800</date>
            <delta_ts>2020-01-21 18:32:33 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>patchBytecodeStructs</filename>
            <type>text/plain</type>
            <size>27672</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4
IDM0ODM0N2M2YjRjLi41ZDg0MWI4YjMyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC02NDEsMzcgKzY0MSwyMyBAQCBvcCA6am1wLAog
ICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKICAgICB9CiAKLW9wIDpqdHJ1ZSwKLSAg
ICBhcmdzOiB7Ci0gICAgICAgIGNvbmRpdGlvbjogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICB0
YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKLSAgICB9Ci0KLW9wIDpqZmFsc2UsCitvcF9ncm91cCA6
Qm9vbGVhbkp1bXAsCisgICAgWworICAgICAgICA6anRydWUsCisgICAgICAgIDpqZmFsc2UKKyAg
ICBdLAogICAgIGFyZ3M6IHsKICAgICAgICAgY29uZGl0aW9uOiBWaXJ0dWFsUmVnaXN0ZXIsCiAg
ICAgICAgIHRhcmdldExhYmVsOiBCb3VuZExhYmVsLAogICAgIH0KIAotb3AgOmplcV9udWxsLAot
ICAgIGFyZ3M6IHsKLSAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGFy
Z2V0TGFiZWw6IEJvdW5kTGFiZWwsCi0gICAgfQotCi1vcCA6am5lcV9udWxsLAotICAgIGFyZ3M6
IHsKLSAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGFyZ2V0TGFiZWw6
IEJvdW5kTGFiZWwsCi0gICAgfQotCi1vcCA6anVuZGVmaW5lZF9vcl9udWxsLAotICAgIGFyZ3M6
IHsKLSAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGFyZ2V0TGFiZWw6
IEJvdW5kTGFiZWwsCi0gICAgfQotCi1vcCA6am51bmRlZmluZWRfb3JfbnVsbCwKK29wX2dyb3Vw
IDpUZXN0aW5nSnVtcCwKKyAgICBbCisgICAgICAgIDpqZXFfbnVsbCwKKyAgICAgICAgOmpuZXFf
bnVsbCwKKyAgICAgICAgOmp1bmRlZmluZWRfb3JfbnVsbCwKKyAgICAgICAgOmpudW5kZWZpbmVk
X29yX251bGwKKyAgICBdLAogICAgIGFyZ3M6IHsKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdp
c3RlciwKICAgICAgICAgdGFyZ2V0TGFiZWw6IEJvdW5kTGFiZWwsCkBAIC03NDgsMzEgKzczNCwx
MyBAQCBvcCA6c2V0X2Z1bmN0aW9uX25hbWUsCiAgICAgfQogCiAjIG9wX2NhbGwgdmFyaWF0aW9u
cwotb3AgOmNhbGwsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwK
LSAgICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGFyZ2M6IHVuc2lnbmVk
LAotICAgICAgICBhcmd2OiB1bnNpZ25lZCwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0gICAg
ICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZSwKLSAgICB9Ci0KLW9wIDp0YWlsX2NhbGwsCi0gICAgYXJnczogewotICAgICAg
ICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIs
Ci0gICAgICAgIGFyZ2M6IHVuc2lnbmVkLAotICAgICAgICBhcmd2OiB1bnNpZ25lZCwKLSAgICB9
LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0lu
Zm8sCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICB9Ci0KLW9wIDpjYWxsX2V2
YWwsCitvcF9ncm91cCA6Tm9uVmFyYXJnc0NhbGxzLAorICAgIFsKKyAgICAgICAgOmNhbGwsCisg
ICAgICAgIDp0YWlsX2NhbGwsCisgICAgICAgIDpjYWxsX2V2YWwsCisgICAgICAgIDpjb25zdHJ1
Y3QKKyAgICBdLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAg
ICAgICAgIGNhbGxlZTogVmlydHVhbFJlZ2lzdGVyLApAQCAtNzg0LDcgKzc1MiwxMiBAQCBvcCA6
Y2FsbF9ldmFsLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCi1vcCA6
Y2FsbF92YXJhcmdzLAorb3BfZ3JvdXAgOlZhcmFyZ3NDYWxscywKKyAgICBbCisgICAgICAgIDpj
YWxsX3ZhcmFyZ3MsCisgICAgICAgIDp0YWlsX2NhbGxfdmFyYXJncywKKyAgICAgICAgOmNvbnN0
cnVjdF92YXJhcmdzCisgICAgXSwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJl
Z2lzdGVyLAogICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTgwNSwyNyArNzc4
LDYgQEAgb3AgOmNhbGxfdmFyYXJncywKICAgICAgICAgbWFrZUNhbGw6IG5pbCwKICAgICB9CiAK
LW9wIDp0YWlsX2NhbGxfdmFyYXJncywKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVh
bFJlZ2lzdGVyLAotICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGhp
c1ZhbHVlPzogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBhcmd1bWVudHM/OiBWaXJ0dWFsUmVn
aXN0ZXIsCi0gICAgICAgIGZpcnN0RnJlZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBmaXJz
dFZhckFyZzogaW50LAotICAgIH0sCi0gICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9m
aWxlOiBBcnJheVByb2ZpbGUsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICB9
LAotICAgIHRtcHM6IHsKLSAgICAgICAgYXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZAot
ICAgIH0sCi0gICAgY2hlY2twb2ludHM6IHsKLSAgICAgICAgZGV0ZXJtaW5pbmdBcmdDb3VudDog
bmlsLAotICAgICAgICBtYWtlQ2FsbDogbmlsLAotICAgIH0KLQogb3AgOnRhaWxfY2FsbF9mb3J3
YXJkX2FyZ3VtZW50cywKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVy
LApAQCAtODQwLDM5ICs3OTIsNiBAQCBvcCA6dGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzLAog
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCi1vcCA6Y29uc3RydWN0LAot
ICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGNhbGxl
ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBhcmdjOiB1bnNpZ25lZCwKLSAgICAgICAgYXJn
djogdW5zaWduZWQsCi0gICAgfSwKLSAgICBtZXRhZGF0YTogewotICAgICAgICBjYWxsTGlua0lu
Zm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0g
ICAgfQotCi1vcCA6Y29uc3RydWN0X3ZhcmFyZ3MsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6
IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAg
ICAgIHRoaXNWYWx1ZT86IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgYXJndW1lbnRzPzogVmly
dHVhbFJlZ2lzdGVyLAotICAgICAgICBmaXJzdEZyZWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAg
ICAgZmlyc3RWYXJBcmc6IGludCwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFy
cmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUs
Ci0gICAgfSwKLSAgICB0bXBzOiB7Ci0gICAgICAgIGFyZ0NvdW50SW5jbHVkaW5nVGhpczogdW5z
aWduZWQKLSAgICB9LAotICAgIGNoZWNrcG9pbnRzOiB7Ci0gICAgICAgIGRldGVybWluaW5nQXJn
Q291bnQ6IG5pbCwKLSAgICAgICAgbWFrZUNhbGw6IG5pbCwKLSAgICB9Ci0KIG9wIDpyZXQsCiAg
ICAgYXJnczogewogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9GaXRzLmgKaW5kZXggNTc3ODliYzJjNjYuLjg3OWUzN2Q3MWI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTUyLDcgKzUyLDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgT3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8VCwgc2l6ZSwgc3Rk
OjplbmFibGVfaWZfdDxzaXplb2YoVCkgPT0gc2l6ZSwgc3RkOjp0cnVlX3R5cGU+PiB7CiAgICAg
dXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlw
ZTsKIAotICAgIHN0YXRpYyBib29sIGNoZWNrKFQpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgY2hlY2soVCkgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgc3RhdGlj
IFRhcmdldFR5cGUgY29udmVydChUIHQpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUYXJnZXRUeXBl
Pih0KTsgfQogCkBAIC02NCw3ICs2NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIE9wY29kZVNp
emUgc2l6ZT4KIHN0cnVjdCBGaXRzPFQsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19p
bnRlZ3JhbDxUPjo6dmFsdWUgJiYgc2l6ZW9mKFQpICE9IHNpemUgJiYgIXN0ZDo6aXNfc2FtZTxi
b29sLCBUPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gewogICAgIHVzaW5nIFRhcmdldFR5cGUg
PSBzdGQ6OmNvbmRpdGlvbmFsX3Q8c3RkOjppc191bnNpZ25lZDxUPjo6dmFsdWUsIHR5cGVuYW1l
IFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlwZSwgdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXpl
Pjo6c2lnbmVkVHlwZT47CiAKLSAgICBzdGF0aWMgYm9vbCBjaGVjayhUIHQpCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGNoZWNrKFQgdCkKICAgICB7CiAgICAgICAgIHJldHVybiB0ID49IHN0
ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0VHlwZT46Om1pbigpICYmIHQgPD0gc3RkOjpudW1lcmlj
X2xpbWl0czxUYXJnZXRUeXBlPjo6bWF4KCk7CiAgICAgfQpAQCAtMjIyLDcgKzIyMiw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIEUsIE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPEUsIHNpemUs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+Ojp2
YWx1ZSwgc3RkOjp0cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBl
X3Q8RT4sIHNpemU+IHsKICAgICB1c2luZyBCYXNlID0gRml0czxzdGQ6OnVuZGVybHlpbmdfdHlw
ZV90PEU+LCBzaXplPjsKIAotICAgIHN0YXRpYyBib29sIGNoZWNrKEUgZSkgeyByZXR1cm4gQmFz
ZTo6Y2hlY2soc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPj4oZSkpOyB9Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGNoZWNrKEUgZSkgeyByZXR1cm4gQmFzZTo6Y2hlY2so
c3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPj4oZSkpOyB9CiAKICAgICBzdGF0
aWMgdHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBjb252ZXJ0KEUgZSkKICAgICB7CkBAIC0zMjcs
NCArMzI3LDEyIEBAIHN0cnVjdCBGaXRzPEdlbmVyaWNCb3VuZExhYmVsPEdlbmVyYXRvclRyYWl0
cz4sIHNpemU+IDogcHVibGljIEZpdHM8aW50LCBzaXplPiB7CiAgICAgfQogfTsKIAorc3RhdGlj
X2Fzc2VydChGaXRzPE9wY29kZUlELCBPcGNvZGVTaXplOjpOYXJyb3c+OjpjaGVjayhvcF93aWRl
MTYpKTsKK3N0YXRpY19hc3NlcnQoRml0czxPcGNvZGVJRCwgT3Bjb2RlU2l6ZTo6TmFycm93Pjo6
Y2hlY2sob3Bfd2lkZTMyKSk7CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCitzdGF0aWNfYXNz
ZXJ0KEZpdHM8V2FzbU9wY29kZUlELCBPcGNvZGVTaXplOjpOYXJyb3c+OjpjaGVjayh3YXNtX3dp
ZGUxNikpOworc3RhdGljX2Fzc2VydChGaXRzPFdhc21PcGNvZGVJRCwgT3Bjb2RlU2l6ZTo6TmFy
cm93Pjo6Y2hlY2sod2FzbV93aWRlMzIpKTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKaW5kZXggZTMyMjIwNWRlZTcuLjk1NDE2NDUwYTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcApAQCAtMjYwMCw5ICsyNjAwLDkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFIKICAg
ICAgICAgaWYgKGNvbnRleHQuaXNJbmRleGVkRm9ySW5Db250ZXh0KCkpIHsKICAgICAgICAgICAg
IGF1dG8mIGluZGV4ZWRDb250ZXh0ID0gY29udGV4dC5hc0luZGV4ZWRGb3JJbkNvbnRleHQoKTsK
ICAgICAgICAgICAgIGtpbGwoZHN0KTsKLSAgICAgICAgICAgIGlmIChPcEdldEJ5VmFsOjpjaGVj
a1dpdGhvdXRNZXRhZGF0YUlEPE9wY29kZVNpemU6Ok5hcnJvdz4odGhpcywgZHN0LCBiYXNlLCBw
cm9wZXJ0eSkpCisgICAgICAgICAgICBpZiAoT3BHZXRCeVZhbDo6Y2hlY2tXaXRob3V0TWV0YWRh
dGFJRDxPcGNvZGVTaXplOjpOYXJyb3c+KGRzdCwgYmFzZSwgcHJvcGVydHkpKQogICAgICAgICAg
ICAgICAgIE9wR2V0QnlWYWw6OmVtaXRXaXRoU21hbGxlc3RTaXplUmVxdWlyZW1lbnQ8T3Bjb2Rl
U2l6ZTo6TmFycm93Pih0aGlzLCBkc3QsIGJhc2UsIGluZGV4ZWRDb250ZXh0LmluZGV4KCkpOwot
ICAgICAgICAgICAgZWxzZSBpZiAoT3BHZXRCeVZhbDo6Y2hlY2tXaXRob3V0TWV0YWRhdGFJRDxP
cGNvZGVTaXplOjpXaWRlMTY+KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVydHkpKQorICAgICAgICAg
ICAgZWxzZSBpZiAoT3BHZXRCeVZhbDo6Y2hlY2tXaXRob3V0TWV0YWRhdGFJRDxPcGNvZGVTaXpl
OjpXaWRlMTY+KGRzdCwgYmFzZSwgcHJvcGVydHkpKQogICAgICAgICAgICAgICAgIE9wR2V0QnlW
YWw6OmVtaXRXaXRoU21hbGxlc3RTaXplUmVxdWlyZW1lbnQ8T3Bjb2RlU2l6ZTo6V2lkZTE2Pih0
aGlzLCBkc3QsIGJhc2UsIGluZGV4ZWRDb250ZXh0LmluZGV4KCkpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIE9wR2V0QnlWYWw6OmVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZTMyPih0
aGlzLCBkc3QsIGJhc2UsIGluZGV4ZWRDb250ZXh0LmluZGV4KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCA0YThiMWU1ODE0NC4uN2E3MjAzMTNlODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xNTMsNiArMTUzLDggQEAgdm9p
ZCBkdW1wV2FzbShCeXRlY29kZUR1bXBlckJhc2UqIGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCwgY29uc3QgSW5zdHIKIEVPRgogCiAgICAgICAgICAgICB0ZW1wbGF0ZS5ib2R5ID0g
PDwtRU9GCisje29wY29kZV9ncm91cHNfZmlsdGVyIHsgfHN8IHMuY29uZmlnWzplbWl0X2luX3N0
cnVjdHNfZmlsZV0gfS5tYXAoJjpzdHJ1Y3QpLmpvaW4oIlxuIil9CisKICN7b3Bjb2Rlc19maWx0
ZXIgeyB8c3wgcy5jb25maWdbOmVtaXRfaW5fc3RydWN0c19maWxlXSAmJiAhcy5pc193YXNtPyB9
Lm1hcCgmOnN0cnVjdCkuam9pbigiXG4iKX0KIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAg
LTIyNiw0ICsyMjgsOSBAQCBFT0YKICAgICAgICAgc2VjdGlvbnMgPSBAc2VjdGlvbnMuc2VsZWN0
IHsgfHN8IHlpZWxkIHMgfQogICAgICAgICBzZWN0aW9ucy5tYXAoJjpvcGNvZGVzKS5mbGF0dGVu
CiAgICAgZW5kCisKKyAgICBkZWYgc2VsZi5vcGNvZGVfZ3JvdXBzX2ZpbHRlcgorICAgICAgICBz
ZWN0aW9ucyA9IEBzZWN0aW9ucy5zZWxlY3QgeyB8c3wgeWllbGQgcyB9CisgICAgICAgIHNlY3Rp
b25zLm1hcCgmOm9wY29kZV9ncm91cHMpLmZsYXR0ZW4KKyAgICBlbmQKIGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKaW5kZXggN2NkMTVkMzE1ZDYuLmRl
OWZiNDMxYmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01l
dGFkYXRhLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEu
cmIKQEAgLTY2LDcgKzY2LDYgQEAgY2xhc3MgTWV0YWRhdGEKICAgICBzdHJ1Y3QgTWV0YWRhdGEg
ewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZXRhZGF0YSk7CiAKLSAgICBwdWJsaWM6
CiAgICAgICAgIE1ldGFkYXRhKGNvbnN0ICN7b3AuY2FwaXRhbGl6ZWRfbmFtZX0mI3siIF9fb3Ai
IGlmIGluaXRzfSkje2luaXRzfSB7IH0KIAogI3tmaWVsZHN9CkBAIC0xMDIsNyArMTAxLDYgQEAg
RU9GCiAgICAgICAgIHJldHVybiBpZiBlbXB0eT8KIAogICAgICAgICA8PC1FT0YuY2hvbXAKLQog
ICAgICAgICBhdXRvICN7ZW1pdHRlcl9sb2NhbC5uYW1lfSA9IGdlbi0+YWRkTWV0YWRhdGFGb3Io
b3Bjb2RlSUQpOwogICAgICAgICBFT0YKICAgICBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0b3IvT3Bjb2RlLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRvci9PcGNvZGUucmIKaW5kZXggODIzNzRiN2ZiZTguLmZjMjRhNzY2M2U0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYgpAQCAtNDYsNyArNDYsNyBAQCBj
bGFzcyBPcGNvZGUKICAgICAgICAgdGlkCiAgICAgZW5kCiAKLSAgICBkZWYgaW5pdGlhbGl6ZShz
ZWN0aW9uLCBuYW1lLCBleHRyYXMsIGFyZ3MsIG1ldGFkYXRhLCBtZXRhZGF0YV9pbml0aWFsaXpl
cnMsIHRtcHMsIGNoZWNrcG9pbnRzKQorICAgIGRlZiBpbml0aWFsaXplKHNlY3Rpb24sIG5hbWUs
IGV4dHJhcywgYXJncywgbWV0YWRhdGEsIG1ldGFkYXRhX2luaXRpYWxpemVycywgdG1wcywgY2hl
Y2twb2ludHMsIG9wY29kZV9ncm91cCkKICAgICAgICAgQHNlY3Rpb24gPSBzZWN0aW9uCiAgICAg
ICAgIEBuYW1lID0gbmFtZQogICAgICAgICBAZXh0cmFzID0gZXh0cmFzIHx8IHt9CkBAIC01NCw2
ICs1NCw5IEBAIGNsYXNzIE9wY29kZQogICAgICAgICBAYXJncyA9IGFyZ3MubWFwLndpdGhfaW5k
ZXggeyB8KGFyZ19uYW1lLCB0eXBlKSwgaW5kZXh8IEFyZ3VtZW50Lm5ldyBhcmdfbmFtZSwgdHlw
ZSwgaW5kZXggfSB1bmxlc3MgYXJncy5uaWw/CiAgICAgICAgIEB0bXBzID0gdG1wcwogICAgICAg
ICBAY2hlY2twb2ludHMgPSBjaGVja3BvaW50cy5tYXAgeyB8KGNoZWNrcG9pbnQsIF8pfCBjaGVj
a3BvaW50IH0gdW5sZXNzIGNoZWNrcG9pbnRzLm5pbD8KKyAgICAgICAgQG9wY29kZV9ncm91cCA9
IG9wY29kZV9ncm91cAorICAgICAgICBAb3Bfd2lkZTE2ID0gQXJndW1lbnQubmV3KHdpZGUxNiwg
b3Bjb2RlSURUeXBlLCAwKQorICAgICAgICBAb3Bfd2lkZTMyID0gQXJndW1lbnQubmV3KHdpZGUz
Miwgb3Bjb2RlSURUeXBlLCAwKQogICAgIGVuZAogCiAgICAgZGVmIGNyZWF0ZV9pZCEKQEAgLTc3
LDE2ICs4MCwyMSBAQCBjbGFzcyBPcGNvZGUKICAgICBkZWYgdHlwZWRfYXJncwogICAgICAgICBy
ZXR1cm4gaWYgQGFyZ3MubmlsPwogCisgICAgICAgIEBhcmdzLm1hcCgmOmNyZWF0ZV9wYXJhbSku
am9pbigiLCAiKQorICAgIGVuZAorICAgIGRlZiB0eXBlZF9hcmdzX3dpdGhfY29tbWEKKyAgICAg
ICAgcmV0dXJuIGlmIEBhcmdzLm5pbD8KKwogICAgICAgICBAYXJncy5tYXAoJjpjcmVhdGVfcGFy
YW0pLnVuc2hpZnQoIiIpLmpvaW4oIiwgIikKICAgICBlbmQKIAotICAgIGRlZiB0eXBlZF9yZWZl
cmVuY2VfYXJncworICAgIGRlZiB0eXBlZF9yZWZlcmVuY2VfYXJnc193aXRoX2NvbW1hCiAgICAg
ICAgIHJldHVybiBpZiBAYXJncy5uaWw/CiAKICAgICAgICAgQGFyZ3MubWFwKCY6Y3JlYXRlX3Jl
ZmVyZW5jZV9wYXJhbSkudW5zaGlmdCgiIikuam9pbigiLCAiKQogICAgIGVuZAogCi0gICAgZGVm
IHVudHlwZWRfYXJncworICAgIGRlZiB1bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYQogICAgICAgICBy
ZXR1cm4gaWYgQGFyZ3MubmlsPwogCiAgICAgICAgIEBhcmdzLm1hcCgmOm5hbWUpLnVuc2hpZnQo
IiIpLmpvaW4oIiwgIikKQEAgLTEyOCwyMCArMTM2LDM0IEBAIGNsYXNzIE9wY29kZQogCiAgICAg
ZGVmIHN0cnVjdAogICAgICAgICA8PC1FT0YKLXN0cnVjdCAje2NhcGl0YWxpemVkX25hbWV9IDog
cHVibGljIEluc3RydWN0aW9uIHsKK3N0cnVjdCAje2NhcGl0YWxpemVkX25hbWV9IDogcHVibGlj
ICN7YmFzZUNsYXNzfSB7CiAgICAgI3tvcGNvZGVJRH0KICAgICAje3RlbXBzfQogICAgICN7Y2hl
Y2twb2ludFZhbHVlc30KLQogI3tlbWl0dGVyfQotI3tkdW1wZXJ9Cisje2lmIEBvcGNvZGVfZ3Jv
dXAubmlsPworPDwtRU9GLmNob21wCitwcml2YXRlOgorI3tlbWl0X2ltcGx9Cisje2NoZWNrX2lt
cGx9CitwdWJsaWM6CitFT0YKK2VuZH0KICN7Y29uc3RydWN0b3JzfQorI3tkZWNvZGV9CiAje3Nl
dHRlcnN9I3ttZXRhZGF0YV9zdHJ1Y3RfYW5kX2FjY2Vzc29yfQotI3ttZW1iZXJzfQotfTsKKyN7
bWVtYmVyc319OwogRU9GCiAgICAgZW5kCiAKKyAgICBkZWYgYmFzZUNsYXNzCisgICAgICAgIGlm
IEBvcGNvZGVfZ3JvdXAKKyAgICAgICAgICAgIEBvcGNvZGVfZ3JvdXAubmFtZQorICAgICAgICBl
bHNlCisgICAgICAgICAgICAiSW5zdHJ1Y3Rpb24iCisgICAgICAgIGVuZAorICAgIGVuZAorCiAg
ICAgZGVmIG9wY29kZUlECiAgICAgICAgICJzdGF0aWMgY29uc3RleHByICN7b3Bjb2RlSURUeXBl
fSBvcGNvZGVJRCA9ICN7bmFtZX07IgogICAgIGVuZApAQCAtMTU4LDExNCArMTgwLDEwOCBAQCBF
T0YKICAgICAgICAgWyJlbnVtIFRtcHMgOiB1aW50OF90IHsiXS5jb25jYXQoQHRtcHMubWFwIHt8
KHRtcCwgdHlwZSl8ICIgICAgICAgICN7dG1wfSwifSkucHVzaCgiICAgIH07Iikuam9pbigiXG4i
KQogICAgIGVuZAogCisgICAgZGVmIG1ldGFkYXRhX3BhcmFtCisgICAgICAgIEBtZXRhZGF0YS5l
bXB0eT8gPyAiIiA6ICIsICN7QG1ldGFkYXRhLmVtaXR0ZXJfbG9jYWwuY3JlYXRlX3BhcmFtfSIK
KyAgICBlbmQKKworICAgIGRlZiBtZXRhZGF0YV9hcmcKKyAgICAgICAgQG1ldGFkYXRhLmVtcHR5
PyA/ICIiIDogIiwgI3tAbWV0YWRhdGEuZW1pdHRlcl9sb2NhbC5uYW1lfSIKKyAgICBlbmQKKwog
ICAgIGRlZiBlbWl0dGVyCi0gICAgICAgIG9wX3dpZGUxNiA9IEFyZ3VtZW50Lm5ldyh3aWRlMTYs
IG9wY29kZUlEVHlwZSwgMCkKLSAgICAgICAgb3Bfd2lkZTMyID0gQXJndW1lbnQubmV3KHdpZGUz
Miwgb3Bjb2RlSURUeXBlLCAwKQotICAgICAgICBtZXRhZGF0YV9wYXJhbSA9IEBtZXRhZGF0YS5l
bXB0eT8gPyAiIiA6ICIsICN7QG1ldGFkYXRhLmVtaXR0ZXJfbG9jYWwuY3JlYXRlX3BhcmFtfSIK
LSAgICAgICAgbWV0YWRhdGFfYXJnID0gQG1ldGFkYXRhLmVtcHR5PyA/ICIiIDogIiwgI3tAbWV0
YWRhdGEuZW1pdHRlcl9sb2NhbC5uYW1lfSIKLSAgICAgICAgPDwtRU9GLmNob21wCisgICAgICAg
IDw8LUVPRgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yPgotICAgIHN0
YXRpYyB2b2lkIGVtaXQoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc30pCisgICAg
c3RhdGljIHZvaWQgZW1pdChCeXRlY29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzX3dpdGhf
Y29tbWF9KQogICAgIHsKLSAgICAgICAgZW1pdFdpdGhTbWFsbGVzdFNpemVSZXF1aXJlbWVudDxP
cGNvZGVTaXplOjpOYXJyb3csIEJ5dGVjb2RlR2VuZXJhdG9yPihnZW4je3VudHlwZWRfYXJnc30p
OworICAgICAgICBlbWl0V2l0aFNtYWxsZXN0U2l6ZVJlcXVpcmVtZW50PE9wY29kZVNpemU6Ok5h
cnJvdywgQnl0ZWNvZGVHZW5lcmF0b3I+KGdlbiN7dW50eXBlZF9hcmdzX3dpdGhfY29tbWF9KTsK
ICAgICB9CiAjeyV7CiAgICAgdGVtcGxhdGU8T3Bjb2RlU2l6ZSBfX3NpemUsIHR5cGVuYW1lIEJ5
dGVjb2RlR2VuZXJhdG9yLCBGaXRzQXNzZXJ0aW9uIHNob3VsZEFzc2VydCA9IEFzc2VydD4KLSAg
ICBzdGF0aWMgYm9vbCBlbWl0KEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4je3R5cGVkX2FyZ3N9KQor
ICAgIHN0YXRpYyBib29sIGVtaXQoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc193
aXRoX2NvbW1hfSkKICAgICB7I3tAbWV0YWRhdGEuY3JlYXRlX2VtaXR0ZXJfbG9jYWx9Ci0gICAg
ICAgIHJldHVybiBlbWl0PF9fc2l6ZSwgQnl0ZWNvZGVHZW5lcmF0b3IsIHNob3VsZEFzc2VydD4o
Z2VuI3t1bnR5cGVkX2FyZ3N9I3ttZXRhZGF0YV9hcmd9KTsKKyAgICAgICAgcmV0dXJuIGVtaXQ8
X19zaXplLCBCeXRlY29kZUdlbmVyYXRvciwgc2hvdWxkQXNzZXJ0PihnZW4je3VudHlwZWRfYXJn
c193aXRoX2NvbW1hfSN7bWV0YWRhdGFfYXJnfSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8T3Bj
b2RlU2l6ZSBfX3NpemUsIHR5cGVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yPgotICAgIHN0YXRpYyBi
b29sIGNoZWNrV2l0aG91dE1ldGFkYXRhSUQoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlwZWRf
YXJnc30pCisgICAgdGVtcGxhdGU8T3Bjb2RlU2l6ZSBfX3NpemU+CisgICAgc3RhdGljIGJvb2wg
Y2hlY2tXaXRob3V0TWV0YWRhdGFJRCgje3R5cGVkX2FyZ3N9KQogICAgIHsKLSAgICAgICAgZGVj
bHR5cGUoZ2VuLT5hZGRNZXRhZGF0YUZvcihvcGNvZGVJRCkpIF9fbWV0YWRhdGFJRCB7IH07Ci0g
ICAgICAgIHJldHVybiBjaGVja0ltcGw8X19zaXplLCBCeXRlY29kZUdlbmVyYXRvcj4oZ2VuI3t1
bnR5cGVkX2FyZ3N9I3ttZXRhZGF0YV9hcmd9KTsKKyAgICAgICAgdW5zaWduZWQgX19tZXRhZGF0
YUlEID0gMDsKKyAgICAgICAgcmV0dXJuIGNoZWNrSW1wbDxfX3NpemU+KG9wY29kZUlEI3t1bnR5
cGVkX2FyZ3Nfd2l0aF9jb21tYX0je21ldGFkYXRhX2FyZ30pOwogICAgIH0KIH0gdW5sZXNzIEBt
ZXRhZGF0YS5lbXB0eT99Ci0gICAgdGVtcGxhdGU8T3Bjb2RlU2l6ZSBfX3NpemUsIHR5cGVuYW1l
IEJ5dGVjb2RlR2VuZXJhdG9yLCBGaXRzQXNzZXJ0aW9uIHNob3VsZEFzc2VydCA9IEFzc2VydCwg
Ym9vbCByZWNvcmRPcGNvZGUgPSB0cnVlPgotICAgIHN0YXRpYyBib29sIGVtaXQoQnl0ZWNvZGVH
ZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc30je21ldGFkYXRhX3BhcmFtfSkKKyAgICB0ZW1wbGF0
ZTxPcGNvZGVTaXplIF9fc2l6ZSwgdHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3IsIEZpdHNBc3Nl
cnRpb24gc2hvdWxkQXNzZXJ0ID0gQXNzZXJ0PgorICAgIHN0YXRpYyBib29sIGVtaXQoQnl0ZWNv
ZGVHZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc193aXRoX2NvbW1hfSN7bWV0YWRhdGFfcGFyYW19
KQogICAgIHsKLSAgICAgICAgYm9vbCBkaWRFbWl0ID0gZW1pdEltcGw8X19zaXplLCByZWNvcmRP
cGNvZGUsIEJ5dGVjb2RlR2VuZXJhdG9yPihnZW4je3VudHlwZWRfYXJnc30je21ldGFkYXRhX2Fy
Z30pOworICAgICAgICBib29sIGRpZEVtaXQgPSBlbWl0SW1wbDxfX3NpemUsIEJ5dGVjb2RlR2Vu
ZXJhdG9yPihnZW4sIG9wY29kZUlEI3t1bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYX0je21ldGFkYXRh
X2FyZ30pOwogICAgICAgICBpZiAoc2hvdWxkQXNzZXJ0ID09IEFzc2VydCkKICAgICAgICAgICAg
IEFTU0VSVChkaWRFbWl0KTsKICAgICAgICAgcmV0dXJuIGRpZEVtaXQ7CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8T3Bjb2RlU2l6ZSBfX3NpemUsIHR5cGVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yPgot
ICAgIHN0YXRpYyB2b2lkIGVtaXRXaXRoU21hbGxlc3RTaXplUmVxdWlyZW1lbnQoQnl0ZWNvZGVH
ZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc30pCisgICAgc3RhdGljIHZvaWQgZW1pdFdpdGhTbWFs
bGVzdFNpemVSZXF1aXJlbWVudChCeXRlY29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzX3dp
dGhfY29tbWF9KQogICAgIHsKLSAgICAgICAgI3tAbWV0YWRhdGEuY3JlYXRlX2VtaXR0ZXJfbG9j
YWx9Cisje0BtZXRhZGF0YS5jcmVhdGVfZW1pdHRlcl9sb2NhbH0KICAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihfX3NpemUpIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihPcGNvZGVT
aXplOjpOYXJyb3cpKSB7Ci0gICAgICAgICAgICBpZiAoZW1pdDxPcGNvZGVTaXplOjpOYXJyb3cs
IEJ5dGVjb2RlR2VuZXJhdG9yLCBOb0Fzc2VydCwgdHJ1ZT4oZ2VuI3t1bnR5cGVkX2FyZ3N9I3tt
ZXRhZGF0YV9hcmd9KSkKKyAgICAgICAgICAgIGlmIChlbWl0PE9wY29kZVNpemU6Ok5hcnJvdywg
Qnl0ZWNvZGVHZW5lcmF0b3IsIE5vQXNzZXJ0PihnZW4je3VudHlwZWRfYXJnc193aXRoX2NvbW1h
fSN7bWV0YWRhdGFfYXJnfSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oX19zaXplKSA8PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oT3Bjb2RlU2l6ZTo6V2lkZTE2KSkgewotICAgICAgICAgICAgaWYgKGVtaXQ8T3Bj
b2RlU2l6ZTo6V2lkZTE2LCBCeXRlY29kZUdlbmVyYXRvciwgTm9Bc3NlcnQsIHRydWU+KGdlbiN7
dW50eXBlZF9hcmdzfSN7bWV0YWRhdGFfYXJnfSkpCisgICAgICAgICAgICBpZiAoZW1pdDxPcGNv
ZGVTaXplOjpXaWRlMTYsIEJ5dGVjb2RlR2VuZXJhdG9yLCBOb0Fzc2VydD4oZ2VuI3t1bnR5cGVk
X2FyZ3Nfd2l0aF9jb21tYX0je21ldGFkYXRhX2FyZ30pKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBlbWl0PE9wY29kZVNpemU6OldpZGUzMiwgQnl0ZWNvZGVH
ZW5lcmF0b3IsIEFzc2VydCwgdHJ1ZT4oZ2VuI3t1bnR5cGVkX2FyZ3N9I3ttZXRhZGF0YV9hcmd9
KTsKKyAgICAgICAgZW1pdDxPcGNvZGVTaXplOjpXaWRlMzIsIEJ5dGVjb2RlR2VuZXJhdG9yLCBB
c3NlcnQ+KGdlbiN7dW50eXBlZF9hcmdzX3dpdGhfY29tbWF9I3ttZXRhZGF0YV9hcmd9KTsKICAg
ICB9CitFT0YKKyAgICBlbmQKIAotcHJpdmF0ZToKKyAgICBkZWYgZW1pdF9pbXBsCisgICAgICAg
IDw8LUVPRgogICAgIHRlbXBsYXRlPE9wY29kZVNpemUgX19zaXplLCB0eXBlbmFtZSBCeXRlY29k
ZUdlbmVyYXRvcj4KLSAgICBzdGF0aWMgYm9vbCBjaGVja0ltcGwoQnl0ZWNvZGVHZW5lcmF0b3Iq
IGdlbiN7dHlwZWRfcmVmZXJlbmNlX2FyZ3N9I3ttZXRhZGF0YV9wYXJhbX0pCisgICAgc3RhdGlj
IGJvb2wgZW1pdEltcGwoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiwgI3tvcGNvZGVJRFR5cGV9IG9w
Y29kZUlEI3t0eXBlZF9hcmdzX3dpdGhfY29tbWF9I3ttZXRhZGF0YV9wYXJhbX0pCiAgICAgewot
ICAgICAgICBVTlVTRURfUEFSQU0oZ2VuKTsKLSNpZiBPUyhXSU5ET1dTKSAmJiBFTkFCTEUoQ19M
T09QKQotICAgICAgICAvLyBGSVhNRTogRGlzYWJsZSB3aWRlMTYgb3B0aW1pemF0aW9uIGZvciBX
aW5kb3dzIENMb29wCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTgyODMKLSAgICAgICAgaWYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpXaWRlMTYp
CisgICAgICAgIGlmICghY2hlY2tJbXBsPF9fc2l6ZT4ob3Bjb2RlSUQje3VudHlwZWRfYXJnc193
aXRoX2NvbW1hfSN7bWV0YWRhdGFfYXJnfSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0j
ZW5kaWYKLSAgICAgICAgcmV0dXJuICN7bWFwX2ZpZWxkc193aXRoX3NpemUoIiIsICJfX3NpemUi
LCAmOmZpdHNfY2hlY2spLmpvaW4gIlxuICAgICAgICAgICAgJiYgIn0KLSAgICAgICAgICAgICYm
IChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTE2ID8gI3tvcF93aWRlMTYuZml0c19jaGVjayhT
aXplOjpOYXJyb3cpfSA6IHRydWUpCi0gICAgICAgICAgICAmJiAoX19zaXplID09IE9wY29kZVNp
emU6OldpZGUzMiA/ICN7b3Bfd2lkZTMyLmZpdHNfY2hlY2soU2l6ZTo6TmFycm93KX0gOiB0cnVl
KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6ZSwgYm9vbCByZWNvcmRP
cGNvZGUsIHR5cGVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yPgotICAgIHN0YXRpYyBib29sIGVtaXRJ
bXBsKEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4je3R5cGVkX2FyZ3N9I3ttZXRhZGF0YV9wYXJhbX0p
Ci0gICAgewotICAgICAgICAjeyFAY2hlY2twb2ludHMubmlsPyA/ICJnZW4tPnNldFVzZXNDaGVj
a3BvaW50cygpOyIgOiAiIn0KKyAgICAgICAgI3siZ2VuLT5zZXRVc2VzQ2hlY2twb2ludHMoKTsi
IHVubGVzcyBAY2hlY2twb2ludHMubmlsP30KICAgICAgICAgaWYgKF9fc2l6ZSA9PSBPcGNvZGVT
aXplOjpXaWRlMTYpCiAgICAgICAgICAgICBnZW4tPmFsaWduV2lkZU9wY29kZTE2KCk7CiAgICAg
ICAgIGVsc2UgaWYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpXaWRlMzIpCiAgICAgICAgICAgICBn
ZW4tPmFsaWduV2lkZU9wY29kZTMyKCk7Ci0gICAgICAgIGlmIChjaGVja0ltcGw8X19zaXplPihn
ZW4je3VudHlwZWRfYXJnc30je21ldGFkYXRhX2FyZ30pKSB7Ci0gICAgICAgICAgICBpZiAocmVj
b3JkT3Bjb2RlKQotICAgICAgICAgICAgICAgIGdlbi0+cmVjb3JkT3Bjb2RlKG9wY29kZUlEKTsK
LSAgICAgICAgICAgIGlmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTE2KQotICAgICAgICAg
ICAgICAgICN7b3Bfd2lkZTE2LmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93fQotICAgICAgICAgICAg
ZWxzZSBpZiAoX19zaXplID09IE9wY29kZVNpemU6OldpZGUzMikKLSAgICAgICAgICAgICAgICAj
e29wX3dpZGUzMi5maXRzX3dyaXRlIFNpemU6Ok5hcnJvd30KLSAgICAgICAgICAgICN7QXJndW1l
bnQubmV3KCJvcGNvZGVJRCIsIG9wY29kZUlEVHlwZSwgMCkuZml0c193cml0ZSBTaXplOjpOYXJy
b3d9Ci0je21hcF9vcGVyYW5kc193aXRoX3NpemUoIiAgICAgICAgICAgICIsICJfX3NpemUiLCAm
OmZpdHNfd3JpdGUpLmpvaW4gIlxuIn0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZ2VuLT5yZWNvcmRPcGNvZGUob3Bj
b2RlSUQpOworICAgICAgICBpZiAoX19zaXplID09IE9wY29kZVNpemU6OldpZGUxNikKKyAgICAg
ICAgICAgICN7QG9wX3dpZGUxNi5maXRzX3dyaXRlIFNpemU6Ok5hcnJvd30KKyAgICAgICAgZWxz
ZSBpZiAoX19zaXplID09IE9wY29kZVNpemU6OldpZGUzMikKKyAgICAgICAgICAgICN7QG9wX3dp
ZGUzMi5maXRzX3dyaXRlIFNpemU6Ok5hcnJvd30KKyAgICAgICAgI3tBcmd1bWVudC5uZXcoIm9w
Y29kZUlEIiwgb3Bjb2RlSURUeXBlLCAwKS5maXRzX3dyaXRlIFNpemU6Ok5hcnJvd30KKyN7bWFw
X29wZXJhbmRzX3dpdGhfc2l6ZSgiICAgICAgICAiLCAiX19zaXplIiwgJjpmaXRzX3dyaXRlKS5q
b2luICJcbiJ9CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLQotcHVibGljOgogRU9GCiAg
ICAgZW5kCiAKLSAgICBkZWYgZHVtcGVyCisgICAgZGVmIGNoZWNrX2ltcGwKICAgICAgICAgPDwt
RU9GCi0gICAgdm9pZCBkdW1wKEJ5dGVjb2RlRHVtcGVyQmFzZSogZHVtcGVyLCBJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0IF9fbG9jYXRpb24sIGludCBfX3NpemVTaGlmdEFtb3VudCkKKyAgICB0
ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6ZT4KKyAgICBzdGF0aWMgYm9vbCBjaGVja0ltcGwoI3tv
cGNvZGVJRFR5cGV9IG9wY29kZUlEI3t0eXBlZF9yZWZlcmVuY2VfYXJnc193aXRoX2NvbW1hfSN7
bWV0YWRhdGFfcGFyYW19KQogICAgIHsKLSAgICAgICAgZHVtcGVyLT5wcmludExvY2F0aW9uQW5k
T3AoX19sb2NhdGlvbiwgJiIqKiN7QG5hbWV9IlsyIC0gX19zaXplU2hpZnRBbW91bnRdKTsKLSN7
cHJpbnRfYXJncyB7IHxhcmd8Ci08PC1FT0YuY2hvbXAKLSAgICAgICAgZHVtcGVyLT5kdW1wT3Bl
cmFuZCgje2FyZy5maWVsZF9uYW1lfSwgI3thcmcuaW5kZXggPT0gMH0pOwotRU9GCi0gICAgfX0K
KyNpZiBPUyhXSU5ET1dTKSAmJiBFTkFCTEUoQ19MT09QKQorICAgICAgICAvLyBGSVhNRTogRGlz
YWJsZSB3aWRlMTYgb3B0aW1pemF0aW9uIGZvciBXaW5kb3dzIENMb29wCisgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgyODMKKyAgICAgICAgaWYg
KF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpXaWRlMTYpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKKyAgICAgICAgcmV0dXJuICN7bWFwX2ZpZWxkc193aXRoX3NpemUoIiIsICJfX3Np
emUiLCAmOmZpdHNfY2hlY2spLmpvaW4gIlxuICAgICAgICAgICAgJiYgIn07CiAgICAgfQogRU9G
CiAgICAgZW5kCiAKICAgICBkZWYgY29uc3RydWN0b3JzCi0gICAgICAgIGZpZWxkcyA9IChAYXJn
cyB8fCBbXSkgKyAoQG1ldGFkYXRhLmVtcHR5PyA/IFtdIDogW0BtZXRhZGF0YV0pCi0gICAgICAg
IGluaXQgPSAtPihzaXplKSB7IGZpZWxkcy5lbXB0eT8gID8gIiIgOiAiOiAje2ZpZWxkcy5tYXAu
d2l0aF9pbmRleCB7IHxhcmcsIGl8IGFyZy5sb2FkX2Zyb21fc3RyZWFtKGksIHNpemUpIH0uam9p
biAiXG4gICAgICAgICwgIiB9IiB9CisgICAgICAgIGlmIEBvcGNvZGVfZ3JvdXAubmlsPworICAg
ICAgICAgICAgZmllbGRzID0gKEBhcmdzIHx8IFtdKSArIChAbWV0YWRhdGEuZW1wdHk/ID8gW10g
OiBbQG1ldGFkYXRhXSkKKyAgICAgICAgICAgIGluaXQgPSAtPihzaXplKSB7IGZpZWxkcy5lbXB0
eT8gID8gIiIgOiAiOiAje2ZpZWxkcy5tYXAud2l0aF9pbmRleCB7IHxhcmcsIGl8IGFyZy5sb2Fk
X2Zyb21fc3RyZWFtKGksIHNpemUpIH0uam9pbiAiXG4gICAgICAgICwgIiB9IiB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGluaXQgPSAtPihzaXplKSB7ICI6ICN7QG9wY29kZV9ncm91cC5u
YW1lfShzdHJlYW0pIiB9CisgICAgICAgIGVuZAogCiAgICAgICAgIDw8LUVPRgogICAgICN7Y2Fw
aXRhbGl6ZWRfbmFtZX0oY29uc3QgdWludDhfdCogc3RyZWFtKQpAQCAtMjgwLDEzICsyOTYsMTYg
QEAgRU9GCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtLCBiaXR3aXNlX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHN0cmVhbSlbLTFdID09IG9wY29kZUlEKTsKICAgICB9CiAKLQogICAgICN7Y2Fw
aXRhbGl6ZWRfbmFtZX0oY29uc3QgdWludDMyX3QqIHN0cmVhbSkKICAgICAgICAgI3tpbml0LmNh
bGwoIk9wY29kZVNpemU6OldpZGUzMiIpfQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChz
dHJlYW0sIGJpdHdpc2VfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyZWFtKVstMV0gPT0gb3Bjb2Rl
SUQpOwogICAgIH0KK0VPRgorICAgIGVuZAogCisgICAgZGVmIGRlY29kZQorICAgICAgICA8PC1F
T0YKICAgICBzdGF0aWMgI3tjYXBpdGFsaXplZF9uYW1lfSBkZWNvZGUoY29uc3QgdWludDhfdCog
c3RyZWFtKQogICAgIHsKICAgICAgICAgLy8gQSBwb2ludGVyIGlzIHBvaW50aW5nIHRvIHRoZSBm
aXJzdCBvcGVyYW5kIChvcGNvZGUgYW5kIHByZWZpeCBhcmUgbm90IGluY2x1ZGVkKS4KQEAgLTMw
MCw3ICszMTksNyBAQCBFT0YKICAgICBlbmQKIAogICAgIGRlZiBzZXR0ZXJzCi0gICAgICAgIHBy
aW50X2FyZ3MgeyB8YXwgYS5zZXR0ZXIodHJhaXRzKSB9CisgICAgICAgIHByaW50X2FyZ3MgeyB8
YXwgYS5zZXR0ZXIodHJhaXRzKSB9IGlmIEBvcGNvZGVfZ3JvdXAubmlsPwogICAgIGVuZAogCiAg
ICAgZGVmIG1ldGFkYXRhX3N0cnVjdF9hbmRfYWNjZXNzb3IKQEAgLTMxMCw5ICszMjksMTQgQEAg
RU9GCiAgICAgZW5kCiAKICAgICBkZWYgbWVtYmVycwotICAgICAgICA8PC1FT0YuY2hvbXAKKyAg
ICAgICAgaWYgQG9wY29kZV9ncm91cC5uaWw/CisgICAgICAgICAgICA8PC1FT0YKKyAgICBmcmll
bmQgdm9pZCBkdW1wI3tAc2VjdGlvbi5pc193YXNtPyA/ICJXYXNtIiA6ICJCeXRlY29kZSJ9KEJ5
dGVjb2RlRHVtcGVyQmFzZSogZHVtcGVyLCBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IF9fbG9j
YXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiBfX2luc3RydWN0aW9uKTsKICN7cHJpbnRfbWVtYmVy
cygiICAgICIsICY6ZmllbGQpfSN7QG1ldGFkYXRhLmZpZWxkKCIgICAgIil9CiBFT0YKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgIiIKKyAgICAgICAgZW5kCiAgICAgZW5kCiAKICAgICBkZWYg
c2V0X2VudHJ5X2FkZHJlc3MoaWQpCkBAIC0zNTMsMjEgKzM3NywzNiBAQCBFT0YKICAgICBlbmQK
IAogICAgIGRlZiBzZWxmLmR1bXBfYnl0ZWNvZGUobmFtZSwgb3Bjb2RlX3RyYWl0cywgb3Bjb2Rl
cykKLSAgICAgICAgPDwtRU9GLmNob21wCisgICAgICAgIDw8LUZVTEwuY2hvbXAKIHZvaWQgZHVt
cCN7bmFtZX0oQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQgX19sb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qIF9faW5zdHJ1Y3Rpb24pCiB7Cisg
ICAgaW50IHNpemVTaGlmdEFtb3VudCA9IF9faW5zdHJ1Y3Rpb24tPnNpemVTaGlmdEFtb3VudDwj
e29wY29kZV90cmFpdHN9PigpOwogICAgIHN3aXRjaCAoX19pbnN0cnVjdGlvbi0+b3Bjb2RlSUQ8
I3tvcGNvZGVfdHJhaXRzfT4oKSkgewogI3tvcGNvZGVzLm1hcCB7IHxvcHwKLSAgICAgICAgPDwt
RU9GLmNob21wCisgICAgaWYgb3AuYXJncy5uaWw/CisgICAgICAgIDw8LUNBU0UuY2hvbXAKICAg
ICBjYXNlICN7b3AubmFtZX06Ci0gICAgICAgIF9faW5zdHJ1Y3Rpb24tPmFzPCN7b3AuY2FwaXRh
bGl6ZWRfbmFtZX0sICN7b3Bjb2RlX3RyYWl0c30+KCkuZHVtcChkdW1wZXIsIF9fbG9jYXRpb24s
IF9faW5zdHJ1Y3Rpb24tPnNpemVTaGlmdEFtb3VudDwje29wY29kZV90cmFpdHN9PigpKTsKKyAg
ICAgICAgZHVtcGVyLT5wcmludExvY2F0aW9uQW5kT3AoX19sb2NhdGlvbiwgJiIqKiN7b3AudW5w
cmVmaXhlZF9uYW1lfSJbMiAtIHNpemVTaGlmdEFtb3VudF0pOwogICAgICAgICBicmVhazsKLUVP
RgotICAgIH0uam9pbiAiXG4ifQorQ0FTRQorICAgIGVsc2UKKyAgICAgICAgPDwtQ0FTRS5jaG9t
cAorICAgIGNhc2UgI3tvcC5uYW1lfTogeworICAgICAgICBhdXRvIGluc3RydWN0aW9uID0gX19p
bnN0cnVjdGlvbi0+YXM8I3tvcC5jYXBpdGFsaXplZF9uYW1lfSwgI3tvcGNvZGVfdHJhaXRzfT4o
KTsKKyAgICAgICAgZHVtcGVyLT5wcmludExvY2F0aW9uQW5kT3AoX19sb2NhdGlvbiwgJiIqKiN7
b3AudW5wcmVmaXhlZF9uYW1lfSJbMiAtIHNpemVTaGlmdEFtb3VudF0pOworI3tvcC5wcmludF9h
cmdzIHsgfGFyZ3wKKyAgICAgICAgICAgIDw8LUFSRy5jaG9tcAorICAgICAgICBkdW1wZXItPmR1
bXBPcGVyYW5kKGluc3RydWN0aW9uLiN7YXJnLmZpZWxkX25hbWV9LCAje2FyZy5pbmRleCA9PSAw
fSk7CitBUkcKKyAgICAgICAgfX0KKyAgICAgICAgYnJlYWs7CisgICAgfQorQ0FTRQorICAgIGVu
ZH0uam9pbiAiXG4ifQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KIH0KLUVPRgorRlVMTAogICAgIGVuZAogZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZUdyb3VwLnJiIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRvci9PcGNvZGVHcm91cC5yYgppbmRleCA4ZWMyYTIzY2Y0OC4uMjVhZjVh
NzZmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvT3Bjb2Rl
R3JvdXAucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9PcGNvZGVHcm91
cC5yYgpAQCAtMjgsMTAgKzI4LDYzIEBAIGNsYXNzIE9wY29kZUdyb3VwCiAgICAgYXR0cl9yZWFk
ZXIgOm9wY29kZXMKICAgICBhdHRyX3JlYWRlciA6Y29uZmlnCiAKLSAgICBkZWYgaW5pdGlhbGl6
ZShzZWN0aW9uLCBkZXNjLCBvcGNvZGVzLCBjb25maWcpCisgICAgZGVmIGluaXRpYWxpemUoc2Vj
dGlvbiwgbmFtZSwgb3Bjb2RlcywgY29uZmlnKQogICAgICAgICBAc2VjdGlvbiA9IHNlY3Rpb24K
ICAgICAgICAgQG5hbWUgPSBuYW1lCiAgICAgICAgIEBvcGNvZGVzID0gb3Bjb2RlcwogICAgICAg
ICBAY29uZmlnID0gY29uZmlnCisgICAgICAgIEBtZXRhZGF0YSA9IE1ldGFkYXRhLm5ldyBjb25m
aWdbOm1ldGFkYXRhXSwgY29uZmlnWzptZXRhZGF0YV9pbml0aWFsaXplcnNdCisgICAgICAgIEBh
cmdzID0gY29uZmlnWzphcmdzXS5tYXAud2l0aF9pbmRleCB7IHwoYXJnX25hbWUsIHR5cGUpLCBp
bmRleHwgQXJndW1lbnQubmV3IGFyZ19uYW1lLCB0eXBlLCBpbmRleCB9IHVubGVzcyBjb25maWdb
OmFyZ3NdLm5pbD8KKyAgICAgICAgQGZha2Vfb3Bjb2RlID0gT3Bjb2RlLm5ldyhzZWN0aW9uLCBu
YW1lLCBjb25maWdbOmV4dHJhc10sIGNvbmZpZ1s6YXJnc10sIGNvbmZpZ1s6bWV0YWRhdGFdLCBj
b25maWdbOm1ldGFkYXRhX2luaXRpYWxpemVyc10sIGNvbmZpZ1s6dG1wc10sIGNvbmZpZ1s6Y2hl
Y2twb2ludHNdLCBuaWwpCisgICAgZW5kCisKKyAgICBkZWYgbmFtZQorICAgICAgICBAc2VjdGlv
bi5jb25maWdbOm9wX3ByZWZpeF0uc3BsaXQoJ18nKS5tYXAoJjpjYXBpdGFsaXplKS5qb2luICsg
IiN7QG5hbWV9IgorICAgIGVuZAorCisgICAgZGVmIHN0cnVjdAorICAgICAgICA8PC1FT0YKK3N0
cnVjdCAje25hbWV9IDogcHVibGljIEluc3RydWN0aW9uIHsKKyN7Y29uc3RydWN0b3JzfQorcHJv
dGVjdGVkOgorI3tAZmFrZV9vcGNvZGUuZW1pdF9pbXBsfQorI3tAZmFrZV9vcGNvZGUuY2hlY2tf
aW1wbH0KK3B1YmxpYzoKKyN7c2V0dGVyc30KKyN7bWVtYmVyc30KK307CitFT0YKKyAgICBlbmQK
KworICAgIGRlZiBjb25zdHJ1Y3RvcnMKKyAgICAgICAgZmllbGRzID0gKEBhcmdzIHx8IFtdKSAr
IChAbWV0YWRhdGEuZW1wdHk/ID8gW10gOiBbQG1ldGFkYXRhXSkKKyAgICAgICAgaW5pdCA9IC0+
KHNpemUpIHsgZmllbGRzLmVtcHR5PyAgPyAiIiA6ICI6ICN7ZmllbGRzLm1hcC53aXRoX2luZGV4
IHsgfGFyZywgaXwgYXJnLmxvYWRfZnJvbV9zdHJlYW0oaSwgc2l6ZSkgfS5qb2luICJcbiAgICAg
ICAgLCAiIH0iIH0KKworICAgICAgICA8PC1FT0YKKyAgICAje25hbWV9KGNvbnN0IHVpbnQ4X3Qq
IHN0cmVhbSkKKyAgICAgICAgI3tpbml0LmNhbGwoIk9wY29kZVNpemU6Ok5hcnJvdyIpfQorICAg
IHsKKyAgICB9CisKKyAgICAje25hbWV9KGNvbnN0IHVpbnQxNl90KiBzdHJlYW0pCisgICAgICAg
ICN7aW5pdC5jYWxsKCJPcGNvZGVTaXplOjpXaWRlMTYiKX0KKyAgICB7CisgICAgfQorCisgICAg
I3tuYW1lfShjb25zdCB1aW50MzJfdCogc3RyZWFtKQorICAgICAgICAje2luaXQuY2FsbCgiT3Bj
b2RlU2l6ZTo6V2lkZTMyIil9CisgICAgeworICAgIH0KK0VPRgorICAgIGVuZAorCisgICAgZGVm
IHNldHRlcnMKKyAgICAgICAgQGZha2Vfb3Bjb2RlLnByaW50X2FyZ3MgeyB8YXwgYS5zZXR0ZXIo
QGZha2Vfb3Bjb2RlLnRyYWl0cykgfQorICAgIGVuZAorCisgICAgZGVmIG1lbWJlcnMKKyAgICAg
ICAgPDwtRU9GLmNob21wCisje0BmYWtlX29wY29kZS5wcmludF9tZW1iZXJzKCIgICAgIiwgJjpm
aWVsZCl9I3tAbWV0YWRhdGEuZmllbGQoIiAgICAiKX0KK0VPRgogICAgIGVuZAogZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKaW5kZXggNjY4NTViYTY1MDAu
LjY4YzU5N2Q5NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9y
L1NlY3Rpb24ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9u
LnJiCkBAIC0zMCw2ICszMCw3IEBAIGNsYXNzIFNlY3Rpb24KICAgYXR0cl9yZWFkZXIgOm5hbWUK
ICAgYXR0cl9yZWFkZXIgOmNvbmZpZwogICBhdHRyX3JlYWRlciA6b3Bjb2RlcworICBhdHRyX3Jl
YWRlciA6b3Bjb2RlX2dyb3VwcwogCiAgIGRlZiBpbml0aWFsaXplKG5hbWUsIGNvbmZpZykKICAg
ICBAbmFtZSA9IG5hbWUKQEAgLTM5LDE2ICs0MCwxNyBAQCBjbGFzcyBTZWN0aW9uCiAgIGVuZAog
CiAgIGRlZiBhZGRfb3Bjb2RlKG5hbWUsIGNvbmZpZykKLSAgICAgIEBvcGNvZGVzIDw8IGNyZWF0
ZV9vcGNvZGUobmFtZSwgY29uZmlnKQorICAgICAgQG9wY29kZXMgPDwgY3JlYXRlX29wY29kZShu
YW1lLCBjb25maWcsIG5pbCkKICAgZW5kCiAKLSAgZGVmIGNyZWF0ZV9vcGNvZGUobmFtZSwgY29u
ZmlnKQotICAgICAgT3Bjb2RlLm5ldyhzZWxmLCBuYW1lLCBjb25maWdbOmV4dHJhc10sIGNvbmZp
Z1s6YXJnc10sIGNvbmZpZ1s6bWV0YWRhdGFdLCBjb25maWdbOm1ldGFkYXRhX2luaXRpYWxpemVy
c10sIGNvbmZpZ1s6dG1wc10sIGNvbmZpZ1s6Y2hlY2twb2ludHNdKQorICBkZWYgY3JlYXRlX29w
Y29kZShuYW1lLCBjb25maWcsIG9wY29kZV9ncm91cCkKKyAgICAgIE9wY29kZS5uZXcoc2VsZiwg
bmFtZSwgY29uZmlnWzpleHRyYXNdLCBjb25maWdbOmFyZ3NdLCBjb25maWdbOm1ldGFkYXRhXSwg
Y29uZmlnWzptZXRhZGF0YV9pbml0aWFsaXplcnNdLCBjb25maWdbOnRtcHNdLCBjb25maWdbOmNo
ZWNrcG9pbnRzXSwgb3Bjb2RlX2dyb3VwKQogICBlbmQKIAogICBkZWYgYWRkX29wY29kZV9ncm91
cChuYW1lLCBvcGNvZGVzLCBjb25maWcpCi0gICAgICBvcGNvZGVzID0gb3Bjb2Rlcy5tYXAgeyB8
b3Bjb2RlfCBjcmVhdGVfb3Bjb2RlKG9wY29kZSwgY29uZmlnKSB9Ci0gICAgICBAb3Bjb2RlX2dy
b3VwcyA8PCBPcGNvZGVHcm91cC5uZXcoc2VsZiwgbmFtZSwgb3Bjb2RlcywgY29uZmlnKQorICAg
ICAgb3Bjb2RlX2dyb3VwID0gT3Bjb2RlR3JvdXAubmV3KHNlbGYsIG5hbWUsIG9wY29kZXMsIGNv
bmZpZykKKyAgICAgIEBvcGNvZGVfZ3JvdXBzIDw8IG9wY29kZV9ncm91cAorICAgICAgb3Bjb2Rl
cyA9IG9wY29kZXMubWFwIHsgfG9wY29kZXwgY3JlYXRlX29wY29kZShvcGNvZGUsIGNvbmZpZywg
b3Bjb2RlX2dyb3VwKSB9CiAgICAgICBAb3Bjb2RlcyArPSBvcGNvZGVzCiAgIGVuZAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1dhc20ucmIgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1dhc20ucmIKaW5kZXggYzE3ODU4NmQ1MjEuLjRjNTBl
OTI2ZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1dhc20u
cmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9XYXNtLnJiCkBAIC02LDYg
KzYsMTAgQEAgbW9kdWxlIFdhc20KICAgICBlbmQKIAogICAgIGRlZiBzZWxmLmF1dG9nZW5lcmF0
ZV9vcGNvZGVzKGNvbnRleHQsIHdhc21fanNvbikKKyAgICAgICAgdW5hcnlPcHMgPSBbXQorICAg
ICAgICBiaW5hcnlPcHMgPSBbXQorICAgICAgICB2aXJ0dWFsUmVnaXN0ZXIgPSBjb250ZXh0LmV2
YWwoIlZpcnR1YWxSZWdpc3RlciIpCisKICAgICAgICAgSlNPTi5wYXJzZSh3YXNtX2pzb24pWyJv
cGNvZGUiXS5lYWNoIGRvIHxuYW1lLCB2YWx1ZXwKICAgICAgICAgICAgIGNhdGVnb3J5ID0gdmFs
dWVbImNhdGVnb3J5Il0KIApAQCAtMTQsMzIgKzE4LDI5IEBAIG1vZHVsZSBXYXNtCiAgICAgICAg
ICAgICByZXR1cm5Db3VudCA9IHZhbHVlWyJyZXR1cm4iXS5zaXplCiAgICAgICAgICAgICBwYXJh
bWV0ZXJDb3VudCA9IHZhbHVlWyJwYXJhbWV0ZXIiXS5zaXplCiAKLSAgICAgICAgICAgIGFzc2Vy
dCgic2hvdWxkIHJldHVybiAwIG9yIDEgdmFsdWVzIikgeyBbMCwgMV0uaW5jbHVkZT8gcmV0dXJu
Q291bnQgfQorICAgICAgICAgICAgYXNzZXJ0KCJzaG91bGQgcmV0dXJuIGV4YWN0bHkgMSB2YWx1
ZSIpIHsgcmV0dXJuQ291bnQgPT0gMX0KICAgICAgICAgICAgIGFzc2VydCgic2hvdWxkIG9ubHkg
aGF2ZSAxIG9yIDIgcGFyYW1ldGVycyIpIHsgWzEsIDJdLmluY2x1ZGU/IHBhcmFtZXRlckNvdW50
IH0KIAogICAgICAgICAgICAgbmFtZSA9IG5vcm1hbGl6ZShuYW1lKQotICAgICAgICAgICAgYXJn
dW1lbnRzID0ge30KLQotICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyID0gY29udGV4dC5ldmFs
KCJWaXJ0dWFsUmVnaXN0ZXIiKQogCi0gICAgICAgICAgICBpZiByZXR1cm5Db3VudCA+IDAKLSAg
ICAgICAgICAgICAgICBhcmd1bWVudHNbOmRzdF0gPSB2aXJ0dWFsUmVnaXN0ZXIKKyAgICAgICAg
ICAgIGlmIChwYXJhbWV0ZXJDb3VudCA9PSAxKQorICAgICAgICAgICAgICAgIHVuYXJ5T3BzIDw8
IG5hbWUKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBiaW5hcnlPcHMgPDwgbmFt
ZQogICAgICAgICAgICAgZW5kCisgICAgICAgIGVuZAogCi0gICAgICAgICAgICBjYXNlIHBhcmFt
ZXRlckNvdW50Ci0gICAgICAgICAgICB3aGVuIDEKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNb
Om9wZXJhbmRdID0gdmlydHVhbFJlZ2lzdGVyCi0gICAgICAgICAgICB3aGVuIDIKLSAgICAgICAg
ICAgICAgICBhcmd1bWVudHNbOmxoc10gPSB2aXJ0dWFsUmVnaXN0ZXIKLSAgICAgICAgICAgICAg
ICBhcmd1bWVudHNbOnJoc10gPSB2aXJ0dWFsUmVnaXN0ZXIKLSAgICAgICAgICAgIGVuZAorICAg
ICAgICBkZWNsYXJlX29wX2dyb3VwID0gY29udGV4dC5ldmFsKCJQcm9jLm5ldyB7IHxuYW1lLCBv
cHMsIGNvbmZpZ3wgb3BfZ3JvdXAobmFtZSwgb3BzLCBjb25maWcpIH0iKQogCi0gICAgICAgICAg
ICBjb250ZXh0LmV2YWwoIlByb2MubmV3IHsgfGFyZ3VtZW50cywgZXh0cmFzIHwgb3AoJyN7bmFt
ZX0nLCB7IGV4dHJhczogZXh0cmFzLCBhcmdzOiBhcmd1bWVudHMgfSkgfSIpLmNhbGwoYXJndW1l
bnRzLCB2YWx1ZSkKLSAgICAgICAgZW5kCisgICAgICAgIGNvbmZpZ1VuYXJ5T3BzID0geyBleHRy
YXM6IHthdXRvZ2VuZXJhdGVkOiB0cnVlfSwgYXJnczoge29wZXJhbmQ6IHZpcnR1YWxSZWdpc3Rl
ciwgZHN0OiB2aXJ0dWFsUmVnaXN0ZXJ9fQorICAgICAgICBjb25maWdCaW5hcnlPcHMgPSB7IGV4
dHJhczoge2F1dG9nZW5lcmF0ZWQ6IHRydWV9LCBhcmdzOiB7bGhzOiB2aXJ0dWFsUmVnaXN0ZXIs
IHJoczogdmlydHVhbFJlZ2lzdGVyLCBkc3Q6IHZpcnR1YWxSZWdpc3Rlcn19CisKKyAgICAgICAg
ZGVjbGFyZV9vcF9ncm91cC5jYWxsKCJVbmFyeU9wcyIsIHVuYXJ5T3BzLCBjb25maWdVbmFyeU9w
cykKKyAgICAgICAgZGVjbGFyZV9vcF9ncm91cC5jYWxsKCJCaW5hcnlPcHMiLCBiaW5hcnlPcHMs
IGNvbmZpZ0JpbmFyeU9wcykKICAgICBlbmQKIAogICAgIGRlZiBzZWxmLmdlbmVyYXRlX2xsaW50
X2dlbmVyYXRvcihzZWN0aW9uKQotICAgICAgICBvcGNvZGVzID0gc2VjdGlvbi5vcGNvZGVzLnNl
bGVjdCB7IHxvcHwgWyJhcml0aG1ldGljIiwgImNvbXBhcmlzb24iLCAiY29udmVyc2lvbiJdLmlu
Y2x1ZGU/IG9wLmV4dHJhc1siY2F0ZWdvcnkiXSB9CisgICAgICAgIG9wY29kZXMgPSBzZWN0aW9u
Lm9wY29kZXMuc2VsZWN0IHsgfG9wfCBvcC5leHRyYXNbOmF1dG9nZW5lcmF0ZWRdIH0KICAgICAg
ICAgbWV0aG9kcyA9IG9wY29kZXMubWFwIGRvIHxvcHwKICAgICAgICAgICAgIGNhc2Ugb3AuYXJn
cy5zaXplCiAgICAgICAgICAgICB3aGVuIDIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388387</attachid>
            <date>2020-01-21 18:32:33 -0800</date>
            <delta_ts>2020-01-21 19:08:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch206563</filename>
            <type>text/plain</type>
            <size>30052</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDE5MjNlMmU3OWUwLi40MjhhNTE0OTk0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDEtMjEgIFJvYmlu
IE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBTaHJpbmsgQnl0ZWNv
ZGVTdHJ1Y3RzLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjU2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBtYWluIGdvYWwgb2YgdGhpcyBwYXRjaCB3YXMgdG8gcmVkdWNlIGNvbXBpbGUgdGlt
ZXMuCisgICAgICAgIEl0IGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgc2ltcGxpZmljYXRvbnMgdG8g
Qnl0ZWNvZGVTdHJ1Y3RzLmgsIHdoaWNoIGlzIGh1Z2UgYW5kIHRyYW5zaXRpdmVseSBpbmNsdWRl
ZCBpbiBtb3N0IG9mIEpTQyAodGhyb3VnaCBDb21tb25TbG93UGF0aHMuaCAtPiBKSVQuaCk6Cisg
ICAgICAgIC0gT25lIHN0cnVjdCBwZXIgb3BfZ3JvdXAsIHdpdGggc2V0dGVycywgY29uc3RydWN0
b3JzLCBlbWl0SW1wbCwgY2hlY2tJbXBsLCBhbmQgdGhlIG1lbWJlcnMsIHRoaXMgd2F5IHRoZXkg
YXJlIHNoYXJlZCBhbW9uZyB0aGUgdmFyaW91cyBvcGNvZGVzIGluIGEgZ3JvdXAuCisgICAgICAg
IC0gTW9yZSBvcF9ncm91cHMgaW4gQnl0ZWNvZGVMaXN0LnJiICh0byBtYXhpbWl6ZSB0aGUgYmVu
ZWZpdCBvZiB0aGUgcHJldmlvdXMgb3B0aW1pemF0aW9uKQorICAgICAgICAtIEF1dG9tYXRpY2Fs
bHkgdXNlIFdhc21VbmFyeU9wcyBhbmQgV2FzbUJpbmFyeU9wcyBncm91cHMgZm9yIHRoZSBvcHMg
YXV0b2dlbmVyYXRlZCBpbiBXYXNtLnJiCisgICAgICAgIC0gVGhlIGNoZWNrcyB0aGF0IG9wX3dp
ZGUxNiwgb3Bfd2lkZTMyLCB3YXNtX3dpZGUxNiwgd2FzbV93aWRlMzIgZml0IGluIE9wY29kZUlE
L1dhc21PcGNvZGVJRCBhcmUgbm93IGluIGEgc2luZ2xlIHBsYWNlIGFzIGEgc3RhdGljIGFzc2Vy
dCBpbiBGaXRzLmgsIGluc3RlYWQgb2YgYmVpbmcgcmVwZWF0ZWQgaW4gdGhlIGNoZWNrSW1wbCBv
ZiBldmVyeSBzaW5nbGUgaW5zdHJ1Y3Rpb24KKyAgICAgICAgLSBSZW1vdmluZyB0aGUgdW5uZWNl
c3NhcnkgcGFyYW1ldGVyaXphdGlvbiBvZiBjaGVja1dpdGhvdXRNZXRhZGFJRCBieSBCeXRlY29k
ZUdlbmVyYXRvcgorICAgICAgICAtIFJlbW92ZSB0aGUgcmVjb3JkT3Bjb2RlIHBhcmFtZXRlciwg
c2luY2UgaXQgaXMgYWx3YXlzIHRydWUKKyAgICAgICAgLSBJbmxpbmUgYWxsIG9mIHRoZSBkdW1w
IGZ1bmN0aW9ucyAod2hpY2ggd2VyZSBpbiBCeXRlY29kZVN0cnVjdHMuaCkgaW50byB0aGUgZHVt
cEJ5dGVjb2RlL2R1bXBXYXNtIGZ1bmN0aW9ucyAod2hpY2ggYXJlIGluIGEgLmNwcCkKKworICAg
ICAgICBBcyBleHBlY3RlZCwgaXQgdmVyeSBzaWduaWZpY2FudGx5IHNocnVuayBCeXRlY29kZVN0
cnVjdHMuaDogZnJvbSA2NDI5NSBsaW5lcyAoMi43MjdNQikgdG8gMzk5MTggbGluZXMgKDEuNjAy
TUIpLgorICAgICAgICBTYWRseSB0aGUgY29tcGlsZSB0aW1lIGltcHJvdmVtZW50IGlzIG5lZ2xp
Z2libGUgKGEgY291cGxlIHNlY29uZHMgb3V0IG9mIGFib3V0IDNtbiBvbiBteSBpTWFjUHJvKS4K
KworICAgICAgICBIb3dldmVyLCB0aGlzIHBhdGNoIHR1cm5lZCBvdXQgdG8gYmUgYSBmYWlybHkg
c2lnbmlmaWNhbnQgYmluYXJ5IHNpemUgc2F2aW5nLCBmcm9tIDI2LjA0NE1CIHRvIDI1LjU5Mk1C
IChhIHNhdmluZyBvZiBhYm91dCA0NTBrQikgaW4gcmVsZWFzZSBtb2RlLgorCisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5VmFsKToKKyAgICAgICAgKiBnZW5lcmF0b3Iv
RFNMLnJiOgorICAgICAgICAqIGdlbmVyYXRvci9NZXRhZGF0YS5yYjoKKyAgICAgICAgKiBnZW5l
cmF0b3IvT3Bjb2RlLnJiOgorICAgICAgICAqIGdlbmVyYXRvci9PcGNvZGVHcm91cC5yYjoKKyAg
ICAgICAgKiBnZW5lcmF0b3IvU2VjdGlvbi5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvV2FzbS5y
YjoKKwogMjAyMC0wMS0yMSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IEFkZCBidWlsZCBmbGFnIGZvciBzdGFsZS13aGlsZS1yZXZhbGlkYXRlCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAzNDgzNDdjNmI0Yy4u
NWQ4NDFiOGIzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYgpAQCAtNjQxLDM3ICs2NDEsMjMgQEAgb3AgOmptcCwKICAgICAgICAgdGFyZ2V0
TGFiZWw6IEJvdW5kTGFiZWwsCiAgICAgfQogCi1vcCA6anRydWUsCi0gICAgYXJnczogewotICAg
ICAgICBjb25kaXRpb246IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGFyZ2V0TGFiZWw6IEJv
dW5kTGFiZWwsCi0gICAgfQotCi1vcCA6amZhbHNlLAorb3BfZ3JvdXAgOkJvb2xlYW5KdW1wLAor
ICAgIFsKKyAgICAgICAgOmp0cnVlLAorICAgICAgICA6amZhbHNlCisgICAgXSwKICAgICBhcmdz
OiB7CiAgICAgICAgIGNvbmRpdGlvbjogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB0YXJnZXRM
YWJlbDogQm91bmRMYWJlbCwKICAgICB9CiAKLW9wIDpqZXFfbnVsbCwKLSAgICBhcmdzOiB7Ci0g
ICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHRhcmdldExhYmVsOiBCb3Vu
ZExhYmVsLAotICAgIH0KLQotb3AgOmpuZXFfbnVsbCwKLSAgICBhcmdzOiB7Ci0gICAgICAgIHZh
bHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHRhcmdldExhYmVsOiBCb3VuZExhYmVsLAot
ICAgIH0KLQotb3AgOmp1bmRlZmluZWRfb3JfbnVsbCwKLSAgICBhcmdzOiB7Ci0gICAgICAgIHZh
bHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHRhcmdldExhYmVsOiBCb3VuZExhYmVsLAot
ICAgIH0KLQotb3AgOmpudW5kZWZpbmVkX29yX251bGwsCitvcF9ncm91cCA6VGVzdGluZ0p1bXAs
CisgICAgWworICAgICAgICA6amVxX251bGwsCisgICAgICAgIDpqbmVxX251bGwsCisgICAgICAg
IDpqdW5kZWZpbmVkX29yX251bGwsCisgICAgICAgIDpqbnVuZGVmaW5lZF9vcl9udWxsCisgICAg
XSwKICAgICBhcmdzOiB7CiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAg
IHRhcmdldExhYmVsOiBCb3VuZExhYmVsLApAQCAtNzQ4LDMxICs3MzQsMTMgQEAgb3AgOnNldF9m
dW5jdGlvbl9uYW1lLAogICAgIH0KIAogIyBvcF9jYWxsIHZhcmlhdGlvbnMKLW9wIDpjYWxsLAot
ICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGNhbGxl
ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBhcmdjOiB1bnNpZ25lZCwKLSAgICAgICAgYXJn
djogdW5zaWduZWQsCi0gICAgfSwKLSAgICBtZXRhZGF0YTogewotICAgICAgICBjYWxsTGlua0lu
Zm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0g
ICAgfQotCi1vcCA6dGFpbF9jYWxsLAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFs
UmVnaXN0ZXIsCi0gICAgICAgIGNhbGxlZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBhcmdj
OiB1bnNpZ25lZCwKLSAgICAgICAgYXJndjogdW5zaWduZWQsCi0gICAgfSwKLSAgICBtZXRhZGF0
YTogewotICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBw
cm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgfQotCi1vcCA6Y2FsbF9ldmFsLAorb3BfZ3JvdXAg
Ok5vblZhcmFyZ3NDYWxscywKKyAgICBbCisgICAgICAgIDpjYWxsLAorICAgICAgICA6dGFpbF9j
YWxsLAorICAgICAgICA6Y2FsbF9ldmFsLAorICAgICAgICA6Y29uc3RydWN0CisgICAgXSwKICAg
ICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBjYWxsZWU6
IFZpcnR1YWxSZWdpc3RlciwKQEAgLTc4NCw3ICs3NTIsMTIgQEAgb3AgOmNhbGxfZXZhbCwKICAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIAotb3AgOmNhbGxfdmFyYXJncywK
K29wX2dyb3VwIDpWYXJhcmdzQ2FsbHMsCisgICAgWworICAgICAgICA6Y2FsbF92YXJhcmdzLAor
ICAgICAgICA6dGFpbF9jYWxsX3ZhcmFyZ3MsCisgICAgICAgIDpjb25zdHJ1Y3RfdmFyYXJncwor
ICAgIF0sCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICAg
ICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC04MDUsMjcgKzc3OCw2IEBAIG9wIDpjYWxs
X3ZhcmFyZ3MsCiAgICAgICAgIG1ha2VDYWxsOiBuaWwsCiAgICAgfQogCi1vcCA6dGFpbF9jYWxs
X3ZhcmFyZ3MsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHRoaXNWYWx1ZT86IFZpcnR1
YWxSZWdpc3RlciwKLSAgICAgICAgYXJndW1lbnRzPzogVmlydHVhbFJlZ2lzdGVyLAotICAgICAg
ICBmaXJzdEZyZWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZmlyc3RWYXJBcmc6IGludCwK
LSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9m
aWxlLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgfSwKLSAgICB0bXBzOiB7
Ci0gICAgICAgIGFyZ0NvdW50SW5jbHVkaW5nVGhpczogdW5zaWduZWQKLSAgICB9LAotICAgIGNo
ZWNrcG9pbnRzOiB7Ci0gICAgICAgIGRldGVybWluaW5nQXJnQ291bnQ6IG5pbCwKLSAgICAgICAg
bWFrZUNhbGw6IG5pbCwKLSAgICB9Ci0KIG9wIDp0YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMs
CiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTg0MCwzOSAr
NzkyLDYgQEAgb3AgOnRhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cywKICAgICAgICAgcHJvZmls
ZTogVmFsdWVQcm9maWxlLAogICAgIH0KIAotb3AgOmNvbnN0cnVjdCwKLSAgICBhcmdzOiB7Ci0g
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdp
c3RlciwKLSAgICAgICAgYXJnYzogdW5zaWduZWQsCi0gICAgICAgIGFyZ3Y6IHVuc2lnbmVkLAot
ICAgIH0sCi0gICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxM
aW5rSW5mbywKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAotICAgIH0KLQotb3AgOmNv
bnN0cnVjdF92YXJhcmdzLAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0
ZXIsCi0gICAgICAgIGNhbGxlZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICB0aGlzVmFsdWU/
OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGFyZ3VtZW50cz86IFZpcnR1YWxSZWdpc3RlciwK
LSAgICAgICAgZmlyc3RGcmVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGZpcnN0VmFyQXJn
OiBpbnQsCi0gICAgfSwKLSAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFy
cmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAotICAgIH0sCi0gICAg
dG1wczogewotICAgICAgICBhcmdDb3VudEluY2x1ZGluZ1RoaXM6IHVuc2lnbmVkCi0gICAgfSwK
LSAgICBjaGVja3BvaW50czogewotICAgICAgICBkZXRlcm1pbmluZ0FyZ0NvdW50OiBuaWwsCi0g
ICAgICAgIG1ha2VDYWxsOiBuaWwsCi0gICAgfQotCiBvcCA6cmV0LAogICAgIGFyZ3M6IHsKICAg
ICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Rml0cy5oCmluZGV4IDU3Nzg5YmMyYzY2Li44NzllMzdkNzFiOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRml0cy5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPFQsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8
c2l6ZW9mKFQpID09IHNpemUsIHN0ZDo6dHJ1ZV90eXBlPj4gewogICAgIHVzaW5nIFRhcmdldFR5
cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7CiAKLSAgICBzdGF0
aWMgYm9vbCBjaGVjayhUKSB7IHJldHVybiB0cnVlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGNoZWNrKFQpIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHN0YXRpYyBUYXJnZXRUeXBlIGNv
bnZlcnQoVCB0KSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VGFyZ2V0VHlwZT4odCk7IH0KIApAQCAt
NjQsNyArNjQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBPcGNvZGVTaXplIHNpemU+CiBzdHJ1
Y3QgRml0czxULCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZh
bHVlICYmIHNpemVvZihUKSAhPSBzaXplICYmICFzdGQ6OmlzX3NhbWU8Ym9vbCwgVD46OnZhbHVl
LCBzdGQ6OnRydWVfdHlwZT4+IHsKICAgICB1c2luZyBUYXJnZXRUeXBlID0gc3RkOjpjb25kaXRp
b25hbF90PHN0ZDo6aXNfdW5zaWduZWQ8VD46OnZhbHVlLCB0eXBlbmFtZSBUeXBlQnlTaXplPHNp
emU+Ojp1bnNpZ25lZFR5cGUsIHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnNpZ25lZFR5cGU+
OwogCi0gICAgc3RhdGljIGJvb2wgY2hlY2soVCB0KQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBjaGVjayhUIHQpCiAgICAgewogICAgICAgICByZXR1cm4gdCA+PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPFRhcmdldFR5cGU+OjptaW4oKSAmJiB0IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0
VHlwZT46Om1heCgpOwogICAgIH0KQEAgLTIyMiw3ICsyMjIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBFLCBPcGNvZGVTaXplIHNpemU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9p
Zl90PHNpemVvZihFKSAhPSBzaXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1
ZV90eXBlPj4gOiBwdWJsaWMgRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7
CiAgICAgdXNpbmcgQmFzZSA9IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47
CiAKLSAgICBzdGF0aWMgYm9vbCBjaGVjayhFIGUpIHsgcmV0dXJuIEJhc2U6OmNoZWNrKHN0YXRp
Y19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4+KGUpKTsgfQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBjaGVjayhFIGUpIHsgcmV0dXJuIEJhc2U6OmNoZWNrKHN0YXRpY19jYXN0PHN0
ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4+KGUpKTsgfQogCiAgICAgc3RhdGljIHR5cGVuYW1lIEJh
c2U6OlRhcmdldFR5cGUgY29udmVydChFIGUpCiAgICAgewpAQCAtMzI3LDQgKzMyNywxMiBAQCBz
dHJ1Y3QgRml0czxHZW5lcmljQm91bmRMYWJlbDxHZW5lcmF0b3JUcmFpdHM+LCBzaXplPiA6IHB1
YmxpYyBGaXRzPGludCwgc2l6ZT4gewogICAgIH0KIH07CiAKK3N0YXRpY19hc3NlcnQoRml0czxP
cGNvZGVJRCwgT3Bjb2RlU2l6ZTo6TmFycm93Pjo6Y2hlY2sob3Bfd2lkZTE2KSk7CitzdGF0aWNf
YXNzZXJ0KEZpdHM8T3Bjb2RlSUQsIE9wY29kZVNpemU6Ok5hcnJvdz46OmNoZWNrKG9wX3dpZGUz
MikpOworCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorc3RhdGljX2Fzc2VydChGaXRzPFdhc21P
cGNvZGVJRCwgT3Bjb2RlU2l6ZTo6TmFycm93Pjo6Y2hlY2sod2FzbV93aWRlMTYpKTsKK3N0YXRp
Y19hc3NlcnQoRml0czxXYXNtT3Bjb2RlSUQsIE9wY29kZVNpemU6Ok5hcnJvdz46OmNoZWNrKHdh
c21fd2lkZTMyKSk7CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IGUzMjIyMDVkZWU3Li45NTQxNjQ1MGE1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI2
MDAsOSArMjYwMCw5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlW
YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSCiAgICAgICAgIGlmIChjb250
ZXh0LmlzSW5kZXhlZEZvckluQ29udGV4dCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBpbmRleGVk
Q29udGV4dCA9IGNvbnRleHQuYXNJbmRleGVkRm9ySW5Db250ZXh0KCk7CiAgICAgICAgICAgICBr
aWxsKGRzdCk7Ci0gICAgICAgICAgICBpZiAoT3BHZXRCeVZhbDo6Y2hlY2tXaXRob3V0TWV0YWRh
dGFJRDxPcGNvZGVTaXplOjpOYXJyb3c+KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVydHkpKQorICAg
ICAgICAgICAgaWYgKE9wR2V0QnlWYWw6OmNoZWNrV2l0aG91dE1ldGFkYXRhSUQ8T3Bjb2RlU2l6
ZTo6TmFycm93Pihkc3QsIGJhc2UsIHByb3BlcnR5KSkKICAgICAgICAgICAgICAgICBPcEdldEJ5
VmFsOjplbWl0V2l0aFNtYWxsZXN0U2l6ZVJlcXVpcmVtZW50PE9wY29kZVNpemU6Ok5hcnJvdz4o
dGhpcywgZHN0LCBiYXNlLCBpbmRleGVkQ29udGV4dC5pbmRleCgpKTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKE9wR2V0QnlWYWw6OmNoZWNrV2l0aG91dE1ldGFkYXRhSUQ8T3Bjb2RlU2l6ZTo6V2lk
ZTE2Pih0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KSkKKyAgICAgICAgICAgIGVsc2UgaWYgKE9w
R2V0QnlWYWw6OmNoZWNrV2l0aG91dE1ldGFkYXRhSUQ8T3Bjb2RlU2l6ZTo6V2lkZTE2Pihkc3Qs
IGJhc2UsIHByb3BlcnR5KSkKICAgICAgICAgICAgICAgICBPcEdldEJ5VmFsOjplbWl0V2l0aFNt
YWxsZXN0U2l6ZVJlcXVpcmVtZW50PE9wY29kZVNpemU6OldpZGUxNj4odGhpcywgZHN0LCBiYXNl
LCBpbmRleGVkQ29udGV4dC5pbmRleCgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBPcEdldEJ5VmFsOjplbWl0PE9wY29kZVNpemU6OldpZGUzMj4odGhpcywgZHN0LCBiYXNl
LCBpbmRleGVkQ29udGV4dC5pbmRleCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9E
U0wucmIKaW5kZXggNGE4YjFlNTgxNDQuLjdhNzIwMzEzZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTUzLDYgKzE1Myw4IEBAIHZvaWQgZHVtcFdhc20oQnl0
ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGNvbnN0
IEluc3RyCiBFT0YKIAogICAgICAgICAgICAgdGVtcGxhdGUuYm9keSA9IDw8LUVPRgorI3tvcGNv
ZGVfZ3JvdXBzX2ZpbHRlciB7IHxzfCBzLmNvbmZpZ1s6ZW1pdF9pbl9zdHJ1Y3RzX2ZpbGVdIH0u
bWFwKCY6c3RydWN0KS5qb2luKCJcbiIpfQorCiAje29wY29kZXNfZmlsdGVyIHsgfHN8IHMuY29u
ZmlnWzplbWl0X2luX3N0cnVjdHNfZmlsZV0gJiYgIXMuaXNfd2FzbT8gfS5tYXAoJjpzdHJ1Y3Qp
LmpvaW4oIlxuIil9CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkBAIC0yMjYsNCArMjI4LDkg
QEAgRU9GCiAgICAgICAgIHNlY3Rpb25zID0gQHNlY3Rpb25zLnNlbGVjdCB7IHxzfCB5aWVsZCBz
IH0KICAgICAgICAgc2VjdGlvbnMubWFwKCY6b3Bjb2RlcykuZmxhdHRlbgogICAgIGVuZAorCisg
ICAgZGVmIHNlbGYub3Bjb2RlX2dyb3Vwc19maWx0ZXIKKyAgICAgICAgc2VjdGlvbnMgPSBAc2Vj
dGlvbnMuc2VsZWN0IHsgfHN8IHlpZWxkIHMgfQorICAgICAgICBzZWN0aW9ucy5tYXAoJjpvcGNv
ZGVfZ3JvdXBzKS5mbGF0dGVuCisgICAgZW5kCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdG9yL01ldGFkYXRhLnJiCmluZGV4IDdjZDE1ZDMxNWQ2Li5kZTlmYjQzMWJmZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCkBAIC02Niw3ICs2
Niw2IEBAIGNsYXNzIE1ldGFkYXRhCiAgICAgc3RydWN0IE1ldGFkYXRhIHsKICAgICAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTWV0YWRhdGEpOwogCi0gICAgcHVibGljOgogICAgICAgICBNZXRh
ZGF0YShjb25zdCAje29wLmNhcGl0YWxpemVkX25hbWV9JiN7IiBfX29wIiBpZiBpbml0c30pI3tp
bml0c30geyB9CiAKICN7ZmllbGRzfQpAQCAtMTAyLDcgKzEwMSw2IEBAIEVPRgogICAgICAgICBy
ZXR1cm4gaWYgZW1wdHk/CiAKICAgICAgICAgPDwtRU9GLmNob21wCi0KICAgICAgICAgYXV0byAj
e2VtaXR0ZXJfbG9jYWwubmFtZX0gPSBnZW4tPmFkZE1ldGFkYXRhRm9yKG9wY29kZUlEKTsKICAg
ICAgICAgRU9GCiAgICAgZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL09wY29kZS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvT3Bjb2Rl
LnJiCmluZGV4IDgyMzc0YjdmYmU4Li5mYzI0YTc2NjNlNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9PcGNvZGUucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9PcGNvZGUucmIKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgT3Bjb2RlCiAg
ICAgICAgIHRpZAogICAgIGVuZAogCi0gICAgZGVmIGluaXRpYWxpemUoc2VjdGlvbiwgbmFtZSwg
ZXh0cmFzLCBhcmdzLCBtZXRhZGF0YSwgbWV0YWRhdGFfaW5pdGlhbGl6ZXJzLCB0bXBzLCBjaGVj
a3BvaW50cykKKyAgICBkZWYgaW5pdGlhbGl6ZShzZWN0aW9uLCBuYW1lLCBleHRyYXMsIGFyZ3Ms
IG1ldGFkYXRhLCBtZXRhZGF0YV9pbml0aWFsaXplcnMsIHRtcHMsIGNoZWNrcG9pbnRzLCBvcGNv
ZGVfZ3JvdXApCiAgICAgICAgIEBzZWN0aW9uID0gc2VjdGlvbgogICAgICAgICBAbmFtZSA9IG5h
bWUKICAgICAgICAgQGV4dHJhcyA9IGV4dHJhcyB8fCB7fQpAQCAtNTQsNiArNTQsOSBAQCBjbGFz
cyBPcGNvZGUKICAgICAgICAgQGFyZ3MgPSBhcmdzLm1hcC53aXRoX2luZGV4IHsgfChhcmdfbmFt
ZSwgdHlwZSksIGluZGV4fCBBcmd1bWVudC5uZXcgYXJnX25hbWUsIHR5cGUsIGluZGV4IH0gdW5s
ZXNzIGFyZ3MubmlsPwogICAgICAgICBAdG1wcyA9IHRtcHMKICAgICAgICAgQGNoZWNrcG9pbnRz
ID0gY2hlY2twb2ludHMubWFwIHsgfChjaGVja3BvaW50LCBfKXwgY2hlY2twb2ludCB9IHVubGVz
cyBjaGVja3BvaW50cy5uaWw/CisgICAgICAgIEBvcGNvZGVfZ3JvdXAgPSBvcGNvZGVfZ3JvdXAK
KyAgICAgICAgQG9wX3dpZGUxNiA9IEFyZ3VtZW50Lm5ldyh3aWRlMTYsIG9wY29kZUlEVHlwZSwg
MCkKKyAgICAgICAgQG9wX3dpZGUzMiA9IEFyZ3VtZW50Lm5ldyh3aWRlMzIsIG9wY29kZUlEVHlw
ZSwgMCkKICAgICBlbmQKIAogICAgIGRlZiBjcmVhdGVfaWQhCkBAIC03NywxNiArODAsMjEgQEAg
Y2xhc3MgT3Bjb2RlCiAgICAgZGVmIHR5cGVkX2FyZ3MKICAgICAgICAgcmV0dXJuIGlmIEBhcmdz
Lm5pbD8KIAorICAgICAgICBAYXJncy5tYXAoJjpjcmVhdGVfcGFyYW0pLmpvaW4oIiwgIikKKyAg
ICBlbmQKKyAgICBkZWYgdHlwZWRfYXJnc193aXRoX2NvbW1hCisgICAgICAgIHJldHVybiBpZiBA
YXJncy5uaWw/CisKICAgICAgICAgQGFyZ3MubWFwKCY6Y3JlYXRlX3BhcmFtKS51bnNoaWZ0KCIi
KS5qb2luKCIsICIpCiAgICAgZW5kCiAKLSAgICBkZWYgdHlwZWRfcmVmZXJlbmNlX2FyZ3MKKyAg
ICBkZWYgdHlwZWRfcmVmZXJlbmNlX2FyZ3Nfd2l0aF9jb21tYQogICAgICAgICByZXR1cm4gaWYg
QGFyZ3MubmlsPwogCiAgICAgICAgIEBhcmdzLm1hcCgmOmNyZWF0ZV9yZWZlcmVuY2VfcGFyYW0p
LnVuc2hpZnQoIiIpLmpvaW4oIiwgIikKICAgICBlbmQKIAotICAgIGRlZiB1bnR5cGVkX2FyZ3MK
KyAgICBkZWYgdW50eXBlZF9hcmdzX3dpdGhfY29tbWEKICAgICAgICAgcmV0dXJuIGlmIEBhcmdz
Lm5pbD8KIAogICAgICAgICBAYXJncy5tYXAoJjpuYW1lKS51bnNoaWZ0KCIiKS5qb2luKCIsICIp
CkBAIC0xMjgsMjAgKzEzNiwzNCBAQCBjbGFzcyBPcGNvZGUKIAogICAgIGRlZiBzdHJ1Y3QKICAg
ICAgICAgPDwtRU9GCi1zdHJ1Y3QgI3tjYXBpdGFsaXplZF9uYW1lfSA6IHB1YmxpYyBJbnN0cnVj
dGlvbiB7CitzdHJ1Y3QgI3tjYXBpdGFsaXplZF9uYW1lfSA6IHB1YmxpYyAje2Jhc2VDbGFzc30g
ewogICAgICN7b3Bjb2RlSUR9CiAgICAgI3t0ZW1wc30KICAgICAje2NoZWNrcG9pbnRWYWx1ZXN9
Ci0KICN7ZW1pdHRlcn0KLSN7ZHVtcGVyfQorI3tpZiBAb3Bjb2RlX2dyb3VwLm5pbD8KKzw8LUVP
Ri5jaG9tcAorcHJpdmF0ZToKKyN7ZW1pdF9pbXBsfQorI3tjaGVja19pbXBsfQorcHVibGljOgor
RU9GCitlbmR9CiAje2NvbnN0cnVjdG9yc30KKyN7ZGVjb2RlfQogI3tzZXR0ZXJzfSN7bWV0YWRh
dGFfc3RydWN0X2FuZF9hY2Nlc3Nvcn0KLSN7bWVtYmVyc30KLX07Cisje21lbWJlcnN9fTsKIEVP
RgogICAgIGVuZAogCisgICAgZGVmIGJhc2VDbGFzcworICAgICAgICBpZiBAb3Bjb2RlX2dyb3Vw
CisgICAgICAgICAgICBAb3Bjb2RlX2dyb3VwLm5hbWUKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgIkluc3RydWN0aW9uIgorICAgICAgICBlbmQKKyAgICBlbmQKKwogICAgIGRlZiBvcGNvZGVJ
RAogICAgICAgICAic3RhdGljIGNvbnN0ZXhwciAje29wY29kZUlEVHlwZX0gb3Bjb2RlSUQgPSAj
e25hbWV9OyIKICAgICBlbmQKQEAgLTE1OCwxMTQgKzE4MCwxMDggQEAgRU9GCiAgICAgICAgIFsi
ZW51bSBUbXBzIDogdWludDhfdCB7Il0uY29uY2F0KEB0bXBzLm1hcCB7fCh0bXAsIHR5cGUpfCAi
ICAgICAgICAje3RtcH0sIn0pLnB1c2goIiAgICB9OyIpLmpvaW4oIlxuIikKICAgICBlbmQKIAor
ICAgIGRlZiBtZXRhZGF0YV9wYXJhbQorICAgICAgICBAbWV0YWRhdGEuZW1wdHk/ID8gIiIgOiAi
LCAje0BtZXRhZGF0YS5lbWl0dGVyX2xvY2FsLmNyZWF0ZV9wYXJhbX0iCisgICAgZW5kCisKKyAg
ICBkZWYgbWV0YWRhdGFfYXJnCisgICAgICAgIEBtZXRhZGF0YS5lbXB0eT8gPyAiIiA6ICIsICN7
QG1ldGFkYXRhLmVtaXR0ZXJfbG9jYWwubmFtZX0iCisgICAgZW5kCisKICAgICBkZWYgZW1pdHRl
cgotICAgICAgICBvcF93aWRlMTYgPSBBcmd1bWVudC5uZXcod2lkZTE2LCBvcGNvZGVJRFR5cGUs
IDApCi0gICAgICAgIG9wX3dpZGUzMiA9IEFyZ3VtZW50Lm5ldyh3aWRlMzIsIG9wY29kZUlEVHlw
ZSwgMCkKLSAgICAgICAgbWV0YWRhdGFfcGFyYW0gPSBAbWV0YWRhdGEuZW1wdHk/ID8gIiIgOiAi
LCAje0BtZXRhZGF0YS5lbWl0dGVyX2xvY2FsLmNyZWF0ZV9wYXJhbX0iCi0gICAgICAgIG1ldGFk
YXRhX2FyZyA9IEBtZXRhZGF0YS5lbXB0eT8gPyAiIiA6ICIsICN7QG1ldGFkYXRhLmVtaXR0ZXJf
bG9jYWwubmFtZX0iCi0gICAgICAgIDw8LUVPRi5jaG9tcAorICAgICAgICA8PC1FT0YKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZUdlbmVyYXRvcj4KLSAgICBzdGF0aWMgdm9pZCBlbWl0
KEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4je3R5cGVkX2FyZ3N9KQorICAgIHN0YXRpYyB2b2lkIGVt
aXQoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc193aXRoX2NvbW1hfSkKICAgICB7
Ci0gICAgICAgIGVtaXRXaXRoU21hbGxlc3RTaXplUmVxdWlyZW1lbnQ8T3Bjb2RlU2l6ZTo6TmFy
cm93LCBCeXRlY29kZUdlbmVyYXRvcj4oZ2VuI3t1bnR5cGVkX2FyZ3N9KTsKKyAgICAgICAgZW1p
dFdpdGhTbWFsbGVzdFNpemVSZXF1aXJlbWVudDxPcGNvZGVTaXplOjpOYXJyb3csIEJ5dGVjb2Rl
R2VuZXJhdG9yPihnZW4je3VudHlwZWRfYXJnc193aXRoX2NvbW1hfSk7CiAgICAgfQogI3slewog
ICAgIHRlbXBsYXRlPE9wY29kZVNpemUgX19zaXplLCB0eXBlbmFtZSBCeXRlY29kZUdlbmVyYXRv
ciwgRml0c0Fzc2VydGlvbiBzaG91bGRBc3NlcnQgPSBBc3NlcnQ+Ci0gICAgc3RhdGljIGJvb2wg
ZW1pdChCeXRlY29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzfSkKKyAgICBzdGF0aWMgYm9v
bCBlbWl0KEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4je3R5cGVkX2FyZ3Nfd2l0aF9jb21tYX0pCiAg
ICAgeyN7QG1ldGFkYXRhLmNyZWF0ZV9lbWl0dGVyX2xvY2FsfQotICAgICAgICByZXR1cm4gZW1p
dDxfX3NpemUsIEJ5dGVjb2RlR2VuZXJhdG9yLCBzaG91bGRBc3NlcnQ+KGdlbiN7dW50eXBlZF9h
cmdzfSN7bWV0YWRhdGFfYXJnfSk7CisgICAgICAgIHJldHVybiBlbWl0PF9fc2l6ZSwgQnl0ZWNv
ZGVHZW5lcmF0b3IsIHNob3VsZEFzc2VydD4oZ2VuI3t1bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYX0j
e21ldGFkYXRhX2FyZ30pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPE9wY29kZVNpemUgX19zaXpl
LCB0eXBlbmFtZSBCeXRlY29kZUdlbmVyYXRvcj4KLSAgICBzdGF0aWMgYm9vbCBjaGVja1dpdGhv
dXRNZXRhZGF0YUlEKEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4je3R5cGVkX2FyZ3N9KQorICAgIHRl
bXBsYXRlPE9wY29kZVNpemUgX19zaXplPgorICAgIHN0YXRpYyBib29sIGNoZWNrV2l0aG91dE1l
dGFkYXRhSUQoI3t0eXBlZF9hcmdzfSkKICAgICB7Ci0gICAgICAgIGRlY2x0eXBlKGdlbi0+YWRk
TWV0YWRhdGFGb3Iob3Bjb2RlSUQpKSBfX21ldGFkYXRhSUQgeyB9OwotICAgICAgICByZXR1cm4g
Y2hlY2tJbXBsPF9fc2l6ZSwgQnl0ZWNvZGVHZW5lcmF0b3I+KGdlbiN7dW50eXBlZF9hcmdzfSN7
bWV0YWRhdGFfYXJnfSk7CisgICAgICAgIHVuc2lnbmVkIF9fbWV0YWRhdGFJRCA9IDA7CisgICAg
ICAgIHJldHVybiBjaGVja0ltcGw8X19zaXplPihvcGNvZGVJRCN7dW50eXBlZF9hcmdzX3dpdGhf
Y29tbWF9I3ttZXRhZGF0YV9hcmd9KTsKICAgICB9CiB9IHVubGVzcyBAbWV0YWRhdGEuZW1wdHk/
fQotICAgIHRlbXBsYXRlPE9wY29kZVNpemUgX19zaXplLCB0eXBlbmFtZSBCeXRlY29kZUdlbmVy
YXRvciwgRml0c0Fzc2VydGlvbiBzaG91bGRBc3NlcnQgPSBBc3NlcnQsIGJvb2wgcmVjb3JkT3Bj
b2RlID0gdHJ1ZT4KLSAgICBzdGF0aWMgYm9vbCBlbWl0KEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4j
e3R5cGVkX2FyZ3N9I3ttZXRhZGF0YV9wYXJhbX0pCisgICAgdGVtcGxhdGU8T3Bjb2RlU2l6ZSBf
X3NpemUsIHR5cGVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yLCBGaXRzQXNzZXJ0aW9uIHNob3VsZEFz
c2VydCA9IEFzc2VydD4KKyAgICBzdGF0aWMgYm9vbCBlbWl0KEJ5dGVjb2RlR2VuZXJhdG9yKiBn
ZW4je3R5cGVkX2FyZ3Nfd2l0aF9jb21tYX0je21ldGFkYXRhX3BhcmFtfSkKICAgICB7Ci0gICAg
ICAgIGJvb2wgZGlkRW1pdCA9IGVtaXRJbXBsPF9fc2l6ZSwgcmVjb3JkT3Bjb2RlLCBCeXRlY29k
ZUdlbmVyYXRvcj4oZ2VuI3t1bnR5cGVkX2FyZ3N9I3ttZXRhZGF0YV9hcmd9KTsKKyAgICAgICAg
Ym9vbCBkaWRFbWl0ID0gZW1pdEltcGw8X19zaXplLCBCeXRlY29kZUdlbmVyYXRvcj4oZ2VuLCBv
cGNvZGVJRCN7dW50eXBlZF9hcmdzX3dpdGhfY29tbWF9I3ttZXRhZGF0YV9hcmd9KTsKICAgICAg
ICAgaWYgKHNob3VsZEFzc2VydCA9PSBBc3NlcnQpCiAgICAgICAgICAgICBBU1NFUlQoZGlkRW1p
dCk7CiAgICAgICAgIHJldHVybiBkaWRFbWl0OwogICAgIH0KIAogICAgIHRlbXBsYXRlPE9wY29k
ZVNpemUgX19zaXplLCB0eXBlbmFtZSBCeXRlY29kZUdlbmVyYXRvcj4KLSAgICBzdGF0aWMgdm9p
ZCBlbWl0V2l0aFNtYWxsZXN0U2l6ZVJlcXVpcmVtZW50KEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4j
e3R5cGVkX2FyZ3N9KQorICAgIHN0YXRpYyB2b2lkIGVtaXRXaXRoU21hbGxlc3RTaXplUmVxdWly
ZW1lbnQoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc193aXRoX2NvbW1hfSkKICAg
ICB7Ci0gICAgICAgICN7QG1ldGFkYXRhLmNyZWF0ZV9lbWl0dGVyX2xvY2FsfQorI3tAbWV0YWRh
dGEuY3JlYXRlX2VtaXR0ZXJfbG9jYWx9CiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oX19zaXplKSA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oT3Bjb2RlU2l6ZTo6TmFycm93KSkg
ewotICAgICAgICAgICAgaWYgKGVtaXQ8T3Bjb2RlU2l6ZTo6TmFycm93LCBCeXRlY29kZUdlbmVy
YXRvciwgTm9Bc3NlcnQsIHRydWU+KGdlbiN7dW50eXBlZF9hcmdzfSN7bWV0YWRhdGFfYXJnfSkp
CisgICAgICAgICAgICBpZiAoZW1pdDxPcGNvZGVTaXplOjpOYXJyb3csIEJ5dGVjb2RlR2VuZXJh
dG9yLCBOb0Fzc2VydD4oZ2VuI3t1bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYX0je21ldGFkYXRhX2Fy
Z30pKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KF9fc2l6ZSkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE9wY29k
ZVNpemU6OldpZGUxNikpIHsKLSAgICAgICAgICAgIGlmIChlbWl0PE9wY29kZVNpemU6OldpZGUx
NiwgQnl0ZWNvZGVHZW5lcmF0b3IsIE5vQXNzZXJ0LCB0cnVlPihnZW4je3VudHlwZWRfYXJnc30j
e21ldGFkYXRhX2FyZ30pKQorICAgICAgICAgICAgaWYgKGVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZTE2
LCBCeXRlY29kZUdlbmVyYXRvciwgTm9Bc3NlcnQ+KGdlbiN7dW50eXBlZF9hcmdzX3dpdGhfY29t
bWF9I3ttZXRhZGF0YV9hcmd9KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LSAgICAgICAgZW1pdDxPcGNvZGVTaXplOjpXaWRlMzIsIEJ5dGVjb2RlR2VuZXJhdG9yLCBBc3Nl
cnQsIHRydWU+KGdlbiN7dW50eXBlZF9hcmdzfSN7bWV0YWRhdGFfYXJnfSk7CisgICAgICAgIGVt
aXQ8T3Bjb2RlU2l6ZTo6V2lkZTMyLCBCeXRlY29kZUdlbmVyYXRvciwgQXNzZXJ0PihnZW4je3Vu
dHlwZWRfYXJnc193aXRoX2NvbW1hfSN7bWV0YWRhdGFfYXJnfSk7CiAgICAgfQorRU9GCisgICAg
ZW5kCiAKLXByaXZhdGU6CisgICAgZGVmIGVtaXRfaW1wbAorICAgICAgICA8PC1FT0YKICAgICB0
ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6ZSwgdHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3I+Ci0g
ICAgc3RhdGljIGJvb2wgY2hlY2tJbXBsKEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4je3R5cGVkX3Jl
ZmVyZW5jZV9hcmdzfSN7bWV0YWRhdGFfcGFyYW19KQorICAgIHN0YXRpYyBib29sIGVtaXRJbXBs
KEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4sICN7b3Bjb2RlSURUeXBlfSBvcGNvZGVJRCN7dHlwZWRf
YXJnc193aXRoX2NvbW1hfSN7bWV0YWRhdGFfcGFyYW19KQogICAgIHsKLSAgICAgICAgVU5VU0VE
X1BBUkFNKGdlbik7Ci0jaWYgT1MoV0lORE9XUykgJiYgRU5BQkxFKENfTE9PUCkKLSAgICAgICAg
Ly8gRklYTUU6IERpc2FibGUgd2lkZTE2IG9wdGltaXphdGlvbiBmb3IgV2luZG93cyBDTG9vcAot
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4Mjgz
Ci0gICAgICAgIGlmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTE2KQorICAgICAgICBpZiAo
IWNoZWNrSW1wbDxfX3NpemU+KG9wY29kZUlEI3t1bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYX0je21l
dGFkYXRhX2FyZ30pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0gICAgICAg
IHJldHVybiAje21hcF9maWVsZHNfd2l0aF9zaXplKCIiLCAiX19zaXplIiwgJjpmaXRzX2NoZWNr
KS5qb2luICJcbiAgICAgICAgICAgICYmICJ9Ci0gICAgICAgICAgICAmJiAoX19zaXplID09IE9w
Y29kZVNpemU6OldpZGUxNiA/ICN7b3Bfd2lkZTE2LmZpdHNfY2hlY2soU2l6ZTo6TmFycm93KX0g
OiB0cnVlKQotICAgICAgICAgICAgJiYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpXaWRlMzIgPyAj
e29wX3dpZGUzMi5maXRzX2NoZWNrKFNpemU6Ok5hcnJvdyl9IDogdHJ1ZSk7Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGU8T3Bjb2RlU2l6ZSBfX3NpemUsIGJvb2wgcmVjb3JkT3Bjb2RlLCB0eXBlbmFt
ZSBCeXRlY29kZUdlbmVyYXRvcj4KLSAgICBzdGF0aWMgYm9vbCBlbWl0SW1wbChCeXRlY29kZUdl
bmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzfSN7bWV0YWRhdGFfcGFyYW19KQotICAgIHsKLSAgICAg
ICAgI3shQGNoZWNrcG9pbnRzLm5pbD8gPyAiZ2VuLT5zZXRVc2VzQ2hlY2twb2ludHMoKTsiIDog
IiJ9CisgICAgICAgICN7Imdlbi0+c2V0VXNlc0NoZWNrcG9pbnRzKCk7IiB1bmxlc3MgQGNoZWNr
cG9pbnRzLm5pbD99CiAgICAgICAgIGlmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTE2KQog
ICAgICAgICAgICAgZ2VuLT5hbGlnbldpZGVPcGNvZGUxNigpOwogICAgICAgICBlbHNlIGlmIChf
X3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTMyKQogICAgICAgICAgICAgZ2VuLT5hbGlnbldpZGVP
cGNvZGUzMigpOwotICAgICAgICBpZiAoY2hlY2tJbXBsPF9fc2l6ZT4oZ2VuI3t1bnR5cGVkX2Fy
Z3N9I3ttZXRhZGF0YV9hcmd9KSkgewotICAgICAgICAgICAgaWYgKHJlY29yZE9wY29kZSkKLSAg
ICAgICAgICAgICAgICBnZW4tPnJlY29yZE9wY29kZShvcGNvZGVJRCk7Ci0gICAgICAgICAgICBp
ZiAoX19zaXplID09IE9wY29kZVNpemU6OldpZGUxNikKLSAgICAgICAgICAgICAgICAje29wX3dp
ZGUxNi5maXRzX3dyaXRlIFNpemU6Ok5hcnJvd30KLSAgICAgICAgICAgIGVsc2UgaWYgKF9fc2l6
ZSA9PSBPcGNvZGVTaXplOjpXaWRlMzIpCi0gICAgICAgICAgICAgICAgI3tvcF93aWRlMzIuZml0
c193cml0ZSBTaXplOjpOYXJyb3d9Ci0gICAgICAgICAgICAje0FyZ3VtZW50Lm5ldygib3Bjb2Rl
SUQiLCBvcGNvZGVJRFR5cGUsIDApLmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93fQotI3ttYXBfb3Bl
cmFuZHNfd2l0aF9zaXplKCIgICAgICAgICAgICAiLCAiX19zaXplIiwgJjpmaXRzX3dyaXRlKS5q
b2luICJcbiJ9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGdlbi0+cmVjb3JkT3Bjb2RlKG9wY29kZUlEKTsKKyAgICAg
ICAgaWYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpXaWRlMTYpCisgICAgICAgICAgICAje0BvcF93
aWRlMTYuZml0c193cml0ZSBTaXplOjpOYXJyb3d9CisgICAgICAgIGVsc2UgaWYgKF9fc2l6ZSA9
PSBPcGNvZGVTaXplOjpXaWRlMzIpCisgICAgICAgICAgICAje0BvcF93aWRlMzIuZml0c193cml0
ZSBTaXplOjpOYXJyb3d9CisgICAgICAgICN7QXJndW1lbnQubmV3KCJvcGNvZGVJRCIsIG9wY29k
ZUlEVHlwZSwgMCkuZml0c193cml0ZSBTaXplOjpOYXJyb3d9Cisje21hcF9vcGVyYW5kc193aXRo
X3NpemUoIiAgICAgICAgIiwgIl9fc2l6ZSIsICY6Zml0c193cml0ZSkuam9pbiAiXG4ifQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0KLXB1YmxpYzoKIEVPRgogICAgIGVuZAogCi0gICAg
ZGVmIGR1bXBlcgorICAgIGRlZiBjaGVja19pbXBsCiAgICAgICAgIDw8LUVPRgotICAgIHZvaWQg
ZHVtcChCeXRlY29kZUR1bXBlckJhc2UqIGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCBfX2xvY2F0aW9uLCBpbnQgX19zaXplU2hpZnRBbW91bnQpCisgICAgdGVtcGxhdGU8T3Bjb2Rl
U2l6ZSBfX3NpemU+CisgICAgc3RhdGljIGJvb2wgY2hlY2tJbXBsKCN7b3Bjb2RlSURUeXBlfSBv
cGNvZGVJRCN7dHlwZWRfcmVmZXJlbmNlX2FyZ3Nfd2l0aF9jb21tYX0je21ldGFkYXRhX3BhcmFt
fSkKICAgICB7Ci0gICAgICAgIGR1bXBlci0+cHJpbnRMb2NhdGlvbkFuZE9wKF9fbG9jYXRpb24s
ICYiKioje0BuYW1lfSJbMiAtIF9fc2l6ZVNoaWZ0QW1vdW50XSk7Ci0je3ByaW50X2FyZ3MgeyB8
YXJnfAotPDwtRU9GLmNob21wCi0gICAgICAgIGR1bXBlci0+ZHVtcE9wZXJhbmQoI3thcmcuZmll
bGRfbmFtZX0sICN7YXJnLmluZGV4ID09IDB9KTsKLUVPRgotICAgIH19CisjaWYgT1MoV0lORE9X
UykgJiYgRU5BQkxFKENfTE9PUCkKKyAgICAgICAgLy8gRklYTUU6IERpc2FibGUgd2lkZTE2IG9w
dGltaXphdGlvbiBmb3IgV2luZG93cyBDTG9vcAorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MjgzCisgICAgICAgIGlmIChfX3NpemUgPT0gT3Bj
b2RlU2l6ZTo6V2lkZTE2KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAg
ICAgIHJldHVybiAje21hcF9maWVsZHNfd2l0aF9zaXplKCIiLCAiX19zaXplIiwgJjpmaXRzX2No
ZWNrKS5qb2luICJcbiAgICAgICAgICAgICYmICJ9OwogICAgIH0KIEVPRgogICAgIGVuZAogCiAg
ICAgZGVmIGNvbnN0cnVjdG9ycwotICAgICAgICBmaWVsZHMgPSAoQGFyZ3MgfHwgW10pICsgKEBt
ZXRhZGF0YS5lbXB0eT8gPyBbXSA6IFtAbWV0YWRhdGFdKQotICAgICAgICBpbml0ID0gLT4oc2l6
ZSkgeyBmaWVsZHMuZW1wdHk/ICA/ICIiIDogIjogI3tmaWVsZHMubWFwLndpdGhfaW5kZXggeyB8
YXJnLCBpfCBhcmcubG9hZF9mcm9tX3N0cmVhbShpLCBzaXplKSB9LmpvaW4gIlxuICAgICAgICAs
ICIgfSIgfQorICAgICAgICBpZiBAb3Bjb2RlX2dyb3VwLm5pbD8KKyAgICAgICAgICAgIGZpZWxk
cyA9IChAYXJncyB8fCBbXSkgKyAoQG1ldGFkYXRhLmVtcHR5PyA/IFtdIDogW0BtZXRhZGF0YV0p
CisgICAgICAgICAgICBpbml0ID0gLT4oc2l6ZSkgeyBmaWVsZHMuZW1wdHk/ICA/ICIiIDogIjog
I3tmaWVsZHMubWFwLndpdGhfaW5kZXggeyB8YXJnLCBpfCBhcmcubG9hZF9mcm9tX3N0cmVhbShp
LCBzaXplKSB9LmpvaW4gIlxuICAgICAgICAsICIgfSIgfQorICAgICAgICBlbHNlCisgICAgICAg
ICAgICBpbml0ID0gLT4oc2l6ZSkgeyAiOiAje0BvcGNvZGVfZ3JvdXAubmFtZX0oc3RyZWFtKSIg
fQorICAgICAgICBlbmQKIAogICAgICAgICA8PC1FT0YKICAgICAje2NhcGl0YWxpemVkX25hbWV9
KGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSkKQEAgLTI4MCwxMyArMjk2LDE2IEBAIEVPRgogICAgICAg
ICBBU1NFUlRfVU5VU0VEKHN0cmVhbSwgYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJl
YW0pWy0xXSA9PSBvcGNvZGVJRCk7CiAgICAgfQogCi0KICAgICAje2NhcGl0YWxpemVkX25hbWV9
KGNvbnN0IHVpbnQzMl90KiBzdHJlYW0pCiAgICAgICAgICN7aW5pdC5jYWxsKCJPcGNvZGVTaXpl
OjpXaWRlMzIiKX0KICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtLCBiaXR3aXNl
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmVhbSlbLTFdID09IG9wY29kZUlEKTsKICAgICB9CitF
T0YKKyAgICBlbmQKIAorICAgIGRlZiBkZWNvZGUKKyAgICAgICAgPDwtRU9GCiAgICAgc3RhdGlj
ICN7Y2FwaXRhbGl6ZWRfbmFtZX0gZGVjb2RlKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSkKICAgICB7
CiAgICAgICAgIC8vIEEgcG9pbnRlciBpcyBwb2ludGluZyB0byB0aGUgZmlyc3Qgb3BlcmFuZCAo
b3Bjb2RlIGFuZCBwcmVmaXggYXJlIG5vdCBpbmNsdWRlZCkuCkBAIC0zMDAsNyArMzE5LDcgQEAg
RU9GCiAgICAgZW5kCiAKICAgICBkZWYgc2V0dGVycwotICAgICAgICBwcmludF9hcmdzIHsgfGF8
IGEuc2V0dGVyKHRyYWl0cykgfQorICAgICAgICBwcmludF9hcmdzIHsgfGF8IGEuc2V0dGVyKHRy
YWl0cykgfSBpZiBAb3Bjb2RlX2dyb3VwLm5pbD8KICAgICBlbmQKIAogICAgIGRlZiBtZXRhZGF0
YV9zdHJ1Y3RfYW5kX2FjY2Vzc29yCkBAIC0zMTAsOSArMzI5LDE0IEBAIEVPRgogICAgIGVuZAog
CiAgICAgZGVmIG1lbWJlcnMKLSAgICAgICAgPDwtRU9GLmNob21wCisgICAgICAgIGlmIEBvcGNv
ZGVfZ3JvdXAubmlsPworICAgICAgICAgICAgPDwtRU9GCisgICAgZnJpZW5kIHZvaWQgZHVtcCN7
QHNlY3Rpb24uaXNfd2FzbT8gPyAiV2FzbSIgOiAiQnl0ZWNvZGUifShCeXRlY29kZUR1bXBlckJh
c2UqIGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBfX2xvY2F0aW9uLCBjb25zdCBJ
bnN0cnVjdGlvbiogX19pbnN0cnVjdGlvbik7CiAje3ByaW50X21lbWJlcnMoIiAgICAiLCAmOmZp
ZWxkKX0je0BtZXRhZGF0YS5maWVsZCgiICAgICIpfQogRU9GCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICIiCisgICAgICAgIGVuZAogICAgIGVuZAogCiAgICAgZGVmIHNldF9lbnRyeV9hZGRy
ZXNzKGlkKQpAQCAtMzUzLDIxICszNzcsMzYgQEAgRU9GCiAgICAgZW5kCiAKICAgICBkZWYgc2Vs
Zi5kdW1wX2J5dGVjb2RlKG5hbWUsIG9wY29kZV90cmFpdHMsIG9wY29kZXMpCi0gICAgICAgIDw8
LUVPRi5jaG9tcAorICAgICAgICA8PC1GVUxMLmNob21wCiB2b2lkIGR1bXAje25hbWV9KEJ5dGVj
b2RlRHVtcGVyQmFzZSogZHVtcGVyLCBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IF9fbG9jYXRp
b24sIGNvbnN0IEluc3RydWN0aW9uKiBfX2luc3RydWN0aW9uKQogeworICAgIGludCBzaXplU2hp
ZnRBbW91bnQgPSBfX2luc3RydWN0aW9uLT5zaXplU2hpZnRBbW91bnQ8I3tvcGNvZGVfdHJhaXRz
fT4oKTsKICAgICBzd2l0Y2ggKF9faW5zdHJ1Y3Rpb24tPm9wY29kZUlEPCN7b3Bjb2RlX3RyYWl0
c30+KCkpIHsKICN7b3Bjb2Rlcy5tYXAgeyB8b3B8Ci0gICAgICAgIDw8LUVPRi5jaG9tcAorICAg
IGlmIG9wLmFyZ3MubmlsPworICAgICAgICA8PC1DQVNFLmNob21wCiAgICAgY2FzZSAje29wLm5h
bWV9OgotICAgICAgICBfX2luc3RydWN0aW9uLT5hczwje29wLmNhcGl0YWxpemVkX25hbWV9LCAj
e29wY29kZV90cmFpdHN9PigpLmR1bXAoZHVtcGVyLCBfX2xvY2F0aW9uLCBfX2luc3RydWN0aW9u
LT5zaXplU2hpZnRBbW91bnQ8I3tvcGNvZGVfdHJhaXRzfT4oKSk7CisgICAgICAgIGR1bXBlci0+
cHJpbnRMb2NhdGlvbkFuZE9wKF9fbG9jYXRpb24sICYiKioje29wLnVucHJlZml4ZWRfbmFtZX0i
WzIgLSBzaXplU2hpZnRBbW91bnRdKTsKICAgICAgICAgYnJlYWs7Ci1FT0YKLSAgICB9LmpvaW4g
IlxuIn0KK0NBU0UKKyAgICBlbHNlCisgICAgICAgIDw8LUNBU0UuY2hvbXAKKyAgICBjYXNlICN7
b3AubmFtZX06IHsKKyAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IF9faW5zdHJ1Y3Rpb24tPmFz
PCN7b3AuY2FwaXRhbGl6ZWRfbmFtZX0sICN7b3Bjb2RlX3RyYWl0c30+KCk7CisgICAgICAgIGR1
bXBlci0+cHJpbnRMb2NhdGlvbkFuZE9wKF9fbG9jYXRpb24sICYiKioje29wLnVucHJlZml4ZWRf
bmFtZX0iWzIgLSBzaXplU2hpZnRBbW91bnRdKTsKKyN7b3AucHJpbnRfYXJncyB7IHxhcmd8Cisg
ICAgICAgICAgICA8PC1BUkcuY2hvbXAKKyAgICAgICAgZHVtcGVyLT5kdW1wT3BlcmFuZChpbnN0
cnVjdGlvbi4je2FyZy5maWVsZF9uYW1lfSwgI3thcmcuaW5kZXggPT0gMH0pOworQVJHCisgICAg
ICAgIH19CisgICAgICAgIGJyZWFrOworICAgIH0KK0NBU0UKKyAgICBlbmR9LmpvaW4gIlxuIn0K
ICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9Ci1F
T0YKK0ZVTEwKICAgICBlbmQKIGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9PcGNvZGVHcm91cC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvT3Bjb2RlR3JvdXAucmIKaW5kZXggOGVjMmEyM2NmNDguLjI1YWY1YTc2ZmI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZUdyb3VwLnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvT3Bjb2RlR3JvdXAucmIKQEAgLTI4LDEw
ICsyOCw2MyBAQCBjbGFzcyBPcGNvZGVHcm91cAogICAgIGF0dHJfcmVhZGVyIDpvcGNvZGVzCiAg
ICAgYXR0cl9yZWFkZXIgOmNvbmZpZwogCi0gICAgZGVmIGluaXRpYWxpemUoc2VjdGlvbiwgZGVz
Yywgb3Bjb2RlcywgY29uZmlnKQorICAgIGRlZiBpbml0aWFsaXplKHNlY3Rpb24sIG5hbWUsIG9w
Y29kZXMsIGNvbmZpZykKICAgICAgICAgQHNlY3Rpb24gPSBzZWN0aW9uCiAgICAgICAgIEBuYW1l
ID0gbmFtZQogICAgICAgICBAb3Bjb2RlcyA9IG9wY29kZXMKICAgICAgICAgQGNvbmZpZyA9IGNv
bmZpZworICAgICAgICBAbWV0YWRhdGEgPSBNZXRhZGF0YS5uZXcgY29uZmlnWzptZXRhZGF0YV0s
IGNvbmZpZ1s6bWV0YWRhdGFfaW5pdGlhbGl6ZXJzXQorICAgICAgICBAYXJncyA9IGNvbmZpZ1s6
YXJnc10ubWFwLndpdGhfaW5kZXggeyB8KGFyZ19uYW1lLCB0eXBlKSwgaW5kZXh8IEFyZ3VtZW50
Lm5ldyBhcmdfbmFtZSwgdHlwZSwgaW5kZXggfSB1bmxlc3MgY29uZmlnWzphcmdzXS5uaWw/Cisg
ICAgICAgIEBmYWtlX29wY29kZSA9IE9wY29kZS5uZXcoc2VjdGlvbiwgbmFtZSwgY29uZmlnWzpl
eHRyYXNdLCBjb25maWdbOmFyZ3NdLCBjb25maWdbOm1ldGFkYXRhXSwgY29uZmlnWzptZXRhZGF0
YV9pbml0aWFsaXplcnNdLCBjb25maWdbOnRtcHNdLCBjb25maWdbOmNoZWNrcG9pbnRzXSwgbmls
KQorICAgIGVuZAorCisgICAgZGVmIG5hbWUKKyAgICAgICAgQHNlY3Rpb24uY29uZmlnWzpvcF9w
cmVmaXhdLnNwbGl0KCdfJykubWFwKCY6Y2FwaXRhbGl6ZSkuam9pbiArICIje0BuYW1lfSIKKyAg
ICBlbmQKKworICAgIGRlZiBzdHJ1Y3QKKyAgICAgICAgPDwtRU9GCitzdHJ1Y3QgI3tuYW1lfSA6
IHB1YmxpYyBJbnN0cnVjdGlvbiB7Cisje2NvbnN0cnVjdG9yc30KK3Byb3RlY3RlZDoKKyN7QGZh
a2Vfb3Bjb2RlLmVtaXRfaW1wbH0KKyN7QGZha2Vfb3Bjb2RlLmNoZWNrX2ltcGx9CitwdWJsaWM6
Cisje3NldHRlcnN9Cisje21lbWJlcnN9Cit9OworRU9GCisgICAgZW5kCisKKyAgICBkZWYgY29u
c3RydWN0b3JzCisgICAgICAgIGZpZWxkcyA9IChAYXJncyB8fCBbXSkgKyAoQG1ldGFkYXRhLmVt
cHR5PyA/IFtdIDogW0BtZXRhZGF0YV0pCisgICAgICAgIGluaXQgPSAtPihzaXplKSB7IGZpZWxk
cy5lbXB0eT8gID8gIiIgOiAiOiAje2ZpZWxkcy5tYXAud2l0aF9pbmRleCB7IHxhcmcsIGl8IGFy
Zy5sb2FkX2Zyb21fc3RyZWFtKGksIHNpemUpIH0uam9pbiAiXG4gICAgICAgICwgIiB9IiB9CisK
KyAgICAgICAgPDwtRU9GCisgICAgI3tuYW1lfShjb25zdCB1aW50OF90KiBzdHJlYW0pCisgICAg
ICAgICN7aW5pdC5jYWxsKCJPcGNvZGVTaXplOjpOYXJyb3ciKX0KKyAgICB7CisgICAgfQorCisg
ICAgI3tuYW1lfShjb25zdCB1aW50MTZfdCogc3RyZWFtKQorICAgICAgICAje2luaXQuY2FsbCgi
T3Bjb2RlU2l6ZTo6V2lkZTE2Iil9CisgICAgeworICAgIH0KKworICAgICN7bmFtZX0oY29uc3Qg
dWludDMyX3QqIHN0cmVhbSkKKyAgICAgICAgI3tpbml0LmNhbGwoIk9wY29kZVNpemU6OldpZGUz
MiIpfQorICAgIHsKKyAgICB9CitFT0YKKyAgICBlbmQKKworICAgIGRlZiBzZXR0ZXJzCisgICAg
ICAgIEBmYWtlX29wY29kZS5wcmludF9hcmdzIHsgfGF8IGEuc2V0dGVyKEBmYWtlX29wY29kZS50
cmFpdHMpIH0KKyAgICBlbmQKKworICAgIGRlZiBtZW1iZXJzCisgICAgICAgIDw8LUVPRi5jaG9t
cAorI3tAZmFrZV9vcGNvZGUucHJpbnRfbWVtYmVycygiICAgICIsICY6ZmllbGQpfSN7QG1ldGFk
YXRhLmZpZWxkKCIgICAgIil9CitFT0YKICAgICBlbmQKIGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiCmluZGV4IDY2ODU1YmE2NTAwLi42OGM1OTdkOTQ2MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgpAQCAtMzAsNiAr
MzAsNyBAQCBjbGFzcyBTZWN0aW9uCiAgIGF0dHJfcmVhZGVyIDpuYW1lCiAgIGF0dHJfcmVhZGVy
IDpjb25maWcKICAgYXR0cl9yZWFkZXIgOm9wY29kZXMKKyAgYXR0cl9yZWFkZXIgOm9wY29kZV9n
cm91cHMKIAogICBkZWYgaW5pdGlhbGl6ZShuYW1lLCBjb25maWcpCiAgICAgQG5hbWUgPSBuYW1l
CkBAIC0zOSwxNiArNDAsMTcgQEAgY2xhc3MgU2VjdGlvbgogICBlbmQKIAogICBkZWYgYWRkX29w
Y29kZShuYW1lLCBjb25maWcpCi0gICAgICBAb3Bjb2RlcyA8PCBjcmVhdGVfb3Bjb2RlKG5hbWUs
IGNvbmZpZykKKyAgICAgIEBvcGNvZGVzIDw8IGNyZWF0ZV9vcGNvZGUobmFtZSwgY29uZmlnLCBu
aWwpCiAgIGVuZAogCi0gIGRlZiBjcmVhdGVfb3Bjb2RlKG5hbWUsIGNvbmZpZykKLSAgICAgIE9w
Y29kZS5uZXcoc2VsZiwgbmFtZSwgY29uZmlnWzpleHRyYXNdLCBjb25maWdbOmFyZ3NdLCBjb25m
aWdbOm1ldGFkYXRhXSwgY29uZmlnWzptZXRhZGF0YV9pbml0aWFsaXplcnNdLCBjb25maWdbOnRt
cHNdLCBjb25maWdbOmNoZWNrcG9pbnRzXSkKKyAgZGVmIGNyZWF0ZV9vcGNvZGUobmFtZSwgY29u
ZmlnLCBvcGNvZGVfZ3JvdXApCisgICAgICBPcGNvZGUubmV3KHNlbGYsIG5hbWUsIGNvbmZpZ1s6
ZXh0cmFzXSwgY29uZmlnWzphcmdzXSwgY29uZmlnWzptZXRhZGF0YV0sIGNvbmZpZ1s6bWV0YWRh
dGFfaW5pdGlhbGl6ZXJzXSwgY29uZmlnWzp0bXBzXSwgY29uZmlnWzpjaGVja3BvaW50c10sIG9w
Y29kZV9ncm91cCkKICAgZW5kCiAKICAgZGVmIGFkZF9vcGNvZGVfZ3JvdXAobmFtZSwgb3Bjb2Rl
cywgY29uZmlnKQotICAgICAgb3Bjb2RlcyA9IG9wY29kZXMubWFwIHsgfG9wY29kZXwgY3JlYXRl
X29wY29kZShvcGNvZGUsIGNvbmZpZykgfQotICAgICAgQG9wY29kZV9ncm91cHMgPDwgT3Bjb2Rl
R3JvdXAubmV3KHNlbGYsIG5hbWUsIG9wY29kZXMsIGNvbmZpZykKKyAgICAgIG9wY29kZV9ncm91
cCA9IE9wY29kZUdyb3VwLm5ldyhzZWxmLCBuYW1lLCBvcGNvZGVzLCBjb25maWcpCisgICAgICBA
b3Bjb2RlX2dyb3VwcyA8PCBvcGNvZGVfZ3JvdXAKKyAgICAgIG9wY29kZXMgPSBvcGNvZGVzLm1h
cCB7IHxvcGNvZGV8IGNyZWF0ZV9vcGNvZGUob3Bjb2RlLCBjb25maWcsIG9wY29kZV9ncm91cCkg
fQogICAgICAgQG9wY29kZXMgKz0gb3Bjb2RlcwogICBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9XYXNtLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9XYXNtLnJiCmluZGV4IGMxNzg1ODZkNTIxLi40YzUwZTkyNmQwZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9XYXNtLnJiCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvV2FzbS5yYgpAQCAtNiw2ICs2LDEwIEBAIG1vZHVs
ZSBXYXNtCiAgICAgZW5kCiAKICAgICBkZWYgc2VsZi5hdXRvZ2VuZXJhdGVfb3Bjb2Rlcyhjb250
ZXh0LCB3YXNtX2pzb24pCisgICAgICAgIHVuYXJ5T3BzID0gW10KKyAgICAgICAgYmluYXJ5T3Bz
ID0gW10KKyAgICAgICAgdmlydHVhbFJlZ2lzdGVyID0gY29udGV4dC5ldmFsKCJWaXJ0dWFsUmVn
aXN0ZXIiKQorCiAgICAgICAgIEpTT04ucGFyc2Uod2FzbV9qc29uKVsib3Bjb2RlIl0uZWFjaCBk
byB8bmFtZSwgdmFsdWV8CiAgICAgICAgICAgICBjYXRlZ29yeSA9IHZhbHVlWyJjYXRlZ29yeSJd
CiAKQEAgLTE0LDMyICsxOCwyOSBAQCBtb2R1bGUgV2FzbQogICAgICAgICAgICAgcmV0dXJuQ291
bnQgPSB2YWx1ZVsicmV0dXJuIl0uc2l6ZQogICAgICAgICAgICAgcGFyYW1ldGVyQ291bnQgPSB2
YWx1ZVsicGFyYW1ldGVyIl0uc2l6ZQogCi0gICAgICAgICAgICBhc3NlcnQoInNob3VsZCByZXR1
cm4gMCBvciAxIHZhbHVlcyIpIHsgWzAsIDFdLmluY2x1ZGU/IHJldHVybkNvdW50IH0KKyAgICAg
ICAgICAgIGFzc2VydCgic2hvdWxkIHJldHVybiBleGFjdGx5IDEgdmFsdWUiKSB7IHJldHVybkNv
dW50ID09IDF9CiAgICAgICAgICAgICBhc3NlcnQoInNob3VsZCBvbmx5IGhhdmUgMSBvciAyIHBh
cmFtZXRlcnMiKSB7IFsxLCAyXS5pbmNsdWRlPyBwYXJhbWV0ZXJDb3VudCB9CiAKICAgICAgICAg
ICAgIG5hbWUgPSBub3JtYWxpemUobmFtZSkKLSAgICAgICAgICAgIGFyZ3VtZW50cyA9IHt9Ci0K
LSAgICAgICAgICAgIHZpcnR1YWxSZWdpc3RlciA9IGNvbnRleHQuZXZhbCgiVmlydHVhbFJlZ2lz
dGVyIikKIAotICAgICAgICAgICAgaWYgcmV0dXJuQ291bnQgPiAwCi0gICAgICAgICAgICAgICAg
YXJndW1lbnRzWzpkc3RdID0gdmlydHVhbFJlZ2lzdGVyCisgICAgICAgICAgICBpZiAocGFyYW1l
dGVyQ291bnQgPT0gMSkKKyAgICAgICAgICAgICAgICB1bmFyeU9wcyA8PCBuYW1lCisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgYmluYXJ5T3BzIDw8IG5hbWUKICAgICAgICAgICAg
IGVuZAorICAgICAgICBlbmQKIAotICAgICAgICAgICAgY2FzZSBwYXJhbWV0ZXJDb3VudAotICAg
ICAgICAgICAgd2hlbiAxCi0gICAgICAgICAgICAgICAgYXJndW1lbnRzWzpvcGVyYW5kXSA9IHZp
cnR1YWxSZWdpc3RlcgotICAgICAgICAgICAgd2hlbiAyCi0gICAgICAgICAgICAgICAgYXJndW1l
bnRzWzpsaHNdID0gdmlydHVhbFJlZ2lzdGVyCi0gICAgICAgICAgICAgICAgYXJndW1lbnRzWzpy
aHNdID0gdmlydHVhbFJlZ2lzdGVyCi0gICAgICAgICAgICBlbmQKKyAgICAgICAgZGVjbGFyZV9v
cF9ncm91cCA9IGNvbnRleHQuZXZhbCgiUHJvYy5uZXcgeyB8bmFtZSwgb3BzLCBjb25maWd8IG9w
X2dyb3VwKG5hbWUsIG9wcywgY29uZmlnKSB9IikKIAotICAgICAgICAgICAgY29udGV4dC5ldmFs
KCJQcm9jLm5ldyB7IHxhcmd1bWVudHMsIGV4dHJhcyB8IG9wKCcje25hbWV9JywgeyBleHRyYXM6
IGV4dHJhcywgYXJnczogYXJndW1lbnRzIH0pIH0iKS5jYWxsKGFyZ3VtZW50cywgdmFsdWUpCi0g
ICAgICAgIGVuZAorICAgICAgICBjb25maWdVbmFyeU9wcyA9IHsgZXh0cmFzOiB7YXV0b2dlbmVy
YXRlZDogdHJ1ZX0sIGFyZ3M6IHtvcGVyYW5kOiB2aXJ0dWFsUmVnaXN0ZXIsIGRzdDogdmlydHVh
bFJlZ2lzdGVyfX0KKyAgICAgICAgY29uZmlnQmluYXJ5T3BzID0geyBleHRyYXM6IHthdXRvZ2Vu
ZXJhdGVkOiB0cnVlfSwgYXJnczoge2xoczogdmlydHVhbFJlZ2lzdGVyLCByaHM6IHZpcnR1YWxS
ZWdpc3RlciwgZHN0OiB2aXJ0dWFsUmVnaXN0ZXJ9fQorCisgICAgICAgIGRlY2xhcmVfb3BfZ3Jv
dXAuY2FsbCgiVW5hcnlPcHMiLCB1bmFyeU9wcywgY29uZmlnVW5hcnlPcHMpCisgICAgICAgIGRl
Y2xhcmVfb3BfZ3JvdXAuY2FsbCgiQmluYXJ5T3BzIiwgYmluYXJ5T3BzLCBjb25maWdCaW5hcnlP
cHMpCiAgICAgZW5kCiAKICAgICBkZWYgc2VsZi5nZW5lcmF0ZV9sbGludF9nZW5lcmF0b3Ioc2Vj
dGlvbikKLSAgICAgICAgb3Bjb2RlcyA9IHNlY3Rpb24ub3Bjb2Rlcy5zZWxlY3QgeyB8b3B8IFsi
YXJpdGhtZXRpYyIsICJjb21wYXJpc29uIiwgImNvbnZlcnNpb24iXS5pbmNsdWRlPyBvcC5leHRy
YXNbImNhdGVnb3J5Il0gfQorICAgICAgICBvcGNvZGVzID0gc2VjdGlvbi5vcGNvZGVzLnNlbGVj
dCB7IHxvcHwgb3AuZXh0cmFzWzphdXRvZ2VuZXJhdGVkXSB9CiAgICAgICAgIG1ldGhvZHMgPSBv
cGNvZGVzLm1hcCBkbyB8b3B8CiAgICAgICAgICAgICBjYXNlIG9wLmFyZ3Muc2l6ZQogICAgICAg
ICAgICAgd2hlbiAyCg==
</data>
<flag name="review"
          id="404121"
          type_id="1"
          status="+"
          setter="tzagallo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388389</attachid>
            <date>2020-01-21 19:08:32 -0800</date>
            <delta_ts>2020-01-23 17:13:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch206563</filename>
            <type>text/plain</type>
            <size>30261</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDE5MjNlMmU3OWUwLi4yNjEyNGJhNjMxZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDEtMjEgIFJvYmlu
IE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBTaHJpbmsgQnl0ZWNv
ZGVTdHJ1Y3RzLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjU2MworCisgICAgICAgIFJldmlld2VkIGJ5IFRhZGV1IFphZ2FsbG8uCisKKyAgICAg
ICAgVGhlIG1haW4gZ29hbCBvZiB0aGlzIHBhdGNoIHdhcyB0byByZWR1Y2UgY29tcGlsZSB0aW1l
cy4KKyAgICAgICAgSXQgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBzaW1wbGlmaWNhdG9ucyB0byBC
eXRlY29kZVN0cnVjdHMuaCwgd2hpY2ggaXMgaHVnZSBhbmQgdHJhbnNpdGl2ZWx5IGluY2x1ZGVk
IGluIG1vc3Qgb2YgSlNDICh0aHJvdWdoIENvbW1vblNsb3dQYXRocy5oIC0+IEpJVC5oKToKKyAg
ICAgICAgLSBPbmUgc3RydWN0IHBlciBvcF9ncm91cCwgd2l0aCBzZXR0ZXJzLCBjb25zdHJ1Y3Rv
cnMsIGVtaXRJbXBsLCBjaGVja0ltcGwsIGFuZCB0aGUgbWVtYmVycywgdGhpcyB3YXkgdGhleSBh
cmUgc2hhcmVkIGFtb25nIHRoZSB2YXJpb3VzIG9wY29kZXMgaW4gYSBncm91cC4KKyAgICAgICAg
LSBNb3JlIG9wX2dyb3VwcyBpbiBCeXRlY29kZUxpc3QucmIgKHRvIG1heGltaXplIHRoZSBiZW5l
Zml0IG9mIHRoZSBwcmV2aW91cyBvcHRpbWl6YXRpb24pCisgICAgICAgIC0gQXV0b21hdGljYWxs
eSB1c2UgV2FzbVVuYXJ5T3BzIGFuZCBXYXNtQmluYXJ5T3BzIGdyb3VwcyBmb3IgdGhlIG9wcyBh
dXRvZ2VuZXJhdGVkIGluIFdhc20ucmIKKyAgICAgICAgLSBUaGUgY2hlY2tzIHRoYXQgb3Bfd2lk
ZTE2LCBvcF93aWRlMzIsIHdhc21fd2lkZTE2LCB3YXNtX3dpZGUzMiBmaXQgaW4gT3Bjb2RlSUQv
V2FzbU9wY29kZUlEIGFyZSBub3cgaW4gYSBzaW5nbGUgcGxhY2UgYXMgYSBzdGF0aWMgYXNzZXJ0
IGluIEZpdHMuaCwgaW5zdGVhZCBvZiBiZWluZyByZXBlYXRlZCBpbiB0aGUgY2hlY2tJbXBsIG9m
IGV2ZXJ5IHNpbmdsZSBpbnN0cnVjdGlvbgorICAgICAgICAtIFJlbW92aW5nIHRoZSB1bm5lY2Vz
c2FyeSBwYXJhbWV0ZXJpemF0aW9uIG9mIGNoZWNrV2l0aG91dE1ldGFkYUlEIGJ5IEJ5dGVjb2Rl
R2VuZXJhdG9yCisgICAgICAgIC0gUmVtb3ZlIHRoZSByZWNvcmRPcGNvZGUgcGFyYW1ldGVyLCBz
aW5jZSBpdCBpcyBhbHdheXMgdHJ1ZQorICAgICAgICAtIElubGluZSBhbGwgb2YgdGhlIGR1bXAg
ZnVuY3Rpb25zICh3aGljaCB3ZXJlIGluIEJ5dGVjb2RlU3RydWN0cy5oKSBpbnRvIHRoZSBkdW1w
Qnl0ZWNvZGUvZHVtcFdhc20gZnVuY3Rpb25zICh3aGljaCBhcmUgaW4gYSAuY3BwKQorCisgICAg
ICAgIEFzIGV4cGVjdGVkLCBpdCB2ZXJ5IHNpZ25pZmljYW50bHkgc2hydW5rIEJ5dGVjb2RlU3Ry
dWN0cy5oOiBmcm9tIDY0Mjk1IGxpbmVzICgyLjcyN01CKSB0byAzOTkxOCBsaW5lcyAoMS42MDJN
QikuCisgICAgICAgIFNhZGx5IHRoZSBjb21waWxlIHRpbWUgaW1wcm92ZW1lbnQgaXMgbmVnbGln
aWJsZSAoYSBjb3VwbGUgc2Vjb25kcyBvdXQgb2YgYWJvdXQgM21uIG9uIG15IGlNYWNQcm8pLgor
CisgICAgICAgIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggdHVybmVkIG91dCB0byBiZSBhIGZhaXJseSBz
aWduaWZpY2FudCBiaW5hcnkgc2l6ZSBzYXZpbmcsIGZyb20gMjYuMDQ0TUIgdG8gMjUuNTkyTUIg
KGEgc2F2aW5nIG9mIGFib3V0IDQ1MGtCKSBpbiByZWxlYXNlIG1vZGUuCisKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlWYWwpOgorICAgICAgICAqIGdlbmVyYXRvci9E
U0wucmI6CisgICAgICAgICogZ2VuZXJhdG9yL01ldGFkYXRhLnJiOgorICAgICAgICAqIGdlbmVy
YXRvci9PcGNvZGUucmI6CisgICAgICAgICogZ2VuZXJhdG9yL09wY29kZUdyb3VwLnJiOgorICAg
ICAgICAqIGdlbmVyYXRvci9TZWN0aW9uLnJiOgorICAgICAgICAqIGdlbmVyYXRvci9XYXNtLnJi
OgorCiAyMDIwLTAxLTIxICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAg
QWRkIGJ1aWxkIGZsYWcgZm9yIHN0YWxlLXdoaWxlLXJldmFsaWRhdGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDM0ODM0N2M2YjRjLi41
ZDg0MWI4YjMyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCkBAIC02NDEsMzcgKzY0MSwyMyBAQCBvcCA6am1wLAogICAgICAgICB0YXJnZXRM
YWJlbDogQm91bmRMYWJlbCwKICAgICB9CiAKLW9wIDpqdHJ1ZSwKLSAgICBhcmdzOiB7Ci0gICAg
ICAgIGNvbmRpdGlvbjogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICB0YXJnZXRMYWJlbDogQm91
bmRMYWJlbCwKLSAgICB9Ci0KLW9wIDpqZmFsc2UsCitvcF9ncm91cCA6Qm9vbGVhbkp1bXAsCisg
ICAgWworICAgICAgICA6anRydWUsCisgICAgICAgIDpqZmFsc2UKKyAgICBdLAogICAgIGFyZ3M6
IHsKICAgICAgICAgY29uZGl0aW9uOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHRhcmdldExh
YmVsOiBCb3VuZExhYmVsLAogICAgIH0KIAotb3AgOmplcV9udWxsLAotICAgIGFyZ3M6IHsKLSAg
ICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGFyZ2V0TGFiZWw6IEJvdW5k
TGFiZWwsCi0gICAgfQotCi1vcCA6am5lcV9udWxsLAotICAgIGFyZ3M6IHsKLSAgICAgICAgdmFs
dWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGFyZ2V0TGFiZWw6IEJvdW5kTGFiZWwsCi0g
ICAgfQotCi1vcCA6anVuZGVmaW5lZF9vcl9udWxsLAotICAgIGFyZ3M6IHsKLSAgICAgICAgdmFs
dWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGFyZ2V0TGFiZWw6IEJvdW5kTGFiZWwsCi0g
ICAgfQotCi1vcCA6am51bmRlZmluZWRfb3JfbnVsbCwKK29wX2dyb3VwIDpUZXN0aW5nSnVtcCwK
KyAgICBbCisgICAgICAgIDpqZXFfbnVsbCwKKyAgICAgICAgOmpuZXFfbnVsbCwKKyAgICAgICAg
Omp1bmRlZmluZWRfb3JfbnVsbCwKKyAgICAgICAgOmpudW5kZWZpbmVkX29yX251bGwKKyAgICBd
LAogICAgIGFyZ3M6IHsKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAg
dGFyZ2V0TGFiZWw6IEJvdW5kTGFiZWwsCkBAIC03NDgsMzEgKzczNCwxMyBAQCBvcCA6c2V0X2Z1
bmN0aW9uX25hbWUsCiAgICAgfQogCiAjIG9wX2NhbGwgdmFyaWF0aW9ucwotb3AgOmNhbGwsCi0g
ICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgY2FsbGVl
OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGFyZ2M6IHVuc2lnbmVkLAotICAgICAgICBhcmd2
OiB1bnNpZ25lZCwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAg
ICB9Ci0KLW9wIDp0YWlsX2NhbGwsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxS
ZWdpc3RlciwKLSAgICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGFyZ2M6
IHVuc2lnbmVkLAotICAgICAgICBhcmd2OiB1bnNpZ25lZCwKLSAgICB9LAotICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICB9Ci0KLW9wIDpjYWxsX2V2YWwsCitvcF9ncm91cCA6
Tm9uVmFyYXJnc0NhbGxzLAorICAgIFsKKyAgICAgICAgOmNhbGwsCisgICAgICAgIDp0YWlsX2Nh
bGwsCisgICAgICAgIDpjYWxsX2V2YWwsCisgICAgICAgIDpjb25zdHJ1Y3QKKyAgICBdLAogICAg
IGFyZ3M6IHsKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGNhbGxlZTog
VmlydHVhbFJlZ2lzdGVyLApAQCAtNzg0LDcgKzc1MiwxMiBAQCBvcCA6Y2FsbF9ldmFsLAogICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCi1vcCA6Y2FsbF92YXJhcmdzLAor
b3BfZ3JvdXAgOlZhcmFyZ3NDYWxscywKKyAgICBbCisgICAgICAgIDpjYWxsX3ZhcmFyZ3MsCisg
ICAgICAgIDp0YWlsX2NhbGxfdmFyYXJncywKKyAgICAgICAgOmNvbnN0cnVjdF92YXJhcmdzCisg
ICAgXSwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAogICAgICAg
ICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTgwNSwyNyArNzc4LDYgQEAgb3AgOmNhbGxf
dmFyYXJncywKICAgICAgICAgbWFrZUNhbGw6IG5pbCwKICAgICB9CiAKLW9wIDp0YWlsX2NhbGxf
dmFyYXJncywKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAg
ICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGhpc1ZhbHVlPzogVmlydHVh
bFJlZ2lzdGVyLAotICAgICAgICBhcmd1bWVudHM/OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAg
IGZpcnN0RnJlZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBmaXJzdFZhckFyZzogaW50LAot
ICAgIH0sCi0gICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2Zp
bGUsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICB9LAotICAgIHRtcHM6IHsK
LSAgICAgICAgYXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZAotICAgIH0sCi0gICAgY2hl
Y2twb2ludHM6IHsKLSAgICAgICAgZGV0ZXJtaW5pbmdBcmdDb3VudDogbmlsLAotICAgICAgICBt
YWtlQ2FsbDogbmlsLAotICAgIH0KLQogb3AgOnRhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cywK
ICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLApAQCAtODQwLDM5ICs3
OTIsNiBAQCBvcCA6dGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzLAogICAgICAgICBwcm9maWxl
OiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCi1vcCA6Y29uc3RydWN0LAotICAgIGFyZ3M6IHsKLSAg
ICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGNhbGxlZTogVmlydHVhbFJlZ2lz
dGVyLAotICAgICAgICBhcmdjOiB1bnNpZ25lZCwKLSAgICAgICAgYXJndjogdW5zaWduZWQsCi0g
ICAgfSwKLSAgICBtZXRhZGF0YTogewotICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExp
bmtJbmZvLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgfQotCi1vcCA6Y29u
c3RydWN0X3ZhcmFyZ3MsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHRoaXNWYWx1ZT86
IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgYXJndW1lbnRzPzogVmlydHVhbFJlZ2lzdGVyLAot
ICAgICAgICBmaXJzdEZyZWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZmlyc3RWYXJBcmc6
IGludCwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgfSwKLSAgICB0
bXBzOiB7Ci0gICAgICAgIGFyZ0NvdW50SW5jbHVkaW5nVGhpczogdW5zaWduZWQKLSAgICB9LAot
ICAgIGNoZWNrcG9pbnRzOiB7Ci0gICAgICAgIGRldGVybWluaW5nQXJnQ291bnQ6IG5pbCwKLSAg
ICAgICAgbWFrZUNhbGw6IG5pbCwKLSAgICB9Ci0KIG9wIDpyZXQsCiAgICAgYXJnczogewogICAg
ICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9G
aXRzLmgKaW5kZXggNTc3ODliYzJjNjYuLjg3OWUzN2Q3MWI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9GaXRzLmgKQEAgLTUyLDcgKzUyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
T3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8VCwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxz
aXplb2YoVCkgPT0gc2l6ZSwgc3RkOjp0cnVlX3R5cGU+PiB7CiAgICAgdXNpbmcgVGFyZ2V0VHlw
ZSA9IHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlwZTsKIAotICAgIHN0YXRp
YyBib29sIGNoZWNrKFQpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgY2hlY2soVCkgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgc3RhdGljIFRhcmdldFR5cGUgY29u
dmVydChUIHQpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUYXJnZXRUeXBlPih0KTsgfQogCkBAIC02
NCw3ICs2NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIE9wY29kZVNpemUgc2l6ZT4KIHN0cnVj
dCBGaXRzPFQsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFs
dWUgJiYgc2l6ZW9mKFQpICE9IHNpemUgJiYgIXN0ZDo6aXNfc2FtZTxib29sLCBUPjo6dmFsdWUs
IHN0ZDo6dHJ1ZV90eXBlPj4gewogICAgIHVzaW5nIFRhcmdldFR5cGUgPSBzdGQ6OmNvbmRpdGlv
bmFsX3Q8c3RkOjppc191bnNpZ25lZDxUPjo6dmFsdWUsIHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6
ZT46OnVuc2lnbmVkVHlwZSwgdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6c2lnbmVkVHlwZT47
CiAKLSAgICBzdGF0aWMgYm9vbCBjaGVjayhUIHQpCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGNoZWNrKFQgdCkKICAgICB7CiAgICAgICAgIHJldHVybiB0ID49IHN0ZDo6bnVtZXJpY19saW1p
dHM8VGFyZ2V0VHlwZT46Om1pbigpICYmIHQgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXRU
eXBlPjo6bWF4KCk7CiAgICAgfQpAQCAtMjIyLDcgKzIyMiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IEUsIE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPEUsIHNpemUsIHN0ZDo6ZW5hYmxlX2lm
X3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+Ojp2YWx1ZSwgc3RkOjp0cnVl
X3R5cGU+PiA6IHB1YmxpYyBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+IHsK
ICAgICB1c2luZyBCYXNlID0gRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPjsK
IAotICAgIHN0YXRpYyBib29sIGNoZWNrKEUgZSkgeyByZXR1cm4gQmFzZTo6Y2hlY2soc3RhdGlj
X2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPj4oZSkpOyB9CisgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGNoZWNrKEUgZSkgeyByZXR1cm4gQmFzZTo6Y2hlY2soc3RhdGljX2Nhc3Q8c3Rk
Ojp1bmRlcmx5aW5nX3R5cGVfdDxFPj4oZSkpOyB9CiAKICAgICBzdGF0aWMgdHlwZW5hbWUgQmFz
ZTo6VGFyZ2V0VHlwZSBjb252ZXJ0KEUgZSkKICAgICB7CkBAIC0zMjcsNCArMzI3LDEyIEBAIHN0
cnVjdCBGaXRzPEdlbmVyaWNCb3VuZExhYmVsPEdlbmVyYXRvclRyYWl0cz4sIHNpemU+IDogcHVi
bGljIEZpdHM8aW50LCBzaXplPiB7CiAgICAgfQogfTsKIAorc3RhdGljX2Fzc2VydChGaXRzPE9w
Y29kZUlELCBPcGNvZGVTaXplOjpOYXJyb3c+OjpjaGVjayhvcF93aWRlMTYpKTsKK3N0YXRpY19h
c3NlcnQoRml0czxPcGNvZGVJRCwgT3Bjb2RlU2l6ZTo6TmFycm93Pjo6Y2hlY2sob3Bfd2lkZTMy
KSk7CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCitzdGF0aWNfYXNzZXJ0KEZpdHM8V2FzbU9w
Y29kZUlELCBPcGNvZGVTaXplOjpOYXJyb3c+OjpjaGVjayh3YXNtX3dpZGUxNikpOworc3RhdGlj
X2Fzc2VydChGaXRzPFdhc21PcGNvZGVJRCwgT3Bjb2RlU2l6ZTo6TmFycm93Pjo6Y2hlY2sod2Fz
bV93aWRlMzIpKTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
aW5kZXggZTMyMjIwNWRlZTcuLjk1NDE2NDUwYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjYw
MCw5ICsyNjAwLDkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeVZh
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFIKICAgICAgICAgaWYgKGNvbnRl
eHQuaXNJbmRleGVkRm9ySW5Db250ZXh0KCkpIHsKICAgICAgICAgICAgIGF1dG8mIGluZGV4ZWRD
b250ZXh0ID0gY29udGV4dC5hc0luZGV4ZWRGb3JJbkNvbnRleHQoKTsKICAgICAgICAgICAgIGtp
bGwoZHN0KTsKLSAgICAgICAgICAgIGlmIChPcEdldEJ5VmFsOjpjaGVja1dpdGhvdXRNZXRhZGF0
YUlEPE9wY29kZVNpemU6Ok5hcnJvdz4odGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0eSkpCisgICAg
ICAgICAgICBpZiAoT3BHZXRCeVZhbDo6Y2hlY2tXaXRob3V0TWV0YWRhdGFJRDxPcGNvZGVTaXpl
OjpOYXJyb3c+KGRzdCwgYmFzZSwgcHJvcGVydHkpKQogICAgICAgICAgICAgICAgIE9wR2V0QnlW
YWw6OmVtaXRXaXRoU21hbGxlc3RTaXplUmVxdWlyZW1lbnQ8T3Bjb2RlU2l6ZTo6TmFycm93Pih0
aGlzLCBkc3QsIGJhc2UsIGluZGV4ZWRDb250ZXh0LmluZGV4KCkpOwotICAgICAgICAgICAgZWxz
ZSBpZiAoT3BHZXRCeVZhbDo6Y2hlY2tXaXRob3V0TWV0YWRhdGFJRDxPcGNvZGVTaXplOjpXaWRl
MTY+KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVydHkpKQorICAgICAgICAgICAgZWxzZSBpZiAoT3BH
ZXRCeVZhbDo6Y2hlY2tXaXRob3V0TWV0YWRhdGFJRDxPcGNvZGVTaXplOjpXaWRlMTY+KGRzdCwg
YmFzZSwgcHJvcGVydHkpKQogICAgICAgICAgICAgICAgIE9wR2V0QnlWYWw6OmVtaXRXaXRoU21h
bGxlc3RTaXplUmVxdWlyZW1lbnQ8T3Bjb2RlU2l6ZTo6V2lkZTE2Pih0aGlzLCBkc3QsIGJhc2Us
IGluZGV4ZWRDb250ZXh0LmluZGV4KCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIE9wR2V0QnlWYWw6OmVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZTMyPih0aGlzLCBkc3QsIGJhc2Us
IGluZGV4ZWRDb250ZXh0LmluZGV4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RT
TC5yYgppbmRleCA0YThiMWU1ODE0NC4uN2E3MjAzMTNlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xNTMsNiArMTUzLDggQEAgdm9pZCBkdW1wV2FzbShCeXRl
Y29kZUR1bXBlckJhc2UqIGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgY29uc3Qg
SW5zdHIKIEVPRgogCiAgICAgICAgICAgICB0ZW1wbGF0ZS5ib2R5ID0gPDwtRU9GCisje29wY29k
ZV9ncm91cHNfZmlsdGVyIHsgfHN8IHMuY29uZmlnWzplbWl0X2luX3N0cnVjdHNfZmlsZV0gfS5t
YXAoJjpzdHJ1Y3QpLmpvaW4oIlxuIil9CisKICN7b3Bjb2Rlc19maWx0ZXIgeyB8c3wgcy5jb25m
aWdbOmVtaXRfaW5fc3RydWN0c19maWxlXSAmJiAhcy5pc193YXNtPyB9Lm1hcCgmOnN0cnVjdCku
am9pbigiXG4iKX0KIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTIyNiw0ICsyMjgsOSBA
QCBFT0YKICAgICAgICAgc2VjdGlvbnMgPSBAc2VjdGlvbnMuc2VsZWN0IHsgfHN8IHlpZWxkIHMg
fQogICAgICAgICBzZWN0aW9ucy5tYXAoJjpvcGNvZGVzKS5mbGF0dGVuCiAgICAgZW5kCisKKyAg
ICBkZWYgc2VsZi5vcGNvZGVfZ3JvdXBzX2ZpbHRlcgorICAgICAgICBzZWN0aW9ucyA9IEBzZWN0
aW9ucy5zZWxlY3QgeyB8c3wgeWllbGQgcyB9CisgICAgICAgIHNlY3Rpb25zLm1hcCgmOm9wY29k
ZV9ncm91cHMpLmZsYXR0ZW4KKyAgICBlbmQKIGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0b3IvTWV0YWRhdGEucmIKaW5kZXggN2NkMTVkMzE1ZDYuLmRlOWZiNDMxYmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKQEAgLTY2LDcgKzY2
LDYgQEAgY2xhc3MgTWV0YWRhdGEKICAgICBzdHJ1Y3QgTWV0YWRhdGEgewogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShNZXRhZGF0YSk7CiAKLSAgICBwdWJsaWM6CiAgICAgICAgIE1ldGFk
YXRhKGNvbnN0ICN7b3AuY2FwaXRhbGl6ZWRfbmFtZX0mI3siIF9fb3AiIGlmIGluaXRzfSkje2lu
aXRzfSB7IH0KIAogI3tmaWVsZHN9CkBAIC0xMDIsNyArMTAxLDYgQEAgRU9GCiAgICAgICAgIHJl
dHVybiBpZiBlbXB0eT8KIAogICAgICAgICA8PC1FT0YuY2hvbXAKLQogICAgICAgICBhdXRvICN7
ZW1pdHRlcl9sb2NhbC5uYW1lfSA9IGdlbi0+YWRkTWV0YWRhdGFGb3Iob3Bjb2RlSUQpOwogICAg
ICAgICBFT0YKICAgICBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvT3Bjb2RlLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9PcGNvZGUu
cmIKaW5kZXggODIzNzRiN2ZiZTguLjI5NzdkYTY4MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdG9yL09wY29kZS5yYgpAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBPcGNvZGUKICAg
ICAgICAgdGlkCiAgICAgZW5kCiAKLSAgICBkZWYgaW5pdGlhbGl6ZShzZWN0aW9uLCBuYW1lLCBl
eHRyYXMsIGFyZ3MsIG1ldGFkYXRhLCBtZXRhZGF0YV9pbml0aWFsaXplcnMsIHRtcHMsIGNoZWNr
cG9pbnRzKQorICAgIGRlZiBpbml0aWFsaXplKHNlY3Rpb24sIG5hbWUsIGV4dHJhcywgYXJncywg
bWV0YWRhdGEsIG1ldGFkYXRhX2luaXRpYWxpemVycywgdG1wcywgY2hlY2twb2ludHMsIG9wY29k
ZV9ncm91cCkKICAgICAgICAgQHNlY3Rpb24gPSBzZWN0aW9uCiAgICAgICAgIEBuYW1lID0gbmFt
ZQogICAgICAgICBAZXh0cmFzID0gZXh0cmFzIHx8IHt9CkBAIC01NCw2ICs1NCw5IEBAIGNsYXNz
IE9wY29kZQogICAgICAgICBAYXJncyA9IGFyZ3MubWFwLndpdGhfaW5kZXggeyB8KGFyZ19uYW1l
LCB0eXBlKSwgaW5kZXh8IEFyZ3VtZW50Lm5ldyBhcmdfbmFtZSwgdHlwZSwgaW5kZXggfSB1bmxl
c3MgYXJncy5uaWw/CiAgICAgICAgIEB0bXBzID0gdG1wcwogICAgICAgICBAY2hlY2twb2ludHMg
PSBjaGVja3BvaW50cy5tYXAgeyB8KGNoZWNrcG9pbnQsIF8pfCBjaGVja3BvaW50IH0gdW5sZXNz
IGNoZWNrcG9pbnRzLm5pbD8KKyAgICAgICAgQG9wY29kZV9ncm91cCA9IG9wY29kZV9ncm91cAor
ICAgICAgICBAb3Bfd2lkZTE2ID0gQXJndW1lbnQubmV3KHdpZGUxNiwgb3Bjb2RlSURUeXBlLCAw
KQorICAgICAgICBAb3Bfd2lkZTMyID0gQXJndW1lbnQubmV3KHdpZGUzMiwgb3Bjb2RlSURUeXBl
LCAwKQogICAgIGVuZAogCiAgICAgZGVmIGNyZWF0ZV9pZCEKQEAgLTc3LDE2ICs4MCwyMSBAQCBj
bGFzcyBPcGNvZGUKICAgICBkZWYgdHlwZWRfYXJncwogICAgICAgICByZXR1cm4gaWYgQGFyZ3Mu
bmlsPwogCisgICAgICAgIEBhcmdzLm1hcCgmOmNyZWF0ZV9wYXJhbSkuam9pbigiLCAiKQorICAg
IGVuZAorICAgIGRlZiB0eXBlZF9hcmdzX3dpdGhfY29tbWEKKyAgICAgICAgcmV0dXJuIGlmIEBh
cmdzLm5pbD8KKwogICAgICAgICBAYXJncy5tYXAoJjpjcmVhdGVfcGFyYW0pLnVuc2hpZnQoIiIp
LmpvaW4oIiwgIikKICAgICBlbmQKIAotICAgIGRlZiB0eXBlZF9yZWZlcmVuY2VfYXJncworICAg
IGRlZiB0eXBlZF9yZWZlcmVuY2VfYXJnc193aXRoX2NvbW1hCiAgICAgICAgIHJldHVybiBpZiBA
YXJncy5uaWw/CiAKICAgICAgICAgQGFyZ3MubWFwKCY6Y3JlYXRlX3JlZmVyZW5jZV9wYXJhbSku
dW5zaGlmdCgiIikuam9pbigiLCAiKQogICAgIGVuZAogCi0gICAgZGVmIHVudHlwZWRfYXJncwor
ICAgIGRlZiB1bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYQogICAgICAgICByZXR1cm4gaWYgQGFyZ3Mu
bmlsPwogCiAgICAgICAgIEBhcmdzLm1hcCgmOm5hbWUpLnVuc2hpZnQoIiIpLmpvaW4oIiwgIikK
QEAgLTEyOCwyMCArMTM2LDM0IEBAIGNsYXNzIE9wY29kZQogCiAgICAgZGVmIHN0cnVjdAogICAg
ICAgICA8PC1FT0YKLXN0cnVjdCAje2NhcGl0YWxpemVkX25hbWV9IDogcHVibGljIEluc3RydWN0
aW9uIHsKK3N0cnVjdCAje2NhcGl0YWxpemVkX25hbWV9IDogcHVibGljICN7YmFzZV9jbGFzc30g
ewogICAgICN7b3Bjb2RlSUR9CiAgICAgI3t0ZW1wc30KICAgICAje2NoZWNrcG9pbnRWYWx1ZXN9
Ci0KICN7ZW1pdHRlcn0KLSN7ZHVtcGVyfQorI3tpZiBAb3Bjb2RlX2dyb3VwLm5pbD8KKzw8LUVP
Ri5jaG9tcAorcHJpdmF0ZToKKyN7ZW1pdF9pbXBsfQorI3tjaGVja19pbXBsfQorcHVibGljOgor
RU9GCitlbmR9CiAje2NvbnN0cnVjdG9yc30KKyN7ZGVjb2RlfQogI3tzZXR0ZXJzfSN7bWV0YWRh
dGFfc3RydWN0X2FuZF9hY2Nlc3Nvcn0KLSN7bWVtYmVyc30KLX07Cisje21lbWJlcnN9fTsKIEVP
RgogICAgIGVuZAogCisgICAgZGVmIGJhc2VfY2xhc3MKKyAgICAgICAgaWYgQG9wY29kZV9ncm91
cAorICAgICAgICAgICAgQG9wY29kZV9ncm91cC5uYW1lCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICJJbnN0cnVjdGlvbiIKKyAgICAgICAgZW5kCisgICAgZW5kCisKICAgICBkZWYgb3Bjb2Rl
SUQKICAgICAgICAgInN0YXRpYyBjb25zdGV4cHIgI3tvcGNvZGVJRFR5cGV9IG9wY29kZUlEID0g
I3tuYW1lfTsiCiAgICAgZW5kCkBAIC0xNTgsMTM1ICsxODAsMTM0IEBAIEVPRgogICAgICAgICBb
ImVudW0gVG1wcyA6IHVpbnQ4X3QgeyJdLmNvbmNhdChAdG1wcy5tYXAge3wodG1wLCB0eXBlKXwg
IiAgICAgICAgI3t0bXB9LCJ9KS5wdXNoKCIgICAgfTsiKS5qb2luKCJcbiIpCiAgICAgZW5kCiAK
KyAgICBkZWYgbWV0YWRhdGFfcGFyYW0KKyAgICAgICAgQG1ldGFkYXRhLmVtcHR5PyA/ICIiIDog
IiwgI3tAbWV0YWRhdGEuZW1pdHRlcl9sb2NhbC5jcmVhdGVfcGFyYW19IgorICAgIGVuZAorCisg
ICAgZGVmIG1ldGFkYXRhX2FyZworICAgICAgICBAbWV0YWRhdGEuZW1wdHk/ID8gIiIgOiAiLCAj
e0BtZXRhZGF0YS5lbWl0dGVyX2xvY2FsLm5hbWV9IgorICAgIGVuZAorCiAgICAgZGVmIGVtaXR0
ZXIKLSAgICAgICAgb3Bfd2lkZTE2ID0gQXJndW1lbnQubmV3KHdpZGUxNiwgb3Bjb2RlSURUeXBl
LCAwKQotICAgICAgICBvcF93aWRlMzIgPSBBcmd1bWVudC5uZXcod2lkZTMyLCBvcGNvZGVJRFR5
cGUsIDApCi0gICAgICAgIG1ldGFkYXRhX3BhcmFtID0gQG1ldGFkYXRhLmVtcHR5PyA/ICIiIDog
IiwgI3tAbWV0YWRhdGEuZW1pdHRlcl9sb2NhbC5jcmVhdGVfcGFyYW19IgotICAgICAgICBtZXRh
ZGF0YV9hcmcgPSBAbWV0YWRhdGEuZW1wdHk/ID8gIiIgOiAiLCAje0BtZXRhZGF0YS5lbWl0dGVy
X2xvY2FsLm5hbWV9IgotICAgICAgICA8PC1FT0YuY2hvbXAKKyAgICAgICAgPDwtRU9GCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3I+Ci0gICAgc3RhdGljIHZvaWQgZW1p
dChCeXRlY29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzfSkKKyAgICBzdGF0aWMgdm9pZCBl
bWl0KEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4je3R5cGVkX2FyZ3Nfd2l0aF9jb21tYX0pCiAgICAg
ewotICAgICAgICBlbWl0V2l0aFNtYWxsZXN0U2l6ZVJlcXVpcmVtZW50PE9wY29kZVNpemU6Ok5h
cnJvdywgQnl0ZWNvZGVHZW5lcmF0b3I+KGdlbiN7dW50eXBlZF9hcmdzfSk7CisgICAgICAgIGVt
aXRXaXRoU21hbGxlc3RTaXplUmVxdWlyZW1lbnQ8T3Bjb2RlU2l6ZTo6TmFycm93LCBCeXRlY29k
ZUdlbmVyYXRvcj4oZ2VuI3t1bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYX0pOwogICAgIH0KICN7JXsK
ICAgICB0ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6ZSwgdHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0
b3IsIEZpdHNBc3NlcnRpb24gc2hvdWxkQXNzZXJ0ID0gQXNzZXJ0PgotICAgIHN0YXRpYyBib29s
IGVtaXQoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc30pCisgICAgc3RhdGljIGJv
b2wgZW1pdChCeXRlY29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzX3dpdGhfY29tbWF9KQog
ICAgIHsje0BtZXRhZGF0YS5jcmVhdGVfZW1pdHRlcl9sb2NhbH0KLSAgICAgICAgcmV0dXJuIGVt
aXQ8X19zaXplLCBCeXRlY29kZUdlbmVyYXRvciwgc2hvdWxkQXNzZXJ0PihnZW4je3VudHlwZWRf
YXJnc30je21ldGFkYXRhX2FyZ30pOworICAgICAgICByZXR1cm4gZW1pdDxfX3NpemUsIEJ5dGVj
b2RlR2VuZXJhdG9yLCBzaG91bGRBc3NlcnQ+KGdlbiN7dW50eXBlZF9hcmdzX3dpdGhfY29tbWF9
I3ttZXRhZGF0YV9hcmd9KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6
ZSwgdHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3I+Ci0gICAgc3RhdGljIGJvb2wgY2hlY2tXaXRo
b3V0TWV0YWRhdGFJRChCeXRlY29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzfSkKKyAgICB0
ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6ZT4KKyAgICBzdGF0aWMgYm9vbCBjaGVja1dpdGhvdXRN
ZXRhZGF0YUlEKCN7dHlwZWRfYXJnc30pCiAgICAgewotICAgICAgICBkZWNsdHlwZShnZW4tPmFk
ZE1ldGFkYXRhRm9yKG9wY29kZUlEKSkgX19tZXRhZGF0YUlEIHsgfTsKLSAgICAgICAgcmV0dXJu
IGNoZWNrSW1wbDxfX3NpemUsIEJ5dGVjb2RlR2VuZXJhdG9yPihnZW4je3VudHlwZWRfYXJnc30j
e21ldGFkYXRhX2FyZ30pOworICAgICAgICB1bnNpZ25lZCBfX21ldGFkYXRhSUQgPSAwOworICAg
ICAgICByZXR1cm4gY2hlY2tJbXBsPF9fc2l6ZT4ob3Bjb2RlSUQje3VudHlwZWRfYXJnc193aXRo
X2NvbW1hfSN7bWV0YWRhdGFfYXJnfSk7CiAgICAgfQogfSB1bmxlc3MgQG1ldGFkYXRhLmVtcHR5
P30KLSAgICB0ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6ZSwgdHlwZW5hbWUgQnl0ZWNvZGVHZW5l
cmF0b3IsIEZpdHNBc3NlcnRpb24gc2hvdWxkQXNzZXJ0ID0gQXNzZXJ0LCBib29sIHJlY29yZE9w
Y29kZSA9IHRydWU+Ci0gICAgc3RhdGljIGJvb2wgZW1pdChCeXRlY29kZUdlbmVyYXRvciogZ2Vu
I3t0eXBlZF9hcmdzfSN7bWV0YWRhdGFfcGFyYW19KQorICAgIHRlbXBsYXRlPE9wY29kZVNpemUg
X19zaXplLCB0eXBlbmFtZSBCeXRlY29kZUdlbmVyYXRvciwgRml0c0Fzc2VydGlvbiBzaG91bGRB
c3NlcnQgPSBBc3NlcnQ+CisgICAgc3RhdGljIGJvb2wgZW1pdChCeXRlY29kZUdlbmVyYXRvciog
Z2VuI3t0eXBlZF9hcmdzX3dpdGhfY29tbWF9I3ttZXRhZGF0YV9wYXJhbX0pCiAgICAgewotICAg
ICAgICBib29sIGRpZEVtaXQgPSBlbWl0SW1wbDxfX3NpemUsIHJlY29yZE9wY29kZSwgQnl0ZWNv
ZGVHZW5lcmF0b3I+KGdlbiN7dW50eXBlZF9hcmdzfSN7bWV0YWRhdGFfYXJnfSk7CisgICAgICAg
IGJvb2wgZGlkRW1pdCA9IGVtaXRJbXBsPF9fc2l6ZSwgQnl0ZWNvZGVHZW5lcmF0b3I+KGdlbiwg
b3Bjb2RlSUQje3VudHlwZWRfYXJnc193aXRoX2NvbW1hfSN7bWV0YWRhdGFfYXJnfSk7CiAgICAg
ICAgIGlmIChzaG91bGRBc3NlcnQgPT0gQXNzZXJ0KQogICAgICAgICAgICAgQVNTRVJUKGRpZEVt
aXQpOwogICAgICAgICByZXR1cm4gZGlkRW1pdDsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxPcGNv
ZGVTaXplIF9fc2l6ZSwgdHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3I+Ci0gICAgc3RhdGljIHZv
aWQgZW1pdFdpdGhTbWFsbGVzdFNpemVSZXF1aXJlbWVudChCeXRlY29kZUdlbmVyYXRvciogZ2Vu
I3t0eXBlZF9hcmdzfSkKKyAgICBzdGF0aWMgdm9pZCBlbWl0V2l0aFNtYWxsZXN0U2l6ZVJlcXVp
cmVtZW50KEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4je3R5cGVkX2FyZ3Nfd2l0aF9jb21tYX0pCiAg
ICAgewotICAgICAgICAje0BtZXRhZGF0YS5jcmVhdGVfZW1pdHRlcl9sb2NhbH0KKyN7QG1ldGFk
YXRhLmNyZWF0ZV9lbWl0dGVyX2xvY2FsfQogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KF9fc2l6ZSkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE9wY29kZVNpemU6Ok5hcnJvdykp
IHsKLSAgICAgICAgICAgIGlmIChlbWl0PE9wY29kZVNpemU6Ok5hcnJvdywgQnl0ZWNvZGVHZW5l
cmF0b3IsIE5vQXNzZXJ0LCB0cnVlPihnZW4je3VudHlwZWRfYXJnc30je21ldGFkYXRhX2FyZ30p
KQorICAgICAgICAgICAgaWYgKGVtaXQ8T3Bjb2RlU2l6ZTo6TmFycm93LCBCeXRlY29kZUdlbmVy
YXRvciwgTm9Bc3NlcnQ+KGdlbiN7dW50eXBlZF9hcmdzX3dpdGhfY29tbWF9I3ttZXRhZGF0YV9h
cmd9KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihfX3NpemUpIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihPcGNv
ZGVTaXplOjpXaWRlMTYpKSB7Ci0gICAgICAgICAgICBpZiAoZW1pdDxPcGNvZGVTaXplOjpXaWRl
MTYsIEJ5dGVjb2RlR2VuZXJhdG9yLCBOb0Fzc2VydCwgdHJ1ZT4oZ2VuI3t1bnR5cGVkX2FyZ3N9
I3ttZXRhZGF0YV9hcmd9KSkKKyAgICAgICAgICAgIGlmIChlbWl0PE9wY29kZVNpemU6OldpZGUx
NiwgQnl0ZWNvZGVHZW5lcmF0b3IsIE5vQXNzZXJ0PihnZW4je3VudHlwZWRfYXJnc193aXRoX2Nv
bW1hfSN7bWV0YWRhdGFfYXJnfSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
Ci0gICAgICAgIGVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZTMyLCBCeXRlY29kZUdlbmVyYXRvciwgQXNz
ZXJ0LCB0cnVlPihnZW4je3VudHlwZWRfYXJnc30je21ldGFkYXRhX2FyZ30pOworICAgICAgICBl
bWl0PE9wY29kZVNpemU6OldpZGUzMiwgQnl0ZWNvZGVHZW5lcmF0b3IsIEFzc2VydD4oZ2VuI3t1
bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYX0je21ldGFkYXRhX2FyZ30pOwogICAgIH0KK0VPRgorICAg
IGVuZAogCi1wcml2YXRlOgorICAgIGRlZiBlbWl0X2ltcGwKKyAgICAgICAgPDwtRU9GCiAgICAg
dGVtcGxhdGU8T3Bjb2RlU2l6ZSBfX3NpemUsIHR5cGVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yPgot
ICAgIHN0YXRpYyBib29sIGNoZWNrSW1wbChCeXRlY29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9y
ZWZlcmVuY2VfYXJnc30je21ldGFkYXRhX3BhcmFtfSkKKyAgICBzdGF0aWMgYm9vbCBlbWl0SW1w
bChCeXRlY29kZUdlbmVyYXRvciogZ2VuLCAje29wY29kZUlEVHlwZX0gb3Bjb2RlSUQje3R5cGVk
X2FyZ3Nfd2l0aF9jb21tYX0je21ldGFkYXRhX3BhcmFtfSkKICAgICB7Ci0gICAgICAgIFVOVVNF
RF9QQVJBTShnZW4pOwotI2lmIE9TKFdJTkRPV1MpICYmIEVOQUJMRShDX0xPT1ApCi0gICAgICAg
IC8vIEZJWE1FOiBEaXNhYmxlIHdpZGUxNiBvcHRpbWl6YXRpb24gZm9yIFdpbmRvd3MgQ0xvb3AK
LSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODI4
MwotICAgICAgICBpZiAoX19zaXplID09IE9wY29kZVNpemU6OldpZGUxNikKKyAgICAgICAgaWYg
KCFjaGVja0ltcGw8X19zaXplPihvcGNvZGVJRCN7dW50eXBlZF9hcmdzX3dpdGhfY29tbWF9I3tt
ZXRhZGF0YV9hcmd9KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotICAgICAg
ICByZXR1cm4gI3ttYXBfZmllbGRzX3dpdGhfc2l6ZSgiIiwgIl9fc2l6ZSIsICY6Zml0c19jaGVj
aykuam9pbiAiXG4gICAgICAgICAgICAmJiAifQotICAgICAgICAgICAgJiYgKF9fc2l6ZSA9PSBP
cGNvZGVTaXplOjpXaWRlMTYgPyAje29wX3dpZGUxNi5maXRzX2NoZWNrKFNpemU6Ok5hcnJvdyl9
IDogdHJ1ZSkKLSAgICAgICAgICAgICYmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTMyID8g
I3tvcF93aWRlMzIuZml0c19jaGVjayhTaXplOjpOYXJyb3cpfSA6IHRydWUpOwotICAgIH0KLQot
ICAgIHRlbXBsYXRlPE9wY29kZVNpemUgX19zaXplLCBib29sIHJlY29yZE9wY29kZSwgdHlwZW5h
bWUgQnl0ZWNvZGVHZW5lcmF0b3I+Ci0gICAgc3RhdGljIGJvb2wgZW1pdEltcGwoQnl0ZWNvZGVH
ZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc30je21ldGFkYXRhX3BhcmFtfSkKLSAgICB7Ci0gICAg
ICAgICN7IUBjaGVja3BvaW50cy5uaWw/ID8gImdlbi0+c2V0VXNlc0NoZWNrcG9pbnRzKCk7IiA6
ICIifQorICAgICAgICAjeyJnZW4tPnNldFVzZXNDaGVja3BvaW50cygpOyIgdW5sZXNzIEBjaGVj
a3BvaW50cy5uaWw/fQogICAgICAgICBpZiAoX19zaXplID09IE9wY29kZVNpemU6OldpZGUxNikK
ICAgICAgICAgICAgIGdlbi0+YWxpZ25XaWRlT3Bjb2RlMTYoKTsKICAgICAgICAgZWxzZSBpZiAo
X19zaXplID09IE9wY29kZVNpemU6OldpZGUzMikKICAgICAgICAgICAgIGdlbi0+YWxpZ25XaWRl
T3Bjb2RlMzIoKTsKLSAgICAgICAgaWYgKGNoZWNrSW1wbDxfX3NpemU+KGdlbiN7dW50eXBlZF9h
cmdzfSN7bWV0YWRhdGFfYXJnfSkpIHsKLSAgICAgICAgICAgIGlmIChyZWNvcmRPcGNvZGUpCi0g
ICAgICAgICAgICAgICAgZ2VuLT5yZWNvcmRPcGNvZGUob3Bjb2RlSUQpOwotICAgICAgICAgICAg
aWYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpXaWRlMTYpCi0gICAgICAgICAgICAgICAgI3tvcF93
aWRlMTYuZml0c193cml0ZSBTaXplOjpOYXJyb3d9Ci0gICAgICAgICAgICBlbHNlIGlmIChfX3Np
emUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTMyKQotICAgICAgICAgICAgICAgICN7b3Bfd2lkZTMyLmZp
dHNfd3JpdGUgU2l6ZTo6TmFycm93fQotICAgICAgICAgICAgI3tBcmd1bWVudC5uZXcoIm9wY29k
ZUlEIiwgb3Bjb2RlSURUeXBlLCAwKS5maXRzX3dyaXRlIFNpemU6Ok5hcnJvd30KLSN7bWFwX29w
ZXJhbmRzX3dpdGhfc2l6ZSgiICAgICAgICAgICAgIiwgIl9fc2l6ZSIsICY6Zml0c193cml0ZSku
am9pbiAiXG4ifQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBnZW4tPnJlY29yZE9wY29kZShvcGNvZGVJRCk7CisgICAg
ICAgIGlmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTE2KQorICAgICAgICAgICAgI3tAb3Bf
d2lkZTE2LmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93fQorICAgICAgICBlbHNlIGlmIChfX3NpemUg
PT0gT3Bjb2RlU2l6ZTo6V2lkZTMyKQorICAgICAgICAgICAgI3tAb3Bfd2lkZTMyLmZpdHNfd3Jp
dGUgU2l6ZTo6TmFycm93fQorICAgICAgICAje0FyZ3VtZW50Lm5ldygib3Bjb2RlSUQiLCBvcGNv
ZGVJRFR5cGUsIDApLmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93fQorI3ttYXBfb3BlcmFuZHNfd2l0
aF9zaXplKCIgICAgICAgICIsICJfX3NpemUiLCAmOmZpdHNfd3JpdGUpLmpvaW4gIlxuIn0KKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotCi1wdWJsaWM6CiBFT0YKICAgICBlbmQKIAotICAg
IGRlZiBkdW1wZXIKKyAgICBkZWYgY2hlY2tfaW1wbAogICAgICAgICA8PC1FT0YKLSAgICB2b2lk
IGR1bXAoQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQgX19sb2NhdGlvbiwgaW50IF9fc2l6ZVNoaWZ0QW1vdW50KQorICAgIHRlbXBsYXRlPE9wY29k
ZVNpemUgX19zaXplPgorICAgIHN0YXRpYyBib29sIGNoZWNrSW1wbCgje29wY29kZUlEVHlwZX0g
b3Bjb2RlSUQje3R5cGVkX3JlZmVyZW5jZV9hcmdzX3dpdGhfY29tbWF9I3ttZXRhZGF0YV9wYXJh
bX0pCiAgICAgewotICAgICAgICBkdW1wZXItPnByaW50TG9jYXRpb25BbmRPcChfX2xvY2F0aW9u
LCAmIioqI3tAbmFtZX0iWzIgLSBfX3NpemVTaGlmdEFtb3VudF0pOwotI3twcmludF9hcmdzIHsg
fGFyZ3wKLTw8LUVPRi5jaG9tcAotICAgICAgICBkdW1wZXItPmR1bXBPcGVyYW5kKCN7YXJnLmZp
ZWxkX25hbWV9LCAje2FyZy5pbmRleCA9PSAwfSk7Ci1FT0YKLSAgICB9fQorI2lmIE9TKFdJTkRP
V1MpICYmIEVOQUJMRShDX0xPT1ApCisgICAgICAgIC8vIEZJWE1FOiBEaXNhYmxlIHdpZGUxNiBv
cHRpbWl6YXRpb24gZm9yIFdpbmRvd3MgQ0xvb3AKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODI4MworICAgICAgICBpZiAoX19zaXplID09IE9w
Y29kZVNpemU6OldpZGUxNikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAg
ICAgICByZXR1cm4gI3ttYXBfZmllbGRzX3dpdGhfc2l6ZSgiIiwgIl9fc2l6ZSIsICY6Zml0c19j
aGVjaykuam9pbiAiXG4gICAgICAgICAgICAmJiAifTsKICAgICB9CiBFT0YKICAgICBlbmQKIAot
ICAgIGRlZiBjb25zdHJ1Y3RvcnMKLSAgICAgICAgZmllbGRzID0gKEBhcmdzIHx8IFtdKSArIChA
bWV0YWRhdGEuZW1wdHk/ID8gW10gOiBbQG1ldGFkYXRhXSkKLSAgICAgICAgaW5pdCA9IC0+KHNp
emUpIHsgZmllbGRzLmVtcHR5PyAgPyAiIiA6ICI6ICN7ZmllbGRzLm1hcC53aXRoX2luZGV4IHsg
fGFyZywgaXwgYXJnLmxvYWRfZnJvbV9zdHJlYW0oaSwgc2l6ZSkgfS5qb2luICJcbiAgICAgICAg
LCAiIH0iIH0KKyAgICBkZWYgY29uc3RydWN0b3JzX2luaXQKKyAgICAgICAgaWYgQG9wY29kZV9n
cm91cC5uaWw/CisgICAgICAgICAgICBmaWVsZHMgPSAoQGFyZ3MgfHwgW10pICsgKEBtZXRhZGF0
YS5lbXB0eT8gPyBbXSA6IFtAbWV0YWRhdGFdKQorICAgICAgICAgICAgLT4oc2l6ZSkgeyBmaWVs
ZHMuZW1wdHk/ICA/ICIiIDogIjogI3tmaWVsZHMubWFwLndpdGhfaW5kZXggeyB8YXJnLCBpfCBh
cmcubG9hZF9mcm9tX3N0cmVhbShpLCBzaXplKSB9LmpvaW4gIlxuICAgICAgICAsICIgfSIgfQor
ICAgICAgICBlbHNlCisgICAgICAgICAgICAtPihzaXplKSB7ICI6ICN7QG9wY29kZV9ncm91cC5u
YW1lfShzdHJlYW0pIiB9CisgICAgICAgIGVuZAorICAgIGVuZAogCisgICAgZGVmIGNvbnN0cnVj
dG9ycwogICAgICAgICA8PC1FT0YKICAgICAje2NhcGl0YWxpemVkX25hbWV9KGNvbnN0IHVpbnQ4
X3QqIHN0cmVhbSkKLSAgICAgICAgI3tpbml0LmNhbGwoIk9wY29kZVNpemU6Ok5hcnJvdyIpfQor
ICAgICAgICAje2NvbnN0cnVjdG9yc19pbml0LmNhbGwoIk9wY29kZVNpemU6Ok5hcnJvdyIpfQog
ICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW0sIGJpdHdpc2VfY2FzdDxjb25zdCB1
aW50OF90Kj4oc3RyZWFtKVstMV0gPT0gb3Bjb2RlSUQpOwogICAgIH0KIAogICAgICN7Y2FwaXRh
bGl6ZWRfbmFtZX0oY29uc3QgdWludDE2X3QqIHN0cmVhbSkKLSAgICAgICAgI3tpbml0LmNhbGwo
Ik9wY29kZVNpemU6OldpZGUxNiIpfQorICAgICAgICAje2NvbnN0cnVjdG9yc19pbml0LmNhbGwo
Ik9wY29kZVNpemU6OldpZGUxNiIpfQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzdHJl
YW0sIGJpdHdpc2VfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyZWFtKVstMV0gPT0gb3Bjb2RlSUQp
OwogICAgIH0KIAotCiAgICAgI3tjYXBpdGFsaXplZF9uYW1lfShjb25zdCB1aW50MzJfdCogc3Ry
ZWFtKQotICAgICAgICAje2luaXQuY2FsbCgiT3Bjb2RlU2l6ZTo6V2lkZTMyIil9CisgICAgICAg
ICN7Y29uc3RydWN0b3JzX2luaXQuY2FsbCgiT3Bjb2RlU2l6ZTo6V2lkZTMyIil9CiAgICAgewog
ICAgICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbSwgYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihzdHJlYW0pWy0xXSA9PSBvcGNvZGVJRCk7CiAgICAgfQorRU9GCisgICAgZW5kCiAKKyAgICBk
ZWYgZGVjb2RlCisgICAgICAgIDw8LUVPRgogICAgIHN0YXRpYyAje2NhcGl0YWxpemVkX25hbWV9
IGRlY29kZShjb25zdCB1aW50OF90KiBzdHJlYW0pCiAgICAgewogICAgICAgICAvLyBBIHBvaW50
ZXIgaXMgcG9pbnRpbmcgdG8gdGhlIGZpcnN0IG9wZXJhbmQgKG9wY29kZSBhbmQgcHJlZml4IGFy
ZSBub3QgaW5jbHVkZWQpLgpAQCAtMzAwLDcgKzMyMSw3IEBAIEVPRgogICAgIGVuZAogCiAgICAg
ZGVmIHNldHRlcnMKLSAgICAgICAgcHJpbnRfYXJncyB7IHxhfCBhLnNldHRlcih0cmFpdHMpIH0K
KyAgICAgICAgcHJpbnRfYXJncyB7IHxhfCBhLnNldHRlcih0cmFpdHMpIH0gaWYgQG9wY29kZV9n
cm91cC5uaWw/CiAgICAgZW5kCiAKICAgICBkZWYgbWV0YWRhdGFfc3RydWN0X2FuZF9hY2Nlc3Nv
cgpAQCAtMzEwLDkgKzMzMSwxNCBAQCBFT0YKICAgICBlbmQKIAogICAgIGRlZiBtZW1iZXJzCi0g
ICAgICAgIDw8LUVPRi5jaG9tcAorICAgICAgICBpZiBAb3Bjb2RlX2dyb3VwLm5pbD8KKyAgICAg
ICAgICAgIDw8LUVPRgorICAgIGZyaWVuZCB2b2lkIGR1bXAje0BzZWN0aW9uLmlzX3dhc20/ID8g
Ildhc20iIDogIkJ5dGVjb2RlIn0oQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgX19sb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qIF9faW5zdHJ1
Y3Rpb24pOwogI3twcmludF9tZW1iZXJzKCIgICAgIiwgJjpmaWVsZCl9I3tAbWV0YWRhdGEuZmll
bGQoIiAgICAiKX0KIEVPRgorICAgICAgICBlbHNlCisgICAgICAgICAgICAiIgorICAgICAgICBl
bmQKICAgICBlbmQKIAogICAgIGRlZiBzZXRfZW50cnlfYWRkcmVzcyhpZCkKQEAgLTM1MywyMSAr
Mzc5LDM2IEBAIEVPRgogICAgIGVuZAogCiAgICAgZGVmIHNlbGYuZHVtcF9ieXRlY29kZShuYW1l
LCBvcGNvZGVfdHJhaXRzLCBvcGNvZGVzKQotICAgICAgICA8PC1FT0YuY2hvbXAKKyAgICAgICAg
PDwtRlVMTC5jaG9tcAogdm9pZCBkdW1wI3tuYW1lfShCeXRlY29kZUR1bXBlckJhc2UqIGR1bXBl
ciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBfX2xvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlv
biogX19pbnN0cnVjdGlvbikKIHsKKyAgICBpbnQgc2l6ZVNoaWZ0QW1vdW50ID0gX19pbnN0cnVj
dGlvbi0+c2l6ZVNoaWZ0QW1vdW50PCN7b3Bjb2RlX3RyYWl0c30+KCk7CiAgICAgc3dpdGNoIChf
X2luc3RydWN0aW9uLT5vcGNvZGVJRDwje29wY29kZV90cmFpdHN9PigpKSB7CiAje29wY29kZXMu
bWFwIHsgfG9wfAotICAgICAgICA8PC1FT0YuY2hvbXAKKyAgICBpZiBvcC5hcmdzLm5pbD8KKyAg
ICAgICAgPDwtQ0FTRS5jaG9tcAogICAgIGNhc2UgI3tvcC5uYW1lfToKLSAgICAgICAgX19pbnN0
cnVjdGlvbi0+YXM8I3tvcC5jYXBpdGFsaXplZF9uYW1lfSwgI3tvcGNvZGVfdHJhaXRzfT4oKS5k
dW1wKGR1bXBlciwgX19sb2NhdGlvbiwgX19pbnN0cnVjdGlvbi0+c2l6ZVNoaWZ0QW1vdW50PCN7
b3Bjb2RlX3RyYWl0c30+KCkpOworICAgICAgICBkdW1wZXItPnByaW50TG9jYXRpb25BbmRPcChf
X2xvY2F0aW9uLCAmIioqI3tvcC51bnByZWZpeGVkX25hbWV9IlsyIC0gc2l6ZVNoaWZ0QW1vdW50
XSk7CiAgICAgICAgIGJyZWFrOwotRU9GCi0gICAgfS5qb2luICJcbiJ9CitDQVNFCisgICAgZWxz
ZQorICAgICAgICA8PC1DQVNFLmNob21wCisgICAgY2FzZSAje29wLm5hbWV9OiB7CisgICAgICAg
IGF1dG8gaW5zdHJ1Y3Rpb24gPSBfX2luc3RydWN0aW9uLT5hczwje29wLmNhcGl0YWxpemVkX25h
bWV9LCAje29wY29kZV90cmFpdHN9PigpOworICAgICAgICBkdW1wZXItPnByaW50TG9jYXRpb25B
bmRPcChfX2xvY2F0aW9uLCAmIioqI3tvcC51bnByZWZpeGVkX25hbWV9IlsyIC0gc2l6ZVNoaWZ0
QW1vdW50XSk7Cisje29wLnByaW50X2FyZ3MgeyB8YXJnfAorICAgICAgICAgICAgPDwtQVJHLmNo
b21wCisgICAgICAgIGR1bXBlci0+ZHVtcE9wZXJhbmQoaW5zdHJ1Y3Rpb24uI3thcmcuZmllbGRf
bmFtZX0sICN7YXJnLmluZGV4ID09IDB9KTsKK0FSRworICAgICAgICB9fQorICAgICAgICBicmVh
azsKKyAgICB9CitDQVNFCisgICAgZW5kfS5qb2luICJcbiJ9CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQotRU9GCitGVUxMCiAgICAgZW5kCiBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvT3Bjb2RlR3Jv
dXAucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZUdyb3VwLnJiCmlu
ZGV4IDhlYzJhMjNjZjQ4Li4wODdiZGQxODllZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRvci9PcGNvZGVHcm91cC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdG9yL09wY29kZUdyb3VwLnJiCkBAIC0yOCwxMCArMjgsNjAgQEAgY2xhc3MgT3Bj
b2RlR3JvdXAKICAgICBhdHRyX3JlYWRlciA6b3Bjb2RlcwogICAgIGF0dHJfcmVhZGVyIDpjb25m
aWcKIAotICAgIGRlZiBpbml0aWFsaXplKHNlY3Rpb24sIGRlc2MsIG9wY29kZXMsIGNvbmZpZykK
KyAgICBkZWYgaW5pdGlhbGl6ZShzZWN0aW9uLCBuYW1lLCBvcGNvZGVzLCBjb25maWcpCiAgICAg
ICAgIEBzZWN0aW9uID0gc2VjdGlvbgogICAgICAgICBAbmFtZSA9IG5hbWUKICAgICAgICAgQG9w
Y29kZXMgPSBvcGNvZGVzCiAgICAgICAgIEBjb25maWcgPSBjb25maWcKKyAgICAgICAgQG1ldGFk
YXRhID0gTWV0YWRhdGEubmV3IGNvbmZpZ1s6bWV0YWRhdGFdLCBjb25maWdbOm1ldGFkYXRhX2lu
aXRpYWxpemVyc10KKyAgICAgICAgQGFyZ3MgPSBjb25maWdbOmFyZ3NdLm1hcC53aXRoX2luZGV4
IHsgfChhcmdfbmFtZSwgdHlwZSksIGluZGV4fCBBcmd1bWVudC5uZXcgYXJnX25hbWUsIHR5cGUs
IGluZGV4IH0gdW5sZXNzIGNvbmZpZ1s6YXJnc10ubmlsPworICAgICAgICBAZmFrZV9vcGNvZGUg
PSBPcGNvZGUubmV3KHNlY3Rpb24sIG5hbWUsIGNvbmZpZ1s6ZXh0cmFzXSwgY29uZmlnWzphcmdz
XSwgY29uZmlnWzptZXRhZGF0YV0sIGNvbmZpZ1s6bWV0YWRhdGFfaW5pdGlhbGl6ZXJzXSwgY29u
ZmlnWzp0bXBzXSwgY29uZmlnWzpjaGVja3BvaW50c10sIG5pbCkKKyAgICBlbmQKKworICAgIGRl
ZiBuYW1lCisgICAgICAgIEBzZWN0aW9uLmNvbmZpZ1s6b3BfcHJlZml4XS5zcGxpdCgnXycpLm1h
cCgmOmNhcGl0YWxpemUpLmpvaW4gKyAiI3tAbmFtZX0iCisgICAgZW5kCisKKyAgICBkZWYgc3Ry
dWN0CisgICAgICAgIDw8LUVPRgorc3RydWN0ICN7bmFtZX0gOiBwdWJsaWMgSW5zdHJ1Y3Rpb24g
eworI3tjb25zdHJ1Y3RvcnN9Citwcm90ZWN0ZWQ6Cisje0BmYWtlX29wY29kZS5lbWl0X2ltcGx9
Cisje0BmYWtlX29wY29kZS5jaGVja19pbXBsfQorcHVibGljOgorI3tzZXR0ZXJzfQorI3ttZW1i
ZXJzfQorfTsKK0VPRgorICAgIGVuZAorCisgICAgZGVmIGNvbnN0cnVjdG9ycworICAgICAgICA8
PC1FT0YKKyAgICAje25hbWV9KGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSkKKyAgICAgICAgI3tAZmFr
ZV9vcGNvZGUuY29uc3RydWN0b3JzX2luaXQuY2FsbCgiT3Bjb2RlU2l6ZTo6TmFycm93Iil9Cisg
ICAgeworICAgIH0KKworICAgICN7bmFtZX0oY29uc3QgdWludDE2X3QqIHN0cmVhbSkKKyAgICAg
ICAgI3tAZmFrZV9vcGNvZGUuY29uc3RydWN0b3JzX2luaXQuY2FsbCgiT3Bjb2RlU2l6ZTo6V2lk
ZTE2Iil9CisgICAgeworICAgIH0KKworICAgICN7bmFtZX0oY29uc3QgdWludDMyX3QqIHN0cmVh
bSkKKyAgICAgICAgI3tAZmFrZV9vcGNvZGUuY29uc3RydWN0b3JzX2luaXQuY2FsbCgiT3Bjb2Rl
U2l6ZTo6V2lkZTMyIil9CisgICAgeworICAgIH0KK0VPRgorICAgIGVuZAorCisgICAgZGVmIHNl
dHRlcnMKKyAgICAgICAgQGZha2Vfb3Bjb2RlLnByaW50X2FyZ3MgeyB8YXwgYS5zZXR0ZXIoQGZh
a2Vfb3Bjb2RlLnRyYWl0cykgfQorICAgIGVuZAorCisgICAgZGVmIG1lbWJlcnMKKyAgICAgICAg
PDwtRU9GLmNob21wCisje0BmYWtlX29wY29kZS5wcmludF9tZW1iZXJzKCIgICAgIiwgJjpmaWVs
ZCl9I3tAbWV0YWRhdGEuZmllbGQoIiAgICAiKX0KK0VPRgogICAgIGVuZAogZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKaW5kZXggNjY4NTViYTY1MDAuLmMx
YzZhMjhkNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1Nl
Y3Rpb24ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9uLnJi
CkBAIC0zMCw2ICszMCw3IEBAIGNsYXNzIFNlY3Rpb24KICAgYXR0cl9yZWFkZXIgOm5hbWUKICAg
YXR0cl9yZWFkZXIgOmNvbmZpZwogICBhdHRyX3JlYWRlciA6b3Bjb2RlcworICBhdHRyX3JlYWRl
ciA6b3Bjb2RlX2dyb3VwcwogCiAgIGRlZiBpbml0aWFsaXplKG5hbWUsIGNvbmZpZykKICAgICBA
bmFtZSA9IG5hbWUKQEAgLTQyLDEzICs0MywxNCBAQCBjbGFzcyBTZWN0aW9uCiAgICAgICBAb3Bj
b2RlcyA8PCBjcmVhdGVfb3Bjb2RlKG5hbWUsIGNvbmZpZykKICAgZW5kCiAKLSAgZGVmIGNyZWF0
ZV9vcGNvZGUobmFtZSwgY29uZmlnKQotICAgICAgT3Bjb2RlLm5ldyhzZWxmLCBuYW1lLCBjb25m
aWdbOmV4dHJhc10sIGNvbmZpZ1s6YXJnc10sIGNvbmZpZ1s6bWV0YWRhdGFdLCBjb25maWdbOm1l
dGFkYXRhX2luaXRpYWxpemVyc10sIGNvbmZpZ1s6dG1wc10sIGNvbmZpZ1s6Y2hlY2twb2ludHNd
KQorICBkZWYgY3JlYXRlX29wY29kZShuYW1lLCBjb25maWcsIG9wY29kZV9ncm91cCA9IG5pbCkK
KyAgICAgIE9wY29kZS5uZXcoc2VsZiwgbmFtZSwgY29uZmlnWzpleHRyYXNdLCBjb25maWdbOmFy
Z3NdLCBjb25maWdbOm1ldGFkYXRhXSwgY29uZmlnWzptZXRhZGF0YV9pbml0aWFsaXplcnNdLCBj
b25maWdbOnRtcHNdLCBjb25maWdbOmNoZWNrcG9pbnRzXSwgb3Bjb2RlX2dyb3VwKQogICBlbmQK
IAogICBkZWYgYWRkX29wY29kZV9ncm91cChuYW1lLCBvcGNvZGVzLCBjb25maWcpCi0gICAgICBv
cGNvZGVzID0gb3Bjb2Rlcy5tYXAgeyB8b3Bjb2RlfCBjcmVhdGVfb3Bjb2RlKG9wY29kZSwgY29u
ZmlnKSB9Ci0gICAgICBAb3Bjb2RlX2dyb3VwcyA8PCBPcGNvZGVHcm91cC5uZXcoc2VsZiwgbmFt
ZSwgb3Bjb2RlcywgY29uZmlnKQorICAgICAgb3Bjb2RlX2dyb3VwID0gT3Bjb2RlR3JvdXAubmV3
KHNlbGYsIG5hbWUsIG9wY29kZXMsIGNvbmZpZykKKyAgICAgIEBvcGNvZGVfZ3JvdXBzIDw8IG9w
Y29kZV9ncm91cAorICAgICAgb3Bjb2RlcyA9IG9wY29kZXMubWFwIHsgfG9wY29kZXwgY3JlYXRl
X29wY29kZShvcGNvZGUsIGNvbmZpZywgb3Bjb2RlX2dyb3VwKSB9CiAgICAgICBAb3Bjb2RlcyAr
PSBvcGNvZGVzCiAgIGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL1dhc20ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1dhc20ucmIK
aW5kZXggYzE3ODU4NmQ1MjEuLjRjNTBlOTI2ZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL1dhc20ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRvci9XYXNtLnJiCkBAIC02LDYgKzYsMTAgQEAgbW9kdWxlIFdhc20KICAgICBlbmQKIAog
ICAgIGRlZiBzZWxmLmF1dG9nZW5lcmF0ZV9vcGNvZGVzKGNvbnRleHQsIHdhc21fanNvbikKKyAg
ICAgICAgdW5hcnlPcHMgPSBbXQorICAgICAgICBiaW5hcnlPcHMgPSBbXQorICAgICAgICB2aXJ0
dWFsUmVnaXN0ZXIgPSBjb250ZXh0LmV2YWwoIlZpcnR1YWxSZWdpc3RlciIpCisKICAgICAgICAg
SlNPTi5wYXJzZSh3YXNtX2pzb24pWyJvcGNvZGUiXS5lYWNoIGRvIHxuYW1lLCB2YWx1ZXwKICAg
ICAgICAgICAgIGNhdGVnb3J5ID0gdmFsdWVbImNhdGVnb3J5Il0KIApAQCAtMTQsMzIgKzE4LDI5
IEBAIG1vZHVsZSBXYXNtCiAgICAgICAgICAgICByZXR1cm5Db3VudCA9IHZhbHVlWyJyZXR1cm4i
XS5zaXplCiAgICAgICAgICAgICBwYXJhbWV0ZXJDb3VudCA9IHZhbHVlWyJwYXJhbWV0ZXIiXS5z
aXplCiAKLSAgICAgICAgICAgIGFzc2VydCgic2hvdWxkIHJldHVybiAwIG9yIDEgdmFsdWVzIikg
eyBbMCwgMV0uaW5jbHVkZT8gcmV0dXJuQ291bnQgfQorICAgICAgICAgICAgYXNzZXJ0KCJzaG91
bGQgcmV0dXJuIGV4YWN0bHkgMSB2YWx1ZSIpIHsgcmV0dXJuQ291bnQgPT0gMX0KICAgICAgICAg
ICAgIGFzc2VydCgic2hvdWxkIG9ubHkgaGF2ZSAxIG9yIDIgcGFyYW1ldGVycyIpIHsgWzEsIDJd
LmluY2x1ZGU/IHBhcmFtZXRlckNvdW50IH0KIAogICAgICAgICAgICAgbmFtZSA9IG5vcm1hbGl6
ZShuYW1lKQotICAgICAgICAgICAgYXJndW1lbnRzID0ge30KLQotICAgICAgICAgICAgdmlydHVh
bFJlZ2lzdGVyID0gY29udGV4dC5ldmFsKCJWaXJ0dWFsUmVnaXN0ZXIiKQogCi0gICAgICAgICAg
ICBpZiByZXR1cm5Db3VudCA+IDAKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNbOmRzdF0gPSB2
aXJ0dWFsUmVnaXN0ZXIKKyAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJDb3VudCA9PSAxKQorICAg
ICAgICAgICAgICAgIHVuYXJ5T3BzIDw8IG5hbWUKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBiaW5hcnlPcHMgPDwgbmFtZQogICAgICAgICAgICAgZW5kCisgICAgICAgIGVuZAog
Ci0gICAgICAgICAgICBjYXNlIHBhcmFtZXRlckNvdW50Ci0gICAgICAgICAgICB3aGVuIDEKLSAg
ICAgICAgICAgICAgICBhcmd1bWVudHNbOm9wZXJhbmRdID0gdmlydHVhbFJlZ2lzdGVyCi0gICAg
ICAgICAgICB3aGVuIDIKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNbOmxoc10gPSB2aXJ0dWFs
UmVnaXN0ZXIKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNbOnJoc10gPSB2aXJ0dWFsUmVnaXN0
ZXIKLSAgICAgICAgICAgIGVuZAorICAgICAgICBkZWNsYXJlX29wX2dyb3VwID0gY29udGV4dC5l
dmFsKCJQcm9jLm5ldyB7IHxuYW1lLCBvcHMsIGNvbmZpZ3wgb3BfZ3JvdXAobmFtZSwgb3BzLCBj
b25maWcpIH0iKQogCi0gICAgICAgICAgICBjb250ZXh0LmV2YWwoIlByb2MubmV3IHsgfGFyZ3Vt
ZW50cywgZXh0cmFzIHwgb3AoJyN7bmFtZX0nLCB7IGV4dHJhczogZXh0cmFzLCBhcmdzOiBhcmd1
bWVudHMgfSkgfSIpLmNhbGwoYXJndW1lbnRzLCB2YWx1ZSkKLSAgICAgICAgZW5kCisgICAgICAg
IGNvbmZpZ1VuYXJ5T3BzID0geyBleHRyYXM6IHthdXRvZ2VuZXJhdGVkOiB0cnVlfSwgYXJnczog
e29wZXJhbmQ6IHZpcnR1YWxSZWdpc3RlciwgZHN0OiB2aXJ0dWFsUmVnaXN0ZXJ9fQorICAgICAg
ICBjb25maWdCaW5hcnlPcHMgPSB7IGV4dHJhczoge2F1dG9nZW5lcmF0ZWQ6IHRydWV9LCBhcmdz
OiB7bGhzOiB2aXJ0dWFsUmVnaXN0ZXIsIHJoczogdmlydHVhbFJlZ2lzdGVyLCBkc3Q6IHZpcnR1
YWxSZWdpc3Rlcn19CisKKyAgICAgICAgZGVjbGFyZV9vcF9ncm91cC5jYWxsKCJVbmFyeU9wcyIs
IHVuYXJ5T3BzLCBjb25maWdVbmFyeU9wcykKKyAgICAgICAgZGVjbGFyZV9vcF9ncm91cC5jYWxs
KCJCaW5hcnlPcHMiLCBiaW5hcnlPcHMsIGNvbmZpZ0JpbmFyeU9wcykKICAgICBlbmQKIAogICAg
IGRlZiBzZWxmLmdlbmVyYXRlX2xsaW50X2dlbmVyYXRvcihzZWN0aW9uKQotICAgICAgICBvcGNv
ZGVzID0gc2VjdGlvbi5vcGNvZGVzLnNlbGVjdCB7IHxvcHwgWyJhcml0aG1ldGljIiwgImNvbXBh
cmlzb24iLCAiY29udmVyc2lvbiJdLmluY2x1ZGU/IG9wLmV4dHJhc1siY2F0ZWdvcnkiXSB9Cisg
ICAgICAgIG9wY29kZXMgPSBzZWN0aW9uLm9wY29kZXMuc2VsZWN0IHsgfG9wfCBvcC5leHRyYXNb
OmF1dG9nZW5lcmF0ZWRdIH0KICAgICAgICAgbWV0aG9kcyA9IG9wY29kZXMubWFwIGRvIHxvcHwK
ICAgICAgICAgICAgIGNhc2Ugb3AuYXJncy5zaXplCiAgICAgICAgICAgICB3aGVuIDIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388623</attachid>
            <date>2020-01-23 17:13:14 -0800</date>
            <delta_ts>2020-01-28 04:27:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch206563</filename>
            <type>text/plain</type>
            <size>32262</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDFmZTJjMjcyZTc4Li4xN2U1YTUzNDMwNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDEtMjMgIFJvYmlu
IE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBTaHJpbmsgQnl0ZWNv
ZGVTdHJ1Y3RzLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjU2MworCisgICAgICAgIFJldmlld2VkIGJ5IFRhZGV1IFphZ2FsbG8uCisKKyAgICAg
ICAgVGhlIG1haW4gZ29hbCBvZiB0aGlzIHBhdGNoIHdhcyB0byByZWR1Y2UgY29tcGlsZSB0aW1l
cy4KKyAgICAgICAgSXQgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBzaW1wbGlmaWNhdG9ucyB0byBC
eXRlY29kZVN0cnVjdHMuaCwgd2hpY2ggaXMgaHVnZSBhbmQgdHJhbnNpdGl2ZWx5IGluY2x1ZGVk
IGluIG1vc3Qgb2YgSlNDICh0aHJvdWdoIENvbW1vblNsb3dQYXRocy5oIC0+IEpJVC5oKToKKyAg
ICAgICAgLSBPbmUgc3RydWN0IHBlciBvcF9ncm91cCwgd2l0aCBzZXR0ZXJzLCBjb25zdHJ1Y3Rv
cnMsIGVtaXRJbXBsLCBjaGVja0ltcGwsIGFuZCB0aGUgbWVtYmVycywgdGhpcyB3YXkgdGhleSBh
cmUgc2hhcmVkIGFtb25nIHRoZSB2YXJpb3VzIG9wY29kZXMgaW4gYSBncm91cC4KKyAgICAgICAg
LSBNb3JlIG9wX2dyb3VwcyBpbiBCeXRlY29kZUxpc3QucmIgKHRvIG1heGltaXplIHRoZSBiZW5l
Zml0IG9mIHRoZSBwcmV2aW91cyBvcHRpbWl6YXRpb24pCisgICAgICAgIC0gQXV0b21hdGljYWxs
eSB1c2UgV2FzbVVuYXJ5T3BzIGFuZCBXYXNtQmluYXJ5T3BzIGdyb3VwcyBmb3IgdGhlIG9wcyBh
dXRvZ2VuZXJhdGVkIGluIFdhc20ucmIKKyAgICAgICAgLSBUaGUgY2hlY2tzIHRoYXQgb3Bfd2lk
ZTE2LCBvcF93aWRlMzIsIHdhc21fd2lkZTE2LCB3YXNtX3dpZGUzMiBmaXQgaW4gT3Bjb2RlSUQv
V2FzbU9wY29kZUlEIGFyZSBub3cgaW4gYSBzaW5nbGUgcGxhY2UgYXMgYSBzdGF0aWMgYXNzZXJ0
IGluIEZpdHMuaCwgaW5zdGVhZCBvZiBiZWluZyByZXBlYXRlZCBpbiB0aGUgY2hlY2tJbXBsIG9m
IGV2ZXJ5IHNpbmdsZSBpbnN0cnVjdGlvbgorICAgICAgICAtIFJlbW92aW5nIHRoZSB1bm5lY2Vz
c2FyeSBwYXJhbWV0ZXJpemF0aW9uIG9mIGNoZWNrV2l0aG91dE1ldGFkYUlEIGJ5IEJ5dGVjb2Rl
R2VuZXJhdG9yCisgICAgICAgIC0gUmVtb3ZlIHRoZSByZWNvcmRPcGNvZGUgcGFyYW1ldGVyLCBz
aW5jZSBpdCBpcyBhbHdheXMgdHJ1ZQorICAgICAgICAtIElubGluZSBhbGwgb2YgdGhlIGR1bXAg
ZnVuY3Rpb25zICh3aGljaCB3ZXJlIGluIEJ5dGVjb2RlU3RydWN0cy5oKSBpbnRvIHRoZSBkdW1w
Qnl0ZWNvZGUvZHVtcFdhc20gZnVuY3Rpb25zICh3aGljaCBhcmUgaW4gYSAuY3BwKQorCisgICAg
ICAgIEFzIGV4cGVjdGVkLCBpdCB2ZXJ5IHNpZ25pZmljYW50bHkgc2hydW5rIEJ5dGVjb2RlU3Ry
dWN0cy5oOiBmcm9tIDY0Mjk1IGxpbmVzICgyLjcyN01CKSB0byAzOTQwNCBsaW5lcyAoMS41NzVN
QikuCisgICAgICAgIFNhZGx5IHRoZSBjb21waWxlIHRpbWUgaW1wcm92ZW1lbnQgaXMgbmVnbGln
aWJsZSAoYSBjb3VwbGUgc2Vjb25kcyBvdXQgb2YgYWJvdXQgM21uIG9uIG15IGlNYWNQcm8pLgor
CisgICAgICAgIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggdHVybmVkIG91dCB0byBiZSBhIGZhaXJseSBz
aWduaWZpY2FudCBiaW5hcnkgc2l6ZSBzYXZpbmcsIGZyb20gMjYuMDQ0TUIgdG8gMjUuNTkyTUIg
KGEgc2F2aW5nIG9mIGFib3V0IDQ1MGtCKSBpbiByZWxlYXNlIG1vZGUuCisKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlWYWwpOgorICAgICAgICAqIGdlbmVyYXRvci9E
U0wucmI6CisgICAgICAgICogZ2VuZXJhdG9yL01ldGFkYXRhLnJiOgorICAgICAgICAqIGdlbmVy
YXRvci9PcGNvZGUucmI6CisgICAgICAgICogZ2VuZXJhdG9yL09wY29kZUdyb3VwLnJiOgorICAg
ICAgICAqIGdlbmVyYXRvci9TZWN0aW9uLnJiOgorICAgICAgICAqIGdlbmVyYXRvci9XYXNtLnJi
OgorCiAyMDIwLTAxLTIzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIE9wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMgc2hvdWxkIHJlc2V0IHZhbHVl
IG93bmVycyBiZWZvcmUgcnVubmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGMuLmUwZGNiN2QwODEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTY0MSwz
NyArNjQxLDIzIEBAIG9wIDpqbXAsCiAgICAgICAgIHRhcmdldExhYmVsOiBCb3VuZExhYmVsLAog
ICAgIH0KIAotb3AgOmp0cnVlLAotICAgIGFyZ3M6IHsKLSAgICAgICAgY29uZGl0aW9uOiBWaXJ0
dWFsUmVnaXN0ZXIsCi0gICAgICAgIHRhcmdldExhYmVsOiBCb3VuZExhYmVsLAotICAgIH0KLQot
b3AgOmpmYWxzZSwKK29wX2dyb3VwIDpCb29sZWFuSnVtcCwKKyAgICBbCisgICAgICAgIDpqdHJ1
ZSwKKyAgICAgICAgOmpmYWxzZQorICAgIF0sCiAgICAgYXJnczogewogICAgICAgICBjb25kaXRp
b246IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdGFyZ2V0TGFiZWw6IEJvdW5kTGFiZWwsCiAg
ICAgfQogCi1vcCA6amVxX251bGwsCi0gICAgYXJnczogewotICAgICAgICB2YWx1ZTogVmlydHVh
bFJlZ2lzdGVyLAotICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKLSAgICB9Ci0KLW9w
IDpqbmVxX251bGwsCi0gICAgYXJnczogewotICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAotICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKLSAgICB9Ci0KLW9wIDpqdW5kZWZp
bmVkX29yX251bGwsCi0gICAgYXJnczogewotICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAotICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKLSAgICB9Ci0KLW9wIDpqbnVuZGVm
aW5lZF9vcl9udWxsLAorb3BfZ3JvdXAgOlRlc3RpbmdKdW1wLAorICAgIFsKKyAgICAgICAgOmpl
cV9udWxsLAorICAgICAgICA6am5lcV9udWxsLAorICAgICAgICA6anVuZGVmaW5lZF9vcl9udWxs
LAorICAgICAgICA6am51bmRlZmluZWRfb3JfbnVsbAorICAgIF0sCiAgICAgYXJnczogewogICAg
ICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRM
YWJlbCwKQEAgLTc0OCwzMSArNzM0LDEzIEBAIG9wIDpzZXRfZnVuY3Rpb25fbmFtZSwKICAgICB9
CiAKICMgb3BfY2FsbCB2YXJpYXRpb25zCi1vcCA6Y2FsbCwKLSAgICBhcmdzOiB7Ci0gICAgICAg
IGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwK
LSAgICAgICAgYXJnYzogdW5zaWduZWQsCi0gICAgICAgIGFyZ3Y6IHVuc2lnbmVkLAotICAgIH0s
Ci0gICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5m
bywKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAotICAgIH0KLQotb3AgOnRhaWxfY2Fs
bCwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBj
YWxsZWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgYXJnYzogdW5zaWduZWQsCi0gICAgICAg
IGFyZ3Y6IHVuc2lnbmVkLAotICAgIH0sCi0gICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FsbExp
bmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LAotICAgIH0KLQotb3AgOmNhbGxfZXZhbCwKK29wX2dyb3VwIDpOb25WYXJhcmdzQ2FsbHMsCisg
ICAgWworICAgICAgICA6Y2FsbCwKKyAgICAgICAgOnRhaWxfY2FsbCwKKyAgICAgICAgOmNhbGxf
ZXZhbCwKKyAgICAgICAgOmNvbnN0cnVjdAorICAgIF0sCiAgICAgYXJnczogewogICAgICAgICBk
c3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBA
IC03ODQsNyArNzUyLDEyIEBAIG9wIDpjYWxsX2V2YWwsCiAgICAgICAgIHByb2ZpbGU6IFZhbHVl
UHJvZmlsZSwKICAgICB9CiAKLW9wIDpjYWxsX3ZhcmFyZ3MsCitvcF9ncm91cCA6VmFyYXJnc0Nh
bGxzLAorICAgIFsKKyAgICAgICAgOmNhbGxfdmFyYXJncywKKyAgICAgICAgOnRhaWxfY2FsbF92
YXJhcmdzLAorICAgICAgICA6Y29uc3RydWN0X3ZhcmFyZ3MKKyAgICBdLAogICAgIGFyZ3M6IHsK
ICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGNhbGxlZTogVmlydHVhbFJl
Z2lzdGVyLApAQCAtODA1LDI3ICs3NzgsNiBAQCBvcCA6Y2FsbF92YXJhcmdzLAogICAgICAgICBt
YWtlQ2FsbDogbmlsLAogICAgIH0KIAotb3AgOnRhaWxfY2FsbF92YXJhcmdzLAotICAgIGFyZ3M6
IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGNhbGxlZTogVmlydHVh
bFJlZ2lzdGVyLAotICAgICAgICB0aGlzVmFsdWU/OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAg
IGFyZ3VtZW50cz86IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZmlyc3RGcmVlOiBWaXJ0dWFs
UmVnaXN0ZXIsCi0gICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCi0gICAgfSwKLSAgICBtZXRhZGF0
YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmls
ZTogVmFsdWVQcm9maWxlLAotICAgIH0sCi0gICAgdG1wczogewotICAgICAgICBhcmdDb3VudElu
Y2x1ZGluZ1RoaXM6IHVuc2lnbmVkCi0gICAgfSwKLSAgICBjaGVja3BvaW50czogewotICAgICAg
ICBkZXRlcm1pbmluZ0FyZ0NvdW50OiBuaWwsCi0gICAgICAgIG1ha2VDYWxsOiBuaWwsCi0gICAg
fQotCiBvcCA6dGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzLAogICAgIGFyZ3M6IHsKICAgICAg
ICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC04NDAsMzkgKzc5Miw2IEBAIG9wIDp0YWlsX2Nh
bGxfZm9yd2FyZF9hcmd1bWVudHMsCiAgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAg
ICB9CiAKLW9wIDpjb25zdHJ1Y3QsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxS
ZWdpc3RlciwKLSAgICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGFyZ2M6
IHVuc2lnbmVkLAotICAgICAgICBhcmd2OiB1bnNpZ25lZCwKLSAgICB9LAotICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICB9Ci0KLW9wIDpjb25zdHJ1Y3RfdmFyYXJncywKLSAg
ICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBjYWxsZWU6
IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGhpc1ZhbHVlPzogVmlydHVhbFJlZ2lzdGVyLAot
ICAgICAgICBhcmd1bWVudHM/OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGZpcnN0RnJlZTog
VmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBmaXJzdFZhckFyZzogaW50LAotICAgIH0sCi0gICAg
bWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAgICAg
IHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICB9LAotICAgIHRtcHM6IHsKLSAgICAgICAgYXJn
Q291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZAotICAgIH0sCi0gICAgY2hlY2twb2ludHM6IHsK
LSAgICAgICAgZGV0ZXJtaW5pbmdBcmdDb3VudDogbmlsLAotICAgICAgICBtYWtlQ2FsbDogbmls
LAotICAgIH0KLQogb3AgOnJldCwKICAgICBhcmdzOiB7CiAgICAgICAgIHZhbHVlOiBWaXJ0dWFs
UmVnaXN0ZXIsCkBAIC0xMzYxLDQyICsxMjgwLDI4IEBAIG9wIDpyZWZfZnVuYywKICAgICAgICAg
ZnVuY3Rpb25JbmRleDogdW5zaWduZWQsCiAgICAgfQogCi1vcCA6Z2V0X2dsb2JhbCwKLSAgICBh
cmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBnbG9iYWxJbmRl
eDogdW5zaWduZWQsCi0gICAgfQotCi1vcCA6c2V0X2dsb2JhbCwKLSAgICBhcmdzOiB7Ci0gICAg
ICAgIGdsb2JhbEluZGV4OiB1bnNpZ25lZCwKLSAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICB9Ci0KLW9wIDpzZXRfZ2xvYmFsX3JlZiwKK29wX2dyb3VwIDpTZXRHbG9iYWxHcm91
cCwKKyAgICBbCisgICAgICAgIDpzZXRfZ2xvYmFsLAorICAgICAgICA6c2V0X2dsb2JhbF9yZWYs
CisgICAgICAgIDpzZXRfZ2xvYmFsX3BvcnRhYmxlX2JpbmRpbmcsCisgICAgICAgIDpzZXRfZ2xv
YmFsX3JlZl9wb3J0YWJsZV9iaW5kaW5nCisgICAgXSwKICAgICBhcmdzOiB7CiAgICAgICAgIGds
b2JhbEluZGV4OiB1bnNpZ25lZCwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKICAg
ICB9CiAKLW9wIDpnZXRfZ2xvYmFsX3BvcnRhYmxlX2JpbmRpbmcsCitvcF9ncm91cCA6R2V0R2xv
YmFsR3JvdXAsCisgICAgWworICAgICAgICA6Z2V0X2dsb2JhbCwKKyAgICAgICAgOmdldF9nbG9i
YWxfcG9ydGFibGVfYmluZGluZworICAgIF0sCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZp
cnR1YWxSZWdpc3RlciwKICAgICAgICAgZ2xvYmFsSW5kZXg6IHVuc2lnbmVkLAogICAgIH0KIAot
b3AgOnNldF9nbG9iYWxfcG9ydGFibGVfYmluZGluZywKLSAgICBhcmdzOiB7Ci0gICAgICAgIGds
b2JhbEluZGV4OiB1bnNpZ25lZCwKLSAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICB9Ci0KLW9wIDpzZXRfZ2xvYmFsX3JlZl9wb3J0YWJsZV9iaW5kaW5nLAotICAgIGFyZ3M6IHsK
LSAgICAgICAgZ2xvYmFsSW5kZXg6IHVuc2lnbmVkLAotICAgICAgICB2YWx1ZTogVmlydHVhbFJl
Z2lzdGVyLAotICAgIH0KLQogb3AgOnRhYmxlX2dldCwKICAgICBhcmdzOiB7CiAgICAgICAgIGRz
dDogVmlydHVhbFJlZ2lzdGVyLApAQCAtMTQzMywzMCArMTMzOCwyMiBAQCBvcCA6dGFibGVfZmls
bCwKICAgICAgICAgdGFibGVJbmRleDogdW5zaWduZWQsCiAgICAgfQogCi1vcCA6Y2FsbCwKLSAg
ICBhcmdzOiB7Ci0gICAgICAgIGZ1bmN0aW9uSW5kZXg6IHVuc2lnbmVkLAotICAgICAgICBzdGFj
a09mZnNldDogdW5zaWduZWQsCi0gICAgICAgIG51bWJlck9mU3RhY2tBcmdzOiB1bnNpZ25lZCwK
LSAgICB9Ci0KLW9wIDpjYWxsX25vX3RscywKK29wX2dyb3VwIDpEaXJlY3RDYWxscywKKyAgICBb
CisgICAgICAgIDpjYWxsLAorICAgICAgICA6Y2FsbF9ub190bHMKKyAgICBdLAogICAgIGFyZ3M6
IHsKICAgICAgICAgZnVuY3Rpb25JbmRleDogdW5zaWduZWQsCiAgICAgICAgIHN0YWNrT2Zmc2V0
OiB1bnNpZ25lZCwKICAgICAgICAgbnVtYmVyT2ZTdGFja0FyZ3M6IHVuc2lnbmVkLAogICAgIH0K
IAotb3AgOmNhbGxfaW5kaXJlY3QsCi0gICAgYXJnczogewotICAgICAgICBmdW5jdGlvbkluZGV4
OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwKLSAg
ICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJnczog
dW5zaWduZWQsCi0gICAgICAgIHRhYmxlSW5kZXg6IHVuc2lnbmVkLAotICAgIH0KLQotb3AgOmNh
bGxfaW5kaXJlY3Rfbm9fdGxzLAorb3BfZ3JvdXAgOkluZGlyZWN0Q2FsbHMsCisgICAgWworICAg
ICAgICA6Y2FsbF9pbmRpcmVjdCwKKyAgICAgICAgOmNhbGxfaW5kaXJlY3Rfbm9fdGxzCisgICAg
XSwKICAgICBhcmdzOiB7CiAgICAgICAgIGZ1bmN0aW9uSW5kZXg6IFZpcnR1YWxSZWdpc3RlciwK
ICAgICAgICAgc2lnbmF0dXJlSW5kZXg6IHVuc2lnbmVkLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GaXRzLmgKaW5kZXggNTc3ODliYzJjNjYuLjg3OWUzN2Q3MWI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTUyLDcgKzUyLDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgT3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8VCwgc2l6ZSwgc3RkOjplbmFibGVf
aWZfdDxzaXplb2YoVCkgPT0gc2l6ZSwgc3RkOjp0cnVlX3R5cGU+PiB7CiAgICAgdXNpbmcgVGFy
Z2V0VHlwZSA9IHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlwZTsKIAotICAg
IHN0YXRpYyBib29sIGNoZWNrKFQpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgY2hlY2soVCkgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgc3RhdGljIFRhcmdldFR5
cGUgY29udmVydChUIHQpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUYXJnZXRUeXBlPih0KTsgfQog
CkBAIC02NCw3ICs2NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIE9wY29kZVNpemUgc2l6ZT4K
IHN0cnVjdCBGaXRzPFQsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19pbnRlZ3JhbDxU
Pjo6dmFsdWUgJiYgc2l6ZW9mKFQpICE9IHNpemUgJiYgIXN0ZDo6aXNfc2FtZTxib29sLCBUPjo6
dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gewogICAgIHVzaW5nIFRhcmdldFR5cGUgPSBzdGQ6OmNv
bmRpdGlvbmFsX3Q8c3RkOjppc191bnNpZ25lZDxUPjo6dmFsdWUsIHR5cGVuYW1lIFR5cGVCeVNp
emU8c2l6ZT46OnVuc2lnbmVkVHlwZSwgdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6c2lnbmVk
VHlwZT47CiAKLSAgICBzdGF0aWMgYm9vbCBjaGVjayhUIHQpCisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGNoZWNrKFQgdCkKICAgICB7CiAgICAgICAgIHJldHVybiB0ID49IHN0ZDo6bnVtZXJp
Y19saW1pdHM8VGFyZ2V0VHlwZT46Om1pbigpICYmIHQgPD0gc3RkOjpudW1lcmljX2xpbWl0czxU
YXJnZXRUeXBlPjo6bWF4KCk7CiAgICAgfQpAQCAtMjIyLDcgKzIyMiw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIEUsIE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPEUsIHNpemUsIHN0ZDo6ZW5h
YmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+Ojp2YWx1ZSwgc3Rk
Ojp0cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNp
emU+IHsKICAgICB1c2luZyBCYXNlID0gRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBz
aXplPjsKIAotICAgIHN0YXRpYyBib29sIGNoZWNrKEUgZSkgeyByZXR1cm4gQmFzZTo6Y2hlY2so
c3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPj4oZSkpOyB9CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGNoZWNrKEUgZSkgeyByZXR1cm4gQmFzZTo6Y2hlY2soc3RhdGljX2Nh
c3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPj4oZSkpOyB9CiAKICAgICBzdGF0aWMgdHlwZW5h
bWUgQmFzZTo6VGFyZ2V0VHlwZSBjb252ZXJ0KEUgZSkKICAgICB7CkBAIC0zMjcsNCArMzI3LDEy
IEBAIHN0cnVjdCBGaXRzPEdlbmVyaWNCb3VuZExhYmVsPEdlbmVyYXRvclRyYWl0cz4sIHNpemU+
IDogcHVibGljIEZpdHM8aW50LCBzaXplPiB7CiAgICAgfQogfTsKIAorc3RhdGljX2Fzc2VydChG
aXRzPE9wY29kZUlELCBPcGNvZGVTaXplOjpOYXJyb3c+OjpjaGVjayhvcF93aWRlMTYpKTsKK3N0
YXRpY19hc3NlcnQoRml0czxPcGNvZGVJRCwgT3Bjb2RlU2l6ZTo6TmFycm93Pjo6Y2hlY2sob3Bf
d2lkZTMyKSk7CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCitzdGF0aWNfYXNzZXJ0KEZpdHM8
V2FzbU9wY29kZUlELCBPcGNvZGVTaXplOjpOYXJyb3c+OjpjaGVjayh3YXNtX3dpZGUxNikpOwor
c3RhdGljX2Fzc2VydChGaXRzPFdhc21PcGNvZGVJRCwgT3Bjb2RlU2l6ZTo6TmFycm93Pjo6Y2hl
Y2sod2FzbV93aWRlMzIpKTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggZTMyMjIwNWRlZTcuLjk1NDE2NDUwYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApA
QCAtMjYwMCw5ICsyNjAwLDkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFIKICAgICAgICAgaWYg
KGNvbnRleHQuaXNJbmRleGVkRm9ySW5Db250ZXh0KCkpIHsKICAgICAgICAgICAgIGF1dG8mIGlu
ZGV4ZWRDb250ZXh0ID0gY29udGV4dC5hc0luZGV4ZWRGb3JJbkNvbnRleHQoKTsKICAgICAgICAg
ICAgIGtpbGwoZHN0KTsKLSAgICAgICAgICAgIGlmIChPcEdldEJ5VmFsOjpjaGVja1dpdGhvdXRN
ZXRhZGF0YUlEPE9wY29kZVNpemU6Ok5hcnJvdz4odGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0eSkp
CisgICAgICAgICAgICBpZiAoT3BHZXRCeVZhbDo6Y2hlY2tXaXRob3V0TWV0YWRhdGFJRDxPcGNv
ZGVTaXplOjpOYXJyb3c+KGRzdCwgYmFzZSwgcHJvcGVydHkpKQogICAgICAgICAgICAgICAgIE9w
R2V0QnlWYWw6OmVtaXRXaXRoU21hbGxlc3RTaXplUmVxdWlyZW1lbnQ8T3Bjb2RlU2l6ZTo6TmFy
cm93Pih0aGlzLCBkc3QsIGJhc2UsIGluZGV4ZWRDb250ZXh0LmluZGV4KCkpOwotICAgICAgICAg
ICAgZWxzZSBpZiAoT3BHZXRCeVZhbDo6Y2hlY2tXaXRob3V0TWV0YWRhdGFJRDxPcGNvZGVTaXpl
OjpXaWRlMTY+KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVydHkpKQorICAgICAgICAgICAgZWxzZSBp
ZiAoT3BHZXRCeVZhbDo6Y2hlY2tXaXRob3V0TWV0YWRhdGFJRDxPcGNvZGVTaXplOjpXaWRlMTY+
KGRzdCwgYmFzZSwgcHJvcGVydHkpKQogICAgICAgICAgICAgICAgIE9wR2V0QnlWYWw6OmVtaXRX
aXRoU21hbGxlc3RTaXplUmVxdWlyZW1lbnQ8T3Bjb2RlU2l6ZTo6V2lkZTE2Pih0aGlzLCBkc3Qs
IGJhc2UsIGluZGV4ZWRDb250ZXh0LmluZGV4KCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIE9wR2V0QnlWYWw6OmVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZTMyPih0aGlzLCBkc3Qs
IGJhc2UsIGluZGV4ZWRDb250ZXh0LmluZGV4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL0RTTC5yYgppbmRleCA0YThiMWU1ODE0NC4uN2E3MjAzMTNlODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xNTMsNiArMTUzLDggQEAgdm9pZCBkdW1wV2Fz
bShCeXRlY29kZUR1bXBlckJhc2UqIGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwg
Y29uc3QgSW5zdHIKIEVPRgogCiAgICAgICAgICAgICB0ZW1wbGF0ZS5ib2R5ID0gPDwtRU9GCisj
e29wY29kZV9ncm91cHNfZmlsdGVyIHsgfHN8IHMuY29uZmlnWzplbWl0X2luX3N0cnVjdHNfZmls
ZV0gfS5tYXAoJjpzdHJ1Y3QpLmpvaW4oIlxuIil9CisKICN7b3Bjb2Rlc19maWx0ZXIgeyB8c3wg
cy5jb25maWdbOmVtaXRfaW5fc3RydWN0c19maWxlXSAmJiAhcy5pc193YXNtPyB9Lm1hcCgmOnN0
cnVjdCkuam9pbigiXG4iKX0KIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTIyNiw0ICsy
MjgsOSBAQCBFT0YKICAgICAgICAgc2VjdGlvbnMgPSBAc2VjdGlvbnMuc2VsZWN0IHsgfHN8IHlp
ZWxkIHMgfQogICAgICAgICBzZWN0aW9ucy5tYXAoJjpvcGNvZGVzKS5mbGF0dGVuCiAgICAgZW5k
CisKKyAgICBkZWYgc2VsZi5vcGNvZGVfZ3JvdXBzX2ZpbHRlcgorICAgICAgICBzZWN0aW9ucyA9
IEBzZWN0aW9ucy5zZWxlY3QgeyB8c3wgeWllbGQgcyB9CisgICAgICAgIHNlY3Rpb25zLm1hcCgm
Om9wY29kZV9ncm91cHMpLmZsYXR0ZW4KKyAgICBlbmQKIGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKaW5kZXggN2NkMTVkMzE1ZDYuLmRlOWZiNDMxYmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJi
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKQEAgLTY2
LDcgKzY2LDYgQEAgY2xhc3MgTWV0YWRhdGEKICAgICBzdHJ1Y3QgTWV0YWRhdGEgewogICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZXRhZGF0YSk7CiAKLSAgICBwdWJsaWM6CiAgICAgICAg
IE1ldGFkYXRhKGNvbnN0ICN7b3AuY2FwaXRhbGl6ZWRfbmFtZX0mI3siIF9fb3AiIGlmIGluaXRz
fSkje2luaXRzfSB7IH0KIAogI3tmaWVsZHN9CkBAIC0xMDIsNyArMTAxLDYgQEAgRU9GCiAgICAg
ICAgIHJldHVybiBpZiBlbXB0eT8KIAogICAgICAgICA8PC1FT0YuY2hvbXAKLQogICAgICAgICBh
dXRvICN7ZW1pdHRlcl9sb2NhbC5uYW1lfSA9IGdlbi0+YWRkTWV0YWRhdGFGb3Iob3Bjb2RlSUQp
OwogICAgICAgICBFT0YKICAgICBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0b3IvT3Bjb2RlLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9P
cGNvZGUucmIKaW5kZXggODIzNzRiN2ZiZTguLjI5NzdkYTY4MWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYgpAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBPcGNv
ZGUKICAgICAgICAgdGlkCiAgICAgZW5kCiAKLSAgICBkZWYgaW5pdGlhbGl6ZShzZWN0aW9uLCBu
YW1lLCBleHRyYXMsIGFyZ3MsIG1ldGFkYXRhLCBtZXRhZGF0YV9pbml0aWFsaXplcnMsIHRtcHMs
IGNoZWNrcG9pbnRzKQorICAgIGRlZiBpbml0aWFsaXplKHNlY3Rpb24sIG5hbWUsIGV4dHJhcywg
YXJncywgbWV0YWRhdGEsIG1ldGFkYXRhX2luaXRpYWxpemVycywgdG1wcywgY2hlY2twb2ludHMs
IG9wY29kZV9ncm91cCkKICAgICAgICAgQHNlY3Rpb24gPSBzZWN0aW9uCiAgICAgICAgIEBuYW1l
ID0gbmFtZQogICAgICAgICBAZXh0cmFzID0gZXh0cmFzIHx8IHt9CkBAIC01NCw2ICs1NCw5IEBA
IGNsYXNzIE9wY29kZQogICAgICAgICBAYXJncyA9IGFyZ3MubWFwLndpdGhfaW5kZXggeyB8KGFy
Z19uYW1lLCB0eXBlKSwgaW5kZXh8IEFyZ3VtZW50Lm5ldyBhcmdfbmFtZSwgdHlwZSwgaW5kZXgg
fSB1bmxlc3MgYXJncy5uaWw/CiAgICAgICAgIEB0bXBzID0gdG1wcwogICAgICAgICBAY2hlY2tw
b2ludHMgPSBjaGVja3BvaW50cy5tYXAgeyB8KGNoZWNrcG9pbnQsIF8pfCBjaGVja3BvaW50IH0g
dW5sZXNzIGNoZWNrcG9pbnRzLm5pbD8KKyAgICAgICAgQG9wY29kZV9ncm91cCA9IG9wY29kZV9n
cm91cAorICAgICAgICBAb3Bfd2lkZTE2ID0gQXJndW1lbnQubmV3KHdpZGUxNiwgb3Bjb2RlSURU
eXBlLCAwKQorICAgICAgICBAb3Bfd2lkZTMyID0gQXJndW1lbnQubmV3KHdpZGUzMiwgb3Bjb2Rl
SURUeXBlLCAwKQogICAgIGVuZAogCiAgICAgZGVmIGNyZWF0ZV9pZCEKQEAgLTc3LDE2ICs4MCwy
MSBAQCBjbGFzcyBPcGNvZGUKICAgICBkZWYgdHlwZWRfYXJncwogICAgICAgICByZXR1cm4gaWYg
QGFyZ3MubmlsPwogCisgICAgICAgIEBhcmdzLm1hcCgmOmNyZWF0ZV9wYXJhbSkuam9pbigiLCAi
KQorICAgIGVuZAorICAgIGRlZiB0eXBlZF9hcmdzX3dpdGhfY29tbWEKKyAgICAgICAgcmV0dXJu
IGlmIEBhcmdzLm5pbD8KKwogICAgICAgICBAYXJncy5tYXAoJjpjcmVhdGVfcGFyYW0pLnVuc2hp
ZnQoIiIpLmpvaW4oIiwgIikKICAgICBlbmQKIAotICAgIGRlZiB0eXBlZF9yZWZlcmVuY2VfYXJn
cworICAgIGRlZiB0eXBlZF9yZWZlcmVuY2VfYXJnc193aXRoX2NvbW1hCiAgICAgICAgIHJldHVy
biBpZiBAYXJncy5uaWw/CiAKICAgICAgICAgQGFyZ3MubWFwKCY6Y3JlYXRlX3JlZmVyZW5jZV9w
YXJhbSkudW5zaGlmdCgiIikuam9pbigiLCAiKQogICAgIGVuZAogCi0gICAgZGVmIHVudHlwZWRf
YXJncworICAgIGRlZiB1bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYQogICAgICAgICByZXR1cm4gaWYg
QGFyZ3MubmlsPwogCiAgICAgICAgIEBhcmdzLm1hcCgmOm5hbWUpLnVuc2hpZnQoIiIpLmpvaW4o
IiwgIikKQEAgLTEyOCwyMCArMTM2LDM0IEBAIGNsYXNzIE9wY29kZQogCiAgICAgZGVmIHN0cnVj
dAogICAgICAgICA8PC1FT0YKLXN0cnVjdCAje2NhcGl0YWxpemVkX25hbWV9IDogcHVibGljIElu
c3RydWN0aW9uIHsKK3N0cnVjdCAje2NhcGl0YWxpemVkX25hbWV9IDogcHVibGljICN7YmFzZV9j
bGFzc30gewogICAgICN7b3Bjb2RlSUR9CiAgICAgI3t0ZW1wc30KICAgICAje2NoZWNrcG9pbnRW
YWx1ZXN9Ci0KICN7ZW1pdHRlcn0KLSN7ZHVtcGVyfQorI3tpZiBAb3Bjb2RlX2dyb3VwLm5pbD8K
Kzw8LUVPRi5jaG9tcAorcHJpdmF0ZToKKyN7ZW1pdF9pbXBsfQorI3tjaGVja19pbXBsfQorcHVi
bGljOgorRU9GCitlbmR9CiAje2NvbnN0cnVjdG9yc30KKyN7ZGVjb2RlfQogI3tzZXR0ZXJzfSN7
bWV0YWRhdGFfc3RydWN0X2FuZF9hY2Nlc3Nvcn0KLSN7bWVtYmVyc30KLX07Cisje21lbWJlcnN9
fTsKIEVPRgogICAgIGVuZAogCisgICAgZGVmIGJhc2VfY2xhc3MKKyAgICAgICAgaWYgQG9wY29k
ZV9ncm91cAorICAgICAgICAgICAgQG9wY29kZV9ncm91cC5uYW1lCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICJJbnN0cnVjdGlvbiIKKyAgICAgICAgZW5kCisgICAgZW5kCisKICAgICBkZWYg
b3Bjb2RlSUQKICAgICAgICAgInN0YXRpYyBjb25zdGV4cHIgI3tvcGNvZGVJRFR5cGV9IG9wY29k
ZUlEID0gI3tuYW1lfTsiCiAgICAgZW5kCkBAIC0xNTgsMTM1ICsxODAsMTM0IEBAIEVPRgogICAg
ICAgICBbImVudW0gVG1wcyA6IHVpbnQ4X3QgeyJdLmNvbmNhdChAdG1wcy5tYXAge3wodG1wLCB0
eXBlKXwgIiAgICAgICAgI3t0bXB9LCJ9KS5wdXNoKCIgICAgfTsiKS5qb2luKCJcbiIpCiAgICAg
ZW5kCiAKKyAgICBkZWYgbWV0YWRhdGFfcGFyYW0KKyAgICAgICAgQG1ldGFkYXRhLmVtcHR5PyA/
ICIiIDogIiwgI3tAbWV0YWRhdGEuZW1pdHRlcl9sb2NhbC5jcmVhdGVfcGFyYW19IgorICAgIGVu
ZAorCisgICAgZGVmIG1ldGFkYXRhX2FyZworICAgICAgICBAbWV0YWRhdGEuZW1wdHk/ID8gIiIg
OiAiLCAje0BtZXRhZGF0YS5lbWl0dGVyX2xvY2FsLm5hbWV9IgorICAgIGVuZAorCiAgICAgZGVm
IGVtaXR0ZXIKLSAgICAgICAgb3Bfd2lkZTE2ID0gQXJndW1lbnQubmV3KHdpZGUxNiwgb3Bjb2Rl
SURUeXBlLCAwKQotICAgICAgICBvcF93aWRlMzIgPSBBcmd1bWVudC5uZXcod2lkZTMyLCBvcGNv
ZGVJRFR5cGUsIDApCi0gICAgICAgIG1ldGFkYXRhX3BhcmFtID0gQG1ldGFkYXRhLmVtcHR5PyA/
ICIiIDogIiwgI3tAbWV0YWRhdGEuZW1pdHRlcl9sb2NhbC5jcmVhdGVfcGFyYW19IgotICAgICAg
ICBtZXRhZGF0YV9hcmcgPSBAbWV0YWRhdGEuZW1wdHk/ID8gIiIgOiAiLCAje0BtZXRhZGF0YS5l
bWl0dGVyX2xvY2FsLm5hbWV9IgotICAgICAgICA8PC1FT0YuY2hvbXAKKyAgICAgICAgPDwtRU9G
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3I+Ci0gICAgc3RhdGljIHZv
aWQgZW1pdChCeXRlY29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzfSkKKyAgICBzdGF0aWMg
dm9pZCBlbWl0KEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4je3R5cGVkX2FyZ3Nfd2l0aF9jb21tYX0p
CiAgICAgewotICAgICAgICBlbWl0V2l0aFNtYWxsZXN0U2l6ZVJlcXVpcmVtZW50PE9wY29kZVNp
emU6Ok5hcnJvdywgQnl0ZWNvZGVHZW5lcmF0b3I+KGdlbiN7dW50eXBlZF9hcmdzfSk7CisgICAg
ICAgIGVtaXRXaXRoU21hbGxlc3RTaXplUmVxdWlyZW1lbnQ8T3Bjb2RlU2l6ZTo6TmFycm93LCBC
eXRlY29kZUdlbmVyYXRvcj4oZ2VuI3t1bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYX0pOwogICAgIH0K
ICN7JXsKICAgICB0ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6ZSwgdHlwZW5hbWUgQnl0ZWNvZGVH
ZW5lcmF0b3IsIEZpdHNBc3NlcnRpb24gc2hvdWxkQXNzZXJ0ID0gQXNzZXJ0PgotICAgIHN0YXRp
YyBib29sIGVtaXQoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc30pCisgICAgc3Rh
dGljIGJvb2wgZW1pdChCeXRlY29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzX3dpdGhfY29t
bWF9KQogICAgIHsje0BtZXRhZGF0YS5jcmVhdGVfZW1pdHRlcl9sb2NhbH0KLSAgICAgICAgcmV0
dXJuIGVtaXQ8X19zaXplLCBCeXRlY29kZUdlbmVyYXRvciwgc2hvdWxkQXNzZXJ0PihnZW4je3Vu
dHlwZWRfYXJnc30je21ldGFkYXRhX2FyZ30pOworICAgICAgICByZXR1cm4gZW1pdDxfX3NpemUs
IEJ5dGVjb2RlR2VuZXJhdG9yLCBzaG91bGRBc3NlcnQ+KGdlbiN7dW50eXBlZF9hcmdzX3dpdGhf
Y29tbWF9I3ttZXRhZGF0YV9hcmd9KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxPcGNvZGVTaXpl
IF9fc2l6ZSwgdHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3I+Ci0gICAgc3RhdGljIGJvb2wgY2hl
Y2tXaXRob3V0TWV0YWRhdGFJRChCeXRlY29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzfSkK
KyAgICB0ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6ZT4KKyAgICBzdGF0aWMgYm9vbCBjaGVja1dp
dGhvdXRNZXRhZGF0YUlEKCN7dHlwZWRfYXJnc30pCiAgICAgewotICAgICAgICBkZWNsdHlwZShn
ZW4tPmFkZE1ldGFkYXRhRm9yKG9wY29kZUlEKSkgX19tZXRhZGF0YUlEIHsgfTsKLSAgICAgICAg
cmV0dXJuIGNoZWNrSW1wbDxfX3NpemUsIEJ5dGVjb2RlR2VuZXJhdG9yPihnZW4je3VudHlwZWRf
YXJnc30je21ldGFkYXRhX2FyZ30pOworICAgICAgICB1bnNpZ25lZCBfX21ldGFkYXRhSUQgPSAw
OworICAgICAgICByZXR1cm4gY2hlY2tJbXBsPF9fc2l6ZT4ob3Bjb2RlSUQje3VudHlwZWRfYXJn
c193aXRoX2NvbW1hfSN7bWV0YWRhdGFfYXJnfSk7CiAgICAgfQogfSB1bmxlc3MgQG1ldGFkYXRh
LmVtcHR5P30KLSAgICB0ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6ZSwgdHlwZW5hbWUgQnl0ZWNv
ZGVHZW5lcmF0b3IsIEZpdHNBc3NlcnRpb24gc2hvdWxkQXNzZXJ0ID0gQXNzZXJ0LCBib29sIHJl
Y29yZE9wY29kZSA9IHRydWU+Ci0gICAgc3RhdGljIGJvb2wgZW1pdChCeXRlY29kZUdlbmVyYXRv
ciogZ2VuI3t0eXBlZF9hcmdzfSN7bWV0YWRhdGFfcGFyYW19KQorICAgIHRlbXBsYXRlPE9wY29k
ZVNpemUgX19zaXplLCB0eXBlbmFtZSBCeXRlY29kZUdlbmVyYXRvciwgRml0c0Fzc2VydGlvbiBz
aG91bGRBc3NlcnQgPSBBc3NlcnQ+CisgICAgc3RhdGljIGJvb2wgZW1pdChCeXRlY29kZUdlbmVy
YXRvciogZ2VuI3t0eXBlZF9hcmdzX3dpdGhfY29tbWF9I3ttZXRhZGF0YV9wYXJhbX0pCiAgICAg
ewotICAgICAgICBib29sIGRpZEVtaXQgPSBlbWl0SW1wbDxfX3NpemUsIHJlY29yZE9wY29kZSwg
Qnl0ZWNvZGVHZW5lcmF0b3I+KGdlbiN7dW50eXBlZF9hcmdzfSN7bWV0YWRhdGFfYXJnfSk7Cisg
ICAgICAgIGJvb2wgZGlkRW1pdCA9IGVtaXRJbXBsPF9fc2l6ZSwgQnl0ZWNvZGVHZW5lcmF0b3I+
KGdlbiwgb3Bjb2RlSUQje3VudHlwZWRfYXJnc193aXRoX2NvbW1hfSN7bWV0YWRhdGFfYXJnfSk7
CiAgICAgICAgIGlmIChzaG91bGRBc3NlcnQgPT0gQXNzZXJ0KQogICAgICAgICAgICAgQVNTRVJU
KGRpZEVtaXQpOwogICAgICAgICByZXR1cm4gZGlkRW1pdDsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTxPcGNvZGVTaXplIF9fc2l6ZSwgdHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3I+Ci0gICAgc3Rh
dGljIHZvaWQgZW1pdFdpdGhTbWFsbGVzdFNpemVSZXF1aXJlbWVudChCeXRlY29kZUdlbmVyYXRv
ciogZ2VuI3t0eXBlZF9hcmdzfSkKKyAgICBzdGF0aWMgdm9pZCBlbWl0V2l0aFNtYWxsZXN0U2l6
ZVJlcXVpcmVtZW50KEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4je3R5cGVkX2FyZ3Nfd2l0aF9jb21t
YX0pCiAgICAgewotICAgICAgICAje0BtZXRhZGF0YS5jcmVhdGVfZW1pdHRlcl9sb2NhbH0KKyN7
QG1ldGFkYXRhLmNyZWF0ZV9lbWl0dGVyX2xvY2FsfQogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KF9fc2l6ZSkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE9wY29kZVNpemU6Ok5h
cnJvdykpIHsKLSAgICAgICAgICAgIGlmIChlbWl0PE9wY29kZVNpemU6Ok5hcnJvdywgQnl0ZWNv
ZGVHZW5lcmF0b3IsIE5vQXNzZXJ0LCB0cnVlPihnZW4je3VudHlwZWRfYXJnc30je21ldGFkYXRh
X2FyZ30pKQorICAgICAgICAgICAgaWYgKGVtaXQ8T3Bjb2RlU2l6ZTo6TmFycm93LCBCeXRlY29k
ZUdlbmVyYXRvciwgTm9Bc3NlcnQ+KGdlbiN7dW50eXBlZF9hcmdzX3dpdGhfY29tbWF9I3ttZXRh
ZGF0YV9hcmd9KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
aWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihfX3NpemUpIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihPcGNvZGVTaXplOjpXaWRlMTYpKSB7Ci0gICAgICAgICAgICBpZiAoZW1pdDxPcGNvZGVTaXpl
OjpXaWRlMTYsIEJ5dGVjb2RlR2VuZXJhdG9yLCBOb0Fzc2VydCwgdHJ1ZT4oZ2VuI3t1bnR5cGVk
X2FyZ3N9I3ttZXRhZGF0YV9hcmd9KSkKKyAgICAgICAgICAgIGlmIChlbWl0PE9wY29kZVNpemU6
OldpZGUxNiwgQnl0ZWNvZGVHZW5lcmF0b3IsIE5vQXNzZXJ0PihnZW4je3VudHlwZWRfYXJnc193
aXRoX2NvbW1hfSN7bWV0YWRhdGFfYXJnfSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIGVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZTMyLCBCeXRlY29kZUdlbmVyYXRv
ciwgQXNzZXJ0LCB0cnVlPihnZW4je3VudHlwZWRfYXJnc30je21ldGFkYXRhX2FyZ30pOworICAg
ICAgICBlbWl0PE9wY29kZVNpemU6OldpZGUzMiwgQnl0ZWNvZGVHZW5lcmF0b3IsIEFzc2VydD4o
Z2VuI3t1bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYX0je21ldGFkYXRhX2FyZ30pOwogICAgIH0KK0VP
RgorICAgIGVuZAogCi1wcml2YXRlOgorICAgIGRlZiBlbWl0X2ltcGwKKyAgICAgICAgPDwtRU9G
CiAgICAgdGVtcGxhdGU8T3Bjb2RlU2l6ZSBfX3NpemUsIHR5cGVuYW1lIEJ5dGVjb2RlR2VuZXJh
dG9yPgotICAgIHN0YXRpYyBib29sIGNoZWNrSW1wbChCeXRlY29kZUdlbmVyYXRvciogZ2VuI3t0
eXBlZF9yZWZlcmVuY2VfYXJnc30je21ldGFkYXRhX3BhcmFtfSkKKyAgICBzdGF0aWMgYm9vbCBl
bWl0SW1wbChCeXRlY29kZUdlbmVyYXRvciogZ2VuLCAje29wY29kZUlEVHlwZX0gb3Bjb2RlSUQj
e3R5cGVkX2FyZ3Nfd2l0aF9jb21tYX0je21ldGFkYXRhX3BhcmFtfSkKICAgICB7Ci0gICAgICAg
IFVOVVNFRF9QQVJBTShnZW4pOwotI2lmIE9TKFdJTkRPV1MpICYmIEVOQUJMRShDX0xPT1ApCi0g
ICAgICAgIC8vIEZJWE1FOiBEaXNhYmxlIHdpZGUxNiBvcHRpbWl6YXRpb24gZm9yIFdpbmRvd3Mg
Q0xvb3AKLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5ODI4MwotICAgICAgICBpZiAoX19zaXplID09IE9wY29kZVNpemU6OldpZGUxNikKKyAgICAg
ICAgaWYgKCFjaGVja0ltcGw8X19zaXplPihvcGNvZGVJRCN7dW50eXBlZF9hcmdzX3dpdGhfY29t
bWF9I3ttZXRhZGF0YV9hcmd9KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgot
ICAgICAgICByZXR1cm4gI3ttYXBfZmllbGRzX3dpdGhfc2l6ZSgiIiwgIl9fc2l6ZSIsICY6Zml0
c19jaGVjaykuam9pbiAiXG4gICAgICAgICAgICAmJiAifQotICAgICAgICAgICAgJiYgKF9fc2l6
ZSA9PSBPcGNvZGVTaXplOjpXaWRlMTYgPyAje29wX3dpZGUxNi5maXRzX2NoZWNrKFNpemU6Ok5h
cnJvdyl9IDogdHJ1ZSkKLSAgICAgICAgICAgICYmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lk
ZTMyID8gI3tvcF93aWRlMzIuZml0c19jaGVjayhTaXplOjpOYXJyb3cpfSA6IHRydWUpOwotICAg
IH0KLQotICAgIHRlbXBsYXRlPE9wY29kZVNpemUgX19zaXplLCBib29sIHJlY29yZE9wY29kZSwg
dHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3I+Ci0gICAgc3RhdGljIGJvb2wgZW1pdEltcGwoQnl0
ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc30je21ldGFkYXRhX3BhcmFtfSkKLSAgICB7
Ci0gICAgICAgICN7IUBjaGVja3BvaW50cy5uaWw/ID8gImdlbi0+c2V0VXNlc0NoZWNrcG9pbnRz
KCk7IiA6ICIifQorICAgICAgICAjeyJnZW4tPnNldFVzZXNDaGVja3BvaW50cygpOyIgdW5sZXNz
IEBjaGVja3BvaW50cy5uaWw/fQogICAgICAgICBpZiAoX19zaXplID09IE9wY29kZVNpemU6Oldp
ZGUxNikKICAgICAgICAgICAgIGdlbi0+YWxpZ25XaWRlT3Bjb2RlMTYoKTsKICAgICAgICAgZWxz
ZSBpZiAoX19zaXplID09IE9wY29kZVNpemU6OldpZGUzMikKICAgICAgICAgICAgIGdlbi0+YWxp
Z25XaWRlT3Bjb2RlMzIoKTsKLSAgICAgICAgaWYgKGNoZWNrSW1wbDxfX3NpemU+KGdlbiN7dW50
eXBlZF9hcmdzfSN7bWV0YWRhdGFfYXJnfSkpIHsKLSAgICAgICAgICAgIGlmIChyZWNvcmRPcGNv
ZGUpCi0gICAgICAgICAgICAgICAgZ2VuLT5yZWNvcmRPcGNvZGUob3Bjb2RlSUQpOwotICAgICAg
ICAgICAgaWYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpXaWRlMTYpCi0gICAgICAgICAgICAgICAg
I3tvcF93aWRlMTYuZml0c193cml0ZSBTaXplOjpOYXJyb3d9Ci0gICAgICAgICAgICBlbHNlIGlm
IChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTMyKQotICAgICAgICAgICAgICAgICN7b3Bfd2lk
ZTMyLmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93fQotICAgICAgICAgICAgI3tBcmd1bWVudC5uZXco
Im9wY29kZUlEIiwgb3Bjb2RlSURUeXBlLCAwKS5maXRzX3dyaXRlIFNpemU6Ok5hcnJvd30KLSN7
bWFwX29wZXJhbmRzX3dpdGhfc2l6ZSgiICAgICAgICAgICAgIiwgIl9fc2l6ZSIsICY6Zml0c193
cml0ZSkuam9pbiAiXG4ifQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBnZW4tPnJlY29yZE9wY29kZShvcGNvZGVJRCk7
CisgICAgICAgIGlmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTE2KQorICAgICAgICAgICAg
I3tAb3Bfd2lkZTE2LmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93fQorICAgICAgICBlbHNlIGlmIChf
X3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTMyKQorICAgICAgICAgICAgI3tAb3Bfd2lkZTMyLmZp
dHNfd3JpdGUgU2l6ZTo6TmFycm93fQorICAgICAgICAje0FyZ3VtZW50Lm5ldygib3Bjb2RlSUQi
LCBvcGNvZGVJRFR5cGUsIDApLmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93fQorI3ttYXBfb3BlcmFu
ZHNfd2l0aF9zaXplKCIgICAgICAgICIsICJfX3NpemUiLCAmOmZpdHNfd3JpdGUpLmpvaW4gIlxu
In0KKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotCi1wdWJsaWM6CiBFT0YKICAgICBlbmQK
IAotICAgIGRlZiBkdW1wZXIKKyAgICBkZWYgY2hlY2tfaW1wbAogICAgICAgICA8PC1FT0YKLSAg
ICB2b2lkIGR1bXAoQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQgX19sb2NhdGlvbiwgaW50IF9fc2l6ZVNoaWZ0QW1vdW50KQorICAgIHRlbXBsYXRl
PE9wY29kZVNpemUgX19zaXplPgorICAgIHN0YXRpYyBib29sIGNoZWNrSW1wbCgje29wY29kZUlE
VHlwZX0gb3Bjb2RlSUQje3R5cGVkX3JlZmVyZW5jZV9hcmdzX3dpdGhfY29tbWF9I3ttZXRhZGF0
YV9wYXJhbX0pCiAgICAgewotICAgICAgICBkdW1wZXItPnByaW50TG9jYXRpb25BbmRPcChfX2xv
Y2F0aW9uLCAmIioqI3tAbmFtZX0iWzIgLSBfX3NpemVTaGlmdEFtb3VudF0pOwotI3twcmludF9h
cmdzIHsgfGFyZ3wKLTw8LUVPRi5jaG9tcAotICAgICAgICBkdW1wZXItPmR1bXBPcGVyYW5kKCN7
YXJnLmZpZWxkX25hbWV9LCAje2FyZy5pbmRleCA9PSAwfSk7Ci1FT0YKLSAgICB9fQorI2lmIE9T
KFdJTkRPV1MpICYmIEVOQUJMRShDX0xPT1ApCisgICAgICAgIC8vIEZJWE1FOiBEaXNhYmxlIHdp
ZGUxNiBvcHRpbWl6YXRpb24gZm9yIFdpbmRvd3MgQ0xvb3AKKyAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODI4MworICAgICAgICBpZiAoX19zaXpl
ID09IE9wY29kZVNpemU6OldpZGUxNikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgorICAgICAgICByZXR1cm4gI3ttYXBfZmllbGRzX3dpdGhfc2l6ZSgiIiwgIl9fc2l6ZSIsICY6
Zml0c19jaGVjaykuam9pbiAiXG4gICAgICAgICAgICAmJiAifTsKICAgICB9CiBFT0YKICAgICBl
bmQKIAotICAgIGRlZiBjb25zdHJ1Y3RvcnMKLSAgICAgICAgZmllbGRzID0gKEBhcmdzIHx8IFtd
KSArIChAbWV0YWRhdGEuZW1wdHk/ID8gW10gOiBbQG1ldGFkYXRhXSkKLSAgICAgICAgaW5pdCA9
IC0+KHNpemUpIHsgZmllbGRzLmVtcHR5PyAgPyAiIiA6ICI6ICN7ZmllbGRzLm1hcC53aXRoX2lu
ZGV4IHsgfGFyZywgaXwgYXJnLmxvYWRfZnJvbV9zdHJlYW0oaSwgc2l6ZSkgfS5qb2luICJcbiAg
ICAgICAgLCAiIH0iIH0KKyAgICBkZWYgY29uc3RydWN0b3JzX2luaXQKKyAgICAgICAgaWYgQG9w
Y29kZV9ncm91cC5uaWw/CisgICAgICAgICAgICBmaWVsZHMgPSAoQGFyZ3MgfHwgW10pICsgKEBt
ZXRhZGF0YS5lbXB0eT8gPyBbXSA6IFtAbWV0YWRhdGFdKQorICAgICAgICAgICAgLT4oc2l6ZSkg
eyBmaWVsZHMuZW1wdHk/ICA/ICIiIDogIjogI3tmaWVsZHMubWFwLndpdGhfaW5kZXggeyB8YXJn
LCBpfCBhcmcubG9hZF9mcm9tX3N0cmVhbShpLCBzaXplKSB9LmpvaW4gIlxuICAgICAgICAsICIg
fSIgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICAtPihzaXplKSB7ICI6ICN7QG9wY29kZV9n
cm91cC5uYW1lfShzdHJlYW0pIiB9CisgICAgICAgIGVuZAorICAgIGVuZAogCisgICAgZGVmIGNv
bnN0cnVjdG9ycwogICAgICAgICA8PC1FT0YKICAgICAje2NhcGl0YWxpemVkX25hbWV9KGNvbnN0
IHVpbnQ4X3QqIHN0cmVhbSkKLSAgICAgICAgI3tpbml0LmNhbGwoIk9wY29kZVNpemU6Ok5hcnJv
dyIpfQorICAgICAgICAje2NvbnN0cnVjdG9yc19pbml0LmNhbGwoIk9wY29kZVNpemU6Ok5hcnJv
dyIpfQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW0sIGJpdHdpc2VfY2FzdDxj
b25zdCB1aW50OF90Kj4oc3RyZWFtKVstMV0gPT0gb3Bjb2RlSUQpOwogICAgIH0KIAogICAgICN7
Y2FwaXRhbGl6ZWRfbmFtZX0oY29uc3QgdWludDE2X3QqIHN0cmVhbSkKLSAgICAgICAgI3tpbml0
LmNhbGwoIk9wY29kZVNpemU6OldpZGUxNiIpfQorICAgICAgICAje2NvbnN0cnVjdG9yc19pbml0
LmNhbGwoIk9wY29kZVNpemU6OldpZGUxNiIpfQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNF
RChzdHJlYW0sIGJpdHdpc2VfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyZWFtKVstMV0gPT0gb3Bj
b2RlSUQpOwogICAgIH0KIAotCiAgICAgI3tjYXBpdGFsaXplZF9uYW1lfShjb25zdCB1aW50MzJf
dCogc3RyZWFtKQotICAgICAgICAje2luaXQuY2FsbCgiT3Bjb2RlU2l6ZTo6V2lkZTMyIil9Cisg
ICAgICAgICN7Y29uc3RydWN0b3JzX2luaXQuY2FsbCgiT3Bjb2RlU2l6ZTo6V2lkZTMyIil9CiAg
ICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbSwgYml0d2lzZV9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihzdHJlYW0pWy0xXSA9PSBvcGNvZGVJRCk7CiAgICAgfQorRU9GCisgICAgZW5kCiAK
KyAgICBkZWYgZGVjb2RlCisgICAgICAgIDw8LUVPRgogICAgIHN0YXRpYyAje2NhcGl0YWxpemVk
X25hbWV9IGRlY29kZShjb25zdCB1aW50OF90KiBzdHJlYW0pCiAgICAgewogICAgICAgICAvLyBB
IHBvaW50ZXIgaXMgcG9pbnRpbmcgdG8gdGhlIGZpcnN0IG9wZXJhbmQgKG9wY29kZSBhbmQgcHJl
Zml4IGFyZSBub3QgaW5jbHVkZWQpLgpAQCAtMzAwLDcgKzMyMSw3IEBAIEVPRgogICAgIGVuZAog
CiAgICAgZGVmIHNldHRlcnMKLSAgICAgICAgcHJpbnRfYXJncyB7IHxhfCBhLnNldHRlcih0cmFp
dHMpIH0KKyAgICAgICAgcHJpbnRfYXJncyB7IHxhfCBhLnNldHRlcih0cmFpdHMpIH0gaWYgQG9w
Y29kZV9ncm91cC5uaWw/CiAgICAgZW5kCiAKICAgICBkZWYgbWV0YWRhdGFfc3RydWN0X2FuZF9h
Y2Nlc3NvcgpAQCAtMzEwLDkgKzMzMSwxNCBAQCBFT0YKICAgICBlbmQKIAogICAgIGRlZiBtZW1i
ZXJzCi0gICAgICAgIDw8LUVPRi5jaG9tcAorICAgICAgICBpZiBAb3Bjb2RlX2dyb3VwLm5pbD8K
KyAgICAgICAgICAgIDw8LUVPRgorICAgIGZyaWVuZCB2b2lkIGR1bXAje0BzZWN0aW9uLmlzX3dh
c20/ID8gIldhc20iIDogIkJ5dGVjb2RlIn0oQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgX19sb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qIF9f
aW5zdHJ1Y3Rpb24pOwogI3twcmludF9tZW1iZXJzKCIgICAgIiwgJjpmaWVsZCl9I3tAbWV0YWRh
dGEuZmllbGQoIiAgICAiKX0KIEVPRgorICAgICAgICBlbHNlCisgICAgICAgICAgICAiIgorICAg
ICAgICBlbmQKICAgICBlbmQKIAogICAgIGRlZiBzZXRfZW50cnlfYWRkcmVzcyhpZCkKQEAgLTM1
MywyMSArMzc5LDM2IEBAIEVPRgogICAgIGVuZAogCiAgICAgZGVmIHNlbGYuZHVtcF9ieXRlY29k
ZShuYW1lLCBvcGNvZGVfdHJhaXRzLCBvcGNvZGVzKQotICAgICAgICA8PC1FT0YuY2hvbXAKKyAg
ICAgICAgPDwtRlVMTC5jaG9tcAogdm9pZCBkdW1wI3tuYW1lfShCeXRlY29kZUR1bXBlckJhc2Uq
IGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBfX2xvY2F0aW9uLCBjb25zdCBJbnN0
cnVjdGlvbiogX19pbnN0cnVjdGlvbikKIHsKKyAgICBpbnQgc2l6ZVNoaWZ0QW1vdW50ID0gX19p
bnN0cnVjdGlvbi0+c2l6ZVNoaWZ0QW1vdW50PCN7b3Bjb2RlX3RyYWl0c30+KCk7CiAgICAgc3dp
dGNoIChfX2luc3RydWN0aW9uLT5vcGNvZGVJRDwje29wY29kZV90cmFpdHN9PigpKSB7CiAje29w
Y29kZXMubWFwIHsgfG9wfAotICAgICAgICA8PC1FT0YuY2hvbXAKKyAgICBpZiBvcC5hcmdzLm5p
bD8KKyAgICAgICAgPDwtQ0FTRS5jaG9tcAogICAgIGNhc2UgI3tvcC5uYW1lfToKLSAgICAgICAg
X19pbnN0cnVjdGlvbi0+YXM8I3tvcC5jYXBpdGFsaXplZF9uYW1lfSwgI3tvcGNvZGVfdHJhaXRz
fT4oKS5kdW1wKGR1bXBlciwgX19sb2NhdGlvbiwgX19pbnN0cnVjdGlvbi0+c2l6ZVNoaWZ0QW1v
dW50PCN7b3Bjb2RlX3RyYWl0c30+KCkpOworICAgICAgICBkdW1wZXItPnByaW50TG9jYXRpb25B
bmRPcChfX2xvY2F0aW9uLCAmIioqI3tvcC51bnByZWZpeGVkX25hbWV9IlsyIC0gc2l6ZVNoaWZ0
QW1vdW50XSk7CiAgICAgICAgIGJyZWFrOwotRU9GCi0gICAgfS5qb2luICJcbiJ9CitDQVNFCisg
ICAgZWxzZQorICAgICAgICA8PC1DQVNFLmNob21wCisgICAgY2FzZSAje29wLm5hbWV9OiB7Cisg
ICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBfX2luc3RydWN0aW9uLT5hczwje29wLmNhcGl0YWxp
emVkX25hbWV9LCAje29wY29kZV90cmFpdHN9PigpOworICAgICAgICBkdW1wZXItPnByaW50TG9j
YXRpb25BbmRPcChfX2xvY2F0aW9uLCAmIioqI3tvcC51bnByZWZpeGVkX25hbWV9IlsyIC0gc2l6
ZVNoaWZ0QW1vdW50XSk7Cisje29wLnByaW50X2FyZ3MgeyB8YXJnfAorICAgICAgICAgICAgPDwt
QVJHLmNob21wCisgICAgICAgIGR1bXBlci0+ZHVtcE9wZXJhbmQoaW5zdHJ1Y3Rpb24uI3thcmcu
ZmllbGRfbmFtZX0sICN7YXJnLmluZGV4ID09IDB9KTsKK0FSRworICAgICAgICB9fQorICAgICAg
ICBicmVhazsKKyAgICB9CitDQVNFCisgICAgZW5kfS5qb2luICJcbiJ9CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQotRU9GCitGVUxMCiAgICAg
ZW5kCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvT3Bj
b2RlR3JvdXAucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZUdyb3Vw
LnJiCmluZGV4IDhlYzJhMjNjZjQ4Li4wODdiZGQxODllZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9PcGNvZGVHcm91cC5yYgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZUdyb3VwLnJiCkBAIC0yOCwxMCArMjgsNjAgQEAgY2xh
c3MgT3Bjb2RlR3JvdXAKICAgICBhdHRyX3JlYWRlciA6b3Bjb2RlcwogICAgIGF0dHJfcmVhZGVy
IDpjb25maWcKIAotICAgIGRlZiBpbml0aWFsaXplKHNlY3Rpb24sIGRlc2MsIG9wY29kZXMsIGNv
bmZpZykKKyAgICBkZWYgaW5pdGlhbGl6ZShzZWN0aW9uLCBuYW1lLCBvcGNvZGVzLCBjb25maWcp
CiAgICAgICAgIEBzZWN0aW9uID0gc2VjdGlvbgogICAgICAgICBAbmFtZSA9IG5hbWUKICAgICAg
ICAgQG9wY29kZXMgPSBvcGNvZGVzCiAgICAgICAgIEBjb25maWcgPSBjb25maWcKKyAgICAgICAg
QG1ldGFkYXRhID0gTWV0YWRhdGEubmV3IGNvbmZpZ1s6bWV0YWRhdGFdLCBjb25maWdbOm1ldGFk
YXRhX2luaXRpYWxpemVyc10KKyAgICAgICAgQGFyZ3MgPSBjb25maWdbOmFyZ3NdLm1hcC53aXRo
X2luZGV4IHsgfChhcmdfbmFtZSwgdHlwZSksIGluZGV4fCBBcmd1bWVudC5uZXcgYXJnX25hbWUs
IHR5cGUsIGluZGV4IH0gdW5sZXNzIGNvbmZpZ1s6YXJnc10ubmlsPworICAgICAgICBAZmFrZV9v
cGNvZGUgPSBPcGNvZGUubmV3KHNlY3Rpb24sIG5hbWUsIGNvbmZpZ1s6ZXh0cmFzXSwgY29uZmln
WzphcmdzXSwgY29uZmlnWzptZXRhZGF0YV0sIGNvbmZpZ1s6bWV0YWRhdGFfaW5pdGlhbGl6ZXJz
XSwgY29uZmlnWzp0bXBzXSwgY29uZmlnWzpjaGVja3BvaW50c10sIG5pbCkKKyAgICBlbmQKKwor
ICAgIGRlZiBuYW1lCisgICAgICAgIEBzZWN0aW9uLmNvbmZpZ1s6b3BfcHJlZml4XS5zcGxpdCgn
XycpLm1hcCgmOmNhcGl0YWxpemUpLmpvaW4gKyAiI3tAbmFtZX0iCisgICAgZW5kCisKKyAgICBk
ZWYgc3RydWN0CisgICAgICAgIDw8LUVPRgorc3RydWN0ICN7bmFtZX0gOiBwdWJsaWMgSW5zdHJ1
Y3Rpb24geworI3tjb25zdHJ1Y3RvcnN9Citwcm90ZWN0ZWQ6Cisje0BmYWtlX29wY29kZS5lbWl0
X2ltcGx9Cisje0BmYWtlX29wY29kZS5jaGVja19pbXBsfQorcHVibGljOgorI3tzZXR0ZXJzfQor
I3ttZW1iZXJzfQorfTsKK0VPRgorICAgIGVuZAorCisgICAgZGVmIGNvbnN0cnVjdG9ycworICAg
ICAgICA8PC1FT0YKKyAgICAje25hbWV9KGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSkKKyAgICAgICAg
I3tAZmFrZV9vcGNvZGUuY29uc3RydWN0b3JzX2luaXQuY2FsbCgiT3Bjb2RlU2l6ZTo6TmFycm93
Iil9CisgICAgeworICAgIH0KKworICAgICN7bmFtZX0oY29uc3QgdWludDE2X3QqIHN0cmVhbSkK
KyAgICAgICAgI3tAZmFrZV9vcGNvZGUuY29uc3RydWN0b3JzX2luaXQuY2FsbCgiT3Bjb2RlU2l6
ZTo6V2lkZTE2Iil9CisgICAgeworICAgIH0KKworICAgICN7bmFtZX0oY29uc3QgdWludDMyX3Qq
IHN0cmVhbSkKKyAgICAgICAgI3tAZmFrZV9vcGNvZGUuY29uc3RydWN0b3JzX2luaXQuY2FsbCgi
T3Bjb2RlU2l6ZTo6V2lkZTMyIil9CisgICAgeworICAgIH0KK0VPRgorICAgIGVuZAorCisgICAg
ZGVmIHNldHRlcnMKKyAgICAgICAgQGZha2Vfb3Bjb2RlLnByaW50X2FyZ3MgeyB8YXwgYS5zZXR0
ZXIoQGZha2Vfb3Bjb2RlLnRyYWl0cykgfQorICAgIGVuZAorCisgICAgZGVmIG1lbWJlcnMKKyAg
ICAgICAgPDwtRU9GLmNob21wCisje0BmYWtlX29wY29kZS5wcmludF9tZW1iZXJzKCIgICAgIiwg
JjpmaWVsZCl9I3tAbWV0YWRhdGEuZmllbGQoIiAgICAiKX0KK0VPRgogICAgIGVuZAogZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKaW5kZXggNjY4NTViYTY1
MDAuLmMxYzZhMjhkNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL1NlY3Rpb24ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0
aW9uLnJiCkBAIC0zMCw2ICszMCw3IEBAIGNsYXNzIFNlY3Rpb24KICAgYXR0cl9yZWFkZXIgOm5h
bWUKICAgYXR0cl9yZWFkZXIgOmNvbmZpZwogICBhdHRyX3JlYWRlciA6b3Bjb2RlcworICBhdHRy
X3JlYWRlciA6b3Bjb2RlX2dyb3VwcwogCiAgIGRlZiBpbml0aWFsaXplKG5hbWUsIGNvbmZpZykK
ICAgICBAbmFtZSA9IG5hbWUKQEAgLTQyLDEzICs0MywxNCBAQCBjbGFzcyBTZWN0aW9uCiAgICAg
ICBAb3Bjb2RlcyA8PCBjcmVhdGVfb3Bjb2RlKG5hbWUsIGNvbmZpZykKICAgZW5kCiAKLSAgZGVm
IGNyZWF0ZV9vcGNvZGUobmFtZSwgY29uZmlnKQotICAgICAgT3Bjb2RlLm5ldyhzZWxmLCBuYW1l
LCBjb25maWdbOmV4dHJhc10sIGNvbmZpZ1s6YXJnc10sIGNvbmZpZ1s6bWV0YWRhdGFdLCBjb25m
aWdbOm1ldGFkYXRhX2luaXRpYWxpemVyc10sIGNvbmZpZ1s6dG1wc10sIGNvbmZpZ1s6Y2hlY2tw
b2ludHNdKQorICBkZWYgY3JlYXRlX29wY29kZShuYW1lLCBjb25maWcsIG9wY29kZV9ncm91cCA9
IG5pbCkKKyAgICAgIE9wY29kZS5uZXcoc2VsZiwgbmFtZSwgY29uZmlnWzpleHRyYXNdLCBjb25m
aWdbOmFyZ3NdLCBjb25maWdbOm1ldGFkYXRhXSwgY29uZmlnWzptZXRhZGF0YV9pbml0aWFsaXpl
cnNdLCBjb25maWdbOnRtcHNdLCBjb25maWdbOmNoZWNrcG9pbnRzXSwgb3Bjb2RlX2dyb3VwKQog
ICBlbmQKIAogICBkZWYgYWRkX29wY29kZV9ncm91cChuYW1lLCBvcGNvZGVzLCBjb25maWcpCi0g
ICAgICBvcGNvZGVzID0gb3Bjb2Rlcy5tYXAgeyB8b3Bjb2RlfCBjcmVhdGVfb3Bjb2RlKG9wY29k
ZSwgY29uZmlnKSB9Ci0gICAgICBAb3Bjb2RlX2dyb3VwcyA8PCBPcGNvZGVHcm91cC5uZXcoc2Vs
ZiwgbmFtZSwgb3Bjb2RlcywgY29uZmlnKQorICAgICAgb3Bjb2RlX2dyb3VwID0gT3Bjb2RlR3Jv
dXAubmV3KHNlbGYsIG5hbWUsIG9wY29kZXMsIGNvbmZpZykKKyAgICAgIEBvcGNvZGVfZ3JvdXBz
IDw8IG9wY29kZV9ncm91cAorICAgICAgb3Bjb2RlcyA9IG9wY29kZXMubWFwIHsgfG9wY29kZXwg
Y3JlYXRlX29wY29kZShvcGNvZGUsIGNvbmZpZywgb3Bjb2RlX2dyb3VwKSB9CiAgICAgICBAb3Bj
b2RlcyArPSBvcGNvZGVzCiAgIGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdG9yL1dhc20ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1dh
c20ucmIKaW5kZXggYzE3ODU4NmQ1MjEuLmUyYTY4YjMzNjkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1dhc20ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9XYXNtLnJiCkBAIC02LDYgKzYsMTAgQEAgbW9kdWxlIFdhc20KICAgICBl
bmQKIAogICAgIGRlZiBzZWxmLmF1dG9nZW5lcmF0ZV9vcGNvZGVzKGNvbnRleHQsIHdhc21fanNv
bikKKyAgICAgICAgdW5hcnlPcHMgPSBbXQorICAgICAgICBiaW5hcnlPcHMgPSBbXQorICAgICAg
ICB2aXJ0dWFsUmVnaXN0ZXIgPSBjb250ZXh0LmV2YWwoIlZpcnR1YWxSZWdpc3RlciIpCisKICAg
ICAgICAgSlNPTi5wYXJzZSh3YXNtX2pzb24pWyJvcGNvZGUiXS5lYWNoIGRvIHxuYW1lLCB2YWx1
ZXwKICAgICAgICAgICAgIGNhdGVnb3J5ID0gdmFsdWVbImNhdGVnb3J5Il0KIApAQCAtMTQsMzIg
KzE4LDI5IEBAIG1vZHVsZSBXYXNtCiAgICAgICAgICAgICByZXR1cm5Db3VudCA9IHZhbHVlWyJy
ZXR1cm4iXS5zaXplCiAgICAgICAgICAgICBwYXJhbWV0ZXJDb3VudCA9IHZhbHVlWyJwYXJhbWV0
ZXIiXS5zaXplCiAKLSAgICAgICAgICAgIGFzc2VydCgic2hvdWxkIHJldHVybiAwIG9yIDEgdmFs
dWVzIikgeyBbMCwgMV0uaW5jbHVkZT8gcmV0dXJuQ291bnQgfQorICAgICAgICAgICAgYXNzZXJ0
KCJzaG91bGQgcmV0dXJuIGV4YWN0bHkgMSB2YWx1ZSIpIHsgcmV0dXJuQ291bnQgPT0gMX0KICAg
ICAgICAgICAgIGFzc2VydCgic2hvdWxkIG9ubHkgaGF2ZSAxIG9yIDIgcGFyYW1ldGVycyIpIHsg
WzEsIDJdLmluY2x1ZGU/IHBhcmFtZXRlckNvdW50IH0KIAogICAgICAgICAgICAgbmFtZSA9IG5v
cm1hbGl6ZShuYW1lKQotICAgICAgICAgICAgYXJndW1lbnRzID0ge30KLQotICAgICAgICAgICAg
dmlydHVhbFJlZ2lzdGVyID0gY29udGV4dC5ldmFsKCJWaXJ0dWFsUmVnaXN0ZXIiKQogCi0gICAg
ICAgICAgICBpZiByZXR1cm5Db3VudCA+IDAKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNbOmRz
dF0gPSB2aXJ0dWFsUmVnaXN0ZXIKKyAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJDb3VudCA9PSAx
KQorICAgICAgICAgICAgICAgIHVuYXJ5T3BzIDw8IG5hbWUKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBiaW5hcnlPcHMgPDwgbmFtZQogICAgICAgICAgICAgZW5kCisgICAgICAg
IGVuZAogCi0gICAgICAgICAgICBjYXNlIHBhcmFtZXRlckNvdW50Ci0gICAgICAgICAgICB3aGVu
IDEKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNbOm9wZXJhbmRdID0gdmlydHVhbFJlZ2lzdGVy
Ci0gICAgICAgICAgICB3aGVuIDIKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNbOmxoc10gPSB2
aXJ0dWFsUmVnaXN0ZXIKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNbOnJoc10gPSB2aXJ0dWFs
UmVnaXN0ZXIKLSAgICAgICAgICAgIGVuZAorICAgICAgICBkZWNsYXJlX29wX2dyb3VwID0gY29u
dGV4dC5ldmFsKCJQcm9jLm5ldyB7IHxuYW1lLCBvcHMsIGNvbmZpZ3wgb3BfZ3JvdXAobmFtZSwg
b3BzLCBjb25maWcpIH0iKQogCi0gICAgICAgICAgICBjb250ZXh0LmV2YWwoIlByb2MubmV3IHsg
fGFyZ3VtZW50cywgZXh0cmFzIHwgb3AoJyN7bmFtZX0nLCB7IGV4dHJhczogZXh0cmFzLCBhcmdz
OiBhcmd1bWVudHMgfSkgfSIpLmNhbGwoYXJndW1lbnRzLCB2YWx1ZSkKLSAgICAgICAgZW5kCisg
ICAgICAgIGNvbmZpZ1VuYXJ5T3BzID0geyBleHRyYXM6IHthdXRvZ2VuZXJhdGVkOiB0cnVlfSwg
YXJnczoge2RzdDogdmlydHVhbFJlZ2lzdGVyLCBvcGVyYW5kOiB2aXJ0dWFsUmVnaXN0ZXJ9fQor
ICAgICAgICBjb25maWdCaW5hcnlPcHMgPSB7IGV4dHJhczoge2F1dG9nZW5lcmF0ZWQ6IHRydWV9
LCBhcmdzOiB7ZHN0OiB2aXJ0dWFsUmVnaXN0ZXIsIGxoczogdmlydHVhbFJlZ2lzdGVyLCByaHM6
IHZpcnR1YWxSZWdpc3Rlcn19CisKKyAgICAgICAgZGVjbGFyZV9vcF9ncm91cC5jYWxsKCJVbmFy
eU9wcyIsIHVuYXJ5T3BzLCBjb25maWdVbmFyeU9wcykKKyAgICAgICAgZGVjbGFyZV9vcF9ncm91
cC5jYWxsKCJCaW5hcnlPcHMiLCBiaW5hcnlPcHMsIGNvbmZpZ0JpbmFyeU9wcykKICAgICBlbmQK
IAogICAgIGRlZiBzZWxmLmdlbmVyYXRlX2xsaW50X2dlbmVyYXRvcihzZWN0aW9uKQotICAgICAg
ICBvcGNvZGVzID0gc2VjdGlvbi5vcGNvZGVzLnNlbGVjdCB7IHxvcHwgWyJhcml0aG1ldGljIiwg
ImNvbXBhcmlzb24iLCAiY29udmVyc2lvbiJdLmluY2x1ZGU/IG9wLmV4dHJhc1siY2F0ZWdvcnki
XSB9CisgICAgICAgIG9wY29kZXMgPSBzZWN0aW9uLm9wY29kZXMuc2VsZWN0IHsgfG9wfCBvcC5l
eHRyYXNbOmF1dG9nZW5lcmF0ZWRdIH0KICAgICAgICAgbWV0aG9kcyA9IG9wY29kZXMubWFwIGRv
IHxvcHwKICAgICAgICAgICAgIGNhc2Ugb3AuYXJncy5zaXplCiAgICAgICAgICAgICB3aGVuIDIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389903</attachid>
            <date>2020-02-05 17:08:41 -0800</date>
            <delta_ts>2020-05-21 20:04:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch206563</filename>
            <type>text/plain</type>
            <size>32251</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDVmMGE2OTg5M2I4Li44Nzc2ZmZhNjk2YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDEtMjMgIFJvYmlu
IE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBTaHJpbmsgQnl0ZWNv
ZGVTdHJ1Y3RzLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjU2MworCisgICAgICAgIFJldmlld2VkIGJ5IFRhZGV1IFphZ2FsbG8uCisKKyAgICAg
ICAgVGhlIG1haW4gZ29hbCBvZiB0aGlzIHBhdGNoIHdhcyB0byByZWR1Y2UgY29tcGlsZSB0aW1l
cy4KKyAgICAgICAgSXQgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBzaW1wbGlmaWNhdG9ucyB0byBC
eXRlY29kZVN0cnVjdHMuaCwgd2hpY2ggaXMgaHVnZSBhbmQgdHJhbnNpdGl2ZWx5IGluY2x1ZGVk
IGluIG1vc3Qgb2YgSlNDICh0aHJvdWdoIENvbW1vblNsb3dQYXRocy5oIC0+IEpJVC5oKToKKyAg
ICAgICAgLSBPbmUgc3RydWN0IHBlciBvcF9ncm91cCwgd2l0aCBzZXR0ZXJzLCBjb25zdHJ1Y3Rv
cnMsIGVtaXRJbXBsLCBjaGVja0ltcGwsIGFuZCB0aGUgbWVtYmVycywgdGhpcyB3YXkgdGhleSBh
cmUgc2hhcmVkIGFtb25nIHRoZSB2YXJpb3VzIG9wY29kZXMgaW4gYSBncm91cC4KKyAgICAgICAg
LSBNb3JlIG9wX2dyb3VwcyBpbiBCeXRlY29kZUxpc3QucmIgKHRvIG1heGltaXplIHRoZSBiZW5l
Zml0IG9mIHRoZSBwcmV2aW91cyBvcHRpbWl6YXRpb24pCisgICAgICAgIC0gQXV0b21hdGljYWxs
eSB1c2UgV2FzbVVuYXJ5T3BzIGFuZCBXYXNtQmluYXJ5T3BzIGdyb3VwcyBmb3IgdGhlIG9wcyBh
dXRvZ2VuZXJhdGVkIGluIFdhc20ucmIKKyAgICAgICAgLSBUaGUgY2hlY2tzIHRoYXQgb3Bfd2lk
ZTE2LCBvcF93aWRlMzIsIHdhc21fd2lkZTE2LCB3YXNtX3dpZGUzMiBmaXQgaW4gT3Bjb2RlSUQv
V2FzbU9wY29kZUlEIGFyZSBub3cgaW4gYSBzaW5nbGUgcGxhY2UgYXMgYSBzdGF0aWMgYXNzZXJ0
IGluIEZpdHMuaCwgaW5zdGVhZCBvZiBiZWluZyByZXBlYXRlZCBpbiB0aGUgY2hlY2tJbXBsIG9m
IGV2ZXJ5IHNpbmdsZSBpbnN0cnVjdGlvbgorICAgICAgICAtIFJlbW92aW5nIHRoZSB1bm5lY2Vz
c2FyeSBwYXJhbWV0ZXJpemF0aW9uIG9mIGNoZWNrV2l0aG91dE1ldGFkYUlEIGJ5IEJ5dGVjb2Rl
R2VuZXJhdG9yCisgICAgICAgIC0gUmVtb3ZlIHRoZSByZWNvcmRPcGNvZGUgcGFyYW1ldGVyLCBz
aW5jZSBpdCBpcyBhbHdheXMgdHJ1ZQorICAgICAgICAtIElubGluZSBhbGwgb2YgdGhlIGR1bXAg
ZnVuY3Rpb25zICh3aGljaCB3ZXJlIGluIEJ5dGVjb2RlU3RydWN0cy5oKSBpbnRvIHRoZSBkdW1w
Qnl0ZWNvZGUvZHVtcFdhc20gZnVuY3Rpb25zICh3aGljaCBhcmUgaW4gYSAuY3BwKQorCisgICAg
ICAgIEFzIGV4cGVjdGVkLCBpdCB2ZXJ5IHNpZ25pZmljYW50bHkgc2hydW5rIEJ5dGVjb2RlU3Ry
dWN0cy5oOiBmcm9tIDY0Mjk1IGxpbmVzICgyLjcyN01CKSB0byAzOTQwNCBsaW5lcyAoMS41NzVN
QikuCisgICAgICAgIFNhZGx5IHRoZSBjb21waWxlIHRpbWUgaW1wcm92ZW1lbnQgaXMgbmVnbGln
aWJsZSAoYSBjb3VwbGUgc2Vjb25kcyBvdXQgb2YgYWJvdXQgM21uIG9uIG15IGlNYWNQcm8pLgor
CisgICAgICAgIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggdHVybmVkIG91dCB0byBiZSBhIGZhaXJseSBz
aWduaWZpY2FudCBiaW5hcnkgc2l6ZSBzYXZpbmcsIGZyb20gMjYuMDQ0TUIgdG8gMjUuNTkyTUIg
KGEgc2F2aW5nIG9mIGFib3V0IDQ1MGtCKSBpbiByZWxlYXNlIG1vZGUuCisKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlWYWwpOgorICAgICAgICAqIGdlbmVyYXRvci9E
U0wucmI6CisgICAgICAgICogZ2VuZXJhdG9yL01ldGFkYXRhLnJiOgorICAgICAgICAqIGdlbmVy
YXRvci9PcGNvZGUucmI6CisgICAgICAgICogZ2VuZXJhdG9yL09wY29kZUdyb3VwLnJiOgorICAg
ICAgICAqIGdlbmVyYXRvci9TZWN0aW9uLnJiOgorICAgICAgICAqIGdlbmVyYXRvci9XYXNtLnJi
OgorCiAyMDIwLTAyLTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0pTQ10gU3RydWN0dXJlOjpzZXRNYXhPZmZzZXQgYW5kIHNldFRyYW5zaXRpb25PZmZz
ZXQgYXJlIHJhY3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiCmluZGV4IDM0ODM0N2M2YjRjLi5lMGRjYjdkMDgxMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC02NDEsMzcgKzY0MSwyMyBA
QCBvcCA6am1wLAogICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKICAgICB9CiAKLW9w
IDpqdHJ1ZSwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGNvbmRpdGlvbjogVmlydHVhbFJlZ2lzdGVy
LAotICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKLSAgICB9Ci0KLW9wIDpqZmFsc2Us
CitvcF9ncm91cCA6Qm9vbGVhbkp1bXAsCisgICAgWworICAgICAgICA6anRydWUsCisgICAgICAg
IDpqZmFsc2UKKyAgICBdLAogICAgIGFyZ3M6IHsKICAgICAgICAgY29uZGl0aW9uOiBWaXJ0dWFs
UmVnaXN0ZXIsCiAgICAgICAgIHRhcmdldExhYmVsOiBCb3VuZExhYmVsLAogICAgIH0KIAotb3Ag
OmplcV9udWxsLAotICAgIGFyZ3M6IHsKLSAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwK
LSAgICAgICAgdGFyZ2V0TGFiZWw6IEJvdW5kTGFiZWwsCi0gICAgfQotCi1vcCA6am5lcV9udWxs
LAotICAgIGFyZ3M6IHsKLSAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAg
dGFyZ2V0TGFiZWw6IEJvdW5kTGFiZWwsCi0gICAgfQotCi1vcCA6anVuZGVmaW5lZF9vcl9udWxs
LAotICAgIGFyZ3M6IHsKLSAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAg
dGFyZ2V0TGFiZWw6IEJvdW5kTGFiZWwsCi0gICAgfQotCi1vcCA6am51bmRlZmluZWRfb3JfbnVs
bCwKK29wX2dyb3VwIDpUZXN0aW5nSnVtcCwKKyAgICBbCisgICAgICAgIDpqZXFfbnVsbCwKKyAg
ICAgICAgOmpuZXFfbnVsbCwKKyAgICAgICAgOmp1bmRlZmluZWRfb3JfbnVsbCwKKyAgICAgICAg
OmpudW5kZWZpbmVkX29yX251bGwKKyAgICBdLAogICAgIGFyZ3M6IHsKICAgICAgICAgdmFsdWU6
IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdGFyZ2V0TGFiZWw6IEJvdW5kTGFiZWwsCkBAIC03
NDgsMzEgKzczNCwxMyBAQCBvcCA6c2V0X2Z1bmN0aW9uX25hbWUsCiAgICAgfQogCiAjIG9wX2Nh
bGwgdmFyaWF0aW9ucwotb3AgOmNhbGwsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1
YWxSZWdpc3RlciwKLSAgICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGFy
Z2M6IHVuc2lnbmVkLAotICAgICAgICBhcmd2OiB1bnNpZ25lZCwKLSAgICB9LAotICAgIG1ldGFk
YXRhOiB7Ci0gICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAg
IHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICB9Ci0KLW9wIDp0YWlsX2NhbGwsCi0gICAgYXJn
czogewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgY2FsbGVlOiBWaXJ0
dWFsUmVnaXN0ZXIsCi0gICAgICAgIGFyZ2M6IHVuc2lnbmVkLAotICAgICAgICBhcmd2OiB1bnNp
Z25lZCwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGNhbGxMaW5rSW5mbzogTExJ
bnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICB9Ci0K
LW9wIDpjYWxsX2V2YWwsCitvcF9ncm91cCA6Tm9uVmFyYXJnc0NhbGxzLAorICAgIFsKKyAgICAg
ICAgOmNhbGwsCisgICAgICAgIDp0YWlsX2NhbGwsCisgICAgICAgIDpjYWxsX2V2YWwsCisgICAg
ICAgIDpjb25zdHJ1Y3QKKyAgICBdLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0OiBWaXJ0dWFs
UmVnaXN0ZXIsCiAgICAgICAgIGNhbGxlZTogVmlydHVhbFJlZ2lzdGVyLApAQCAtNzg0LDcgKzc1
MiwxMiBAQCBvcCA6Y2FsbF9ldmFsLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAg
ICAgfQogCi1vcCA6Y2FsbF92YXJhcmdzLAorb3BfZ3JvdXAgOlZhcmFyZ3NDYWxscywKKyAgICBb
CisgICAgICAgIDpjYWxsX3ZhcmFyZ3MsCisgICAgICAgIDp0YWlsX2NhbGxfdmFyYXJncywKKyAg
ICAgICAgOmNvbnN0cnVjdF92YXJhcmdzCisgICAgXSwKICAgICBhcmdzOiB7CiAgICAgICAgIGRz
dDogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwKQEAg
LTgwNSwyNyArNzc4LDYgQEAgb3AgOmNhbGxfdmFyYXJncywKICAgICAgICAgbWFrZUNhbGw6IG5p
bCwKICAgICB9CiAKLW9wIDp0YWlsX2NhbGxfdmFyYXJncywKLSAgICBhcmdzOiB7Ci0gICAgICAg
IGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwK
LSAgICAgICAgdGhpc1ZhbHVlPzogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBhcmd1bWVudHM/
OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGZpcnN0RnJlZTogVmlydHVhbFJlZ2lzdGVyLAot
ICAgICAgICBmaXJzdFZhckFyZzogaW50LAotICAgIH0sCi0gICAgbWV0YWRhdGE6IHsKLSAgICAg
ICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZSwKLSAgICB9LAotICAgIHRtcHM6IHsKLSAgICAgICAgYXJnQ291bnRJbmNsdWRpbmdUaGlz
OiB1bnNpZ25lZAotICAgIH0sCi0gICAgY2hlY2twb2ludHM6IHsKLSAgICAgICAgZGV0ZXJtaW5p
bmdBcmdDb3VudDogbmlsLAotICAgICAgICBtYWtlQ2FsbDogbmlsLAotICAgIH0KLQogb3AgOnRh
aWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cywKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmly
dHVhbFJlZ2lzdGVyLApAQCAtODQwLDM5ICs3OTIsNiBAQCBvcCA6dGFpbF9jYWxsX2ZvcndhcmRf
YXJndW1lbnRzLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCi1vcCA6
Y29uc3RydWN0LAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0g
ICAgICAgIGNhbGxlZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBhcmdjOiB1bnNpZ25lZCwK
LSAgICAgICAgYXJndjogdW5zaWduZWQsCi0gICAgfSwKLSAgICBtZXRhZGF0YTogewotICAgICAg
ICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBwcm9maWxlOiBWYWx1
ZVByb2ZpbGUsCi0gICAgfQotCi1vcCA6Y29uc3RydWN0X3ZhcmFyZ3MsCi0gICAgYXJnczogewot
ICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVn
aXN0ZXIsCi0gICAgICAgIHRoaXNWYWx1ZT86IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgYXJn
dW1lbnRzPzogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBmaXJzdEZyZWU6IFZpcnR1YWxSZWdp
c3RlciwKLSAgICAgICAgZmlyc3RWYXJBcmc6IGludCwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7
Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAotICAgICAgICBwcm9maWxlOiBW
YWx1ZVByb2ZpbGUsCi0gICAgfSwKLSAgICB0bXBzOiB7Ci0gICAgICAgIGFyZ0NvdW50SW5jbHVk
aW5nVGhpczogdW5zaWduZWQKLSAgICB9LAotICAgIGNoZWNrcG9pbnRzOiB7Ci0gICAgICAgIGRl
dGVybWluaW5nQXJnQ291bnQ6IG5pbCwKLSAgICAgICAgbWFrZUNhbGw6IG5pbCwKLSAgICB9Ci0K
IG9wIDpyZXQsCiAgICAgYXJnczogewogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLApA
QCAtMTM2MSw0MiArMTI4MCwyOCBAQCBvcCA6cmVmX2Z1bmMsCiAgICAgICAgIGZ1bmN0aW9uSW5k
ZXg6IHVuc2lnbmVkLAogICAgIH0KIAotb3AgOmdldF9nbG9iYWwsCi0gICAgYXJnczogewotICAg
ICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZ2xvYmFsSW5kZXg6IHVuc2lnbmVk
LAotICAgIH0KLQotb3AgOnNldF9nbG9iYWwsCi0gICAgYXJnczogewotICAgICAgICBnbG9iYWxJ
bmRleDogdW5zaWduZWQsCi0gICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQot
Ci1vcCA6c2V0X2dsb2JhbF9yZWYsCitvcF9ncm91cCA6U2V0R2xvYmFsR3JvdXAsCisgICAgWwor
ICAgICAgICA6c2V0X2dsb2JhbCwKKyAgICAgICAgOnNldF9nbG9iYWxfcmVmLAorICAgICAgICA6
c2V0X2dsb2JhbF9wb3J0YWJsZV9iaW5kaW5nLAorICAgICAgICA6c2V0X2dsb2JhbF9yZWZfcG9y
dGFibGVfYmluZGluZworICAgIF0sCiAgICAgYXJnczogewogICAgICAgICBnbG9iYWxJbmRleDog
dW5zaWduZWQsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfQogCi1vcCA6
Z2V0X2dsb2JhbF9wb3J0YWJsZV9iaW5kaW5nLAorb3BfZ3JvdXAgOkdldEdsb2JhbEdyb3VwLAor
ICAgIFsKKyAgICAgICAgOmdldF9nbG9iYWwsCisgICAgICAgIDpnZXRfZ2xvYmFsX3BvcnRhYmxl
X2JpbmRpbmcKKyAgICBdLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0
ZXIsCiAgICAgICAgIGdsb2JhbEluZGV4OiB1bnNpZ25lZCwKICAgICB9CiAKLW9wIDpzZXRfZ2xv
YmFsX3BvcnRhYmxlX2JpbmRpbmcsCi0gICAgYXJnczogewotICAgICAgICBnbG9iYWxJbmRleDog
dW5zaWduZWQsCi0gICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQotCi1vcCA6
c2V0X2dsb2JhbF9yZWZfcG9ydGFibGVfYmluZGluZywKLSAgICBhcmdzOiB7Ci0gICAgICAgIGds
b2JhbEluZGV4OiB1bnNpZ25lZCwKLSAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICB9Ci0KIG9wIDp0YWJsZV9nZXQsCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxS
ZWdpc3RlciwKQEAgLTE0MzMsMzAgKzEzMzgsMjIgQEAgb3AgOnRhYmxlX2ZpbGwsCiAgICAgICAg
IHRhYmxlSW5kZXg6IHVuc2lnbmVkLAogICAgIH0KIAotb3AgOmNhbGwsCi0gICAgYXJnczogewot
ICAgICAgICBmdW5jdGlvbkluZGV4OiB1bnNpZ25lZCwKLSAgICAgICAgc3RhY2tPZmZzZXQ6IHVu
c2lnbmVkLAotICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCi0gICAgfQotCi1v
cCA6Y2FsbF9ub190bHMsCitvcF9ncm91cCA6RGlyZWN0Q2FsbHMsCisgICAgWworICAgICAgICA6
Y2FsbCwKKyAgICAgICAgOmNhbGxfbm9fdGxzCisgICAgXSwKICAgICBhcmdzOiB7CiAgICAgICAg
IGZ1bmN0aW9uSW5kZXg6IHVuc2lnbmVkLAogICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQs
CiAgICAgICAgIG51bWJlck9mU3RhY2tBcmdzOiB1bnNpZ25lZCwKICAgICB9CiAKLW9wIDpjYWxs
X2luZGlyZWN0LAotICAgIGFyZ3M6IHsKLSAgICAgICAgZnVuY3Rpb25JbmRleDogVmlydHVhbFJl
Z2lzdGVyLAotICAgICAgICBzaWduYXR1cmVJbmRleDogdW5zaWduZWQsCi0gICAgICAgIHN0YWNr
T2Zmc2V0OiB1bnNpZ25lZCwKLSAgICAgICAgbnVtYmVyT2ZTdGFja0FyZ3M6IHVuc2lnbmVkLAot
ICAgICAgICB0YWJsZUluZGV4OiB1bnNpZ25lZCwKLSAgICB9Ci0KLW9wIDpjYWxsX2luZGlyZWN0
X25vX3RscywKK29wX2dyb3VwIDpJbmRpcmVjdENhbGxzLAorICAgIFsKKyAgICAgICAgOmNhbGxf
aW5kaXJlY3QsCisgICAgICAgIDpjYWxsX2luZGlyZWN0X25vX3RscworICAgIF0sCiAgICAgYXJn
czogewogICAgICAgICBmdW5jdGlvbkluZGV4OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHNp
Z25hdHVyZUluZGV4OiB1bnNpZ25lZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5o
CmluZGV4IDU3Nzg5YmMyYzY2Li44NzllMzdkNzFiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRml0cy5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIE9wY29k
ZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPFQsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9m
KFQpID09IHNpemUsIHN0ZDo6dHJ1ZV90eXBlPj4gewogICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0
eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7CiAKLSAgICBzdGF0aWMgYm9v
bCBjaGVjayhUKSB7IHJldHVybiB0cnVlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGNo
ZWNrKFQpIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHN0YXRpYyBUYXJnZXRUeXBlIGNvbnZlcnQo
VCB0KSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VGFyZ2V0VHlwZT4odCk7IH0KIApAQCAtNjQsNyAr
NjQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBPcGNvZGVTaXplIHNpemU+CiBzdHJ1Y3QgRml0
czxULCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlICYm
IHNpemVvZihUKSAhPSBzaXplICYmICFzdGQ6OmlzX3NhbWU8Ym9vbCwgVD46OnZhbHVlLCBzdGQ6
OnRydWVfdHlwZT4+IHsKICAgICB1c2luZyBUYXJnZXRUeXBlID0gc3RkOjpjb25kaXRpb25hbF90
PHN0ZDo6aXNfdW5zaWduZWQ8VD46OnZhbHVlLCB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1
bnNpZ25lZFR5cGUsIHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnNpZ25lZFR5cGU+OwogCi0g
ICAgc3RhdGljIGJvb2wgY2hlY2soVCB0KQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjaGVj
ayhUIHQpCiAgICAgewogICAgICAgICByZXR1cm4gdCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRh
cmdldFR5cGU+OjptaW4oKSAmJiB0IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0VHlwZT46
Om1heCgpOwogICAgIH0KQEAgLTIyMiw3ICsyMjIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBP
cGNvZGVTaXplIHNpemU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNp
emVvZihFKSAhPSBzaXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBl
Pj4gOiBwdWJsaWMgRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAg
dXNpbmcgQmFzZSA9IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CiAKLSAg
ICBzdGF0aWMgYm9vbCBjaGVjayhFIGUpIHsgcmV0dXJuIEJhc2U6OmNoZWNrKHN0YXRpY19jYXN0
PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4+KGUpKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBjaGVjayhFIGUpIHsgcmV0dXJuIEJhc2U6OmNoZWNrKHN0YXRpY19jYXN0PHN0ZDo6dW5k
ZXJseWluZ190eXBlX3Q8RT4+KGUpKTsgfQogCiAgICAgc3RhdGljIHR5cGVuYW1lIEJhc2U6OlRh
cmdldFR5cGUgY29udmVydChFIGUpCiAgICAgewpAQCAtMzI3LDQgKzMyNywxMiBAQCBzdHJ1Y3Qg
Rml0czxHZW5lcmljQm91bmRMYWJlbDxHZW5lcmF0b3JUcmFpdHM+LCBzaXplPiA6IHB1YmxpYyBG
aXRzPGludCwgc2l6ZT4gewogICAgIH0KIH07CiAKK3N0YXRpY19hc3NlcnQoRml0czxPcGNvZGVJ
RCwgT3Bjb2RlU2l6ZTo6TmFycm93Pjo6Y2hlY2sob3Bfd2lkZTE2KSk7CitzdGF0aWNfYXNzZXJ0
KEZpdHM8T3Bjb2RlSUQsIE9wY29kZVNpemU6Ok5hcnJvdz46OmNoZWNrKG9wX3dpZGUzMikpOwor
CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorc3RhdGljX2Fzc2VydChGaXRzPFdhc21PcGNvZGVJ
RCwgT3Bjb2RlU2l6ZTo6TmFycm93Pjo6Y2hlY2sod2FzbV93aWRlMTYpKTsKK3N0YXRpY19hc3Nl
cnQoRml0czxXYXNtT3Bjb2RlSUQsIE9wY29kZVNpemU6Ok5hcnJvdz46OmNoZWNrKHdhc21fd2lk
ZTMyKSk7CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4
IDVhNzk5NmZkMGRiLi41OGM3ZTA5MzA3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI1OTcsOSAr
MjU5Nyw5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlWYWwoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSCiAgICAgICAgIGlmIChjb250ZXh0Lmlz
SW5kZXhlZEZvckluQ29udGV4dCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBpbmRleGVkQ29udGV4
dCA9IGNvbnRleHQuYXNJbmRleGVkRm9ySW5Db250ZXh0KCk7CiAgICAgICAgICAgICBraWxsKGRz
dCk7Ci0gICAgICAgICAgICBpZiAoT3BHZXRCeVZhbDo6Y2hlY2tXaXRob3V0TWV0YWRhdGFJRDxP
cGNvZGVTaXplOjpOYXJyb3c+KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVydHkpKQorICAgICAgICAg
ICAgaWYgKE9wR2V0QnlWYWw6OmNoZWNrV2l0aG91dE1ldGFkYXRhSUQ8T3Bjb2RlU2l6ZTo6TmFy
cm93Pihkc3QsIGJhc2UsIHByb3BlcnR5KSkKICAgICAgICAgICAgICAgICBPcEdldEJ5VmFsOjpl
bWl0V2l0aFNtYWxsZXN0U2l6ZVJlcXVpcmVtZW50PE9wY29kZVNpemU6Ok5hcnJvdz4odGhpcywg
ZHN0LCBiYXNlLCBpbmRleGVkQ29udGV4dC5pbmRleCgpKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KE9wR2V0QnlWYWw6OmNoZWNrV2l0aG91dE1ldGFkYXRhSUQ8T3Bjb2RlU2l6ZTo6V2lkZTE2Pih0
aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KSkKKyAgICAgICAgICAgIGVsc2UgaWYgKE9wR2V0QnlW
YWw6OmNoZWNrV2l0aG91dE1ldGFkYXRhSUQ8T3Bjb2RlU2l6ZTo6V2lkZTE2Pihkc3QsIGJhc2Us
IHByb3BlcnR5KSkKICAgICAgICAgICAgICAgICBPcEdldEJ5VmFsOjplbWl0V2l0aFNtYWxsZXN0
U2l6ZVJlcXVpcmVtZW50PE9wY29kZVNpemU6OldpZGUxNj4odGhpcywgZHN0LCBiYXNlLCBpbmRl
eGVkQ29udGV4dC5pbmRleCgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBP
cEdldEJ5VmFsOjplbWl0PE9wY29kZVNpemU6OldpZGUzMj4odGhpcywgZHN0LCBiYXNlLCBpbmRl
eGVkQ29udGV4dC5pbmRleCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIK
aW5kZXggNGE4YjFlNTgxNDQuLjdhNzIwMzEzZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL0RTTC5yYgpAQCAtMTUzLDYgKzE1Myw4IEBAIHZvaWQgZHVtcFdhc20oQnl0ZWNvZGVE
dW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGNvbnN0IEluc3Ry
CiBFT0YKIAogICAgICAgICAgICAgdGVtcGxhdGUuYm9keSA9IDw8LUVPRgorI3tvcGNvZGVfZ3Jv
dXBzX2ZpbHRlciB7IHxzfCBzLmNvbmZpZ1s6ZW1pdF9pbl9zdHJ1Y3RzX2ZpbGVdIH0ubWFwKCY6
c3RydWN0KS5qb2luKCJcbiIpfQorCiAje29wY29kZXNfZmlsdGVyIHsgfHN8IHMuY29uZmlnWzpl
bWl0X2luX3N0cnVjdHNfZmlsZV0gJiYgIXMuaXNfd2FzbT8gfS5tYXAoJjpzdHJ1Y3QpLmpvaW4o
IlxuIil9CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkBAIC0yMjYsNCArMjI4LDkgQEAgRU9G
CiAgICAgICAgIHNlY3Rpb25zID0gQHNlY3Rpb25zLnNlbGVjdCB7IHxzfCB5aWVsZCBzIH0KICAg
ICAgICAgc2VjdGlvbnMubWFwKCY6b3Bjb2RlcykuZmxhdHRlbgogICAgIGVuZAorCisgICAgZGVm
IHNlbGYub3Bjb2RlX2dyb3Vwc19maWx0ZXIKKyAgICAgICAgc2VjdGlvbnMgPSBAc2VjdGlvbnMu
c2VsZWN0IHsgfHN8IHlpZWxkIHMgfQorICAgICAgICBzZWN0aW9ucy5tYXAoJjpvcGNvZGVfZ3Jv
dXBzKS5mbGF0dGVuCisgICAgZW5kCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL01ldGFkYXRhLnJiCmluZGV4IDdjZDE1ZDMxNWQ2Li5kZTlmYjQzMWJmZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCkBAIC02Niw3ICs2Niw2IEBA
IGNsYXNzIE1ldGFkYXRhCiAgICAgc3RydWN0IE1ldGFkYXRhIHsKICAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoTWV0YWRhdGEpOwogCi0gICAgcHVibGljOgogICAgICAgICBNZXRhZGF0YShj
b25zdCAje29wLmNhcGl0YWxpemVkX25hbWV9JiN7IiBfX29wIiBpZiBpbml0c30pI3tpbml0c30g
eyB9CiAKICN7ZmllbGRzfQpAQCAtMTAyLDcgKzEwMSw2IEBAIEVPRgogICAgICAgICByZXR1cm4g
aWYgZW1wdHk/CiAKICAgICAgICAgPDwtRU9GLmNob21wCi0KICAgICAgICAgYXV0byAje2VtaXR0
ZXJfbG9jYWwubmFtZX0gPSBnZW4tPmFkZE1ldGFkYXRhRm9yKG9wY29kZUlEKTsKICAgICAgICAg
RU9GCiAgICAgZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9y
L09wY29kZS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvT3Bjb2RlLnJiCmlu
ZGV4IDgyMzc0YjdmYmU4Li4yOTc3ZGE2ODFhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRvci9PcGNvZGUucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRvci9PcGNvZGUucmIKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgT3Bjb2RlCiAgICAgICAg
IHRpZAogICAgIGVuZAogCi0gICAgZGVmIGluaXRpYWxpemUoc2VjdGlvbiwgbmFtZSwgZXh0cmFz
LCBhcmdzLCBtZXRhZGF0YSwgbWV0YWRhdGFfaW5pdGlhbGl6ZXJzLCB0bXBzLCBjaGVja3BvaW50
cykKKyAgICBkZWYgaW5pdGlhbGl6ZShzZWN0aW9uLCBuYW1lLCBleHRyYXMsIGFyZ3MsIG1ldGFk
YXRhLCBtZXRhZGF0YV9pbml0aWFsaXplcnMsIHRtcHMsIGNoZWNrcG9pbnRzLCBvcGNvZGVfZ3Jv
dXApCiAgICAgICAgIEBzZWN0aW9uID0gc2VjdGlvbgogICAgICAgICBAbmFtZSA9IG5hbWUKICAg
ICAgICAgQGV4dHJhcyA9IGV4dHJhcyB8fCB7fQpAQCAtNTQsNiArNTQsOSBAQCBjbGFzcyBPcGNv
ZGUKICAgICAgICAgQGFyZ3MgPSBhcmdzLm1hcC53aXRoX2luZGV4IHsgfChhcmdfbmFtZSwgdHlw
ZSksIGluZGV4fCBBcmd1bWVudC5uZXcgYXJnX25hbWUsIHR5cGUsIGluZGV4IH0gdW5sZXNzIGFy
Z3MubmlsPwogICAgICAgICBAdG1wcyA9IHRtcHMKICAgICAgICAgQGNoZWNrcG9pbnRzID0gY2hl
Y2twb2ludHMubWFwIHsgfChjaGVja3BvaW50LCBfKXwgY2hlY2twb2ludCB9IHVubGVzcyBjaGVj
a3BvaW50cy5uaWw/CisgICAgICAgIEBvcGNvZGVfZ3JvdXAgPSBvcGNvZGVfZ3JvdXAKKyAgICAg
ICAgQG9wX3dpZGUxNiA9IEFyZ3VtZW50Lm5ldyh3aWRlMTYsIG9wY29kZUlEVHlwZSwgMCkKKyAg
ICAgICAgQG9wX3dpZGUzMiA9IEFyZ3VtZW50Lm5ldyh3aWRlMzIsIG9wY29kZUlEVHlwZSwgMCkK
ICAgICBlbmQKIAogICAgIGRlZiBjcmVhdGVfaWQhCkBAIC03NywxNiArODAsMjEgQEAgY2xhc3Mg
T3Bjb2RlCiAgICAgZGVmIHR5cGVkX2FyZ3MKICAgICAgICAgcmV0dXJuIGlmIEBhcmdzLm5pbD8K
IAorICAgICAgICBAYXJncy5tYXAoJjpjcmVhdGVfcGFyYW0pLmpvaW4oIiwgIikKKyAgICBlbmQK
KyAgICBkZWYgdHlwZWRfYXJnc193aXRoX2NvbW1hCisgICAgICAgIHJldHVybiBpZiBAYXJncy5u
aWw/CisKICAgICAgICAgQGFyZ3MubWFwKCY6Y3JlYXRlX3BhcmFtKS51bnNoaWZ0KCIiKS5qb2lu
KCIsICIpCiAgICAgZW5kCiAKLSAgICBkZWYgdHlwZWRfcmVmZXJlbmNlX2FyZ3MKKyAgICBkZWYg
dHlwZWRfcmVmZXJlbmNlX2FyZ3Nfd2l0aF9jb21tYQogICAgICAgICByZXR1cm4gaWYgQGFyZ3Mu
bmlsPwogCiAgICAgICAgIEBhcmdzLm1hcCgmOmNyZWF0ZV9yZWZlcmVuY2VfcGFyYW0pLnVuc2hp
ZnQoIiIpLmpvaW4oIiwgIikKICAgICBlbmQKIAotICAgIGRlZiB1bnR5cGVkX2FyZ3MKKyAgICBk
ZWYgdW50eXBlZF9hcmdzX3dpdGhfY29tbWEKICAgICAgICAgcmV0dXJuIGlmIEBhcmdzLm5pbD8K
IAogICAgICAgICBAYXJncy5tYXAoJjpuYW1lKS51bnNoaWZ0KCIiKS5qb2luKCIsICIpCkBAIC0x
MjgsMjAgKzEzNiwzNCBAQCBjbGFzcyBPcGNvZGUKIAogICAgIGRlZiBzdHJ1Y3QKICAgICAgICAg
PDwtRU9GCi1zdHJ1Y3QgI3tjYXBpdGFsaXplZF9uYW1lfSA6IHB1YmxpYyBJbnN0cnVjdGlvbiB7
CitzdHJ1Y3QgI3tjYXBpdGFsaXplZF9uYW1lfSA6IHB1YmxpYyAje2Jhc2VfY2xhc3N9IHsKICAg
ICAje29wY29kZUlEfQogICAgICN7dGVtcHN9CiAgICAgI3tjaGVja3BvaW50VmFsdWVzfQotCiAj
e2VtaXR0ZXJ9Ci0je2R1bXBlcn0KKyN7aWYgQG9wY29kZV9ncm91cC5uaWw/Cis8PC1FT0YuY2hv
bXAKK3ByaXZhdGU6Cisje2VtaXRfaW1wbH0KKyN7Y2hlY2tfaW1wbH0KK3B1YmxpYzoKK0VPRgor
ZW5kfQogI3tjb25zdHJ1Y3RvcnN9Cisje2RlY29kZX0KICN7c2V0dGVyc30je21ldGFkYXRhX3N0
cnVjdF9hbmRfYWNjZXNzb3J9Ci0je21lbWJlcnN9Ci19OworI3ttZW1iZXJzfX07CiBFT0YKICAg
ICBlbmQKIAorICAgIGRlZiBiYXNlX2NsYXNzCisgICAgICAgIGlmIEBvcGNvZGVfZ3JvdXAKKyAg
ICAgICAgICAgIEBvcGNvZGVfZ3JvdXAubmFtZQorICAgICAgICBlbHNlCisgICAgICAgICAgICAi
SW5zdHJ1Y3Rpb24iCisgICAgICAgIGVuZAorICAgIGVuZAorCiAgICAgZGVmIG9wY29kZUlECiAg
ICAgICAgICJzdGF0aWMgY29uc3RleHByICN7b3Bjb2RlSURUeXBlfSBvcGNvZGVJRCA9ICN7bmFt
ZX07IgogICAgIGVuZApAQCAtMTU4LDEzNSArMTgwLDEzNCBAQCBFT0YKICAgICAgICAgWyJlbnVt
IFRtcHMgOiB1aW50OF90IHsiXS5jb25jYXQoQHRtcHMubWFwIHt8KHRtcCwgdHlwZSl8ICIgICAg
ICAgICN7dG1wfSwifSkucHVzaCgiICAgIH07Iikuam9pbigiXG4iKQogICAgIGVuZAogCisgICAg
ZGVmIG1ldGFkYXRhX3BhcmFtCisgICAgICAgIEBtZXRhZGF0YS5lbXB0eT8gPyAiIiA6ICIsICN7
QG1ldGFkYXRhLmVtaXR0ZXJfbG9jYWwuY3JlYXRlX3BhcmFtfSIKKyAgICBlbmQKKworICAgIGRl
ZiBtZXRhZGF0YV9hcmcKKyAgICAgICAgQG1ldGFkYXRhLmVtcHR5PyA/ICIiIDogIiwgI3tAbWV0
YWRhdGEuZW1pdHRlcl9sb2NhbC5uYW1lfSIKKyAgICBlbmQKKwogICAgIGRlZiBlbWl0dGVyCi0g
ICAgICAgIG9wX3dpZGUxNiA9IEFyZ3VtZW50Lm5ldyh3aWRlMTYsIG9wY29kZUlEVHlwZSwgMCkK
LSAgICAgICAgb3Bfd2lkZTMyID0gQXJndW1lbnQubmV3KHdpZGUzMiwgb3Bjb2RlSURUeXBlLCAw
KQotICAgICAgICBtZXRhZGF0YV9wYXJhbSA9IEBtZXRhZGF0YS5lbXB0eT8gPyAiIiA6ICIsICN7
QG1ldGFkYXRhLmVtaXR0ZXJfbG9jYWwuY3JlYXRlX3BhcmFtfSIKLSAgICAgICAgbWV0YWRhdGFf
YXJnID0gQG1ldGFkYXRhLmVtcHR5PyA/ICIiIDogIiwgI3tAbWV0YWRhdGEuZW1pdHRlcl9sb2Nh
bC5uYW1lfSIKLSAgICAgICAgPDwtRU9GLmNob21wCisgICAgICAgIDw8LUVPRgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yPgotICAgIHN0YXRpYyB2b2lkIGVtaXQoQnl0
ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc30pCisgICAgc3RhdGljIHZvaWQgZW1pdChC
eXRlY29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzX3dpdGhfY29tbWF9KQogICAgIHsKLSAg
ICAgICAgZW1pdFdpdGhTbWFsbGVzdFNpemVSZXF1aXJlbWVudDxPcGNvZGVTaXplOjpOYXJyb3cs
IEJ5dGVjb2RlR2VuZXJhdG9yPihnZW4je3VudHlwZWRfYXJnc30pOworICAgICAgICBlbWl0V2l0
aFNtYWxsZXN0U2l6ZVJlcXVpcmVtZW50PE9wY29kZVNpemU6Ok5hcnJvdywgQnl0ZWNvZGVHZW5l
cmF0b3I+KGdlbiN7dW50eXBlZF9hcmdzX3dpdGhfY29tbWF9KTsKICAgICB9CiAjeyV7CiAgICAg
dGVtcGxhdGU8T3Bjb2RlU2l6ZSBfX3NpemUsIHR5cGVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yLCBG
aXRzQXNzZXJ0aW9uIHNob3VsZEFzc2VydCA9IEFzc2VydD4KLSAgICBzdGF0aWMgYm9vbCBlbWl0
KEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4je3R5cGVkX2FyZ3N9KQorICAgIHN0YXRpYyBib29sIGVt
aXQoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc193aXRoX2NvbW1hfSkKICAgICB7
I3tAbWV0YWRhdGEuY3JlYXRlX2VtaXR0ZXJfbG9jYWx9Ci0gICAgICAgIHJldHVybiBlbWl0PF9f
c2l6ZSwgQnl0ZWNvZGVHZW5lcmF0b3IsIHNob3VsZEFzc2VydD4oZ2VuI3t1bnR5cGVkX2FyZ3N9
I3ttZXRhZGF0YV9hcmd9KTsKKyAgICAgICAgcmV0dXJuIGVtaXQ8X19zaXplLCBCeXRlY29kZUdl
bmVyYXRvciwgc2hvdWxkQXNzZXJ0PihnZW4je3VudHlwZWRfYXJnc193aXRoX2NvbW1hfSN7bWV0
YWRhdGFfYXJnfSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8T3Bjb2RlU2l6ZSBfX3NpemUsIHR5
cGVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yPgotICAgIHN0YXRpYyBib29sIGNoZWNrV2l0aG91dE1l
dGFkYXRhSUQoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc30pCisgICAgdGVtcGxh
dGU8T3Bjb2RlU2l6ZSBfX3NpemU+CisgICAgc3RhdGljIGJvb2wgY2hlY2tXaXRob3V0TWV0YWRh
dGFJRCgje3R5cGVkX2FyZ3N9KQogICAgIHsKLSAgICAgICAgZGVjbHR5cGUoZ2VuLT5hZGRNZXRh
ZGF0YUZvcihvcGNvZGVJRCkpIF9fbWV0YWRhdGFJRCB7IH07Ci0gICAgICAgIHJldHVybiBjaGVj
a0ltcGw8X19zaXplLCBCeXRlY29kZUdlbmVyYXRvcj4oZ2VuI3t1bnR5cGVkX2FyZ3N9I3ttZXRh
ZGF0YV9hcmd9KTsKKyAgICAgICAgdW5zaWduZWQgX19tZXRhZGF0YUlEID0gMDsKKyAgICAgICAg
cmV0dXJuIGNoZWNrSW1wbDxfX3NpemU+KG9wY29kZUlEI3t1bnR5cGVkX2FyZ3Nfd2l0aF9jb21t
YX0je21ldGFkYXRhX2FyZ30pOwogICAgIH0KIH0gdW5sZXNzIEBtZXRhZGF0YS5lbXB0eT99Ci0g
ICAgdGVtcGxhdGU8T3Bjb2RlU2l6ZSBfX3NpemUsIHR5cGVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9y
LCBGaXRzQXNzZXJ0aW9uIHNob3VsZEFzc2VydCA9IEFzc2VydCwgYm9vbCByZWNvcmRPcGNvZGUg
PSB0cnVlPgotICAgIHN0YXRpYyBib29sIGVtaXQoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlw
ZWRfYXJnc30je21ldGFkYXRhX3BhcmFtfSkKKyAgICB0ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6
ZSwgdHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3IsIEZpdHNBc3NlcnRpb24gc2hvdWxkQXNzZXJ0
ID0gQXNzZXJ0PgorICAgIHN0YXRpYyBib29sIGVtaXQoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiN7
dHlwZWRfYXJnc193aXRoX2NvbW1hfSN7bWV0YWRhdGFfcGFyYW19KQogICAgIHsKLSAgICAgICAg
Ym9vbCBkaWRFbWl0ID0gZW1pdEltcGw8X19zaXplLCByZWNvcmRPcGNvZGUsIEJ5dGVjb2RlR2Vu
ZXJhdG9yPihnZW4je3VudHlwZWRfYXJnc30je21ldGFkYXRhX2FyZ30pOworICAgICAgICBib29s
IGRpZEVtaXQgPSBlbWl0SW1wbDxfX3NpemUsIEJ5dGVjb2RlR2VuZXJhdG9yPihnZW4sIG9wY29k
ZUlEI3t1bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYX0je21ldGFkYXRhX2FyZ30pOwogICAgICAgICBp
ZiAoc2hvdWxkQXNzZXJ0ID09IEFzc2VydCkKICAgICAgICAgICAgIEFTU0VSVChkaWRFbWl0KTsK
ICAgICAgICAgcmV0dXJuIGRpZEVtaXQ7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8T3Bjb2RlU2l6
ZSBfX3NpemUsIHR5cGVuYW1lIEJ5dGVjb2RlR2VuZXJhdG9yPgotICAgIHN0YXRpYyB2b2lkIGVt
aXRXaXRoU21hbGxlc3RTaXplUmVxdWlyZW1lbnQoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlw
ZWRfYXJnc30pCisgICAgc3RhdGljIHZvaWQgZW1pdFdpdGhTbWFsbGVzdFNpemVSZXF1aXJlbWVu
dChCeXRlY29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzX3dpdGhfY29tbWF9KQogICAgIHsK
LSAgICAgICAgI3tAbWV0YWRhdGEuY3JlYXRlX2VtaXR0ZXJfbG9jYWx9Cisje0BtZXRhZGF0YS5j
cmVhdGVfZW1pdHRlcl9sb2NhbH0KICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihf
X3NpemUpIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihPcGNvZGVTaXplOjpOYXJyb3cpKSB7Ci0g
ICAgICAgICAgICBpZiAoZW1pdDxPcGNvZGVTaXplOjpOYXJyb3csIEJ5dGVjb2RlR2VuZXJhdG9y
LCBOb0Fzc2VydCwgdHJ1ZT4oZ2VuI3t1bnR5cGVkX2FyZ3N9I3ttZXRhZGF0YV9hcmd9KSkKKyAg
ICAgICAgICAgIGlmIChlbWl0PE9wY29kZVNpemU6Ok5hcnJvdywgQnl0ZWNvZGVHZW5lcmF0b3Is
IE5vQXNzZXJ0PihnZW4je3VudHlwZWRfYXJnc193aXRoX2NvbW1hfSN7bWV0YWRhdGFfYXJnfSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oX19zaXplKSA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oT3Bjb2RlU2l6
ZTo6V2lkZTE2KSkgewotICAgICAgICAgICAgaWYgKGVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZTE2LCBC
eXRlY29kZUdlbmVyYXRvciwgTm9Bc3NlcnQsIHRydWU+KGdlbiN7dW50eXBlZF9hcmdzfSN7bWV0
YWRhdGFfYXJnfSkpCisgICAgICAgICAgICBpZiAoZW1pdDxPcGNvZGVTaXplOjpXaWRlMTYsIEJ5
dGVjb2RlR2VuZXJhdG9yLCBOb0Fzc2VydD4oZ2VuI3t1bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYX0j
e21ldGFkYXRhX2FyZ30pKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICBlbWl0PE9wY29kZVNpemU6OldpZGUzMiwgQnl0ZWNvZGVHZW5lcmF0b3IsIEFzc2VydCwg
dHJ1ZT4oZ2VuI3t1bnR5cGVkX2FyZ3N9I3ttZXRhZGF0YV9hcmd9KTsKKyAgICAgICAgZW1pdDxP
cGNvZGVTaXplOjpXaWRlMzIsIEJ5dGVjb2RlR2VuZXJhdG9yLCBBc3NlcnQ+KGdlbiN7dW50eXBl
ZF9hcmdzX3dpdGhfY29tbWF9I3ttZXRhZGF0YV9hcmd9KTsKICAgICB9CitFT0YKKyAgICBlbmQK
IAotcHJpdmF0ZToKKyAgICBkZWYgZW1pdF9pbXBsCisgICAgICAgIDw8LUVPRgogICAgIHRlbXBs
YXRlPE9wY29kZVNpemUgX19zaXplLCB0eXBlbmFtZSBCeXRlY29kZUdlbmVyYXRvcj4KLSAgICBz
dGF0aWMgYm9vbCBjaGVja0ltcGwoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlwZWRfcmVmZXJl
bmNlX2FyZ3N9I3ttZXRhZGF0YV9wYXJhbX0pCisgICAgc3RhdGljIGJvb2wgZW1pdEltcGwoQnl0
ZWNvZGVHZW5lcmF0b3IqIGdlbiwgI3tvcGNvZGVJRFR5cGV9IG9wY29kZUlEI3t0eXBlZF9hcmdz
X3dpdGhfY29tbWF9I3ttZXRhZGF0YV9wYXJhbX0pCiAgICAgewotICAgICAgICBVTlVTRURfUEFS
QU0oZ2VuKTsKLSNpZiBPUyhXSU5ET1dTKSAmJiBFTkFCTEUoQ19MT09QKQotICAgICAgICAvLyBG
SVhNRTogRGlzYWJsZSB3aWRlMTYgb3B0aW1pemF0aW9uIGZvciBXaW5kb3dzIENMb29wCi0gICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgyODMKLSAg
ICAgICAgaWYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpXaWRlMTYpCisgICAgICAgIGlmICghY2hl
Y2tJbXBsPF9fc2l6ZT4ob3Bjb2RlSUQje3VudHlwZWRfYXJnc193aXRoX2NvbW1hfSN7bWV0YWRh
dGFfYXJnfSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSAgICAgICAgcmV0
dXJuICN7bWFwX2ZpZWxkc193aXRoX3NpemUoIiIsICJfX3NpemUiLCAmOmZpdHNfY2hlY2spLmpv
aW4gIlxuICAgICAgICAgICAgJiYgIn0KLSAgICAgICAgICAgICYmIChfX3NpemUgPT0gT3Bjb2Rl
U2l6ZTo6V2lkZTE2ID8gI3tvcF93aWRlMTYuZml0c19jaGVjayhTaXplOjpOYXJyb3cpfSA6IHRy
dWUpCi0gICAgICAgICAgICAmJiAoX19zaXplID09IE9wY29kZVNpemU6OldpZGUzMiA/ICN7b3Bf
d2lkZTMyLmZpdHNfY2hlY2soU2l6ZTo6TmFycm93KX0gOiB0cnVlKTsKLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6ZSwgYm9vbCByZWNvcmRPcGNvZGUsIHR5cGVuYW1lIEJ5
dGVjb2RlR2VuZXJhdG9yPgotICAgIHN0YXRpYyBib29sIGVtaXRJbXBsKEJ5dGVjb2RlR2VuZXJh
dG9yKiBnZW4je3R5cGVkX2FyZ3N9I3ttZXRhZGF0YV9wYXJhbX0pCi0gICAgewotICAgICAgICAj
eyFAY2hlY2twb2ludHMubmlsPyA/ICJnZW4tPnNldFVzZXNDaGVja3BvaW50cygpOyIgOiAiIn0K
KyAgICAgICAgI3siZ2VuLT5zZXRVc2VzQ2hlY2twb2ludHMoKTsiIHVubGVzcyBAY2hlY2twb2lu
dHMubmlsP30KICAgICAgICAgaWYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpXaWRlMTYpCiAgICAg
ICAgICAgICBnZW4tPmFsaWduV2lkZU9wY29kZTE2KCk7CiAgICAgICAgIGVsc2UgaWYgKF9fc2l6
ZSA9PSBPcGNvZGVTaXplOjpXaWRlMzIpCiAgICAgICAgICAgICBnZW4tPmFsaWduV2lkZU9wY29k
ZTMyKCk7Ci0gICAgICAgIGlmIChjaGVja0ltcGw8X19zaXplPihnZW4je3VudHlwZWRfYXJnc30j
e21ldGFkYXRhX2FyZ30pKSB7Ci0gICAgICAgICAgICBpZiAocmVjb3JkT3Bjb2RlKQotICAgICAg
ICAgICAgICAgIGdlbi0+cmVjb3JkT3Bjb2RlKG9wY29kZUlEKTsKLSAgICAgICAgICAgIGlmIChf
X3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTE2KQotICAgICAgICAgICAgICAgICN7b3Bfd2lkZTE2
LmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93fQotICAgICAgICAgICAgZWxzZSBpZiAoX19zaXplID09
IE9wY29kZVNpemU6OldpZGUzMikKLSAgICAgICAgICAgICAgICAje29wX3dpZGUzMi5maXRzX3dy
aXRlIFNpemU6Ok5hcnJvd30KLSAgICAgICAgICAgICN7QXJndW1lbnQubmV3KCJvcGNvZGVJRCIs
IG9wY29kZUlEVHlwZSwgMCkuZml0c193cml0ZSBTaXplOjpOYXJyb3d9Ci0je21hcF9vcGVyYW5k
c193aXRoX3NpemUoIiAgICAgICAgICAgICIsICJfX3NpemUiLCAmOmZpdHNfd3JpdGUpLmpvaW4g
IlxuIn0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgZ2VuLT5yZWNvcmRPcGNvZGUob3Bjb2RlSUQpOworICAgICAgICBp
ZiAoX19zaXplID09IE9wY29kZVNpemU6OldpZGUxNikKKyAgICAgICAgICAgICN7QG9wX3dpZGUx
Ni5maXRzX3dyaXRlIFNpemU6Ok5hcnJvd30KKyAgICAgICAgZWxzZSBpZiAoX19zaXplID09IE9w
Y29kZVNpemU6OldpZGUzMikKKyAgICAgICAgICAgICN7QG9wX3dpZGUzMi5maXRzX3dyaXRlIFNp
emU6Ok5hcnJvd30KKyAgICAgICAgI3tBcmd1bWVudC5uZXcoIm9wY29kZUlEIiwgb3Bjb2RlSURU
eXBlLCAwKS5maXRzX3dyaXRlIFNpemU6Ok5hcnJvd30KKyN7bWFwX29wZXJhbmRzX3dpdGhfc2l6
ZSgiICAgICAgICAiLCAiX19zaXplIiwgJjpmaXRzX3dyaXRlKS5qb2luICJcbiJ9CisgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KLQotcHVibGljOgogRU9GCiAgICAgZW5kCiAKLSAgICBkZWYg
ZHVtcGVyCisgICAgZGVmIGNoZWNrX2ltcGwKICAgICAgICAgPDwtRU9GCi0gICAgdm9pZCBkdW1w
KEJ5dGVjb2RlRHVtcGVyQmFzZSogZHVtcGVyLCBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IF9f
bG9jYXRpb24sIGludCBfX3NpemVTaGlmdEFtb3VudCkKKyAgICB0ZW1wbGF0ZTxPcGNvZGVTaXpl
IF9fc2l6ZT4KKyAgICBzdGF0aWMgYm9vbCBjaGVja0ltcGwoI3tvcGNvZGVJRFR5cGV9IG9wY29k
ZUlEI3t0eXBlZF9yZWZlcmVuY2VfYXJnc193aXRoX2NvbW1hfSN7bWV0YWRhdGFfcGFyYW19KQog
ICAgIHsKLSAgICAgICAgZHVtcGVyLT5wcmludExvY2F0aW9uQW5kT3AoX19sb2NhdGlvbiwgJiIq
KiN7QG5hbWV9IlsyIC0gX19zaXplU2hpZnRBbW91bnRdKTsKLSN7cHJpbnRfYXJncyB7IHxhcmd8
Ci08PC1FT0YuY2hvbXAKLSAgICAgICAgZHVtcGVyLT5kdW1wT3BlcmFuZCgje2FyZy5maWVsZF9u
YW1lfSwgI3thcmcuaW5kZXggPT0gMH0pOwotRU9GCi0gICAgfX0KKyNpZiBPUyhXSU5ET1dTKSAm
JiBFTkFCTEUoQ19MT09QKQorICAgICAgICAvLyBGSVhNRTogRGlzYWJsZSB3aWRlMTYgb3B0aW1p
emF0aW9uIGZvciBXaW5kb3dzIENMb29wCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgyODMKKyAgICAgICAgaWYgKF9fc2l6ZSA9PSBPcGNvZGVT
aXplOjpXaWRlMTYpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICAgICAg
cmV0dXJuICN7bWFwX2ZpZWxkc193aXRoX3NpemUoIiIsICJfX3NpemUiLCAmOmZpdHNfY2hlY2sp
LmpvaW4gIlxuICAgICAgICAgICAgJiYgIn07CiAgICAgfQogRU9GCiAgICAgZW5kCiAKLSAgICBk
ZWYgY29uc3RydWN0b3JzCi0gICAgICAgIGZpZWxkcyA9IChAYXJncyB8fCBbXSkgKyAoQG1ldGFk
YXRhLmVtcHR5PyA/IFtdIDogW0BtZXRhZGF0YV0pCi0gICAgICAgIGluaXQgPSAtPihzaXplKSB7
IGZpZWxkcy5lbXB0eT8gID8gIiIgOiAiOiAje2ZpZWxkcy5tYXAud2l0aF9pbmRleCB7IHxhcmcs
IGl8IGFyZy5sb2FkX2Zyb21fc3RyZWFtKGksIHNpemUpIH0uam9pbiAiXG4gICAgICAgICwgIiB9
IiB9CisgICAgZGVmIGNvbnN0cnVjdG9yc19pbml0CisgICAgICAgIGlmIEBvcGNvZGVfZ3JvdXAu
bmlsPworICAgICAgICAgICAgZmllbGRzID0gKEBhcmdzIHx8IFtdKSArIChAbWV0YWRhdGEuZW1w
dHk/ID8gW10gOiBbQG1ldGFkYXRhXSkKKyAgICAgICAgICAgIC0+KHNpemUpIHsgZmllbGRzLmVt
cHR5PyAgPyAiIiA6ICI6ICN7ZmllbGRzLm1hcC53aXRoX2luZGV4IHsgfGFyZywgaXwgYXJnLmxv
YWRfZnJvbV9zdHJlYW0oaSwgc2l6ZSkgfS5qb2luICJcbiAgICAgICAgLCAiIH0iIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgLT4oc2l6ZSkgeyAiOiAje0BvcGNvZGVfZ3JvdXAubmFtZX0o
c3RyZWFtKSIgfQorICAgICAgICBlbmQKKyAgICBlbmQKIAorICAgIGRlZiBjb25zdHJ1Y3RvcnMK
ICAgICAgICAgPDwtRU9GCiAgICAgI3tjYXBpdGFsaXplZF9uYW1lfShjb25zdCB1aW50OF90KiBz
dHJlYW0pCi0gICAgICAgICN7aW5pdC5jYWxsKCJPcGNvZGVTaXplOjpOYXJyb3ciKX0KKyAgICAg
ICAgI3tjb25zdHJ1Y3RvcnNfaW5pdC5jYWxsKCJPcGNvZGVTaXplOjpOYXJyb3ciKX0KICAgICB7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtLCBiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHN0cmVhbSlbLTFdID09IG9wY29kZUlEKTsKICAgICB9CiAKICAgICAje2NhcGl0YWxpemVk
X25hbWV9KGNvbnN0IHVpbnQxNl90KiBzdHJlYW0pCi0gICAgICAgICN7aW5pdC5jYWxsKCJPcGNv
ZGVTaXplOjpXaWRlMTYiKX0KKyAgICAgICAgI3tjb25zdHJ1Y3RvcnNfaW5pdC5jYWxsKCJPcGNv
ZGVTaXplOjpXaWRlMTYiKX0KICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtLCBi
aXR3aXNlX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmVhbSlbLTFdID09IG9wY29kZUlEKTsKICAg
ICB9CiAKLQogICAgICN7Y2FwaXRhbGl6ZWRfbmFtZX0oY29uc3QgdWludDMyX3QqIHN0cmVhbSkK
LSAgICAgICAgI3tpbml0LmNhbGwoIk9wY29kZVNpemU6OldpZGUzMiIpfQorICAgICAgICAje2Nv
bnN0cnVjdG9yc19pbml0LmNhbGwoIk9wY29kZVNpemU6OldpZGUzMiIpfQogICAgIHsKICAgICAg
ICAgQVNTRVJUX1VOVVNFRChzdHJlYW0sIGJpdHdpc2VfY2FzdDxjb25zdCB1aW50OF90Kj4oc3Ry
ZWFtKVstMV0gPT0gb3Bjb2RlSUQpOwogICAgIH0KK0VPRgorICAgIGVuZAogCisgICAgZGVmIGRl
Y29kZQorICAgICAgICA8PC1FT0YKICAgICBzdGF0aWMgI3tjYXBpdGFsaXplZF9uYW1lfSBkZWNv
ZGUoY29uc3QgdWludDhfdCogc3RyZWFtKQogICAgIHsKICAgICAgICAgLy8gQSBwb2ludGVyIGlz
IHBvaW50aW5nIHRvIHRoZSBmaXJzdCBvcGVyYW5kIChvcGNvZGUgYW5kIHByZWZpeCBhcmUgbm90
IGluY2x1ZGVkKS4KQEAgLTMwMCw3ICszMjEsNyBAQCBFT0YKICAgICBlbmQKIAogICAgIGRlZiBz
ZXR0ZXJzCi0gICAgICAgIHByaW50X2FyZ3MgeyB8YXwgYS5zZXR0ZXIodHJhaXRzKSB9CisgICAg
ICAgIHByaW50X2FyZ3MgeyB8YXwgYS5zZXR0ZXIodHJhaXRzKSB9IGlmIEBvcGNvZGVfZ3JvdXAu
bmlsPwogICAgIGVuZAogCiAgICAgZGVmIG1ldGFkYXRhX3N0cnVjdF9hbmRfYWNjZXNzb3IKQEAg
LTMxMCw5ICszMzEsMTQgQEAgRU9GCiAgICAgZW5kCiAKICAgICBkZWYgbWVtYmVycwotICAgICAg
ICA8PC1FT0YuY2hvbXAKKyAgICAgICAgaWYgQG9wY29kZV9ncm91cC5uaWw/CisgICAgICAgICAg
ICA8PC1FT0YKKyAgICBmcmllbmQgdm9pZCBkdW1wI3tAc2VjdGlvbi5pc193YXNtPyA/ICJXYXNt
IiA6ICJCeXRlY29kZSJ9KEJ5dGVjb2RlRHVtcGVyQmFzZSogZHVtcGVyLCBJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0IF9fbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiBfX2luc3RydWN0aW9u
KTsKICN7cHJpbnRfbWVtYmVycygiICAgICIsICY6ZmllbGQpfSN7QG1ldGFkYXRhLmZpZWxkKCIg
ICAgIil9CiBFT0YKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIiIKKyAgICAgICAgZW5kCiAg
ICAgZW5kCiAKICAgICBkZWYgc2V0X2VudHJ5X2FkZHJlc3MoaWQpCkBAIC0zNTMsMjEgKzM3OSwz
NiBAQCBFT0YKICAgICBlbmQKIAogICAgIGRlZiBzZWxmLmR1bXBfYnl0ZWNvZGUobmFtZSwgb3Bj
b2RlX3RyYWl0cywgb3Bjb2RlcykKLSAgICAgICAgPDwtRU9GLmNob21wCisgICAgICAgIDw8LUZV
TEwuY2hvbXAKIHZvaWQgZHVtcCN7bmFtZX0oQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgX19sb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qIF9f
aW5zdHJ1Y3Rpb24pCiB7CisgICAgaW50IHNpemVTaGlmdEFtb3VudCA9IF9faW5zdHJ1Y3Rpb24t
PnNpemVTaGlmdEFtb3VudDwje29wY29kZV90cmFpdHN9PigpOwogICAgIHN3aXRjaCAoX19pbnN0
cnVjdGlvbi0+b3Bjb2RlSUQ8I3tvcGNvZGVfdHJhaXRzfT4oKSkgewogI3tvcGNvZGVzLm1hcCB7
IHxvcHwKLSAgICAgICAgPDwtRU9GLmNob21wCisgICAgaWYgb3AuYXJncy5uaWw/CisgICAgICAg
IDw8LUNBU0UuY2hvbXAKICAgICBjYXNlICN7b3AubmFtZX06Ci0gICAgICAgIF9faW5zdHJ1Y3Rp
b24tPmFzPCN7b3AuY2FwaXRhbGl6ZWRfbmFtZX0sICN7b3Bjb2RlX3RyYWl0c30+KCkuZHVtcChk
dW1wZXIsIF9fbG9jYXRpb24sIF9faW5zdHJ1Y3Rpb24tPnNpemVTaGlmdEFtb3VudDwje29wY29k
ZV90cmFpdHN9PigpKTsKKyAgICAgICAgZHVtcGVyLT5wcmludExvY2F0aW9uQW5kT3AoX19sb2Nh
dGlvbiwgJiIqKiN7b3AudW5wcmVmaXhlZF9uYW1lfSJbMiAtIHNpemVTaGlmdEFtb3VudF0pOwog
ICAgICAgICBicmVhazsKLUVPRgotICAgIH0uam9pbiAiXG4ifQorQ0FTRQorICAgIGVsc2UKKyAg
ICAgICAgPDwtQ0FTRS5jaG9tcAorICAgIGNhc2UgI3tvcC5uYW1lfTogeworICAgICAgICBhdXRv
IGluc3RydWN0aW9uID0gX19pbnN0cnVjdGlvbi0+YXM8I3tvcC5jYXBpdGFsaXplZF9uYW1lfSwg
I3tvcGNvZGVfdHJhaXRzfT4oKTsKKyAgICAgICAgZHVtcGVyLT5wcmludExvY2F0aW9uQW5kT3Ao
X19sb2NhdGlvbiwgJiIqKiN7b3AudW5wcmVmaXhlZF9uYW1lfSJbMiAtIHNpemVTaGlmdEFtb3Vu
dF0pOworI3tvcC5wcmludF9hcmdzIHsgfGFyZ3wKKyAgICAgICAgICAgIDw8LUFSRy5jaG9tcAor
ICAgICAgICBkdW1wZXItPmR1bXBPcGVyYW5kKGluc3RydWN0aW9uLiN7YXJnLmZpZWxkX25hbWV9
LCAje2FyZy5pbmRleCA9PSAwfSk7CitBUkcKKyAgICAgICAgfX0KKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorQ0FTRQorICAgIGVuZH0uam9pbiAiXG4ifQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KLUVPRgorRlVMTAogICAgIGVuZAogZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZUdyb3VwLnJi
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9PcGNvZGVHcm91cC5yYgppbmRleCA4
ZWMyYTIzY2Y0OC4uMDg3YmRkMTg5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0b3IvT3Bjb2RlR3JvdXAucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRvci9PcGNvZGVHcm91cC5yYgpAQCAtMjgsMTAgKzI4LDYwIEBAIGNsYXNzIE9wY29kZUdy
b3VwCiAgICAgYXR0cl9yZWFkZXIgOm9wY29kZXMKICAgICBhdHRyX3JlYWRlciA6Y29uZmlnCiAK
LSAgICBkZWYgaW5pdGlhbGl6ZShzZWN0aW9uLCBkZXNjLCBvcGNvZGVzLCBjb25maWcpCisgICAg
ZGVmIGluaXRpYWxpemUoc2VjdGlvbiwgbmFtZSwgb3Bjb2RlcywgY29uZmlnKQogICAgICAgICBA
c2VjdGlvbiA9IHNlY3Rpb24KICAgICAgICAgQG5hbWUgPSBuYW1lCiAgICAgICAgIEBvcGNvZGVz
ID0gb3Bjb2RlcwogICAgICAgICBAY29uZmlnID0gY29uZmlnCisgICAgICAgIEBtZXRhZGF0YSA9
IE1ldGFkYXRhLm5ldyBjb25maWdbOm1ldGFkYXRhXSwgY29uZmlnWzptZXRhZGF0YV9pbml0aWFs
aXplcnNdCisgICAgICAgIEBhcmdzID0gY29uZmlnWzphcmdzXS5tYXAud2l0aF9pbmRleCB7IHwo
YXJnX25hbWUsIHR5cGUpLCBpbmRleHwgQXJndW1lbnQubmV3IGFyZ19uYW1lLCB0eXBlLCBpbmRl
eCB9IHVubGVzcyBjb25maWdbOmFyZ3NdLm5pbD8KKyAgICAgICAgQGZha2Vfb3Bjb2RlID0gT3Bj
b2RlLm5ldyhzZWN0aW9uLCBuYW1lLCBjb25maWdbOmV4dHJhc10sIGNvbmZpZ1s6YXJnc10sIGNv
bmZpZ1s6bWV0YWRhdGFdLCBjb25maWdbOm1ldGFkYXRhX2luaXRpYWxpemVyc10sIGNvbmZpZ1s6
dG1wc10sIGNvbmZpZ1s6Y2hlY2twb2ludHNdLCBuaWwpCisgICAgZW5kCisKKyAgICBkZWYgbmFt
ZQorICAgICAgICBAc2VjdGlvbi5jb25maWdbOm9wX3ByZWZpeF0uc3BsaXQoJ18nKS5tYXAoJjpj
YXBpdGFsaXplKS5qb2luICsgIiN7QG5hbWV9IgorICAgIGVuZAorCisgICAgZGVmIHN0cnVjdAor
ICAgICAgICA8PC1FT0YKK3N0cnVjdCAje25hbWV9IDogcHVibGljIEluc3RydWN0aW9uIHsKKyN7
Y29uc3RydWN0b3JzfQorcHJvdGVjdGVkOgorI3tAZmFrZV9vcGNvZGUuZW1pdF9pbXBsfQorI3tA
ZmFrZV9vcGNvZGUuY2hlY2tfaW1wbH0KK3B1YmxpYzoKKyN7c2V0dGVyc30KKyN7bWVtYmVyc30K
K307CitFT0YKKyAgICBlbmQKKworICAgIGRlZiBjb25zdHJ1Y3RvcnMKKyAgICAgICAgPDwtRU9G
CisgICAgI3tuYW1lfShjb25zdCB1aW50OF90KiBzdHJlYW0pCisgICAgICAgICN7QGZha2Vfb3Bj
b2RlLmNvbnN0cnVjdG9yc19pbml0LmNhbGwoIk9wY29kZVNpemU6Ok5hcnJvdyIpfQorICAgIHsK
KyAgICB9CisKKyAgICAje25hbWV9KGNvbnN0IHVpbnQxNl90KiBzdHJlYW0pCisgICAgICAgICN7
QGZha2Vfb3Bjb2RlLmNvbnN0cnVjdG9yc19pbml0LmNhbGwoIk9wY29kZVNpemU6OldpZGUxNiIp
fQorICAgIHsKKyAgICB9CisKKyAgICAje25hbWV9KGNvbnN0IHVpbnQzMl90KiBzdHJlYW0pCisg
ICAgICAgICN7QGZha2Vfb3Bjb2RlLmNvbnN0cnVjdG9yc19pbml0LmNhbGwoIk9wY29kZVNpemU6
OldpZGUzMiIpfQorICAgIHsKKyAgICB9CitFT0YKKyAgICBlbmQKKworICAgIGRlZiBzZXR0ZXJz
CisgICAgICAgIEBmYWtlX29wY29kZS5wcmludF9hcmdzIHsgfGF8IGEuc2V0dGVyKEBmYWtlX29w
Y29kZS50cmFpdHMpIH0KKyAgICBlbmQKKworICAgIGRlZiBtZW1iZXJzCisgICAgICAgIDw8LUVP
Ri5jaG9tcAorI3tAZmFrZV9vcGNvZGUucHJpbnRfbWVtYmVycygiICAgICIsICY6ZmllbGQpfSN7
QG1ldGFkYXRhLmZpZWxkKCIgICAgIil9CitFT0YKICAgICBlbmQKIGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9uLnJiCmluZGV4IDliNWVlOTA5NmVlLi5mZjQ3YmYw
MzUyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9TZWN0aW9u
LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlvbi5yYgpAQCAt
MzAsNiArMzAsNyBAQCBjbGFzcyBTZWN0aW9uCiAgIGF0dHJfcmVhZGVyIDpuYW1lCiAgIGF0dHJf
cmVhZGVyIDpjb25maWcKICAgYXR0cl9yZWFkZXIgOm9wY29kZXMKKyAgYXR0cl9yZWFkZXIgOm9w
Y29kZV9ncm91cHMKIAogICBkZWYgaW5pdGlhbGl6ZShuYW1lLCBjb25maWcpCiAgICAgQG5hbWUg
PSBuYW1lCkBAIC00MiwxMyArNDMsMTQgQEAgY2xhc3MgU2VjdGlvbgogICAgICAgQG9wY29kZXMg
PDwgY3JlYXRlX29wY29kZShuYW1lLCBjb25maWcpCiAgIGVuZAogCi0gIGRlZiBjcmVhdGVfb3Bj
b2RlKG5hbWUsIGNvbmZpZykKLSAgICAgIE9wY29kZS5uZXcoc2VsZiwgbmFtZSwgY29uZmlnWzpl
eHRyYXNdLCBjb25maWdbOmFyZ3NdLCBjb25maWdbOm1ldGFkYXRhXSwgY29uZmlnWzptZXRhZGF0
YV9pbml0aWFsaXplcnNdLCBjb25maWdbOnRtcHNdLCBjb25maWdbOmNoZWNrcG9pbnRzXSkKKyAg
ZGVmIGNyZWF0ZV9vcGNvZGUobmFtZSwgY29uZmlnLCBvcGNvZGVfZ3JvdXAgPSBuaWwpCisgICAg
ICBPcGNvZGUubmV3KHNlbGYsIG5hbWUsIGNvbmZpZ1s6ZXh0cmFzXSwgY29uZmlnWzphcmdzXSwg
Y29uZmlnWzptZXRhZGF0YV0sIGNvbmZpZ1s6bWV0YWRhdGFfaW5pdGlhbGl6ZXJzXSwgY29uZmln
Wzp0bXBzXSwgY29uZmlnWzpjaGVja3BvaW50c10sIG9wY29kZV9ncm91cCkKICAgZW5kCiAKICAg
ZGVmIGFkZF9vcGNvZGVfZ3JvdXAobmFtZSwgb3Bjb2RlcywgY29uZmlnKQotICAgICAgb3Bjb2Rl
cyA9IG9wY29kZXMubWFwIHsgfG9wY29kZXwgY3JlYXRlX29wY29kZShvcGNvZGUsIGNvbmZpZykg
fQotICAgICAgQG9wY29kZV9ncm91cHMgPDwgT3Bjb2RlR3JvdXAubmV3KHNlbGYsIG5hbWUsIG9w
Y29kZXMsIGNvbmZpZykKKyAgICAgIG9wY29kZV9ncm91cCA9IE9wY29kZUdyb3VwLm5ldyhzZWxm
LCBuYW1lLCBvcGNvZGVzLCBjb25maWcpCisgICAgICBAb3Bjb2RlX2dyb3VwcyA8PCBvcGNvZGVf
Z3JvdXAKKyAgICAgIG9wY29kZXMgPSBvcGNvZGVzLm1hcCB7IHxvcGNvZGV8IGNyZWF0ZV9vcGNv
ZGUob3Bjb2RlLCBjb25maWcsIG9wY29kZV9ncm91cCkgfQogICAgICAgQG9wY29kZXMgKz0gb3Bj
b2RlcwogICBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRv
ci9XYXNtLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9XYXNtLnJiCmluZGV4
IGMxNzg1ODZkNTIxLi5lMmE2OGIzMzY5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9XYXNtLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvV2FzbS5yYgpAQCAtNiw2ICs2LDEwIEBAIG1vZHVsZSBXYXNtCiAgICAgZW5kCiAKICAgICBk
ZWYgc2VsZi5hdXRvZ2VuZXJhdGVfb3Bjb2Rlcyhjb250ZXh0LCB3YXNtX2pzb24pCisgICAgICAg
IHVuYXJ5T3BzID0gW10KKyAgICAgICAgYmluYXJ5T3BzID0gW10KKyAgICAgICAgdmlydHVhbFJl
Z2lzdGVyID0gY29udGV4dC5ldmFsKCJWaXJ0dWFsUmVnaXN0ZXIiKQorCiAgICAgICAgIEpTT04u
cGFyc2Uod2FzbV9qc29uKVsib3Bjb2RlIl0uZWFjaCBkbyB8bmFtZSwgdmFsdWV8CiAgICAgICAg
ICAgICBjYXRlZ29yeSA9IHZhbHVlWyJjYXRlZ29yeSJdCiAKQEAgLTE0LDMyICsxOCwyOSBAQCBt
b2R1bGUgV2FzbQogICAgICAgICAgICAgcmV0dXJuQ291bnQgPSB2YWx1ZVsicmV0dXJuIl0uc2l6
ZQogICAgICAgICAgICAgcGFyYW1ldGVyQ291bnQgPSB2YWx1ZVsicGFyYW1ldGVyIl0uc2l6ZQog
Ci0gICAgICAgICAgICBhc3NlcnQoInNob3VsZCByZXR1cm4gMCBvciAxIHZhbHVlcyIpIHsgWzAs
IDFdLmluY2x1ZGU/IHJldHVybkNvdW50IH0KKyAgICAgICAgICAgIGFzc2VydCgic2hvdWxkIHJl
dHVybiBleGFjdGx5IDEgdmFsdWUiKSB7IHJldHVybkNvdW50ID09IDF9CiAgICAgICAgICAgICBh
c3NlcnQoInNob3VsZCBvbmx5IGhhdmUgMSBvciAyIHBhcmFtZXRlcnMiKSB7IFsxLCAyXS5pbmNs
dWRlPyBwYXJhbWV0ZXJDb3VudCB9CiAKICAgICAgICAgICAgIG5hbWUgPSBub3JtYWxpemUobmFt
ZSkKLSAgICAgICAgICAgIGFyZ3VtZW50cyA9IHt9Ci0KLSAgICAgICAgICAgIHZpcnR1YWxSZWdp
c3RlciA9IGNvbnRleHQuZXZhbCgiVmlydHVhbFJlZ2lzdGVyIikKIAotICAgICAgICAgICAgaWYg
cmV0dXJuQ291bnQgPiAwCi0gICAgICAgICAgICAgICAgYXJndW1lbnRzWzpkc3RdID0gdmlydHVh
bFJlZ2lzdGVyCisgICAgICAgICAgICBpZiAocGFyYW1ldGVyQ291bnQgPT0gMSkKKyAgICAgICAg
ICAgICAgICB1bmFyeU9wcyA8PCBuYW1lCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgYmluYXJ5T3BzIDw8IG5hbWUKICAgICAgICAgICAgIGVuZAorICAgICAgICBlbmQKIAotICAg
ICAgICAgICAgY2FzZSBwYXJhbWV0ZXJDb3VudAotICAgICAgICAgICAgd2hlbiAxCi0gICAgICAg
ICAgICAgICAgYXJndW1lbnRzWzpvcGVyYW5kXSA9IHZpcnR1YWxSZWdpc3RlcgotICAgICAgICAg
ICAgd2hlbiAyCi0gICAgICAgICAgICAgICAgYXJndW1lbnRzWzpsaHNdID0gdmlydHVhbFJlZ2lz
dGVyCi0gICAgICAgICAgICAgICAgYXJndW1lbnRzWzpyaHNdID0gdmlydHVhbFJlZ2lzdGVyCi0g
ICAgICAgICAgICBlbmQKKyAgICAgICAgZGVjbGFyZV9vcF9ncm91cCA9IGNvbnRleHQuZXZhbCgi
UHJvYy5uZXcgeyB8bmFtZSwgb3BzLCBjb25maWd8IG9wX2dyb3VwKG5hbWUsIG9wcywgY29uZmln
KSB9IikKIAotICAgICAgICAgICAgY29udGV4dC5ldmFsKCJQcm9jLm5ldyB7IHxhcmd1bWVudHMs
IGV4dHJhcyB8IG9wKCcje25hbWV9JywgeyBleHRyYXM6IGV4dHJhcywgYXJnczogYXJndW1lbnRz
IH0pIH0iKS5jYWxsKGFyZ3VtZW50cywgdmFsdWUpCi0gICAgICAgIGVuZAorICAgICAgICBjb25m
aWdVbmFyeU9wcyA9IHsgZXh0cmFzOiB7YXV0b2dlbmVyYXRlZDogdHJ1ZX0sIGFyZ3M6IHtkc3Q6
IHZpcnR1YWxSZWdpc3Rlciwgb3BlcmFuZDogdmlydHVhbFJlZ2lzdGVyfX0KKyAgICAgICAgY29u
ZmlnQmluYXJ5T3BzID0geyBleHRyYXM6IHthdXRvZ2VuZXJhdGVkOiB0cnVlfSwgYXJnczoge2Rz
dDogdmlydHVhbFJlZ2lzdGVyLCBsaHM6IHZpcnR1YWxSZWdpc3RlciwgcmhzOiB2aXJ0dWFsUmVn
aXN0ZXJ9fQorCisgICAgICAgIGRlY2xhcmVfb3BfZ3JvdXAuY2FsbCgiVW5hcnlPcHMiLCB1bmFy
eU9wcywgY29uZmlnVW5hcnlPcHMpCisgICAgICAgIGRlY2xhcmVfb3BfZ3JvdXAuY2FsbCgiQmlu
YXJ5T3BzIiwgYmluYXJ5T3BzLCBjb25maWdCaW5hcnlPcHMpCiAgICAgZW5kCiAKICAgICBkZWYg
c2VsZi5nZW5lcmF0ZV9sbGludF9nZW5lcmF0b3Ioc2VjdGlvbikKLSAgICAgICAgb3Bjb2RlcyA9
IHNlY3Rpb24ub3Bjb2Rlcy5zZWxlY3QgeyB8b3B8IFsiYXJpdGhtZXRpYyIsICJjb21wYXJpc29u
IiwgImNvbnZlcnNpb24iXS5pbmNsdWRlPyBvcC5leHRyYXNbImNhdGVnb3J5Il0gfQorICAgICAg
ICBvcGNvZGVzID0gc2VjdGlvbi5vcGNvZGVzLnNlbGVjdCB7IHxvcHwgb3AuZXh0cmFzWzphdXRv
Z2VuZXJhdGVkXSB9CiAgICAgICAgIG1ldGhvZHMgPSBvcGNvZGVzLm1hcCBkbyB8b3B8CiAgICAg
ICAgICAgICBjYXNlIG9wLmFyZ3Muc2l6ZQogICAgICAgICAgICAgd2hlbiAyCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400015</attachid>
            <date>2020-05-21 20:04:53 -0700</date>
            <delta_ts>2020-05-21 20:04:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch206563</filename>
            <type>text/plain</type>
            <size>33069</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDA5ZjdjZDI5ZDAzLi5mZDhmZmQzYzk4NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDUtMjEgIFJvYmlu
IE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBTaHJpbmsgQnl0ZWNv
ZGVTdHJ1Y3RzLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjU2MworCisgICAgICAgIFJldmlld2VkIGJ5IFRhZGV1IFphZ2FsbG8uCisKKyAgICAg
ICAgVGhlIG1haW4gZ29hbCBvZiB0aGlzIHBhdGNoIHdhcyB0byByZWR1Y2UgY29tcGlsZSB0aW1l
cy4KKyAgICAgICAgSXQgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBzaW1wbGlmaWNhdG9ucyB0byBC
eXRlY29kZVN0cnVjdHMuaCwgd2hpY2ggaXMgaHVnZSBhbmQgdHJhbnNpdGl2ZWx5IGluY2x1ZGVk
IGluIG1vc3Qgb2YgSlNDICh0aHJvdWdoIENvbW1vblNsb3dQYXRocy5oIC0+IEpJVC5oKToKKyAg
ICAgICAgLSBPbmUgc3RydWN0IHBlciBvcF9ncm91cCwgd2l0aCBzZXR0ZXJzLCBjb25zdHJ1Y3Rv
cnMsIGVtaXRJbXBsLCBjaGVja0ltcGwsIGFuZCB0aGUgbWVtYmVycywgdGhpcyB3YXkgdGhleSBh
cmUgc2hhcmVkIGFtb25nIHRoZSB2YXJpb3VzIG9wY29kZXMgaW4gYSBncm91cC4KKyAgICAgICAg
LSBNb3JlIG9wX2dyb3VwcyBpbiBCeXRlY29kZUxpc3QucmIgKHRvIG1heGltaXplIHRoZSBiZW5l
Zml0IG9mIHRoZSBwcmV2aW91cyBvcHRpbWl6YXRpb24pCisgICAgICAgIC0gQXV0b21hdGljYWxs
eSB1c2UgV2FzbVVuYXJ5T3BzIGFuZCBXYXNtQmluYXJ5T3BzIGdyb3VwcyBmb3IgdGhlIG9wcyBh
dXRvZ2VuZXJhdGVkIGluIFdhc20ucmIKKyAgICAgICAgLSBUaGUgY2hlY2tzIHRoYXQgb3Bfd2lk
ZTE2LCBvcF93aWRlMzIsIHdhc21fd2lkZTE2LCB3YXNtX3dpZGUzMiBmaXQgaW4gT3Bjb2RlSUQv
V2FzbU9wY29kZUlEIGFyZSBub3cgaW4gYSBzaW5nbGUgcGxhY2UgYXMgYSBzdGF0aWMgYXNzZXJ0
IGluIEZpdHMuaCwgaW5zdGVhZCBvZiBiZWluZyByZXBlYXRlZCBpbiB0aGUgY2hlY2tJbXBsIG9m
IGV2ZXJ5IHNpbmdsZSBpbnN0cnVjdGlvbgorICAgICAgICAtIFJlbW92aW5nIHRoZSB1bm5lY2Vz
c2FyeSBwYXJhbWV0ZXJpemF0aW9uIG9mIGNoZWNrV2l0aG91dE1ldGFkYUlEIGJ5IEJ5dGVjb2Rl
R2VuZXJhdG9yCisgICAgICAgIC0gUmVtb3ZlIHRoZSByZWNvcmRPcGNvZGUgcGFyYW1ldGVyLCBz
aW5jZSBpdCBpcyBhbHdheXMgdHJ1ZQorICAgICAgICAtIElubGluZSBhbGwgb2YgdGhlIGR1bXAg
ZnVuY3Rpb25zICh3aGljaCB3ZXJlIGluIEJ5dGVjb2RlU3RydWN0cy5oKSBpbnRvIHRoZSBkdW1w
Qnl0ZWNvZGUvZHVtcFdhc20gZnVuY3Rpb25zICh3aGljaCBhcmUgaW4gYSAuY3BwKQorCisgICAg
ICAgIEFzIGV4cGVjdGVkLCBpdCB2ZXJ5IHNpZ25pZmljYW50bHkgc2hydW5rIEJ5dGVjb2RlU3Ry
dWN0cy5oOiBmcm9tIDY0Mjk1IGxpbmVzICgyLjcyN01CKSB0byAzOTQwNCBsaW5lcyAoMS41NzVN
QikuCisgICAgICAgIFNhZGx5IHRoZSBjb21waWxlIHRpbWUgaW1wcm92ZW1lbnQgaXMgbmVnbGln
aWJsZSAoYSBjb3VwbGUgc2Vjb25kcyBvdXQgb2YgYWJvdXQgM21uIG9uIG15IGlNYWNQcm8pLgor
IAorICAgICAgICBIb3dldmVyLCB0aGlzIHBhdGNoIHR1cm5lZCBvdXQgdG8gYmUgYSBmYWlybHkg
c2lnbmlmaWNhbnQgYmluYXJ5IHNpemUgc2F2aW5nLCBmcm9tIDI2LjA0NE1CIHRvIDI1LjU5Mk1C
IChhIHNhdmluZyBvZiBhYm91dCA0NTBrQikgaW4gcmVsZWFzZSBtb2RlLgorCisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5VmFsKToKKyAgICAgICAgKiBnZW5lcmF0b3Iv
RFNMLnJiOgorICAgICAgICAqIGdlbmVyYXRvci9NZXRhZGF0YS5yYjoKKyAgICAgICAgKiBnZW5l
cmF0b3IvT3Bjb2RlLnJiOgorICAgICAgICAqIGdlbmVyYXRvci9PcGNvZGVHcm91cC5yYjoKKyAg
ICAgICAgKiBnZW5lcmF0b3IvU2VjdGlvbi5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvV2FzbS5y
YjoKKwogMjAyMC0wNS0yMSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggKGFzIGl0
IGhhcyBiZWVuIGRlYWQgZm9yIHllYXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggN2Q1YjhjOTgzN2MuLjg1YWU2ZmFjNzAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTY1
MiwzNyArNjUyLDIzIEBAIG9wIDpqbXAsCiAgICAgICAgIHRhcmdldExhYmVsOiBCb3VuZExhYmVs
LAogICAgIH0KIAotb3AgOmp0cnVlLAotICAgIGFyZ3M6IHsKLSAgICAgICAgY29uZGl0aW9uOiBW
aXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHRhcmdldExhYmVsOiBCb3VuZExhYmVsLAotICAgIH0K
LQotb3AgOmpmYWxzZSwKK29wX2dyb3VwIDpCb29sZWFuSnVtcCwKKyAgICBbCisgICAgICAgIDpq
dHJ1ZSwKKyAgICAgICAgOmpmYWxzZQorICAgIF0sCiAgICAgYXJnczogewogICAgICAgICBjb25k
aXRpb246IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdGFyZ2V0TGFiZWw6IEJvdW5kTGFiZWws
CiAgICAgfQogCi1vcCA6amVxX251bGwsCi0gICAgYXJnczogewotICAgICAgICB2YWx1ZTogVmly
dHVhbFJlZ2lzdGVyLAotICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKLSAgICB9Ci0K
LW9wIDpqbmVxX251bGwsCi0gICAgYXJnczogewotICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lz
dGVyLAotICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKLSAgICB9Ci0KLW9wIDpqdW5k
ZWZpbmVkX29yX251bGwsCi0gICAgYXJnczogewotICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lz
dGVyLAotICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKLSAgICB9Ci0KLW9wIDpqbnVu
ZGVmaW5lZF9vcl9udWxsLAorb3BfZ3JvdXAgOlRlc3RpbmdKdW1wLAorICAgIFsKKyAgICAgICAg
OmplcV9udWxsLAorICAgICAgICA6am5lcV9udWxsLAorICAgICAgICA6anVuZGVmaW5lZF9vcl9u
dWxsLAorICAgICAgICA6am51bmRlZmluZWRfb3JfbnVsbAorICAgIF0sCiAgICAgYXJnczogewog
ICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB0YXJnZXRMYWJlbDogQm91
bmRMYWJlbCwKQEAgLTc1OSwxOSArNzQ1LDEyIEBAIG9wIDpzZXRfZnVuY3Rpb25fbmFtZSwKICAg
ICB9CiAKICMgb3BfY2FsbCB2YXJpYXRpb25zCi1vcCA6Y2FsbCwKLSAgICBhcmdzOiB7Ci0gICAg
ICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICAgICAgYXJnYzogdW5zaWduZWQsCi0gICAgICAgIGFyZ3Y6IHVuc2lnbmVkLAotICAg
IH0sCi0gICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5r
SW5mbywKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAotICAgIH0KLQotb3AgOnRhaWxf
Y2FsbCwKK29wX2dyb3VwIDpOb25WYXJhcmdzQ2FsbHMsCisgICAgWworICAgICAgICA6Y2FsbCwK
KyAgICAgICAgOnRhaWxfY2FsbCwKKyAgICAgICAgOmNvbnN0cnVjdAorICAgIF0sCiAgICAgYXJn
czogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgY2FsbGVlOiBWaXJ0
dWFsUmVnaXN0ZXIsCkBAIC03OTYsNyArNzc1LDEyIEBAIG9wIDpjYWxsX2V2YWwsCiAgICAgICAg
IHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKLW9wIDpjYWxsX3ZhcmFyZ3MsCitvcF9n
cm91cCA6VmFyYXJnc0NhbGxzLAorICAgIFsKKyAgICAgICAgOmNhbGxfdmFyYXJncywKKyAgICAg
ICAgOnRhaWxfY2FsbF92YXJhcmdzLAorICAgICAgICA6Y29uc3RydWN0X3ZhcmFyZ3MKKyAgICBd
LAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGNh
bGxlZTogVmlydHVhbFJlZ2lzdGVyLApAQCAtODE3LDI3ICs4MDEsNiBAQCBvcCA6Y2FsbF92YXJh
cmdzLAogICAgICAgICBtYWtlQ2FsbDogbmlsLAogICAgIH0KIAotb3AgOnRhaWxfY2FsbF92YXJh
cmdzLAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAg
IGNhbGxlZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICB0aGlzVmFsdWU/OiBWaXJ0dWFsUmVn
aXN0ZXIsCi0gICAgICAgIGFyZ3VtZW50cz86IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZmly
c3RGcmVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCi0gICAg
fSwKLSAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwK
LSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAotICAgIH0sCi0gICAgdG1wczogewotICAg
ICAgICBhcmdDb3VudEluY2x1ZGluZ1RoaXM6IHVuc2lnbmVkCi0gICAgfSwKLSAgICBjaGVja3Bv
aW50czogewotICAgICAgICBkZXRlcm1pbmluZ0FyZ0NvdW50OiBuaWwsCi0gICAgICAgIG1ha2VD
YWxsOiBuaWwsCi0gICAgfQotCiBvcCA6dGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzLAogICAg
IGFyZ3M6IHsKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC04NTIsMzkgKzgxNSw2
IEBAIG9wIDp0YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMsCiAgICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZSwKICAgICB9CiAKLW9wIDpjb25zdHJ1Y3QsCi0gICAgYXJnczogewotICAgICAg
ICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIs
Ci0gICAgICAgIGFyZ2M6IHVuc2lnbmVkLAotICAgICAgICBhcmd2OiB1bnNpZ25lZCwKLSAgICB9
LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0lu
Zm8sCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICB9Ci0KLW9wIDpjb25zdHJ1
Y3RfdmFyYXJncywKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAot
ICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGhpc1ZhbHVlPzogVmly
dHVhbFJlZ2lzdGVyLAotICAgICAgICBhcmd1bWVudHM/OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAg
ICAgIGZpcnN0RnJlZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBmaXJzdFZhckFyZzogaW50
LAotICAgIH0sCi0gICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVBy
b2ZpbGUsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICB9LAotICAgIHRtcHM6
IHsKLSAgICAgICAgYXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZAotICAgIH0sCi0gICAg
Y2hlY2twb2ludHM6IHsKLSAgICAgICAgZGV0ZXJtaW5pbmdBcmdDb3VudDogbmlsLAotICAgICAg
ICBtYWtlQ2FsbDogbmlsLAotICAgIH0KLQogb3AgOnJldCwKICAgICBhcmdzOiB7CiAgICAgICAg
IHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC0xMDA4LDE1ICs5MzgsMTEgQEAgb3AgOnB1c2hf
d2l0aF9zY29wZSwKICAgICAgICAgbmV3U2NvcGU6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CiAK
LW9wIDpjcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRz
dDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBzY29wZTogVmlydHVhbFJlZ2lzdGVyLAotICAg
ICAgICBzeW1ib2xUYWJsZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBpbml0aWFsVmFsdWU6
IFZpcnR1YWxSZWdpc3RlciwKLSAgICB9Ci0KLW9wIDpjcmVhdGVfZ2VuZXJhdG9yX2ZyYW1lX2Vu
dmlyb25tZW50LAorb3BfZ3JvdXAgOkNyZWF0ZUVudmlyb25tZW50LAorICAgIFsKKyAgICAgICAg
OmNyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50LAorICAgICAgICA6Y3JlYXRlX2dlbmVyYXRvcl9m
cmFtZV9lbnZpcm9ubWVudAorICAgIF0sCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1
YWxSZWdpc3RlciwKICAgICAgICAgc2NvcGU6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTExMzAsMTQg
KzEwNTYsMTEgQEAgb3AgOmdldF9wcm9wZXJ0eV9lbnVtZXJhdG9yLAogICAgICAgICBiYXNlOiBW
aXJ0dWFsUmVnaXN0ZXIsCiAgICAgfQogCi1vcCA6ZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUs
Ci0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZW51
bWVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBpbmRleDogVmlydHVhbFJlZ2lzdGVy
LAotICAgIH0KLQotb3AgOmVudW1lcmF0b3JfZ2VuZXJpY19wbmFtZSwKK29wX2dyb3VwIDpFbnVt
ZXJhdG9yUE5hbWUsCisgICAgWworICAgICAgICA6ZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lLAor
ICAgICAgICA6ZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUKKyAgICBdLAogICAgIGFyZ3M6IHsK
ICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1
YWxSZWdpc3RlciwKQEAgLTE0NDEsNDIgKzEzNjQsMjggQEAgb3AgOnJlZl9mdW5jLAogICAgICAg
ICBmdW5jdGlvbkluZGV4OiB1bnNpZ25lZCwKICAgICB9CiAKLW9wIDpnZXRfZ2xvYmFsLAotICAg
IGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGdsb2JhbElu
ZGV4OiB1bnNpZ25lZCwKLSAgICB9Ci0KLW9wIDpzZXRfZ2xvYmFsLAotICAgIGFyZ3M6IHsKLSAg
ICAgICAgZ2xvYmFsSW5kZXg6IHVuc2lnbmVkLAotICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lz
dGVyLAotICAgIH0KLQotb3AgOnNldF9nbG9iYWxfcmVmLAorb3BfZ3JvdXAgOlNldEdsb2JhbEdy
b3VwLAorICAgIFsKKyAgICAgICAgOnNldF9nbG9iYWwsCisgICAgICAgIDpzZXRfZ2xvYmFsX3Jl
ZiwKKyAgICAgICAgOnNldF9nbG9iYWxfcG9ydGFibGVfYmluZGluZywKKyAgICAgICAgOnNldF9n
bG9iYWxfcmVmX3BvcnRhYmxlX2JpbmRpbmcKKyAgICBdLAogICAgIGFyZ3M6IHsKICAgICAgICAg
Z2xvYmFsSW5kZXg6IHVuc2lnbmVkLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAog
ICAgIH0KIAotb3AgOmdldF9nbG9iYWxfcG9ydGFibGVfYmluZGluZywKK29wX2dyb3VwIDpHZXRH
bG9iYWxHcm91cCwKKyAgICBbCisgICAgICAgIDpnZXRfZ2xvYmFsLAorICAgICAgICA6Z2V0X2ds
b2JhbF9wb3J0YWJsZV9iaW5kaW5nCisgICAgXSwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDog
VmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBnbG9iYWxJbmRleDogdW5zaWduZWQsCiAgICAgfQog
Ci1vcCA6c2V0X2dsb2JhbF9wb3J0YWJsZV9iaW5kaW5nLAotICAgIGFyZ3M6IHsKLSAgICAgICAg
Z2xvYmFsSW5kZXg6IHVuc2lnbmVkLAotICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAot
ICAgIH0KLQotb3AgOnNldF9nbG9iYWxfcmVmX3BvcnRhYmxlX2JpbmRpbmcsCi0gICAgYXJnczog
ewotICAgICAgICBnbG9iYWxJbmRleDogdW5zaWduZWQsCi0gICAgICAgIHZhbHVlOiBWaXJ0dWFs
UmVnaXN0ZXIsCi0gICAgfQotCiBvcCA6dGFibGVfZ2V0LAogICAgIGFyZ3M6IHsKICAgICAgICAg
ZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC0xNTEzLDMwICsxNDIyLDIyIEBAIG9wIDp0YWJsZV9m
aWxsLAogICAgICAgICB0YWJsZUluZGV4OiB1bnNpZ25lZCwKICAgICB9CiAKLW9wIDpjYWxsLAot
ICAgIGFyZ3M6IHsKLSAgICAgICAgZnVuY3Rpb25JbmRleDogdW5zaWduZWQsCi0gICAgICAgIHN0
YWNrT2Zmc2V0OiB1bnNpZ25lZCwKLSAgICAgICAgbnVtYmVyT2ZTdGFja0FyZ3M6IHVuc2lnbmVk
LAotICAgIH0KLQotb3AgOmNhbGxfbm9fdGxzLAorb3BfZ3JvdXAgOkRpcmVjdENhbGxzLAorICAg
IFsKKyAgICAgICAgOmNhbGwsCisgICAgICAgIDpjYWxsX25vX3RscworICAgIF0sCiAgICAgYXJn
czogewogICAgICAgICBmdW5jdGlvbkluZGV4OiB1bnNpZ25lZCwKICAgICAgICAgc3RhY2tPZmZz
ZXQ6IHVuc2lnbmVkLAogICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAg
fQogCi1vcCA6Y2FsbF9pbmRpcmVjdCwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGZ1bmN0aW9uSW5k
ZXg6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgc2lnbmF0dXJlSW5kZXg6IHVuc2lnbmVkLAot
ICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCi0gICAgICAgIG51bWJlck9mU3RhY2tBcmdz
OiB1bnNpZ25lZCwKLSAgICAgICAgdGFibGVJbmRleDogdW5zaWduZWQsCi0gICAgfQotCi1vcCA6
Y2FsbF9pbmRpcmVjdF9ub190bHMsCitvcF9ncm91cCA6SW5kaXJlY3RDYWxscywKKyAgICBbCisg
ICAgICAgIDpjYWxsX2luZGlyZWN0LAorICAgICAgICA6Y2FsbF9pbmRpcmVjdF9ub190bHMKKyAg
ICBdLAogICAgIGFyZ3M6IHsKICAgICAgICAgZnVuY3Rpb25JbmRleDogVmlydHVhbFJlZ2lzdGVy
LAogICAgICAgICBzaWduYXR1cmVJbmRleDogdW5zaWduZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0ZpdHMuaAppbmRleCAwZDk1NzA5MjZhYi4uOTRkZmM1ZGY3YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBPcGNvZGVTaXplIHNpemU+CiBzdHJ1Y3QgRml0czxULCBzaXplLCBzdGQ6OmVuYWJs
ZV9pZl90PHNpemVvZihUKSA9PSBzaXplICYmIHN0ZDo6aXNfY29uc3RydWN0aWJsZTxUPjo6dmFs
dWUsIHN0ZDo6dHJ1ZV90eXBlPj4gewogICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBU
eXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7CiAKLSAgICBzdGF0aWMgYm9vbCBjaGVjayhU
KSB7IHJldHVybiB0cnVlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGNoZWNrKFQpIHsg
cmV0dXJuIHRydWU7IH0KIAogICAgIHN0YXRpYyBUYXJnZXRUeXBlIGNvbnZlcnQoVCB0KSB7IHJl
dHVybiBiaXR3aXNlX2Nhc3Q8VGFyZ2V0VHlwZT4odCk7IH0KIApAQCAtNjQsNyArNjQsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBPcGNvZGVTaXplIHNpemU+CiBzdHJ1Y3QgRml0czxULCBzaXpl
LCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlICYmIHNpemVvZihU
KSAhPSBzaXplICYmICFzdGQ6OmlzX3NhbWU8Ym9vbCwgVD46OnZhbHVlLCBzdGQ6OnRydWVfdHlw
ZT4+IHsKICAgICB1c2luZyBUYXJnZXRUeXBlID0gc3RkOjpjb25kaXRpb25hbF90PHN0ZDo6aXNf
dW5zaWduZWQ8VD46OnZhbHVlLCB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5
cGUsIHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnNpZ25lZFR5cGU+OwogCi0gICAgc3RhdGlj
IGJvb2wgY2hlY2soVCB0KQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjaGVjayhUIHQpCiAg
ICAgewogICAgICAgICByZXR1cm4gdCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldFR5cGU+
OjptaW4oKSAmJiB0IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0VHlwZT46Om1heCgpOwog
ICAgIH0KQEAgLTI2MCw3ICsyNjAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXpl
IHNpemU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAh
PSBzaXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJs
aWMgRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFz
ZSA9IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CiAKLSAgICBzdGF0aWMg
Ym9vbCBjaGVjayhFIGUpIHsgcmV0dXJuIEJhc2U6OmNoZWNrKHN0YXRpY19jYXN0PHN0ZDo6dW5k
ZXJseWluZ190eXBlX3Q8RT4+KGUpKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjaGVj
ayhFIGUpIHsgcmV0dXJuIEJhc2U6OmNoZWNrKHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190
eXBlX3Q8RT4+KGUpKTsgfQogCiAgICAgc3RhdGljIHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUg
Y29udmVydChFIGUpCiAgICAgewpAQCAtMzg1LDQgKzM4NSwxMiBAQCBzdHJ1Y3QgRml0czxFQ01B
TW9kZSwgc2l6ZT4gOiBwdWJsaWMgRml0czx1aW50OF90LCBzaXplPiB7CiAgICAgfQogfTsKIAor
c3RhdGljX2Fzc2VydChGaXRzPE9wY29kZUlELCBPcGNvZGVTaXplOjpOYXJyb3c+OjpjaGVjayhv
cF93aWRlMTYpKTsKK3N0YXRpY19hc3NlcnQoRml0czxPcGNvZGVJRCwgT3Bjb2RlU2l6ZTo6TmFy
cm93Pjo6Y2hlY2sob3Bfd2lkZTMyKSk7CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCitzdGF0
aWNfYXNzZXJ0KEZpdHM8V2FzbU9wY29kZUlELCBPcGNvZGVTaXplOjpOYXJyb3c+OjpjaGVjayh3
YXNtX3dpZGUxNikpOworc3RhdGljX2Fzc2VydChGaXRzPFdhc21PcGNvZGVJRCwgT3Bjb2RlU2l6
ZTo6TmFycm93Pjo6Y2hlY2sod2FzbV93aWRlMzIpKTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNDlkZjk5MTc0ZTEuLjk2MjFkNDU4NDI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtMjYyNiw5ICsyNjI2LDkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2Us
IFIKICAgICAgICAgaWYgKGNvbnRleHQuaXNJbmRleGVkRm9ySW5Db250ZXh0KCkpIHsKICAgICAg
ICAgICAgIGF1dG8mIGluZGV4ZWRDb250ZXh0ID0gY29udGV4dC5hc0luZGV4ZWRGb3JJbkNvbnRl
eHQoKTsKICAgICAgICAgICAgIGtpbGwoZHN0KTsKLSAgICAgICAgICAgIGlmIChPcEdldEJ5VmFs
OjpjaGVja1dpdGhvdXRNZXRhZGF0YUlEPE9wY29kZVNpemU6Ok5hcnJvdz4odGhpcywgZHN0LCBi
YXNlLCBwcm9wZXJ0eSkpCisgICAgICAgICAgICBpZiAoT3BHZXRCeVZhbDo6Y2hlY2tXaXRob3V0
TWV0YWRhdGFJRDxPcGNvZGVTaXplOjpOYXJyb3c+KGRzdCwgYmFzZSwgcHJvcGVydHkpKQogICAg
ICAgICAgICAgICAgIE9wR2V0QnlWYWw6OmVtaXRXaXRoU21hbGxlc3RTaXplUmVxdWlyZW1lbnQ8
T3Bjb2RlU2l6ZTo6TmFycm93Pih0aGlzLCBkc3QsIGJhc2UsIGluZGV4ZWRDb250ZXh0LmluZGV4
KCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoT3BHZXRCeVZhbDo6Y2hlY2tXaXRob3V0TWV0YWRh
dGFJRDxPcGNvZGVTaXplOjpXaWRlMTY+KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVydHkpKQorICAg
ICAgICAgICAgZWxzZSBpZiAoT3BHZXRCeVZhbDo6Y2hlY2tXaXRob3V0TWV0YWRhdGFJRDxPcGNv
ZGVTaXplOjpXaWRlMTY+KGRzdCwgYmFzZSwgcHJvcGVydHkpKQogICAgICAgICAgICAgICAgIE9w
R2V0QnlWYWw6OmVtaXRXaXRoU21hbGxlc3RTaXplUmVxdWlyZW1lbnQ8T3Bjb2RlU2l6ZTo6V2lk
ZTE2Pih0aGlzLCBkc3QsIGJhc2UsIGluZGV4ZWRDb250ZXh0LmluZGV4KCkpOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIE9wR2V0QnlWYWw6OmVtaXQ8T3Bjb2RlU2l6ZTo6V2lk
ZTMyPih0aGlzLCBkc3QsIGJhc2UsIGluZGV4ZWRDb250ZXh0LmluZGV4KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCA5NGRlMzhjYjcxNi4uNWRhNmJlM2Q3MGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xNTQsOSArMTU0LDEz
IEBAIHZvaWQgZHVtcFdhc20oQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIGNvbnN0IEluc3RyCiBFT0YKIAogICAgICAgICAgICAgdGVtcGxhdGUu
Ym9keSA9IDw8LUVPRgorI3tvcGNvZGVfZ3JvdXBzX2ZpbHRlciB7IHxzfCBzLmNvbmZpZ1s6ZW1p
dF9pbl9zdHJ1Y3RzX2ZpbGVdICYmICFzLmlzX3dhc20/IH0ubWFwKCY6c3RydWN0KS5qb2luKCJc
biIpfQorCiAje29wY29kZXNfZmlsdGVyIHsgfHN8IHMuY29uZmlnWzplbWl0X2luX3N0cnVjdHNf
ZmlsZV0gJiYgIXMuaXNfd2FzbT8gfS5tYXAoJjpzdHJ1Y3QpLmpvaW4oIlxuIil9CiAKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCisje29wY29kZV9ncm91cHNfZmlsdGVyIHsgfHN8IHMuY29uZmln
WzplbWl0X2luX3N0cnVjdHNfZmlsZV0gJiYgcy5pc193YXNtPyB9Lm1hcCgmOnN0cnVjdCkuam9p
bigiXG4iKX0KKwogI3tvcGNvZGVzX2ZpbHRlciB7IHxzfCBzLmNvbmZpZ1s6ZW1pdF9pbl9zdHJ1
Y3RzX2ZpbGVdICYmIHMuaXNfd2FzbT8gfS5tYXAoJjpzdHJ1Y3QpLmpvaW4oIlxuIil9CiAjZW5k
aWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQogRU9GCkBAIC0yMjcsNCArMjMxLDkgQEAgRU9GCiAg
ICAgICAgIHNlY3Rpb25zID0gQHNlY3Rpb25zLnNlbGVjdCB7IHxzfCB5aWVsZCBzIH0KICAgICAg
ICAgc2VjdGlvbnMubWFwKCY6b3Bjb2RlcykuZmxhdHRlbgogICAgIGVuZAorCisgICAgZGVmIHNl
bGYub3Bjb2RlX2dyb3Vwc19maWx0ZXIKKyAgICAgICAgc2VjdGlvbnMgPSBAc2VjdGlvbnMuc2Vs
ZWN0IHsgfHN8IHlpZWxkIHMgfQorICAgICAgICBzZWN0aW9ucy5tYXAoJjpvcGNvZGVfZ3JvdXBz
KS5mbGF0dGVuCisgICAgZW5kCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9y
L01ldGFkYXRhLnJiCmluZGV4IGMwNzc1ZDhlMWIxLi5lZGM1NjhkMDY0NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0YS5yYgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJiCkBAIC0xMDMsNyArMTAzLDYgQEAg
RU9GCiAgICAgICAgIHJldHVybiBpZiBlbXB0eT8KIAogICAgICAgICA8PC1FT0YuY2hvbXAKLQog
ICAgICAgICBhdXRvICN7ZW1pdHRlcl9sb2NhbC5uYW1lfSA9IGdlbi0+YWRkTWV0YWRhdGFGb3Io
b3Bjb2RlSUQpOwogICAgICAgICBFT0YKICAgICBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0b3IvT3Bjb2RlLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRvci9PcGNvZGUucmIKaW5kZXggODIzNzRiN2ZiZTguLjI5NzdkYTY4MWFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYgpAQCAtNDYsNyArNDYsNyBAQCBj
bGFzcyBPcGNvZGUKICAgICAgICAgdGlkCiAgICAgZW5kCiAKLSAgICBkZWYgaW5pdGlhbGl6ZShz
ZWN0aW9uLCBuYW1lLCBleHRyYXMsIGFyZ3MsIG1ldGFkYXRhLCBtZXRhZGF0YV9pbml0aWFsaXpl
cnMsIHRtcHMsIGNoZWNrcG9pbnRzKQorICAgIGRlZiBpbml0aWFsaXplKHNlY3Rpb24sIG5hbWUs
IGV4dHJhcywgYXJncywgbWV0YWRhdGEsIG1ldGFkYXRhX2luaXRpYWxpemVycywgdG1wcywgY2hl
Y2twb2ludHMsIG9wY29kZV9ncm91cCkKICAgICAgICAgQHNlY3Rpb24gPSBzZWN0aW9uCiAgICAg
ICAgIEBuYW1lID0gbmFtZQogICAgICAgICBAZXh0cmFzID0gZXh0cmFzIHx8IHt9CkBAIC01NCw2
ICs1NCw5IEBAIGNsYXNzIE9wY29kZQogICAgICAgICBAYXJncyA9IGFyZ3MubWFwLndpdGhfaW5k
ZXggeyB8KGFyZ19uYW1lLCB0eXBlKSwgaW5kZXh8IEFyZ3VtZW50Lm5ldyBhcmdfbmFtZSwgdHlw
ZSwgaW5kZXggfSB1bmxlc3MgYXJncy5uaWw/CiAgICAgICAgIEB0bXBzID0gdG1wcwogICAgICAg
ICBAY2hlY2twb2ludHMgPSBjaGVja3BvaW50cy5tYXAgeyB8KGNoZWNrcG9pbnQsIF8pfCBjaGVj
a3BvaW50IH0gdW5sZXNzIGNoZWNrcG9pbnRzLm5pbD8KKyAgICAgICAgQG9wY29kZV9ncm91cCA9
IG9wY29kZV9ncm91cAorICAgICAgICBAb3Bfd2lkZTE2ID0gQXJndW1lbnQubmV3KHdpZGUxNiwg
b3Bjb2RlSURUeXBlLCAwKQorICAgICAgICBAb3Bfd2lkZTMyID0gQXJndW1lbnQubmV3KHdpZGUz
Miwgb3Bjb2RlSURUeXBlLCAwKQogICAgIGVuZAogCiAgICAgZGVmIGNyZWF0ZV9pZCEKQEAgLTc3
LDE2ICs4MCwyMSBAQCBjbGFzcyBPcGNvZGUKICAgICBkZWYgdHlwZWRfYXJncwogICAgICAgICBy
ZXR1cm4gaWYgQGFyZ3MubmlsPwogCisgICAgICAgIEBhcmdzLm1hcCgmOmNyZWF0ZV9wYXJhbSku
am9pbigiLCAiKQorICAgIGVuZAorICAgIGRlZiB0eXBlZF9hcmdzX3dpdGhfY29tbWEKKyAgICAg
ICAgcmV0dXJuIGlmIEBhcmdzLm5pbD8KKwogICAgICAgICBAYXJncy5tYXAoJjpjcmVhdGVfcGFy
YW0pLnVuc2hpZnQoIiIpLmpvaW4oIiwgIikKICAgICBlbmQKIAotICAgIGRlZiB0eXBlZF9yZWZl
cmVuY2VfYXJncworICAgIGRlZiB0eXBlZF9yZWZlcmVuY2VfYXJnc193aXRoX2NvbW1hCiAgICAg
ICAgIHJldHVybiBpZiBAYXJncy5uaWw/CiAKICAgICAgICAgQGFyZ3MubWFwKCY6Y3JlYXRlX3Jl
ZmVyZW5jZV9wYXJhbSkudW5zaGlmdCgiIikuam9pbigiLCAiKQogICAgIGVuZAogCi0gICAgZGVm
IHVudHlwZWRfYXJncworICAgIGRlZiB1bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYQogICAgICAgICBy
ZXR1cm4gaWYgQGFyZ3MubmlsPwogCiAgICAgICAgIEBhcmdzLm1hcCgmOm5hbWUpLnVuc2hpZnQo
IiIpLmpvaW4oIiwgIikKQEAgLTEyOCwyMCArMTM2LDM0IEBAIGNsYXNzIE9wY29kZQogCiAgICAg
ZGVmIHN0cnVjdAogICAgICAgICA8PC1FT0YKLXN0cnVjdCAje2NhcGl0YWxpemVkX25hbWV9IDog
cHVibGljIEluc3RydWN0aW9uIHsKK3N0cnVjdCAje2NhcGl0YWxpemVkX25hbWV9IDogcHVibGlj
ICN7YmFzZV9jbGFzc30gewogICAgICN7b3Bjb2RlSUR9CiAgICAgI3t0ZW1wc30KICAgICAje2No
ZWNrcG9pbnRWYWx1ZXN9Ci0KICN7ZW1pdHRlcn0KLSN7ZHVtcGVyfQorI3tpZiBAb3Bjb2RlX2dy
b3VwLm5pbD8KKzw8LUVPRi5jaG9tcAorcHJpdmF0ZToKKyN7ZW1pdF9pbXBsfQorI3tjaGVja19p
bXBsfQorcHVibGljOgorRU9GCitlbmR9CiAje2NvbnN0cnVjdG9yc30KKyN7ZGVjb2RlfQogI3tz
ZXR0ZXJzfSN7bWV0YWRhdGFfc3RydWN0X2FuZF9hY2Nlc3Nvcn0KLSN7bWVtYmVyc30KLX07Cisj
e21lbWJlcnN9fTsKIEVPRgogICAgIGVuZAogCisgICAgZGVmIGJhc2VfY2xhc3MKKyAgICAgICAg
aWYgQG9wY29kZV9ncm91cAorICAgICAgICAgICAgQG9wY29kZV9ncm91cC5uYW1lCisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICJJbnN0cnVjdGlvbiIKKyAgICAgICAgZW5kCisgICAgZW5kCisK
ICAgICBkZWYgb3Bjb2RlSUQKICAgICAgICAgInN0YXRpYyBjb25zdGV4cHIgI3tvcGNvZGVJRFR5
cGV9IG9wY29kZUlEID0gI3tuYW1lfTsiCiAgICAgZW5kCkBAIC0xNTgsMTM1ICsxODAsMTM0IEBA
IEVPRgogICAgICAgICBbImVudW0gVG1wcyA6IHVpbnQ4X3QgeyJdLmNvbmNhdChAdG1wcy5tYXAg
e3wodG1wLCB0eXBlKXwgIiAgICAgICAgI3t0bXB9LCJ9KS5wdXNoKCIgICAgfTsiKS5qb2luKCJc
biIpCiAgICAgZW5kCiAKKyAgICBkZWYgbWV0YWRhdGFfcGFyYW0KKyAgICAgICAgQG1ldGFkYXRh
LmVtcHR5PyA/ICIiIDogIiwgI3tAbWV0YWRhdGEuZW1pdHRlcl9sb2NhbC5jcmVhdGVfcGFyYW19
IgorICAgIGVuZAorCisgICAgZGVmIG1ldGFkYXRhX2FyZworICAgICAgICBAbWV0YWRhdGEuZW1w
dHk/ID8gIiIgOiAiLCAje0BtZXRhZGF0YS5lbWl0dGVyX2xvY2FsLm5hbWV9IgorICAgIGVuZAor
CiAgICAgZGVmIGVtaXR0ZXIKLSAgICAgICAgb3Bfd2lkZTE2ID0gQXJndW1lbnQubmV3KHdpZGUx
Niwgb3Bjb2RlSURUeXBlLCAwKQotICAgICAgICBvcF93aWRlMzIgPSBBcmd1bWVudC5uZXcod2lk
ZTMyLCBvcGNvZGVJRFR5cGUsIDApCi0gICAgICAgIG1ldGFkYXRhX3BhcmFtID0gQG1ldGFkYXRh
LmVtcHR5PyA/ICIiIDogIiwgI3tAbWV0YWRhdGEuZW1pdHRlcl9sb2NhbC5jcmVhdGVfcGFyYW19
IgotICAgICAgICBtZXRhZGF0YV9hcmcgPSBAbWV0YWRhdGEuZW1wdHk/ID8gIiIgOiAiLCAje0Bt
ZXRhZGF0YS5lbWl0dGVyX2xvY2FsLm5hbWV9IgotICAgICAgICA8PC1FT0YuY2hvbXAKKyAgICAg
ICAgPDwtRU9GCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3I+Ci0gICAg
c3RhdGljIHZvaWQgZW1pdChCeXRlY29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzfSkKKyAg
ICBzdGF0aWMgdm9pZCBlbWl0KEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4je3R5cGVkX2FyZ3Nfd2l0
aF9jb21tYX0pCiAgICAgewotICAgICAgICBlbWl0V2l0aFNtYWxsZXN0U2l6ZVJlcXVpcmVtZW50
PE9wY29kZVNpemU6Ok5hcnJvdywgQnl0ZWNvZGVHZW5lcmF0b3I+KGdlbiN7dW50eXBlZF9hcmdz
fSk7CisgICAgICAgIGVtaXRXaXRoU21hbGxlc3RTaXplUmVxdWlyZW1lbnQ8T3Bjb2RlU2l6ZTo6
TmFycm93LCBCeXRlY29kZUdlbmVyYXRvcj4oZ2VuI3t1bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYX0p
OwogICAgIH0KICN7JXsKICAgICB0ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6ZSwgdHlwZW5hbWUg
Qnl0ZWNvZGVHZW5lcmF0b3IsIEZpdHNBc3NlcnRpb24gc2hvdWxkQXNzZXJ0ID0gQXNzZXJ0Pgot
ICAgIHN0YXRpYyBib29sIGVtaXQoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc30p
CisgICAgc3RhdGljIGJvb2wgZW1pdChCeXRlY29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdz
X3dpdGhfY29tbWF9KQogICAgIHsje0BtZXRhZGF0YS5jcmVhdGVfZW1pdHRlcl9sb2NhbH0KLSAg
ICAgICAgcmV0dXJuIGVtaXQ8X19zaXplLCBCeXRlY29kZUdlbmVyYXRvciwgc2hvdWxkQXNzZXJ0
PihnZW4je3VudHlwZWRfYXJnc30je21ldGFkYXRhX2FyZ30pOworICAgICAgICByZXR1cm4gZW1p
dDxfX3NpemUsIEJ5dGVjb2RlR2VuZXJhdG9yLCBzaG91bGRBc3NlcnQ+KGdlbiN7dW50eXBlZF9h
cmdzX3dpdGhfY29tbWF9I3ttZXRhZGF0YV9hcmd9KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxP
cGNvZGVTaXplIF9fc2l6ZSwgdHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3I+Ci0gICAgc3RhdGlj
IGJvb2wgY2hlY2tXaXRob3V0TWV0YWRhdGFJRChCeXRlY29kZUdlbmVyYXRvciogZ2VuI3t0eXBl
ZF9hcmdzfSkKKyAgICB0ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6ZT4KKyAgICBzdGF0aWMgYm9v
bCBjaGVja1dpdGhvdXRNZXRhZGF0YUlEKCN7dHlwZWRfYXJnc30pCiAgICAgewotICAgICAgICBk
ZWNsdHlwZShnZW4tPmFkZE1ldGFkYXRhRm9yKG9wY29kZUlEKSkgX19tZXRhZGF0YUlEIHsgfTsK
LSAgICAgICAgcmV0dXJuIGNoZWNrSW1wbDxfX3NpemUsIEJ5dGVjb2RlR2VuZXJhdG9yPihnZW4j
e3VudHlwZWRfYXJnc30je21ldGFkYXRhX2FyZ30pOworICAgICAgICB1bnNpZ25lZCBfX21ldGFk
YXRhSUQgPSAwOworICAgICAgICByZXR1cm4gY2hlY2tJbXBsPF9fc2l6ZT4ob3Bjb2RlSUQje3Vu
dHlwZWRfYXJnc193aXRoX2NvbW1hfSN7bWV0YWRhdGFfYXJnfSk7CiAgICAgfQogfSB1bmxlc3Mg
QG1ldGFkYXRhLmVtcHR5P30KLSAgICB0ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6ZSwgdHlwZW5h
bWUgQnl0ZWNvZGVHZW5lcmF0b3IsIEZpdHNBc3NlcnRpb24gc2hvdWxkQXNzZXJ0ID0gQXNzZXJ0
LCBib29sIHJlY29yZE9wY29kZSA9IHRydWU+Ci0gICAgc3RhdGljIGJvb2wgZW1pdChCeXRlY29k
ZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzfSN7bWV0YWRhdGFfcGFyYW19KQorICAgIHRlbXBs
YXRlPE9wY29kZVNpemUgX19zaXplLCB0eXBlbmFtZSBCeXRlY29kZUdlbmVyYXRvciwgRml0c0Fz
c2VydGlvbiBzaG91bGRBc3NlcnQgPSBBc3NlcnQ+CisgICAgc3RhdGljIGJvb2wgZW1pdChCeXRl
Y29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzX3dpdGhfY29tbWF9I3ttZXRhZGF0YV9wYXJh
bX0pCiAgICAgewotICAgICAgICBib29sIGRpZEVtaXQgPSBlbWl0SW1wbDxfX3NpemUsIHJlY29y
ZE9wY29kZSwgQnl0ZWNvZGVHZW5lcmF0b3I+KGdlbiN7dW50eXBlZF9hcmdzfSN7bWV0YWRhdGFf
YXJnfSk7CisgICAgICAgIGJvb2wgZGlkRW1pdCA9IGVtaXRJbXBsPF9fc2l6ZSwgQnl0ZWNvZGVH
ZW5lcmF0b3I+KGdlbiwgb3Bjb2RlSUQje3VudHlwZWRfYXJnc193aXRoX2NvbW1hfSN7bWV0YWRh
dGFfYXJnfSk7CiAgICAgICAgIGlmIChzaG91bGRBc3NlcnQgPT0gQXNzZXJ0KQogICAgICAgICAg
ICAgQVNTRVJUKGRpZEVtaXQpOwogICAgICAgICByZXR1cm4gZGlkRW1pdDsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTxPcGNvZGVTaXplIF9fc2l6ZSwgdHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3I+
Ci0gICAgc3RhdGljIHZvaWQgZW1pdFdpdGhTbWFsbGVzdFNpemVSZXF1aXJlbWVudChCeXRlY29k
ZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzfSkKKyAgICBzdGF0aWMgdm9pZCBlbWl0V2l0aFNt
YWxsZXN0U2l6ZVJlcXVpcmVtZW50KEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4je3R5cGVkX2FyZ3Nf
d2l0aF9jb21tYX0pCiAgICAgewotICAgICAgICAje0BtZXRhZGF0YS5jcmVhdGVfZW1pdHRlcl9s
b2NhbH0KKyN7QG1ldGFkYXRhLmNyZWF0ZV9lbWl0dGVyX2xvY2FsfQogICAgICAgICBpZiAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KF9fc2l6ZSkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE9wY29k
ZVNpemU6Ok5hcnJvdykpIHsKLSAgICAgICAgICAgIGlmIChlbWl0PE9wY29kZVNpemU6Ok5hcnJv
dywgQnl0ZWNvZGVHZW5lcmF0b3IsIE5vQXNzZXJ0LCB0cnVlPihnZW4je3VudHlwZWRfYXJnc30j
e21ldGFkYXRhX2FyZ30pKQorICAgICAgICAgICAgaWYgKGVtaXQ8T3Bjb2RlU2l6ZTo6TmFycm93
LCBCeXRlY29kZUdlbmVyYXRvciwgTm9Bc3NlcnQ+KGdlbiN7dW50eXBlZF9hcmdzX3dpdGhfY29t
bWF9I3ttZXRhZGF0YV9hcmd9KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihfX3NpemUpIDw9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihPcGNvZGVTaXplOjpXaWRlMTYpKSB7Ci0gICAgICAgICAgICBpZiAoZW1pdDxP
cGNvZGVTaXplOjpXaWRlMTYsIEJ5dGVjb2RlR2VuZXJhdG9yLCBOb0Fzc2VydCwgdHJ1ZT4oZ2Vu
I3t1bnR5cGVkX2FyZ3N9I3ttZXRhZGF0YV9hcmd9KSkKKyAgICAgICAgICAgIGlmIChlbWl0PE9w
Y29kZVNpemU6OldpZGUxNiwgQnl0ZWNvZGVHZW5lcmF0b3IsIE5vQXNzZXJ0PihnZW4je3VudHlw
ZWRfYXJnc193aXRoX2NvbW1hfSN7bWV0YWRhdGFfYXJnfSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0gICAgICAgIGVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZTMyLCBCeXRlY29k
ZUdlbmVyYXRvciwgQXNzZXJ0LCB0cnVlPihnZW4je3VudHlwZWRfYXJnc30je21ldGFkYXRhX2Fy
Z30pOworICAgICAgICBlbWl0PE9wY29kZVNpemU6OldpZGUzMiwgQnl0ZWNvZGVHZW5lcmF0b3Is
IEFzc2VydD4oZ2VuI3t1bnR5cGVkX2FyZ3Nfd2l0aF9jb21tYX0je21ldGFkYXRhX2FyZ30pOwog
ICAgIH0KK0VPRgorICAgIGVuZAogCi1wcml2YXRlOgorICAgIGRlZiBlbWl0X2ltcGwKKyAgICAg
ICAgPDwtRU9GCiAgICAgdGVtcGxhdGU8T3Bjb2RlU2l6ZSBfX3NpemUsIHR5cGVuYW1lIEJ5dGVj
b2RlR2VuZXJhdG9yPgotICAgIHN0YXRpYyBib29sIGNoZWNrSW1wbChCeXRlY29kZUdlbmVyYXRv
ciogZ2VuI3t0eXBlZF9yZWZlcmVuY2VfYXJnc30je21ldGFkYXRhX3BhcmFtfSkKKyAgICBzdGF0
aWMgYm9vbCBlbWl0SW1wbChCeXRlY29kZUdlbmVyYXRvciogZ2VuLCAje29wY29kZUlEVHlwZX0g
b3Bjb2RlSUQje3R5cGVkX2FyZ3Nfd2l0aF9jb21tYX0je21ldGFkYXRhX3BhcmFtfSkKICAgICB7
Ci0gICAgICAgIFVOVVNFRF9QQVJBTShnZW4pOwotI2lmIE9TKFdJTkRPV1MpICYmIEVOQUJMRShD
X0xPT1ApCi0gICAgICAgIC8vIEZJWE1FOiBEaXNhYmxlIHdpZGUxNiBvcHRpbWl6YXRpb24gZm9y
IFdpbmRvd3MgQ0xvb3AKLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5ODI4MwotICAgICAgICBpZiAoX19zaXplID09IE9wY29kZVNpemU6OldpZGUx
NikKKyAgICAgICAgaWYgKCFjaGVja0ltcGw8X19zaXplPihvcGNvZGVJRCN7dW50eXBlZF9hcmdz
X3dpdGhfY29tbWF9I3ttZXRhZGF0YV9hcmd9KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSNlbmRpZgotICAgICAgICByZXR1cm4gI3ttYXBfZmllbGRzX3dpdGhfc2l6ZSgiIiwgIl9fc2l6
ZSIsICY6Zml0c19jaGVjaykuam9pbiAiXG4gICAgICAgICAgICAmJiAifQotICAgICAgICAgICAg
JiYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpXaWRlMTYgPyAje29wX3dpZGUxNi5maXRzX2NoZWNr
KFNpemU6Ok5hcnJvdyl9IDogdHJ1ZSkKLSAgICAgICAgICAgICYmIChfX3NpemUgPT0gT3Bjb2Rl
U2l6ZTo6V2lkZTMyID8gI3tvcF93aWRlMzIuZml0c19jaGVjayhTaXplOjpOYXJyb3cpfSA6IHRy
dWUpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPE9wY29kZVNpemUgX19zaXplLCBib29sIHJlY29y
ZE9wY29kZSwgdHlwZW5hbWUgQnl0ZWNvZGVHZW5lcmF0b3I+Ci0gICAgc3RhdGljIGJvb2wgZW1p
dEltcGwoQnl0ZWNvZGVHZW5lcmF0b3IqIGdlbiN7dHlwZWRfYXJnc30je21ldGFkYXRhX3BhcmFt
fSkKLSAgICB7Ci0gICAgICAgICN7IUBjaGVja3BvaW50cy5uaWw/ID8gImdlbi0+c2V0VXNlc0No
ZWNrcG9pbnRzKCk7IiA6ICIifQorICAgICAgICAjeyJnZW4tPnNldFVzZXNDaGVja3BvaW50cygp
OyIgdW5sZXNzIEBjaGVja3BvaW50cy5uaWw/fQogICAgICAgICBpZiAoX19zaXplID09IE9wY29k
ZVNpemU6OldpZGUxNikKICAgICAgICAgICAgIGdlbi0+YWxpZ25XaWRlT3Bjb2RlMTYoKTsKICAg
ICAgICAgZWxzZSBpZiAoX19zaXplID09IE9wY29kZVNpemU6OldpZGUzMikKICAgICAgICAgICAg
IGdlbi0+YWxpZ25XaWRlT3Bjb2RlMzIoKTsKLSAgICAgICAgaWYgKGNoZWNrSW1wbDxfX3NpemU+
KGdlbiN7dW50eXBlZF9hcmdzfSN7bWV0YWRhdGFfYXJnfSkpIHsKLSAgICAgICAgICAgIGlmIChy
ZWNvcmRPcGNvZGUpCi0gICAgICAgICAgICAgICAgZ2VuLT5yZWNvcmRPcGNvZGUob3Bjb2RlSUQp
OwotICAgICAgICAgICAgaWYgKF9fc2l6ZSA9PSBPcGNvZGVTaXplOjpXaWRlMTYpCi0gICAgICAg
ICAgICAgICAgI3tvcF93aWRlMTYuZml0c193cml0ZSBTaXplOjpOYXJyb3d9Ci0gICAgICAgICAg
ICBlbHNlIGlmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTMyKQotICAgICAgICAgICAgICAg
ICN7b3Bfd2lkZTMyLmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93fQotICAgICAgICAgICAgI3tBcmd1
bWVudC5uZXcoIm9wY29kZUlEIiwgb3Bjb2RlSURUeXBlLCAwKS5maXRzX3dyaXRlIFNpemU6Ok5h
cnJvd30KLSN7bWFwX29wZXJhbmRzX3dpdGhfc2l6ZSgiICAgICAgICAgICAgIiwgIl9fc2l6ZSIs
ICY6Zml0c193cml0ZSkuam9pbiAiXG4ifQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBnZW4tPnJlY29yZE9wY29kZShv
cGNvZGVJRCk7CisgICAgICAgIGlmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTE2KQorICAg
ICAgICAgICAgI3tAb3Bfd2lkZTE2LmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93fQorICAgICAgICBl
bHNlIGlmIChfX3NpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZTMyKQorICAgICAgICAgICAgI3tAb3Bf
d2lkZTMyLmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93fQorICAgICAgICAje0FyZ3VtZW50Lm5ldygi
b3Bjb2RlSUQiLCBvcGNvZGVJRFR5cGUsIDApLmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93fQorI3tt
YXBfb3BlcmFuZHNfd2l0aF9zaXplKCIgICAgICAgICIsICJfX3NpemUiLCAmOmZpdHNfd3JpdGUp
LmpvaW4gIlxuIn0KKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotCi1wdWJsaWM6CiBFT0YK
ICAgICBlbmQKIAotICAgIGRlZiBkdW1wZXIKKyAgICBkZWYgY2hlY2tfaW1wbAogICAgICAgICA8
PC1FT0YKLSAgICB2b2lkIGR1bXAoQnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgX19sb2NhdGlvbiwgaW50IF9fc2l6ZVNoaWZ0QW1vdW50KQorICAg
IHRlbXBsYXRlPE9wY29kZVNpemUgX19zaXplPgorICAgIHN0YXRpYyBib29sIGNoZWNrSW1wbCgj
e29wY29kZUlEVHlwZX0gb3Bjb2RlSUQje3R5cGVkX3JlZmVyZW5jZV9hcmdzX3dpdGhfY29tbWF9
I3ttZXRhZGF0YV9wYXJhbX0pCiAgICAgewotICAgICAgICBkdW1wZXItPnByaW50TG9jYXRpb25B
bmRPcChfX2xvY2F0aW9uLCAmIioqI3tAbmFtZX0iWzIgLSBfX3NpemVTaGlmdEFtb3VudF0pOwot
I3twcmludF9hcmdzIHsgfGFyZ3wKLTw8LUVPRi5jaG9tcAotICAgICAgICBkdW1wZXItPmR1bXBP
cGVyYW5kKCN7YXJnLmZpZWxkX25hbWV9LCAje2FyZy5pbmRleCA9PSAwfSk7Ci1FT0YKLSAgICB9
fQorI2lmIE9TKFdJTkRPV1MpICYmIEVOQUJMRShDX0xPT1ApCisgICAgICAgIC8vIEZJWE1FOiBE
aXNhYmxlIHdpZGUxNiBvcHRpbWl6YXRpb24gZm9yIFdpbmRvd3MgQ0xvb3AKKyAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODI4MworICAgICAgICBp
ZiAoX19zaXplID09IE9wY29kZVNpemU6OldpZGUxNikKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gI3ttYXBfZmllbGRzX3dpdGhfc2l6ZSgiIiwgIl9f
c2l6ZSIsICY6Zml0c19jaGVjaykuam9pbiAiXG4gICAgICAgICAgICAmJiAifTsKICAgICB9CiBF
T0YKICAgICBlbmQKIAotICAgIGRlZiBjb25zdHJ1Y3RvcnMKLSAgICAgICAgZmllbGRzID0gKEBh
cmdzIHx8IFtdKSArIChAbWV0YWRhdGEuZW1wdHk/ID8gW10gOiBbQG1ldGFkYXRhXSkKLSAgICAg
ICAgaW5pdCA9IC0+KHNpemUpIHsgZmllbGRzLmVtcHR5PyAgPyAiIiA6ICI6ICN7ZmllbGRzLm1h
cC53aXRoX2luZGV4IHsgfGFyZywgaXwgYXJnLmxvYWRfZnJvbV9zdHJlYW0oaSwgc2l6ZSkgfS5q
b2luICJcbiAgICAgICAgLCAiIH0iIH0KKyAgICBkZWYgY29uc3RydWN0b3JzX2luaXQKKyAgICAg
ICAgaWYgQG9wY29kZV9ncm91cC5uaWw/CisgICAgICAgICAgICBmaWVsZHMgPSAoQGFyZ3MgfHwg
W10pICsgKEBtZXRhZGF0YS5lbXB0eT8gPyBbXSA6IFtAbWV0YWRhdGFdKQorICAgICAgICAgICAg
LT4oc2l6ZSkgeyBmaWVsZHMuZW1wdHk/ICA/ICIiIDogIjogI3tmaWVsZHMubWFwLndpdGhfaW5k
ZXggeyB8YXJnLCBpfCBhcmcubG9hZF9mcm9tX3N0cmVhbShpLCBzaXplKSB9LmpvaW4gIlxuICAg
ICAgICAsICIgfSIgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICAtPihzaXplKSB7ICI6ICN7
QG9wY29kZV9ncm91cC5uYW1lfShzdHJlYW0pIiB9CisgICAgICAgIGVuZAorICAgIGVuZAogCisg
ICAgZGVmIGNvbnN0cnVjdG9ycwogICAgICAgICA8PC1FT0YKICAgICAje2NhcGl0YWxpemVkX25h
bWV9KGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSkKLSAgICAgICAgI3tpbml0LmNhbGwoIk9wY29kZVNp
emU6Ok5hcnJvdyIpfQorICAgICAgICAje2NvbnN0cnVjdG9yc19pbml0LmNhbGwoIk9wY29kZVNp
emU6Ok5hcnJvdyIpfQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW0sIGJpdHdp
c2VfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyZWFtKVstMV0gPT0gb3Bjb2RlSUQpOwogICAgIH0K
IAogICAgICN7Y2FwaXRhbGl6ZWRfbmFtZX0oY29uc3QgdWludDE2X3QqIHN0cmVhbSkKLSAgICAg
ICAgI3tpbml0LmNhbGwoIk9wY29kZVNpemU6OldpZGUxNiIpfQorICAgICAgICAje2NvbnN0cnVj
dG9yc19pbml0LmNhbGwoIk9wY29kZVNpemU6OldpZGUxNiIpfQogICAgIHsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChzdHJlYW0sIGJpdHdpc2VfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyZWFtKVst
MV0gPT0gb3Bjb2RlSUQpOwogICAgIH0KIAotCiAgICAgI3tjYXBpdGFsaXplZF9uYW1lfShjb25z
dCB1aW50MzJfdCogc3RyZWFtKQotICAgICAgICAje2luaXQuY2FsbCgiT3Bjb2RlU2l6ZTo6V2lk
ZTMyIil9CisgICAgICAgICN7Y29uc3RydWN0b3JzX2luaXQuY2FsbCgiT3Bjb2RlU2l6ZTo6V2lk
ZTMyIil9CiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbSwgYml0d2lzZV9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihzdHJlYW0pWy0xXSA9PSBvcGNvZGVJRCk7CiAgICAgfQorRU9GCisg
ICAgZW5kCiAKKyAgICBkZWYgZGVjb2RlCisgICAgICAgIDw8LUVPRgogICAgIHN0YXRpYyAje2Nh
cGl0YWxpemVkX25hbWV9IGRlY29kZShjb25zdCB1aW50OF90KiBzdHJlYW0pCiAgICAgewogICAg
ICAgICAvLyBBIHBvaW50ZXIgaXMgcG9pbnRpbmcgdG8gdGhlIGZpcnN0IG9wZXJhbmQgKG9wY29k
ZSBhbmQgcHJlZml4IGFyZSBub3QgaW5jbHVkZWQpLgpAQCAtMzAwLDcgKzMyMSw3IEBAIEVPRgog
ICAgIGVuZAogCiAgICAgZGVmIHNldHRlcnMKLSAgICAgICAgcHJpbnRfYXJncyB7IHxhfCBhLnNl
dHRlcih0cmFpdHMpIH0KKyAgICAgICAgcHJpbnRfYXJncyB7IHxhfCBhLnNldHRlcih0cmFpdHMp
IH0gaWYgQG9wY29kZV9ncm91cC5uaWw/CiAgICAgZW5kCiAKICAgICBkZWYgbWV0YWRhdGFfc3Ry
dWN0X2FuZF9hY2Nlc3NvcgpAQCAtMzEwLDkgKzMzMSwxNCBAQCBFT0YKICAgICBlbmQKIAogICAg
IGRlZiBtZW1iZXJzCi0gICAgICAgIDw8LUVPRi5jaG9tcAorICAgICAgICBpZiBAb3Bjb2RlX2dy
b3VwLm5pbD8KKyAgICAgICAgICAgIDw8LUVPRgorICAgIGZyaWVuZCB2b2lkIGR1bXAje0BzZWN0
aW9uLmlzX3dhc20/ID8gIldhc20iIDogIkJ5dGVjb2RlIn0oQnl0ZWNvZGVEdW1wZXJCYXNlKiBk
dW1wZXIsIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgX19sb2NhdGlvbiwgY29uc3QgSW5zdHJ1
Y3Rpb24qIF9faW5zdHJ1Y3Rpb24pOwogI3twcmludF9tZW1iZXJzKCIgICAgIiwgJjpmaWVsZCl9
I3tAbWV0YWRhdGEuZmllbGQoIiAgICAiKX0KIEVPRgorICAgICAgICBlbHNlCisgICAgICAgICAg
ICAiIgorICAgICAgICBlbmQKICAgICBlbmQKIAogICAgIGRlZiBzZXRfZW50cnlfYWRkcmVzcyhp
ZCkKQEAgLTM1MywyMSArMzc5LDM2IEBAIEVPRgogICAgIGVuZAogCiAgICAgZGVmIHNlbGYuZHVt
cF9ieXRlY29kZShuYW1lLCBvcGNvZGVfdHJhaXRzLCBvcGNvZGVzKQotICAgICAgICA8PC1FT0Yu
Y2hvbXAKKyAgICAgICAgPDwtRlVMTC5jaG9tcAogdm9pZCBkdW1wI3tuYW1lfShCeXRlY29kZUR1
bXBlckJhc2UqIGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBfX2xvY2F0aW9uLCBj
b25zdCBJbnN0cnVjdGlvbiogX19pbnN0cnVjdGlvbikKIHsKKyAgICBpbnQgc2l6ZVNoaWZ0QW1v
dW50ID0gX19pbnN0cnVjdGlvbi0+c2l6ZVNoaWZ0QW1vdW50PCN7b3Bjb2RlX3RyYWl0c30+KCk7
CiAgICAgc3dpdGNoIChfX2luc3RydWN0aW9uLT5vcGNvZGVJRDwje29wY29kZV90cmFpdHN9Pigp
KSB7CiAje29wY29kZXMubWFwIHsgfG9wfAotICAgICAgICA8PC1FT0YuY2hvbXAKKyAgICBpZiBv
cC5hcmdzLm5pbD8KKyAgICAgICAgPDwtQ0FTRS5jaG9tcAogICAgIGNhc2UgI3tvcC5uYW1lfToK
LSAgICAgICAgX19pbnN0cnVjdGlvbi0+YXM8I3tvcC5jYXBpdGFsaXplZF9uYW1lfSwgI3tvcGNv
ZGVfdHJhaXRzfT4oKS5kdW1wKGR1bXBlciwgX19sb2NhdGlvbiwgX19pbnN0cnVjdGlvbi0+c2l6
ZVNoaWZ0QW1vdW50PCN7b3Bjb2RlX3RyYWl0c30+KCkpOworICAgICAgICBkdW1wZXItPnByaW50
TG9jYXRpb25BbmRPcChfX2xvY2F0aW9uLCAmIioqI3tvcC51bnByZWZpeGVkX25hbWV9IlsyIC0g
c2l6ZVNoaWZ0QW1vdW50XSk7CiAgICAgICAgIGJyZWFrOwotRU9GCi0gICAgfS5qb2luICJcbiJ9
CitDQVNFCisgICAgZWxzZQorICAgICAgICA8PC1DQVNFLmNob21wCisgICAgY2FzZSAje29wLm5h
bWV9OiB7CisgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBfX2luc3RydWN0aW9uLT5hczwje29w
LmNhcGl0YWxpemVkX25hbWV9LCAje29wY29kZV90cmFpdHN9PigpOworICAgICAgICBkdW1wZXIt
PnByaW50TG9jYXRpb25BbmRPcChfX2xvY2F0aW9uLCAmIioqI3tvcC51bnByZWZpeGVkX25hbWV9
IlsyIC0gc2l6ZVNoaWZ0QW1vdW50XSk7Cisje29wLnByaW50X2FyZ3MgeyB8YXJnfAorICAgICAg
ICAgICAgPDwtQVJHLmNob21wCisgICAgICAgIGR1bXBlci0+ZHVtcE9wZXJhbmQoaW5zdHJ1Y3Rp
b24uI3thcmcuZmllbGRfbmFtZX0sICN7YXJnLmluZGV4ID09IDB9KTsKK0FSRworICAgICAgICB9
fQorICAgICAgICBicmVhazsKKyAgICB9CitDQVNFCisgICAgZW5kfS5qb2luICJcbiJ9CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQotRU9GCitG
VUxMCiAgICAgZW5kCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvT3Bjb2RlR3JvdXAucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09w
Y29kZUdyb3VwLnJiCmluZGV4IDhlYzJhMjNjZjQ4Li4wODdiZGQxODllZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9PcGNvZGVHcm91cC5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZUdyb3VwLnJiCkBAIC0yOCwxMCArMjgs
NjAgQEAgY2xhc3MgT3Bjb2RlR3JvdXAKICAgICBhdHRyX3JlYWRlciA6b3Bjb2RlcwogICAgIGF0
dHJfcmVhZGVyIDpjb25maWcKIAotICAgIGRlZiBpbml0aWFsaXplKHNlY3Rpb24sIGRlc2MsIG9w
Y29kZXMsIGNvbmZpZykKKyAgICBkZWYgaW5pdGlhbGl6ZShzZWN0aW9uLCBuYW1lLCBvcGNvZGVz
LCBjb25maWcpCiAgICAgICAgIEBzZWN0aW9uID0gc2VjdGlvbgogICAgICAgICBAbmFtZSA9IG5h
bWUKICAgICAgICAgQG9wY29kZXMgPSBvcGNvZGVzCiAgICAgICAgIEBjb25maWcgPSBjb25maWcK
KyAgICAgICAgQG1ldGFkYXRhID0gTWV0YWRhdGEubmV3IGNvbmZpZ1s6bWV0YWRhdGFdLCBjb25m
aWdbOm1ldGFkYXRhX2luaXRpYWxpemVyc10KKyAgICAgICAgQGFyZ3MgPSBjb25maWdbOmFyZ3Nd
Lm1hcC53aXRoX2luZGV4IHsgfChhcmdfbmFtZSwgdHlwZSksIGluZGV4fCBBcmd1bWVudC5uZXcg
YXJnX25hbWUsIHR5cGUsIGluZGV4IH0gdW5sZXNzIGNvbmZpZ1s6YXJnc10ubmlsPworICAgICAg
ICBAZmFrZV9vcGNvZGUgPSBPcGNvZGUubmV3KHNlY3Rpb24sIG5hbWUsIGNvbmZpZ1s6ZXh0cmFz
XSwgY29uZmlnWzphcmdzXSwgY29uZmlnWzptZXRhZGF0YV0sIGNvbmZpZ1s6bWV0YWRhdGFfaW5p
dGlhbGl6ZXJzXSwgY29uZmlnWzp0bXBzXSwgY29uZmlnWzpjaGVja3BvaW50c10sIG5pbCkKKyAg
ICBlbmQKKworICAgIGRlZiBuYW1lCisgICAgICAgIEBzZWN0aW9uLmNvbmZpZ1s6b3BfcHJlZml4
XS5zcGxpdCgnXycpLm1hcCgmOmNhcGl0YWxpemUpLmpvaW4gKyAiI3tAbmFtZX0iCisgICAgZW5k
CisKKyAgICBkZWYgc3RydWN0CisgICAgICAgIDw8LUVPRgorc3RydWN0ICN7bmFtZX0gOiBwdWJs
aWMgSW5zdHJ1Y3Rpb24geworI3tjb25zdHJ1Y3RvcnN9Citwcm90ZWN0ZWQ6Cisje0BmYWtlX29w
Y29kZS5lbWl0X2ltcGx9Cisje0BmYWtlX29wY29kZS5jaGVja19pbXBsfQorcHVibGljOgorI3tz
ZXR0ZXJzfQorI3ttZW1iZXJzfQorfTsKK0VPRgorICAgIGVuZAorCisgICAgZGVmIGNvbnN0cnVj
dG9ycworICAgICAgICA8PC1FT0YKKyAgICAje25hbWV9KGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSkK
KyAgICAgICAgI3tAZmFrZV9vcGNvZGUuY29uc3RydWN0b3JzX2luaXQuY2FsbCgiT3Bjb2RlU2l6
ZTo6TmFycm93Iil9CisgICAgeworICAgIH0KKworICAgICN7bmFtZX0oY29uc3QgdWludDE2X3Qq
IHN0cmVhbSkKKyAgICAgICAgI3tAZmFrZV9vcGNvZGUuY29uc3RydWN0b3JzX2luaXQuY2FsbCgi
T3Bjb2RlU2l6ZTo6V2lkZTE2Iil9CisgICAgeworICAgIH0KKworICAgICN7bmFtZX0oY29uc3Qg
dWludDMyX3QqIHN0cmVhbSkKKyAgICAgICAgI3tAZmFrZV9vcGNvZGUuY29uc3RydWN0b3JzX2lu
aXQuY2FsbCgiT3Bjb2RlU2l6ZTo6V2lkZTMyIil9CisgICAgeworICAgIH0KK0VPRgorICAgIGVu
ZAorCisgICAgZGVmIHNldHRlcnMKKyAgICAgICAgQGZha2Vfb3Bjb2RlLnByaW50X2FyZ3MgeyB8
YXwgYS5zZXR0ZXIoQGZha2Vfb3Bjb2RlLnRyYWl0cykgfQorICAgIGVuZAorCisgICAgZGVmIG1l
bWJlcnMKKyAgICAgICAgPDwtRU9GLmNob21wCisje0BmYWtlX29wY29kZS5wcmludF9tZW1iZXJz
KCIgICAgIiwgJjpmaWVsZCl9I3tAbWV0YWRhdGEuZmllbGQoIiAgICAiKX0KK0VPRgogICAgIGVu
ZAogZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rp
b24ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKaW5kZXgg
ZjgzODBlZDU3NWQuLjM2YTk3Mjc2M2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRvci9TZWN0aW9uLnJiCkBAIC0zMCw2ICszMCw3IEBAIGNsYXNzIFNlY3Rpb24KICAgYXR0cl9y
ZWFkZXIgOm5hbWUKICAgYXR0cl9yZWFkZXIgOmNvbmZpZwogICBhdHRyX3JlYWRlciA6b3Bjb2Rl
cworICBhdHRyX3JlYWRlciA6b3Bjb2RlX2dyb3VwcwogCiAgIGRlZiBpbml0aWFsaXplKG5hbWUs
IGNvbmZpZykKICAgICBAbmFtZSA9IG5hbWUKQEAgLTQyLDEzICs0MywxNCBAQCBjbGFzcyBTZWN0
aW9uCiAgICAgICBAb3Bjb2RlcyA8PCBjcmVhdGVfb3Bjb2RlKG5hbWUsIGNvbmZpZykKICAgZW5k
CiAKLSAgZGVmIGNyZWF0ZV9vcGNvZGUobmFtZSwgY29uZmlnKQotICAgICAgT3Bjb2RlLm5ldyhz
ZWxmLCBuYW1lLCBjb25maWdbOmV4dHJhc10sIGNvbmZpZ1s6YXJnc10sIGNvbmZpZ1s6bWV0YWRh
dGFdLCBjb25maWdbOm1ldGFkYXRhX2luaXRpYWxpemVyc10sIGNvbmZpZ1s6dG1wc10sIGNvbmZp
Z1s6Y2hlY2twb2ludHNdKQorICBkZWYgY3JlYXRlX29wY29kZShuYW1lLCBjb25maWcsIG9wY29k
ZV9ncm91cCA9IG5pbCkKKyAgICAgIE9wY29kZS5uZXcoc2VsZiwgbmFtZSwgY29uZmlnWzpleHRy
YXNdLCBjb25maWdbOmFyZ3NdLCBjb25maWdbOm1ldGFkYXRhXSwgY29uZmlnWzptZXRhZGF0YV9p
bml0aWFsaXplcnNdLCBjb25maWdbOnRtcHNdLCBjb25maWdbOmNoZWNrcG9pbnRzXSwgb3Bjb2Rl
X2dyb3VwKQogICBlbmQKIAogICBkZWYgYWRkX29wY29kZV9ncm91cChuYW1lLCBvcGNvZGVzLCBj
b25maWcpCi0gICAgICBvcGNvZGVzID0gb3Bjb2Rlcy5tYXAgeyB8b3Bjb2RlfCBjcmVhdGVfb3Bj
b2RlKG9wY29kZSwgY29uZmlnKSB9Ci0gICAgICBAb3Bjb2RlX2dyb3VwcyA8PCBPcGNvZGVHcm91
cC5uZXcoc2VsZiwgbmFtZSwgb3Bjb2RlcywgY29uZmlnKQorICAgICAgb3Bjb2RlX2dyb3VwID0g
T3Bjb2RlR3JvdXAubmV3KHNlbGYsIG5hbWUsIG9wY29kZXMsIGNvbmZpZykKKyAgICAgIEBvcGNv
ZGVfZ3JvdXBzIDw8IG9wY29kZV9ncm91cAorICAgICAgb3Bjb2RlcyA9IG9wY29kZXMubWFwIHsg
fG9wY29kZXwgY3JlYXRlX29wY29kZShvcGNvZGUsIGNvbmZpZywgb3Bjb2RlX2dyb3VwKSB9CiAg
ICAgICBAb3Bjb2RlcyArPSBvcGNvZGVzCiAgIGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1dhc20ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL1dhc20ucmIKaW5kZXggYzE3ODU4NmQ1MjEuLmUyYTY4YjMzNjkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1dhc20ucmIKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9XYXNtLnJiCkBAIC02LDYgKzYsMTAgQEAgbW9kdWxlIFdh
c20KICAgICBlbmQKIAogICAgIGRlZiBzZWxmLmF1dG9nZW5lcmF0ZV9vcGNvZGVzKGNvbnRleHQs
IHdhc21fanNvbikKKyAgICAgICAgdW5hcnlPcHMgPSBbXQorICAgICAgICBiaW5hcnlPcHMgPSBb
XQorICAgICAgICB2aXJ0dWFsUmVnaXN0ZXIgPSBjb250ZXh0LmV2YWwoIlZpcnR1YWxSZWdpc3Rl
ciIpCisKICAgICAgICAgSlNPTi5wYXJzZSh3YXNtX2pzb24pWyJvcGNvZGUiXS5lYWNoIGRvIHxu
YW1lLCB2YWx1ZXwKICAgICAgICAgICAgIGNhdGVnb3J5ID0gdmFsdWVbImNhdGVnb3J5Il0KIApA
QCAtMTQsMzIgKzE4LDI5IEBAIG1vZHVsZSBXYXNtCiAgICAgICAgICAgICByZXR1cm5Db3VudCA9
IHZhbHVlWyJyZXR1cm4iXS5zaXplCiAgICAgICAgICAgICBwYXJhbWV0ZXJDb3VudCA9IHZhbHVl
WyJwYXJhbWV0ZXIiXS5zaXplCiAKLSAgICAgICAgICAgIGFzc2VydCgic2hvdWxkIHJldHVybiAw
IG9yIDEgdmFsdWVzIikgeyBbMCwgMV0uaW5jbHVkZT8gcmV0dXJuQ291bnQgfQorICAgICAgICAg
ICAgYXNzZXJ0KCJzaG91bGQgcmV0dXJuIGV4YWN0bHkgMSB2YWx1ZSIpIHsgcmV0dXJuQ291bnQg
PT0gMX0KICAgICAgICAgICAgIGFzc2VydCgic2hvdWxkIG9ubHkgaGF2ZSAxIG9yIDIgcGFyYW1l
dGVycyIpIHsgWzEsIDJdLmluY2x1ZGU/IHBhcmFtZXRlckNvdW50IH0KIAogICAgICAgICAgICAg
bmFtZSA9IG5vcm1hbGl6ZShuYW1lKQotICAgICAgICAgICAgYXJndW1lbnRzID0ge30KLQotICAg
ICAgICAgICAgdmlydHVhbFJlZ2lzdGVyID0gY29udGV4dC5ldmFsKCJWaXJ0dWFsUmVnaXN0ZXIi
KQogCi0gICAgICAgICAgICBpZiByZXR1cm5Db3VudCA+IDAKLSAgICAgICAgICAgICAgICBhcmd1
bWVudHNbOmRzdF0gPSB2aXJ0dWFsUmVnaXN0ZXIKKyAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJD
b3VudCA9PSAxKQorICAgICAgICAgICAgICAgIHVuYXJ5T3BzIDw8IG5hbWUKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBiaW5hcnlPcHMgPDwgbmFtZQogICAgICAgICAgICAgZW5k
CisgICAgICAgIGVuZAogCi0gICAgICAgICAgICBjYXNlIHBhcmFtZXRlckNvdW50Ci0gICAgICAg
ICAgICB3aGVuIDEKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNbOm9wZXJhbmRdID0gdmlydHVh
bFJlZ2lzdGVyCi0gICAgICAgICAgICB3aGVuIDIKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNb
Omxoc10gPSB2aXJ0dWFsUmVnaXN0ZXIKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNbOnJoc10g
PSB2aXJ0dWFsUmVnaXN0ZXIKLSAgICAgICAgICAgIGVuZAorICAgICAgICBkZWNsYXJlX29wX2dy
b3VwID0gY29udGV4dC5ldmFsKCJQcm9jLm5ldyB7IHxuYW1lLCBvcHMsIGNvbmZpZ3wgb3BfZ3Jv
dXAobmFtZSwgb3BzLCBjb25maWcpIH0iKQogCi0gICAgICAgICAgICBjb250ZXh0LmV2YWwoIlBy
b2MubmV3IHsgfGFyZ3VtZW50cywgZXh0cmFzIHwgb3AoJyN7bmFtZX0nLCB7IGV4dHJhczogZXh0
cmFzLCBhcmdzOiBhcmd1bWVudHMgfSkgfSIpLmNhbGwoYXJndW1lbnRzLCB2YWx1ZSkKLSAgICAg
ICAgZW5kCisgICAgICAgIGNvbmZpZ1VuYXJ5T3BzID0geyBleHRyYXM6IHthdXRvZ2VuZXJhdGVk
OiB0cnVlfSwgYXJnczoge2RzdDogdmlydHVhbFJlZ2lzdGVyLCBvcGVyYW5kOiB2aXJ0dWFsUmVn
aXN0ZXJ9fQorICAgICAgICBjb25maWdCaW5hcnlPcHMgPSB7IGV4dHJhczoge2F1dG9nZW5lcmF0
ZWQ6IHRydWV9LCBhcmdzOiB7ZHN0OiB2aXJ0dWFsUmVnaXN0ZXIsIGxoczogdmlydHVhbFJlZ2lz
dGVyLCByaHM6IHZpcnR1YWxSZWdpc3Rlcn19CisKKyAgICAgICAgZGVjbGFyZV9vcF9ncm91cC5j
YWxsKCJVbmFyeU9wcyIsIHVuYXJ5T3BzLCBjb25maWdVbmFyeU9wcykKKyAgICAgICAgZGVjbGFy
ZV9vcF9ncm91cC5jYWxsKCJCaW5hcnlPcHMiLCBiaW5hcnlPcHMsIGNvbmZpZ0JpbmFyeU9wcykK
ICAgICBlbmQKIAogICAgIGRlZiBzZWxmLmdlbmVyYXRlX2xsaW50X2dlbmVyYXRvcihzZWN0aW9u
KQotICAgICAgICBvcGNvZGVzID0gc2VjdGlvbi5vcGNvZGVzLnNlbGVjdCB7IHxvcHwgWyJhcml0
aG1ldGljIiwgImNvbXBhcmlzb24iLCAiY29udmVyc2lvbiJdLmluY2x1ZGU/IG9wLmV4dHJhc1si
Y2F0ZWdvcnkiXSB9CisgICAgICAgIG9wY29kZXMgPSBzZWN0aW9uLm9wY29kZXMuc2VsZWN0IHsg
fG9wfCBvcC5leHRyYXNbOmF1dG9nZW5lcmF0ZWRdIH0KICAgICAgICAgbWV0aG9kcyA9IG9wY29k
ZXMubWFwIGRvIHxvcHwKICAgICAgICAgICAgIGNhc2Ugb3AuYXJncy5zaXplCiAgICAgICAgICAg
ICB3aGVuIDIK
</data>

          </attachment>
      

    </bug>

</bugzilla>