<?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>170186</bug_id>
          
          <creation_ts>2017-03-28 10:59:31 -0700</creation_ts>
          <short_desc>webkitpy: Add target host concept</short_desc>
          <delta_ts>2017-03-31 17:24: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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>glenn</cc>
    
    <cc>lforschler</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1291950</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-28 10:59:31 -0700</bug_when>
    <thetext>A target host concept will allow tests to be run on different hosts than the machine driving the test suite.  This target host would be accessed from the port class by the driver, allowing drivers to run layout tests on a remote host.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291951</commentid>
    <comment_count>1</comment_count>
      <attachid>305605</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-28 11:01:08 -0700</bug_when>
    <thetext>Created attachment 305605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291952</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-03-28 11:01:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/31301797&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292083</commentid>
    <comment_count>3</comment_count>
      <attachid>305640</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-28 14:16:54 -0700</bug_when>
    <thetext>Created attachment 305640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292192</commentid>
    <comment_count>4</comment_count>
      <attachid>305640</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-03-28 16:53:24 -0700</bug_when>
    <thetext>Comment on attachment 305640
Patch

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

I&apos;d like to better understand the difference between &quot;host&quot;, &quot;device&quot; and &quot;port&quot;. Perhaps the code could be more clear about these.

Looks good overall, please address the comments about the Port class member functions with unused arguments.

&gt; Tools/Scripts/webkitpy/port/base.py:809
&gt; -    def abspath_for_test(self, test_name):
&gt; +    def abspath_for_test(self, test_name, target_host=None):

It would be cleaner to implement the functionality for non-None target host here, not in subclasses. As it is, the signature misleads the reader into believing that passing a target_host is always supported.

&gt; Tools/Scripts/webkitpy/port/base.py:1277
&gt; +    def _driver_tempdir(self, target_host=None):

Ditto.

&gt; Tools/Scripts/webkitpy/port/base.py:1349
&gt; +    def sample_process(self, name, pid, target_host=None):

Ditto.

&gt; Tools/Scripts/webkitpy/port/darwin.py:125
&gt; +    def sample_process(self, name, pid, target_host=None):

Ditto.

&gt; Tools/Scripts/webkitpy/port/ios.py:79
&gt; +    # Devices are the target host

Please add the sentence with a period.

Is it right that multiple &quot;devices&quot; are a singular &quot;host&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292547</commentid>
    <comment_count>5</comment_count>
      <attachid>305778</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-29 13:30:32 -0700</bug_when>
    <thetext>Created attachment 305778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292993</commentid>
    <comment_count>6</comment_count>
      <attachid>305916</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-30 15:48:33 -0700</bug_when>
    <thetext>Created attachment 305916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293192</commentid>
    <comment_count>7</comment_count>
      <attachid>305981</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-31 10:11:40 -0700</bug_when>
    <thetext>Created attachment 305981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293281</commentid>
    <comment_count>8</comment_count>
      <attachid>305981</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-03-31 13:31:34 -0700</bug_when>
    <thetext>Comment on attachment 305981
Patch

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

&gt; Tools/Scripts/webkitpy/common/system/filesystem.py:315
&gt; +        &quot;&quot;&quot;Returns a path from the base host localized for this host.  By default,

Please don&apos;t use French spaces.

&gt; Tools/Scripts/webkitpy/common/system/filesystem.py:320
&gt; +        &quot;&quot;&quot;Moves a file from this host to the base host.  Be default, this host

Ditto. Typo: Be default.

It may be better to have a copy operation, as move can&apos;t be atomic in he general case anyway. As far as I understand, we don&apos;t need to copy or move for Simulator much anyway.

&gt; Tools/Scripts/webkitpy/common/system/filesystem.py:325
&gt; +        &quot;&quot;&quot;Moves a file from the base host to this host.  Be default, this host

Ditto.

&gt; Tools/Scripts/webkitpy/port/darwin.py:157
&gt; +    def sample_file_path(self, name, pid, dir):

dir -&gt; directory

&gt; Tools/Scripts/webkitpy/port/darwin.py:160
&gt; +    def spindump_file_path(self, name, pid, dir):

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293297</commentid>
    <comment_count>9</comment_count>
      <attachid>306010</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-31 14:18:06 -0700</bug_when>
    <thetext>Created attachment 306010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293323</commentid>
    <comment_count>10</comment_count>
      <attachid>306017</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-31 15:07:38 -0700</bug_when>
    <thetext>Created attachment 306017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293365</commentid>
    <comment_count>11</comment_count>
      <attachid>306026</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-31 16:42:55 -0700</bug_when>
    <thetext>Created attachment 306026
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293387</commentid>
    <comment_count>12</comment_count>
      <attachid>306026</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-31 17:24:51 -0700</bug_when>
    <thetext>Comment on attachment 306026
Patch for landing

Clearing flags on attachment: 306026

Committed r214705: &lt;http://trac.webkit.org/changeset/214705&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293388</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-31 17:24:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305605</attachid>
            <date>2017-03-28 11:01:08 -0700</date>
            <delta_ts>2017-03-28 14:16:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170186-20170328110107.patch</filename>
            <type>text/plain</type>
            <size>16926</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxNDQ4MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ3IEBACisyMDE3LTAzLTI4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogQWRkIHRhcmdldCBob3N0IGNvbmNlcHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDE4NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyB0aGUgaWRlYSBv
ZiBhIHRhcmdldCBob3N0LiAgQ3VycmVudGx5LCB0aGlzIGlzCisgICAgICAgIGRlc2lnbmVkIHRv
IGJlIHVzZWQgZm9yIGlPUyBvbi1kZXZpY2UgdGVzdGluZy4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydC50YXJnZXRfaG9zdCk6IFJldHVy
biBob3N0IGRldGVybWluZWQgYnkgd29ya2VyIG51bWJlci4KKyAgICAgICAgKFBvcnQuYWJzcGF0
aF9mb3JfdGVzdCk6IEFjY2VwdCBvcHRpb25hbCB0YXJnZXRfaG9zdCBhcmd1bWVudCB0byByZXR1
cm4gbG9jYXRpb24KKyAgICAgICAgb2YgdGVzdCBvbiBhIHRhcmdldCBob3N0LgorICAgICAgICAo
UG9ydC5fZHJpdmVyX3RlbXBkaXIpOiBBY2NlcHQgb3B0aW9uYWwgdGFyZ2V0X2hvc3QgYXJndW1l
bnQgdG8gcmV0dXJuIGEgdGVtcG9yYXJ5CisgICAgICAgIGRpcmVjdG9yeSBvbiBhIHRhcmdldCBo
b3N0LgorICAgICAgICAoUG9ydC5zYW1wbGVfcHJvY2Vzcyk6IEFjY2VwdCBvcHRpb25hbCB0YXJn
ZXRfaG9zdCBhcmd1bWVudCB0byBzYW1wbGUgcHJvY2VzcyBvbgorICAgICAgICBhIHRhcmdldCBo
b3N0LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHk6CisgICAgICAg
IChEYXJ3aW5Qb3J0LnNhbXBsZV9wcm9jZXNzKTogQWNjZXB0IG9wdGlvbmFsIHRhcmdldF9ob3N0
IGFyZ3VtZW50IHRvIHNhbXBsZQorICAgICAgICBwcm9jZXNzIG9uIGEgdGFyZ2V0IGhvc3QuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weToKKyAgICAgICAgKERyaXZl
ci5fX2luaXRfXyk6IEFkZCBhbmQgc2V0IHNlbGYuX3RhcmdldF9ob3N0IHZhcmlhYmxlLgorICAg
ICAgICAoRHJpdmVyLl9zdGFydCk6IFBhc3MgdGFyZ2V0IGhvc3QgdG8gX2RyaXZlcl90ZW1wZGly
KCkuCisgICAgICAgIChEcml2ZXIuc3RvcCk6IENhbGwgdGhlIHRhcmdldCBob3N0J3Mgcm10cmVl
LgorICAgICAgICAoRHJpdmVyLl9jaGVja19mb3JfZHJpdmVyX3RpbWVvdXQpOiBQYXNzIHRhcmdl
dCBob3N0IHRvIHNhbXBsZV9wcm9jZXNzLgorICAgICAgICAoRHJpdmVyLl9jaGVja19mb3JfZHJp
dmVyX2NyYXNoX29yX3VucmVzcG9uc2l2ZW5lc3MpOiBEaXR0by4KKyAgICAgICAgKERyaXZlci5f
Y29tbWFuZF9mcm9tX2RyaXZlcl9pbnB1dCk6IFBhc3MgdGFyZ2V0IGhvc3QgdG8gYWJzcGF0aF9m
b3JfdGVzdC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5OgorICAgICAg
ICAoSU9TUG9ydCk6CisgICAgICAgIChJT1NQb3J0LnRhcmdldF9ob3N0KTogUmVwbGFjZWQgZGV2
aWNlX2Zvcl93b3JrZXJfbnVtYmVyLgorICAgICAgICAoSU9TUG9ydC5zZXR1cF90ZXN0X3J1bik6
IFJlcGxhY2UgZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyIHdpdGggdGFyZ2V0X2hvc3QuCisgICAg
ICAgIChJT1NQb3J0LmRldmljZV9mb3Jfd29ya2VyX251bWJlcik6IFJlcGxhY2VkIHdpdGggdGFy
Z2V0X2hvc3QuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNz
LnB5OgorICAgICAgICAoU2VydmVyUHJvY2Vzcy5fX2luaXRfXyk6IEFjY2VwdCB0YXJnZXRfaG9z
dCBpbnN0ZWFkIG9mIHdvcmtlcl9udW1iZXIuCisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLl9zdGFy
dCk6IFJlcGxhY2UgX2hvc3Qgd2l0aCBfdGFyZ2V0X2hvc3QuCisgICAgICAgIChTZXJ2ZXJQcm9j
ZXNzLl9oYW5kbGVfdGltZW91dCk6IERpdHRvLgorICAgICAgICAoU2VydmVyUHJvY2Vzcy5fa2ls
bCk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3JfcHJv
Y2Vzcy5weToKKyAgICAgICAgKFNpbXVsYXRvclByb2Nlc3MuX19pbml0X18pOiBBY2NlcHQgdGFy
Z2V0X2hvc3QgaW5zdGVhZCBvZiB3b3JrZXJfbnVtYmVyLgorICAgICAgICAoU2ltdWxhdG9yUHJv
Y2Vzcy5fc3RhcnQpOiBSZXBsYWNlIF9kZXZpY2Ugd2l0aCBfdGFyZ2V0X2hvc3QuCisgICAgICAg
IChTaW11bGF0b3JQcm9jZXNzLnN0b3ApOiBEaXR0by4KKyAgICAgICAgKFNpbXVsYXRvclByb2Nl
c3MuX2tpbGwpOiBEZWxldGVkLgorCiAyMDE3LTAzLTI4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVk
YXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJraXRweTogVXNlIGhvc3QgcGF0dGVybiBmb3Ig
ZGV2aWNlcwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHJldmlzaW9uIDIx
NDQ3NCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0xNDMsNiArMTQzLDkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBzZWxm
Ll9sYXlvdXRfdGVzdHNfZGlyID0gaGFzYXR0cihvcHRpb25zLCAnbGF5b3V0X3Rlc3RzX2Rpcicp
IGFuZCBvcHRpb25zLmxheW91dF90ZXN0c19kaXIgYW5kIHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0
aChvcHRpb25zLmxheW91dF90ZXN0c19kaXIpCiAgICAgICAgIHNlbGYuX3czY19yZXNvdXJjZV9m
aWxlcyA9IE5vbmUKIAorICAgIGRlZiB0YXJnZXRfaG9zdChzZWxmLCB3b3JrZXJfbnVtYmVyPU5v
bmUpOgorICAgICAgICByZXR1cm4gc2VsZi5ob3N0CisKICAgICBkZWYgYXJjaGl0ZWN0dXJlKHNl
bGYpOgogICAgICAgICByZXR1cm4gc2VsZi5nZXRfb3B0aW9uKCdhcmNoaXRlY3R1cmUnKQogCkBA
IC04MDMsNyArODA2LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJu
IHNlbGYuaG9zdC5maWxlc3lzdGVtLmFic3BhdGgoZmlsZW5hbWUpCiAKICAgICBAbWVtb2l6ZWQK
LSAgICBkZWYgYWJzcGF0aF9mb3JfdGVzdChzZWxmLCB0ZXN0X25hbWUpOgorICAgIGRlZiBhYnNw
YXRoX2Zvcl90ZXN0KHNlbGYsIHRlc3RfbmFtZSwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CiAgICAgICAg
ICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZmlsZSBmb3IgYSBnaXZlbiB0ZXN0IG5h
bWUuIFRoaXMgaXMgdGhlCiAgICAgICAgIGludmVyc2Ugb2YgcmVsYXRpdmVfdGVzdF9maWxlbmFt
ZSgpLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0
X3Rlc3RzX2RpcigpLCB0ZXN0X25hbWUpCkBAIC0xMjcxLDcgKzEyNzQsNyBAQCBjbGFzcyBQb3J0
KG9iamVjdCk6CiAgICAgICAgICAgICBsb2NhbF9kcml2ZXJfcGF0aCA9IGJhc2UgKyAiLmV4ZSIK
ICAgICAgICAgcmV0dXJuIGxvY2FsX2RyaXZlcl9wYXRoCiAKLSAgICBkZWYgX2RyaXZlcl90ZW1w
ZGlyKHNlbGYpOgorICAgIGRlZiBfZHJpdmVyX3RlbXBkaXIoc2VsZiwgdGFyZ2V0X2hvc3Q9Tm9u
ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLm1rZHRlbXAocHJlZml4PSclcy0n
ICUgc2VsZi5kcml2ZXJfbmFtZSgpKQogCiAgICAgZGVmIF9wYXRoX3RvX3VzZXJfY2FjaGVfZGly
ZWN0b3J5KHNlbGYsIHN1ZmZpeD1Ob25lKToKQEAgLTEzNDMsNyArMTM0Niw3IEBAIGNsYXNzIFBv
cnQob2JqZWN0KToKICAgICBkZWYgbG9va19mb3JfbmV3X3NhbXBsZXMoc2VsZiwgdW5yZXNwb25z
aXZlX3Byb2Nlc3Nlcywgc3RhcnRfdGltZSk6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBzYW1w
bGVfcHJvY2VzcyhzZWxmLCBuYW1lLCBwaWQpOgorICAgIGRlZiBzYW1wbGVfcHJvY2VzcyhzZWxm
LCBuYW1lLCBwaWQsIHRhcmdldF9ob3N0PU5vbmUpOgogICAgICAgICBwYXNzCiAKICAgICBkZWYg
ZmluZF9zeXN0ZW1fcGlkKHNlbGYsIG5hbWUsIHBpZCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZGFyd2luLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9kYXJ3aW4ucHkJKHJldmlzaW9uIDIxNDQ3NCkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9kYXJ3aW4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBj
bGFzcyBEYXJ3aW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgICAgIGFsbF9jcmFzaF9sb2cgPSBzZWxm
Ll9sb29rX2Zvcl9hbGxfY3Jhc2hfbG9nc19pbl9sb2dfZGlyKHN0YXJ0X3RpbWUpCiAgICAgICAg
IHJldHVybiBzZWxmLl9tZXJnZV9jcmFzaF9sb2dzKGNyYXNoX2xvZ3MsIGFsbF9jcmFzaF9sb2cs
IGNyYXNoZWRfcHJvY2Vzc2VzKQogCi0gICAgZGVmIHNhbXBsZV9wcm9jZXNzKHNlbGYsIG5hbWUs
IHBpZCk6CisgICAgZGVmIHNhbXBsZV9wcm9jZXNzKHNlbGYsIG5hbWUsIHBpZCwgdGFyZ2V0X2hv
c3Q9Tm9uZSk6CiAgICAgICAgIGV4aXRfc3RhdHVzID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21t
YW5kKFsKICAgICAgICAgICAgICIvdXNyL2Jpbi9zdWRvIiwKICAgICAgICAgICAgICItbiIsCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHJldmlzaW9uIDIxNDQ3NCkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHdvcmtpbmcgY29weSkK
QEAgLTEzMyw2ICsxMzMsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5f
cG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIK
ICAgICAgICAgc2VsZi5fbm9fdGltZW91dCA9IG5vX3RpbWVvdXQKKyAgICAgICAgc2VsZi5fdGFy
Z2V0X2hvc3QgPSBwb3J0LnRhcmdldF9ob3N0KHdvcmtlcl9udW1iZXIpCiAKICAgICAgICAgc2Vs
Zi5fZHJpdmVyX3RlbXBkaXIgPSBOb25lCiAgICAgICAgIHNlbGYuX2RyaXZlcl91c2VyX2RpcmVj
dG9yeV9zdWZmaXggPSBOb25lCkBAIC0zNTksMTEgKzM2MCwxMSBAQCBjbGFzcyBEcml2ZXIob2Jq
ZWN0KToKICAgICAgICAgIyBFYWNoIGRyaXZlciBwcm9jZXNzIHNob3VsZCBiZSB1c2luZyBpbmRp
dmlkdWFsIGRpcmVjdG9yaWVzIHVuZGVyIF9kcml2ZXJfdGVtcGRpciAod2hpY2ggaXMgZGVsZXRl
ZCB3aGVuIHN0b3BwaW5nKSwKICAgICAgICAgIyBob3dldmVyIHNvbWUgc3Vic3lzdGVtcyBvbiBz
b21lIHBsYXRmb3JtcyBjb3VsZCBlbmQgdXAgdXNpbmcgcHJvY2VzcyBkZWZhdWx0IG9uZXMuCiAg
ICAgICAgIHNlbGYuX3BvcnQuX2NsZWFyX2dsb2JhbF9jYWNoZXNfYW5kX3RlbXBvcmFyeV9maWxl
cygpCi0gICAgICAgIHNlbGYuX2RyaXZlcl90ZW1wZGlyID0gc2VsZi5fcG9ydC5fZHJpdmVyX3Rl
bXBkaXIoKQorICAgICAgICBzZWxmLl9kcml2ZXJfdGVtcGRpciA9IHNlbGYuX3BvcnQuX2RyaXZl
cl90ZW1wZGlyKHNlbGYuX3RhcmdldF9ob3N0KQogICAgICAgICBzZWxmLl9kcml2ZXJfdXNlcl9k
aXJlY3Rvcnlfc3VmZml4ID0gb3MucGF0aC5iYXNlbmFtZShzdHIoc2VsZi5fZHJpdmVyX3RlbXBk
aXIpKQogICAgICAgICB1c2VyX2NhY2hlX2RpcmVjdG9yeSA9IHNlbGYuX3BvcnQuX3BhdGhfdG9f
dXNlcl9jYWNoZV9kaXJlY3Rvcnkoc2VsZi5fZHJpdmVyX3VzZXJfZGlyZWN0b3J5X3N1ZmZpeCkK
ICAgICAgICAgaWYgdXNlcl9jYWNoZV9kaXJlY3Rvcnk6Ci0gICAgICAgICAgICBzZWxmLl9wb3J0
Ll9maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHVzZXJfY2FjaGVfZGlyZWN0b3J5KQor
ICAgICAgICAgICAgc2VsZi5fdGFyZ2V0X2hvc3QuZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVj
dG9yeSh1c2VyX2NhY2hlX2RpcmVjdG9yeSkKICAgICAgICAgICAgIHNlbGYuX2RyaXZlcl91c2Vy
X2NhY2hlX2RpcmVjdG9yeSA9IHVzZXJfY2FjaGVfZGlyZWN0b3J5CiAgICAgICAgIGVudmlyb25t
ZW50ID0gc2VsZi5fc2V0dXBfZW52aXJvbl9mb3JfdGVzdCgpCiAgICAgICAgIHNlbGYuX2NyYXNo
ZWRfcHJvY2Vzc19uYW1lID0gTm9uZQpAQCAtMzg4LDEwICszODksMTAgQEAgY2xhc3MgRHJpdmVy
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fcHJvZmlsZXIucHJvZmlsZV9hZnRlcl9l
eGl0KCkKIAogICAgICAgICBpZiBzZWxmLl9kcml2ZXJfdGVtcGRpcjoKLSAgICAgICAgICAgIHNl
bGYuX3BvcnQuX2ZpbGVzeXN0ZW0ucm10cmVlKHN0cihzZWxmLl9kcml2ZXJfdGVtcGRpcikpCisg
ICAgICAgICAgICBzZWxmLl90YXJnZXRfaG9zdC5maWxlc3lzdGVtLnJtdHJlZShzdHIoc2VsZi5f
ZHJpdmVyX3RlbXBkaXIpKQogICAgICAgICAgICAgc2VsZi5fZHJpdmVyX3RlbXBkaXIgPSBOb25l
CiAgICAgICAgIGlmIHNlbGYuX2RyaXZlcl91c2VyX2NhY2hlX2RpcmVjdG9yeToKLSAgICAgICAg
ICAgIHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0ucm10cmVlKHNlbGYuX2RyaXZlcl91c2VyX2NhY2hl
X2RpcmVjdG9yeSkKKyAgICAgICAgICAgIHNlbGYuX3RhcmdldF9ob3N0LmZpbGVzeXN0ZW0ucm10
cmVlKHNlbGYuX2RyaXZlcl91c2VyX2NhY2hlX2RpcmVjdG9yeSkKICAgICAgICAgICAgIHNlbGYu
X2RyaXZlcl91c2VyX2NhY2hlX2RpcmVjdG9yeSA9IE5vbmUKIAogICAgIGRlZiBjbWRfbGluZShz
ZWxmLCBwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJncyk6CkBAIC00MzIsNyArNDMzLDcgQEAgY2xh
c3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCArPSBl
cnJfbGluZQogICAgICAgICAgICAgX2xvZy5kZWJ1ZyhlcnJfbGluZSkKICAgICAgICAgICAgIGlm
IHNlbGYuX3BvcnQuZ2V0X29wdGlvbigic2FtcGxlX29uX3RpbWVvdXQiKToKLSAgICAgICAgICAg
ICAgICBzZWxmLl9wb3J0LnNhbXBsZV9wcm9jZXNzKGNoaWxkX3Byb2Nlc3NfbmFtZSwgY2hpbGRf
cHJvY2Vzc19waWQpCisgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5zYW1wbGVfcHJvY2Vzcyhj
aGlsZF9wcm9jZXNzX25hbWUsIGNoaWxkX3Byb2Nlc3NfcGlkLCBzZWxmLl90YXJnZXRfaG9zdCkK
ICAgICAgICAgaWYgb3V0X2xpbmUgPT0gIkZBSUw6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBub3Rp
ZnlEb25lIHRvIGJlIGNhbGxlZFxuIjoKICAgICAgICAgICAgIHNlbGYuX2RyaXZlcl90aW1lZF9v
dXQgPSBUcnVlCiAKQEAgLTQ2MSw3ICs0NjIsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAg
ICAgICAgICAgIF9sb2cuZGVidWcoJyVzIGlzIHVucmVzcG9uc2l2ZSwgcGlkID0gJXMnICUgKGNo
aWxkX3Byb2Nlc3NfbmFtZSwgc3RyKGNoaWxkX3Byb2Nlc3NfcGlkKSkpCiAgICAgICAgICAgICBz
ZWxmLl9kcml2ZXJfdGltZWRfb3V0ID0gVHJ1ZQogICAgICAgICAgICAgaWYgY2hpbGRfcHJvY2Vz
c19waWQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5zYW1wbGVfcHJvY2VzcyhjaGlsZF9w
cm9jZXNzX25hbWUsIGNoaWxkX3Byb2Nlc3NfcGlkKQorICAgICAgICAgICAgICAgIHNlbGYuX3Bv
cnQuc2FtcGxlX3Byb2Nlc3MoY2hpbGRfcHJvY2Vzc19uYW1lLCBjaGlsZF9wcm9jZXNzX3BpZCwg
c2VsZi5fdGFyZ2V0X2hvc3QpCiAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCArPSBl
cnJvcl9saW5lCiAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy53cml0ZSgnI1NBTVBM
RSBGSU5JU0hFRFxuJywgVHJ1ZSkgICMgTXVzdCBiZSBhYmxlIHRvIGlnbm9yZSBhIGJyb2tlbiBw
aXBlIGhlcmUsIHRhcmdldCBwcm9jZXNzIG1heSBhbHJlYWR5IGJlIGNsb3NlZC4KICAgICAgICAg
ICAgIHJldHVybiBUcnVlCkBAIC00NzQsOSArNDc1LDkgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6
CiAgICAgICAgIGVsaWYgc2VsZi5pc193ZWJfcGxhdGZvcm1fdGVzdChkcml2ZXJfaW5wdXQudGVz
dF9uYW1lKSBvciAoc2VsZi5pc19odHRwX3Rlc3QoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkgYW5k
IChzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpIG9yIHN5cy5wbGF0
Zm9ybSA9PSAiY3lnd2luIikpOgogICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYudGVzdF90b191
cmkoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkKICAgICAgICAgICAgIGNvbW1hbmQgKz0gIictLWFi
c29sdXRlUGF0aCciCi0gICAgICAgICAgICBjb21tYW5kICs9IHNlbGYuX3BvcnQuYWJzcGF0aF9m
b3JfdGVzdChkcml2ZXJfaW5wdXQudGVzdF9uYW1lKQorICAgICAgICAgICAgY29tbWFuZCArPSBz
ZWxmLl9wb3J0LmFic3BhdGhfZm9yX3Rlc3QoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSwgc2VsZi5f
dGFyZ2V0X2hvc3QpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb21tYW5kID0gc2VsZi5f
cG9ydC5hYnNwYXRoX2Zvcl90ZXN0KGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpCisgICAgICAgICAg
ICBjb21tYW5kID0gc2VsZi5fcG9ydC5hYnNwYXRoX2Zvcl90ZXN0KGRyaXZlcl9pbnB1dC50ZXN0
X25hbWUsIHNlbGYuX3RhcmdldF9ob3N0KQogICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09
ICdjeWd3aW4nOgogICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBwYXRoLmN5Z3BhdGgoY29tbWFu
ZCkKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CShyZXZpc2lvbiAyMTQ0NzQp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC03NiwxMyArNzYsMTMgQEAgY2xhc3MgSU9TUG9ydChEYXJ3aW5Qb3J0KToKICAgICAgICAgICAg
IHJhaXNlIFJ1bnRpbWVFcnJvcignRGV2aWNlIGF0IHt9IGNvdWxkIG5vdCBiZSBmb3VuZCcuZm9y
bWF0KG51bWJlcikpCiAgICAgICAgIHJldHVybiBkZXZpY2UKIAotICAgICMgRklYTUU6IFRoaXMg
aXMgb25seSBleHBvc2VkIHNvIHRoYXQgU2ltdWxhdG9yUHJvY2VzcyBjYW4gdXNlIGl0LgotICAg
IGRlZiBkZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIoc2VsZiwgbnVtYmVyKToKLSAgICAgICAgaWYg
c2VsZi5fcHJpbnRpbmdfY21kX2xpbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICMg
RGV2aWNlcyBhcmUgdGhlIHRhcmdldCBob3N0CisgICAgZGVmIHRhcmdldF9ob3N0KHNlbGYsIHdv
cmtlcl9udW1iZXI9Tm9uZSk6CisgICAgICAgIGlmIHNlbGYuX3ByaW50aW5nX2NtZF9saW5lIG9y
IHdvcmtlcl9udW1iZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmhvc3QKICAg
ICAgICAgIyBXaGVuIHVzaW5nIHNpbXVsYXRlZCBkZXZpY2VzLCB0aGlzIG1lYW5zIHdlYmtpdHB5
IGlzIG1hbmFnaW5nIHRoZSBkZXZpY2VzLgogICAgICAgICBpZiBzZWxmLnVzaW5nX211bHRpcGxl
X2RldmljZXMoKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl90ZXN0aW5nX2RldmljZShudW1i
ZXIpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fdGVzdGluZ19kZXZpY2Uod29ya2VyX251bWJl
cikKICAgICAgICAgcmV0dXJuIHNlbGYuX2N1cnJlbnRfZGV2aWNlCiAKICAgICBkZWYgZGVmYXVs
dF9iYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToKQEAgLTExMCw3ICsxMTAsNyBAQCBjbGFzcyBJ
T1NQb3J0KERhcndpblBvcnQpOgogICAgICAgICBzZWxmLl9jcmVhdGVfZGV2aWNlcyhkZXZpY2Vf
Y2xhc3MpCiAKICAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuY2hpbGRfcHJvY2Vzc2VzKCkp
OgotICAgICAgICAgICAgZGV2aWNlID0gc2VsZi5kZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIoaSkK
KyAgICAgICAgICAgIGRldmljZSA9IHNlbGYudGFyZ2V0X2hvc3QoaSkKICAgICAgICAgICAgIF9s
b2cuZGVidWcoJ0luc3RhbGxpbmcgdG8ge30nLmZvcm1hdChkZXZpY2UpKQogICAgICAgICAgICAg
IyBXaXRob3V0IHBhc3NpbmcgRFlMRF9MSUJSQVJZX1BBVEgsIGxpYldlYkNvcmVUZXN0U3VwcG9y
dCBjYW5ub3QgYmUgbG9hZGVkIGFuZCBEUlQvV0tUUiB3aWxsIGNyYXNoIHByZS1sYXVuY2gsCiAg
ICAgICAgICAgICAjIGxlYXZpbmcgYSBjcmFzaCBsb2cgd2hpY2ggd2lsbCBiZSBwaWNrZWQgdXAg
aW4gcmVzdWx0cy4gIE5vIERZTERfRlJBTUVXT1JLX1BBVEggd2lsbCBhbHNvIGNhdXNlIHRoZSBE
UlQvV0tUUiB0bwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9j
ZXNzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJf
cHJvY2Vzcy5weQkocmV2aXNpb24gMjE0NDc0KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L3NlcnZlcl9wcm9jZXNzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIGNs
YXNzIFNlcnZlclByb2Nlc3Mob2JqZWN0KToKICAgICBpbmRlZmluaXRlbHkuIFRoZSBjbGFzcyBh
bHNvIGhhbmRsZXMgdHJhbnNwYXJlbnRseSByZXN0YXJ0aW5nIHByb2Nlc3NlcwogICAgIGFzIG5l
Y2Vzc2FyeSB0byBrZWVwIGlzc3VpbmcgY29tbWFuZHMuIiIiCiAKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgcG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1G
YWxzZSwgdHJlYXRfbm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgd29ya2VyX251bWJlcj1Ob25lKToK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVu
aXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdHJlYXRfbm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgdGFy
Z2V0X2hvc3Q9Tm9uZSk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0X29iagogICAgICAgICBz
ZWxmLl9uYW1lID0gbmFtZSAgIyBTaG91bGQgYmUgdGhlIGNvbW1hbmQgbmFtZSAoZS5nLiBEdW1w
UmVuZGVyVHJlZSwgSW1hZ2VEaWZmKQogICAgICAgICBzZWxmLl9jbWQgPSBjbWQKQEAgLTY5LDcg
KzY5LDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgICAgICAjIERvbid0IHNl
dCBpZiB0aGVyZSB3aWxsIGJlIGJpbmFyeSBkYXRhIG9yIHRoZSBkYXRhIG11c3QgYmUgQVNDSUkg
ZW5jb2RlZC4KICAgICAgICAgc2VsZi5fdW5pdmVyc2FsX25ld2xpbmVzID0gdW5pdmVyc2FsX25l
d2xpbmVzCiAgICAgICAgIHNlbGYuX3RyZWF0X25vX2RhdGFfYXNfY3Jhc2ggPSB0cmVhdF9ub19k
YXRhX2FzX2NyYXNoCi0gICAgICAgIHNlbGYuX2hvc3QgPSBzZWxmLl9wb3J0Lmhvc3QKKyAgICAg
ICAgc2VsZi5fdGFyZ2V0X2hvc3QgPSB0YXJnZXRfaG9zdCBvciBwb3J0X29iai5ob3N0CiAgICAg
ICAgIHNlbGYuX3BpZCA9IE5vbmUKICAgICAgICAgc2VsZi5fcmVzZXQoKQogCkBAIC0xMTQsMTAg
KzExNCwxMCBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAgICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCIlcyBhbHJlYWR5IHJ1bm5pbmciICUgc2VsZi5fbmFtZSkKICAgICAgICAg
c2VsZi5fcmVzZXQoKQogICAgICAgICAjIGNsb3NlX2ZkcyBpcyBhIHdvcmthcm91bmQgZm9yIGh0
dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCi0gICAgICAgIGNsb3NlX2ZkcyA9IG5vdCBz
ZWxmLl9ob3N0LnBsYXRmb3JtLmlzX3dpbigpCi0gICAgICAgIHNlbGYuX3Byb2MgPSBzZWxmLl9o
b3N0LmV4ZWN1dGl2ZS5wb3BlbihzZWxmLl9jbWQsIHN0ZGluPXNlbGYuX2hvc3QuZXhlY3V0aXZl
LlBJUEUsCi0gICAgICAgICAgICBzdGRvdXQ9c2VsZi5faG9zdC5leGVjdXRpdmUuUElQRSwKLSAg
ICAgICAgICAgIHN0ZGVycj1zZWxmLl9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAorICAgICAgICBjbG9z
ZV9mZHMgPSBub3Qgc2VsZi5fdGFyZ2V0X2hvc3QucGxhdGZvcm0uaXNfd2luKCkKKyAgICAgICAg
c2VsZi5fcHJvYyA9IHNlbGYuX3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5wb3BlbihzZWxmLl9jbWQs
IHN0ZGluPXNlbGYuX3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAorICAgICAgICAgICAgc3Rk
b3V0PXNlbGYuX3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAorICAgICAgICAgICAgc3RkZXJy
PXNlbGYuX3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAogICAgICAgICAgICAgY2xvc2VfZmRz
PWNsb3NlX2ZkcywKICAgICAgICAgICAgIGVudj1zZWxmLl9lbnYsCiAgICAgICAgICAgICB1bml2
ZXJzYWxfbmV3bGluZXM9c2VsZi5fdW5pdmVyc2FsX25ld2xpbmVzKQpAQCAtMjE4LDcgKzIxOCw3
IEBAIGNsYXNzIFNlcnZlclByb2Nlc3Mob2JqZWN0KToKICAgICBkZWYgX2hhbmRsZV90aW1lb3V0
KHNlbGYpOgogICAgICAgICBzZWxmLnRpbWVkX291dCA9IFRydWUKICAgICAgICAgaWYgc2VsZi5f
cG9ydC5nZXRfb3B0aW9uKCJzYW1wbGVfb25fdGltZW91dCIpOgotICAgICAgICAgICAgc2VsZi5f
cG9ydC5zYW1wbGVfcHJvY2VzcyhzZWxmLl9uYW1lLCBzZWxmLl9wcm9jLnBpZCkKKyAgICAgICAg
ICAgIHNlbGYuX3BvcnQuc2FtcGxlX3Byb2Nlc3Moc2VsZi5fbmFtZSwgc2VsZi5fcHJvYy5waWQs
IHNlbGYuX3RhcmdldF9ob3N0KQogCiAgICAgZGVmIF9zcGxpdF9zdHJpbmdfYWZ0ZXJfaW5kZXgo
c2VsZiwgc3RyaW5nLCBpbmRleCk6CiAgICAgICAgIHJldHVybiBzdHJpbmdbOmluZGV4XSwgc3Ry
aW5nW2luZGV4Ol0KQEAgLTM3Nyw3ICszNzcsNyBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzKG9iamVj
dCk6CiAgICAgICAgIHNlbGYuc3RvcCgwLjApCiAKICAgICBkZWYgX2tpbGwoc2VsZik6Ci0gICAg
ICAgIHNlbGYuX2hvc3QuZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9jLnBpZCkKKyAg
ICAgICAgc2VsZi5fdGFyZ2V0X2hvc3QuZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9j
LnBpZCkKICAgICAgICAgaWYgc2VsZi5fcHJvYy5wb2xsKCkgaXMgbm90IE5vbmU6CiAgICAgICAg
ICAgICBzZWxmLl9wcm9jLndhaXQoKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvc2ltdWxhdG9yX3Byb2Nlc3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5CShyZXZpc2lvbiAyMTQ0NzQpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nlc3MucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDEwICs1NCw5IEBAIGNsYXNzIFNpbXVsYXRvclByb2Nlc3MoU2VydmVyUHJvY2Vz
cyk6CiAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKSAgIyBJbiBzZWNvbmRzCiAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
cG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwg
dHJlYXRfbm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgd29ya2VyX251bWJlcj1Ob25lKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNh
bF9uZXdsaW5lcz1GYWxzZSwgdHJlYXRfbm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgdGFyZ2V0X2hv
c3Q9Tm9uZSk6CiAgICAgICAgIHNlbGYuX2J1bmRsZV9pZCA9IHBvcnRfb2JqLmFwcF9pZGVudGlm
aWVyX2Zyb21fYnVuZGxlKGNtZFswXSkKLSAgICAgICAgc2VsZi5fZGV2aWNlID0gcG9ydF9vYmou
ZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyKHdvcmtlcl9udW1iZXIpCi0gICAgICAgIGVudlsnSVBD
X0lERU5USUZJRVInXSA9IHNlbGYuX2J1bmRsZV9pZCArICctJyArIHNlbGYuX2RldmljZS51ZGlk
CisgICAgICAgIGVudlsnSVBDX0lERU5USUZJRVInXSA9IHNlbGYuX2J1bmRsZV9pZCArICctJyAr
IHRhcmdldF9ob3N0LnVkaWQgICMgVGhlIHRhcmdldF9ob3N0IHNob3VsZCBiZSBhIGRldmljZS4K
IAogICAgICAgICAjIFRoaXMgbG9jYXRpb24gbWF0Y2hlcyB0aGUgbG9jYXRpb24gdXNlZCBieSBX
ZWJLaXRUZXN0UnVubmVyIGFuZCBEdW1wUmVuZGVyVHJlZQogICAgICAgICAjIGZvciB0aGUgb3Ro
ZXIgc2lkZSBvZiB0aGVzZSBmaWZvcy4KQEAgLTY2LDcgKzY1LDcgQEAgY2xhc3MgU2ltdWxhdG9y
UHJvY2VzcyhTZXJ2ZXJQcm9jZXNzKToKICAgICAgICAgc2VsZi5fb3V0X3BhdGggPSBmaWxlX2xv
Y2F0aW9uICsgJ19PVVQnCiAgICAgICAgIHNlbGYuX2Vycm9yX3BhdGggPSBmaWxlX2xvY2F0aW9u
ICsgJ19FUlJPUicKIAotICAgICAgICBzdXBlcihTaW11bGF0b3JQcm9jZXNzLCBzZWxmKS5fX2lu
aXRfXyhwb3J0X29iaiwgbmFtZSwgY21kLCBlbnYsIHVuaXZlcnNhbF9uZXdsaW5lcywgdHJlYXRf
bm9fZGF0YV9hc19jcmFzaCkKKyAgICAgICAgc3VwZXIoU2ltdWxhdG9yUHJvY2Vzcywgc2VsZiku
X19pbml0X18ocG9ydF9vYmosIG5hbWUsIGNtZCwgZW52LCB1bml2ZXJzYWxfbmV3bGluZXMsIHRy
ZWF0X25vX2RhdGFfYXNfY3Jhc2gsIHRhcmdldF9ob3N0KQogCiAgICAgZGVmIF9yZXNldChzZWxm
KToKICAgICAgICAgc3VwZXIoU2ltdWxhdG9yUHJvY2Vzcywgc2VsZikuX3Jlc2V0KCkKQEAgLTEw
MSw3ICsxMDAsNyBAQCBjbGFzcyBTaW11bGF0b3JQcm9jZXNzKFNlcnZlclByb2Nlc3MpOgogICAg
ICAgICBzdGRvdXQgPSBvcy5mZG9wZW4ob3Mub3BlbihzZWxmLl9vdXRfcGF0aCwgb3MuT19SRE9O
TFkgfCBvcy5PX05PTkJMT0NLKSwgJ3JiJykKICAgICAgICAgc3RkZXJyID0gb3MuZmRvcGVuKG9z
Lm9wZW4oc2VsZi5fZXJyb3JfcGF0aCwgb3MuT19SRE9OTFkgfCBvcy5PX05PTkJMT0NLKSwgJ3Ji
JykKIAotICAgICAgICBzZWxmLl9waWQgPSBzZWxmLl9kZXZpY2UubGF1bmNoX2FwcChzZWxmLl9i
dW5kbGVfaWQsIHNlbGYuX2NtZFsxOl0sIGVudj1zZWxmLl9lbnYpCisgICAgICAgIHNlbGYuX3Bp
ZCA9IHNlbGYuX3RhcmdldF9ob3N0LmxhdW5jaF9hcHAoc2VsZi5fYnVuZGxlX2lkLCBzZWxmLl9j
bWRbMTpdLCBlbnY9c2VsZi5fZW52KQogCiAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJh
bWUpOgogICAgICAgICAgICAgYXNzZXJ0IHNpZ251bSA9PSBzaWduYWwuU0lHQUxSTQpAQCAtMTE0
LDcgKzExMyw3IEBAIGNsYXNzIFNpbXVsYXRvclByb2Nlc3MoU2VydmVyUHJvY2Vzcyk6CiAgICAg
ICAgICAgICBzdGRpbiA9IG9wZW4oc2VsZi5faW5fcGF0aCwgJ3cnLCAwKSAgIyBPcGVuaW5nIHdp
dGggbm8gYnVmZmVyaW5nLCBsaWtlIHBvcGVuCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAg
ICMgV2Ugc2V0IHNlbGYuX3Byb2MgYXMgX3Jlc2V0KCkgYW5kIF9raWxsKCkgZGVwZW5kIG9uIGl0
LgotICAgICAgICAgICAgc2VsZi5fcHJvYyA9IFNpbXVsYXRvclByb2Nlc3MuUG9wZW4oc2VsZi5f
cGlkLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIHNlbGYuX2RldmljZSkKKyAgICAgICAgICAgIHNl
bGYuX3Byb2MgPSBTaW11bGF0b3JQcm9jZXNzLlBvcGVuKHNlbGYuX3BpZCwgc3RkaW4sIHN0ZG91
dCwgc3RkZXJyLCBzZWxmLl90YXJnZXRfaG9zdCkKICAgICAgICAgICAgIGlmIHNlbGYuX3Byb2Mu
cG9sbCgpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuX3Jlc2V0KCkKICAgICAg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0FwcCB7fSBjcmFzaGVkIGJlZm9yZSBzdGRpbiBj
b3VsZCBiZSBhdHRhY2hlZCcuZm9ybWF0KG9zLnBhdGguYmFzZW5hbWUoc2VsZi5fY21kWzBdKSkp
CkBAIC0xMjMsMTQgKzEyMiw5IEBAIGNsYXNzIFNpbXVsYXRvclByb2Nlc3MoU2VydmVyUHJvY2Vz
cyk6CiAgICAgICAgICAgICByYWlzZQogICAgICAgICBzaWduYWwuYWxhcm0oMCkgICMgQ2FuY2Vs
IGFsYXJtCiAKLSAgICAgICAgc2VsZi5fcHJvYyA9IFNpbXVsYXRvclByb2Nlc3MuUG9wZW4oc2Vs
Zi5fcGlkLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIHNlbGYuX2RldmljZSkKKyAgICAgICAgc2Vs
Zi5fcHJvYyA9IFNpbXVsYXRvclByb2Nlc3MuUG9wZW4oc2VsZi5fcGlkLCBzdGRpbiwgc3Rkb3V0
LCBzdGRlcnIsIHNlbGYuX3RhcmdldF9ob3N0KQogCiAgICAgZGVmIHN0b3Aoc2VsZiwgdGltZW91
dF9zZWNzPTMuMCk6CiAgICAgICAgIGlmIHNlbGYuX3Byb2M6Ci0gICAgICAgICAgICBzZWxmLl9k
ZXZpY2UuZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9jLnBpZCkKKyAgICAgICAgICAg
IHNlbGYuX3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQp
CiAgICAgICAgIHJldHVybiBzdXBlcihTaW11bGF0b3JQcm9jZXNzLCBzZWxmKS5zdG9wKHRpbWVv
dXRfc2VjcykKLQotICAgIGRlZiBfa2lsbChzZWxmKToKLSAgICAgICAgc2VsZi5fZGV2aWNlLmV4
ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCi0gICAgICAgIGlmIHNlbGYuX3By
b2MucG9sbCgpIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5fcHJvYy53YWl0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305640</attachid>
            <date>2017-03-28 14:16:54 -0700</date>
            <delta_ts>2017-03-29 13:30:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170186-20170328141654.patch</filename>
            <type>text/plain</type>
            <size>17430</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxNDQ4MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ3IEBACisyMDE3LTAzLTI4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogQWRkIHRhcmdldCBob3N0IGNvbmNlcHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDE4NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyB0aGUgaWRlYSBv
ZiBhIHRhcmdldCBob3N0LiAgQ3VycmVudGx5LCB0aGlzIGlzCisgICAgICAgIGRlc2lnbmVkIHRv
IGJlIHVzZWQgZm9yIGlPUyBvbi1kZXZpY2UgdGVzdGluZy4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydC50YXJnZXRfaG9zdCk6IFJldHVy
biBob3N0IGRldGVybWluZWQgYnkgd29ya2VyIG51bWJlci4KKyAgICAgICAgKFBvcnQuYWJzcGF0
aF9mb3JfdGVzdCk6IEFjY2VwdCBvcHRpb25hbCB0YXJnZXRfaG9zdCBhcmd1bWVudCB0byByZXR1
cm4gbG9jYXRpb24KKyAgICAgICAgb2YgdGVzdCBvbiBhIHRhcmdldCBob3N0LgorICAgICAgICAo
UG9ydC5fZHJpdmVyX3RlbXBkaXIpOiBBY2NlcHQgb3B0aW9uYWwgdGFyZ2V0X2hvc3QgYXJndW1l
bnQgdG8gcmV0dXJuIGEgdGVtcG9yYXJ5CisgICAgICAgIGRpcmVjdG9yeSBvbiBhIHRhcmdldCBo
b3N0LgorICAgICAgICAoUG9ydC5zYW1wbGVfcHJvY2Vzcyk6IEFjY2VwdCBvcHRpb25hbCB0YXJn
ZXRfaG9zdCBhcmd1bWVudCB0byBzYW1wbGUgcHJvY2VzcyBvbgorICAgICAgICBhIHRhcmdldCBo
b3N0LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHk6CisgICAgICAg
IChEYXJ3aW5Qb3J0LnNhbXBsZV9wcm9jZXNzKTogQWNjZXB0IG9wdGlvbmFsIHRhcmdldF9ob3N0
IGFyZ3VtZW50IHRvIHNhbXBsZQorICAgICAgICBwcm9jZXNzIG9uIGEgdGFyZ2V0IGhvc3QuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weToKKyAgICAgICAgKERyaXZl
ci5fX2luaXRfXyk6IEFkZCBhbmQgc2V0IHNlbGYuX3RhcmdldF9ob3N0IHZhcmlhYmxlLgorICAg
ICAgICAoRHJpdmVyLl9zdGFydCk6IFBhc3MgdGFyZ2V0IGhvc3QgdG8gX2RyaXZlcl90ZW1wZGly
KCkuCisgICAgICAgIChEcml2ZXIuc3RvcCk6IENhbGwgdGhlIHRhcmdldCBob3N0J3Mgcm10cmVl
LgorICAgICAgICAoRHJpdmVyLl9jaGVja19mb3JfZHJpdmVyX3RpbWVvdXQpOiBQYXNzIHRhcmdl
dCBob3N0IHRvIHNhbXBsZV9wcm9jZXNzLgorICAgICAgICAoRHJpdmVyLl9jaGVja19mb3JfZHJp
dmVyX2NyYXNoX29yX3VucmVzcG9uc2l2ZW5lc3MpOiBEaXR0by4KKyAgICAgICAgKERyaXZlci5f
Y29tbWFuZF9mcm9tX2RyaXZlcl9pbnB1dCk6IFBhc3MgdGFyZ2V0IGhvc3QgdG8gYWJzcGF0aF9m
b3JfdGVzdC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5OgorICAgICAg
ICAoSU9TUG9ydCk6CisgICAgICAgIChJT1NQb3J0LnRhcmdldF9ob3N0KTogUmVwbGFjZWQgZGV2
aWNlX2Zvcl93b3JrZXJfbnVtYmVyLgorICAgICAgICAoSU9TUG9ydC5zZXR1cF90ZXN0X3J1bik6
IFJlcGxhY2UgZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyIHdpdGggdGFyZ2V0X2hvc3QuCisgICAg
ICAgIChJT1NQb3J0LmRldmljZV9mb3Jfd29ya2VyX251bWJlcik6IFJlcGxhY2VkIHdpdGggdGFy
Z2V0X2hvc3QuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNz
LnB5OgorICAgICAgICAoU2VydmVyUHJvY2Vzcy5fX2luaXRfXyk6IEFjY2VwdCB0YXJnZXRfaG9z
dCBpbnN0ZWFkIG9mIHdvcmtlcl9udW1iZXIuCisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLl9zdGFy
dCk6IFJlcGxhY2UgX2hvc3Qgd2l0aCBfdGFyZ2V0X2hvc3QuCisgICAgICAgIChTZXJ2ZXJQcm9j
ZXNzLl9oYW5kbGVfdGltZW91dCk6IERpdHRvLgorICAgICAgICAoU2VydmVyUHJvY2Vzcy5fa2ls
bCk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3JfcHJv
Y2Vzcy5weToKKyAgICAgICAgKFNpbXVsYXRvclByb2Nlc3MuX19pbml0X18pOiBBY2NlcHQgdGFy
Z2V0X2hvc3QgaW5zdGVhZCBvZiB3b3JrZXJfbnVtYmVyLgorICAgICAgICAoU2ltdWxhdG9yUHJv
Y2Vzcy5fc3RhcnQpOiBSZXBsYWNlIF9kZXZpY2Ugd2l0aCBfdGFyZ2V0X2hvc3QuCisgICAgICAg
IChTaW11bGF0b3JQcm9jZXNzLnN0b3ApOiBEaXR0by4KKyAgICAgICAgKFNpbXVsYXRvclByb2Nl
c3MuX2tpbGwpOiBEZWxldGVkLgorCiAyMDE3LTAzLTI4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVk
YXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJraXRweTogVXNlIGhvc3QgcGF0dGVybiBmb3Ig
ZGV2aWNlcwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHJldmlzaW9uIDIx
NDQ3NCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0xNDMsNiArMTQzLDkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBzZWxm
Ll9sYXlvdXRfdGVzdHNfZGlyID0gaGFzYXR0cihvcHRpb25zLCAnbGF5b3V0X3Rlc3RzX2Rpcicp
IGFuZCBvcHRpb25zLmxheW91dF90ZXN0c19kaXIgYW5kIHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0
aChvcHRpb25zLmxheW91dF90ZXN0c19kaXIpCiAgICAgICAgIHNlbGYuX3czY19yZXNvdXJjZV9m
aWxlcyA9IE5vbmUKIAorICAgIGRlZiB0YXJnZXRfaG9zdChzZWxmLCB3b3JrZXJfbnVtYmVyPU5v
bmUpOgorICAgICAgICByZXR1cm4gc2VsZi5ob3N0CisKICAgICBkZWYgYXJjaGl0ZWN0dXJlKHNl
bGYpOgogICAgICAgICByZXR1cm4gc2VsZi5nZXRfb3B0aW9uKCdhcmNoaXRlY3R1cmUnKQogCkBA
IC04MDMsNyArODA2LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJu
IHNlbGYuaG9zdC5maWxlc3lzdGVtLmFic3BhdGgoZmlsZW5hbWUpCiAKICAgICBAbWVtb2l6ZWQK
LSAgICBkZWYgYWJzcGF0aF9mb3JfdGVzdChzZWxmLCB0ZXN0X25hbWUpOgorICAgIGRlZiBhYnNw
YXRoX2Zvcl90ZXN0KHNlbGYsIHRlc3RfbmFtZSwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CiAgICAgICAg
ICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZmlsZSBmb3IgYSBnaXZlbiB0ZXN0IG5h
bWUuIFRoaXMgaXMgdGhlCiAgICAgICAgIGludmVyc2Ugb2YgcmVsYXRpdmVfdGVzdF9maWxlbmFt
ZSgpLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0
X3Rlc3RzX2RpcigpLCB0ZXN0X25hbWUpCkBAIC0xMjcxLDcgKzEyNzQsNyBAQCBjbGFzcyBQb3J0
KG9iamVjdCk6CiAgICAgICAgICAgICBsb2NhbF9kcml2ZXJfcGF0aCA9IGJhc2UgKyAiLmV4ZSIK
ICAgICAgICAgcmV0dXJuIGxvY2FsX2RyaXZlcl9wYXRoCiAKLSAgICBkZWYgX2RyaXZlcl90ZW1w
ZGlyKHNlbGYpOgorICAgIGRlZiBfZHJpdmVyX3RlbXBkaXIoc2VsZiwgdGFyZ2V0X2hvc3Q9Tm9u
ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLm1rZHRlbXAocHJlZml4PSclcy0n
ICUgc2VsZi5kcml2ZXJfbmFtZSgpKQogCiAgICAgZGVmIF9wYXRoX3RvX3VzZXJfY2FjaGVfZGly
ZWN0b3J5KHNlbGYsIHN1ZmZpeD1Ob25lKToKQEAgLTEzNDMsNyArMTM0Niw3IEBAIGNsYXNzIFBv
cnQob2JqZWN0KToKICAgICBkZWYgbG9va19mb3JfbmV3X3NhbXBsZXMoc2VsZiwgdW5yZXNwb25z
aXZlX3Byb2Nlc3Nlcywgc3RhcnRfdGltZSk6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBzYW1w
bGVfcHJvY2VzcyhzZWxmLCBuYW1lLCBwaWQpOgorICAgIGRlZiBzYW1wbGVfcHJvY2VzcyhzZWxm
LCBuYW1lLCBwaWQsIHRhcmdldF9ob3N0PU5vbmUpOgogICAgICAgICBwYXNzCiAKICAgICBkZWYg
ZmluZF9zeXN0ZW1fcGlkKHNlbGYsIG5hbWUsIHBpZCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZGFyd2luLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9kYXJ3aW4ucHkJKHJldmlzaW9uIDIxNDQ3NCkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9kYXJ3aW4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBj
bGFzcyBEYXJ3aW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgICAgIGFsbF9jcmFzaF9sb2cgPSBzZWxm
Ll9sb29rX2Zvcl9hbGxfY3Jhc2hfbG9nc19pbl9sb2dfZGlyKHN0YXJ0X3RpbWUpCiAgICAgICAg
IHJldHVybiBzZWxmLl9tZXJnZV9jcmFzaF9sb2dzKGNyYXNoX2xvZ3MsIGFsbF9jcmFzaF9sb2cs
IGNyYXNoZWRfcHJvY2Vzc2VzKQogCi0gICAgZGVmIHNhbXBsZV9wcm9jZXNzKHNlbGYsIG5hbWUs
IHBpZCk6CisgICAgZGVmIHNhbXBsZV9wcm9jZXNzKHNlbGYsIG5hbWUsIHBpZCwgdGFyZ2V0X2hv
c3Q9Tm9uZSk6CiAgICAgICAgIGV4aXRfc3RhdHVzID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21t
YW5kKFsKICAgICAgICAgICAgICIvdXNyL2Jpbi9zdWRvIiwKICAgICAgICAgICAgICItbiIsCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHJldmlzaW9uIDIxNDQ3NCkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHdvcmtpbmcgY29weSkK
QEAgLTEzMyw2ICsxMzMsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5f
cG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIK
ICAgICAgICAgc2VsZi5fbm9fdGltZW91dCA9IG5vX3RpbWVvdXQKKyAgICAgICAgc2VsZi5fdGFy
Z2V0X2hvc3QgPSBwb3J0LnRhcmdldF9ob3N0KHdvcmtlcl9udW1iZXIpCiAKICAgICAgICAgc2Vs
Zi5fZHJpdmVyX3RlbXBkaXIgPSBOb25lCiAgICAgICAgIHNlbGYuX2RyaXZlcl91c2VyX2RpcmVj
dG9yeV9zdWZmaXggPSBOb25lCkBAIC0zNTksMTYgKzM2MCwxNiBAQCBjbGFzcyBEcml2ZXIob2Jq
ZWN0KToKICAgICAgICAgIyBFYWNoIGRyaXZlciBwcm9jZXNzIHNob3VsZCBiZSB1c2luZyBpbmRp
dmlkdWFsIGRpcmVjdG9yaWVzIHVuZGVyIF9kcml2ZXJfdGVtcGRpciAod2hpY2ggaXMgZGVsZXRl
ZCB3aGVuIHN0b3BwaW5nKSwKICAgICAgICAgIyBob3dldmVyIHNvbWUgc3Vic3lzdGVtcyBvbiBz
b21lIHBsYXRmb3JtcyBjb3VsZCBlbmQgdXAgdXNpbmcgcHJvY2VzcyBkZWZhdWx0IG9uZXMuCiAg
ICAgICAgIHNlbGYuX3BvcnQuX2NsZWFyX2dsb2JhbF9jYWNoZXNfYW5kX3RlbXBvcmFyeV9maWxl
cygpCi0gICAgICAgIHNlbGYuX2RyaXZlcl90ZW1wZGlyID0gc2VsZi5fcG9ydC5fZHJpdmVyX3Rl
bXBkaXIoKQorICAgICAgICBzZWxmLl9kcml2ZXJfdGVtcGRpciA9IHNlbGYuX3BvcnQuX2RyaXZl
cl90ZW1wZGlyKHNlbGYuX3RhcmdldF9ob3N0KQogICAgICAgICBzZWxmLl9kcml2ZXJfdXNlcl9k
aXJlY3Rvcnlfc3VmZml4ID0gb3MucGF0aC5iYXNlbmFtZShzdHIoc2VsZi5fZHJpdmVyX3RlbXBk
aXIpKQogICAgICAgICB1c2VyX2NhY2hlX2RpcmVjdG9yeSA9IHNlbGYuX3BvcnQuX3BhdGhfdG9f
dXNlcl9jYWNoZV9kaXJlY3Rvcnkoc2VsZi5fZHJpdmVyX3VzZXJfZGlyZWN0b3J5X3N1ZmZpeCkK
ICAgICAgICAgaWYgdXNlcl9jYWNoZV9kaXJlY3Rvcnk6Ci0gICAgICAgICAgICBzZWxmLl9wb3J0
Ll9maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHVzZXJfY2FjaGVfZGlyZWN0b3J5KQor
ICAgICAgICAgICAgc2VsZi5fdGFyZ2V0X2hvc3QuZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVj
dG9yeSh1c2VyX2NhY2hlX2RpcmVjdG9yeSkKICAgICAgICAgICAgIHNlbGYuX2RyaXZlcl91c2Vy
X2NhY2hlX2RpcmVjdG9yeSA9IHVzZXJfY2FjaGVfZGlyZWN0b3J5CiAgICAgICAgIGVudmlyb25t
ZW50ID0gc2VsZi5fc2V0dXBfZW52aXJvbl9mb3JfdGVzdCgpCiAgICAgICAgIHNlbGYuX2NyYXNo
ZWRfcHJvY2Vzc19uYW1lID0gTm9uZQogICAgICAgICBzZWxmLl9jcmFzaGVkX3BpZCA9IE5vbmUK
LSAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MgPSBzZWxmLl9wb3J0Ll90ZXN0X3J1bm5lcl9w
cm9jZXNzX2NvbnN0cnVjdG9yKHNlbGYuX3BvcnQsIHNlbGYuX3NlcnZlcl9uYW1lLCBzZWxmLmNt
ZF9saW5lKHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKSwgZW52aXJvbm1lbnQsIHdvcmtlcl9u
dW1iZXI9c2VsZi5fd29ya2VyX251bWJlcikKKyAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Mg
PSBzZWxmLl9wb3J0Ll90ZXN0X3J1bm5lcl9wcm9jZXNzX2NvbnN0cnVjdG9yKHNlbGYuX3BvcnQs
IHNlbGYuX3NlcnZlcl9uYW1lLCBzZWxmLmNtZF9saW5lKHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9h
cmdzKSwgZW52aXJvbm1lbnQsIHRhcmdldF9ob3N0PXNlbGYuX3RhcmdldF9ob3N0KQogICAgICAg
ICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5zdGFydCgpCiAKICAgICBkZWYgX3J1bl9wb3N0X3N0YXJ0
X3Rhc2tzKHNlbGYpOgpAQCAtMzg4LDEwICszODksMTAgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgc2VsZi5fcHJvZmlsZXIucHJvZmlsZV9hZnRlcl9leGl0KCkKIAog
ICAgICAgICBpZiBzZWxmLl9kcml2ZXJfdGVtcGRpcjoKLSAgICAgICAgICAgIHNlbGYuX3BvcnQu
X2ZpbGVzeXN0ZW0ucm10cmVlKHN0cihzZWxmLl9kcml2ZXJfdGVtcGRpcikpCisgICAgICAgICAg
ICBzZWxmLl90YXJnZXRfaG9zdC5maWxlc3lzdGVtLnJtdHJlZShzdHIoc2VsZi5fZHJpdmVyX3Rl
bXBkaXIpKQogICAgICAgICAgICAgc2VsZi5fZHJpdmVyX3RlbXBkaXIgPSBOb25lCiAgICAgICAg
IGlmIHNlbGYuX2RyaXZlcl91c2VyX2NhY2hlX2RpcmVjdG9yeToKLSAgICAgICAgICAgIHNlbGYu
X3BvcnQuX2ZpbGVzeXN0ZW0ucm10cmVlKHNlbGYuX2RyaXZlcl91c2VyX2NhY2hlX2RpcmVjdG9y
eSkKKyAgICAgICAgICAgIHNlbGYuX3RhcmdldF9ob3N0LmZpbGVzeXN0ZW0ucm10cmVlKHNlbGYu
X2RyaXZlcl91c2VyX2NhY2hlX2RpcmVjdG9yeSkKICAgICAgICAgICAgIHNlbGYuX2RyaXZlcl91
c2VyX2NhY2hlX2RpcmVjdG9yeSA9IE5vbmUKIAogICAgIGRlZiBjbWRfbGluZShzZWxmLCBwaXhl
bF90ZXN0cywgcGVyX3Rlc3RfYXJncyk6CkBAIC00MzIsNyArNDMzLDcgQEAgY2xhc3MgRHJpdmVy
KG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCArPSBlcnJfbGluZQog
ICAgICAgICAgICAgX2xvZy5kZWJ1ZyhlcnJfbGluZSkKICAgICAgICAgICAgIGlmIHNlbGYuX3Bv
cnQuZ2V0X29wdGlvbigic2FtcGxlX29uX3RpbWVvdXQiKToKLSAgICAgICAgICAgICAgICBzZWxm
Ll9wb3J0LnNhbXBsZV9wcm9jZXNzKGNoaWxkX3Byb2Nlc3NfbmFtZSwgY2hpbGRfcHJvY2Vzc19w
aWQpCisgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5zYW1wbGVfcHJvY2VzcyhjaGlsZF9wcm9j
ZXNzX25hbWUsIGNoaWxkX3Byb2Nlc3NfcGlkLCBzZWxmLl90YXJnZXRfaG9zdCkKICAgICAgICAg
aWYgb3V0X2xpbmUgPT0gIkZBSUw6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBub3RpZnlEb25lIHRv
IGJlIGNhbGxlZFxuIjoKICAgICAgICAgICAgIHNlbGYuX2RyaXZlcl90aW1lZF9vdXQgPSBUcnVl
CiAKQEAgLTQ2MSw3ICs0NjIsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgICAg
IF9sb2cuZGVidWcoJyVzIGlzIHVucmVzcG9uc2l2ZSwgcGlkID0gJXMnICUgKGNoaWxkX3Byb2Nl
c3NfbmFtZSwgc3RyKGNoaWxkX3Byb2Nlc3NfcGlkKSkpCiAgICAgICAgICAgICBzZWxmLl9kcml2
ZXJfdGltZWRfb3V0ID0gVHJ1ZQogICAgICAgICAgICAgaWYgY2hpbGRfcHJvY2Vzc19waWQ6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5zYW1wbGVfcHJvY2VzcyhjaGlsZF9wcm9jZXNzX25h
bWUsIGNoaWxkX3Byb2Nlc3NfcGlkKQorICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuc2FtcGxl
X3Byb2Nlc3MoY2hpbGRfcHJvY2Vzc19uYW1lLCBjaGlsZF9wcm9jZXNzX3BpZCwgc2VsZi5fdGFy
Z2V0X2hvc3QpCiAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCArPSBlcnJvcl9saW5l
CiAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy53cml0ZSgnI1NBTVBMRSBGSU5JU0hF
RFxuJywgVHJ1ZSkgICMgTXVzdCBiZSBhYmxlIHRvIGlnbm9yZSBhIGJyb2tlbiBwaXBlIGhlcmUs
IHRhcmdldCBwcm9jZXNzIG1heSBhbHJlYWR5IGJlIGNsb3NlZC4KICAgICAgICAgICAgIHJldHVy
biBUcnVlCkBAIC00NzQsOSArNDc1LDkgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAg
IGVsaWYgc2VsZi5pc193ZWJfcGxhdGZvcm1fdGVzdChkcml2ZXJfaW5wdXQudGVzdF9uYW1lKSBv
ciAoc2VsZi5pc19odHRwX3Rlc3QoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkgYW5kIChzZWxmLl9w
b3J0LmdldF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpIG9yIHN5cy5wbGF0Zm9ybSA9PSAi
Y3lnd2luIikpOgogICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYudGVzdF90b191cmkoZHJpdmVy
X2lucHV0LnRlc3RfbmFtZSkKICAgICAgICAgICAgIGNvbW1hbmQgKz0gIictLWFic29sdXRlUGF0
aCciCi0gICAgICAgICAgICBjb21tYW5kICs9IHNlbGYuX3BvcnQuYWJzcGF0aF9mb3JfdGVzdChk
cml2ZXJfaW5wdXQudGVzdF9uYW1lKQorICAgICAgICAgICAgY29tbWFuZCArPSBzZWxmLl9wb3J0
LmFic3BhdGhfZm9yX3Rlc3QoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSwgc2VsZi5fdGFyZ2V0X2hv
c3QpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb21tYW5kID0gc2VsZi5fcG9ydC5hYnNw
YXRoX2Zvcl90ZXN0KGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpCisgICAgICAgICAgICBjb21tYW5k
ID0gc2VsZi5fcG9ydC5hYnNwYXRoX2Zvcl90ZXN0KGRyaXZlcl9pbnB1dC50ZXN0X25hbWUsIHNl
bGYuX3RhcmdldF9ob3N0KQogICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdjeWd3aW4n
OgogICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBwYXRoLmN5Z3BhdGgoY29tbWFuZCkKIApJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CShyZXZpc2lvbiAyMTQ0NzQpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CSh3b3JraW5nIGNvcHkpCkBAIC03NiwxMyAr
NzYsMTMgQEAgY2xhc3MgSU9TUG9ydChEYXJ3aW5Qb3J0KToKICAgICAgICAgICAgIHJhaXNlIFJ1
bnRpbWVFcnJvcignRGV2aWNlIGF0IHt9IGNvdWxkIG5vdCBiZSBmb3VuZCcuZm9ybWF0KG51bWJl
cikpCiAgICAgICAgIHJldHVybiBkZXZpY2UKIAotICAgICMgRklYTUU6IFRoaXMgaXMgb25seSBl
eHBvc2VkIHNvIHRoYXQgU2ltdWxhdG9yUHJvY2VzcyBjYW4gdXNlIGl0LgotICAgIGRlZiBkZXZp
Y2VfZm9yX3dvcmtlcl9udW1iZXIoc2VsZiwgbnVtYmVyKToKLSAgICAgICAgaWYgc2VsZi5fcHJp
bnRpbmdfY21kX2xpbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICMgRGV2aWNlcyBh
cmUgdGhlIHRhcmdldCBob3N0CisgICAgZGVmIHRhcmdldF9ob3N0KHNlbGYsIHdvcmtlcl9udW1i
ZXI9Tm9uZSk6CisgICAgICAgIGlmIHNlbGYuX3ByaW50aW5nX2NtZF9saW5lIG9yIHdvcmtlcl9u
dW1iZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmhvc3QKICAgICAgICAgIyBX
aGVuIHVzaW5nIHNpbXVsYXRlZCBkZXZpY2VzLCB0aGlzIG1lYW5zIHdlYmtpdHB5IGlzIG1hbmFn
aW5nIHRoZSBkZXZpY2VzLgogICAgICAgICBpZiBzZWxmLnVzaW5nX211bHRpcGxlX2RldmljZXMo
KToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl90ZXN0aW5nX2RldmljZShudW1iZXIpCisgICAg
ICAgICAgICByZXR1cm4gc2VsZi5fdGVzdGluZ19kZXZpY2Uod29ya2VyX251bWJlcikKICAgICAg
ICAgcmV0dXJuIHNlbGYuX2N1cnJlbnRfZGV2aWNlCiAKICAgICBkZWYgZGVmYXVsdF9iYXNlbGlu
ZV9zZWFyY2hfcGF0aChzZWxmKToKQEAgLTExMCw3ICsxMTAsNyBAQCBjbGFzcyBJT1NQb3J0KERh
cndpblBvcnQpOgogICAgICAgICBzZWxmLl9jcmVhdGVfZGV2aWNlcyhkZXZpY2VfY2xhc3MpCiAK
ICAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuY2hpbGRfcHJvY2Vzc2VzKCkpOgotICAgICAg
ICAgICAgZGV2aWNlID0gc2VsZi5kZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIoaSkKKyAgICAgICAg
ICAgIGRldmljZSA9IHNlbGYudGFyZ2V0X2hvc3QoaSkKICAgICAgICAgICAgIF9sb2cuZGVidWco
J0luc3RhbGxpbmcgdG8ge30nLmZvcm1hdChkZXZpY2UpKQogICAgICAgICAgICAgIyBXaXRob3V0
IHBhc3NpbmcgRFlMRF9MSUJSQVJZX1BBVEgsIGxpYldlYkNvcmVUZXN0U3VwcG9ydCBjYW5ub3Qg
YmUgbG9hZGVkIGFuZCBEUlQvV0tUUiB3aWxsIGNyYXNoIHByZS1sYXVuY2gsCiAgICAgICAgICAg
ICAjIGxlYXZpbmcgYSBjcmFzaCBsb2cgd2hpY2ggd2lsbCBiZSBwaWNrZWQgdXAgaW4gcmVzdWx0
cy4gIE5vIERZTERfRlJBTUVXT1JLX1BBVEggd2lsbCBhbHNvIGNhdXNlIHRoZSBEUlQvV0tUUiB0
bwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5w
eQkocmV2aXNpb24gMjE0NDc0KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZl
cl9wcm9jZXNzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFNlcnZl
clByb2Nlc3Mob2JqZWN0KToKICAgICBpbmRlZmluaXRlbHkuIFRoZSBjbGFzcyBhbHNvIGhhbmRs
ZXMgdHJhbnNwYXJlbnRseSByZXN0YXJ0aW5nIHByb2Nlc3NlcwogICAgIGFzIG5lY2Vzc2FyeSB0
byBrZWVwIGlzc3VpbmcgY29tbWFuZHMuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9y
dF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdHJl
YXRfbm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgd29ya2VyX251bWJlcj1Ob25lKToKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgcG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9u
ZXdsaW5lcz1GYWxzZSwgdHJlYXRfbm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgdGFyZ2V0X2hvc3Q9
Tm9uZSk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0X29iagogICAgICAgICBzZWxmLl9uYW1l
ID0gbmFtZSAgIyBTaG91bGQgYmUgdGhlIGNvbW1hbmQgbmFtZSAoZS5nLiBEdW1wUmVuZGVyVHJl
ZSwgSW1hZ2VEaWZmKQogICAgICAgICBzZWxmLl9jbWQgPSBjbWQKQEAgLTY5LDcgKzY5LDcgQEAg
Y2xhc3MgU2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgICAgICAjIERvbid0IHNldCBpZiB0aGVy
ZSB3aWxsIGJlIGJpbmFyeSBkYXRhIG9yIHRoZSBkYXRhIG11c3QgYmUgQVNDSUkgZW5jb2RlZC4K
ICAgICAgICAgc2VsZi5fdW5pdmVyc2FsX25ld2xpbmVzID0gdW5pdmVyc2FsX25ld2xpbmVzCiAg
ICAgICAgIHNlbGYuX3RyZWF0X25vX2RhdGFfYXNfY3Jhc2ggPSB0cmVhdF9ub19kYXRhX2FzX2Ny
YXNoCi0gICAgICAgIHNlbGYuX2hvc3QgPSBzZWxmLl9wb3J0Lmhvc3QKKyAgICAgICAgc2VsZi5f
dGFyZ2V0X2hvc3QgPSB0YXJnZXRfaG9zdCBvciBwb3J0X29iai5ob3N0CiAgICAgICAgIHNlbGYu
X3BpZCA9IE5vbmUKICAgICAgICAgc2VsZi5fcmVzZXQoKQogCkBAIC0xMTQsMTAgKzExNCwxMCBA
QCBjbGFzcyBTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCIlcyBhbHJlYWR5IHJ1bm5pbmciICUgc2VsZi5fbmFtZSkKICAgICAgICAgc2VsZi5fcmVz
ZXQoKQogICAgICAgICAjIGNsb3NlX2ZkcyBpcyBhIHdvcmthcm91bmQgZm9yIGh0dHA6Ly9idWdz
LnB5dGhvbi5vcmcvaXNzdWUyMzIwCi0gICAgICAgIGNsb3NlX2ZkcyA9IG5vdCBzZWxmLl9ob3N0
LnBsYXRmb3JtLmlzX3dpbigpCi0gICAgICAgIHNlbGYuX3Byb2MgPSBzZWxmLl9ob3N0LmV4ZWN1
dGl2ZS5wb3BlbihzZWxmLl9jbWQsIHN0ZGluPXNlbGYuX2hvc3QuZXhlY3V0aXZlLlBJUEUsCi0g
ICAgICAgICAgICBzdGRvdXQ9c2VsZi5faG9zdC5leGVjdXRpdmUuUElQRSwKLSAgICAgICAgICAg
IHN0ZGVycj1zZWxmLl9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAorICAgICAgICBjbG9zZV9mZHMgPSBu
b3Qgc2VsZi5fdGFyZ2V0X2hvc3QucGxhdGZvcm0uaXNfd2luKCkKKyAgICAgICAgc2VsZi5fcHJv
YyA9IHNlbGYuX3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5wb3BlbihzZWxmLl9jbWQsIHN0ZGluPXNl
bGYuX3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAorICAgICAgICAgICAgc3Rkb3V0PXNlbGYu
X3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAorICAgICAgICAgICAgc3RkZXJyPXNlbGYuX3Rh
cmdldF9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAogICAgICAgICAgICAgY2xvc2VfZmRzPWNsb3NlX2Zk
cywKICAgICAgICAgICAgIGVudj1zZWxmLl9lbnYsCiAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3
bGluZXM9c2VsZi5fdW5pdmVyc2FsX25ld2xpbmVzKQpAQCAtMjE4LDcgKzIxOCw3IEBAIGNsYXNz
IFNlcnZlclByb2Nlc3Mob2JqZWN0KToKICAgICBkZWYgX2hhbmRsZV90aW1lb3V0KHNlbGYpOgog
ICAgICAgICBzZWxmLnRpbWVkX291dCA9IFRydWUKICAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRf
b3B0aW9uKCJzYW1wbGVfb25fdGltZW91dCIpOgotICAgICAgICAgICAgc2VsZi5fcG9ydC5zYW1w
bGVfcHJvY2VzcyhzZWxmLl9uYW1lLCBzZWxmLl9wcm9jLnBpZCkKKyAgICAgICAgICAgIHNlbGYu
X3BvcnQuc2FtcGxlX3Byb2Nlc3Moc2VsZi5fbmFtZSwgc2VsZi5fcHJvYy5waWQsIHNlbGYuX3Rh
cmdldF9ob3N0KQogCiAgICAgZGVmIF9zcGxpdF9zdHJpbmdfYWZ0ZXJfaW5kZXgoc2VsZiwgc3Ry
aW5nLCBpbmRleCk6CiAgICAgICAgIHJldHVybiBzdHJpbmdbOmluZGV4XSwgc3RyaW5nW2luZGV4
Ol0KQEAgLTM3Nyw3ICszNzcsNyBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAg
ICAgIHNlbGYuc3RvcCgwLjApCiAKICAgICBkZWYgX2tpbGwoc2VsZik6Ci0gICAgICAgIHNlbGYu
X2hvc3QuZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9jLnBpZCkKKyAgICAgICAgc2Vs
Zi5fdGFyZ2V0X2hvc3QuZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9jLnBpZCkKICAg
ICAgICAgaWYgc2VsZi5fcHJvYy5wb2xsKCkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxm
Ll9wcm9jLndhaXQoKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxh
dG9yX3Byb2Nlc3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L3NpbXVsYXRvcl9wcm9jZXNzLnB5CShyZXZpc2lvbiAyMTQ0NzQpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nlc3MucHkJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDEwICs1NCw5IEBAIGNsYXNzIFNpbXVsYXRvclByb2Nlc3MoU2VydmVyUHJvY2Vzcyk6CiAgICAg
ICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKSAgIyBJbiBzZWNvbmRzCiAgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5yZXR1cm5jb2RlCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmos
IG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdHJlYXRfbm9f
ZGF0YV9hc19jcmFzaD1GYWxzZSwgd29ya2VyX251bWJlcj1Ob25lKToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgcG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5l
cz1GYWxzZSwgdHJlYXRfbm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgdGFyZ2V0X2hvc3Q9Tm9uZSk6
CiAgICAgICAgIHNlbGYuX2J1bmRsZV9pZCA9IHBvcnRfb2JqLmFwcF9pZGVudGlmaWVyX2Zyb21f
YnVuZGxlKGNtZFswXSkKLSAgICAgICAgc2VsZi5fZGV2aWNlID0gcG9ydF9vYmouZGV2aWNlX2Zv
cl93b3JrZXJfbnVtYmVyKHdvcmtlcl9udW1iZXIpCi0gICAgICAgIGVudlsnSVBDX0lERU5USUZJ
RVInXSA9IHNlbGYuX2J1bmRsZV9pZCArICctJyArIHNlbGYuX2RldmljZS51ZGlkCisgICAgICAg
IGVudlsnSVBDX0lERU5USUZJRVInXSA9IHNlbGYuX2J1bmRsZV9pZCArICctJyArIHRhcmdldF9o
b3N0LnVkaWQgICMgVGhlIHRhcmdldF9ob3N0IHNob3VsZCBiZSBhIGRldmljZS4KIAogICAgICAg
ICAjIFRoaXMgbG9jYXRpb24gbWF0Y2hlcyB0aGUgbG9jYXRpb24gdXNlZCBieSBXZWJLaXRUZXN0
UnVubmVyIGFuZCBEdW1wUmVuZGVyVHJlZQogICAgICAgICAjIGZvciB0aGUgb3RoZXIgc2lkZSBv
ZiB0aGVzZSBmaWZvcy4KQEAgLTY2LDcgKzY1LDcgQEAgY2xhc3MgU2ltdWxhdG9yUHJvY2VzcyhT
ZXJ2ZXJQcm9jZXNzKToKICAgICAgICAgc2VsZi5fb3V0X3BhdGggPSBmaWxlX2xvY2F0aW9uICsg
J19PVVQnCiAgICAgICAgIHNlbGYuX2Vycm9yX3BhdGggPSBmaWxlX2xvY2F0aW9uICsgJ19FUlJP
UicKIAotICAgICAgICBzdXBlcihTaW11bGF0b3JQcm9jZXNzLCBzZWxmKS5fX2luaXRfXyhwb3J0
X29iaiwgbmFtZSwgY21kLCBlbnYsIHVuaXZlcnNhbF9uZXdsaW5lcywgdHJlYXRfbm9fZGF0YV9h
c19jcmFzaCkKKyAgICAgICAgc3VwZXIoU2ltdWxhdG9yUHJvY2Vzcywgc2VsZikuX19pbml0X18o
cG9ydF9vYmosIG5hbWUsIGNtZCwgZW52LCB1bml2ZXJzYWxfbmV3bGluZXMsIHRyZWF0X25vX2Rh
dGFfYXNfY3Jhc2gsIHRhcmdldF9ob3N0KQogCiAgICAgZGVmIF9yZXNldChzZWxmKToKICAgICAg
ICAgc3VwZXIoU2ltdWxhdG9yUHJvY2Vzcywgc2VsZikuX3Jlc2V0KCkKQEAgLTEwMSw3ICsxMDAs
NyBAQCBjbGFzcyBTaW11bGF0b3JQcm9jZXNzKFNlcnZlclByb2Nlc3MpOgogICAgICAgICBzdGRv
dXQgPSBvcy5mZG9wZW4ob3Mub3BlbihzZWxmLl9vdXRfcGF0aCwgb3MuT19SRE9OTFkgfCBvcy5P
X05PTkJMT0NLKSwgJ3JiJykKICAgICAgICAgc3RkZXJyID0gb3MuZmRvcGVuKG9zLm9wZW4oc2Vs
Zi5fZXJyb3JfcGF0aCwgb3MuT19SRE9OTFkgfCBvcy5PX05PTkJMT0NLKSwgJ3JiJykKIAotICAg
ICAgICBzZWxmLl9waWQgPSBzZWxmLl9kZXZpY2UubGF1bmNoX2FwcChzZWxmLl9idW5kbGVfaWQs
IHNlbGYuX2NtZFsxOl0sIGVudj1zZWxmLl9lbnYpCisgICAgICAgIHNlbGYuX3BpZCA9IHNlbGYu
X3RhcmdldF9ob3N0LmxhdW5jaF9hcHAoc2VsZi5fYnVuZGxlX2lkLCBzZWxmLl9jbWRbMTpdLCBl
bnY9c2VsZi5fZW52KQogCiAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgogICAg
ICAgICAgICAgYXNzZXJ0IHNpZ251bSA9PSBzaWduYWwuU0lHQUxSTQpAQCAtMTE0LDcgKzExMyw3
IEBAIGNsYXNzIFNpbXVsYXRvclByb2Nlc3MoU2VydmVyUHJvY2Vzcyk6CiAgICAgICAgICAgICBz
dGRpbiA9IG9wZW4oc2VsZi5faW5fcGF0aCwgJ3cnLCAwKSAgIyBPcGVuaW5nIHdpdGggbm8gYnVm
ZmVyaW5nLCBsaWtlIHBvcGVuCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICMgV2Ugc2V0
IHNlbGYuX3Byb2MgYXMgX3Jlc2V0KCkgYW5kIF9raWxsKCkgZGVwZW5kIG9uIGl0LgotICAgICAg
ICAgICAgc2VsZi5fcHJvYyA9IFNpbXVsYXRvclByb2Nlc3MuUG9wZW4oc2VsZi5fcGlkLCBzdGRp
biwgc3Rkb3V0LCBzdGRlcnIsIHNlbGYuX2RldmljZSkKKyAgICAgICAgICAgIHNlbGYuX3Byb2Mg
PSBTaW11bGF0b3JQcm9jZXNzLlBvcGVuKHNlbGYuX3BpZCwgc3RkaW4sIHN0ZG91dCwgc3RkZXJy
LCBzZWxmLl90YXJnZXRfaG9zdCkKICAgICAgICAgICAgIGlmIHNlbGYuX3Byb2MucG9sbCgpIGlz
IG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuX3Jlc2V0KCkKICAgICAgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ0FwcCB7fSBjcmFzaGVkIGJlZm9yZSBzdGRpbiBjb3VsZCBiZSBh
dHRhY2hlZCcuZm9ybWF0KG9zLnBhdGguYmFzZW5hbWUoc2VsZi5fY21kWzBdKSkpCkBAIC0xMjMs
MTQgKzEyMiw5IEBAIGNsYXNzIFNpbXVsYXRvclByb2Nlc3MoU2VydmVyUHJvY2Vzcyk6CiAgICAg
ICAgICAgICByYWlzZQogICAgICAgICBzaWduYWwuYWxhcm0oMCkgICMgQ2FuY2VsIGFsYXJtCiAK
LSAgICAgICAgc2VsZi5fcHJvYyA9IFNpbXVsYXRvclByb2Nlc3MuUG9wZW4oc2VsZi5fcGlkLCBz
dGRpbiwgc3Rkb3V0LCBzdGRlcnIsIHNlbGYuX2RldmljZSkKKyAgICAgICAgc2VsZi5fcHJvYyA9
IFNpbXVsYXRvclByb2Nlc3MuUG9wZW4oc2VsZi5fcGlkLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIs
IHNlbGYuX3RhcmdldF9ob3N0KQogCiAgICAgZGVmIHN0b3Aoc2VsZiwgdGltZW91dF9zZWNzPTMu
MCk6CiAgICAgICAgIGlmIHNlbGYuX3Byb2M6Ci0gICAgICAgICAgICBzZWxmLl9kZXZpY2UuZXhl
Y3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9jLnBpZCkKKyAgICAgICAgICAgIHNlbGYuX3Rh
cmdldF9ob3N0LmV4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCiAgICAgICAg
IHJldHVybiBzdXBlcihTaW11bGF0b3JQcm9jZXNzLCBzZWxmKS5zdG9wKHRpbWVvdXRfc2VjcykK
LQotICAgIGRlZiBfa2lsbChzZWxmKToKLSAgICAgICAgc2VsZi5fZGV2aWNlLmV4ZWN1dGl2ZS5r
aWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCi0gICAgICAgIGlmIHNlbGYuX3Byb2MucG9sbCgp
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5fcHJvYy53YWl0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305778</attachid>
            <date>2017-03-29 13:30:32 -0700</date>
            <delta_ts>2017-03-30 15:48:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170186-20170329133031.patch</filename>
            <type>text/plain</type>
            <size>26404</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxNDU1NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY1IEBACisyMDE3LTAzLTI5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogQWRkIHRhcmdldCBob3N0IGNvbmNlcHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDE4NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzEzMDE3OTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkaW5nIHRoZSBpZGVhIG9mIGEgdGFyZ2V0IGhvc3QuIFRhcmdl
dCBob3N0cyBhcmUgb2JqZWN0cyBjb25mb3JtaW5nIHRvIHRoZQorICAgICAgICBzdHJ1Y3R1cmUg
b2YgdGhlIFN5c3RlbUhvc3Qgb2JqZWN0IGluIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9zeXN0ZW1ob3N0LnB5CisgICAgICAgIFRhcmdldCBob3N0cyBhcmUgdGhlIGhvc3RzIGFzc29j
aWF0ZWQgd2l0aCBhIHdvcmtlciBwcm9jZXNzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHk6CisgICAgICAgIChGaWxlU3lzdGVtLm1hcF9i
YXNlX2hvc3RfcGF0aCk6IENvbnZlcnQgYSBwYXRoIGZyb20gYW4gYWJzb2x1dGUgcGF0aCBvbiB0
aGUgYmFzZQorICAgICAgICBob3N0IHRvIGFuIGFic29sdXRlIHBhdGggb24gdGhpcyBob3N0Lgor
ICAgICAgICAoRmlsZVN5c3RlbS5tb3ZlX3RvX2Jhc2VfaG9zdCk6IE1vdmUgZmlsZSBmcm9tIHRo
aXMgaG9zdCB0byB0aGUgYmFzZSBob3N0LgorICAgICAgICAoRmlsZVN5c3RlbS5tb3ZlX2Zyb21f
YmFzZV9ob3N0KTogTW92ZSBmaWxlIGZyb20gdGhlIGJhc2UgaG9zdCB0byB0aGlzIGhvc3QuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5w
eToKKyAgICAgICAgKE1vY2tGaWxlU3lzdGVtLm1hcF9iYXNlX2hvc3RfcGF0aCk6IENvbnZlcnQg
YSBwYXRoIGZyb20gYW4gYWJzb2x1dGUgcGF0aCBvbiB0aGUgYmFzZQorICAgICAgICBob3N0IHRv
IGFuIGFic29sdXRlIHBhdGggb24gdGhpcyBob3N0LgorICAgICAgICAoTW9ja0ZpbGVTeXN0ZW0u
bW92ZV90b19iYXNlX2hvc3QpOiBNb3ZlIGZpbGUgZnJvbSB0aGlzIGhvc3QgdG8gdGhlIGJhc2Ug
aG9zdC4KKyAgICAgICAgKE1vY2tGaWxlU3lzdGVtLm1vdmVfZnJvbV9iYXNlX2hvc3QpOiBNb3Zl
IGZpbGUgZnJvbSB0aGUgYmFzZSBob3N0IHRvIHRoaXMgaG9zdC4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQudGFyZ2V0X2hvc3QpOiBSZXR1
cm4gaG9zdCBkZXRlcm1pbmVkIGJ5IHdvcmtlciBudW1iZXIuCisgICAgICAgIChQb3J0LmFic3Bh
dGhfZm9yX3Rlc3QpOiBBY2NlcHQgb3B0aW9uYWwgdGFyZ2V0X2hvc3QgYXJndW1lbnQgdG8gcmV0
dXJuIGxvY2F0aW9uCisgICAgICAgIG9mIHRlc3Qgb24gYSB0YXJnZXQgaG9zdC4KKyAgICAgICAg
KFBvcnQuX2RyaXZlcl90ZW1wZGlyKTogQWNjZXB0IG9wdGlvbmFsIHRhcmdldF9ob3N0IGFyZ3Vt
ZW50IHRvIHJldHVybiBhIHRlbXBvcmFyeQorICAgICAgICBkaXJlY3Rvcnkgb24gYSB0YXJnZXQg
aG9zdC4KKyAgICAgICAgKFBvcnQuc2FtcGxlX3Byb2Nlc3MpOiBBY2NlcHQgb3B0aW9uYWwgdGFy
Z2V0X2hvc3QgYXJndW1lbnQgdG8gc2FtcGxlIHByb2Nlc3Mgb24KKyAgICAgICAgYSB0YXJnZXQg
aG9zdC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5OgorICAgICAg
ICAoRGFyd2luUG9ydC5zYW1wbGVfcHJvY2Vzcyk6IFJ1biBzYW1wbGUgcHJvY2VzcyBvbiB0YXJn
ZXQgaG9zdC4KKyAgICAgICAgKERhcndpblBvcnQuc2FtcGxlX2ZpbGVfcGF0aCk6IEFjY2VwdCBk
aXJlY3RvcnkgZm9yIGZpbGUuCisgICAgICAgIChEYXJ3aW5Qb3J0LnNwaW5kdW1wX2ZpbGVfcGF0
aCk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW5fdGVzdGNh
c2UucHk6CisgICAgICAgIChEYXJ3aW5UZXN0LnRlc3Rfc3BpbmR1bXApOiBDaGVjayBmaWxlIG1v
dmVtZW50LgorICAgICAgICAoRGFyd2luVGVzdC50ZXN0X3NhbXBsZV9wcm9jZXNzKTogRGl0dG8u
CisgICAgICAgIChEYXJ3aW5UZXN0LnRlc3Rfc2FtcGxlX3Byb2Nlc3NfZXhjZXB0aW9uKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5OgorICAgICAgICAoRHJpdmVy
Ll9faW5pdF9fKTogQWRkIGFuZCBzZXQgc2VsZi5fdGFyZ2V0X2hvc3QgdmFyaWFibGUuCisgICAg
ICAgIChEcml2ZXIuX3N0YXJ0KTogUGFzcyB0YXJnZXQgaG9zdCB0byBfZHJpdmVyX3RlbXBkaXIo
KS4KKyAgICAgICAgKERyaXZlci5zdG9wKTogQ2FsbCB0aGUgdGFyZ2V0IGhvc3QncyBybXRyZWUu
CisgICAgICAgIChEcml2ZXIuX2NoZWNrX2Zvcl9kcml2ZXJfdGltZW91dCk6IFBhc3MgdGFyZ2V0
IGhvc3QgdG8gc2FtcGxlX3Byb2Nlc3MuCisgICAgICAgIChEcml2ZXIuX2NoZWNrX2Zvcl9kcml2
ZXJfY3Jhc2hfb3JfdW5yZXNwb25zaXZlbmVzcyk6IERpdHRvLgorICAgICAgICAoRHJpdmVyLl9j
b21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KTogUGFzcyB0YXJnZXQgaG9zdCB0byBhYnNwYXRoX2Zv
cl90ZXN0IGFuZCBtYXAKKyAgICAgICAgbGF5b3V0IHRlc3QgZGlyZWN0b3J5IHRvIHRhcmdldCBo
b3N0LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHk6CisgICAgICAgIChJ
T1NQb3J0KToKKyAgICAgICAgKElPU1BvcnQudGFyZ2V0X2hvc3QpOiBSZXBsYWNlZCBkZXZpY2Vf
Zm9yX3dvcmtlcl9udW1iZXIuCisgICAgICAgIChJT1NQb3J0LnNldHVwX3Rlc3RfcnVuKTogUmVw
bGFjZSBkZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIgd2l0aCB0YXJnZXRfaG9zdC4KKyAgICAgICAg
KElPU1BvcnQuZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyKTogUmVwbGFjZWQgd2l0aCB0YXJnZXRf
aG9zdC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3MucHk6
CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLl9faW5pdF9fKTogQWNjZXB0IHRhcmdldF9ob3N0IGlu
c3RlYWQgb2Ygd29ya2VyX251bWJlci4KKyAgICAgICAgKFNlcnZlclByb2Nlc3MuX3N0YXJ0KTog
UmVwbGFjZSBfaG9zdCB3aXRoIF90YXJnZXRfaG9zdC4KKyAgICAgICAgKFNlcnZlclByb2Nlc3Mu
X2hhbmRsZV90aW1lb3V0KTogRGl0dG8uCisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLl9raWxsKTog
RGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNz
LnB5OgorICAgICAgICAoU2ltdWxhdG9yUHJvY2Vzcy5fX2luaXRfXyk6IEFjY2VwdCB0YXJnZXRf
aG9zdCBpbnN0ZWFkIG9mIHdvcmtlcl9udW1iZXIuCisgICAgICAgIChTaW11bGF0b3JQcm9jZXNz
Ll9zdGFydCk6IFJlcGxhY2UgX2RldmljZSB3aXRoIF90YXJnZXRfaG9zdC4KKyAgICAgICAgKFNp
bXVsYXRvclByb2Nlc3Muc3RvcCk6IERpdHRvLgorICAgICAgICAoU2ltdWxhdG9yUHJvY2Vzcy5f
a2lsbCk6IERlbGV0ZWQuCisKIDIwMTctMDMtMjkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKICAgICAgICAgTGlua3Mgd2l0aCBlbXB0eSBocmVmcyBzaG91bGQgbm90
IGJlIGRyYWcgc291cmNlcwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL2ZpbGVzeXN0ZW0ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkJKHJldmlzaW9uIDIxNDU0NykKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zMTAsMyArMzEwLDE4IEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKIAogICAgIGRl
ZiBjb21wYXJlKHNlbGYsIHBhdGgxLCBwYXRoMik6CiAgICAgICAgIHJldHVybiBmaWxlY21wLmNt
cChwYXRoMSwgcGF0aDIpCisKKyAgICBkZWYgbWFwX2Jhc2VfaG9zdF9wYXRoKHNlbGYsIHBhdGgp
OgorICAgICAgICAiIiJSZXR1cm5zIGEgcGF0aCBmcm9tIHRoZSBiYXNlIGhvc3QgbG9jYWxpemVk
IGZvciB0aGlzIGhvc3QuICBCeSBkZWZhdWx0LAorICAgICAgICB0aGlzIGhvc3QgYXNzdW1lcyBp
dCBpcyB0aGUgYmFzZSBob3N0IGFuZCBtYXBzIHRoZSBwYXRoIHRvIGl0c2VsZiIiIgorICAgICAg
ICByZXR1cm4gcGF0aAorCisgICAgZGVmIG1vdmVfdG9fYmFzZV9ob3N0KHNlbGYsIHNvdXJjZSwg
ZGVzdGluYXRpb24pOgorICAgICAgICAiIiJNb3ZlcyBhIGZpbGUgZnJvbSB0aGlzIGhvc3QgdG8g
dGhlIGJhc2UgaG9zdC4gIEJlIGRlZmF1bHQsIHRoaXMgaG9zdAorICAgICAgICBhc3N1bWVzIGl0
IGlzIHRoZSBiYXNlIGhvc3QgYW5kIHdpbGwganVzdCBleGVjdXRlIGEgbW92ZS4iIiIKKyAgICAg
ICAgc2VsZi5tb3ZlKHNvdXJjZSwgZGVzdGluYXRpb24pCisKKyAgICBkZWYgbW92ZV9mcm9tX2Jh
c2VfaG9zdChzZWxmLCBzb3VyY2UsIGRlc3RpbmF0aW9uKToKKyAgICAgICAgIiIiTW92ZXMgYSBm
aWxlIGZyb20gdGhlIGJhc2UgaG9zdCB0byB0aGlzIGhvc3QuICBCZSBkZWZhdWx0LCB0aGlzIGhv
c3QKKyAgICAgICAgYXNzdW1lcyBpdCBpcyB0aGUgYmFzZSBob3N0IGFuZCB3aWxsIGp1c3QgZXhl
Y3V0ZSBhIG1vdmUuIiIiCisgICAgICAgIHNlbGYubW92ZShzb3VyY2UsIGRlc3RpbmF0aW9uKQpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9j
ay5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
ZmlsZXN5c3RlbV9tb2NrLnB5CShyZXZpc2lvbiAyMTQ1NDcpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC00MjAsNiArNDIwLDE1IEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgZGVm
IGNvbXBhcmUoc2VsZiwgcGF0aDEsIHBhdGgyKToKICAgICAgICAgcmV0dXJuIHNlbGYucmVhZF9i
aW5hcnlfZmlsZShwYXRoMSkgPT0gc2VsZi5yZWFkX2JpbmFyeV9maWxlKHBhdGgyKQogCisgICAg
ZGVmIG1hcF9iYXNlX2hvc3RfcGF0aChzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIHBhdGgK
KworICAgIGRlZiBtb3ZlX3RvX2Jhc2VfaG9zdChzZWxmLCBzb3VyY2UsIGRlc3RpbmF0aW9uKToK
KyAgICAgICAgc2VsZi5tb3ZlKHNvdXJjZSwgZGVzdGluYXRpb24pCisKKyAgICBkZWYgbW92ZV9m
cm9tX2Jhc2VfaG9zdChzZWxmLCBzb3VyY2UsIGRlc3RpbmF0aW9uKToKKyAgICAgICAgc2VsZi5t
b3ZlKHNvdXJjZSwgZGVzdGluYXRpb24pCisKIAogY2xhc3MgV3JpdGFibGVCaW5hcnlGaWxlT2Jq
ZWN0KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzLCBwYXRoKToKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CShyZXZpc2lvbiAyMTQ1NDcpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0
Myw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgc2VsZi5fbGF5b3V0X3Rlc3RzX2Rp
ciA9IGhhc2F0dHIob3B0aW9ucywgJ2xheW91dF90ZXN0c19kaXInKSBhbmQgb3B0aW9ucy5sYXlv
dXRfdGVzdHNfZGlyIGFuZCBzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgob3B0aW9ucy5sYXlvdXRf
dGVzdHNfZGlyKQogICAgICAgICBzZWxmLl93M2NfcmVzb3VyY2VfZmlsZXMgPSBOb25lCiAKKyAg
ICBkZWYgdGFyZ2V0X2hvc3Qoc2VsZiwgd29ya2VyX251bWJlcj1Ob25lKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuaG9zdAorCiAgICAgZGVmIGFyY2hpdGVjdHVyZShzZWxmKToKICAgICAgICAgcmV0
dXJuIHNlbGYuZ2V0X29wdGlvbignYXJjaGl0ZWN0dXJlJykKIApAQCAtODAzLDEwICs4MDYsMTEg
QEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuaG9zdC5maWxl
c3lzdGVtLmFic3BhdGgoZmlsZW5hbWUpCiAKICAgICBAbWVtb2l6ZWQKLSAgICBkZWYgYWJzcGF0
aF9mb3JfdGVzdChzZWxmLCB0ZXN0X25hbWUpOgorICAgIGRlZiBhYnNwYXRoX2Zvcl90ZXN0KHNl
bGYsIHRlc3RfbmFtZSwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybnMgdGhl
IGZ1bGwgcGF0aCB0byB0aGUgZmlsZSBmb3IgYSBnaXZlbiB0ZXN0IG5hbWUuIFRoaXMgaXMgdGhl
Ci0gICAgICAgIGludmVyc2Ugb2YgcmVsYXRpdmVfdGVzdF9maWxlbmFtZSgpLiIiIgotICAgICAg
ICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCB0
ZXN0X25hbWUpCisgICAgICAgIGludmVyc2Ugb2YgcmVsYXRpdmVfdGVzdF9maWxlbmFtZSgpIGlm
IG5vIHRhcmdldF9ob3N0IGlzIHNwZWNpZmllZC4iIiIKKyAgICAgICAgaG9zdCA9IHRhcmdldF9o
b3N0IG9yIHNlbGYuaG9zdAorICAgICAgICByZXR1cm4gaG9zdC5maWxlc3lzdGVtLmpvaW4oaG9z
dC5maWxlc3lzdGVtLm1hcF9iYXNlX2hvc3RfcGF0aChzZWxmLmxheW91dF90ZXN0c19kaXIoKSks
IHRlc3RfbmFtZSkKIAogICAgIGRlZiBqc2NfcmVzdWx0c19kaXJlY3Rvcnkoc2VsZik6CiAgICAg
ICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCkKQEAgLTEyNzEsOCArMTI3NSw5IEBAIGNsYXNz
IFBvcnQob2JqZWN0KToKICAgICAgICAgICAgIGxvY2FsX2RyaXZlcl9wYXRoID0gYmFzZSArICIu
ZXhlIgogICAgICAgICByZXR1cm4gbG9jYWxfZHJpdmVyX3BhdGgKIAotICAgIGRlZiBfZHJpdmVy
X3RlbXBkaXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLm1rZHRlbXAo
cHJlZml4PSclcy0nICUgc2VsZi5kcml2ZXJfbmFtZSgpKQorICAgIGRlZiBfZHJpdmVyX3RlbXBk
aXIoc2VsZiwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CisgICAgICAgIGhvc3QgPSB0YXJnZXRfaG9zdCBv
ciBzZWxmLmhvc3QKKyAgICAgICAgcmV0dXJuIGhvc3QuZmlsZXN5c3RlbS5ta2R0ZW1wKHByZWZp
eD0ne31zLScuZm9ybWF0KHNlbGYuZHJpdmVyX25hbWUoKSkpCiAKICAgICBkZWYgX3BhdGhfdG9f
dXNlcl9jYWNoZV9kaXJlY3Rvcnkoc2VsZiwgc3VmZml4PU5vbmUpOgogICAgICAgICByZXR1cm4g
Tm9uZQpAQCAtMTM0Myw3ICsxMzQ4LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgIGRlZiBs
b29rX2Zvcl9uZXdfc2FtcGxlcyhzZWxmLCB1bnJlc3BvbnNpdmVfcHJvY2Vzc2VzLCBzdGFydF90
aW1lKToKICAgICAgICAgcGFzcwogCi0gICAgZGVmIHNhbXBsZV9wcm9jZXNzKHNlbGYsIG5hbWUs
IHBpZCk6CisgICAgZGVmIHNhbXBsZV9wcm9jZXNzKHNlbGYsIG5hbWUsIHBpZCwgdGFyZ2V0X2hv
c3Q9Tm9uZSk6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBmaW5kX3N5c3RlbV9waWQoc2VsZiwg
bmFtZSwgcGlkKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW4ucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5weQkocmV2
aXNpb24gMjE0NTQ3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5weQko
d29ya2luZyBjb3B5KQpAQCAtMTIyLDggKzEyMiwxMCBAQCBjbGFzcyBEYXJ3aW5Qb3J0KEFwcGxl
UG9ydCk6CiAgICAgICAgIGFsbF9jcmFzaF9sb2cgPSBzZWxmLl9sb29rX2Zvcl9hbGxfY3Jhc2hf
bG9nc19pbl9sb2dfZGlyKHN0YXJ0X3RpbWUpCiAgICAgICAgIHJldHVybiBzZWxmLl9tZXJnZV9j
cmFzaF9sb2dzKGNyYXNoX2xvZ3MsIGFsbF9jcmFzaF9sb2csIGNyYXNoZWRfcHJvY2Vzc2VzKQog
Ci0gICAgZGVmIHNhbXBsZV9wcm9jZXNzKHNlbGYsIG5hbWUsIHBpZCk6Ci0gICAgICAgIGV4aXRf
c3RhdHVzID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsKKyAgICBkZWYgc2FtcGxlX3By
b2Nlc3Moc2VsZiwgbmFtZSwgcGlkLCB0YXJnZXRfaG9zdD1Ob25lKToKKyAgICAgICAgaG9zdCA9
IHRhcmdldF9ob3N0IG9yIHNlbGYuaG9zdAorICAgICAgICB0ZW1wZGlyID0gaG9zdC5maWxlc3lz
dGVtLm1rZHRlbXAoKQorICAgICAgICBleGl0X3N0YXR1cyA9IGhvc3QuZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKFsKICAgICAgICAgICAgICIvdXNyL2Jpbi9zdWRvIiwKICAgICAgICAgICAgICItbiIs
CiAgICAgICAgICAgICAiL3Vzci9zYmluL3NwaW5kdW1wIiwKQEAgLTEzMSwyNiArMTMzLDMxIEBA
IGNsYXNzIERhcndpblBvcnQoQXBwbGVQb3J0KToKICAgICAgICAgICAgIDEwLAogICAgICAgICAg
ICAgMTAsCiAgICAgICAgICAgICAiLWZpbGUiLAotICAgICAgICAgICAgc2VsZi5zcGluZHVtcF9m
aWxlX3BhdGgobmFtZSwgcGlkKSwKKyAgICAgICAgICAgIHNlbGYuc3BpbmR1bXBfZmlsZV9wYXRo
KG5hbWUsIHBpZCwgc3RyKHRlbXBkaXIpKSwKICAgICAgICAgXSwgcmV0dXJuX2V4aXRfY29kZT1U
cnVlKQogICAgICAgICBpZiBleGl0X3N0YXR1czoKICAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWworICAgICAgICAgICAgICAgIGhv
c3QuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsKICAgICAgICAgICAgICAgICAgICAgIi91c3IvYmlu
L3NhbXBsZSIsCiAgICAgICAgICAgICAgICAgICAgIHBpZCwKICAgICAgICAgICAgICAgICAgICAg
MTAsCiAgICAgICAgICAgICAgICAgICAgIDEwLAogICAgICAgICAgICAgICAgICAgICAiLWZpbGUi
LAotICAgICAgICAgICAgICAgICAgICBzZWxmLnNhbXBsZV9maWxlX3BhdGgobmFtZSwgcGlkKSwK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5zYW1wbGVfZmlsZV9wYXRoKG5hbWUsIHBpZCwgc3Ry
KHRlbXBkaXIpKSwKICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgIGhvc3QuZmls
ZXN5c3RlbS5tb3ZlX3RvX2Jhc2VfaG9zdChzZWxmLnNhbXBsZV9maWxlX3BhdGgobmFtZSwgcGlk
LCBzdHIodGVtcGRpcikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLnNhbXBsZV9maWxlX3BhdGgobmFtZSwgcGlkLCBzZWxmLnJlc3VsdHNf
ZGlyZWN0b3J5KCkpKQogICAgICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6CiAgICAg
ICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdVbmFibGUgdG8gc2FtcGxlIHByb2Nlc3M6JyArIHN0
cihlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5tb3ZlX3Rv
X2Jhc2VfaG9zdChzZWxmLnNwaW5kdW1wX2ZpbGVfcGF0aChuYW1lLCBwaWQsIHN0cih0ZW1wZGly
KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5z
cGluZHVtcF9maWxlX3BhdGgobmFtZSwgcGlkLCBzZWxmLnJlc3VsdHNfZGlyZWN0b3J5KCkpKQog
Ci0gICAgZGVmIHNhbXBsZV9maWxlX3BhdGgoc2VsZiwgbmFtZSwgcGlkKToKLSAgICAgICAgcmV0
dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLnJlc3VsdHNfZGlyZWN0b3J5KCksICJ7MH0t
ezF9LXNhbXBsZS50eHQiLmZvcm1hdChuYW1lLCBwaWQpKQorICAgIGRlZiBzYW1wbGVfZmlsZV9w
YXRoKHNlbGYsIG5hbWUsIHBpZCwgZGlyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0
ZW0uam9pbihkaXIsICJ7MH0tezF9LXNhbXBsZS50eHQiLmZvcm1hdChuYW1lLCBwaWQpKQogCi0g
ICAgZGVmIHNwaW5kdW1wX2ZpbGVfcGF0aChzZWxmLCBuYW1lLCBwaWQpOgotICAgICAgICByZXR1
cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYucmVzdWx0c19kaXJlY3RvcnkoKSwgInswfS17
MX0tc3BpbmR1bXAudHh0Ii5mb3JtYXQobmFtZSwgcGlkKSkKKyAgICBkZWYgc3BpbmR1bXBfZmls
ZV9wYXRoKHNlbGYsIG5hbWUsIHBpZCwgZGlyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVz
eXN0ZW0uam9pbihkaXIsICJ7MH0tezF9LXNwaW5kdW1wLnR4dCIuZm9ybWF0KG5hbWUsIHBpZCkp
CiAKICAgICBkZWYgbG9va19mb3JfbmV3X3NhbXBsZXMoc2VsZiwgdW5yZXNwb25zaXZlX3Byb2Nl
c3Nlcywgc3RhcnRfdGltZSk6CiAgICAgICAgIHNhbXBsZV9maWxlcyA9IHt9CkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luX3Rlc3RjYXNlLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW5fdGVzdGNhc2UucHkJKHJldmlzaW9u
IDIxNDU0NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW5fdGVzdGNhc2Uu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTkyLDkgKzkyLDExIEBAIGNsYXNzIERhcndpblRlc3QocG9y
dF90ZXN0Y2FzZS5Qb3J0VGVzdEMKICAgICAgICAgICAgIHByaW50IGFyZ3MKIAogICAgICAgICBw
b3J0ID0gc2VsZi5tYWtlX3BvcnQoKQotICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhl
Y3V0aXZlMihydW5fY29tbWFuZF9mbj1sb2dnaW5nX3J1bl9jb21tYW5kKQotICAgICAgICBleHBl
Y3RlZF9zdGRvdXQgPSAiWycvdXNyL2Jpbi9zdWRvJywgJy1uJywgJy91c3Ivc2Jpbi9zcGluZHVt
cCcsIDQyLCAxMCwgMTAsICctZmlsZScsICcvbW9jay1idWlsZC9sYXlvdXQtdGVzdC1yZXN1bHRz
L3Rlc3QtNDItc3BpbmR1bXAudHh0J11cbiIKKyAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0u
ZmlsZXNbJy9fX2ltX3RtcC90bXBfMF8vdGVzdC00Mi1zcGluZHVtcC50eHQnXSA9ICdTcGluZHVt
cCBmaWxlJworICAgICAgICBwb3J0Lmhvc3QuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIocnVu
X2NvbW1hbmRfZm49bG9nZ2luZ19ydW5fY29tbWFuZCkKKyAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0
ID0gIlsnL3Vzci9iaW4vc3VkbycsICctbicsICcvdXNyL3NiaW4vc3BpbmR1bXAnLCA0MiwgMTAs
IDEwLCAnLWZpbGUnLCAnL19faW1fdG1wL3RtcF8wXy90ZXN0LTQyLXNwaW5kdW1wLnR4dCddXG4i
CiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0LnNhbXBs
ZV9wcm9jZXNzLCBhcmdzPVsndGVzdCcsIDQyXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0
ZG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxl
c1snL21vY2stYnVpbGQvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0LTQyLXNwaW5kdW1wLnR4dCdd
LCAnU3BpbmR1bXAgZmlsZScpCiAKICAgICBkZWYgdGVzdF9zYW1wbGVfcHJvY2VzcyhzZWxmKToK
IApAQCAtMTA1LDkgKzEwNywxMSBAQCBjbGFzcyBEYXJ3aW5UZXN0KHBvcnRfdGVzdGNhc2UuUG9y
dFRlc3RDCiAgICAgICAgICAgICByZXR1cm4gMAogCiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2Vf
cG9ydCgpCi0gICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21t
YW5kX2ZuPWxvZ2dpbmdfcnVuX2NvbW1hbmQpCi0gICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJb
Jy91c3IvYmluL3NhbXBsZScsIDQyLCAxMCwgMTAsICctZmlsZScsICcvbW9jay1idWlsZC9sYXlv
dXQtdGVzdC1yZXN1bHRzL3Rlc3QtNDItc2FtcGxlLnR4dCddXG4iCisgICAgICAgIHBvcnQuaG9z
dC5maWxlc3lzdGVtLmZpbGVzWycvX19pbV90bXAvdG1wXzBfL3Rlc3QtNDItc2FtcGxlLnR4dCdd
ID0gJ1NhbXBsZSBmaWxlJworICAgICAgICBwb3J0Lmhvc3QuZXhlY3V0aXZlID0gTW9ja0V4ZWN1
dGl2ZTIocnVuX2NvbW1hbmRfZm49bG9nZ2luZ19ydW5fY29tbWFuZCkKKyAgICAgICAgZXhwZWN0
ZWRfc3Rkb3V0ID0gIlsnL3Vzci9iaW4vc2FtcGxlJywgNDIsIDEwLCAxMCwgJy1maWxlJywgJy9f
X2ltX3RtcC90bXBfMF8vdGVzdC00Mi1zYW1wbGUudHh0J11cbiIKICAgICAgICAgT3V0cHV0Q2Fw
dHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuc2FtcGxlX3Byb2Nlc3MsIGFyZ3M9Wyd0
ZXN0JywgNDJdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBvcnQuaG9zdC5maWxlc3lzdGVtLmZpbGVzWycvbW9jay1idWlsZC9sYXlv
dXQtdGVzdC1yZXN1bHRzL3Rlc3QtNDItc2FtcGxlLnR4dCddLCAnU2FtcGxlIGZpbGUnKQogCiAg
ICAgZGVmIHRlc3Rfc2FtcGxlX3Byb2Nlc3NfZXhjZXB0aW9uKHNlbGYpOgogICAgICAgICBkZWYg
dGhyb3dpbmdfcnVuX2NvbW1hbmQoYXJncyk6CkBAIC0xMTYsNSArMTIwLDUgQEAgY2xhc3MgRGFy
d2luVGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0QwogICAgICAgICAgICAgcmFpc2UgU2NyaXB0
RXJyb3IoIk1PQ0sgc2NyaXB0IGVycm9yIikKIAogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3Bv
cnQoKQotICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihydW5fY29tbWFu
ZF9mbj10aHJvd2luZ19ydW5fY29tbWFuZCkKKyAgICAgICAgcG9ydC5ob3N0LmV4ZWN1dGl2ZSA9
IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPXRocm93aW5nX3J1bl9jb21tYW5kKQogICAg
ICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5zYW1wbGVfcHJv
Y2VzcywgYXJncz1bJ3Rlc3QnLCA0Ml0pCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZHJpdmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9k
cml2ZXIucHkJKHJldmlzaW9uIDIxNDU0NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9kcml2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsNyBAQCBjbGFzcyBEcml2
ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi5fd29y
a2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIKICAgICAgICAgc2VsZi5fbm9fdGltZW91dCA9IG5v
X3RpbWVvdXQKKyAgICAgICAgc2VsZi5fdGFyZ2V0X2hvc3QgPSBwb3J0LnRhcmdldF9ob3N0KHdv
cmtlcl9udW1iZXIpCiAKICAgICAgICAgc2VsZi5fZHJpdmVyX3RlbXBkaXIgPSBOb25lCiAgICAg
ICAgIHNlbGYuX2RyaXZlcl91c2VyX2RpcmVjdG9yeV9zdWZmaXggPSBOb25lCkBAIC0zNTksMTYg
KzM2MCwxNiBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgIyBFYWNoIGRyaXZlciBw
cm9jZXNzIHNob3VsZCBiZSB1c2luZyBpbmRpdmlkdWFsIGRpcmVjdG9yaWVzIHVuZGVyIF9kcml2
ZXJfdGVtcGRpciAod2hpY2ggaXMgZGVsZXRlZCB3aGVuIHN0b3BwaW5nKSwKICAgICAgICAgIyBo
b3dldmVyIHNvbWUgc3Vic3lzdGVtcyBvbiBzb21lIHBsYXRmb3JtcyBjb3VsZCBlbmQgdXAgdXNp
bmcgcHJvY2VzcyBkZWZhdWx0IG9uZXMuCiAgICAgICAgIHNlbGYuX3BvcnQuX2NsZWFyX2dsb2Jh
bF9jYWNoZXNfYW5kX3RlbXBvcmFyeV9maWxlcygpCi0gICAgICAgIHNlbGYuX2RyaXZlcl90ZW1w
ZGlyID0gc2VsZi5fcG9ydC5fZHJpdmVyX3RlbXBkaXIoKQorICAgICAgICBzZWxmLl9kcml2ZXJf
dGVtcGRpciA9IHNlbGYuX3BvcnQuX2RyaXZlcl90ZW1wZGlyKHNlbGYuX3RhcmdldF9ob3N0KQog
ICAgICAgICBzZWxmLl9kcml2ZXJfdXNlcl9kaXJlY3Rvcnlfc3VmZml4ID0gb3MucGF0aC5iYXNl
bmFtZShzdHIoc2VsZi5fZHJpdmVyX3RlbXBkaXIpKQogICAgICAgICB1c2VyX2NhY2hlX2RpcmVj
dG9yeSA9IHNlbGYuX3BvcnQuX3BhdGhfdG9fdXNlcl9jYWNoZV9kaXJlY3Rvcnkoc2VsZi5fZHJp
dmVyX3VzZXJfZGlyZWN0b3J5X3N1ZmZpeCkKICAgICAgICAgaWYgdXNlcl9jYWNoZV9kaXJlY3Rv
cnk6Ci0gICAgICAgICAgICBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0
b3J5KHVzZXJfY2FjaGVfZGlyZWN0b3J5KQorICAgICAgICAgICAgc2VsZi5fdGFyZ2V0X2hvc3Qu
ZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeSh1c2VyX2NhY2hlX2RpcmVjdG9yeSkKICAg
ICAgICAgICAgIHNlbGYuX2RyaXZlcl91c2VyX2NhY2hlX2RpcmVjdG9yeSA9IHVzZXJfY2FjaGVf
ZGlyZWN0b3J5CiAgICAgICAgIGVudmlyb25tZW50ID0gc2VsZi5fc2V0dXBfZW52aXJvbl9mb3Jf
dGVzdCgpCiAgICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gTm9uZQogICAgICAg
ICBzZWxmLl9jcmFzaGVkX3BpZCA9IE5vbmUKLSAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Mg
PSBzZWxmLl9wb3J0Ll90ZXN0X3J1bm5lcl9wcm9jZXNzX2NvbnN0cnVjdG9yKHNlbGYuX3BvcnQs
IHNlbGYuX3NlcnZlcl9uYW1lLCBzZWxmLmNtZF9saW5lKHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9h
cmdzKSwgZW52aXJvbm1lbnQsIHdvcmtlcl9udW1iZXI9c2VsZi5fd29ya2VyX251bWJlcikKKyAg
ICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MgPSBzZWxmLl9wb3J0Ll90ZXN0X3J1bm5lcl9wcm9j
ZXNzX2NvbnN0cnVjdG9yKHNlbGYuX3BvcnQsIHNlbGYuX3NlcnZlcl9uYW1lLCBzZWxmLmNtZF9s
aW5lKHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKSwgZW52aXJvbm1lbnQsIHRhcmdldF9ob3N0
PXNlbGYuX3RhcmdldF9ob3N0KQogICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5zdGFydCgp
CiAKICAgICBkZWYgX3J1bl9wb3N0X3N0YXJ0X3Rhc2tzKHNlbGYpOgpAQCAtMzg4LDEwICszODks
MTAgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fcHJvZmls
ZXIucHJvZmlsZV9hZnRlcl9leGl0KCkKIAogICAgICAgICBpZiBzZWxmLl9kcml2ZXJfdGVtcGRp
cjoKLSAgICAgICAgICAgIHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0ucm10cmVlKHN0cihzZWxmLl9k
cml2ZXJfdGVtcGRpcikpCisgICAgICAgICAgICBzZWxmLl90YXJnZXRfaG9zdC5maWxlc3lzdGVt
LnJtdHJlZShzdHIoc2VsZi5fZHJpdmVyX3RlbXBkaXIpKQogICAgICAgICAgICAgc2VsZi5fZHJp
dmVyX3RlbXBkaXIgPSBOb25lCiAgICAgICAgIGlmIHNlbGYuX2RyaXZlcl91c2VyX2NhY2hlX2Rp
cmVjdG9yeToKLSAgICAgICAgICAgIHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0ucm10cmVlKHNlbGYu
X2RyaXZlcl91c2VyX2NhY2hlX2RpcmVjdG9yeSkKKyAgICAgICAgICAgIHNlbGYuX3RhcmdldF9o
b3N0LmZpbGVzeXN0ZW0ucm10cmVlKHNlbGYuX2RyaXZlcl91c2VyX2NhY2hlX2RpcmVjdG9yeSkK
ICAgICAgICAgICAgIHNlbGYuX2RyaXZlcl91c2VyX2NhY2hlX2RpcmVjdG9yeSA9IE5vbmUKIAog
ICAgIGRlZiBjbWRfbGluZShzZWxmLCBwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJncyk6CkBAIC00
MzIsNyArNDMzLDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLmVy
cm9yX2Zyb21fdGVzdCArPSBlcnJfbGluZQogICAgICAgICAgICAgX2xvZy5kZWJ1ZyhlcnJfbGlu
ZSkKICAgICAgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbigic2FtcGxlX29uX3RpbWVv
dXQiKToKLSAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnNhbXBsZV9wcm9jZXNzKGNoaWxkX3By
b2Nlc3NfbmFtZSwgY2hpbGRfcHJvY2Vzc19waWQpCisgICAgICAgICAgICAgICAgc2VsZi5fcG9y
dC5zYW1wbGVfcHJvY2VzcyhjaGlsZF9wcm9jZXNzX25hbWUsIGNoaWxkX3Byb2Nlc3NfcGlkLCBz
ZWxmLl90YXJnZXRfaG9zdCkKICAgICAgICAgaWYgb3V0X2xpbmUgPT0gIkZBSUw6IFRpbWVkIG91
dCB3YWl0aW5nIGZvciBub3RpZnlEb25lIHRvIGJlIGNhbGxlZFxuIjoKICAgICAgICAgICAgIHNl
bGYuX2RyaXZlcl90aW1lZF9vdXQgPSBUcnVlCiAKQEAgLTQ2MSw3ICs0NjIsNyBAQCBjbGFzcyBE
cml2ZXIob2JqZWN0KToKICAgICAgICAgICAgIF9sb2cuZGVidWcoJyVzIGlzIHVucmVzcG9uc2l2
ZSwgcGlkID0gJXMnICUgKGNoaWxkX3Byb2Nlc3NfbmFtZSwgc3RyKGNoaWxkX3Byb2Nlc3NfcGlk
KSkpCiAgICAgICAgICAgICBzZWxmLl9kcml2ZXJfdGltZWRfb3V0ID0gVHJ1ZQogICAgICAgICAg
ICAgaWYgY2hpbGRfcHJvY2Vzc19waWQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5zYW1w
bGVfcHJvY2VzcyhjaGlsZF9wcm9jZXNzX25hbWUsIGNoaWxkX3Byb2Nlc3NfcGlkKQorICAgICAg
ICAgICAgICAgIHNlbGYuX3BvcnQuc2FtcGxlX3Byb2Nlc3MoY2hpbGRfcHJvY2Vzc19uYW1lLCBj
aGlsZF9wcm9jZXNzX3BpZCwgc2VsZi5fdGFyZ2V0X2hvc3QpCiAgICAgICAgICAgICBzZWxmLmVy
cm9yX2Zyb21fdGVzdCArPSBlcnJvcl9saW5lCiAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJv
Y2Vzcy53cml0ZSgnI1NBTVBMRSBGSU5JU0hFRFxuJywgVHJ1ZSkgICMgTXVzdCBiZSBhYmxlIHRv
IGlnbm9yZSBhIGJyb2tlbiBwaXBlIGhlcmUsIHRhcmdldCBwcm9jZXNzIG1heSBhbHJlYWR5IGJl
IGNsb3NlZC4KICAgICAgICAgICAgIHJldHVybiBUcnVlCkBAIC00NzQsOSArNDc1LDkgQEAgY2xh
c3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgIGVsaWYgc2VsZi5pc193ZWJfcGxhdGZvcm1fdGVz
dChkcml2ZXJfaW5wdXQudGVzdF9uYW1lKSBvciAoc2VsZi5pc19odHRwX3Rlc3QoZHJpdmVyX2lu
cHV0LnRlc3RfbmFtZSkgYW5kIChzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1
bm5lcicpIG9yIHN5cy5wbGF0Zm9ybSA9PSAiY3lnd2luIikpOgogICAgICAgICAgICAgY29tbWFu
ZCA9IHNlbGYudGVzdF90b191cmkoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkKICAgICAgICAgICAg
IGNvbW1hbmQgKz0gIictLWFic29sdXRlUGF0aCciCi0gICAgICAgICAgICBjb21tYW5kICs9IHNl
bGYuX3BvcnQuYWJzcGF0aF9mb3JfdGVzdChkcml2ZXJfaW5wdXQudGVzdF9uYW1lKQorICAgICAg
ICAgICAgY29tbWFuZCArPSBzZWxmLl9wb3J0LmFic3BhdGhfZm9yX3Rlc3QoZHJpdmVyX2lucHV0
LnRlc3RfbmFtZSwgc2VsZi5fdGFyZ2V0X2hvc3QpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBjb21tYW5kID0gc2VsZi5fcG9ydC5hYnNwYXRoX2Zvcl90ZXN0KGRyaXZlcl9pbnB1dC50ZXN0
X25hbWUpCisgICAgICAgICAgICBjb21tYW5kID0gc2VsZi5fcG9ydC5hYnNwYXRoX2Zvcl90ZXN0
KGRyaXZlcl9pbnB1dC50ZXN0X25hbWUsIHNlbGYuX3RhcmdldF9ob3N0KQogICAgICAgICAgICAg
aWYgc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nOgogICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBw
YXRoLmN5Z3BhdGgoY29tbWFuZCkKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2lvcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5
CShyZXZpc2lvbiAyMTQ1NDcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC03NiwxMyArNzYsMTMgQEAgY2xhc3MgSU9TUG9ydChEYXJ3aW5Q
b3J0KToKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRGV2aWNlIGF0IHt9IGNvdWxk
IG5vdCBiZSBmb3VuZCcuZm9ybWF0KG51bWJlcikpCiAgICAgICAgIHJldHVybiBkZXZpY2UKIAot
ICAgICMgRklYTUU6IFRoaXMgaXMgb25seSBleHBvc2VkIHNvIHRoYXQgU2ltdWxhdG9yUHJvY2Vz
cyBjYW4gdXNlIGl0LgotICAgIGRlZiBkZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIoc2VsZiwgbnVt
YmVyKToKLSAgICAgICAgaWYgc2VsZi5fcHJpbnRpbmdfY21kX2xpbmU6Ci0gICAgICAgICAgICBy
ZXR1cm4gTm9uZQorICAgICMgQSBkZXZpY2UgaXMgdGhlIHRhcmdldCBob3N0IGZvciBhIHNwZWNp
ZmljIHdvcmtlciBudW1iZXIuCisgICAgZGVmIHRhcmdldF9ob3N0KHNlbGYsIHdvcmtlcl9udW1i
ZXI9Tm9uZSk6CisgICAgICAgIGlmIHNlbGYuX3ByaW50aW5nX2NtZF9saW5lIG9yIHdvcmtlcl9u
dW1iZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmhvc3QKICAgICAgICAgIyBX
aGVuIHVzaW5nIHNpbXVsYXRlZCBkZXZpY2VzLCB0aGlzIG1lYW5zIHdlYmtpdHB5IGlzIG1hbmFn
aW5nIHRoZSBkZXZpY2VzLgogICAgICAgICBpZiBzZWxmLnVzaW5nX211bHRpcGxlX2RldmljZXMo
KToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl90ZXN0aW5nX2RldmljZShudW1iZXIpCisgICAg
ICAgICAgICByZXR1cm4gc2VsZi5fdGVzdGluZ19kZXZpY2Uod29ya2VyX251bWJlcikKICAgICAg
ICAgcmV0dXJuIHNlbGYuX2N1cnJlbnRfZGV2aWNlCiAKICAgICBkZWYgZGVmYXVsdF9iYXNlbGlu
ZV9zZWFyY2hfcGF0aChzZWxmKToKQEAgLTExMCw3ICsxMTAsNyBAQCBjbGFzcyBJT1NQb3J0KERh
cndpblBvcnQpOgogICAgICAgICBzZWxmLl9jcmVhdGVfZGV2aWNlcyhkZXZpY2VfY2xhc3MpCiAK
ICAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuY2hpbGRfcHJvY2Vzc2VzKCkpOgotICAgICAg
ICAgICAgZGV2aWNlID0gc2VsZi5kZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIoaSkKKyAgICAgICAg
ICAgIGRldmljZSA9IHNlbGYudGFyZ2V0X2hvc3QoaSkKICAgICAgICAgICAgIF9sb2cuZGVidWco
J0luc3RhbGxpbmcgdG8ge30nLmZvcm1hdChkZXZpY2UpKQogICAgICAgICAgICAgIyBXaXRob3V0
IHBhc3NpbmcgRFlMRF9MSUJSQVJZX1BBVEgsIGxpYldlYkNvcmVUZXN0U3VwcG9ydCBjYW5ub3Qg
YmUgbG9hZGVkIGFuZCBEUlQvV0tUUiB3aWxsIGNyYXNoIHByZS1sYXVuY2gsCiAgICAgICAgICAg
ICAjIGxlYXZpbmcgYSBjcmFzaCBsb2cgd2hpY2ggd2lsbCBiZSBwaWNrZWQgdXAgaW4gcmVzdWx0
cy4gIE5vIERZTERfRlJBTUVXT1JLX1BBVEggd2lsbCBhbHNvIGNhdXNlIHRoZSBEUlQvV0tUUiB0
bwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5w
eQkocmV2aXNpb24gMjE0NTQ3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZl
cl9wcm9jZXNzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFNlcnZl
clByb2Nlc3Mob2JqZWN0KToKICAgICBpbmRlZmluaXRlbHkuIFRoZSBjbGFzcyBhbHNvIGhhbmRs
ZXMgdHJhbnNwYXJlbnRseSByZXN0YXJ0aW5nIHByb2Nlc3NlcwogICAgIGFzIG5lY2Vzc2FyeSB0
byBrZWVwIGlzc3VpbmcgY29tbWFuZHMuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9y
dF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdHJl
YXRfbm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgd29ya2VyX251bWJlcj1Ob25lKToKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgcG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9u
ZXdsaW5lcz1GYWxzZSwgdHJlYXRfbm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgdGFyZ2V0X2hvc3Q9
Tm9uZSk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0X29iagogICAgICAgICBzZWxmLl9uYW1l
ID0gbmFtZSAgIyBTaG91bGQgYmUgdGhlIGNvbW1hbmQgbmFtZSAoZS5nLiBEdW1wUmVuZGVyVHJl
ZSwgSW1hZ2VEaWZmKQogICAgICAgICBzZWxmLl9jbWQgPSBjbWQKQEAgLTY5LDcgKzY5LDcgQEAg
Y2xhc3MgU2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgICAgICAjIERvbid0IHNldCBpZiB0aGVy
ZSB3aWxsIGJlIGJpbmFyeSBkYXRhIG9yIHRoZSBkYXRhIG11c3QgYmUgQVNDSUkgZW5jb2RlZC4K
ICAgICAgICAgc2VsZi5fdW5pdmVyc2FsX25ld2xpbmVzID0gdW5pdmVyc2FsX25ld2xpbmVzCiAg
ICAgICAgIHNlbGYuX3RyZWF0X25vX2RhdGFfYXNfY3Jhc2ggPSB0cmVhdF9ub19kYXRhX2FzX2Ny
YXNoCi0gICAgICAgIHNlbGYuX2hvc3QgPSBzZWxmLl9wb3J0Lmhvc3QKKyAgICAgICAgc2VsZi5f
dGFyZ2V0X2hvc3QgPSB0YXJnZXRfaG9zdCBvciBwb3J0X29iai5ob3N0CiAgICAgICAgIHNlbGYu
X3BpZCA9IE5vbmUKICAgICAgICAgc2VsZi5fcmVzZXQoKQogCkBAIC0xMTQsMTAgKzExNCwxMCBA
QCBjbGFzcyBTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCIlcyBhbHJlYWR5IHJ1bm5pbmciICUgc2VsZi5fbmFtZSkKICAgICAgICAgc2VsZi5fcmVz
ZXQoKQogICAgICAgICAjIGNsb3NlX2ZkcyBpcyBhIHdvcmthcm91bmQgZm9yIGh0dHA6Ly9idWdz
LnB5dGhvbi5vcmcvaXNzdWUyMzIwCi0gICAgICAgIGNsb3NlX2ZkcyA9IG5vdCBzZWxmLl9ob3N0
LnBsYXRmb3JtLmlzX3dpbigpCi0gICAgICAgIHNlbGYuX3Byb2MgPSBzZWxmLl9ob3N0LmV4ZWN1
dGl2ZS5wb3BlbihzZWxmLl9jbWQsIHN0ZGluPXNlbGYuX2hvc3QuZXhlY3V0aXZlLlBJUEUsCi0g
ICAgICAgICAgICBzdGRvdXQ9c2VsZi5faG9zdC5leGVjdXRpdmUuUElQRSwKLSAgICAgICAgICAg
IHN0ZGVycj1zZWxmLl9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAorICAgICAgICBjbG9zZV9mZHMgPSBu
b3Qgc2VsZi5fdGFyZ2V0X2hvc3QucGxhdGZvcm0uaXNfd2luKCkKKyAgICAgICAgc2VsZi5fcHJv
YyA9IHNlbGYuX3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5wb3BlbihzZWxmLl9jbWQsIHN0ZGluPXNl
bGYuX3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAorICAgICAgICAgICAgc3Rkb3V0PXNlbGYu
X3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAorICAgICAgICAgICAgc3RkZXJyPXNlbGYuX3Rh
cmdldF9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAogICAgICAgICAgICAgY2xvc2VfZmRzPWNsb3NlX2Zk
cywKICAgICAgICAgICAgIGVudj1zZWxmLl9lbnYsCiAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3
bGluZXM9c2VsZi5fdW5pdmVyc2FsX25ld2xpbmVzKQpAQCAtMjE4LDcgKzIxOCw3IEBAIGNsYXNz
IFNlcnZlclByb2Nlc3Mob2JqZWN0KToKICAgICBkZWYgX2hhbmRsZV90aW1lb3V0KHNlbGYpOgog
ICAgICAgICBzZWxmLnRpbWVkX291dCA9IFRydWUKICAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRf
b3B0aW9uKCJzYW1wbGVfb25fdGltZW91dCIpOgotICAgICAgICAgICAgc2VsZi5fcG9ydC5zYW1w
bGVfcHJvY2VzcyhzZWxmLl9uYW1lLCBzZWxmLl9wcm9jLnBpZCkKKyAgICAgICAgICAgIHNlbGYu
X3BvcnQuc2FtcGxlX3Byb2Nlc3Moc2VsZi5fbmFtZSwgc2VsZi5fcHJvYy5waWQsIHNlbGYuX3Rh
cmdldF9ob3N0KQogCiAgICAgZGVmIF9zcGxpdF9zdHJpbmdfYWZ0ZXJfaW5kZXgoc2VsZiwgc3Ry
aW5nLCBpbmRleCk6CiAgICAgICAgIHJldHVybiBzdHJpbmdbOmluZGV4XSwgc3RyaW5nW2luZGV4
Ol0KQEAgLTM3Nyw3ICszNzcsNyBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAg
ICAgIHNlbGYuc3RvcCgwLjApCiAKICAgICBkZWYgX2tpbGwoc2VsZik6Ci0gICAgICAgIHNlbGYu
X2hvc3QuZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9jLnBpZCkKKyAgICAgICAgc2Vs
Zi5fdGFyZ2V0X2hvc3QuZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9jLnBpZCkKICAg
ICAgICAgaWYgc2VsZi5fcHJvYy5wb2xsKCkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxm
Ll9wcm9jLndhaXQoKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVy
X3Byb2Nlc3NfbW9jay5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvc2VydmVyX3Byb2Nlc3NfbW9jay5weQkocmV2aXNpb24gMjE0NTQ3KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzX21vY2sucHkJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDcgQEAKIAogCiBjbGFzcyBNb2NrU2VydmVyUHJvY2VzcyhvYmplY3QpOgot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaj1Ob25lLCBuYW1lPU5vbmUsIGNtZD1Ob25l
LCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCBsaW5lcz1Ob25lLCBjcmFzaGVk
PUZhbHNlLCB3b3JrZXJfbnVtYmVyPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0
X29iaj1Ob25lLCBuYW1lPU5vbmUsIGNtZD1Ob25lLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xp
bmVzPUZhbHNlLCBsaW5lcz1Ob25lLCBjcmFzaGVkPUZhbHNlLCB0YXJnZXRfaG9zdD1Ob25lKToK
ICAgICAgICAgc2VsZi50aW1lZF9vdXQgPSBGYWxzZQogICAgICAgICBzZWxmLmxpbmVzID0gbGlu
ZXMgb3IgW10KICAgICAgICAgc2VsZi5jcmFzaGVkID0gY3Jhc2hlZApJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5weQkocmV2aXNpb24g
MjE0NTQ3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNz
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMCArNTQsOSBAQCBjbGFzcyBTaW11bGF0b3JQcm9j
ZXNzKFNlcnZlclByb2Nlc3MpOgogICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMSkgICMg
SW4gc2Vjb25kcwogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIHBvcnRfb2JqLCBuYW1lLCBjbWQsIGVudj1Ob25lLCB1bml2ZXJzYWxf
bmV3bGluZXM9RmFsc2UsIHRyZWF0X25vX2RhdGFfYXNfY3Jhc2g9RmFsc2UsIHdvcmtlcl9udW1i
ZXI9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfb2JqLCBuYW1lLCBjbWQsIGVu
dj1Ob25lLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIHRyZWF0X25vX2RhdGFfYXNfY3Jhc2g9
RmFsc2UsIHRhcmdldF9ob3N0PU5vbmUpOgogICAgICAgICBzZWxmLl9idW5kbGVfaWQgPSBwb3J0
X29iai5hcHBfaWRlbnRpZmllcl9mcm9tX2J1bmRsZShjbWRbMF0pCi0gICAgICAgIHNlbGYuX2Rl
dmljZSA9IHBvcnRfb2JqLmRldmljZV9mb3Jfd29ya2VyX251bWJlcih3b3JrZXJfbnVtYmVyKQot
ICAgICAgICBlbnZbJ0lQQ19JREVOVElGSUVSJ10gPSBzZWxmLl9idW5kbGVfaWQgKyAnLScgKyBz
ZWxmLl9kZXZpY2UudWRpZAorICAgICAgICBlbnZbJ0lQQ19JREVOVElGSUVSJ10gPSBzZWxmLl9i
dW5kbGVfaWQgKyAnLScgKyB0YXJnZXRfaG9zdC51ZGlkICAjIFRoZSB0YXJnZXRfaG9zdCBzaG91
bGQgYmUgYSBkZXZpY2UuCiAKICAgICAgICAgIyBUaGlzIGxvY2F0aW9uIG1hdGNoZXMgdGhlIGxv
Y2F0aW9uIHVzZWQgYnkgV2ViS2l0VGVzdFJ1bm5lciBhbmQgRHVtcFJlbmRlclRyZWUKICAgICAg
ICAgIyBmb3IgdGhlIG90aGVyIHNpZGUgb2YgdGhlc2UgZmlmb3MuCkBAIC02Niw3ICs2NSw3IEBA
IGNsYXNzIFNpbXVsYXRvclByb2Nlc3MoU2VydmVyUHJvY2Vzcyk6CiAgICAgICAgIHNlbGYuX291
dF9wYXRoID0gZmlsZV9sb2NhdGlvbiArICdfT1VUJwogICAgICAgICBzZWxmLl9lcnJvcl9wYXRo
ID0gZmlsZV9sb2NhdGlvbiArICdfRVJST1InCiAKLSAgICAgICAgc3VwZXIoU2ltdWxhdG9yUHJv
Y2Vzcywgc2VsZikuX19pbml0X18ocG9ydF9vYmosIG5hbWUsIGNtZCwgZW52LCB1bml2ZXJzYWxf
bmV3bGluZXMsIHRyZWF0X25vX2RhdGFfYXNfY3Jhc2gpCisgICAgICAgIHN1cGVyKFNpbXVsYXRv
clByb2Nlc3MsIHNlbGYpLl9faW5pdF9fKHBvcnRfb2JqLCBuYW1lLCBjbWQsIGVudiwgdW5pdmVy
c2FsX25ld2xpbmVzLCB0cmVhdF9ub19kYXRhX2FzX2NyYXNoLCB0YXJnZXRfaG9zdCkKIAogICAg
IGRlZiBfcmVzZXQoc2VsZik6CiAgICAgICAgIHN1cGVyKFNpbXVsYXRvclByb2Nlc3MsIHNlbGYp
Ll9yZXNldCgpCkBAIC0xMDEsNyArMTAwLDcgQEAgY2xhc3MgU2ltdWxhdG9yUHJvY2VzcyhTZXJ2
ZXJQcm9jZXNzKToKICAgICAgICAgc3Rkb3V0ID0gb3MuZmRvcGVuKG9zLm9wZW4oc2VsZi5fb3V0
X3BhdGgsIG9zLk9fUkRPTkxZIHwgb3MuT19OT05CTE9DSyksICdyYicpCiAgICAgICAgIHN0ZGVy
ciA9IG9zLmZkb3Blbihvcy5vcGVuKHNlbGYuX2Vycm9yX3BhdGgsIG9zLk9fUkRPTkxZIHwgb3Mu
T19OT05CTE9DSyksICdyYicpCiAKLSAgICAgICAgc2VsZi5fcGlkID0gc2VsZi5fZGV2aWNlLmxh
dW5jaF9hcHAoc2VsZi5fYnVuZGxlX2lkLCBzZWxmLl9jbWRbMTpdLCBlbnY9c2VsZi5fZW52KQor
ICAgICAgICBzZWxmLl9waWQgPSBzZWxmLl90YXJnZXRfaG9zdC5sYXVuY2hfYXBwKHNlbGYuX2J1
bmRsZV9pZCwgc2VsZi5fY21kWzE6XSwgZW52PXNlbGYuX2VudikKIAogICAgICAgICBkZWYgaGFu
ZGxlcihzaWdudW0sIGZyYW1lKToKICAgICAgICAgICAgIGFzc2VydCBzaWdudW0gPT0gc2lnbmFs
LlNJR0FMUk0KQEAgLTExNCw3ICsxMTMsNyBAQCBjbGFzcyBTaW11bGF0b3JQcm9jZXNzKFNlcnZl
clByb2Nlc3MpOgogICAgICAgICAgICAgc3RkaW4gPSBvcGVuKHNlbGYuX2luX3BhdGgsICd3Jywg
MCkgICMgT3BlbmluZyB3aXRoIG5vIGJ1ZmZlcmluZywgbGlrZSBwb3BlbgogICAgICAgICBleGNl
cHQ6CiAgICAgICAgICAgICAjIFdlIHNldCBzZWxmLl9wcm9jIGFzIF9yZXNldCgpIGFuZCBfa2ls
bCgpIGRlcGVuZCBvbiBpdC4KLSAgICAgICAgICAgIHNlbGYuX3Byb2MgPSBTaW11bGF0b3JQcm9j
ZXNzLlBvcGVuKHNlbGYuX3BpZCwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyLCBzZWxmLl9kZXZpY2Up
CisgICAgICAgICAgICBzZWxmLl9wcm9jID0gU2ltdWxhdG9yUHJvY2Vzcy5Qb3BlbihzZWxmLl9w
aWQsIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgc2VsZi5fdGFyZ2V0X2hvc3QpCiAgICAgICAgICAg
ICBpZiBzZWxmLl9wcm9jLnBvbGwoKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzZWxm
Ll9yZXNldCgpCiAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdBcHAge30gY3Jhc2hl
ZCBiZWZvcmUgc3RkaW4gY291bGQgYmUgYXR0YWNoZWQnLmZvcm1hdChvcy5wYXRoLmJhc2VuYW1l
KHNlbGYuX2NtZFswXSkpKQpAQCAtMTIzLDE0ICsxMjIsOSBAQCBjbGFzcyBTaW11bGF0b3JQcm9j
ZXNzKFNlcnZlclByb2Nlc3MpOgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgc2lnbmFsLmFs
YXJtKDApICAjIENhbmNlbCBhbGFybQogCi0gICAgICAgIHNlbGYuX3Byb2MgPSBTaW11bGF0b3JQ
cm9jZXNzLlBvcGVuKHNlbGYuX3BpZCwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyLCBzZWxmLl9kZXZp
Y2UpCisgICAgICAgIHNlbGYuX3Byb2MgPSBTaW11bGF0b3JQcm9jZXNzLlBvcGVuKHNlbGYuX3Bp
ZCwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyLCBzZWxmLl90YXJnZXRfaG9zdCkKIAogICAgIGRlZiBz
dG9wKHNlbGYsIHRpbWVvdXRfc2Vjcz0zLjApOgogICAgICAgICBpZiBzZWxmLl9wcm9jOgotICAg
ICAgICAgICAgc2VsZi5fZGV2aWNlLmV4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5w
aWQpCisgICAgICAgICAgICBzZWxmLl90YXJnZXRfaG9zdC5leGVjdXRpdmUua2lsbF9wcm9jZXNz
KHNlbGYuX3Byb2MucGlkKQogICAgICAgICByZXR1cm4gc3VwZXIoU2ltdWxhdG9yUHJvY2Vzcywg
c2VsZikuc3RvcCh0aW1lb3V0X3NlY3MpCi0KLSAgICBkZWYgX2tpbGwoc2VsZik6Ci0gICAgICAg
IHNlbGYuX2RldmljZS5leGVjdXRpdmUua2lsbF9wcm9jZXNzKHNlbGYuX3Byb2MucGlkKQotICAg
ICAgICBpZiBzZWxmLl9wcm9jLnBvbGwoKSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYu
X3Byb2Mud2FpdCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305916</attachid>
            <date>2017-03-30 15:48:33 -0700</date>
            <delta_ts>2017-03-31 10:11:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170186-20170330154832.patch</filename>
            <type>text/plain</type>
            <size>27375</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxNDYzMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY1IEBACisyMDE3LTAzLTMwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogQWRkIHRhcmdldCBob3N0IGNvbmNlcHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDE4NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzEzMDE3OTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkaW5nIHRoZSBpZGVhIG9mIGEgdGFyZ2V0IGhvc3QuIFRhcmdl
dCBob3N0cyBhcmUgb2JqZWN0cyBjb25mb3JtaW5nIHRvIHRoZQorICAgICAgICBzdHJ1Y3R1cmUg
b2YgdGhlIFN5c3RlbUhvc3Qgb2JqZWN0IGluIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9zeXN0ZW1ob3N0LnB5CisgICAgICAgIFRhcmdldCBob3N0cyBhcmUgdGhlIGhvc3RzIGFzc29j
aWF0ZWQgd2l0aCBhIHdvcmtlciBwcm9jZXNzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHk6CisgICAgICAgIChGaWxlU3lzdGVtLm1hcF9i
YXNlX2hvc3RfcGF0aCk6IENvbnZlcnQgYSBwYXRoIGZyb20gYW4gYWJzb2x1dGUgcGF0aCBvbiB0
aGUgYmFzZQorICAgICAgICBob3N0IHRvIGFuIGFic29sdXRlIHBhdGggb24gdGhpcyBob3N0Lgor
ICAgICAgICAoRmlsZVN5c3RlbS5tb3ZlX3RvX2Jhc2VfaG9zdCk6IE1vdmUgZmlsZSBmcm9tIHRo
aXMgaG9zdCB0byB0aGUgYmFzZSBob3N0LgorICAgICAgICAoRmlsZVN5c3RlbS5tb3ZlX2Zyb21f
YmFzZV9ob3N0KTogTW92ZSBmaWxlIGZyb20gdGhlIGJhc2UgaG9zdCB0byB0aGlzIGhvc3QuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5w
eToKKyAgICAgICAgKE1vY2tGaWxlU3lzdGVtLm1hcF9iYXNlX2hvc3RfcGF0aCk6IENvbnZlcnQg
YSBwYXRoIGZyb20gYW4gYWJzb2x1dGUgcGF0aCBvbiB0aGUgYmFzZQorICAgICAgICBob3N0IHRv
IGFuIGFic29sdXRlIHBhdGggb24gdGhpcyBob3N0LgorICAgICAgICAoTW9ja0ZpbGVTeXN0ZW0u
bW92ZV90b19iYXNlX2hvc3QpOiBNb3ZlIGZpbGUgZnJvbSB0aGlzIGhvc3QgdG8gdGhlIGJhc2Ug
aG9zdC4KKyAgICAgICAgKE1vY2tGaWxlU3lzdGVtLm1vdmVfZnJvbV9iYXNlX2hvc3QpOiBNb3Zl
IGZpbGUgZnJvbSB0aGUgYmFzZSBob3N0IHRvIHRoaXMgaG9zdC4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQudGFyZ2V0X2hvc3QpOiBSZXR1
cm4gaG9zdCBkZXRlcm1pbmVkIGJ5IHdvcmtlciBudW1iZXIuCisgICAgICAgIChQb3J0LmFic3Bh
dGhfZm9yX3Rlc3QpOiBBY2NlcHQgb3B0aW9uYWwgdGFyZ2V0X2hvc3QgYXJndW1lbnQgdG8gcmV0
dXJuIGxvY2F0aW9uCisgICAgICAgIG9mIHRlc3Qgb24gYSB0YXJnZXQgaG9zdC4KKyAgICAgICAg
KFBvcnQuX2RyaXZlcl90ZW1wZGlyKTogQWNjZXB0IG9wdGlvbmFsIHRhcmdldF9ob3N0IGFyZ3Vt
ZW50IHRvIHJldHVybiBhIHRlbXBvcmFyeQorICAgICAgICBkaXJlY3Rvcnkgb24gYSB0YXJnZXQg
aG9zdC4KKyAgICAgICAgKFBvcnQuc2FtcGxlX3Byb2Nlc3MpOiBBY2NlcHQgb3B0aW9uYWwgdGFy
Z2V0X2hvc3QgYXJndW1lbnQgdG8gc2FtcGxlIHByb2Nlc3Mgb24KKyAgICAgICAgYSB0YXJnZXQg
aG9zdC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5OgorICAgICAg
ICAoRGFyd2luUG9ydC5zYW1wbGVfcHJvY2Vzcyk6IFJ1biBzYW1wbGUgcHJvY2VzcyBvbiB0YXJn
ZXQgaG9zdC4KKyAgICAgICAgKERhcndpblBvcnQuc2FtcGxlX2ZpbGVfcGF0aCk6IEFjY2VwdCBk
aXJlY3RvcnkgZm9yIGZpbGUuCisgICAgICAgIChEYXJ3aW5Qb3J0LnNwaW5kdW1wX2ZpbGVfcGF0
aCk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW5fdGVzdGNh
c2UucHk6CisgICAgICAgIChEYXJ3aW5UZXN0LnRlc3Rfc3BpbmR1bXApOiBDaGVjayBmaWxlIG1v
dmVtZW50LgorICAgICAgICAoRGFyd2luVGVzdC50ZXN0X3NhbXBsZV9wcm9jZXNzKTogRGl0dG8u
CisgICAgICAgIChEYXJ3aW5UZXN0LnRlc3Rfc2FtcGxlX3Byb2Nlc3NfZXhjZXB0aW9uKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5OgorICAgICAgICAoRHJpdmVy
Ll9faW5pdF9fKTogQWRkIGFuZCBzZXQgc2VsZi5fdGFyZ2V0X2hvc3QgdmFyaWFibGUuCisgICAg
ICAgIChEcml2ZXIuX3N0YXJ0KTogUGFzcyB0YXJnZXQgaG9zdCB0byBfZHJpdmVyX3RlbXBkaXIo
KS4KKyAgICAgICAgKERyaXZlci5zdG9wKTogQ2FsbCB0aGUgdGFyZ2V0IGhvc3QncyBybXRyZWUu
CisgICAgICAgIChEcml2ZXIuX2NoZWNrX2Zvcl9kcml2ZXJfdGltZW91dCk6IFBhc3MgdGFyZ2V0
IGhvc3QgdG8gc2FtcGxlX3Byb2Nlc3MuCisgICAgICAgIChEcml2ZXIuX2NoZWNrX2Zvcl9kcml2
ZXJfY3Jhc2hfb3JfdW5yZXNwb25zaXZlbmVzcyk6IERpdHRvLgorICAgICAgICAoRHJpdmVyLl9j
b21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KTogUGFzcyB0YXJnZXQgaG9zdCB0byBhYnNwYXRoX2Zv
cl90ZXN0IGFuZCBtYXAKKyAgICAgICAgbGF5b3V0IHRlc3QgZGlyZWN0b3J5IHRvIHRhcmdldCBo
b3N0LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHk6CisgICAgICAgIChJ
T1NQb3J0KToKKyAgICAgICAgKElPU1BvcnQudGFyZ2V0X2hvc3QpOiBSZXBsYWNlZCBkZXZpY2Vf
Zm9yX3dvcmtlcl9udW1iZXIuCisgICAgICAgIChJT1NQb3J0LnNldHVwX3Rlc3RfcnVuKTogUmVw
bGFjZSBkZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIgd2l0aCB0YXJnZXRfaG9zdC4KKyAgICAgICAg
KElPU1BvcnQuZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyKTogUmVwbGFjZWQgd2l0aCB0YXJnZXRf
aG9zdC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3MucHk6
CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLl9faW5pdF9fKTogQWNjZXB0IHRhcmdldF9ob3N0IGlu
c3RlYWQgb2Ygd29ya2VyX251bWJlci4KKyAgICAgICAgKFNlcnZlclByb2Nlc3MuX3N0YXJ0KTog
UmVwbGFjZSBfaG9zdCB3aXRoIF90YXJnZXRfaG9zdC4KKyAgICAgICAgKFNlcnZlclByb2Nlc3Mu
X2hhbmRsZV90aW1lb3V0KTogRGl0dG8uCisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLl9raWxsKTog
RGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNz
LnB5OgorICAgICAgICAoU2ltdWxhdG9yUHJvY2Vzcy5fX2luaXRfXyk6IEFjY2VwdCB0YXJnZXRf
aG9zdCBpbnN0ZWFkIG9mIHdvcmtlcl9udW1iZXIuCisgICAgICAgIChTaW11bGF0b3JQcm9jZXNz
Ll9zdGFydCk6IFJlcGxhY2UgX2RldmljZSB3aXRoIF90YXJnZXRfaG9zdC4KKyAgICAgICAgKFNp
bXVsYXRvclByb2Nlc3Muc3RvcCk6IERpdHRvLgorICAgICAgICAoU2ltdWxhdG9yUHJvY2Vzcy5f
a2lsbCk6IERlbGV0ZWQuCisKIDIwMTctMDMtMzAgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgdHZPUyBhbmQgd2F0Y2hPUyBpbiB3ZWJraXRk
aXJzLnBtCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5
c3RlbS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbS5weQkocmV2aXNpb24gMjE0NjMyKQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxMCwz
ICszMTAsMTggQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogCiAgICAgZGVmIGNvbXBhcmUo
c2VsZiwgcGF0aDEsIHBhdGgyKToKICAgICAgICAgcmV0dXJuIGZpbGVjbXAuY21wKHBhdGgxLCBw
YXRoMikKKworICAgIGRlZiBtYXBfYmFzZV9ob3N0X3BhdGgoc2VsZiwgcGF0aCk6CisgICAgICAg
ICIiIlJldHVybnMgYSBwYXRoIGZyb20gdGhlIGJhc2UgaG9zdCBsb2NhbGl6ZWQgZm9yIHRoaXMg
aG9zdC4gIEJ5IGRlZmF1bHQsCisgICAgICAgIHRoaXMgaG9zdCBhc3N1bWVzIGl0IGlzIHRoZSBi
YXNlIGhvc3QgYW5kIG1hcHMgdGhlIHBhdGggdG8gaXRzZWxmIiIiCisgICAgICAgIHJldHVybiBw
YXRoCisKKyAgICBkZWYgbW92ZV90b19iYXNlX2hvc3Qoc2VsZiwgc291cmNlLCBkZXN0aW5hdGlv
bik6CisgICAgICAgICIiIk1vdmVzIGEgZmlsZSBmcm9tIHRoaXMgaG9zdCB0byB0aGUgYmFzZSBo
b3N0LiAgQmUgZGVmYXVsdCwgdGhpcyBob3N0CisgICAgICAgIGFzc3VtZXMgaXQgaXMgdGhlIGJh
c2UgaG9zdCBhbmQgd2lsbCBqdXN0IGV4ZWN1dGUgYSBtb3ZlLiIiIgorICAgICAgICBzZWxmLm1v
dmUoc291cmNlLCBkZXN0aW5hdGlvbikKKworICAgIGRlZiBtb3ZlX2Zyb21fYmFzZV9ob3N0KHNl
bGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgorICAgICAgICAiIiJNb3ZlcyBhIGZpbGUgZnJvbSB0
aGUgYmFzZSBob3N0IHRvIHRoaXMgaG9zdC4gIEJlIGRlZmF1bHQsIHRoaXMgaG9zdAorICAgICAg
ICBhc3N1bWVzIGl0IGlzIHRoZSBiYXNlIGhvc3QgYW5kIHdpbGwganVzdCBleGVjdXRlIGEgbW92
ZS4iIiIKKyAgICAgICAgc2VsZi5tb3ZlKHNvdXJjZSwgZGVzdGluYXRpb24pCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVt
X21vY2sucHkJKHJldmlzaW9uIDIxNDYzMikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkJKHdvcmtpbmcgY29weSkKQEAgLTQyMCw2ICs0
MjAsMTUgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICBkZWYgY29tcGFyZShz
ZWxmLCBwYXRoMSwgcGF0aDIpOgogICAgICAgICByZXR1cm4gc2VsZi5yZWFkX2JpbmFyeV9maWxl
KHBhdGgxKSA9PSBzZWxmLnJlYWRfYmluYXJ5X2ZpbGUocGF0aDIpCiAKKyAgICBkZWYgbWFwX2Jh
c2VfaG9zdF9wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gcGF0aAorCisgICAgZGVm
IG1vdmVfdG9fYmFzZV9ob3N0KHNlbGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgorICAgICAgICBz
ZWxmLm1vdmUoc291cmNlLCBkZXN0aW5hdGlvbikKKworICAgIGRlZiBtb3ZlX2Zyb21fYmFzZV9o
b3N0KHNlbGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgorICAgICAgICBzZWxmLm1vdmUoc291cmNl
LCBkZXN0aW5hdGlvbikKKwogCiBjbGFzcyBXcml0YWJsZUJpbmFyeUZpbGVPYmplY3Qob2JqZWN0
KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZnMsIHBhdGgpOgpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2Jhc2UucHkJKHJldmlzaW9uIDIxNDYzMikKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9iYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNiArMTQyLDkgQEAgY2xh
c3MgUG9ydChvYmplY3QpOgogICAgICAgICBzZWxmLl9sYXlvdXRfdGVzdHNfZGlyID0gaGFzYXR0
cihvcHRpb25zLCAnbGF5b3V0X3Rlc3RzX2RpcicpIGFuZCBvcHRpb25zLmxheW91dF90ZXN0c19k
aXIgYW5kIHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0aChvcHRpb25zLmxheW91dF90ZXN0c19kaXIp
CiAgICAgICAgIHNlbGYuX3czY19yZXNvdXJjZV9maWxlcyA9IE5vbmUKIAorICAgIGRlZiB0YXJn
ZXRfaG9zdChzZWxmLCB3b3JrZXJfbnVtYmVyPU5vbmUpOgorICAgICAgICByZXR1cm4gc2VsZi5o
b3N0CisKICAgICBkZWYgYXJjaGl0ZWN0dXJlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5n
ZXRfb3B0aW9uKCdhcmNoaXRlY3R1cmUnKQogCkBAIC04MDIsMTAgKzgwNSwxMSBAQCBjbGFzcyBQ
b3J0KG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5ob3N0LmZpbGVzeXN0ZW0uYWJz
cGF0aChmaWxlbmFtZSkKIAogICAgIEBtZW1vaXplZAotICAgIGRlZiBhYnNwYXRoX2Zvcl90ZXN0
KHNlbGYsIHRlc3RfbmFtZSk6CisgICAgZGVmIGFic3BhdGhfZm9yX3Rlc3Qoc2VsZiwgdGVzdF9u
YW1lLCB0YXJnZXRfaG9zdD1Ob25lKToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgZnVsbCBwYXRo
IHRvIHRoZSBmaWxlIGZvciBhIGdpdmVuIHRlc3QgbmFtZS4gVGhpcyBpcyB0aGUKLSAgICAgICAg
aW52ZXJzZSBvZiByZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKCkuIiIiCi0gICAgICAgIHJldHVybiBz
ZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksIHRlc3RfbmFtZSkK
KyAgICAgICAgaW52ZXJzZSBvZiByZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKCkgaWYgbm8gdGFyZ2V0
X2hvc3QgaXMgc3BlY2lmaWVkLiIiIgorICAgICAgICBob3N0ID0gdGFyZ2V0X2hvc3Qgb3Igc2Vs
Zi5ob3N0CisgICAgICAgIHJldHVybiBob3N0LmZpbGVzeXN0ZW0uam9pbihob3N0LmZpbGVzeXN0
ZW0ubWFwX2Jhc2VfaG9zdF9wYXRoKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpKSwgdGVzdF9uYW1l
KQogCiAgICAgZGVmIGpzY19yZXN1bHRzX2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgcmV0dXJu
IHNlbGYuX2J1aWxkX3BhdGgoKQpAQCAtMTI4Miw4ICsxMjg2LDkgQEAgY2xhc3MgUG9ydChvYmpl
Y3QpOgogICAgICAgICAgICAgbG9jYWxfZHJpdmVyX3BhdGggPSBiYXNlICsgIi5leGUiCiAgICAg
ICAgIHJldHVybiBsb2NhbF9kcml2ZXJfcGF0aAogCi0gICAgZGVmIF9kcml2ZXJfdGVtcGRpcihz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ubWtkdGVtcChwcmVmaXg9JyVz
LScgJSBzZWxmLmRyaXZlcl9uYW1lKCkpCisgICAgZGVmIF9kcml2ZXJfdGVtcGRpcihzZWxmLCB0
YXJnZXRfaG9zdD1Ob25lKToKKyAgICAgICAgaG9zdCA9IHRhcmdldF9ob3N0IG9yIHNlbGYuaG9z
dAorICAgICAgICByZXR1cm4gaG9zdC5maWxlc3lzdGVtLm1rZHRlbXAocHJlZml4PSd7fXMtJy5m
b3JtYXQoc2VsZi5kcml2ZXJfbmFtZSgpKSkKIAogICAgIGRlZiBfcGF0aF90b191c2VyX2NhY2hl
X2RpcmVjdG9yeShzZWxmLCBzdWZmaXg9Tm9uZSk6CiAgICAgICAgIHJldHVybiBOb25lCkBAIC0x
MzU0LDcgKzEzNTksNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgZGVmIGxvb2tfZm9yX25l
d19zYW1wbGVzKHNlbGYsIHVucmVzcG9uc2l2ZV9wcm9jZXNzZXMsIHN0YXJ0X3RpbWUpOgogICAg
ICAgICBwYXNzCiAKLSAgICBkZWYgc2FtcGxlX3Byb2Nlc3Moc2VsZiwgbmFtZSwgcGlkKToKKyAg
ICBkZWYgc2FtcGxlX3Byb2Nlc3Moc2VsZiwgbmFtZSwgcGlkLCB0YXJnZXRfaG9zdD1Ob25lKToK
ICAgICAgICAgcGFzcwogCiAgICAgZGVmIGZpbmRfc3lzdGVtX3BpZChzZWxmLCBuYW1lLCBwaWQp
OgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5CShyZXZpc2lvbiAyMTQ2
MzIpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0xMjIsOCArMTIyLDEwIEBAIGNsYXNzIERhcndpblBvcnQoQXBwbGVQb3J0KToKICAg
ICAgICAgYWxsX2NyYXNoX2xvZyA9IHNlbGYuX2xvb2tfZm9yX2FsbF9jcmFzaF9sb2dzX2luX2xv
Z19kaXIoc3RhcnRfdGltZSkKICAgICAgICAgcmV0dXJuIHNlbGYuX21lcmdlX2NyYXNoX2xvZ3Mo
Y3Jhc2hfbG9ncywgYWxsX2NyYXNoX2xvZywgY3Jhc2hlZF9wcm9jZXNzZXMpCiAKLSAgICBkZWYg
c2FtcGxlX3Byb2Nlc3Moc2VsZiwgbmFtZSwgcGlkKToKLSAgICAgICAgZXhpdF9zdGF0dXMgPSBz
ZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWworICAgIGRlZiBzYW1wbGVfcHJvY2VzcyhzZWxm
LCBuYW1lLCBwaWQsIHRhcmdldF9ob3N0PU5vbmUpOgorICAgICAgICBob3N0ID0gdGFyZ2V0X2hv
c3Qgb3Igc2VsZi5ob3N0CisgICAgICAgIHRlbXBkaXIgPSBob3N0LmZpbGVzeXN0ZW0ubWtkdGVt
cCgpCisgICAgICAgIGV4aXRfc3RhdHVzID0gaG9zdC5leGVjdXRpdmUucnVuX2NvbW1hbmQoWwog
ICAgICAgICAgICAgIi91c3IvYmluL3N1ZG8iLAogICAgICAgICAgICAgIi1uIiwKICAgICAgICAg
ICAgICIvdXNyL3NiaW4vc3BpbmR1bXAiLApAQCAtMTMxLDI2ICsxMzMsMzIgQEAgY2xhc3MgRGFy
d2luUG9ydChBcHBsZVBvcnQpOgogICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICAxMCwKICAg
ICAgICAgICAgICItZmlsZSIsCi0gICAgICAgICAgICBzZWxmLnNwaW5kdW1wX2ZpbGVfcGF0aChu
YW1lLCBwaWQpLAorICAgICAgICAgICAgc2VsZi5zcGluZHVtcF9maWxlX3BhdGgobmFtZSwgcGlk
LCBzdHIodGVtcGRpcikpLAogICAgICAgICBdLCByZXR1cm5fZXhpdF9jb2RlPVRydWUpCiAgICAg
ICAgIGlmIGV4aXRfc3RhdHVzOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNl
bGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbCisgICAgICAgICAgICAgICAgaG9zdC5leGVjdXRp
dmUucnVuX2NvbW1hbmQoWwogICAgICAgICAgICAgICAgICAgICAiL3Vzci9iaW4vc2FtcGxlIiwK
ICAgICAgICAgICAgICAgICAgICAgcGlkLAogICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAg
ICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICAgICAgICAgICItZmlsZSIsCi0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuc2FtcGxlX2ZpbGVfcGF0aChuYW1lLCBwaWQpLAorICAgICAgICAg
ICAgICAgICAgICBzZWxmLnNhbXBsZV9maWxlX3BhdGgobmFtZSwgcGlkLCBzdHIodGVtcGRpcikp
LAogICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgaG9zdC5maWxlc3lzdGVtLm1v
dmVfdG9fYmFzZV9ob3N0KHNlbGYuc2FtcGxlX2ZpbGVfcGF0aChuYW1lLCBwaWQsIHN0cih0ZW1w
ZGlyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuc2FtcGxlX2ZpbGVfcGF0aChuYW1lLCBwaWQsIHNlbGYucmVzdWx0c19kaXJlY3Rvcnko
KSkpCiAgICAgICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IgYXMgZToKICAgICAgICAgICAgICAg
ICBfbG9nLndhcm5pbmcoJ1VuYWJsZSB0byBzYW1wbGUgcHJvY2VzczonICsgc3RyKGUpKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgaG9zdC5maWxlc3lzdGVtLm1vdmVfdG9fYmFzZV9ob3N0
KHNlbGYuc3BpbmR1bXBfZmlsZV9wYXRoKG5hbWUsIHBpZCwgc3RyKHRlbXBkaXIpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNwaW5kdW1wX2Zp
bGVfcGF0aChuYW1lLCBwaWQsIHNlbGYucmVzdWx0c19kaXJlY3RvcnkoKSkpCisgICAgICAgIGhv
c3QuZmlsZXN5c3RlbS5ybXRyZWUoc3RyKHRlbXBkaXIpKQogCi0gICAgZGVmIHNhbXBsZV9maWxl
X3BhdGgoc2VsZiwgbmFtZSwgcGlkKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0u
am9pbihzZWxmLnJlc3VsdHNfZGlyZWN0b3J5KCksICJ7MH0tezF9LXNhbXBsZS50eHQiLmZvcm1h
dChuYW1lLCBwaWQpKQorICAgIGRlZiBzYW1wbGVfZmlsZV9wYXRoKHNlbGYsIG5hbWUsIHBpZCwg
ZGlyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihkaXIsICJ7MH0tezF9
LXNhbXBsZS50eHQiLmZvcm1hdChuYW1lLCBwaWQpKQogCi0gICAgZGVmIHNwaW5kdW1wX2ZpbGVf
cGF0aChzZWxmLCBuYW1lLCBwaWQpOgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5q
b2luKHNlbGYucmVzdWx0c19kaXJlY3RvcnkoKSwgInswfS17MX0tc3BpbmR1bXAudHh0Ii5mb3Jt
YXQobmFtZSwgcGlkKSkKKyAgICBkZWYgc3BpbmR1bXBfZmlsZV9wYXRoKHNlbGYsIG5hbWUsIHBp
ZCwgZGlyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihkaXIsICJ7MH0t
ezF9LXNwaW5kdW1wLnR4dCIuZm9ybWF0KG5hbWUsIHBpZCkpCiAKICAgICBkZWYgbG9va19mb3Jf
bmV3X3NhbXBsZXMoc2VsZiwgdW5yZXNwb25zaXZlX3Byb2Nlc3Nlcywgc3RhcnRfdGltZSk6CiAg
ICAgICAgIHNhbXBsZV9maWxlcyA9IHt9CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZGFyd2luX3Rlc3RjYXNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9kYXJ3aW5fdGVzdGNhc2UucHkJKHJldmlzaW9uIDIxNDYzMikKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW5fdGVzdGNhc2UucHkJKHdvcmtpbmcgY29weSkKQEAg
LTkyLDkgKzkyLDEyIEBAIGNsYXNzIERhcndpblRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdEMK
ICAgICAgICAgICAgIHByaW50IGFyZ3MKIAogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQo
KQotICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihydW5fY29tbWFuZF9m
bj1sb2dnaW5nX3J1bl9jb21tYW5kKQotICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAiWycvdXNy
L2Jpbi9zdWRvJywgJy1uJywgJy91c3Ivc2Jpbi9zcGluZHVtcCcsIDQyLCAxMCwgMTAsICctZmls
ZScsICcvbW9jay1idWlsZC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3QtNDItc3BpbmR1bXAudHh0
J11cbiIKKyAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9fX2ltX3RtcC90bXBf
MF8vdGVzdC00Mi1zcGluZHVtcC50eHQnXSA9ICdTcGluZHVtcCBmaWxlJworICAgICAgICBwb3J0
Lmhvc3QuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIocnVuX2NvbW1hbmRfZm49bG9nZ2luZ19y
dW5fY29tbWFuZCkKKyAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIlsnL3Vzci9iaW4vc3Vkbycs
ICctbicsICcvdXNyL3NiaW4vc3BpbmR1bXAnLCA0MiwgMTAsIDEwLCAnLWZpbGUnLCAnL19faW1f
dG1wL3RtcF8wXy90ZXN0LTQyLXNwaW5kdW1wLnR4dCddXG4iCiAgICAgICAgIE91dHB1dENhcHR1
cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0LnNhbXBsZV9wcm9jZXNzLCBhcmdzPVsndGVz
dCcsIDQyXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxlc1snL21vY2stYnVpbGQvbGF5b3V0
LXRlc3QtcmVzdWx0cy90ZXN0LTQyLXNwaW5kdW1wLnR4dCddLCAnU3BpbmR1bXAgZmlsZScpCisg
ICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBvcnQuaG9zdC5maWxlc3lzdGVtLmZpbGVzWycvX19p
bV90bXAvdG1wXzBfL3Rlc3QtNDItc3BpbmR1bXAudHh0J10pCiAKICAgICBkZWYgdGVzdF9zYW1w
bGVfcHJvY2VzcyhzZWxmKToKIApAQCAtMTA1LDkgKzEwOCwxMiBAQCBjbGFzcyBEYXJ3aW5UZXN0
KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDCiAgICAgICAgICAgICByZXR1cm4gMAogCiAgICAgICAg
IHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCi0gICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tF
eGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPWxvZ2dpbmdfcnVuX2NvbW1hbmQpCi0gICAgICAgIGV4
cGVjdGVkX3N0ZG91dCA9ICJbJy91c3IvYmluL3NhbXBsZScsIDQyLCAxMCwgMTAsICctZmlsZScs
ICcvbW9jay1idWlsZC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3QtNDItc2FtcGxlLnR4dCddXG4i
CisgICAgICAgIHBvcnQuaG9zdC5maWxlc3lzdGVtLmZpbGVzWycvX19pbV90bXAvdG1wXzBfL3Rl
c3QtNDItc2FtcGxlLnR4dCddID0gJ1NhbXBsZSBmaWxlJworICAgICAgICBwb3J0Lmhvc3QuZXhl
Y3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIocnVuX2NvbW1hbmRfZm49bG9nZ2luZ19ydW5fY29tbWFu
ZCkKKyAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIlsnL3Vzci9iaW4vc2FtcGxlJywgNDIsIDEw
LCAxMCwgJy1maWxlJywgJy9fX2ltX3RtcC90bXBfMF8vdGVzdC00Mi1zYW1wbGUudHh0J11cbiIK
ICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuc2FtcGxl
X3Byb2Nlc3MsIGFyZ3M9Wyd0ZXN0JywgNDJdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rk
b3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuaG9zdC5maWxlc3lzdGVtLmZpbGVz
WycvbW9jay1idWlsZC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3QtNDItc2FtcGxlLnR4dCddLCAn
U2FtcGxlIGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwb3J0Lmhvc3QuZmlsZXN5
c3RlbS5maWxlc1snL19faW1fdG1wL3RtcF8wXy90ZXN0LTQyLXNhbXBsZS50eHQnXSkKIAogICAg
IGRlZiB0ZXN0X3NhbXBsZV9wcm9jZXNzX2V4Y2VwdGlvbihzZWxmKToKICAgICAgICAgZGVmIHRo
cm93aW5nX3J1bl9jb21tYW5kKGFyZ3MpOgpAQCAtMTE2LDUgKzEyMiw1IEBAIGNsYXNzIERhcndp
blRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdEMKICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVy
cm9yKCJNT0NLIHNjcmlwdCBlcnJvciIpCiAKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0
KCkKLSAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIocnVuX2NvbW1hbmRf
Zm49dGhyb3dpbmdfcnVuX2NvbW1hbmQpCisgICAgICAgIHBvcnQuaG9zdC5leGVjdXRpdmUgPSBN
b2NrRXhlY3V0aXZlMihydW5fY29tbWFuZF9mbj10aHJvd2luZ19ydW5fY29tbWFuZCkKICAgICAg
ICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuc2FtcGxlX3Byb2Nl
c3MsIGFyZ3M9Wyd0ZXN0JywgNDJdKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2RyaXZlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJp
dmVyLnB5CShyZXZpc2lvbiAyMTQ2MzIpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZHJpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDcgQEAgY2xhc3MgRHJpdmVy
KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX3dvcmtl
cl9udW1iZXIgPSB3b3JrZXJfbnVtYmVyCiAgICAgICAgIHNlbGYuX25vX3RpbWVvdXQgPSBub190
aW1lb3V0CisgICAgICAgIHNlbGYuX3RhcmdldF9ob3N0ID0gcG9ydC50YXJnZXRfaG9zdCh3b3Jr
ZXJfbnVtYmVyKQogCiAgICAgICAgIHNlbGYuX2RyaXZlcl90ZW1wZGlyID0gTm9uZQogICAgICAg
ICBzZWxmLl9kcml2ZXJfdXNlcl9kaXJlY3Rvcnlfc3VmZml4ID0gTm9uZQpAQCAtMzU5LDE2ICsz
NjAsMTYgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICMgRWFjaCBkcml2ZXIgcHJv
Y2VzcyBzaG91bGQgYmUgdXNpbmcgaW5kaXZpZHVhbCBkaXJlY3RvcmllcyB1bmRlciBfZHJpdmVy
X3RlbXBkaXIgKHdoaWNoIGlzIGRlbGV0ZWQgd2hlbiBzdG9wcGluZyksCiAgICAgICAgICMgaG93
ZXZlciBzb21lIHN1YnN5c3RlbXMgb24gc29tZSBwbGF0Zm9ybXMgY291bGQgZW5kIHVwIHVzaW5n
IHByb2Nlc3MgZGVmYXVsdCBvbmVzLgogICAgICAgICBzZWxmLl9wb3J0Ll9jbGVhcl9nbG9iYWxf
Y2FjaGVzX2FuZF90ZW1wb3JhcnlfZmlsZXMoKQotICAgICAgICBzZWxmLl9kcml2ZXJfdGVtcGRp
ciA9IHNlbGYuX3BvcnQuX2RyaXZlcl90ZW1wZGlyKCkKKyAgICAgICAgc2VsZi5fZHJpdmVyX3Rl
bXBkaXIgPSBzZWxmLl9wb3J0Ll9kcml2ZXJfdGVtcGRpcihzZWxmLl90YXJnZXRfaG9zdCkKICAg
ICAgICAgc2VsZi5fZHJpdmVyX3VzZXJfZGlyZWN0b3J5X3N1ZmZpeCA9IG9zLnBhdGguYmFzZW5h
bWUoc3RyKHNlbGYuX2RyaXZlcl90ZW1wZGlyKSkKICAgICAgICAgdXNlcl9jYWNoZV9kaXJlY3Rv
cnkgPSBzZWxmLl9wb3J0Ll9wYXRoX3RvX3VzZXJfY2FjaGVfZGlyZWN0b3J5KHNlbGYuX2RyaXZl
cl91c2VyX2RpcmVjdG9yeV9zdWZmaXgpCiAgICAgICAgIGlmIHVzZXJfY2FjaGVfZGlyZWN0b3J5
OgotICAgICAgICAgICAgc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9y
eSh1c2VyX2NhY2hlX2RpcmVjdG9yeSkKKyAgICAgICAgICAgIHNlbGYuX3RhcmdldF9ob3N0LmZp
bGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkodXNlcl9jYWNoZV9kaXJlY3RvcnkpCiAgICAg
ICAgICAgICBzZWxmLl9kcml2ZXJfdXNlcl9jYWNoZV9kaXJlY3RvcnkgPSB1c2VyX2NhY2hlX2Rp
cmVjdG9yeQogICAgICAgICBlbnZpcm9ubWVudCA9IHNlbGYuX3NldHVwX2Vudmlyb25fZm9yX3Rl
c3QoKQogICAgICAgICBzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUKICAgICAgICAg
c2VsZi5fY3Jhc2hlZF9waWQgPSBOb25lCi0gICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzID0g
c2VsZi5fcG9ydC5fdGVzdF9ydW5uZXJfcHJvY2Vzc19jb25zdHJ1Y3RvcihzZWxmLl9wb3J0LCBz
ZWxmLl9zZXJ2ZXJfbmFtZSwgc2VsZi5jbWRfbGluZShwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJn
cyksIGVudmlyb25tZW50LCB3b3JrZXJfbnVtYmVyPXNlbGYuX3dvcmtlcl9udW1iZXIpCisgICAg
ICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzID0gc2VsZi5fcG9ydC5fdGVzdF9ydW5uZXJfcHJvY2Vz
c19jb25zdHJ1Y3RvcihzZWxmLl9wb3J0LCBzZWxmLl9zZXJ2ZXJfbmFtZSwgc2VsZi5jbWRfbGlu
ZShwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJncyksIGVudmlyb25tZW50LCB0YXJnZXRfaG9zdD1z
ZWxmLl90YXJnZXRfaG9zdCkKICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Muc3RhcnQoKQog
CiAgICAgZGVmIF9ydW5fcG9zdF9zdGFydF90YXNrcyhzZWxmKToKQEAgLTM4OCwxMCArMzg5LDEw
IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYuX3Byb2ZpbGVy
LnByb2ZpbGVfYWZ0ZXJfZXhpdCgpCiAKICAgICAgICAgaWYgc2VsZi5fZHJpdmVyX3RlbXBkaXI6
Ci0gICAgICAgICAgICBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLnJtdHJlZShzdHIoc2VsZi5fZHJp
dmVyX3RlbXBkaXIpKQorICAgICAgICAgICAgc2VsZi5fdGFyZ2V0X2hvc3QuZmlsZXN5c3RlbS5y
bXRyZWUoc3RyKHNlbGYuX2RyaXZlcl90ZW1wZGlyKSkKICAgICAgICAgICAgIHNlbGYuX2RyaXZl
cl90ZW1wZGlyID0gTm9uZQogICAgICAgICBpZiBzZWxmLl9kcml2ZXJfdXNlcl9jYWNoZV9kaXJl
Y3Rvcnk6Ci0gICAgICAgICAgICBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLnJtdHJlZShzZWxmLl9k
cml2ZXJfdXNlcl9jYWNoZV9kaXJlY3RvcnkpCisgICAgICAgICAgICBzZWxmLl90YXJnZXRfaG9z
dC5maWxlc3lzdGVtLnJtdHJlZShzZWxmLl9kcml2ZXJfdXNlcl9jYWNoZV9kaXJlY3RvcnkpCiAg
ICAgICAgICAgICBzZWxmLl9kcml2ZXJfdXNlcl9jYWNoZV9kaXJlY3RvcnkgPSBOb25lCiAKICAg
ICBkZWYgY21kX2xpbmUoc2VsZiwgcGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpOgpAQCAtNDMy
LDcgKzQzMyw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5lcnJv
cl9mcm9tX3Rlc3QgKz0gZXJyX2xpbmUKICAgICAgICAgICAgIF9sb2cuZGVidWcoZXJyX2xpbmUp
CiAgICAgICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oInNhbXBsZV9vbl90aW1lb3V0
Iik6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5zYW1wbGVfcHJvY2VzcyhjaGlsZF9wcm9j
ZXNzX25hbWUsIGNoaWxkX3Byb2Nlc3NfcGlkKQorICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQu
c2FtcGxlX3Byb2Nlc3MoY2hpbGRfcHJvY2Vzc19uYW1lLCBjaGlsZF9wcm9jZXNzX3BpZCwgc2Vs
Zi5fdGFyZ2V0X2hvc3QpCiAgICAgICAgIGlmIG91dF9saW5lID09ICJGQUlMOiBUaW1lZCBvdXQg
d2FpdGluZyBmb3Igbm90aWZ5RG9uZSB0byBiZSBjYWxsZWRcbiI6CiAgICAgICAgICAgICBzZWxm
Ll9kcml2ZXJfdGltZWRfb3V0ID0gVHJ1ZQogCkBAIC00NjEsNyArNDYyLDcgQEAgY2xhc3MgRHJp
dmVyKG9iamVjdCk6CiAgICAgICAgICAgICBfbG9nLmRlYnVnKCclcyBpcyB1bnJlc3BvbnNpdmUs
IHBpZCA9ICVzJyAlIChjaGlsZF9wcm9jZXNzX25hbWUsIHN0cihjaGlsZF9wcm9jZXNzX3BpZCkp
KQogICAgICAgICAgICAgc2VsZi5fZHJpdmVyX3RpbWVkX291dCA9IFRydWUKICAgICAgICAgICAg
IGlmIGNoaWxkX3Byb2Nlc3NfcGlkOgotICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuc2FtcGxl
X3Byb2Nlc3MoY2hpbGRfcHJvY2Vzc19uYW1lLCBjaGlsZF9wcm9jZXNzX3BpZCkKKyAgICAgICAg
ICAgICAgICBzZWxmLl9wb3J0LnNhbXBsZV9wcm9jZXNzKGNoaWxkX3Byb2Nlc3NfbmFtZSwgY2hp
bGRfcHJvY2Vzc19waWQsIHNlbGYuX3RhcmdldF9ob3N0KQogICAgICAgICAgICAgc2VsZi5lcnJv
cl9mcm9tX3Rlc3QgKz0gZXJyb3JfbGluZQogICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nl
c3Mud3JpdGUoJyNTQU1QTEUgRklOSVNIRURcbicsIFRydWUpICAjIE11c3QgYmUgYWJsZSB0byBp
Z25vcmUgYSBicm9rZW4gcGlwZSBoZXJlLCB0YXJnZXQgcHJvY2VzcyBtYXkgYWxyZWFkeSBiZSBj
bG9zZWQuCiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtNDc0LDkgKzQ3NSw5IEBAIGNsYXNz
IERyaXZlcihvYmplY3QpOgogICAgICAgICBlbGlmIHNlbGYuaXNfd2ViX3BsYXRmb3JtX3Rlc3Qo
ZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkgb3IgKHNlbGYuaXNfaHR0cF90ZXN0KGRyaXZlcl9pbnB1
dC50ZXN0X25hbWUpIGFuZCAoc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9ydW5u
ZXInKSBvciBzeXMucGxhdGZvcm0gPT0gImN5Z3dpbiIpKToKICAgICAgICAgICAgIGNvbW1hbmQg
PSBzZWxmLnRlc3RfdG9fdXJpKGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpCiAgICAgICAgICAgICBj
b21tYW5kICs9ICInLS1hYnNvbHV0ZVBhdGgnIgotICAgICAgICAgICAgY29tbWFuZCArPSBzZWxm
Ll9wb3J0LmFic3BhdGhfZm9yX3Rlc3QoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkKKyAgICAgICAg
ICAgIGNvbW1hbmQgKz0gc2VsZi5fcG9ydC5hYnNwYXRoX2Zvcl90ZXN0KGRyaXZlcl9pbnB1dC50
ZXN0X25hbWUsIHNlbGYuX3RhcmdldF9ob3N0KQogICAgICAgICBlbHNlOgotICAgICAgICAgICAg
Y29tbWFuZCA9IHNlbGYuX3BvcnQuYWJzcGF0aF9mb3JfdGVzdChkcml2ZXJfaW5wdXQudGVzdF9u
YW1lKQorICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYuX3BvcnQuYWJzcGF0aF9mb3JfdGVzdChk
cml2ZXJfaW5wdXQudGVzdF9uYW1lLCBzZWxmLl90YXJnZXRfaG9zdCkKICAgICAgICAgICAgIGlm
IHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJzoKICAgICAgICAgICAgICAgICBjb21tYW5kID0gcGF0
aC5jeWdwYXRoKGNvbW1hbmQpCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9p
b3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQko
cmV2aXNpb24gMjE0NjMyKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQko
d29ya2luZyBjb3B5KQpAQCAtNzcsMTMgKzc3LDEzIEBAIGNsYXNzIElPU1BvcnQoRGFyd2luUG9y
dCk6CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0RldmljZSBhdCB7fSBjb3VsZCBu
b3QgYmUgZm91bmQnLmZvcm1hdChudW1iZXIpKQogICAgICAgICByZXR1cm4gZGV2aWNlCiAKLSAg
ICAjIEZJWE1FOiBUaGlzIGlzIG9ubHkgZXhwb3NlZCBzbyB0aGF0IFNpbXVsYXRvclByb2Nlc3Mg
Y2FuIHVzZSBpdC4KLSAgICBkZWYgZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyKHNlbGYsIG51bWJl
cik6Ci0gICAgICAgIGlmIHNlbGYuX3ByaW50aW5nX2NtZF9saW5lOgotICAgICAgICAgICAgcmV0
dXJuIE5vbmUKKyAgICAjIEEgZGV2aWNlIGlzIHRoZSB0YXJnZXQgaG9zdCBmb3IgYSBzcGVjaWZp
YyB3b3JrZXIgbnVtYmVyLgorICAgIGRlZiB0YXJnZXRfaG9zdChzZWxmLCB3b3JrZXJfbnVtYmVy
PU5vbmUpOgorICAgICAgICBpZiBzZWxmLl9wcmludGluZ19jbWRfbGluZSBvciB3b3JrZXJfbnVt
YmVyIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5ob3N0CiAgICAgICAgICMgV2hl
biB1c2luZyBzaW11bGF0ZWQgZGV2aWNlcywgdGhpcyBtZWFucyB3ZWJraXRweSBpcyBtYW5hZ2lu
ZyB0aGUgZGV2aWNlcy4KICAgICAgICAgaWYgc2VsZi51c2luZ19tdWx0aXBsZV9kZXZpY2VzKCk6
Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fdGVzdGluZ19kZXZpY2UobnVtYmVyKQorICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RpbmdfZGV2aWNlKHdvcmtlcl9udW1iZXIpCiAgICAgICAg
IHJldHVybiBzZWxmLl9jdXJyZW50X2RldmljZQogCiAgICAgZGVmIGRlZmF1bHRfYmFzZWxpbmVf
c2VhcmNoX3BhdGgoc2VsZik6CkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgSU9TUG9ydChEYXJ3
aW5Qb3J0KToKICAgICAgICAgc2VsZi5fY3JlYXRlX2RldmljZXMoZGV2aWNlX2NsYXNzKQogCiAg
ICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxmLmNoaWxkX3Byb2Nlc3NlcygpKToKLSAgICAgICAg
ICAgIGRldmljZSA9IHNlbGYuZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyKGkpCisgICAgICAgICAg
ICBkZXZpY2UgPSBzZWxmLnRhcmdldF9ob3N0KGkpCiAgICAgICAgICAgICBfbG9nLmRlYnVnKCdJ
bnN0YWxsaW5nIHRvIHt9Jy5mb3JtYXQoZGV2aWNlKSkKICAgICAgICAgICAgICMgV2l0aG91dCBw
YXNzaW5nIERZTERfTElCUkFSWV9QQVRILCBsaWJXZWJDb3JlVGVzdFN1cHBvcnQgY2Fubm90IGJl
IGxvYWRlZCBhbmQgRFJUL1dLVFIgd2lsbCBjcmFzaCBwcmUtbGF1bmNoLAogICAgICAgICAgICAg
IyBsZWF2aW5nIGEgY3Jhc2ggbG9nIHdoaWNoIHdpbGwgYmUgcGlja2VkIHVwIGluIHJlc3VsdHMu
ICBObyBEWUxEX0ZSQU1FV09SS19QQVRIIHdpbGwgYWxzbyBjYXVzZSB0aGUgRFJUL1dLVFIgdG8K
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3MucHkJ
KHJldmlzaW9uIDIxNDYzMikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJf
cHJvY2Vzcy5weQkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBTZXJ2ZXJQ
cm9jZXNzKG9iamVjdCk6CiAgICAgaW5kZWZpbml0ZWx5LiBUaGUgY2xhc3MgYWxzbyBoYW5kbGVz
IHRyYW5zcGFyZW50bHkgcmVzdGFydGluZyBwcm9jZXNzZXMKICAgICBhcyBuZWNlc3NhcnkgdG8g
a2VlcCBpc3N1aW5nIGNvbW1hbmRzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRf
b2JqLCBuYW1lLCBjbWQsIGVudj1Ob25lLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIHRyZWF0
X25vX2RhdGFfYXNfY3Jhc2g9RmFsc2UsIHdvcmtlcl9udW1iZXI9Tm9uZSk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHBvcnRfb2JqLCBuYW1lLCBjbWQsIGVudj1Ob25lLCB1bml2ZXJzYWxfbmV3
bGluZXM9RmFsc2UsIHRyZWF0X25vX2RhdGFfYXNfY3Jhc2g9RmFsc2UsIHRhcmdldF9ob3N0PU5v
bmUpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydF9vYmoKICAgICAgICAgc2VsZi5fbmFtZSA9
IG5hbWUgICMgU2hvdWxkIGJlIHRoZSBjb21tYW5kIG5hbWUgKGUuZy4gRHVtcFJlbmRlclRyZWUs
IEltYWdlRGlmZikKICAgICAgICAgc2VsZi5fY21kID0gY21kCkBAIC02OSw3ICs2OSw3IEBAIGNs
YXNzIFNlcnZlclByb2Nlc3Mob2JqZWN0KToKICAgICAgICAgIyBEb24ndCBzZXQgaWYgdGhlcmUg
d2lsbCBiZSBiaW5hcnkgZGF0YSBvciB0aGUgZGF0YSBtdXN0IGJlIEFTQ0lJIGVuY29kZWQuCiAg
ICAgICAgIHNlbGYuX3VuaXZlcnNhbF9uZXdsaW5lcyA9IHVuaXZlcnNhbF9uZXdsaW5lcwogICAg
ICAgICBzZWxmLl90cmVhdF9ub19kYXRhX2FzX2NyYXNoID0gdHJlYXRfbm9fZGF0YV9hc19jcmFz
aAotICAgICAgICBzZWxmLl9ob3N0ID0gc2VsZi5fcG9ydC5ob3N0CisgICAgICAgIHNlbGYuX3Rh
cmdldF9ob3N0ID0gdGFyZ2V0X2hvc3Qgb3IgcG9ydF9vYmouaG9zdAogICAgICAgICBzZWxmLl9w
aWQgPSBOb25lCiAgICAgICAgIHNlbGYuX3Jlc2V0KCkKIApAQCAtMTE2LDkgKzExNiw5IEBAIGNs
YXNzIFNlcnZlclByb2Nlc3Mob2JqZWN0KToKICAgICAgICAgIyBjbG9zZV9mZHMgaXMgYSB3b3Jr
YXJvdW5kIGZvciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjMyMAogICAgICAgICAjIElu
IFB5dGhvbiAyLjcuMTAsIGNsb3NlX2ZkcyBpcyBhbHNvIHN1cHBvcnRlZCBvbiBXaW5kb3dzLgog
ICAgICAgICBjbG9zZV9mZHMgPSBUcnVlCi0gICAgICAgIHNlbGYuX3Byb2MgPSBzZWxmLl9ob3N0
LmV4ZWN1dGl2ZS5wb3BlbihzZWxmLl9jbWQsIHN0ZGluPXNlbGYuX2hvc3QuZXhlY3V0aXZlLlBJ
UEUsCi0gICAgICAgICAgICBzdGRvdXQ9c2VsZi5faG9zdC5leGVjdXRpdmUuUElQRSwKLSAgICAg
ICAgICAgIHN0ZGVycj1zZWxmLl9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAorICAgICAgICBzZWxmLl9w
cm9jID0gc2VsZi5fdGFyZ2V0X2hvc3QuZXhlY3V0aXZlLnBvcGVuKHNlbGYuX2NtZCwgc3RkaW49
c2VsZi5fdGFyZ2V0X2hvc3QuZXhlY3V0aXZlLlBJUEUsCisgICAgICAgICAgICBzdGRvdXQ9c2Vs
Zi5fdGFyZ2V0X2hvc3QuZXhlY3V0aXZlLlBJUEUsCisgICAgICAgICAgICBzdGRlcnI9c2VsZi5f
dGFyZ2V0X2hvc3QuZXhlY3V0aXZlLlBJUEUsCiAgICAgICAgICAgICBjbG9zZV9mZHM9Y2xvc2Vf
ZmRzLAogICAgICAgICAgICAgZW52PXNlbGYuX2VudiwKICAgICAgICAgICAgIHVuaXZlcnNhbF9u
ZXdsaW5lcz1zZWxmLl91bml2ZXJzYWxfbmV3bGluZXMpCkBAIC0yMTksNyArMjE5LDcgQEAgY2xh
c3MgU2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgIGRlZiBfaGFuZGxlX3RpbWVvdXQoc2VsZik6
CiAgICAgICAgIHNlbGYudGltZWRfb3V0ID0gVHJ1ZQogICAgICAgICBpZiBzZWxmLl9wb3J0Lmdl
dF9vcHRpb24oInNhbXBsZV9vbl90aW1lb3V0Iik6Ci0gICAgICAgICAgICBzZWxmLl9wb3J0LnNh
bXBsZV9wcm9jZXNzKHNlbGYuX25hbWUsIHNlbGYuX3Byb2MucGlkKQorICAgICAgICAgICAgc2Vs
Zi5fcG9ydC5zYW1wbGVfcHJvY2VzcyhzZWxmLl9uYW1lLCBzZWxmLl9wcm9jLnBpZCwgc2VsZi5f
dGFyZ2V0X2hvc3QpCiAKICAgICBkZWYgX3NwbGl0X3N0cmluZ19hZnRlcl9pbmRleChzZWxmLCBz
dHJpbmcsIGluZGV4KToKICAgICAgICAgcmV0dXJuIHN0cmluZ1s6aW5kZXhdLCBzdHJpbmdbaW5k
ZXg6XQpAQCAtMzc4LDcgKzM3OCw3IEBAIGNsYXNzIFNlcnZlclByb2Nlc3Mob2JqZWN0KToKICAg
ICAgICAgc2VsZi5zdG9wKDAuMCkKIAogICAgIGRlZiBfa2lsbChzZWxmKToKLSAgICAgICAgc2Vs
Zi5faG9zdC5leGVjdXRpdmUua2lsbF9wcm9jZXNzKHNlbGYuX3Byb2MucGlkKQorICAgICAgICBz
ZWxmLl90YXJnZXRfaG9zdC5leGVjdXRpdmUua2lsbF9wcm9jZXNzKHNlbGYuX3Byb2MucGlkKQog
ICAgICAgICBpZiBzZWxmLl9wcm9jLnBvbGwoKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNl
bGYuX3Byb2Mud2FpdCgpCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2
ZXJfcHJvY2Vzc19tb2NrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9zZXJ2ZXJfcHJvY2Vzc19tb2NrLnB5CShyZXZpc2lvbiAyMTQ2MzIpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfbW9jay5weQkod29ya2luZyBjb3B5
KQpAQCAtMjgsNyArMjgsNyBAQAogCiAKIGNsYXNzIE1vY2tTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfb2JqPU5vbmUsIG5hbWU9Tm9uZSwgY21kPU5v
bmUsIGVudj1Ob25lLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIGxpbmVzPU5vbmUsIGNyYXNo
ZWQ9RmFsc2UsIHdvcmtlcl9udW1iZXI9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBv
cnRfb2JqPU5vbmUsIG5hbWU9Tm9uZSwgY21kPU5vbmUsIGVudj1Ob25lLCB1bml2ZXJzYWxfbmV3
bGluZXM9RmFsc2UsIGxpbmVzPU5vbmUsIGNyYXNoZWQ9RmFsc2UsIHRhcmdldF9ob3N0PU5vbmUp
OgogICAgICAgICBzZWxmLnRpbWVkX291dCA9IEZhbHNlCiAgICAgICAgIHNlbGYubGluZXMgPSBs
aW5lcyBvciBbXQogICAgICAgICBzZWxmLmNyYXNoZWQgPSBjcmFzaGVkCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nlc3MucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5CShyZXZpc2lv
biAyMTQ2MzIpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nl
c3MucHkJKHdvcmtpbmcgY29weSkKQEAgLTcwLDEzICs3MCwxMSBAQCBjbGFzcyBTaW11bGF0b3JQ
cm9jZXNzKFNlcnZlclByb2Nlc3MpOgogICAgICAgICAgICAgc2VsZi5zb2NrZXQuY2xvc2UoKQog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRf
b2JqLCBuYW1lLCBjbWQsIGVudj1Ob25lLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIHRyZWF0
X25vX2RhdGFfYXNfY3Jhc2g9RmFsc2UsIHRhcmdldF9ob3N0PU5vbmUpOgorICAgICAgICBlbnZb
J1BPUlQnXSA9IHN0cih0YXJnZXRfaG9zdC5saXN0ZW5pbmdfcG9ydCgpKSAgIyBUaGUgdGFyZ2V0
X2hvc3Qgc2hvdWxkIGJlIGEgZGV2aWNlLgorICAgICAgICBzdXBlcihTaW11bGF0b3JQcm9jZXNz
LCBzZWxmKS5fX2luaXRfXyhwb3J0X29iaiwgbmFtZSwgY21kLCBlbnYsIHVuaXZlcnNhbF9uZXds
aW5lcywgdHJlYXRfbm9fZGF0YV9hc19jcmFzaCwgdGFyZ2V0X2hvc3QpCiAKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgcG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXds
aW5lcz1GYWxzZSwgdHJlYXRfbm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgd29ya2VyX251bWJlcj1O
b25lKToKICAgICAgICAgc2VsZi5fYnVuZGxlX2lkID0gcG9ydF9vYmouYXBwX2lkZW50aWZpZXJf
ZnJvbV9idW5kbGUoY21kWzBdKQotICAgICAgICBzZWxmLl9kZXZpY2UgPSBwb3J0X29iai5kZXZp
Y2VfZm9yX3dvcmtlcl9udW1iZXIod29ya2VyX251bWJlcikKLQotICAgICAgICBlbnZbJ1BPUlQn
XSA9IHN0cihzZWxmLl9kZXZpY2UubGlzdGVuaW5nX3BvcnQoKSkKLSAgICAgICAgc3VwZXIoU2lt
dWxhdG9yUHJvY2Vzcywgc2VsZikuX19pbml0X18ocG9ydF9vYmosIG5hbWUsIGNtZCwgZW52LCB1
bml2ZXJzYWxfbmV3bGluZXMsIHRyZWF0X25vX2RhdGFfYXNfY3Jhc2gpCiAKICAgICBAc3RhdGlj
bWV0aG9kCiAgICAgZGVmIF9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmlsZShzZXJ2ZXIsIHR5
cGUpOgpAQCAtOTEsMTIgKzg5LDEyIEBAIGNsYXNzIFNpbXVsYXRvclByb2Nlc3MoU2VydmVyUHJv
Y2Vzcyk6CiAKICAgICAgICAgIyBFYWNoIGRldmljZSBoYXMgYSBsaXN0ZW5pbmcgc29ja2V0IGlu
dGl0aWxhaXplZCBkdXJpbmcgdGhlIHBvcnQncyBzZXR1cF90ZXN0X3J1bi4KICAgICAgICAgIyAz
IGNsaWVudCBjb25uZWN0aW9ucyB3aWxsIGJlIGFjY2VwdGVkIGZvciBzdGRpbiwgc3Rkb3V0IGFu
ZCBzdGRlcnIgaW4gdGhhdCBvcmRlci4KLSAgICAgICAgc2VsZi5fZGV2aWNlLmxpc3RlbmluZ19z
b2NrZXQubGlzdGVuKDMpCi0gICAgICAgIHNlbGYuX3BpZCA9IHNlbGYuX2RldmljZS5sYXVuY2hf
YXBwKHNlbGYuX2J1bmRsZV9pZCwgc2VsZi5fY21kWzE6XSwgZW52PXNlbGYuX2VudikKKyAgICAg
ICAgc2VsZi5fdGFyZ2V0X2hvc3QubGlzdGVuaW5nX3NvY2tldC5saXN0ZW4oMykKKyAgICAgICAg
c2VsZi5fcGlkID0gc2VsZi5fdGFyZ2V0X2hvc3QubGF1bmNoX2FwcChzZWxmLl9idW5kbGVfaWQs
IHNlbGYuX2NtZFsxOl0sIGVudj1zZWxmLl9lbnYpCiAKICAgICAgICAgZGVmIGhhbmRsZXIoc2ln
bnVtLCBmcmFtZSk6CiAgICAgICAgICAgICBhc3NlcnQgc2lnbnVtID09IHNpZ25hbC5TSUdBTFJN
Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1RpbWVkIG91dCB3YWl0aW5nIGZvciBwcm9j
ZXNzIHRvIGNvbm5lY3QgYXQgcG9ydCB7fScuZm9ybWF0KHNlbGYuX2RldmljZS5saXN0ZW5pbmdf
cG9ydCgpKSkKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVGltZWQgb3V0IHdhaXRpbmcg
Zm9yIHByb2Nlc3MgdG8gY29ubmVjdCBhdCBwb3J0IHt9Jy5mb3JtYXQoc2VsZi5fdGFyZ2V0X2hv
c3QubGlzdGVuaW5nX3BvcnQoKSkpCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FM
Uk0sIGhhbmRsZXIpCiAgICAgICAgIHNpZ25hbC5hbGFybSgzKSAgIyBJbiBzZWNvbmRzCiAKQEAg
LTEwNSwxMiArMTAzLDEyIEBAIGNsYXNzIFNpbXVsYXRvclByb2Nlc3MoU2VydmVyUHJvY2Vzcyk6
CiAgICAgICAgIHN0ZGVyciA9IE5vbmUKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBUaGlz
IG9yZGVyIG1hdGNoZXMgdGhlIGNsaWVudCBzaWRlIGNvbm5lY3Rpb25zIGluIFRvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uY3BwIHNldFVwSU9TTGF5b3V0
VGVzdENvbW11bmljYXRpb24oKQotICAgICAgICAgICAgc3RkaW4gPSBTaW11bGF0b3JQcm9jZXNz
Ll9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmlsZShzZWxmLl9kZXZpY2UubGlzdGVuaW5nX3Nv
Y2tldCwgJ3cnKQotICAgICAgICAgICAgc3Rkb3V0ID0gU2ltdWxhdG9yUHJvY2Vzcy5fYWNjZXB0
X2Nvbm5lY3Rpb25fY3JlYXRlX2ZpbGUoc2VsZi5fZGV2aWNlLmxpc3RlbmluZ19zb2NrZXQsICdy
YicpCi0gICAgICAgICAgICBzdGRlcnIgPSBTaW11bGF0b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVj
dGlvbl9jcmVhdGVfZmlsZShzZWxmLl9kZXZpY2UubGlzdGVuaW5nX3NvY2tldCwgJ3JiJykKKyAg
ICAgICAgICAgIHN0ZGluID0gU2ltdWxhdG9yUHJvY2Vzcy5fYWNjZXB0X2Nvbm5lY3Rpb25fY3Jl
YXRlX2ZpbGUoc2VsZi5fdGFyZ2V0X2hvc3QubGlzdGVuaW5nX3NvY2tldCwgJ3cnKQorICAgICAg
ICAgICAgc3Rkb3V0ID0gU2ltdWxhdG9yUHJvY2Vzcy5fYWNjZXB0X2Nvbm5lY3Rpb25fY3JlYXRl
X2ZpbGUoc2VsZi5fdGFyZ2V0X2hvc3QubGlzdGVuaW5nX3NvY2tldCwgJ3JiJykKKyAgICAgICAg
ICAgIHN0ZGVyciA9IFNpbXVsYXRvclByb2Nlc3MuX2FjY2VwdF9jb25uZWN0aW9uX2NyZWF0ZV9m
aWxlKHNlbGYuX3RhcmdldF9ob3N0Lmxpc3RlbmluZ19zb2NrZXQsICdyYicpCiAgICAgICAgIGV4
Y2VwdDoKICAgICAgICAgICAgICMgV2Ugc2V0IHNlbGYuX3Byb2MgYXMgX3Jlc2V0KCkgYW5kIF9r
aWxsKCkgZGVwZW5kIG9uIGl0LgotICAgICAgICAgICAgc2VsZi5fcHJvYyA9IFNpbXVsYXRvclBy
b2Nlc3MuUG9wZW4oc2VsZi5fcGlkLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIHNlbGYuX2Rldmlj
ZSkKKyAgICAgICAgICAgIHNlbGYuX3Byb2MgPSBTaW11bGF0b3JQcm9jZXNzLlBvcGVuKHNlbGYu
X3BpZCwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyLCBzZWxmLl90YXJnZXRfaG9zdCkKICAgICAgICAg
ICAgIGlmIHNlbGYuX3Byb2MucG9sbCgpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHNl
bGYuX3Jlc2V0KCkKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0FwcCB7fSBjcmFz
aGVkIGJlZm9yZSBzdGRpbiBjb3VsZCBiZSBhdHRhY2hlZCcuZm9ybWF0KG9zLnBhdGguYmFzZW5h
bWUoc2VsZi5fY21kWzBdKSkpCkBAIC0xMTksMTQgKzExNyw5IEBAIGNsYXNzIFNpbXVsYXRvclBy
b2Nlc3MoU2VydmVyUHJvY2Vzcyk6CiAgICAgICAgICAgICByYWlzZQogICAgICAgICBzaWduYWwu
YWxhcm0oMCkgICMgQ2FuY2VsIGFsYXJtCiAKLSAgICAgICAgc2VsZi5fcHJvYyA9IFNpbXVsYXRv
clByb2Nlc3MuUG9wZW4oc2VsZi5fcGlkLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIHNlbGYuX2Rl
dmljZSkKKyAgICAgICAgc2VsZi5fcHJvYyA9IFNpbXVsYXRvclByb2Nlc3MuUG9wZW4oc2VsZi5f
cGlkLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIHNlbGYuX3RhcmdldF9ob3N0KQogCiAgICAgZGVm
IHN0b3Aoc2VsZiwgdGltZW91dF9zZWNzPTMuMCk6CiAgICAgICAgIGlmIHNlbGYuX3Byb2M6Ci0g
ICAgICAgICAgICBzZWxmLl9kZXZpY2UuZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9j
LnBpZCkKKyAgICAgICAgICAgIHNlbGYuX3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5raWxsX3Byb2Nl
c3Moc2VsZi5fcHJvYy5waWQpCiAgICAgICAgIHJldHVybiBzdXBlcihTaW11bGF0b3JQcm9jZXNz
LCBzZWxmKS5zdG9wKHRpbWVvdXRfc2VjcykKLQotICAgIGRlZiBfa2lsbChzZWxmKToKLSAgICAg
ICAgc2VsZi5fZGV2aWNlLmV4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCi0g
ICAgICAgIGlmIHNlbGYuX3Byb2MucG9sbCgpIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2Vs
Zi5fcHJvYy53YWl0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305981</attachid>
            <date>2017-03-31 10:11:40 -0700</date>
            <delta_ts>2017-03-31 14:18:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170186-20170331101139.patch</filename>
            <type>text/plain</type>
            <size>28396</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxNDY3MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY1IEBACisyMDE3LTAzLTMxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogQWRkIHRhcmdldCBob3N0IGNvbmNlcHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDE4NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzEzMDE3OTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkaW5nIHRoZSBpZGVhIG9mIGEgdGFyZ2V0IGhvc3QuIFRhcmdl
dCBob3N0cyBhcmUgb2JqZWN0cyBjb25mb3JtaW5nIHRvIHRoZQorICAgICAgICBzdHJ1Y3R1cmUg
b2YgdGhlIFN5c3RlbUhvc3Qgb2JqZWN0IGluIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9zeXN0ZW1ob3N0LnB5CisgICAgICAgIFRhcmdldCBob3N0cyBhcmUgdGhlIGhvc3RzIGFzc29j
aWF0ZWQgd2l0aCBhIHdvcmtlciBwcm9jZXNzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHk6CisgICAgICAgIChGaWxlU3lzdGVtLm1hcF9i
YXNlX2hvc3RfcGF0aCk6IENvbnZlcnQgYSBwYXRoIGZyb20gYW4gYWJzb2x1dGUgcGF0aCBvbiB0
aGUgYmFzZQorICAgICAgICBob3N0IHRvIGFuIGFic29sdXRlIHBhdGggb24gdGhpcyBob3N0Lgor
ICAgICAgICAoRmlsZVN5c3RlbS5tb3ZlX3RvX2Jhc2VfaG9zdCk6IE1vdmUgZmlsZSBmcm9tIHRo
aXMgaG9zdCB0byB0aGUgYmFzZSBob3N0LgorICAgICAgICAoRmlsZVN5c3RlbS5tb3ZlX2Zyb21f
YmFzZV9ob3N0KTogTW92ZSBmaWxlIGZyb20gdGhlIGJhc2UgaG9zdCB0byB0aGlzIGhvc3QuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5w
eToKKyAgICAgICAgKE1vY2tGaWxlU3lzdGVtLm1hcF9iYXNlX2hvc3RfcGF0aCk6IENvbnZlcnQg
YSBwYXRoIGZyb20gYW4gYWJzb2x1dGUgcGF0aCBvbiB0aGUgYmFzZQorICAgICAgICBob3N0IHRv
IGFuIGFic29sdXRlIHBhdGggb24gdGhpcyBob3N0LgorICAgICAgICAoTW9ja0ZpbGVTeXN0ZW0u
bW92ZV90b19iYXNlX2hvc3QpOiBNb3ZlIGZpbGUgZnJvbSB0aGlzIGhvc3QgdG8gdGhlIGJhc2Ug
aG9zdC4KKyAgICAgICAgKE1vY2tGaWxlU3lzdGVtLm1vdmVfZnJvbV9iYXNlX2hvc3QpOiBNb3Zl
IGZpbGUgZnJvbSB0aGUgYmFzZSBob3N0IHRvIHRoaXMgaG9zdC4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQudGFyZ2V0X2hvc3QpOiBSZXR1
cm4gaG9zdCBkZXRlcm1pbmVkIGJ5IHdvcmtlciBudW1iZXIuCisgICAgICAgIChQb3J0LmFic3Bh
dGhfZm9yX3Rlc3QpOiBBY2NlcHQgb3B0aW9uYWwgdGFyZ2V0X2hvc3QgYXJndW1lbnQgdG8gcmV0
dXJuIGxvY2F0aW9uCisgICAgICAgIG9mIHRlc3Qgb24gYSB0YXJnZXQgaG9zdC4KKyAgICAgICAg
KFBvcnQuX2RyaXZlcl90ZW1wZGlyKTogQWNjZXB0IG9wdGlvbmFsIHRhcmdldF9ob3N0IGFyZ3Vt
ZW50IHRvIHJldHVybiBhIHRlbXBvcmFyeQorICAgICAgICBkaXJlY3Rvcnkgb24gYSB0YXJnZXQg
aG9zdC4KKyAgICAgICAgKFBvcnQuc2FtcGxlX3Byb2Nlc3MpOiBBY2NlcHQgb3B0aW9uYWwgdGFy
Z2V0X2hvc3QgYXJndW1lbnQgdG8gc2FtcGxlIHByb2Nlc3Mgb24KKyAgICAgICAgYSB0YXJnZXQg
aG9zdC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5OgorICAgICAg
ICAoRGFyd2luUG9ydC5zYW1wbGVfcHJvY2Vzcyk6IFJ1biBzYW1wbGUgcHJvY2VzcyBvbiB0YXJn
ZXQgaG9zdC4KKyAgICAgICAgKERhcndpblBvcnQuc2FtcGxlX2ZpbGVfcGF0aCk6IEFjY2VwdCBk
aXJlY3RvcnkgZm9yIGZpbGUuCisgICAgICAgIChEYXJ3aW5Qb3J0LnNwaW5kdW1wX2ZpbGVfcGF0
aCk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW5fdGVzdGNh
c2UucHk6CisgICAgICAgIChEYXJ3aW5UZXN0LnRlc3Rfc3BpbmR1bXApOiBDaGVjayBmaWxlIG1v
dmVtZW50LgorICAgICAgICAoRGFyd2luVGVzdC50ZXN0X3NhbXBsZV9wcm9jZXNzKTogRGl0dG8u
CisgICAgICAgIChEYXJ3aW5UZXN0LnRlc3Rfc2FtcGxlX3Byb2Nlc3NfZXhjZXB0aW9uKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5OgorICAgICAgICAoRHJpdmVy
Ll9faW5pdF9fKTogQWRkIGFuZCBzZXQgc2VsZi5fdGFyZ2V0X2hvc3QgdmFyaWFibGUuCisgICAg
ICAgIChEcml2ZXIuX3N0YXJ0KTogUGFzcyB0YXJnZXQgaG9zdCB0byBfZHJpdmVyX3RlbXBkaXIo
KS4KKyAgICAgICAgKERyaXZlci5zdG9wKTogQ2FsbCB0aGUgdGFyZ2V0IGhvc3QncyBybXRyZWUu
CisgICAgICAgIChEcml2ZXIuX2NoZWNrX2Zvcl9kcml2ZXJfdGltZW91dCk6IFBhc3MgdGFyZ2V0
IGhvc3QgdG8gc2FtcGxlX3Byb2Nlc3MuCisgICAgICAgIChEcml2ZXIuX2NoZWNrX2Zvcl9kcml2
ZXJfY3Jhc2hfb3JfdW5yZXNwb25zaXZlbmVzcyk6IERpdHRvLgorICAgICAgICAoRHJpdmVyLl9j
b21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KTogUGFzcyB0YXJnZXQgaG9zdCB0byBhYnNwYXRoX2Zv
cl90ZXN0IGFuZCBtYXAKKyAgICAgICAgbGF5b3V0IHRlc3QgZGlyZWN0b3J5IHRvIHRhcmdldCBo
b3N0LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHk6CisgICAgICAgIChJ
T1NQb3J0KToKKyAgICAgICAgKElPU1BvcnQudGFyZ2V0X2hvc3QpOiBSZXBsYWNlZCBkZXZpY2Vf
Zm9yX3dvcmtlcl9udW1iZXIuCisgICAgICAgIChJT1NQb3J0LnNldHVwX3Rlc3RfcnVuKTogUmVw
bGFjZSBkZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIgd2l0aCB0YXJnZXRfaG9zdC4KKyAgICAgICAg
KElPU1BvcnQuZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyKTogUmVwbGFjZWQgd2l0aCB0YXJnZXRf
aG9zdC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3MucHk6
CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLl9faW5pdF9fKTogQWNjZXB0IHRhcmdldF9ob3N0IGlu
c3RlYWQgb2Ygd29ya2VyX251bWJlci4KKyAgICAgICAgKFNlcnZlclByb2Nlc3MuX3N0YXJ0KTog
UmVwbGFjZSBfaG9zdCB3aXRoIF90YXJnZXRfaG9zdC4KKyAgICAgICAgKFNlcnZlclByb2Nlc3Mu
X2hhbmRsZV90aW1lb3V0KTogRGl0dG8uCisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLl9raWxsKTog
RGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNz
LnB5OgorICAgICAgICAoU2ltdWxhdG9yUHJvY2Vzcy5fX2luaXRfXyk6IEFjY2VwdCB0YXJnZXRf
aG9zdCBpbnN0ZWFkIG9mIHdvcmtlcl9udW1iZXIuCisgICAgICAgIChTaW11bGF0b3JQcm9jZXNz
Ll9zdGFydCk6IFJlcGxhY2UgX2RldmljZSB3aXRoIF90YXJnZXRfaG9zdC4KKyAgICAgICAgKFNp
bXVsYXRvclByb2Nlc3Muc3RvcCk6IERpdHRvLgorICAgICAgICAoU2ltdWxhdG9yUHJvY2Vzcy5f
a2lsbCk6IERlbGV0ZWQuCisKIDIwMTctMDMtMzEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBXVFIgY3Jhc2hlcyBp
biBHVEsrIHBvcnQgYWZ0ZXIgcjIxNDQxMy4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CShyZXZpc2lvbiAyMTQ2NzEpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQkod29y
a2luZyBjb3B5KQpAQCAtMzEwLDMgKzMxMCwxOCBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6
CiAKICAgICBkZWYgY29tcGFyZShzZWxmLCBwYXRoMSwgcGF0aDIpOgogICAgICAgICByZXR1cm4g
ZmlsZWNtcC5jbXAocGF0aDEsIHBhdGgyKQorCisgICAgZGVmIG1hcF9iYXNlX2hvc3RfcGF0aChz
ZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJucyBhIHBhdGggZnJvbSB0aGUgYmFzZSBob3N0
IGxvY2FsaXplZCBmb3IgdGhpcyBob3N0LiAgQnkgZGVmYXVsdCwKKyAgICAgICAgdGhpcyBob3N0
IGFzc3VtZXMgaXQgaXMgdGhlIGJhc2UgaG9zdCBhbmQgbWFwcyB0aGUgcGF0aCB0byBpdHNlbGYi
IiIKKyAgICAgICAgcmV0dXJuIHBhdGgKKworICAgIGRlZiBtb3ZlX3RvX2Jhc2VfaG9zdChzZWxm
LCBzb3VyY2UsIGRlc3RpbmF0aW9uKToKKyAgICAgICAgIiIiTW92ZXMgYSBmaWxlIGZyb20gdGhp
cyBob3N0IHRvIHRoZSBiYXNlIGhvc3QuICBCZSBkZWZhdWx0LCB0aGlzIGhvc3QKKyAgICAgICAg
YXNzdW1lcyBpdCBpcyB0aGUgYmFzZSBob3N0IGFuZCB3aWxsIGp1c3QgZXhlY3V0ZSBhIG1vdmUu
IiIiCisgICAgICAgIHNlbGYubW92ZShzb3VyY2UsIGRlc3RpbmF0aW9uKQorCisgICAgZGVmIG1v
dmVfZnJvbV9iYXNlX2hvc3Qoc2VsZiwgc291cmNlLCBkZXN0aW5hdGlvbik6CisgICAgICAgICIi
Ik1vdmVzIGEgZmlsZSBmcm9tIHRoZSBiYXNlIGhvc3QgdG8gdGhpcyBob3N0LiAgQmUgZGVmYXVs
dCwgdGhpcyBob3N0CisgICAgICAgIGFzc3VtZXMgaXQgaXMgdGhlIGJhc2UgaG9zdCBhbmQgd2ls
bCBqdXN0IGV4ZWN1dGUgYSBtb3ZlLiIiIgorICAgICAgICBzZWxmLm1vdmUoc291cmNlLCBkZXN0
aW5hdGlvbikKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxl
c3lzdGVtX21vY2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQkocmV2aXNpb24gMjE0NjcxKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQkod29ya2lu
ZyBjb3B5KQpAQCAtNDIwLDYgKzQyMCwxNSBAQCBjbGFzcyBNb2NrRmlsZVN5c3RlbShvYmplY3Qp
OgogICAgIGRlZiBjb21wYXJlKHNlbGYsIHBhdGgxLCBwYXRoMik6CiAgICAgICAgIHJldHVybiBz
ZWxmLnJlYWRfYmluYXJ5X2ZpbGUocGF0aDEpID09IHNlbGYucmVhZF9iaW5hcnlfZmlsZShwYXRo
MikKIAorICAgIGRlZiBtYXBfYmFzZV9ob3N0X3BhdGgoc2VsZiwgcGF0aCk6CisgICAgICAgIHJl
dHVybiBwYXRoCisKKyAgICBkZWYgbW92ZV90b19iYXNlX2hvc3Qoc2VsZiwgc291cmNlLCBkZXN0
aW5hdGlvbik6CisgICAgICAgIHNlbGYubW92ZShzb3VyY2UsIGRlc3RpbmF0aW9uKQorCisgICAg
ZGVmIG1vdmVfZnJvbV9iYXNlX2hvc3Qoc2VsZiwgc291cmNlLCBkZXN0aW5hdGlvbik6CisgICAg
ICAgIHNlbGYubW92ZShzb3VyY2UsIGRlc3RpbmF0aW9uKQorCiAKIGNsYXNzIFdyaXRhYmxlQmlu
YXJ5RmlsZU9iamVjdChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcywgcGF0aCk6
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkocmV2aXNpb24gMjE0NjcxKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHdvcmtpbmcgY29weSkKQEAg
LTE0Miw2ICsxNDIsOSBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2xheW91
dF90ZXN0c19kaXIgPSBoYXNhdHRyKG9wdGlvbnMsICdsYXlvdXRfdGVzdHNfZGlyJykgYW5kIG9w
dGlvbnMubGF5b3V0X3Rlc3RzX2RpciBhbmQgc2VsZi5fZmlsZXN5c3RlbS5hYnNwYXRoKG9wdGlv
bnMubGF5b3V0X3Rlc3RzX2RpcikKICAgICAgICAgc2VsZi5fdzNjX3Jlc291cmNlX2ZpbGVzID0g
Tm9uZQogCisgICAgZGVmIHRhcmdldF9ob3N0KHNlbGYsIHdvcmtlcl9udW1iZXI9Tm9uZSk6Cisg
ICAgICAgIHJldHVybiBzZWxmLmhvc3QKKwogICAgIGRlZiBhcmNoaXRlY3R1cmUoc2VsZik6CiAg
ICAgICAgIHJldHVybiBzZWxmLmdldF9vcHRpb24oJ2FyY2hpdGVjdHVyZScpCiAKQEAgLTgwMiwx
MCArODA1LDExIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBzZWxm
Lmhvc3QuZmlsZXN5c3RlbS5hYnNwYXRoKGZpbGVuYW1lKQogCiAgICAgQG1lbW9pemVkCi0gICAg
ZGVmIGFic3BhdGhfZm9yX3Rlc3Qoc2VsZiwgdGVzdF9uYW1lKToKKyAgICBkZWYgYWJzcGF0aF9m
b3JfdGVzdChzZWxmLCB0ZXN0X25hbWUsIHRhcmdldF9ob3N0PU5vbmUpOgogICAgICAgICAiIiJS
ZXR1cm5zIHRoZSBmdWxsIHBhdGggdG8gdGhlIGZpbGUgZm9yIGEgZ2l2ZW4gdGVzdCBuYW1lLiBU
aGlzIGlzIHRoZQotICAgICAgICBpbnZlcnNlIG9mIHJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoKS4i
IiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0
c19kaXIoKSwgdGVzdF9uYW1lKQorICAgICAgICBpbnZlcnNlIG9mIHJlbGF0aXZlX3Rlc3RfZmls
ZW5hbWUoKSBpZiBubyB0YXJnZXRfaG9zdCBpcyBzcGVjaWZpZWQuIiIiCisgICAgICAgIGhvc3Qg
PSB0YXJnZXRfaG9zdCBvciBzZWxmLmhvc3QKKyAgICAgICAgcmV0dXJuIGhvc3QuZmlsZXN5c3Rl
bS5qb2luKGhvc3QuZmlsZXN5c3RlbS5tYXBfYmFzZV9ob3N0X3BhdGgoc2VsZi5sYXlvdXRfdGVz
dHNfZGlyKCkpLCB0ZXN0X25hbWUpCiAKICAgICBkZWYganNjX3Jlc3VsdHNfZGlyZWN0b3J5KHNl
bGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgpCkBAIC0xMjgyLDggKzEyODYs
OSBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICBsb2NhbF9kcml2ZXJfcGF0aCA9
IGJhc2UgKyAiLmV4ZSIKICAgICAgICAgcmV0dXJuIGxvY2FsX2RyaXZlcl9wYXRoCiAKLSAgICBk
ZWYgX2RyaXZlcl90ZW1wZGlyKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3Rl
bS5ta2R0ZW1wKHByZWZpeD0nJXMtJyAlIHNlbGYuZHJpdmVyX25hbWUoKSkKKyAgICBkZWYgX2Ry
aXZlcl90ZW1wZGlyKHNlbGYsIHRhcmdldF9ob3N0PU5vbmUpOgorICAgICAgICBob3N0ID0gdGFy
Z2V0X2hvc3Qgb3Igc2VsZi5ob3N0CisgICAgICAgIHJldHVybiBob3N0LmZpbGVzeXN0ZW0ubWtk
dGVtcChwcmVmaXg9J3t9cy0nLmZvcm1hdChzZWxmLmRyaXZlcl9uYW1lKCkpKQogCiAgICAgZGVm
IF9wYXRoX3RvX3VzZXJfY2FjaGVfZGlyZWN0b3J5KHNlbGYsIHN1ZmZpeD1Ob25lKToKICAgICAg
ICAgcmV0dXJuIE5vbmUKQEAgLTEzNTQsNyArMTM1OSw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToK
ICAgICBkZWYgbG9va19mb3JfbmV3X3NhbXBsZXMoc2VsZiwgdW5yZXNwb25zaXZlX3Byb2Nlc3Nl
cywgc3RhcnRfdGltZSk6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBzYW1wbGVfcHJvY2Vzcyhz
ZWxmLCBuYW1lLCBwaWQpOgorICAgIGRlZiBzYW1wbGVfcHJvY2VzcyhzZWxmLCBuYW1lLCBwaWQs
IHRhcmdldF9ob3N0PU5vbmUpOgogICAgICAgICBwYXNzCiAKICAgICBkZWYgZmluZF9zeXN0ZW1f
cGlkKHNlbGYsIG5hbWUsIHBpZCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZGFyd2luLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3
aW4ucHkJKHJldmlzaW9uIDIxNDY3MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9k
YXJ3aW4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw4ICsxMjIsMTAgQEAgY2xhc3MgRGFyd2lu
UG9ydChBcHBsZVBvcnQpOgogICAgICAgICBhbGxfY3Jhc2hfbG9nID0gc2VsZi5fbG9va19mb3Jf
YWxsX2NyYXNoX2xvZ3NfaW5fbG9nX2RpcihzdGFydF90aW1lKQogICAgICAgICByZXR1cm4gc2Vs
Zi5fbWVyZ2VfY3Jhc2hfbG9ncyhjcmFzaF9sb2dzLCBhbGxfY3Jhc2hfbG9nLCBjcmFzaGVkX3By
b2Nlc3NlcykKIAotICAgIGRlZiBzYW1wbGVfcHJvY2VzcyhzZWxmLCBuYW1lLCBwaWQpOgotICAg
ICAgICBleGl0X3N0YXR1cyA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbCisgICAgZGVm
IHNhbXBsZV9wcm9jZXNzKHNlbGYsIG5hbWUsIHBpZCwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CisgICAg
ICAgIGhvc3QgPSB0YXJnZXRfaG9zdCBvciBzZWxmLmhvc3QKKyAgICAgICAgdGVtcGRpciA9IGhv
c3QuZmlsZXN5c3RlbS5ta2R0ZW1wKCkKKyAgICAgICAgZXhpdF9zdGF0dXMgPSBob3N0LmV4ZWN1
dGl2ZS5ydW5fY29tbWFuZChbCiAgICAgICAgICAgICAiL3Vzci9iaW4vc3VkbyIsCiAgICAgICAg
ICAgICAiLW4iLAogICAgICAgICAgICAgIi91c3Ivc2Jpbi9zcGluZHVtcCIsCkBAIC0xMzEsMjYg
KzEzMywzMiBAQCBjbGFzcyBEYXJ3aW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgICAgICAgICAxMCwK
ICAgICAgICAgICAgIDEwLAogICAgICAgICAgICAgIi1maWxlIiwKLSAgICAgICAgICAgIHNlbGYu
c3BpbmR1bXBfZmlsZV9wYXRoKG5hbWUsIHBpZCksCisgICAgICAgICAgICBzZWxmLnNwaW5kdW1w
X2ZpbGVfcGF0aChuYW1lLCBwaWQsIHN0cih0ZW1wZGlyKSksCiAgICAgICAgIF0sIHJldHVybl9l
eGl0X2NvZGU9VHJ1ZSkKICAgICAgICAgaWYgZXhpdF9zdGF0dXM6CiAgICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsKKyAgICAgICAg
ICAgICAgICBob3N0LmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChbCiAgICAgICAgICAgICAgICAgICAg
ICIvdXNyL2Jpbi9zYW1wbGUiLAogICAgICAgICAgICAgICAgICAgICBwaWQsCiAgICAgICAgICAg
ICAgICAgICAgIDEwLAogICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAgICAgICAgICAgICAg
ICAgIi1maWxlIiwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zYW1wbGVfZmlsZV9wYXRoKG5h
bWUsIHBpZCksCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2FtcGxlX2ZpbGVfcGF0aChuYW1l
LCBwaWQsIHN0cih0ZW1wZGlyKSksCiAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAg
ICBob3N0LmZpbGVzeXN0ZW0ubW92ZV90b19iYXNlX2hvc3Qoc2VsZi5zYW1wbGVfZmlsZV9wYXRo
KG5hbWUsIHBpZCwgc3RyKHRlbXBkaXIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zYW1wbGVfZmlsZV9wYXRoKG5hbWUsIHBpZCwgc2Vs
Zi5yZXN1bHRzX2RpcmVjdG9yeSgpKSkKICAgICAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciBh
cyBlOgogICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygnVW5hYmxlIHRvIHNhbXBsZSBwcm9j
ZXNzOicgKyBzdHIoZSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBob3N0LmZpbGVzeXN0
ZW0ubW92ZV90b19iYXNlX2hvc3Qoc2VsZi5zcGluZHVtcF9maWxlX3BhdGgobmFtZSwgcGlkLCBz
dHIodGVtcGRpcikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuc3BpbmR1bXBfZmlsZV9wYXRoKG5hbWUsIHBpZCwgc2VsZi5yZXN1bHRzX2RpcmVj
dG9yeSgpKSkKKyAgICAgICAgaG9zdC5maWxlc3lzdGVtLnJtdHJlZShzdHIodGVtcGRpcikpCiAK
LSAgICBkZWYgc2FtcGxlX2ZpbGVfcGF0aChzZWxmLCBuYW1lLCBwaWQpOgotICAgICAgICByZXR1
cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYucmVzdWx0c19kaXJlY3RvcnkoKSwgInswfS17
MX0tc2FtcGxlLnR4dCIuZm9ybWF0KG5hbWUsIHBpZCkpCisgICAgZGVmIHNhbXBsZV9maWxlX3Bh
dGgoc2VsZiwgbmFtZSwgcGlkLCBkaXIpOgorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKGRpciwgInswfS17MX0tc2FtcGxlLnR4dCIuZm9ybWF0KG5hbWUsIHBpZCkpCiAKLSAg
ICBkZWYgc3BpbmR1bXBfZmlsZV9wYXRoKHNlbGYsIG5hbWUsIHBpZCk6Ci0gICAgICAgIHJldHVy
biBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5yZXN1bHRzX2RpcmVjdG9yeSgpLCAiezB9LXsx
fS1zcGluZHVtcC50eHQiLmZvcm1hdChuYW1lLCBwaWQpKQorICAgIGRlZiBzcGluZHVtcF9maWxl
X3BhdGgoc2VsZiwgbmFtZSwgcGlkLCBkaXIpOgorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5
c3RlbS5qb2luKGRpciwgInswfS17MX0tc3BpbmR1bXAudHh0Ii5mb3JtYXQobmFtZSwgcGlkKSkK
IAogICAgIGRlZiBsb29rX2Zvcl9uZXdfc2FtcGxlcyhzZWxmLCB1bnJlc3BvbnNpdmVfcHJvY2Vz
c2VzLCBzdGFydF90aW1lKToKICAgICAgICAgc2FtcGxlX2ZpbGVzID0ge30KSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW5fdGVzdGNhc2UucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbl90ZXN0Y2FzZS5weQkocmV2aXNpb24g
MjE0NjcxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbl90ZXN0Y2FzZS5w
eQkod29ya2luZyBjb3B5KQpAQCAtOTIsOSArOTIsMTIgQEAgY2xhc3MgRGFyd2luVGVzdChwb3J0
X3Rlc3RjYXNlLlBvcnRUZXN0QwogICAgICAgICAgICAgcHJpbnQgYXJncwogCiAgICAgICAgIHBv
cnQgPSBzZWxmLm1ha2VfcG9ydCgpCi0gICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVj
dXRpdmUyKHJ1bl9jb21tYW5kX2ZuPWxvZ2dpbmdfcnVuX2NvbW1hbmQpCi0gICAgICAgIGV4cGVj
dGVkX3N0ZG91dCA9ICJbJy91c3IvYmluL3N1ZG8nLCAnLW4nLCAnL3Vzci9zYmluL3NwaW5kdW1w
JywgNDIsIDEwLCAxMCwgJy1maWxlJywgJy9tb2NrLWJ1aWxkL2xheW91dC10ZXN0LXJlc3VsdHMv
dGVzdC00Mi1zcGluZHVtcC50eHQnXVxuIgorICAgICAgICBwb3J0Lmhvc3QuZmlsZXN5c3RlbS5m
aWxlc1snL19faW1fdG1wL3RtcF8wXy90ZXN0LTQyLXNwaW5kdW1wLnR4dCddID0gJ1NwaW5kdW1w
IGZpbGUnCisgICAgICAgIHBvcnQuaG9zdC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihydW5f
Y29tbWFuZF9mbj1sb2dnaW5nX3J1bl9jb21tYW5kKQorICAgICAgICBleHBlY3RlZF9zdGRvdXQg
PSAiWycvdXNyL2Jpbi9zdWRvJywgJy1uJywgJy91c3Ivc2Jpbi9zcGluZHVtcCcsIDQyLCAxMCwg
MTAsICctZmlsZScsICcvX19pbV90bXAvdG1wXzBfL3Rlc3QtNDItc3BpbmR1bXAudHh0J11cbiIK
ICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuc2FtcGxl
X3Byb2Nlc3MsIGFyZ3M9Wyd0ZXN0JywgNDJdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rk
b3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuaG9zdC5maWxlc3lzdGVtLmZpbGVz
WycvbW9jay1idWlsZC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3QtNDItc3BpbmR1bXAudHh0J10s
ICdTcGluZHVtcCBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocG9ydC5ob3N0LmZp
bGVzeXN0ZW0uZmlsZXNbJy9fX2ltX3RtcC90bXBfMF8vdGVzdC00Mi1zcGluZHVtcC50eHQnXSkK
IAogICAgIGRlZiB0ZXN0X3NhbXBsZV9wcm9jZXNzKHNlbGYpOgogCkBAIC0xMDUsOSArMTA4LDEy
IEBAIGNsYXNzIERhcndpblRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdEMKICAgICAgICAgICAg
IHJldHVybiAwCiAKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKLSAgICAgICAgcG9y
dC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIocnVuX2NvbW1hbmRfZm49bG9nZ2luZ19ydW5f
Y29tbWFuZCkKLSAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIlsnL3Vzci9iaW4vc2FtcGxlJywg
NDIsIDEwLCAxMCwgJy1maWxlJywgJy9tb2NrLWJ1aWxkL2xheW91dC10ZXN0LXJlc3VsdHMvdGVz
dC00Mi1zYW1wbGUudHh0J11cbiIKKyAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmlsZXNb
Jy9fX2ltX3RtcC90bXBfMF8vdGVzdC00Mi1zYW1wbGUudHh0J10gPSAnU2FtcGxlIGZpbGUnCisg
ICAgICAgIHBvcnQuaG9zdC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihydW5fY29tbWFuZF9m
bj1sb2dnaW5nX3J1bl9jb21tYW5kKQorICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAiWycvdXNy
L2Jpbi9zYW1wbGUnLCA0MiwgMTAsIDEwLCAnLWZpbGUnLCAnL19faW1fdG1wL3RtcF8wXy90ZXN0
LTQyLXNhbXBsZS50eHQnXVxuIgogICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1
dHMoc2VsZiwgcG9ydC5zYW1wbGVfcHJvY2VzcywgYXJncz1bJ3Rlc3QnLCA0Ml0sIGV4cGVjdGVk
X3N0ZG91dD1leHBlY3RlZF9zdGRvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5o
b3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9tb2NrLWJ1aWxkL2xheW91dC10ZXN0LXJlc3VsdHMvdGVz
dC00Mi1zYW1wbGUudHh0J10sICdTYW1wbGUgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNO
b25lKHBvcnQuaG9zdC5maWxlc3lzdGVtLmZpbGVzWycvX19pbV90bXAvdG1wXzBfL3Rlc3QtNDIt
c2FtcGxlLnR4dCddKQogCiAgICAgZGVmIHRlc3Rfc2FtcGxlX3Byb2Nlc3NfZXhjZXB0aW9uKHNl
bGYpOgogICAgICAgICBkZWYgdGhyb3dpbmdfcnVuX2NvbW1hbmQoYXJncyk6CkBAIC0xMTYsNSAr
MTIyLDUgQEAgY2xhc3MgRGFyd2luVGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0QwogICAgICAg
ICAgICAgcmFpc2UgU2NyaXB0RXJyb3IoIk1PQ0sgc2NyaXB0IGVycm9yIikKIAogICAgICAgICBw
b3J0ID0gc2VsZi5tYWtlX3BvcnQoKQotICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhl
Y3V0aXZlMihydW5fY29tbWFuZF9mbj10aHJvd2luZ19ydW5fY29tbWFuZCkKKyAgICAgICAgcG9y
dC5ob3N0LmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPXRocm93aW5n
X3J1bl9jb21tYW5kKQogICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2Vs
ZiwgcG9ydC5zYW1wbGVfcHJvY2VzcywgYXJncz1bJ3Rlc3QnLCA0Ml0pCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHJldmlzaW9uIDIxNDY3MSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsx
MzMsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQK
ICAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIKICAgICAgICAgc2Vs
Zi5fbm9fdGltZW91dCA9IG5vX3RpbWVvdXQKKyAgICAgICAgc2VsZi5fdGFyZ2V0X2hvc3QgPSBw
b3J0LnRhcmdldF9ob3N0KHdvcmtlcl9udW1iZXIpCiAKICAgICAgICAgc2VsZi5fZHJpdmVyX3Rl
bXBkaXIgPSBOb25lCiAgICAgICAgIHNlbGYuX2RyaXZlcl91c2VyX2RpcmVjdG9yeV9zdWZmaXgg
PSBOb25lCkBAIC0zNTksMTYgKzM2MCwxNiBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAg
ICAgIyBFYWNoIGRyaXZlciBwcm9jZXNzIHNob3VsZCBiZSB1c2luZyBpbmRpdmlkdWFsIGRpcmVj
dG9yaWVzIHVuZGVyIF9kcml2ZXJfdGVtcGRpciAod2hpY2ggaXMgZGVsZXRlZCB3aGVuIHN0b3Bw
aW5nKSwKICAgICAgICAgIyBob3dldmVyIHNvbWUgc3Vic3lzdGVtcyBvbiBzb21lIHBsYXRmb3Jt
cyBjb3VsZCBlbmQgdXAgdXNpbmcgcHJvY2VzcyBkZWZhdWx0IG9uZXMuCiAgICAgICAgIHNlbGYu
X3BvcnQuX2NsZWFyX2dsb2JhbF9jYWNoZXNfYW5kX3RlbXBvcmFyeV9maWxlcygpCi0gICAgICAg
IHNlbGYuX2RyaXZlcl90ZW1wZGlyID0gc2VsZi5fcG9ydC5fZHJpdmVyX3RlbXBkaXIoKQorICAg
ICAgICBzZWxmLl9kcml2ZXJfdGVtcGRpciA9IHNlbGYuX3BvcnQuX2RyaXZlcl90ZW1wZGlyKHNl
bGYuX3RhcmdldF9ob3N0KQogICAgICAgICBzZWxmLl9kcml2ZXJfdXNlcl9kaXJlY3Rvcnlfc3Vm
Zml4ID0gb3MucGF0aC5iYXNlbmFtZShzdHIoc2VsZi5fZHJpdmVyX3RlbXBkaXIpKQogICAgICAg
ICB1c2VyX2NhY2hlX2RpcmVjdG9yeSA9IHNlbGYuX3BvcnQuX3BhdGhfdG9fdXNlcl9jYWNoZV9k
aXJlY3Rvcnkoc2VsZi5fZHJpdmVyX3VzZXJfZGlyZWN0b3J5X3N1ZmZpeCkKICAgICAgICAgaWYg
dXNlcl9jYWNoZV9kaXJlY3Rvcnk6Ci0gICAgICAgICAgICBzZWxmLl9wb3J0Ll9maWxlc3lzdGVt
Lm1heWJlX21ha2VfZGlyZWN0b3J5KHVzZXJfY2FjaGVfZGlyZWN0b3J5KQorICAgICAgICAgICAg
c2VsZi5fdGFyZ2V0X2hvc3QuZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeSh1c2VyX2Nh
Y2hlX2RpcmVjdG9yeSkKICAgICAgICAgICAgIHNlbGYuX2RyaXZlcl91c2VyX2NhY2hlX2RpcmVj
dG9yeSA9IHVzZXJfY2FjaGVfZGlyZWN0b3J5CiAgICAgICAgIGVudmlyb25tZW50ID0gc2VsZi5f
c2V0dXBfZW52aXJvbl9mb3JfdGVzdCgpCiAgICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19u
YW1lID0gTm9uZQogICAgICAgICBzZWxmLl9jcmFzaGVkX3BpZCA9IE5vbmUKLSAgICAgICAgc2Vs
Zi5fc2VydmVyX3Byb2Nlc3MgPSBzZWxmLl9wb3J0Ll90ZXN0X3J1bm5lcl9wcm9jZXNzX2NvbnN0
cnVjdG9yKHNlbGYuX3BvcnQsIHNlbGYuX3NlcnZlcl9uYW1lLCBzZWxmLmNtZF9saW5lKHBpeGVs
X3Rlc3RzLCBwZXJfdGVzdF9hcmdzKSwgZW52aXJvbm1lbnQsIHdvcmtlcl9udW1iZXI9c2VsZi5f
d29ya2VyX251bWJlcikKKyAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MgPSBzZWxmLl9wb3J0
Ll90ZXN0X3J1bm5lcl9wcm9jZXNzX2NvbnN0cnVjdG9yKHNlbGYuX3BvcnQsIHNlbGYuX3NlcnZl
cl9uYW1lLCBzZWxmLmNtZF9saW5lKHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKSwgZW52aXJv
bm1lbnQsIHRhcmdldF9ob3N0PXNlbGYuX3RhcmdldF9ob3N0KQogICAgICAgICBzZWxmLl9zZXJ2
ZXJfcHJvY2Vzcy5zdGFydCgpCiAKICAgICBkZWYgX3J1bl9wb3N0X3N0YXJ0X3Rhc2tzKHNlbGYp
OgpAQCAtMzg4LDEwICszODksMTAgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICAg
ICAgICAgc2VsZi5fcHJvZmlsZXIucHJvZmlsZV9hZnRlcl9leGl0KCkKIAogICAgICAgICBpZiBz
ZWxmLl9kcml2ZXJfdGVtcGRpcjoKLSAgICAgICAgICAgIHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0u
cm10cmVlKHN0cihzZWxmLl9kcml2ZXJfdGVtcGRpcikpCisgICAgICAgICAgICBzZWxmLl90YXJn
ZXRfaG9zdC5maWxlc3lzdGVtLnJtdHJlZShzdHIoc2VsZi5fZHJpdmVyX3RlbXBkaXIpKQogICAg
ICAgICAgICAgc2VsZi5fZHJpdmVyX3RlbXBkaXIgPSBOb25lCiAgICAgICAgIGlmIHNlbGYuX2Ry
aXZlcl91c2VyX2NhY2hlX2RpcmVjdG9yeToKLSAgICAgICAgICAgIHNlbGYuX3BvcnQuX2ZpbGVz
eXN0ZW0ucm10cmVlKHNlbGYuX2RyaXZlcl91c2VyX2NhY2hlX2RpcmVjdG9yeSkKKyAgICAgICAg
ICAgIHNlbGYuX3RhcmdldF9ob3N0LmZpbGVzeXN0ZW0ucm10cmVlKHNlbGYuX2RyaXZlcl91c2Vy
X2NhY2hlX2RpcmVjdG9yeSkKICAgICAgICAgICAgIHNlbGYuX2RyaXZlcl91c2VyX2NhY2hlX2Rp
cmVjdG9yeSA9IE5vbmUKIAogICAgIGRlZiBjbWRfbGluZShzZWxmLCBwaXhlbF90ZXN0cywgcGVy
X3Rlc3RfYXJncyk6CkBAIC00MzIsNyArNDMzLDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAg
ICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCArPSBlcnJfbGluZQogICAgICAgICAgICAg
X2xvZy5kZWJ1ZyhlcnJfbGluZSkKICAgICAgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlv
bigic2FtcGxlX29uX3RpbWVvdXQiKToKLSAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnNhbXBs
ZV9wcm9jZXNzKGNoaWxkX3Byb2Nlc3NfbmFtZSwgY2hpbGRfcHJvY2Vzc19waWQpCisgICAgICAg
ICAgICAgICAgc2VsZi5fcG9ydC5zYW1wbGVfcHJvY2VzcyhjaGlsZF9wcm9jZXNzX25hbWUsIGNo
aWxkX3Byb2Nlc3NfcGlkLCBzZWxmLl90YXJnZXRfaG9zdCkKICAgICAgICAgaWYgb3V0X2xpbmUg
PT0gIkZBSUw6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBub3RpZnlEb25lIHRvIGJlIGNhbGxlZFxu
IjoKICAgICAgICAgICAgIHNlbGYuX2RyaXZlcl90aW1lZF9vdXQgPSBUcnVlCiAKQEAgLTQ2MSw3
ICs0NjIsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgICAgIF9sb2cuZGVidWco
JyVzIGlzIHVucmVzcG9uc2l2ZSwgcGlkID0gJXMnICUgKGNoaWxkX3Byb2Nlc3NfbmFtZSwgc3Ry
KGNoaWxkX3Byb2Nlc3NfcGlkKSkpCiAgICAgICAgICAgICBzZWxmLl9kcml2ZXJfdGltZWRfb3V0
ID0gVHJ1ZQogICAgICAgICAgICAgaWYgY2hpbGRfcHJvY2Vzc19waWQ6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fcG9ydC5zYW1wbGVfcHJvY2VzcyhjaGlsZF9wcm9jZXNzX25hbWUsIGNoaWxkX3By
b2Nlc3NfcGlkKQorICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuc2FtcGxlX3Byb2Nlc3MoY2hp
bGRfcHJvY2Vzc19uYW1lLCBjaGlsZF9wcm9jZXNzX3BpZCwgc2VsZi5fdGFyZ2V0X2hvc3QpCiAg
ICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCArPSBlcnJvcl9saW5lCiAgICAgICAgICAg
ICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy53cml0ZSgnI1NBTVBMRSBGSU5JU0hFRFxuJywgVHJ1ZSkg
ICMgTXVzdCBiZSBhYmxlIHRvIGlnbm9yZSBhIGJyb2tlbiBwaXBlIGhlcmUsIHRhcmdldCBwcm9j
ZXNzIG1heSBhbHJlYWR5IGJlIGNsb3NlZC4KICAgICAgICAgICAgIHJldHVybiBUcnVlCkBAIC00
NzQsOSArNDc1LDkgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgIGVsaWYgc2VsZi5p
c193ZWJfcGxhdGZvcm1fdGVzdChkcml2ZXJfaW5wdXQudGVzdF9uYW1lKSBvciAoc2VsZi5pc19o
dHRwX3Rlc3QoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkgYW5kIChzZWxmLl9wb3J0LmdldF9vcHRp
b24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpIG9yIHN5cy5wbGF0Zm9ybSA9PSAiY3lnd2luIikpOgog
ICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYudGVzdF90b191cmkoZHJpdmVyX2lucHV0LnRlc3Rf
bmFtZSkKICAgICAgICAgICAgIGNvbW1hbmQgKz0gIictLWFic29sdXRlUGF0aCciCi0gICAgICAg
ICAgICBjb21tYW5kICs9IHNlbGYuX3BvcnQuYWJzcGF0aF9mb3JfdGVzdChkcml2ZXJfaW5wdXQu
dGVzdF9uYW1lKQorICAgICAgICAgICAgY29tbWFuZCArPSBzZWxmLl9wb3J0LmFic3BhdGhfZm9y
X3Rlc3QoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSwgc2VsZi5fdGFyZ2V0X2hvc3QpCiAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBjb21tYW5kID0gc2VsZi5fcG9ydC5hYnNwYXRoX2Zvcl90ZXN0
KGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpCisgICAgICAgICAgICBjb21tYW5kID0gc2VsZi5fcG9y
dC5hYnNwYXRoX2Zvcl90ZXN0KGRyaXZlcl9pbnB1dC50ZXN0X25hbWUsIHNlbGYuX3RhcmdldF9o
b3N0KQogICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nOgogICAgICAgICAg
ICAgICAgIGNvbW1hbmQgPSBwYXRoLmN5Z3BhdGgoY29tbWFuZCkKIApJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvaW9zLnB5CShyZXZpc2lvbiAyMTQ2NzEpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvaW9zLnB5CSh3b3JraW5nIGNvcHkpCkBAIC03NywxMyArNzcsMTMgQEAgY2xh
c3MgSU9TUG9ydChEYXJ3aW5Qb3J0KToKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcign
RGV2aWNlIGF0IHt9IGNvdWxkIG5vdCBiZSBmb3VuZCcuZm9ybWF0KG51bWJlcikpCiAgICAgICAg
IHJldHVybiBkZXZpY2UKIAotICAgICMgRklYTUU6IFRoaXMgaXMgb25seSBleHBvc2VkIHNvIHRo
YXQgU2ltdWxhdG9yUHJvY2VzcyBjYW4gdXNlIGl0LgotICAgIGRlZiBkZXZpY2VfZm9yX3dvcmtl
cl9udW1iZXIoc2VsZiwgbnVtYmVyKToKLSAgICAgICAgaWYgc2VsZi5fcHJpbnRpbmdfY21kX2xp
bmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICMgQSBkZXZpY2UgaXMgdGhlIHRhcmdl
dCBob3N0IGZvciBhIHNwZWNpZmljIHdvcmtlciBudW1iZXIuCisgICAgZGVmIHRhcmdldF9ob3N0
KHNlbGYsIHdvcmtlcl9udW1iZXI9Tm9uZSk6CisgICAgICAgIGlmIHNlbGYuX3ByaW50aW5nX2Nt
ZF9saW5lIG9yIHdvcmtlcl9udW1iZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxm
Lmhvc3QKICAgICAgICAgIyBXaGVuIHVzaW5nIHNpbXVsYXRlZCBkZXZpY2VzLCB0aGlzIG1lYW5z
IHdlYmtpdHB5IGlzIG1hbmFnaW5nIHRoZSBkZXZpY2VzLgogICAgICAgICBpZiBzZWxmLnVzaW5n
X211bHRpcGxlX2RldmljZXMoKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl90ZXN0aW5nX2Rl
dmljZShudW1iZXIpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fdGVzdGluZ19kZXZpY2Uod29y
a2VyX251bWJlcikKICAgICAgICAgcmV0dXJuIHNlbGYuX2N1cnJlbnRfZGV2aWNlCiAKICAgICBk
ZWYgZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToKQEAgLTExMSw3ICsxMTEsNyBA
QCBjbGFzcyBJT1NQb3J0KERhcndpblBvcnQpOgogICAgICAgICBzZWxmLl9jcmVhdGVfZGV2aWNl
cyhkZXZpY2VfY2xhc3MpCiAKICAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuY2hpbGRfcHJv
Y2Vzc2VzKCkpOgotICAgICAgICAgICAgZGV2aWNlID0gc2VsZi5kZXZpY2VfZm9yX3dvcmtlcl9u
dW1iZXIoaSkKKyAgICAgICAgICAgIGRldmljZSA9IHNlbGYudGFyZ2V0X2hvc3QoaSkKICAgICAg
ICAgICAgIF9sb2cuZGVidWcoJ0luc3RhbGxpbmcgdG8ge30nLmZvcm1hdChkZXZpY2UpKQogICAg
ICAgICAgICAgIyBXaXRob3V0IHBhc3NpbmcgRFlMRF9MSUJSQVJZX1BBVEgsIGxpYldlYkNvcmVU
ZXN0U3VwcG9ydCBjYW5ub3QgYmUgbG9hZGVkIGFuZCBEUlQvV0tUUiB3aWxsIGNyYXNoIHByZS1s
YXVuY2gsCiAgICAgICAgICAgICAjIGxlYXZpbmcgYSBjcmFzaCBsb2cgd2hpY2ggd2lsbCBiZSBw
aWNrZWQgdXAgaW4gcmVzdWx0cy4gIE5vIERZTERfRlJBTUVXT1JLX1BBVEggd2lsbCBhbHNvIGNh
dXNlIHRoZSBEUlQvV0tUUiB0bwpAQCAtMTIwLDcgKzEyMCw3IEBAIGNsYXNzIElPU1BvcnQoRGFy
d2luUG9ydCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGYWlsZWQgdG8g
aW5zdGFsbCBhcHAge30gb24gZGV2aWNlIHt9Jy5mb3JtYXQoc2VsZi5fcGF0aF90b19kcml2ZXIo
KSwgZGV2aWNlLnVkaWQpKQogCiAgICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxmLmNoaWxkX3By
b2Nlc3NlcygpKToKLSAgICAgICAgICAgIHNlbGYuZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyKGkp
LnByZXBhcmVfZm9yX3Rlc3RpbmcoKQorICAgICAgICAgICAgc2VsZi50YXJnZXRfaG9zdChpKS5w
cmVwYXJlX2Zvcl90ZXN0aW5nKCkKIAogICAgIGRlZiBjbGVhbl91cF90ZXN0X3J1bihzZWxmKToK
ICAgICAgICAgc3VwZXIoSU9TUG9ydCwgc2VsZikuY2xlYW5fdXBfdGVzdF9ydW4oKQpAQCAtMTI5
LDkgKzEyOSw5IEBAIGNsYXNzIElPU1BvcnQoRGFyd2luUG9ydCk6CiAgICAgICAgICMgRmFpbHVy
ZSB0byB0ZWFyZG93biBkZXZpY2VzIGNhbiBsZWF2ZSB0aGluZ3MgaW4gYSBiYWQgc3RhdGUuCiAg
ICAgICAgIGV4Y2VwdGlvbl9saXN0ID0gW10KICAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYu
Y2hpbGRfcHJvY2Vzc2VzKCkpOgotICAgICAgICAgICAgZGV2aWNlID0gc2VsZi5kZXZpY2VfZm9y
X3dvcmtlcl9udW1iZXIoaSkKKyAgICAgICAgICAgIGRldmljZSA9IHNlbGYudGFyZ2V0X2hvc3Qo
aSkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmRldmljZV9mb3Jfd29y
a2VyX251bWJlcihpKS5maW5pc2hlZF90ZXN0aW5nKCkKKyAgICAgICAgICAgICAgICBzZWxmLnRh
cmdldF9ob3N0KGkpLmZpbmlzaGVkX3Rlc3RpbmcoKQogICAgICAgICAgICAgZXhjZXB0IEJhc2VF
eGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgICB0cmFjZSA9IHRyYWNlYmFjay5mb3JtYXRf
ZXhjKCkKICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGUsIEV4Y2VwdGlvbik6CkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CShyZXZp
c2lvbiAyMTQ2NzEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nl
c3MucHkJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgU2VydmVyUHJvY2Vz
cyhvYmplY3QpOgogICAgIGluZGVmaW5pdGVseS4gVGhlIGNsYXNzIGFsc28gaGFuZGxlcyB0cmFu
c3BhcmVudGx5IHJlc3RhcnRpbmcgcHJvY2Vzc2VzCiAgICAgYXMgbmVjZXNzYXJ5IHRvIGtlZXAg
aXNzdWluZyBjb21tYW5kcy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaiwg
bmFtZSwgY21kLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0cmVhdF9ub19k
YXRhX2FzX2NyYXNoPUZhbHNlLCB3b3JrZXJfbnVtYmVyPU5vbmUpOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwb3J0X29iaiwgbmFtZSwgY21kLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVz
PUZhbHNlLCB0cmVhdF9ub19kYXRhX2FzX2NyYXNoPUZhbHNlLCB0YXJnZXRfaG9zdD1Ob25lKToK
ICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnRfb2JqCiAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1l
ICAjIFNob3VsZCBiZSB0aGUgY29tbWFuZCBuYW1lIChlLmcuIER1bXBSZW5kZXJUcmVlLCBJbWFn
ZURpZmYpCiAgICAgICAgIHNlbGYuX2NtZCA9IGNtZApAQCAtNjksNyArNjksNyBAQCBjbGFzcyBT
ZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAgICAgICMgRG9uJ3Qgc2V0IGlmIHRoZXJlIHdpbGwg
YmUgYmluYXJ5IGRhdGEgb3IgdGhlIGRhdGEgbXVzdCBiZSBBU0NJSSBlbmNvZGVkLgogICAgICAg
ICBzZWxmLl91bml2ZXJzYWxfbmV3bGluZXMgPSB1bml2ZXJzYWxfbmV3bGluZXMKICAgICAgICAg
c2VsZi5fdHJlYXRfbm9fZGF0YV9hc19jcmFzaCA9IHRyZWF0X25vX2RhdGFfYXNfY3Jhc2gKLSAg
ICAgICAgc2VsZi5faG9zdCA9IHNlbGYuX3BvcnQuaG9zdAorICAgICAgICBzZWxmLl90YXJnZXRf
aG9zdCA9IHRhcmdldF9ob3N0IG9yIHBvcnRfb2JqLmhvc3QKICAgICAgICAgc2VsZi5fcGlkID0g
Tm9uZQogICAgICAgICBzZWxmLl9yZXNldCgpCiAKQEAgLTExNiw5ICsxMTYsOSBAQCBjbGFzcyBT
ZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAgICAgICMgY2xvc2VfZmRzIGlzIGEgd29ya2Fyb3Vu
ZCBmb3IgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIzMjAKICAgICAgICAgIyBJbiBQeXRo
b24gMi43LjEwLCBjbG9zZV9mZHMgaXMgYWxzbyBzdXBwb3J0ZWQgb24gV2luZG93cy4KICAgICAg
ICAgY2xvc2VfZmRzID0gVHJ1ZQotICAgICAgICBzZWxmLl9wcm9jID0gc2VsZi5faG9zdC5leGVj
dXRpdmUucG9wZW4oc2VsZi5fY21kLCBzdGRpbj1zZWxmLl9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAot
ICAgICAgICAgICAgc3Rkb3V0PXNlbGYuX2hvc3QuZXhlY3V0aXZlLlBJUEUsCi0gICAgICAgICAg
ICBzdGRlcnI9c2VsZi5faG9zdC5leGVjdXRpdmUuUElQRSwKKyAgICAgICAgc2VsZi5fcHJvYyA9
IHNlbGYuX3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5wb3BlbihzZWxmLl9jbWQsIHN0ZGluPXNlbGYu
X3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAorICAgICAgICAgICAgc3Rkb3V0PXNlbGYuX3Rh
cmdldF9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAorICAgICAgICAgICAgc3RkZXJyPXNlbGYuX3Rhcmdl
dF9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAogICAgICAgICAgICAgY2xvc2VfZmRzPWNsb3NlX2ZkcywK
ICAgICAgICAgICAgIGVudj1zZWxmLl9lbnYsCiAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGlu
ZXM9c2VsZi5fdW5pdmVyc2FsX25ld2xpbmVzKQpAQCAtMjE5LDcgKzIxOSw3IEBAIGNsYXNzIFNl
cnZlclByb2Nlc3Mob2JqZWN0KToKICAgICBkZWYgX2hhbmRsZV90aW1lb3V0KHNlbGYpOgogICAg
ICAgICBzZWxmLnRpbWVkX291dCA9IFRydWUKICAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0
aW9uKCJzYW1wbGVfb25fdGltZW91dCIpOgotICAgICAgICAgICAgc2VsZi5fcG9ydC5zYW1wbGVf
cHJvY2VzcyhzZWxmLl9uYW1lLCBzZWxmLl9wcm9jLnBpZCkKKyAgICAgICAgICAgIHNlbGYuX3Bv
cnQuc2FtcGxlX3Byb2Nlc3Moc2VsZi5fbmFtZSwgc2VsZi5fcHJvYy5waWQsIHNlbGYuX3Rhcmdl
dF9ob3N0KQogCiAgICAgZGVmIF9zcGxpdF9zdHJpbmdfYWZ0ZXJfaW5kZXgoc2VsZiwgc3RyaW5n
LCBpbmRleCk6CiAgICAgICAgIHJldHVybiBzdHJpbmdbOmluZGV4XSwgc3RyaW5nW2luZGV4Ol0K
QEAgLTM3OCw3ICszNzgsNyBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAgICAg
IHNlbGYuc3RvcCgwLjApCiAKICAgICBkZWYgX2tpbGwoc2VsZik6Ci0gICAgICAgIHNlbGYuX2hv
c3QuZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9jLnBpZCkKKyAgICAgICAgc2VsZi5f
dGFyZ2V0X2hvc3QuZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9jLnBpZCkKICAgICAg
ICAgaWYgc2VsZi5fcHJvYy5wb2xsKCkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9w
cm9jLndhaXQoKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3By
b2Nlc3NfbW9jay5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
c2VydmVyX3Byb2Nlc3NfbW9jay5weQkocmV2aXNpb24gMjE0NjcxKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzX21vY2sucHkJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKIAogCiBjbGFzcyBNb2NrU2VydmVyUHJvY2VzcyhvYmplY3QpOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaj1Ob25lLCBuYW1lPU5vbmUsIGNtZD1Ob25lLCBl
bnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCBsaW5lcz1Ob25lLCBjcmFzaGVkPUZh
bHNlLCB3b3JrZXJfbnVtYmVyPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29i
aj1Ob25lLCBuYW1lPU5vbmUsIGNtZD1Ob25lLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVz
PUZhbHNlLCBsaW5lcz1Ob25lLCBjcmFzaGVkPUZhbHNlLCB0YXJnZXRfaG9zdD1Ob25lKToKICAg
ICAgICAgc2VsZi50aW1lZF9vdXQgPSBGYWxzZQogICAgICAgICBzZWxmLmxpbmVzID0gbGluZXMg
b3IgW10KICAgICAgICAgc2VsZi5jcmFzaGVkID0gY3Jhc2hlZApJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5weQkocmV2aXNpb24gMjE0
NjcxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC03MCwxMyArNzAsMTEgQEAgY2xhc3MgU2ltdWxhdG9yUHJvY2Vz
cyhTZXJ2ZXJQcm9jZXNzKToKICAgICAgICAgICAgIHNlbGYuc29ja2V0LmNsb3NlKCkKICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQKIAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaiwg
bmFtZSwgY21kLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0cmVhdF9ub19k
YXRhX2FzX2NyYXNoPUZhbHNlLCB0YXJnZXRfaG9zdD1Ob25lKToKKyAgICAgICAgZW52WydQT1JU
J10gPSBzdHIodGFyZ2V0X2hvc3QubGlzdGVuaW5nX3BvcnQoKSkgICMgVGhlIHRhcmdldF9ob3N0
IHNob3VsZCBiZSBhIGRldmljZS4KKyAgICAgICAgc3VwZXIoU2ltdWxhdG9yUHJvY2Vzcywgc2Vs
ZikuX19pbml0X18ocG9ydF9vYmosIG5hbWUsIGNtZCwgZW52LCB1bml2ZXJzYWxfbmV3bGluZXMs
IHRyZWF0X25vX2RhdGFfYXNfY3Jhc2gsIHRhcmdldF9ob3N0KQogCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHBvcnRfb2JqLCBuYW1lLCBjbWQsIGVudj1Ob25lLCB1bml2ZXJzYWxfbmV3bGluZXM9
RmFsc2UsIHRyZWF0X25vX2RhdGFfYXNfY3Jhc2g9RmFsc2UsIHdvcmtlcl9udW1iZXI9Tm9uZSk6
CiAgICAgICAgIHNlbGYuX2J1bmRsZV9pZCA9IHBvcnRfb2JqLmFwcF9pZGVudGlmaWVyX2Zyb21f
YnVuZGxlKGNtZFswXSkKLSAgICAgICAgc2VsZi5fZGV2aWNlID0gcG9ydF9vYmouZGV2aWNlX2Zv
cl93b3JrZXJfbnVtYmVyKHdvcmtlcl9udW1iZXIpCi0KLSAgICAgICAgZW52WydQT1JUJ10gPSBz
dHIoc2VsZi5fZGV2aWNlLmxpc3RlbmluZ19wb3J0KCkpCi0gICAgICAgIHN1cGVyKFNpbXVsYXRv
clByb2Nlc3MsIHNlbGYpLl9faW5pdF9fKHBvcnRfb2JqLCBuYW1lLCBjbWQsIGVudiwgdW5pdmVy
c2FsX25ld2xpbmVzLCB0cmVhdF9ub19kYXRhX2FzX2NyYXNoKQogCiAgICAgQHN0YXRpY21ldGhv
ZAogICAgIGRlZiBfYWNjZXB0X2Nvbm5lY3Rpb25fY3JlYXRlX2ZpbGUoc2VydmVyLCB0eXBlKToK
QEAgLTkxLDEyICs4OSwxMiBAQCBjbGFzcyBTaW11bGF0b3JQcm9jZXNzKFNlcnZlclByb2Nlc3Mp
OgogCiAgICAgICAgICMgRWFjaCBkZXZpY2UgaGFzIGEgbGlzdGVuaW5nIHNvY2tldCBpbnRpdGls
YWl6ZWQgZHVyaW5nIHRoZSBwb3J0J3Mgc2V0dXBfdGVzdF9ydW4uCiAgICAgICAgICMgMyBjbGll
bnQgY29ubmVjdGlvbnMgd2lsbCBiZSBhY2NlcHRlZCBmb3Igc3RkaW4sIHN0ZG91dCBhbmQgc3Rk
ZXJyIGluIHRoYXQgb3JkZXIuCi0gICAgICAgIHNlbGYuX2RldmljZS5saXN0ZW5pbmdfc29ja2V0
Lmxpc3RlbigzKQotICAgICAgICBzZWxmLl9waWQgPSBzZWxmLl9kZXZpY2UubGF1bmNoX2FwcChz
ZWxmLl9idW5kbGVfaWQsIHNlbGYuX2NtZFsxOl0sIGVudj1zZWxmLl9lbnYpCisgICAgICAgIHNl
bGYuX3RhcmdldF9ob3N0Lmxpc3RlbmluZ19zb2NrZXQubGlzdGVuKDMpCisgICAgICAgIHNlbGYu
X3BpZCA9IHNlbGYuX3RhcmdldF9ob3N0LmxhdW5jaF9hcHAoc2VsZi5fYnVuZGxlX2lkLCBzZWxm
Ll9jbWRbMTpdLCBlbnY9c2VsZi5fZW52KQogCiAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwg
ZnJhbWUpOgogICAgICAgICAgICAgYXNzZXJ0IHNpZ251bSA9PSBzaWduYWwuU0lHQUxSTQotICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdUaW1lZCBvdXQgd2FpdGluZyBmb3IgcHJvY2VzcyB0
byBjb25uZWN0IGF0IHBvcnQge30nLmZvcm1hdChzZWxmLl9kZXZpY2UubGlzdGVuaW5nX3BvcnQo
KSkpCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1RpbWVkIG91dCB3YWl0aW5nIGZvciBw
cm9jZXNzIHRvIGNvbm5lY3QgYXQgcG9ydCB7fScuZm9ybWF0KHNlbGYuX3RhcmdldF9ob3N0Lmxp
c3RlbmluZ19wb3J0KCkpKQogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBo
YW5kbGVyKQogICAgICAgICBzaWduYWwuYWxhcm0oMykgICMgSW4gc2Vjb25kcwogCkBAIC0xMDUs
MTIgKzEwMywxMiBAQCBjbGFzcyBTaW11bGF0b3JQcm9jZXNzKFNlcnZlclByb2Nlc3MpOgogICAg
ICAgICBzdGRlcnIgPSBOb25lCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgVGhpcyBvcmRl
ciBtYXRjaGVzIHRoZSBjbGllbnQgc2lkZSBjb25uZWN0aW9ucyBpbiBUb29scy9UZXN0UnVubmVy
U2hhcmVkL0lPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNwcCBzZXRVcElPU0xheW91dFRlc3RD
b21tdW5pY2F0aW9uKCkKLSAgICAgICAgICAgIHN0ZGluID0gU2ltdWxhdG9yUHJvY2Vzcy5fYWNj
ZXB0X2Nvbm5lY3Rpb25fY3JlYXRlX2ZpbGUoc2VsZi5fZGV2aWNlLmxpc3RlbmluZ19zb2NrZXQs
ICd3JykKLSAgICAgICAgICAgIHN0ZG91dCA9IFNpbXVsYXRvclByb2Nlc3MuX2FjY2VwdF9jb25u
ZWN0aW9uX2NyZWF0ZV9maWxlKHNlbGYuX2RldmljZS5saXN0ZW5pbmdfc29ja2V0LCAncmInKQot
ICAgICAgICAgICAgc3RkZXJyID0gU2ltdWxhdG9yUHJvY2Vzcy5fYWNjZXB0X2Nvbm5lY3Rpb25f
Y3JlYXRlX2ZpbGUoc2VsZi5fZGV2aWNlLmxpc3RlbmluZ19zb2NrZXQsICdyYicpCisgICAgICAg
ICAgICBzdGRpbiA9IFNpbXVsYXRvclByb2Nlc3MuX2FjY2VwdF9jb25uZWN0aW9uX2NyZWF0ZV9m
aWxlKHNlbGYuX3RhcmdldF9ob3N0Lmxpc3RlbmluZ19zb2NrZXQsICd3JykKKyAgICAgICAgICAg
IHN0ZG91dCA9IFNpbXVsYXRvclByb2Nlc3MuX2FjY2VwdF9jb25uZWN0aW9uX2NyZWF0ZV9maWxl
KHNlbGYuX3RhcmdldF9ob3N0Lmxpc3RlbmluZ19zb2NrZXQsICdyYicpCisgICAgICAgICAgICBz
dGRlcnIgPSBTaW11bGF0b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmlsZShz
ZWxmLl90YXJnZXRfaG9zdC5saXN0ZW5pbmdfc29ja2V0LCAncmInKQogICAgICAgICBleGNlcHQ6
CiAgICAgICAgICAgICAjIFdlIHNldCBzZWxmLl9wcm9jIGFzIF9yZXNldCgpIGFuZCBfa2lsbCgp
IGRlcGVuZCBvbiBpdC4KLSAgICAgICAgICAgIHNlbGYuX3Byb2MgPSBTaW11bGF0b3JQcm9jZXNz
LlBvcGVuKHNlbGYuX3BpZCwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyLCBzZWxmLl9kZXZpY2UpCisg
ICAgICAgICAgICBzZWxmLl9wcm9jID0gU2ltdWxhdG9yUHJvY2Vzcy5Qb3BlbihzZWxmLl9waWQs
IHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgc2VsZi5fdGFyZ2V0X2hvc3QpCiAgICAgICAgICAgICBp
ZiBzZWxmLl9wcm9jLnBvbGwoKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLl9y
ZXNldCgpCiAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdBcHAge30gY3Jhc2hlZCBi
ZWZvcmUgc3RkaW4gY291bGQgYmUgYXR0YWNoZWQnLmZvcm1hdChvcy5wYXRoLmJhc2VuYW1lKHNl
bGYuX2NtZFswXSkpKQpAQCAtMTE5LDE0ICsxMTcsOSBAQCBjbGFzcyBTaW11bGF0b3JQcm9jZXNz
KFNlcnZlclByb2Nlc3MpOgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgc2lnbmFsLmFsYXJt
KDApICAjIENhbmNlbCBhbGFybQogCi0gICAgICAgIHNlbGYuX3Byb2MgPSBTaW11bGF0b3JQcm9j
ZXNzLlBvcGVuKHNlbGYuX3BpZCwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyLCBzZWxmLl9kZXZpY2Up
CisgICAgICAgIHNlbGYuX3Byb2MgPSBTaW11bGF0b3JQcm9jZXNzLlBvcGVuKHNlbGYuX3BpZCwg
c3RkaW4sIHN0ZG91dCwgc3RkZXJyLCBzZWxmLl90YXJnZXRfaG9zdCkKIAogICAgIGRlZiBzdG9w
KHNlbGYsIHRpbWVvdXRfc2Vjcz0zLjApOgogICAgICAgICBpZiBzZWxmLl9wcm9jOgotICAgICAg
ICAgICAgc2VsZi5fZGV2aWNlLmV4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQp
CisgICAgICAgICAgICBzZWxmLl90YXJnZXRfaG9zdC5leGVjdXRpdmUua2lsbF9wcm9jZXNzKHNl
bGYuX3Byb2MucGlkKQogICAgICAgICByZXR1cm4gc3VwZXIoU2ltdWxhdG9yUHJvY2Vzcywgc2Vs
Zikuc3RvcCh0aW1lb3V0X3NlY3MpCi0KLSAgICBkZWYgX2tpbGwoc2VsZik6Ci0gICAgICAgIHNl
bGYuX2RldmljZS5leGVjdXRpdmUua2lsbF9wcm9jZXNzKHNlbGYuX3Byb2MucGlkKQotICAgICAg
ICBpZiBzZWxmLl9wcm9jLnBvbGwoKSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX3By
b2Mud2FpdCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306010</attachid>
            <date>2017-03-31 14:18:06 -0700</date>
            <delta_ts>2017-03-31 15:07:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170186-20170331141805.patch</filename>
            <type>text/plain</type>
            <size>29636</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxNDY4NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY5IEBACisyMDE3LTAzLTMxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogQWRkIHRhcmdldCBob3N0IGNvbmNlcHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDE4NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzEzMDE3OTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFBy
b3NrdXJ5YWtvdi4KKworICAgICAgICBBZGRpbmcgdGhlIGlkZWEgb2YgYSB0YXJnZXQgaG9zdC4g
VGFyZ2V0IGhvc3RzIGFyZSBvYmplY3RzIGNvbmZvcm1pbmcgdG8gdGhlCisgICAgICAgIHN0cnVj
dHVyZSBvZiB0aGUgU3lzdGVtSG9zdCBvYmplY3QgaW4gU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL3N5c3RlbWhvc3QucHkKKyAgICAgICAgVGFyZ2V0IGhvc3RzIGFyZSB0aGUgaG9zdHMg
YXNzb2NpYXRlZCB3aXRoIGEgd29ya2VyIHByb2Nlc3MuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weToKKyAgICAgICAgKEZpbGVTeXN0ZW0u
bWFwX2Jhc2VfaG9zdF9wYXRoKTogQ29udmVydCBhIHBhdGggZnJvbSBhbiBhYnNvbHV0ZSBwYXRo
IG9uIHRoZSBiYXNlCisgICAgICAgIGhvc3QgdG8gYW4gYWJzb2x1dGUgcGF0aCBvbiB0aGlzIGhv
c3QuCisgICAgICAgIChGaWxlU3lzdGVtLm1vdmVfdG9fYmFzZV9ob3N0KTogTW92ZSBmaWxlIGZy
b20gdGhpcyBob3N0IHRvIHRoZSBiYXNlIGhvc3QuCisgICAgICAgIChGaWxlU3lzdGVtLm1vdmVf
ZnJvbV9iYXNlX2hvc3QpOiBNb3ZlIGZpbGUgZnJvbSB0aGUgYmFzZSBob3N0IHRvIHRoaXMgaG9z
dC4KKyAgICAgICAgKEZpbGVTeXN0ZW0uY29weV90b19iYXNlX2hvc3QpOiBDb3B5IGZpbGUgZnJv
bSB0aGlzIGhvc3QgdG8gdGhlIGJhc2UgaG9zdC4KKyAgICAgICAgKEZpbGVTeXN0ZW0uY29weV9m
cm9tX2Jhc2VfaG9zdCk6IENvcHkgZmlsZSBmcm9tIHRoZSBiYXNlIGhvc3QgdG8gdGhpcyBob3N0
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21v
Y2sucHk6CisgICAgICAgIChNb2NrRmlsZVN5c3RlbS5tYXBfYmFzZV9ob3N0X3BhdGgpOiBDb252
ZXJ0IGEgcGF0aCBmcm9tIGFuIGFic29sdXRlIHBhdGggb24gdGhlIGJhc2UKKyAgICAgICAgaG9z
dCB0byBhbiBhYnNvbHV0ZSBwYXRoIG9uIHRoaXMgaG9zdC4KKyAgICAgICAgKE1vY2tGaWxlU3lz
dGVtLm1vdmVfdG9fYmFzZV9ob3N0KTogTW92ZSBmaWxlIGZyb20gdGhpcyBob3N0IHRvIHRoZSBi
YXNlIGhvc3QuCisgICAgICAgIChNb2NrRmlsZVN5c3RlbS5tb3ZlX2Zyb21fYmFzZV9ob3N0KTog
TW92ZSBmaWxlIGZyb20gdGhlIGJhc2UgaG9zdCB0byB0aGlzIGhvc3QuCisgICAgICAgIChNb2Nr
RmlsZVN5c3RlbS5jb3B5X3RvX2Jhc2VfaG9zdCk6IENvcHkgZmlsZSBmcm9tIHRoaXMgaG9zdCB0
byB0aGUgYmFzZSBob3N0LgorICAgICAgICAoTW9ja0ZpbGVTeXN0ZW0uY29weV9mcm9tX2Jhc2Vf
aG9zdCk6IENvcHkgZmlsZSBmcm9tIHRoZSBiYXNlIGhvc3QgdG8gdGhpcyBob3N0LgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydC50YXJnZXRf
aG9zdCk6IFJldHVybiBob3N0IGRldGVybWluZWQgYnkgd29ya2VyIG51bWJlci4KKyAgICAgICAg
KFBvcnQuYWJzcGF0aF9mb3JfdGVzdCk6IEFjY2VwdCBvcHRpb25hbCB0YXJnZXRfaG9zdCBhcmd1
bWVudCB0byByZXR1cm4gbG9jYXRpb24KKyAgICAgICAgb2YgdGVzdCBvbiBhIHRhcmdldCBob3N0
LgorICAgICAgICAoUG9ydC5fZHJpdmVyX3RlbXBkaXIpOiBBY2NlcHQgb3B0aW9uYWwgdGFyZ2V0
X2hvc3QgYXJndW1lbnQgdG8gcmV0dXJuIGEgdGVtcG9yYXJ5CisgICAgICAgIGRpcmVjdG9yeSBv
biBhIHRhcmdldCBob3N0LgorICAgICAgICAoUG9ydC5zYW1wbGVfcHJvY2Vzcyk6IEFjY2VwdCBv
cHRpb25hbCB0YXJnZXRfaG9zdCBhcmd1bWVudCB0byBzYW1wbGUgcHJvY2VzcyBvbgorICAgICAg
ICBhIHRhcmdldCBob3N0LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW4u
cHk6CisgICAgICAgIChEYXJ3aW5Qb3J0LnNhbXBsZV9wcm9jZXNzKTogUnVuIHNhbXBsZSBwcm9j
ZXNzIG9uIHRhcmdldCBob3N0LgorICAgICAgICAoRGFyd2luUG9ydC5zYW1wbGVfZmlsZV9wYXRo
KTogQWNjZXB0IGRpcmVjdG9yeSBmb3IgZmlsZS4KKyAgICAgICAgKERhcndpblBvcnQuc3BpbmR1
bXBfZmlsZV9wYXRoKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rh
cndpbl90ZXN0Y2FzZS5weToKKyAgICAgICAgKERhcndpblRlc3QudGVzdF9zcGluZHVtcCk6IENo
ZWNrIGZpbGUgbW92ZW1lbnQuCisgICAgICAgIChEYXJ3aW5UZXN0LnRlc3Rfc2FtcGxlX3Byb2Nl
c3MpOiBEaXR0by4KKyAgICAgICAgKERhcndpblRlc3QudGVzdF9zYW1wbGVfcHJvY2Vzc19leGNl
cHRpb24pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHk6CisgICAg
ICAgIChEcml2ZXIuX19pbml0X18pOiBBZGQgYW5kIHNldCBzZWxmLl90YXJnZXRfaG9zdCB2YXJp
YWJsZS4KKyAgICAgICAgKERyaXZlci5fc3RhcnQpOiBQYXNzIHRhcmdldCBob3N0IHRvIF9kcml2
ZXJfdGVtcGRpcigpLgorICAgICAgICAoRHJpdmVyLnN0b3ApOiBDYWxsIHRoZSB0YXJnZXQgaG9z
dCdzIHJtdHJlZS4KKyAgICAgICAgKERyaXZlci5fY2hlY2tfZm9yX2RyaXZlcl90aW1lb3V0KTog
UGFzcyB0YXJnZXQgaG9zdCB0byBzYW1wbGVfcHJvY2Vzcy4KKyAgICAgICAgKERyaXZlci5fY2hl
Y2tfZm9yX2RyaXZlcl9jcmFzaF9vcl91bnJlc3BvbnNpdmVuZXNzKTogRGl0dG8uCisgICAgICAg
IChEcml2ZXIuX2NvbW1hbmRfZnJvbV9kcml2ZXJfaW5wdXQpOiBQYXNzIHRhcmdldCBob3N0IHRv
IGFic3BhdGhfZm9yX3Rlc3QgYW5kIG1hcAorICAgICAgICBsYXlvdXQgdGVzdCBkaXJlY3Rvcnkg
dG8gdGFyZ2V0IGhvc3QuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weToK
KyAgICAgICAgKElPU1BvcnQpOgorICAgICAgICAoSU9TUG9ydC50YXJnZXRfaG9zdCk6IFJlcGxh
Y2VkIGRldmljZV9mb3Jfd29ya2VyX251bWJlci4KKyAgICAgICAgKElPU1BvcnQuc2V0dXBfdGVz
dF9ydW4pOiBSZXBsYWNlIGRldmljZV9mb3Jfd29ya2VyX251bWJlciB3aXRoIHRhcmdldF9ob3N0
LgorICAgICAgICAoSU9TUG9ydC5kZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIpOiBSZXBsYWNlZCB3
aXRoIHRhcmdldF9ob3N0LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJf
cHJvY2Vzcy5weToKKyAgICAgICAgKFNlcnZlclByb2Nlc3MuX19pbml0X18pOiBBY2NlcHQgdGFy
Z2V0X2hvc3QgaW5zdGVhZCBvZiB3b3JrZXJfbnVtYmVyLgorICAgICAgICAoU2VydmVyUHJvY2Vz
cy5fc3RhcnQpOiBSZXBsYWNlIF9ob3N0IHdpdGggX3RhcmdldF9ob3N0LgorICAgICAgICAoU2Vy
dmVyUHJvY2Vzcy5faGFuZGxlX3RpbWVvdXQpOiBEaXR0by4KKyAgICAgICAgKFNlcnZlclByb2Nl
c3MuX2tpbGwpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxh
dG9yX3Byb2Nlc3MucHk6CisgICAgICAgIChTaW11bGF0b3JQcm9jZXNzLl9faW5pdF9fKTogQWNj
ZXB0IHRhcmdldF9ob3N0IGluc3RlYWQgb2Ygd29ya2VyX251bWJlci4KKyAgICAgICAgKFNpbXVs
YXRvclByb2Nlc3MuX3N0YXJ0KTogUmVwbGFjZSBfZGV2aWNlIHdpdGggX3RhcmdldF9ob3N0Lgor
ICAgICAgICAoU2ltdWxhdG9yUHJvY2Vzcy5zdG9wKTogRGl0dG8uCisgICAgICAgIChTaW11bGF0
b3JQcm9jZXNzLl9raWxsKTogRGVsZXRlZC4KKwogMjAxNy0wMy0zMSAgVGltIEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWlsIGNhbiBnZXQgc3R1Y2sgdW5k
ZXJuZWF0aCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZ01hdGNoZXMgYWZ0ZXIgc2VhcmNoaW5n
IGluIGEgbG9uZyBtZXNzYWdlCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vZmlsZXN5c3RlbS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQkocmV2aXNpb24gMjE0Njg0KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTMxMCwzICszMTAsMjggQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogCiAgICAg
ZGVmIGNvbXBhcmUoc2VsZiwgcGF0aDEsIHBhdGgyKToKICAgICAgICAgcmV0dXJuIGZpbGVjbXAu
Y21wKHBhdGgxLCBwYXRoMikKKworICAgIGRlZiBtYXBfYmFzZV9ob3N0X3BhdGgoc2VsZiwgcGF0
aCk6CisgICAgICAgICIiIlJldHVybnMgYSBwYXRoIGZyb20gdGhlIGJhc2UgaG9zdCBsb2NhbGl6
ZWQgZm9yIHRoaXMgaG9zdC4gQnkgZGVmYXVsdCwKKyAgICAgICAgdGhpcyBob3N0IGFzc3VtZXMg
aXQgaXMgdGhlIGJhc2UgaG9zdCBhbmQgbWFwcyB0aGUgcGF0aCB0byBpdHNlbGYiIiIKKyAgICAg
ICAgcmV0dXJuIHBhdGgKKworICAgIGRlZiBtb3ZlX3RvX2Jhc2VfaG9zdChzZWxmLCBzb3VyY2Us
IGRlc3RpbmF0aW9uKToKKyAgICAgICAgIiIiTW92ZXMgYSBmaWxlIGZyb20gdGhpcyBob3N0IHRv
IHRoZSBiYXNlIGhvc3QuIEJ5IGRlZmF1bHQsIHRoaXMgaG9zdAorICAgICAgICBhc3N1bWVzIGl0
IGlzIHRoZSBiYXNlIGhvc3QgYW5kIHdpbGwganVzdCBleGVjdXRlIGEgbW92ZS4iIiIKKyAgICAg
ICAgc2VsZi5tb3ZlKHNvdXJjZSwgZGVzdGluYXRpb24pCisKKyAgICBkZWYgbW92ZV9mcm9tX2Jh
c2VfaG9zdChzZWxmLCBzb3VyY2UsIGRlc3RpbmF0aW9uKToKKyAgICAgICAgIiIiTW92ZXMgYSBm
aWxlIGZyb20gdGhlIGJhc2UgaG9zdCB0byB0aGlzIGhvc3QuIEJ5IGRlZmF1bHQsIHRoaXMgaG9z
dAorICAgICAgICBhc3N1bWVzIGl0IGlzIHRoZSBiYXNlIGhvc3QgYW5kIHdpbGwganVzdCBleGVj
dXRlIGEgbW92ZS4iIiIKKyAgICAgICAgc2VsZi5tb3ZlKHNvdXJjZSwgZGVzdGluYXRpb24pCisK
KyAgICBkZWYgY29weV90b19iYXNlX2hvc3Qoc2VsZiwgc291cmNlLCBkZXN0aW5hdGlvbik6Cisg
ICAgICAgICIiIkNvcHkgYSBmaWxlIGZyb20gdGhpcyBob3N0IHRvIHRoZSBiYXNlIGhvc3QuIEJ5
IGRlZmF1bHQsIHRoaXMgaG9zdAorICAgICAgICBhc3N1bWVzIGl0IGlzIHRoZSBiYXNlIGhvc3Qg
YW5kIHdpbGwganVzdCBleGVjdXRlIGEgY29weXRyZWUuIiIiCisgICAgICAgIHNlbGYuY29weXRy
ZWUoc291cmNlLCBkZXN0aW5hdGlvbikKKworICAgIGRlZiBjb3B5X2Zyb21fYmFzZV9ob3N0KHNl
bGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgorICAgICAgICAiIiJDb3B5IGEgZmlsZSBmcm9tIHRo
ZSBiYXNlIGhvc3QgdG8gdGhpcyBob3N0LiBCeSBkZWZhdWx0LCB0aGlzIGhvc3QKKyAgICAgICAg
YXNzdW1lcyBpdCBpcyB0aGUgYmFzZSBob3N0IGFuZCB3aWxsIGp1c3QgZXhlY3V0ZSBhIGNvcHl0
cmVlLiIiIgorICAgICAgICBzZWxmLmNvcHl0cmVlKHNvdXJjZSwgZGVzdGluYXRpb24pCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxl
c3lzdGVtX21vY2sucHkJKHJldmlzaW9uIDIxNDY4NCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkJKHdvcmtpbmcgY29weSkKQEAgLTQy
MCw2ICs0MjAsMjEgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICBkZWYgY29t
cGFyZShzZWxmLCBwYXRoMSwgcGF0aDIpOgogICAgICAgICByZXR1cm4gc2VsZi5yZWFkX2JpbmFy
eV9maWxlKHBhdGgxKSA9PSBzZWxmLnJlYWRfYmluYXJ5X2ZpbGUocGF0aDIpCiAKKyAgICBkZWYg
bWFwX2Jhc2VfaG9zdF9wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gcGF0aAorCisg
ICAgZGVmIG1vdmVfdG9fYmFzZV9ob3N0KHNlbGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgorICAg
ICAgICBzZWxmLm1vdmUoc291cmNlLCBkZXN0aW5hdGlvbikKKworICAgIGRlZiBtb3ZlX2Zyb21f
YmFzZV9ob3N0KHNlbGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgorICAgICAgICBzZWxmLm1vdmUo
c291cmNlLCBkZXN0aW5hdGlvbikKKworICAgIGRlZiBjb3B5X3RvX2Jhc2VfaG9zdChzZWxmLCBz
b3VyY2UsIGRlc3RpbmF0aW9uKToKKyAgICAgICAgc2VsZi5tb3ZlKHNvdXJjZSwgZGVzdGluYXRp
b24pCisKKyAgICBkZWYgY29weV9mcm9tX2Jhc2VfaG9zdChzZWxmLCBzb3VyY2UsIGRlc3RpbmF0
aW9uKToKKyAgICAgICAgc2VsZi5tb3ZlKHNvdXJjZSwgZGVzdGluYXRpb24pCisKIAogY2xhc3Mg
V3JpdGFibGVCaW5hcnlGaWxlT2JqZWN0KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZzLCBwYXRoKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CShyZXZpc2lv
biAyMTQ2ODQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAg
c2VsZi5fbGF5b3V0X3Rlc3RzX2RpciA9IGhhc2F0dHIob3B0aW9ucywgJ2xheW91dF90ZXN0c19k
aXInKSBhbmQgb3B0aW9ucy5sYXlvdXRfdGVzdHNfZGlyIGFuZCBzZWxmLl9maWxlc3lzdGVtLmFi
c3BhdGgob3B0aW9ucy5sYXlvdXRfdGVzdHNfZGlyKQogICAgICAgICBzZWxmLl93M2NfcmVzb3Vy
Y2VfZmlsZXMgPSBOb25lCiAKKyAgICBkZWYgdGFyZ2V0X2hvc3Qoc2VsZiwgd29ya2VyX251bWJl
cj1Ob25lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaG9zdAorCiAgICAgZGVmIGFyY2hpdGVjdHVy
ZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X29wdGlvbignYXJjaGl0ZWN0dXJlJykK
IApAQCAtODAyLDEwICs4MDUsMTEgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAg
cmV0dXJuIHNlbGYuaG9zdC5maWxlc3lzdGVtLmFic3BhdGgoZmlsZW5hbWUpCiAKICAgICBAbWVt
b2l6ZWQKLSAgICBkZWYgYWJzcGF0aF9mb3JfdGVzdChzZWxmLCB0ZXN0X25hbWUpOgorICAgIGRl
ZiBhYnNwYXRoX2Zvcl90ZXN0KHNlbGYsIHRlc3RfbmFtZSwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CiAg
ICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZmlsZSBmb3IgYSBnaXZlbiB0
ZXN0IG5hbWUuIFRoaXMgaXMgdGhlCi0gICAgICAgIGludmVyc2Ugb2YgcmVsYXRpdmVfdGVzdF9m
aWxlbmFtZSgpLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYu
bGF5b3V0X3Rlc3RzX2RpcigpLCB0ZXN0X25hbWUpCisgICAgICAgIGludmVyc2Ugb2YgcmVsYXRp
dmVfdGVzdF9maWxlbmFtZSgpIGlmIG5vIHRhcmdldF9ob3N0IGlzIHNwZWNpZmllZC4iIiIKKyAg
ICAgICAgaG9zdCA9IHRhcmdldF9ob3N0IG9yIHNlbGYuaG9zdAorICAgICAgICByZXR1cm4gaG9z
dC5maWxlc3lzdGVtLmpvaW4oaG9zdC5maWxlc3lzdGVtLm1hcF9iYXNlX2hvc3RfcGF0aChzZWxm
LmxheW91dF90ZXN0c19kaXIoKSksIHRlc3RfbmFtZSkKIAogICAgIGRlZiBqc2NfcmVzdWx0c19k
aXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCkKQEAgLTEy
ODIsOCArMTI4Niw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgIGxvY2FsX2Ry
aXZlcl9wYXRoID0gYmFzZSArICIuZXhlIgogICAgICAgICByZXR1cm4gbG9jYWxfZHJpdmVyX3Bh
dGgKIAotICAgIGRlZiBfZHJpdmVyX3RlbXBkaXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxm
Ll9maWxlc3lzdGVtLm1rZHRlbXAocHJlZml4PSclcy0nICUgc2VsZi5kcml2ZXJfbmFtZSgpKQor
ICAgIGRlZiBfZHJpdmVyX3RlbXBkaXIoc2VsZiwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CisgICAgICAg
IGhvc3QgPSB0YXJnZXRfaG9zdCBvciBzZWxmLmhvc3QKKyAgICAgICAgcmV0dXJuIGhvc3QuZmls
ZXN5c3RlbS5ta2R0ZW1wKHByZWZpeD0ne31zLScuZm9ybWF0KHNlbGYuZHJpdmVyX25hbWUoKSkp
CiAKICAgICBkZWYgX3BhdGhfdG9fdXNlcl9jYWNoZV9kaXJlY3Rvcnkoc2VsZiwgc3VmZml4PU5v
bmUpOgogICAgICAgICByZXR1cm4gTm9uZQpAQCAtMTM1NCw3ICsxMzU5LDcgQEAgY2xhc3MgUG9y
dChvYmplY3QpOgogICAgIGRlZiBsb29rX2Zvcl9uZXdfc2FtcGxlcyhzZWxmLCB1bnJlc3BvbnNp
dmVfcHJvY2Vzc2VzLCBzdGFydF90aW1lKToKICAgICAgICAgcGFzcwogCi0gICAgZGVmIHNhbXBs
ZV9wcm9jZXNzKHNlbGYsIG5hbWUsIHBpZCk6CisgICAgZGVmIHNhbXBsZV9wcm9jZXNzKHNlbGYs
IG5hbWUsIHBpZCwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBm
aW5kX3N5c3RlbV9waWQoc2VsZiwgbmFtZSwgcGlkKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9kYXJ3aW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2Rhcndpbi5weQkocmV2aXNpb24gMjE0Njg0KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2Rhcndpbi5weQkod29ya2luZyBjb3B5KQpAQCAtMTIyLDggKzEyMiwxMCBAQCBj
bGFzcyBEYXJ3aW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgICAgIGFsbF9jcmFzaF9sb2cgPSBzZWxm
Ll9sb29rX2Zvcl9hbGxfY3Jhc2hfbG9nc19pbl9sb2dfZGlyKHN0YXJ0X3RpbWUpCiAgICAgICAg
IHJldHVybiBzZWxmLl9tZXJnZV9jcmFzaF9sb2dzKGNyYXNoX2xvZ3MsIGFsbF9jcmFzaF9sb2cs
IGNyYXNoZWRfcHJvY2Vzc2VzKQogCi0gICAgZGVmIHNhbXBsZV9wcm9jZXNzKHNlbGYsIG5hbWUs
IHBpZCk6Ci0gICAgICAgIGV4aXRfc3RhdHVzID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5k
KFsKKyAgICBkZWYgc2FtcGxlX3Byb2Nlc3Moc2VsZiwgbmFtZSwgcGlkLCB0YXJnZXRfaG9zdD1O
b25lKToKKyAgICAgICAgaG9zdCA9IHRhcmdldF9ob3N0IG9yIHNlbGYuaG9zdAorICAgICAgICB0
ZW1wZGlyID0gaG9zdC5maWxlc3lzdGVtLm1rZHRlbXAoKQorICAgICAgICBleGl0X3N0YXR1cyA9
IGhvc3QuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsKICAgICAgICAgICAgICIvdXNyL2Jpbi9zdWRv
IiwKICAgICAgICAgICAgICItbiIsCiAgICAgICAgICAgICAiL3Vzci9zYmluL3NwaW5kdW1wIiwK
QEAgLTEzMSwyNiArMTMzLDM0IEBAIGNsYXNzIERhcndpblBvcnQoQXBwbGVQb3J0KToKICAgICAg
ICAgICAgIDEwLAogICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICAiLWZpbGUiLAotICAgICAg
ICAgICAgc2VsZi5zcGluZHVtcF9maWxlX3BhdGgobmFtZSwgcGlkKSwKKyAgICAgICAgICAgIERh
cndpblBvcnQuc3BpbmR1bXBfZmlsZV9wYXRoKGhvc3QsIG5hbWUsIHBpZCwgc3RyKHRlbXBkaXIp
KSwKICAgICAgICAgXSwgcmV0dXJuX2V4aXRfY29kZT1UcnVlKQogICAgICAgICBpZiBleGl0X3N0
YXR1czoKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9leGVjdXRpdmUu
cnVuX2NvbW1hbmQoWworICAgICAgICAgICAgICAgIGhvc3QuZXhlY3V0aXZlLnJ1bl9jb21tYW5k
KFsKICAgICAgICAgICAgICAgICAgICAgIi91c3IvYmluL3NhbXBsZSIsCiAgICAgICAgICAgICAg
ICAgICAgIHBpZCwKICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICAgICAgICAg
IDEwLAogICAgICAgICAgICAgICAgICAgICAiLWZpbGUiLAotICAgICAgICAgICAgICAgICAgICBz
ZWxmLnNhbXBsZV9maWxlX3BhdGgobmFtZSwgcGlkKSwKKyAgICAgICAgICAgICAgICAgICAgRGFy
d2luUG9ydC5zYW1wbGVfZmlsZV9wYXRoKGhvc3QsIG5hbWUsIHBpZCwgc3RyKHRlbXBkaXIpKSwK
ICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5tb3Zl
X3RvX2Jhc2VfaG9zdChEYXJ3aW5Qb3J0LnNhbXBsZV9maWxlX3BhdGgoaG9zdCwgbmFtZSwgcGlk
LCBzdHIodGVtcGRpcikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEYXJ3aW5Qb3J0LnNhbXBsZV9maWxlX3BhdGgoc2VsZi5ob3N0LCBuYW1lLCBw
aWQsIHNlbGYucmVzdWx0c19kaXJlY3RvcnkoKSkpCiAgICAgICAgICAgICBleGNlcHQgU2NyaXB0
RXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ1VuYWJsZSB0byBzYW1w
bGUgcHJvY2VzczonICsgc3RyKGUpKQotCi0gICAgZGVmIHNhbXBsZV9maWxlX3BhdGgoc2VsZiwg
bmFtZSwgcGlkKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLnJl
c3VsdHNfZGlyZWN0b3J5KCksICJ7MH0tezF9LXNhbXBsZS50eHQiLmZvcm1hdChuYW1lLCBwaWQp
KQotCi0gICAgZGVmIHNwaW5kdW1wX2ZpbGVfcGF0aChzZWxmLCBuYW1lLCBwaWQpOgotICAgICAg
ICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYucmVzdWx0c19kaXJlY3RvcnkoKSwg
InswfS17MX0tc3BpbmR1bXAudHh0Ii5mb3JtYXQobmFtZSwgcGlkKSkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5tb3ZlX3RvX2Jhc2VfaG9zdChEYXJ3aW5Qb3J0
LnNwaW5kdW1wX2ZpbGVfcGF0aChob3N0LCBuYW1lLCBwaWQsIHN0cih0ZW1wZGlyKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGFyd2luUG9ydC5zcGlu
ZHVtcF9maWxlX3BhdGgoc2VsZi5ob3N0LCBuYW1lLCBwaWQsIHNlbGYucmVzdWx0c19kaXJlY3Rv
cnkoKSkpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5ybXRyZWUoc3RyKHRlbXBkaXIpKQorCisg
ICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBzYW1wbGVfZmlsZV9wYXRoKGhvc3QsIG5hbWUsIHBp
ZCwgZGlyZWN0b3J5KToKKyAgICAgICAgcmV0dXJuIGhvc3QuZmlsZXN5c3RlbS5qb2luKGRpcmVj
dG9yeSwgInswfS17MX0tc2FtcGxlLnR4dCIuZm9ybWF0KG5hbWUsIHBpZCkpCisKKyAgICBAc3Rh
dGljbWV0aG9kCisgICAgZGVmIHNwaW5kdW1wX2ZpbGVfcGF0aChob3N0LCBuYW1lLCBwaWQsIGRp
cmVjdG9yeSk6CisgICAgICAgIHJldHVybiBob3N0LmZpbGVzeXN0ZW0uam9pbihkaXJlY3Rvcnks
ICJ7MH0tezF9LXNwaW5kdW1wLnR4dCIuZm9ybWF0KG5hbWUsIHBpZCkpCiAKICAgICBkZWYgbG9v
a19mb3JfbmV3X3NhbXBsZXMoc2VsZiwgdW5yZXNwb25zaXZlX3Byb2Nlc3Nlcywgc3RhcnRfdGlt
ZSk6CiAgICAgICAgIHNhbXBsZV9maWxlcyA9IHt9CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvZGFyd2luX3Rlc3RjYXNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9kYXJ3aW5fdGVzdGNhc2UucHkJKHJldmlzaW9uIDIxNDY4NCkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW5fdGVzdGNhc2UucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTkyLDkgKzkyLDEyIEBAIGNsYXNzIERhcndpblRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0
VGVzdEMKICAgICAgICAgICAgIHByaW50IGFyZ3MKIAogICAgICAgICBwb3J0ID0gc2VsZi5tYWtl
X3BvcnQoKQotICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihydW5fY29t
bWFuZF9mbj1sb2dnaW5nX3J1bl9jb21tYW5kKQotICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAi
WycvdXNyL2Jpbi9zdWRvJywgJy1uJywgJy91c3Ivc2Jpbi9zcGluZHVtcCcsIDQyLCAxMCwgMTAs
ICctZmlsZScsICcvbW9jay1idWlsZC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3QtNDItc3BpbmR1
bXAudHh0J11cbiIKKyAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9fX2ltX3Rt
cC90bXBfMF8vdGVzdC00Mi1zcGluZHVtcC50eHQnXSA9ICdTcGluZHVtcCBmaWxlJworICAgICAg
ICBwb3J0Lmhvc3QuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIocnVuX2NvbW1hbmRfZm49bG9n
Z2luZ19ydW5fY29tbWFuZCkKKyAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIlsnL3Vzci9iaW4v
c3VkbycsICctbicsICcvdXNyL3NiaW4vc3BpbmR1bXAnLCA0MiwgMTAsIDEwLCAnLWZpbGUnLCAn
L19faW1fdG1wL3RtcF8wXy90ZXN0LTQyLXNwaW5kdW1wLnR4dCddXG4iCiAgICAgICAgIE91dHB1
dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0LnNhbXBsZV9wcm9jZXNzLCBhcmdz
PVsndGVzdCcsIDQyXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxlc1snL21vY2stYnVpbGQv
bGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0LTQyLXNwaW5kdW1wLnR4dCddLCAnU3BpbmR1bXAgZmls
ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBvcnQuaG9zdC5maWxlc3lzdGVtLmZpbGVz
WycvX19pbV90bXAvdG1wXzBfL3Rlc3QtNDItc3BpbmR1bXAudHh0J10pCiAKICAgICBkZWYgdGVz
dF9zYW1wbGVfcHJvY2VzcyhzZWxmKToKIApAQCAtMTA1LDkgKzEwOCwxMiBAQCBjbGFzcyBEYXJ3
aW5UZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDCiAgICAgICAgICAgICByZXR1cm4gMAogCiAg
ICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCi0gICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9
IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPWxvZ2dpbmdfcnVuX2NvbW1hbmQpCi0gICAg
ICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJbJy91c3IvYmluL3NhbXBsZScsIDQyLCAxMCwgMTAsICct
ZmlsZScsICcvbW9jay1idWlsZC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3QtNDItc2FtcGxlLnR4
dCddXG4iCisgICAgICAgIHBvcnQuaG9zdC5maWxlc3lzdGVtLmZpbGVzWycvX19pbV90bXAvdG1w
XzBfL3Rlc3QtNDItc2FtcGxlLnR4dCddID0gJ1NhbXBsZSBmaWxlJworICAgICAgICBwb3J0Lmhv
c3QuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIocnVuX2NvbW1hbmRfZm49bG9nZ2luZ19ydW5f
Y29tbWFuZCkKKyAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIlsnL3Vzci9iaW4vc2FtcGxlJywg
NDIsIDEwLCAxMCwgJy1maWxlJywgJy9fX2ltX3RtcC90bXBfMF8vdGVzdC00Mi1zYW1wbGUudHh0
J11cbiIKICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQu
c2FtcGxlX3Byb2Nlc3MsIGFyZ3M9Wyd0ZXN0JywgNDJdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0
ZWRfc3Rkb3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuaG9zdC5maWxlc3lzdGVt
LmZpbGVzWycvbW9jay1idWlsZC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3QtNDItc2FtcGxlLnR4
dCddLCAnU2FtcGxlIGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwb3J0Lmhvc3Qu
ZmlsZXN5c3RlbS5maWxlc1snL19faW1fdG1wL3RtcF8wXy90ZXN0LTQyLXNhbXBsZS50eHQnXSkK
IAogICAgIGRlZiB0ZXN0X3NhbXBsZV9wcm9jZXNzX2V4Y2VwdGlvbihzZWxmKToKICAgICAgICAg
ZGVmIHRocm93aW5nX3J1bl9jb21tYW5kKGFyZ3MpOgpAQCAtMTE2LDUgKzEyMiw1IEBAIGNsYXNz
IERhcndpblRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdEMKICAgICAgICAgICAgIHJhaXNlIFNj
cmlwdEVycm9yKCJNT0NLIHNjcmlwdCBlcnJvciIpCiAKICAgICAgICAgcG9ydCA9IHNlbGYubWFr
ZV9wb3J0KCkKLSAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIocnVuX2Nv
bW1hbmRfZm49dGhyb3dpbmdfcnVuX2NvbW1hbmQpCisgICAgICAgIHBvcnQuaG9zdC5leGVjdXRp
dmUgPSBNb2NrRXhlY3V0aXZlMihydW5fY29tbWFuZF9mbj10aHJvd2luZ19ydW5fY29tbWFuZCkK
ICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuc2FtcGxl
X3Byb2Nlc3MsIGFyZ3M9Wyd0ZXN0JywgNDJdKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2RyaXZlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZHJpdmVyLnB5CShyZXZpc2lvbiAyMTQ2ODQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvZHJpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDcgQEAgY2xhc3Mg
RHJpdmVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYu
X3dvcmtlcl9udW1iZXIgPSB3b3JrZXJfbnVtYmVyCiAgICAgICAgIHNlbGYuX25vX3RpbWVvdXQg
PSBub190aW1lb3V0CisgICAgICAgIHNlbGYuX3RhcmdldF9ob3N0ID0gcG9ydC50YXJnZXRfaG9z
dCh3b3JrZXJfbnVtYmVyKQogCiAgICAgICAgIHNlbGYuX2RyaXZlcl90ZW1wZGlyID0gTm9uZQog
ICAgICAgICBzZWxmLl9kcml2ZXJfdXNlcl9kaXJlY3Rvcnlfc3VmZml4ID0gTm9uZQpAQCAtMzU5
LDE2ICszNjAsMTYgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICMgRWFjaCBkcml2
ZXIgcHJvY2VzcyBzaG91bGQgYmUgdXNpbmcgaW5kaXZpZHVhbCBkaXJlY3RvcmllcyB1bmRlciBf
ZHJpdmVyX3RlbXBkaXIgKHdoaWNoIGlzIGRlbGV0ZWQgd2hlbiBzdG9wcGluZyksCiAgICAgICAg
ICMgaG93ZXZlciBzb21lIHN1YnN5c3RlbXMgb24gc29tZSBwbGF0Zm9ybXMgY291bGQgZW5kIHVw
IHVzaW5nIHByb2Nlc3MgZGVmYXVsdCBvbmVzLgogICAgICAgICBzZWxmLl9wb3J0Ll9jbGVhcl9n
bG9iYWxfY2FjaGVzX2FuZF90ZW1wb3JhcnlfZmlsZXMoKQotICAgICAgICBzZWxmLl9kcml2ZXJf
dGVtcGRpciA9IHNlbGYuX3BvcnQuX2RyaXZlcl90ZW1wZGlyKCkKKyAgICAgICAgc2VsZi5fZHJp
dmVyX3RlbXBkaXIgPSBzZWxmLl9wb3J0Ll9kcml2ZXJfdGVtcGRpcihzZWxmLl90YXJnZXRfaG9z
dCkKICAgICAgICAgc2VsZi5fZHJpdmVyX3VzZXJfZGlyZWN0b3J5X3N1ZmZpeCA9IG9zLnBhdGgu
YmFzZW5hbWUoc3RyKHNlbGYuX2RyaXZlcl90ZW1wZGlyKSkKICAgICAgICAgdXNlcl9jYWNoZV9k
aXJlY3RvcnkgPSBzZWxmLl9wb3J0Ll9wYXRoX3RvX3VzZXJfY2FjaGVfZGlyZWN0b3J5KHNlbGYu
X2RyaXZlcl91c2VyX2RpcmVjdG9yeV9zdWZmaXgpCiAgICAgICAgIGlmIHVzZXJfY2FjaGVfZGly
ZWN0b3J5OgotICAgICAgICAgICAgc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5tYXliZV9tYWtlX2Rp
cmVjdG9yeSh1c2VyX2NhY2hlX2RpcmVjdG9yeSkKKyAgICAgICAgICAgIHNlbGYuX3RhcmdldF9o
b3N0LmZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkodXNlcl9jYWNoZV9kaXJlY3Rvcnkp
CiAgICAgICAgICAgICBzZWxmLl9kcml2ZXJfdXNlcl9jYWNoZV9kaXJlY3RvcnkgPSB1c2VyX2Nh
Y2hlX2RpcmVjdG9yeQogICAgICAgICBlbnZpcm9ubWVudCA9IHNlbGYuX3NldHVwX2Vudmlyb25f
Zm9yX3Rlc3QoKQogICAgICAgICBzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUKICAg
ICAgICAgc2VsZi5fY3Jhc2hlZF9waWQgPSBOb25lCi0gICAgICAgIHNlbGYuX3NlcnZlcl9wcm9j
ZXNzID0gc2VsZi5fcG9ydC5fdGVzdF9ydW5uZXJfcHJvY2Vzc19jb25zdHJ1Y3RvcihzZWxmLl9w
b3J0LCBzZWxmLl9zZXJ2ZXJfbmFtZSwgc2VsZi5jbWRfbGluZShwaXhlbF90ZXN0cywgcGVyX3Rl
c3RfYXJncyksIGVudmlyb25tZW50LCB3b3JrZXJfbnVtYmVyPXNlbGYuX3dvcmtlcl9udW1iZXIp
CisgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzID0gc2VsZi5fcG9ydC5fdGVzdF9ydW5uZXJf
cHJvY2Vzc19jb25zdHJ1Y3RvcihzZWxmLl9wb3J0LCBzZWxmLl9zZXJ2ZXJfbmFtZSwgc2VsZi5j
bWRfbGluZShwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJncyksIGVudmlyb25tZW50LCB0YXJnZXRf
aG9zdD1zZWxmLl90YXJnZXRfaG9zdCkKICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Muc3Rh
cnQoKQogCiAgICAgZGVmIF9ydW5fcG9zdF9zdGFydF90YXNrcyhzZWxmKToKQEAgLTM4OCwxMCAr
Mzg5LDEwIEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYuX3By
b2ZpbGVyLnByb2ZpbGVfYWZ0ZXJfZXhpdCgpCiAKICAgICAgICAgaWYgc2VsZi5fZHJpdmVyX3Rl
bXBkaXI6Ci0gICAgICAgICAgICBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLnJtdHJlZShzdHIoc2Vs
Zi5fZHJpdmVyX3RlbXBkaXIpKQorICAgICAgICAgICAgc2VsZi5fdGFyZ2V0X2hvc3QuZmlsZXN5
c3RlbS5ybXRyZWUoc3RyKHNlbGYuX2RyaXZlcl90ZW1wZGlyKSkKICAgICAgICAgICAgIHNlbGYu
X2RyaXZlcl90ZW1wZGlyID0gTm9uZQogICAgICAgICBpZiBzZWxmLl9kcml2ZXJfdXNlcl9jYWNo
ZV9kaXJlY3Rvcnk6Ci0gICAgICAgICAgICBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLnJtdHJlZShz
ZWxmLl9kcml2ZXJfdXNlcl9jYWNoZV9kaXJlY3RvcnkpCisgICAgICAgICAgICBzZWxmLl90YXJn
ZXRfaG9zdC5maWxlc3lzdGVtLnJtdHJlZShzZWxmLl9kcml2ZXJfdXNlcl9jYWNoZV9kaXJlY3Rv
cnkpCiAgICAgICAgICAgICBzZWxmLl9kcml2ZXJfdXNlcl9jYWNoZV9kaXJlY3RvcnkgPSBOb25l
CiAKICAgICBkZWYgY21kX2xpbmUoc2VsZiwgcGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpOgpA
QCAtNDMyLDcgKzQzMyw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAgICAgc2Vs
Zi5lcnJvcl9mcm9tX3Rlc3QgKz0gZXJyX2xpbmUKICAgICAgICAgICAgIF9sb2cuZGVidWcoZXJy
X2xpbmUpCiAgICAgICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oInNhbXBsZV9vbl90
aW1lb3V0Iik6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5zYW1wbGVfcHJvY2VzcyhjaGls
ZF9wcm9jZXNzX25hbWUsIGNoaWxkX3Byb2Nlc3NfcGlkKQorICAgICAgICAgICAgICAgIHNlbGYu
X3BvcnQuc2FtcGxlX3Byb2Nlc3MoY2hpbGRfcHJvY2Vzc19uYW1lLCBjaGlsZF9wcm9jZXNzX3Bp
ZCwgc2VsZi5fdGFyZ2V0X2hvc3QpCiAgICAgICAgIGlmIG91dF9saW5lID09ICJGQUlMOiBUaW1l
ZCBvdXQgd2FpdGluZyBmb3Igbm90aWZ5RG9uZSB0byBiZSBjYWxsZWRcbiI6CiAgICAgICAgICAg
ICBzZWxmLl9kcml2ZXJfdGltZWRfb3V0ID0gVHJ1ZQogCkBAIC00NjEsNyArNDYyLDcgQEAgY2xh
c3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICAgICBfbG9nLmRlYnVnKCclcyBpcyB1bnJlc3Bv
bnNpdmUsIHBpZCA9ICVzJyAlIChjaGlsZF9wcm9jZXNzX25hbWUsIHN0cihjaGlsZF9wcm9jZXNz
X3BpZCkpKQogICAgICAgICAgICAgc2VsZi5fZHJpdmVyX3RpbWVkX291dCA9IFRydWUKICAgICAg
ICAgICAgIGlmIGNoaWxkX3Byb2Nlc3NfcGlkOgotICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQu
c2FtcGxlX3Byb2Nlc3MoY2hpbGRfcHJvY2Vzc19uYW1lLCBjaGlsZF9wcm9jZXNzX3BpZCkKKyAg
ICAgICAgICAgICAgICBzZWxmLl9wb3J0LnNhbXBsZV9wcm9jZXNzKGNoaWxkX3Byb2Nlc3NfbmFt
ZSwgY2hpbGRfcHJvY2Vzc19waWQsIHNlbGYuX3RhcmdldF9ob3N0KQogICAgICAgICAgICAgc2Vs
Zi5lcnJvcl9mcm9tX3Rlc3QgKz0gZXJyb3JfbGluZQogICAgICAgICAgICAgc2VsZi5fc2VydmVy
X3Byb2Nlc3Mud3JpdGUoJyNTQU1QTEUgRklOSVNIRURcbicsIFRydWUpICAjIE11c3QgYmUgYWJs
ZSB0byBpZ25vcmUgYSBicm9rZW4gcGlwZSBoZXJlLCB0YXJnZXQgcHJvY2VzcyBtYXkgYWxyZWFk
eSBiZSBjbG9zZWQuCiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtNDc0LDkgKzQ3NSw5IEBA
IGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICBlbGlmIHNlbGYuaXNfd2ViX3BsYXRmb3Jt
X3Rlc3QoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkgb3IgKHNlbGYuaXNfaHR0cF90ZXN0KGRyaXZl
cl9pbnB1dC50ZXN0X25hbWUpIGFuZCAoc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCd3ZWJraXRfdGVz
dF9ydW5uZXInKSBvciBzeXMucGxhdGZvcm0gPT0gImN5Z3dpbiIpKToKICAgICAgICAgICAgIGNv
bW1hbmQgPSBzZWxmLnRlc3RfdG9fdXJpKGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpCiAgICAgICAg
ICAgICBjb21tYW5kICs9ICInLS1hYnNvbHV0ZVBhdGgnIgotICAgICAgICAgICAgY29tbWFuZCAr
PSBzZWxmLl9wb3J0LmFic3BhdGhfZm9yX3Rlc3QoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkKKyAg
ICAgICAgICAgIGNvbW1hbmQgKz0gc2VsZi5fcG9ydC5hYnNwYXRoX2Zvcl90ZXN0KGRyaXZlcl9p
bnB1dC50ZXN0X25hbWUsIHNlbGYuX3RhcmdldF9ob3N0KQogICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgY29tbWFuZCA9IHNlbGYuX3BvcnQuYWJzcGF0aF9mb3JfdGVzdChkcml2ZXJfaW5wdXQu
dGVzdF9uYW1lKQorICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYuX3BvcnQuYWJzcGF0aF9mb3Jf
dGVzdChkcml2ZXJfaW5wdXQudGVzdF9uYW1lLCBzZWxmLl90YXJnZXRfaG9zdCkKICAgICAgICAg
ICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJzoKICAgICAgICAgICAgICAgICBjb21tYW5k
ID0gcGF0aC5jeWdwYXRoKGNvbW1hbmQpCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9pb3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lv
cy5weQkocmV2aXNpb24gMjE0Njg0KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lv
cy5weQkod29ya2luZyBjb3B5KQpAQCAtNzcsMTMgKzc3LDEzIEBAIGNsYXNzIElPU1BvcnQoRGFy
d2luUG9ydCk6CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0RldmljZSBhdCB7fSBj
b3VsZCBub3QgYmUgZm91bmQnLmZvcm1hdChudW1iZXIpKQogICAgICAgICByZXR1cm4gZGV2aWNl
CiAKLSAgICAjIEZJWE1FOiBUaGlzIGlzIG9ubHkgZXhwb3NlZCBzbyB0aGF0IFNpbXVsYXRvclBy
b2Nlc3MgY2FuIHVzZSBpdC4KLSAgICBkZWYgZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyKHNlbGYs
IG51bWJlcik6Ci0gICAgICAgIGlmIHNlbGYuX3ByaW50aW5nX2NtZF9saW5lOgotICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKyAgICAjIEEgZGV2aWNlIGlzIHRoZSB0YXJnZXQgaG9zdCBmb3IgYSBz
cGVjaWZpYyB3b3JrZXIgbnVtYmVyLgorICAgIGRlZiB0YXJnZXRfaG9zdChzZWxmLCB3b3JrZXJf
bnVtYmVyPU5vbmUpOgorICAgICAgICBpZiBzZWxmLl9wcmludGluZ19jbWRfbGluZSBvciB3b3Jr
ZXJfbnVtYmVyIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5ob3N0CiAgICAgICAg
ICMgV2hlbiB1c2luZyBzaW11bGF0ZWQgZGV2aWNlcywgdGhpcyBtZWFucyB3ZWJraXRweSBpcyBt
YW5hZ2luZyB0aGUgZGV2aWNlcy4KICAgICAgICAgaWYgc2VsZi51c2luZ19tdWx0aXBsZV9kZXZp
Y2VzKCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fdGVzdGluZ19kZXZpY2UobnVtYmVyKQor
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RpbmdfZGV2aWNlKHdvcmtlcl9udW1iZXIpCiAg
ICAgICAgIHJldHVybiBzZWxmLl9jdXJyZW50X2RldmljZQogCiAgICAgZGVmIGRlZmF1bHRfYmFz
ZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgSU9TUG9y
dChEYXJ3aW5Qb3J0KToKICAgICAgICAgc2VsZi5fY3JlYXRlX2RldmljZXMoZGV2aWNlX2NsYXNz
KQogCiAgICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxmLmNoaWxkX3Byb2Nlc3NlcygpKToKLSAg
ICAgICAgICAgIGRldmljZSA9IHNlbGYuZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyKGkpCisgICAg
ICAgICAgICBkZXZpY2UgPSBzZWxmLnRhcmdldF9ob3N0KGkpCiAgICAgICAgICAgICBfbG9nLmRl
YnVnKCdJbnN0YWxsaW5nIHRvIHt9Jy5mb3JtYXQoZGV2aWNlKSkKICAgICAgICAgICAgICMgV2l0
aG91dCBwYXNzaW5nIERZTERfTElCUkFSWV9QQVRILCBsaWJXZWJDb3JlVGVzdFN1cHBvcnQgY2Fu
bm90IGJlIGxvYWRlZCBhbmQgRFJUL1dLVFIgd2lsbCBjcmFzaCBwcmUtbGF1bmNoLAogICAgICAg
ICAgICAgIyBsZWF2aW5nIGEgY3Jhc2ggbG9nIHdoaWNoIHdpbGwgYmUgcGlja2VkIHVwIGluIHJl
c3VsdHMuICBObyBEWUxEX0ZSQU1FV09SS19QQVRIIHdpbGwgYWxzbyBjYXVzZSB0aGUgRFJUL1dL
VFIgdG8KQEAgLTEyMCw3ICsxMjAsNyBAQCBjbGFzcyBJT1NQb3J0KERhcndpblBvcnQpOgogICAg
ICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmFpbGVkIHRvIGluc3RhbGwgYXBwIHt9
IG9uIGRldmljZSB7fScuZm9ybWF0KHNlbGYuX3BhdGhfdG9fZHJpdmVyKCksIGRldmljZS51ZGlk
KSkKIAogICAgICAgICBmb3IgaSBpbiB4cmFuZ2Uoc2VsZi5jaGlsZF9wcm9jZXNzZXMoKSk6Ci0g
ICAgICAgICAgICBzZWxmLmRldmljZV9mb3Jfd29ya2VyX251bWJlcihpKS5wcmVwYXJlX2Zvcl90
ZXN0aW5nKCkKKyAgICAgICAgICAgIHNlbGYudGFyZ2V0X2hvc3QoaSkucHJlcGFyZV9mb3JfdGVz
dGluZygpCiAKICAgICBkZWYgY2xlYW5fdXBfdGVzdF9ydW4oc2VsZik6CiAgICAgICAgIHN1cGVy
KElPU1BvcnQsIHNlbGYpLmNsZWFuX3VwX3Rlc3RfcnVuKCkKQEAgLTEyOSw5ICsxMjksOSBAQCBj
bGFzcyBJT1NQb3J0KERhcndpblBvcnQpOgogICAgICAgICAjIEZhaWx1cmUgdG8gdGVhcmRvd24g
ZGV2aWNlcyBjYW4gbGVhdmUgdGhpbmdzIGluIGEgYmFkIHN0YXRlLgogICAgICAgICBleGNlcHRp
b25fbGlzdCA9IFtdCiAgICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxmLmNoaWxkX3Byb2Nlc3Nl
cygpKToKLSAgICAgICAgICAgIGRldmljZSA9IHNlbGYuZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVy
KGkpCisgICAgICAgICAgICBkZXZpY2UgPSBzZWxmLnRhcmdldF9ob3N0KGkpCiAgICAgICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5kZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIoaSku
ZmluaXNoZWRfdGVzdGluZygpCisgICAgICAgICAgICAgICAgc2VsZi50YXJnZXRfaG9zdChpKS5m
aW5pc2hlZF90ZXN0aW5nKCkKICAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6
CiAgICAgICAgICAgICAgICAgdHJhY2UgPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCiAgICAgICAg
ICAgICAgICAgaWYgaXNpbnN0YW5jZShlLCBFeGNlcHRpb24pOgpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQkocmV2aXNpb24gMjE0Njg0KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFNlcnZlclByb2Nlc3Mob2JqZWN0KToKICAg
ICBpbmRlZmluaXRlbHkuIFRoZSBjbGFzcyBhbHNvIGhhbmRsZXMgdHJhbnNwYXJlbnRseSByZXN0
YXJ0aW5nIHByb2Nlc3NlcwogICAgIGFzIG5lY2Vzc2FyeSB0byBrZWVwIGlzc3VpbmcgY29tbWFu
ZHMuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG5hbWUsIGNtZCwgZW52
PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdHJlYXRfbm9fZGF0YV9hc19jcmFzaD1G
YWxzZSwgd29ya2VyX251bWJlcj1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9v
YmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdHJlYXRf
bm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CiAgICAgICAgIHNlbGYu
X3BvcnQgPSBwb3J0X29iagogICAgICAgICBzZWxmLl9uYW1lID0gbmFtZSAgIyBTaG91bGQgYmUg
dGhlIGNvbW1hbmQgbmFtZSAoZS5nLiBEdW1wUmVuZGVyVHJlZSwgSW1hZ2VEaWZmKQogICAgICAg
ICBzZWxmLl9jbWQgPSBjbWQKQEAgLTY5LDcgKzY5LDcgQEAgY2xhc3MgU2VydmVyUHJvY2Vzcyhv
YmplY3QpOgogICAgICAgICAjIERvbid0IHNldCBpZiB0aGVyZSB3aWxsIGJlIGJpbmFyeSBkYXRh
IG9yIHRoZSBkYXRhIG11c3QgYmUgQVNDSUkgZW5jb2RlZC4KICAgICAgICAgc2VsZi5fdW5pdmVy
c2FsX25ld2xpbmVzID0gdW5pdmVyc2FsX25ld2xpbmVzCiAgICAgICAgIHNlbGYuX3RyZWF0X25v
X2RhdGFfYXNfY3Jhc2ggPSB0cmVhdF9ub19kYXRhX2FzX2NyYXNoCi0gICAgICAgIHNlbGYuX2hv
c3QgPSBzZWxmLl9wb3J0Lmhvc3QKKyAgICAgICAgc2VsZi5fdGFyZ2V0X2hvc3QgPSB0YXJnZXRf
aG9zdCBvciBwb3J0X29iai5ob3N0CiAgICAgICAgIHNlbGYuX3BpZCA9IE5vbmUKICAgICAgICAg
c2VsZi5fcmVzZXQoKQogCkBAIC0xMTYsOSArMTE2LDkgQEAgY2xhc3MgU2VydmVyUHJvY2Vzcyhv
YmplY3QpOgogICAgICAgICAjIGNsb3NlX2ZkcyBpcyBhIHdvcmthcm91bmQgZm9yIGh0dHA6Ly9i
dWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCiAgICAgICAgICMgSW4gUHl0aG9uIDIuNy4xMCwgY2xv
c2VfZmRzIGlzIGFsc28gc3VwcG9ydGVkIG9uIFdpbmRvd3MuCiAgICAgICAgIGNsb3NlX2ZkcyA9
IFRydWUKLSAgICAgICAgc2VsZi5fcHJvYyA9IHNlbGYuX2hvc3QuZXhlY3V0aXZlLnBvcGVuKHNl
bGYuX2NtZCwgc3RkaW49c2VsZi5faG9zdC5leGVjdXRpdmUuUElQRSwKLSAgICAgICAgICAgIHN0
ZG91dD1zZWxmLl9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAotICAgICAgICAgICAgc3RkZXJyPXNlbGYu
X2hvc3QuZXhlY3V0aXZlLlBJUEUsCisgICAgICAgIHNlbGYuX3Byb2MgPSBzZWxmLl90YXJnZXRf
aG9zdC5leGVjdXRpdmUucG9wZW4oc2VsZi5fY21kLCBzdGRpbj1zZWxmLl90YXJnZXRfaG9zdC5l
eGVjdXRpdmUuUElQRSwKKyAgICAgICAgICAgIHN0ZG91dD1zZWxmLl90YXJnZXRfaG9zdC5leGVj
dXRpdmUuUElQRSwKKyAgICAgICAgICAgIHN0ZGVycj1zZWxmLl90YXJnZXRfaG9zdC5leGVjdXRp
dmUuUElQRSwKICAgICAgICAgICAgIGNsb3NlX2Zkcz1jbG9zZV9mZHMsCiAgICAgICAgICAgICBl
bnY9c2VsZi5fZW52LAogICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPXNlbGYuX3VuaXZl
cnNhbF9uZXdsaW5lcykKQEAgLTIxOSw3ICsyMTksNyBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzKG9i
amVjdCk6CiAgICAgZGVmIF9oYW5kbGVfdGltZW91dChzZWxmKToKICAgICAgICAgc2VsZi50aW1l
ZF9vdXQgPSBUcnVlCiAgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbigic2FtcGxlX29u
X3RpbWVvdXQiKToKLSAgICAgICAgICAgIHNlbGYuX3BvcnQuc2FtcGxlX3Byb2Nlc3Moc2VsZi5f
bmFtZSwgc2VsZi5fcHJvYy5waWQpCisgICAgICAgICAgICBzZWxmLl9wb3J0LnNhbXBsZV9wcm9j
ZXNzKHNlbGYuX25hbWUsIHNlbGYuX3Byb2MucGlkLCBzZWxmLl90YXJnZXRfaG9zdCkKIAogICAg
IGRlZiBfc3BsaXRfc3RyaW5nX2FmdGVyX2luZGV4KHNlbGYsIHN0cmluZywgaW5kZXgpOgogICAg
ICAgICByZXR1cm4gc3RyaW5nWzppbmRleF0sIHN0cmluZ1tpbmRleDpdCkBAIC0zNzgsNyArMzc4
LDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgICAgICBzZWxmLnN0b3AoMC4w
KQogCiAgICAgZGVmIF9raWxsKHNlbGYpOgotICAgICAgICBzZWxmLl9ob3N0LmV4ZWN1dGl2ZS5r
aWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCisgICAgICAgIHNlbGYuX3RhcmdldF9ob3N0LmV4
ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCiAgICAgICAgIGlmIHNlbGYuX3By
b2MucG9sbCgpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5fcHJvYy53YWl0KCkKIApJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzX21vY2sucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNz
X21vY2sucHkJKHJldmlzaW9uIDIxNDY4NCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9zZXJ2ZXJfcHJvY2Vzc19tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBA
CiAKIAogY2xhc3MgTW9ja1NlcnZlclByb2Nlc3Mob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgcG9ydF9vYmo9Tm9uZSwgbmFtZT1Ob25lLCBjbWQ9Tm9uZSwgZW52PU5vbmUsIHVuaXZl
cnNhbF9uZXdsaW5lcz1GYWxzZSwgbGluZXM9Tm9uZSwgY3Jhc2hlZD1GYWxzZSwgd29ya2VyX251
bWJlcj1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmo9Tm9uZSwgbmFtZT1O
b25lLCBjbWQ9Tm9uZSwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgbGluZXM9
Tm9uZSwgY3Jhc2hlZD1GYWxzZSwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CiAgICAgICAgIHNlbGYudGlt
ZWRfb3V0ID0gRmFsc2UKICAgICAgICAgc2VsZi5saW5lcyA9IGxpbmVzIG9yIFtdCiAgICAgICAg
IHNlbGYuY3Jhc2hlZCA9IGNyYXNoZWQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9zaW11bGF0b3JfcHJvY2Vzcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nlc3MucHkJKHJldmlzaW9uIDIxNDY4NCkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5weQkod29ya2luZyBjb3B5
KQpAQCAtNzAsMTMgKzcwLDExIEBAIGNsYXNzIFNpbXVsYXRvclByb2Nlc3MoU2VydmVyUHJvY2Vz
cyk6CiAgICAgICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0CiAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG5hbWUsIGNtZCwgZW52
PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdHJlYXRfbm9fZGF0YV9hc19jcmFzaD1G
YWxzZSwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CisgICAgICAgIGVudlsnUE9SVCddID0gc3RyKHRhcmdl
dF9ob3N0Lmxpc3RlbmluZ19wb3J0KCkpICAjIFRoZSB0YXJnZXRfaG9zdCBzaG91bGQgYmUgYSBk
ZXZpY2UuCisgICAgICAgIHN1cGVyKFNpbXVsYXRvclByb2Nlc3MsIHNlbGYpLl9faW5pdF9fKHBv
cnRfb2JqLCBuYW1lLCBjbWQsIGVudiwgdW5pdmVyc2FsX25ld2xpbmVzLCB0cmVhdF9ub19kYXRh
X2FzX2NyYXNoLCB0YXJnZXRfaG9zdCkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29i
aiwgbmFtZSwgY21kLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0cmVhdF9u
b19kYXRhX2FzX2NyYXNoPUZhbHNlLCB3b3JrZXJfbnVtYmVyPU5vbmUpOgogICAgICAgICBzZWxm
Ll9idW5kbGVfaWQgPSBwb3J0X29iai5hcHBfaWRlbnRpZmllcl9mcm9tX2J1bmRsZShjbWRbMF0p
Ci0gICAgICAgIHNlbGYuX2RldmljZSA9IHBvcnRfb2JqLmRldmljZV9mb3Jfd29ya2VyX251bWJl
cih3b3JrZXJfbnVtYmVyKQotCi0gICAgICAgIGVudlsnUE9SVCddID0gc3RyKHNlbGYuX2Rldmlj
ZS5saXN0ZW5pbmdfcG9ydCgpKQotICAgICAgICBzdXBlcihTaW11bGF0b3JQcm9jZXNzLCBzZWxm
KS5fX2luaXRfXyhwb3J0X29iaiwgbmFtZSwgY21kLCBlbnYsIHVuaXZlcnNhbF9uZXdsaW5lcywg
dHJlYXRfbm9fZGF0YV9hc19jcmFzaCkKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX2Fj
Y2VwdF9jb25uZWN0aW9uX2NyZWF0ZV9maWxlKHNlcnZlciwgdHlwZSk6CkBAIC05MSwxMiArODks
MTIgQEAgY2xhc3MgU2ltdWxhdG9yUHJvY2VzcyhTZXJ2ZXJQcm9jZXNzKToKIAogICAgICAgICAj
IEVhY2ggZGV2aWNlIGhhcyBhIGxpc3RlbmluZyBzb2NrZXQgaW50aXRpbGFpemVkIGR1cmluZyB0
aGUgcG9ydCdzIHNldHVwX3Rlc3RfcnVuLgogICAgICAgICAjIDMgY2xpZW50IGNvbm5lY3Rpb25z
IHdpbGwgYmUgYWNjZXB0ZWQgZm9yIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciBpbiB0aGF0IG9y
ZGVyLgotICAgICAgICBzZWxmLl9kZXZpY2UubGlzdGVuaW5nX3NvY2tldC5saXN0ZW4oMykKLSAg
ICAgICAgc2VsZi5fcGlkID0gc2VsZi5fZGV2aWNlLmxhdW5jaF9hcHAoc2VsZi5fYnVuZGxlX2lk
LCBzZWxmLl9jbWRbMTpdLCBlbnY9c2VsZi5fZW52KQorICAgICAgICBzZWxmLl90YXJnZXRfaG9z
dC5saXN0ZW5pbmdfc29ja2V0Lmxpc3RlbigzKQorICAgICAgICBzZWxmLl9waWQgPSBzZWxmLl90
YXJnZXRfaG9zdC5sYXVuY2hfYXBwKHNlbGYuX2J1bmRsZV9pZCwgc2VsZi5fY21kWzE6XSwgZW52
PXNlbGYuX2VudikKIAogICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKICAgICAg
ICAgICAgIGFzc2VydCBzaWdudW0gPT0gc2lnbmFsLlNJR0FMUk0KLSAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbignVGltZWQgb3V0IHdhaXRpbmcgZm9yIHByb2Nlc3MgdG8gY29ubmVjdCBhdCBw
b3J0IHt9Jy5mb3JtYXQoc2VsZi5fZGV2aWNlLmxpc3RlbmluZ19wb3J0KCkpKQorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdUaW1lZCBvdXQgd2FpdGluZyBmb3IgcHJvY2VzcyB0byBjb25u
ZWN0IGF0IHBvcnQge30nLmZvcm1hdChzZWxmLl90YXJnZXRfaG9zdC5saXN0ZW5pbmdfcG9ydCgp
KSkKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKICAgICAg
ICAgc2lnbmFsLmFsYXJtKDMpICAjIEluIHNlY29uZHMKIApAQCAtMTA1LDEyICsxMDMsMTIgQEAg
Y2xhc3MgU2ltdWxhdG9yUHJvY2VzcyhTZXJ2ZXJQcm9jZXNzKToKICAgICAgICAgc3RkZXJyID0g
Tm9uZQogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIFRoaXMgb3JkZXIgbWF0Y2hlcyB0aGUg
Y2xpZW50IHNpZGUgY29ubmVjdGlvbnMgaW4gVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9JT1NMYXlv
dXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgc2V0VXBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbigp
Ci0gICAgICAgICAgICBzdGRpbiA9IFNpbXVsYXRvclByb2Nlc3MuX2FjY2VwdF9jb25uZWN0aW9u
X2NyZWF0ZV9maWxlKHNlbGYuX2RldmljZS5saXN0ZW5pbmdfc29ja2V0LCAndycpCi0gICAgICAg
ICAgICBzdGRvdXQgPSBTaW11bGF0b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVf
ZmlsZShzZWxmLl9kZXZpY2UubGlzdGVuaW5nX3NvY2tldCwgJ3JiJykKLSAgICAgICAgICAgIHN0
ZGVyciA9IFNpbXVsYXRvclByb2Nlc3MuX2FjY2VwdF9jb25uZWN0aW9uX2NyZWF0ZV9maWxlKHNl
bGYuX2RldmljZS5saXN0ZW5pbmdfc29ja2V0LCAncmInKQorICAgICAgICAgICAgc3RkaW4gPSBT
aW11bGF0b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmlsZShzZWxmLl90YXJn
ZXRfaG9zdC5saXN0ZW5pbmdfc29ja2V0LCAndycpCisgICAgICAgICAgICBzdGRvdXQgPSBTaW11
bGF0b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmlsZShzZWxmLl90YXJnZXRf
aG9zdC5saXN0ZW5pbmdfc29ja2V0LCAncmInKQorICAgICAgICAgICAgc3RkZXJyID0gU2ltdWxh
dG9yUHJvY2Vzcy5fYWNjZXB0X2Nvbm5lY3Rpb25fY3JlYXRlX2ZpbGUoc2VsZi5fdGFyZ2V0X2hv
c3QubGlzdGVuaW5nX3NvY2tldCwgJ3JiJykKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAg
IyBXZSBzZXQgc2VsZi5fcHJvYyBhcyBfcmVzZXQoKSBhbmQgX2tpbGwoKSBkZXBlbmQgb24gaXQu
Ci0gICAgICAgICAgICBzZWxmLl9wcm9jID0gU2ltdWxhdG9yUHJvY2Vzcy5Qb3BlbihzZWxmLl9w
aWQsIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgc2VsZi5fZGV2aWNlKQorICAgICAgICAgICAgc2Vs
Zi5fcHJvYyA9IFNpbXVsYXRvclByb2Nlc3MuUG9wZW4oc2VsZi5fcGlkLCBzdGRpbiwgc3Rkb3V0
LCBzdGRlcnIsIHNlbGYuX3RhcmdldF9ob3N0KQogICAgICAgICAgICAgaWYgc2VsZi5fcHJvYy5w
b2xsKCkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5fcmVzZXQoKQogICAgICAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQXBwIHt9IGNyYXNoZWQgYmVmb3JlIHN0ZGluIGNv
dWxkIGJlIGF0dGFjaGVkJy5mb3JtYXQob3MucGF0aC5iYXNlbmFtZShzZWxmLl9jbWRbMF0pKSkK
QEAgLTExOSwxNCArMTE3LDkgQEAgY2xhc3MgU2ltdWxhdG9yUHJvY2VzcyhTZXJ2ZXJQcm9jZXNz
KToKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIHNpZ25hbC5hbGFybSgwKSAgIyBDYW5jZWwg
YWxhcm0KIAotICAgICAgICBzZWxmLl9wcm9jID0gU2ltdWxhdG9yUHJvY2Vzcy5Qb3BlbihzZWxm
Ll9waWQsIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgc2VsZi5fZGV2aWNlKQorICAgICAgICBzZWxm
Ll9wcm9jID0gU2ltdWxhdG9yUHJvY2Vzcy5Qb3BlbihzZWxmLl9waWQsIHN0ZGluLCBzdGRvdXQs
IHN0ZGVyciwgc2VsZi5fdGFyZ2V0X2hvc3QpCiAKICAgICBkZWYgc3RvcChzZWxmLCB0aW1lb3V0
X3NlY3M9My4wKToKICAgICAgICAgaWYgc2VsZi5fcHJvYzoKLSAgICAgICAgICAgIHNlbGYuX2Rl
dmljZS5leGVjdXRpdmUua2lsbF9wcm9jZXNzKHNlbGYuX3Byb2MucGlkKQorICAgICAgICAgICAg
c2VsZi5fdGFyZ2V0X2hvc3QuZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9jLnBpZCkK
ICAgICAgICAgcmV0dXJuIHN1cGVyKFNpbXVsYXRvclByb2Nlc3MsIHNlbGYpLnN0b3AodGltZW91
dF9zZWNzKQotCi0gICAgZGVmIF9raWxsKHNlbGYpOgotICAgICAgICBzZWxmLl9kZXZpY2UuZXhl
Y3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9jLnBpZCkKLSAgICAgICAgaWYgc2VsZi5fcHJv
Yy5wb2xsKCkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9wcm9jLndhaXQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306017</attachid>
            <date>2017-03-31 15:07:38 -0700</date>
            <delta_ts>2017-03-31 16:42:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170186-20170331150737.patch</filename>
            <type>text/plain</type>
            <size>30449</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxNDY4OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY5IEBACisyMDE3LTAzLTMxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogQWRkIHRhcmdldCBob3N0IGNvbmNlcHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDE4NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzEzMDE3OTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFBy
b3NrdXJ5YWtvdi4KKworICAgICAgICBBZGRpbmcgdGhlIGlkZWEgb2YgYSB0YXJnZXQgaG9zdC4g
VGFyZ2V0IGhvc3RzIGFyZSBvYmplY3RzIGNvbmZvcm1pbmcgdG8gdGhlCisgICAgICAgIHN0cnVj
dHVyZSBvZiB0aGUgU3lzdGVtSG9zdCBvYmplY3QgaW4gU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL3N5c3RlbWhvc3QucHkKKyAgICAgICAgVGFyZ2V0IGhvc3RzIGFyZSB0aGUgaG9zdHMg
YXNzb2NpYXRlZCB3aXRoIGEgd29ya2VyIHByb2Nlc3MuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weToKKyAgICAgICAgKEZpbGVTeXN0ZW0u
bWFwX2Jhc2VfaG9zdF9wYXRoKTogQ29udmVydCBhIHBhdGggZnJvbSBhbiBhYnNvbHV0ZSBwYXRo
IG9uIHRoZSBiYXNlCisgICAgICAgIGhvc3QgdG8gYW4gYWJzb2x1dGUgcGF0aCBvbiB0aGlzIGhv
c3QuCisgICAgICAgIChGaWxlU3lzdGVtLm1vdmVfdG9fYmFzZV9ob3N0KTogTW92ZSBmaWxlIGZy
b20gdGhpcyBob3N0IHRvIHRoZSBiYXNlIGhvc3QuCisgICAgICAgIChGaWxlU3lzdGVtLm1vdmVf
ZnJvbV9iYXNlX2hvc3QpOiBNb3ZlIGZpbGUgZnJvbSB0aGUgYmFzZSBob3N0IHRvIHRoaXMgaG9z
dC4KKyAgICAgICAgKEZpbGVTeXN0ZW0uY29weV90b19iYXNlX2hvc3QpOiBDb3B5IGZpbGUgZnJv
bSB0aGlzIGhvc3QgdG8gdGhlIGJhc2UgaG9zdC4KKyAgICAgICAgKEZpbGVTeXN0ZW0uY29weV9m
cm9tX2Jhc2VfaG9zdCk6IENvcHkgZmlsZSBmcm9tIHRoZSBiYXNlIGhvc3QgdG8gdGhpcyBob3N0
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21v
Y2sucHk6CisgICAgICAgIChNb2NrRmlsZVN5c3RlbS5tYXBfYmFzZV9ob3N0X3BhdGgpOiBDb252
ZXJ0IGEgcGF0aCBmcm9tIGFuIGFic29sdXRlIHBhdGggb24gdGhlIGJhc2UKKyAgICAgICAgaG9z
dCB0byBhbiBhYnNvbHV0ZSBwYXRoIG9uIHRoaXMgaG9zdC4KKyAgICAgICAgKE1vY2tGaWxlU3lz
dGVtLm1vdmVfdG9fYmFzZV9ob3N0KTogTW92ZSBmaWxlIGZyb20gdGhpcyBob3N0IHRvIHRoZSBi
YXNlIGhvc3QuCisgICAgICAgIChNb2NrRmlsZVN5c3RlbS5tb3ZlX2Zyb21fYmFzZV9ob3N0KTog
TW92ZSBmaWxlIGZyb20gdGhlIGJhc2UgaG9zdCB0byB0aGlzIGhvc3QuCisgICAgICAgIChNb2Nr
RmlsZVN5c3RlbS5jb3B5X3RvX2Jhc2VfaG9zdCk6IENvcHkgZmlsZSBmcm9tIHRoaXMgaG9zdCB0
byB0aGUgYmFzZSBob3N0LgorICAgICAgICAoTW9ja0ZpbGVTeXN0ZW0uY29weV9mcm9tX2Jhc2Vf
aG9zdCk6IENvcHkgZmlsZSBmcm9tIHRoZSBiYXNlIGhvc3QgdG8gdGhpcyBob3N0LgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydC50YXJnZXRf
aG9zdCk6IFJldHVybiBob3N0IGRldGVybWluZWQgYnkgd29ya2VyIG51bWJlci4KKyAgICAgICAg
KFBvcnQuYWJzcGF0aF9mb3JfdGVzdCk6IEFjY2VwdCBvcHRpb25hbCB0YXJnZXRfaG9zdCBhcmd1
bWVudCB0byByZXR1cm4gbG9jYXRpb24KKyAgICAgICAgb2YgdGVzdCBvbiBhIHRhcmdldCBob3N0
LgorICAgICAgICAoUG9ydC5fZHJpdmVyX3RlbXBkaXIpOiBBY2NlcHQgb3B0aW9uYWwgdGFyZ2V0
X2hvc3QgYXJndW1lbnQgdG8gcmV0dXJuIGEgdGVtcG9yYXJ5CisgICAgICAgIGRpcmVjdG9yeSBv
biBhIHRhcmdldCBob3N0LgorICAgICAgICAoUG9ydC5zYW1wbGVfcHJvY2Vzcyk6IEFjY2VwdCBv
cHRpb25hbCB0YXJnZXRfaG9zdCBhcmd1bWVudCB0byBzYW1wbGUgcHJvY2VzcyBvbgorICAgICAg
ICBhIHRhcmdldCBob3N0LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW4u
cHk6CisgICAgICAgIChEYXJ3aW5Qb3J0LnNhbXBsZV9wcm9jZXNzKTogUnVuIHNhbXBsZSBwcm9j
ZXNzIG9uIHRhcmdldCBob3N0LgorICAgICAgICAoRGFyd2luUG9ydC5zYW1wbGVfZmlsZV9wYXRo
KTogQWNjZXB0IGRpcmVjdG9yeSBmb3IgZmlsZS4KKyAgICAgICAgKERhcndpblBvcnQuc3BpbmR1
bXBfZmlsZV9wYXRoKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rh
cndpbl90ZXN0Y2FzZS5weToKKyAgICAgICAgKERhcndpblRlc3QudGVzdF9zcGluZHVtcCk6IENo
ZWNrIGZpbGUgbW92ZW1lbnQuCisgICAgICAgIChEYXJ3aW5UZXN0LnRlc3Rfc2FtcGxlX3Byb2Nl
c3MpOiBEaXR0by4KKyAgICAgICAgKERhcndpblRlc3QudGVzdF9zYW1wbGVfcHJvY2Vzc19leGNl
cHRpb24pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHk6CisgICAg
ICAgIChEcml2ZXIuX19pbml0X18pOiBBZGQgYW5kIHNldCBzZWxmLl90YXJnZXRfaG9zdCB2YXJp
YWJsZS4KKyAgICAgICAgKERyaXZlci5fc3RhcnQpOiBQYXNzIHRhcmdldCBob3N0IHRvIF9kcml2
ZXJfdGVtcGRpcigpLgorICAgICAgICAoRHJpdmVyLnN0b3ApOiBDYWxsIHRoZSB0YXJnZXQgaG9z
dCdzIHJtdHJlZS4KKyAgICAgICAgKERyaXZlci5fY2hlY2tfZm9yX2RyaXZlcl90aW1lb3V0KTog
UGFzcyB0YXJnZXQgaG9zdCB0byBzYW1wbGVfcHJvY2Vzcy4KKyAgICAgICAgKERyaXZlci5fY2hl
Y2tfZm9yX2RyaXZlcl9jcmFzaF9vcl91bnJlc3BvbnNpdmVuZXNzKTogRGl0dG8uCisgICAgICAg
IChEcml2ZXIuX2NvbW1hbmRfZnJvbV9kcml2ZXJfaW5wdXQpOiBQYXNzIHRhcmdldCBob3N0IHRv
IGFic3BhdGhfZm9yX3Rlc3QgYW5kIG1hcAorICAgICAgICBsYXlvdXQgdGVzdCBkaXJlY3Rvcnkg
dG8gdGFyZ2V0IGhvc3QuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weToK
KyAgICAgICAgKElPU1BvcnQpOgorICAgICAgICAoSU9TUG9ydC50YXJnZXRfaG9zdCk6IFJlcGxh
Y2VkIGRldmljZV9mb3Jfd29ya2VyX251bWJlci4KKyAgICAgICAgKElPU1BvcnQuc2V0dXBfdGVz
dF9ydW4pOiBSZXBsYWNlIGRldmljZV9mb3Jfd29ya2VyX251bWJlciB3aXRoIHRhcmdldF9ob3N0
LgorICAgICAgICAoSU9TUG9ydC5kZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIpOiBSZXBsYWNlZCB3
aXRoIHRhcmdldF9ob3N0LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJf
cHJvY2Vzcy5weToKKyAgICAgICAgKFNlcnZlclByb2Nlc3MuX19pbml0X18pOiBBY2NlcHQgdGFy
Z2V0X2hvc3QgaW5zdGVhZCBvZiB3b3JrZXJfbnVtYmVyLgorICAgICAgICAoU2VydmVyUHJvY2Vz
cy5fc3RhcnQpOiBSZXBsYWNlIF9ob3N0IHdpdGggX3RhcmdldF9ob3N0LgorICAgICAgICAoU2Vy
dmVyUHJvY2Vzcy5faGFuZGxlX3RpbWVvdXQpOiBEaXR0by4KKyAgICAgICAgKFNlcnZlclByb2Nl
c3MuX2tpbGwpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxh
dG9yX3Byb2Nlc3MucHk6CisgICAgICAgIChTaW11bGF0b3JQcm9jZXNzLl9faW5pdF9fKTogQWNj
ZXB0IHRhcmdldF9ob3N0IGluc3RlYWQgb2Ygd29ya2VyX251bWJlci4KKyAgICAgICAgKFNpbXVs
YXRvclByb2Nlc3MuX3N0YXJ0KTogUmVwbGFjZSBfZGV2aWNlIHdpdGggX3RhcmdldF9ob3N0Lgor
ICAgICAgICAoU2ltdWxhdG9yUHJvY2Vzcy5zdG9wKTogRGl0dG8uCisgICAgICAgIChTaW11bGF0
b3JQcm9jZXNzLl9raWxsKTogRGVsZXRlZC4KKwogMjAxNy0wMy0zMSAgVGltIEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWlsIGNhbiBnZXQgc3R1Y2sgdW5k
ZXJuZWF0aCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZ01hdGNoZXMgYWZ0ZXIgc2VhcmNoaW5n
IGluIGEgbG9uZyBtZXNzYWdlCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vZmlsZXN5c3RlbS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQkocmV2aXNpb24gMjE0Njg4KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTMxMCwzICszMTAsMjggQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogCiAgICAg
ZGVmIGNvbXBhcmUoc2VsZiwgcGF0aDEsIHBhdGgyKToKICAgICAgICAgcmV0dXJuIGZpbGVjbXAu
Y21wKHBhdGgxLCBwYXRoMikKKworICAgIGRlZiBtYXBfYmFzZV9ob3N0X3BhdGgoc2VsZiwgcGF0
aCk6CisgICAgICAgICIiIlJldHVybnMgYSBwYXRoIGZyb20gdGhlIGJhc2UgaG9zdCBsb2NhbGl6
ZWQgZm9yIHRoaXMgaG9zdC4gQnkgZGVmYXVsdCwKKyAgICAgICAgdGhpcyBob3N0IGFzc3VtZXMg
aXQgaXMgdGhlIGJhc2UgaG9zdCBhbmQgbWFwcyB0aGUgcGF0aCB0byBpdHNlbGYiIiIKKyAgICAg
ICAgcmV0dXJuIHBhdGgKKworICAgIGRlZiBtb3ZlX3RvX2Jhc2VfaG9zdChzZWxmLCBzb3VyY2Us
IGRlc3RpbmF0aW9uKToKKyAgICAgICAgIiIiTW92ZXMgYSBmaWxlIGZyb20gdGhpcyBob3N0IHRv
IHRoZSBiYXNlIGhvc3QuIEJ5IGRlZmF1bHQsIHRoaXMgaG9zdAorICAgICAgICBhc3N1bWVzIGl0
IGlzIHRoZSBiYXNlIGhvc3QgYW5kIHdpbGwganVzdCBleGVjdXRlIGEgbW92ZS4iIiIKKyAgICAg
ICAgc2VsZi5tb3ZlKHNvdXJjZSwgZGVzdGluYXRpb24pCisKKyAgICBkZWYgbW92ZV9mcm9tX2Jh
c2VfaG9zdChzZWxmLCBzb3VyY2UsIGRlc3RpbmF0aW9uKToKKyAgICAgICAgIiIiTW92ZXMgYSBm
aWxlIGZyb20gdGhlIGJhc2UgaG9zdCB0byB0aGlzIGhvc3QuIEJ5IGRlZmF1bHQsIHRoaXMgaG9z
dAorICAgICAgICBhc3N1bWVzIGl0IGlzIHRoZSBiYXNlIGhvc3QgYW5kIHdpbGwganVzdCBleGVj
dXRlIGEgbW92ZS4iIiIKKyAgICAgICAgc2VsZi5tb3ZlKHNvdXJjZSwgZGVzdGluYXRpb24pCisK
KyAgICBkZWYgY29weV90b19iYXNlX2hvc3Qoc2VsZiwgc291cmNlLCBkZXN0aW5hdGlvbik6Cisg
ICAgICAgICIiIkNvcHkgYSBmaWxlIGZyb20gdGhpcyBob3N0IHRvIHRoZSBiYXNlIGhvc3QuIEJ5
IGRlZmF1bHQsIHRoaXMgaG9zdAorICAgICAgICBhc3N1bWVzIGl0IGlzIHRoZSBiYXNlIGhvc3Qg
YW5kIHdpbGwganVzdCBleGVjdXRlIGEgY29weXRyZWUuIiIiCisgICAgICAgIHNlbGYuY29weXRy
ZWUoc291cmNlLCBkZXN0aW5hdGlvbikKKworICAgIGRlZiBjb3B5X2Zyb21fYmFzZV9ob3N0KHNl
bGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgorICAgICAgICAiIiJDb3B5IGEgZmlsZSBmcm9tIHRo
ZSBiYXNlIGhvc3QgdG8gdGhpcyBob3N0LiBCeSBkZWZhdWx0LCB0aGlzIGhvc3QKKyAgICAgICAg
YXNzdW1lcyBpdCBpcyB0aGUgYmFzZSBob3N0IGFuZCB3aWxsIGp1c3QgZXhlY3V0ZSBhIGNvcHl0
cmVlLiIiIgorICAgICAgICBzZWxmLmNvcHl0cmVlKHNvdXJjZSwgZGVzdGluYXRpb24pCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxl
c3lzdGVtX21vY2sucHkJKHJldmlzaW9uIDIxNDY4OCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkJKHdvcmtpbmcgY29weSkKQEAgLTQy
MCw2ICs0MjAsMjEgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICBkZWYgY29t
cGFyZShzZWxmLCBwYXRoMSwgcGF0aDIpOgogICAgICAgICByZXR1cm4gc2VsZi5yZWFkX2JpbmFy
eV9maWxlKHBhdGgxKSA9PSBzZWxmLnJlYWRfYmluYXJ5X2ZpbGUocGF0aDIpCiAKKyAgICBkZWYg
bWFwX2Jhc2VfaG9zdF9wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gcGF0aAorCisg
ICAgZGVmIG1vdmVfdG9fYmFzZV9ob3N0KHNlbGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgorICAg
ICAgICBzZWxmLm1vdmUoc291cmNlLCBkZXN0aW5hdGlvbikKKworICAgIGRlZiBtb3ZlX2Zyb21f
YmFzZV9ob3N0KHNlbGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgorICAgICAgICBzZWxmLm1vdmUo
c291cmNlLCBkZXN0aW5hdGlvbikKKworICAgIGRlZiBjb3B5X3RvX2Jhc2VfaG9zdChzZWxmLCBz
b3VyY2UsIGRlc3RpbmF0aW9uKToKKyAgICAgICAgc2VsZi5tb3ZlKHNvdXJjZSwgZGVzdGluYXRp
b24pCisKKyAgICBkZWYgY29weV9mcm9tX2Jhc2VfaG9zdChzZWxmLCBzb3VyY2UsIGRlc3RpbmF0
aW9uKToKKyAgICAgICAgc2VsZi5tb3ZlKHNvdXJjZSwgZGVzdGluYXRpb24pCisKIAogY2xhc3Mg
V3JpdGFibGVCaW5hcnlGaWxlT2JqZWN0KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZzLCBwYXRoKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CShyZXZpc2lv
biAyMTQ2ODgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAg
c2VsZi5fbGF5b3V0X3Rlc3RzX2RpciA9IGhhc2F0dHIob3B0aW9ucywgJ2xheW91dF90ZXN0c19k
aXInKSBhbmQgb3B0aW9ucy5sYXlvdXRfdGVzdHNfZGlyIGFuZCBzZWxmLl9maWxlc3lzdGVtLmFi
c3BhdGgob3B0aW9ucy5sYXlvdXRfdGVzdHNfZGlyKQogICAgICAgICBzZWxmLl93M2NfcmVzb3Vy
Y2VfZmlsZXMgPSBOb25lCiAKKyAgICBkZWYgdGFyZ2V0X2hvc3Qoc2VsZiwgd29ya2VyX251bWJl
cj1Ob25lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaG9zdAorCiAgICAgZGVmIGFyY2hpdGVjdHVy
ZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X29wdGlvbignYXJjaGl0ZWN0dXJlJykK
IApAQCAtODAyLDEwICs4MDUsMTEgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAg
cmV0dXJuIHNlbGYuaG9zdC5maWxlc3lzdGVtLmFic3BhdGgoZmlsZW5hbWUpCiAKICAgICBAbWVt
b2l6ZWQKLSAgICBkZWYgYWJzcGF0aF9mb3JfdGVzdChzZWxmLCB0ZXN0X25hbWUpOgorICAgIGRl
ZiBhYnNwYXRoX2Zvcl90ZXN0KHNlbGYsIHRlc3RfbmFtZSwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CiAg
ICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZmlsZSBmb3IgYSBnaXZlbiB0
ZXN0IG5hbWUuIFRoaXMgaXMgdGhlCi0gICAgICAgIGludmVyc2Ugb2YgcmVsYXRpdmVfdGVzdF9m
aWxlbmFtZSgpLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYu
bGF5b3V0X3Rlc3RzX2RpcigpLCB0ZXN0X25hbWUpCisgICAgICAgIGludmVyc2Ugb2YgcmVsYXRp
dmVfdGVzdF9maWxlbmFtZSgpIGlmIG5vIHRhcmdldF9ob3N0IGlzIHNwZWNpZmllZC4iIiIKKyAg
ICAgICAgaG9zdCA9IHRhcmdldF9ob3N0IG9yIHNlbGYuaG9zdAorICAgICAgICByZXR1cm4gaG9z
dC5maWxlc3lzdGVtLmpvaW4oaG9zdC5maWxlc3lzdGVtLm1hcF9iYXNlX2hvc3RfcGF0aChzZWxm
LmxheW91dF90ZXN0c19kaXIoKSksIHRlc3RfbmFtZSkKIAogICAgIGRlZiBqc2NfcmVzdWx0c19k
aXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCkKQEAgLTEy
ODIsOCArMTI4Niw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgIGxvY2FsX2Ry
aXZlcl9wYXRoID0gYmFzZSArICIuZXhlIgogICAgICAgICByZXR1cm4gbG9jYWxfZHJpdmVyX3Bh
dGgKIAotICAgIGRlZiBfZHJpdmVyX3RlbXBkaXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxm
Ll9maWxlc3lzdGVtLm1rZHRlbXAocHJlZml4PSclcy0nICUgc2VsZi5kcml2ZXJfbmFtZSgpKQor
ICAgIGRlZiBfZHJpdmVyX3RlbXBkaXIoc2VsZiwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CisgICAgICAg
IGhvc3QgPSB0YXJnZXRfaG9zdCBvciBzZWxmLmhvc3QKKyAgICAgICAgcmV0dXJuIGhvc3QuZmls
ZXN5c3RlbS5ta2R0ZW1wKHByZWZpeD0ne31zLScuZm9ybWF0KHNlbGYuZHJpdmVyX25hbWUoKSkp
CiAKICAgICBkZWYgX3BhdGhfdG9fdXNlcl9jYWNoZV9kaXJlY3Rvcnkoc2VsZiwgc3VmZml4PU5v
bmUpOgogICAgICAgICByZXR1cm4gTm9uZQpAQCAtMTM1NCw3ICsxMzU5LDcgQEAgY2xhc3MgUG9y
dChvYmplY3QpOgogICAgIGRlZiBsb29rX2Zvcl9uZXdfc2FtcGxlcyhzZWxmLCB1bnJlc3BvbnNp
dmVfcHJvY2Vzc2VzLCBzdGFydF90aW1lKToKICAgICAgICAgcGFzcwogCi0gICAgZGVmIHNhbXBs
ZV9wcm9jZXNzKHNlbGYsIG5hbWUsIHBpZCk6CisgICAgZGVmIHNhbXBsZV9wcm9jZXNzKHNlbGYs
IG5hbWUsIHBpZCwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBm
aW5kX3N5c3RlbV9waWQoc2VsZiwgbmFtZSwgcGlkKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9kYXJ3aW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2Rhcndpbi5weQkocmV2aXNpb24gMjE0Njg4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2Rhcndpbi5weQkod29ya2luZyBjb3B5KQpAQCAtMTIyLDggKzEyMiwxMCBAQCBj
bGFzcyBEYXJ3aW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgICAgIGFsbF9jcmFzaF9sb2cgPSBzZWxm
Ll9sb29rX2Zvcl9hbGxfY3Jhc2hfbG9nc19pbl9sb2dfZGlyKHN0YXJ0X3RpbWUpCiAgICAgICAg
IHJldHVybiBzZWxmLl9tZXJnZV9jcmFzaF9sb2dzKGNyYXNoX2xvZ3MsIGFsbF9jcmFzaF9sb2cs
IGNyYXNoZWRfcHJvY2Vzc2VzKQogCi0gICAgZGVmIHNhbXBsZV9wcm9jZXNzKHNlbGYsIG5hbWUs
IHBpZCk6Ci0gICAgICAgIGV4aXRfc3RhdHVzID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5k
KFsKKyAgICBkZWYgc2FtcGxlX3Byb2Nlc3Moc2VsZiwgbmFtZSwgcGlkLCB0YXJnZXRfaG9zdD1O
b25lKToKKyAgICAgICAgaG9zdCA9IHRhcmdldF9ob3N0IG9yIHNlbGYuaG9zdAorICAgICAgICB0
ZW1wZGlyID0gaG9zdC5maWxlc3lzdGVtLm1rZHRlbXAoKQorICAgICAgICBleGl0X3N0YXR1cyA9
IGhvc3QuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsKICAgICAgICAgICAgICIvdXNyL2Jpbi9zdWRv
IiwKICAgICAgICAgICAgICItbiIsCiAgICAgICAgICAgICAiL3Vzci9zYmluL3NwaW5kdW1wIiwK
QEAgLTEzMSwzNCArMTMzLDQ1IEBAIGNsYXNzIERhcndpblBvcnQoQXBwbGVQb3J0KToKICAgICAg
ICAgICAgIDEwLAogICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICAiLWZpbGUiLAotICAgICAg
ICAgICAgc2VsZi5zcGluZHVtcF9maWxlX3BhdGgobmFtZSwgcGlkKSwKKyAgICAgICAgICAgIERh
cndpblBvcnQuc3BpbmR1bXBfZmlsZV9wYXRoKGhvc3QsIG5hbWUsIHBpZCwgc3RyKHRlbXBkaXIp
KSwKICAgICAgICAgXSwgcmV0dXJuX2V4aXRfY29kZT1UcnVlKQogICAgICAgICBpZiBleGl0X3N0
YXR1czoKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9leGVjdXRpdmUu
cnVuX2NvbW1hbmQoWworICAgICAgICAgICAgICAgIGhvc3QuZXhlY3V0aXZlLnJ1bl9jb21tYW5k
KFsKICAgICAgICAgICAgICAgICAgICAgIi91c3IvYmluL3NhbXBsZSIsCiAgICAgICAgICAgICAg
ICAgICAgIHBpZCwKICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICAgICAgICAg
IDEwLAogICAgICAgICAgICAgICAgICAgICAiLWZpbGUiLAotICAgICAgICAgICAgICAgICAgICBz
ZWxmLnNhbXBsZV9maWxlX3BhdGgobmFtZSwgcGlkKSwKKyAgICAgICAgICAgICAgICAgICAgRGFy
d2luUG9ydC5zYW1wbGVfZmlsZV9wYXRoKGhvc3QsIG5hbWUsIHBpZCwgc3RyKHRlbXBkaXIpKSwK
ICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5tb3Zl
X3RvX2Jhc2VfaG9zdChEYXJ3aW5Qb3J0LnNhbXBsZV9maWxlX3BhdGgoaG9zdCwgbmFtZSwgcGlk
LCBzdHIodGVtcGRpcikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEYXJ3aW5Qb3J0LnNhbXBsZV9maWxlX3BhdGgoc2VsZi5ob3N0LCBuYW1lLCBw
aWQsIHNlbGYucmVzdWx0c19kaXJlY3RvcnkoKSkpCiAgICAgICAgICAgICBleGNlcHQgU2NyaXB0
RXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ1VuYWJsZSB0byBzYW1w
bGUgcHJvY2VzczonICsgc3RyKGUpKQotCi0gICAgZGVmIHNhbXBsZV9maWxlX3BhdGgoc2VsZiwg
bmFtZSwgcGlkKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLnJl
c3VsdHNfZGlyZWN0b3J5KCksICJ7MH0tezF9LXNhbXBsZS50eHQiLmZvcm1hdChuYW1lLCBwaWQp
KQotCi0gICAgZGVmIHNwaW5kdW1wX2ZpbGVfcGF0aChzZWxmLCBuYW1lLCBwaWQpOgotICAgICAg
ICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYucmVzdWx0c19kaXJlY3RvcnkoKSwg
InswfS17MX0tc3BpbmR1bXAudHh0Ii5mb3JtYXQobmFtZSwgcGlkKSkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5tb3ZlX3RvX2Jhc2VfaG9zdChEYXJ3aW5Qb3J0
LnNwaW5kdW1wX2ZpbGVfcGF0aChob3N0LCBuYW1lLCBwaWQsIHN0cih0ZW1wZGlyKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGFyd2luUG9ydC5zcGlu
ZHVtcF9maWxlX3BhdGgoc2VsZi5ob3N0LCBuYW1lLCBwaWQsIHNlbGYucmVzdWx0c19kaXJlY3Rv
cnkoKSkpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5ybXRyZWUoc3RyKHRlbXBkaXIpKQorCisg
ICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBzYW1wbGVfZmlsZV9wYXRoKGhvc3QsIG5hbWUsIHBp
ZCwgZGlyZWN0b3J5KToKKyAgICAgICAgcmV0dXJuIGhvc3QuZmlsZXN5c3RlbS5qb2luKGRpcmVj
dG9yeSwgInswfS17MX0tc2FtcGxlLnR4dCIuZm9ybWF0KG5hbWUsIHBpZCkpCisKKyAgICBAc3Rh
dGljbWV0aG9kCisgICAgZGVmIHNwaW5kdW1wX2ZpbGVfcGF0aChob3N0LCBuYW1lLCBwaWQsIGRp
cmVjdG9yeSk6CisgICAgICAgIHJldHVybiBob3N0LmZpbGVzeXN0ZW0uam9pbihkaXJlY3Rvcnks
ICJ7MH0tezF9LXNwaW5kdW1wLnR4dCIuZm9ybWF0KG5hbWUsIHBpZCkpCiAKICAgICBkZWYgbG9v
a19mb3JfbmV3X3NhbXBsZXMoc2VsZiwgdW5yZXNwb25zaXZlX3Byb2Nlc3Nlcywgc3RhcnRfdGlt
ZSk6CiAgICAgICAgIHNhbXBsZV9maWxlcyA9IHt9CiAgICAgICAgIGZvciAodGVzdF9uYW1lLCBw
cm9jZXNzX25hbWUsIHBpZCkgaW4gdW5yZXNwb25zaXZlX3Byb2Nlc3NlczoKLSAgICAgICAgICAg
IHNhbXBsZV9maWxlID0gc2VsZi5zYW1wbGVfZmlsZV9wYXRoKHByb2Nlc3NfbmFtZSwgcGlkKQot
ICAgICAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uaXNmaWxlKHNhbXBsZV9maWxlKToK
LSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgc2FtcGxlX2ZpbGVzW3Rlc3Rf
bmFtZV0gPSBzYW1wbGVfZmlsZQorICAgICAgICAgICAgc2FtcGxlX2ZpbGUgPSBEYXJ3aW5Qb3J0
LnNhbXBsZV9maWxlX3BhdGgoc2VsZi5ob3N0LCBwcm9jZXNzX25hbWUsIHBpZCwgc2VsZi5yZXN1
bHRzX2RpcmVjdG9yeSgpKQorICAgICAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5pc2ZpbGUo
c2FtcGxlX2ZpbGUpOgorICAgICAgICAgICAgICAgIHNhbXBsZV9maWxlc1t0ZXN0X25hbWVdID0g
c2FtcGxlX2ZpbGUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3BpbmR1bXBf
ZmlsZSA9IERhcndpblBvcnQuc3BpbmR1bXBfZmlsZV9wYXRoKHNlbGYuaG9zdCwgcHJvY2Vzc19u
YW1lLCBwaWQsIHNlbGYucmVzdWx0c19kaXJlY3RvcnkoKSkKKyAgICAgICAgICAgICAgICBpZiBz
ZWxmLl9maWxlc3lzdGVtLmlzZmlsZShzcGluZHVtcF9maWxlKToKKyAgICAgICAgICAgICAgICAg
ICAgc2FtcGxlX2ZpbGVzW3Rlc3RfbmFtZV0gPSBzcGluZHVtcF9maWxlCiAgICAgICAgIHJldHVy
biBzYW1wbGVfZmlsZXMKIAogICAgIGRlZiBtYWtlX2NvbW1hbmQoc2VsZik6CkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luX3Rlc3RjYXNlLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW5fdGVzdGNhc2UucHkJKHJldmlzaW9u
IDIxNDY4OCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW5fdGVzdGNhc2Uu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTkyLDkgKzkyLDEyIEBAIGNsYXNzIERhcndpblRlc3QocG9y
dF90ZXN0Y2FzZS5Qb3J0VGVzdEMKICAgICAgICAgICAgIHByaW50IGFyZ3MKIAogICAgICAgICBw
b3J0ID0gc2VsZi5tYWtlX3BvcnQoKQotICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhl
Y3V0aXZlMihydW5fY29tbWFuZF9mbj1sb2dnaW5nX3J1bl9jb21tYW5kKQotICAgICAgICBleHBl
Y3RlZF9zdGRvdXQgPSAiWycvdXNyL2Jpbi9zdWRvJywgJy1uJywgJy91c3Ivc2Jpbi9zcGluZHVt
cCcsIDQyLCAxMCwgMTAsICctZmlsZScsICcvbW9jay1idWlsZC9sYXlvdXQtdGVzdC1yZXN1bHRz
L3Rlc3QtNDItc3BpbmR1bXAudHh0J11cbiIKKyAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0u
ZmlsZXNbJy9fX2ltX3RtcC90bXBfMF8vdGVzdC00Mi1zcGluZHVtcC50eHQnXSA9ICdTcGluZHVt
cCBmaWxlJworICAgICAgICBwb3J0Lmhvc3QuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIocnVu
X2NvbW1hbmRfZm49bG9nZ2luZ19ydW5fY29tbWFuZCkKKyAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0
ID0gIlsnL3Vzci9iaW4vc3VkbycsICctbicsICcvdXNyL3NiaW4vc3BpbmR1bXAnLCA0MiwgMTAs
IDEwLCAnLWZpbGUnLCAnL19faW1fdG1wL3RtcF8wXy90ZXN0LTQyLXNwaW5kdW1wLnR4dCddXG4i
CiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0LnNhbXBs
ZV9wcm9jZXNzLCBhcmdzPVsndGVzdCcsIDQyXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0
ZG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxl
c1snL21vY2stYnVpbGQvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0LTQyLXNwaW5kdW1wLnR4dCdd
LCAnU3BpbmR1bXAgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBvcnQuaG9zdC5m
aWxlc3lzdGVtLmZpbGVzWycvX19pbV90bXAvdG1wXzBfL3Rlc3QtNDItc3BpbmR1bXAudHh0J10p
CiAKICAgICBkZWYgdGVzdF9zYW1wbGVfcHJvY2VzcyhzZWxmKToKIApAQCAtMTA1LDkgKzEwOCwx
MiBAQCBjbGFzcyBEYXJ3aW5UZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDCiAgICAgICAgICAg
ICByZXR1cm4gMAogCiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCi0gICAgICAgIHBv
cnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPWxvZ2dpbmdfcnVu
X2NvbW1hbmQpCi0gICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJbJy91c3IvYmluL3NhbXBsZScs
IDQyLCAxMCwgMTAsICctZmlsZScsICcvbW9jay1idWlsZC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rl
c3QtNDItc2FtcGxlLnR4dCddXG4iCisgICAgICAgIHBvcnQuaG9zdC5maWxlc3lzdGVtLmZpbGVz
WycvX19pbV90bXAvdG1wXzBfL3Rlc3QtNDItc2FtcGxlLnR4dCddID0gJ1NhbXBsZSBmaWxlJwor
ICAgICAgICBwb3J0Lmhvc3QuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIocnVuX2NvbW1hbmRf
Zm49bG9nZ2luZ19ydW5fY29tbWFuZCkKKyAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIlsnL3Vz
ci9iaW4vc2FtcGxlJywgNDIsIDEwLCAxMCwgJy1maWxlJywgJy9fX2ltX3RtcC90bXBfMF8vdGVz
dC00Mi1zYW1wbGUudHh0J11cbiIKICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRw
dXRzKHNlbGYsIHBvcnQuc2FtcGxlX3Byb2Nlc3MsIGFyZ3M9Wyd0ZXN0JywgNDJdLCBleHBlY3Rl
ZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQu
aG9zdC5maWxlc3lzdGVtLmZpbGVzWycvbW9jay1idWlsZC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rl
c3QtNDItc2FtcGxlLnR4dCddLCAnU2FtcGxlIGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydElz
Tm9uZShwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxlc1snL19faW1fdG1wL3RtcF8wXy90ZXN0LTQy
LXNhbXBsZS50eHQnXSkKIAogICAgIGRlZiB0ZXN0X3NhbXBsZV9wcm9jZXNzX2V4Y2VwdGlvbihz
ZWxmKToKICAgICAgICAgZGVmIHRocm93aW5nX3J1bl9jb21tYW5kKGFyZ3MpOgpAQCAtMTE2LDUg
KzEyMiw1IEBAIGNsYXNzIERhcndpblRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdEMKICAgICAg
ICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJNT0NLIHNjcmlwdCBlcnJvciIpCiAKICAgICAgICAg
cG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKLSAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4
ZWN1dGl2ZTIocnVuX2NvbW1hbmRfZm49dGhyb3dpbmdfcnVuX2NvbW1hbmQpCisgICAgICAgIHBv
cnQuaG9zdC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihydW5fY29tbWFuZF9mbj10aHJvd2lu
Z19ydW5fY29tbWFuZCkKICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNl
bGYsIHBvcnQuc2FtcGxlX3Byb2Nlc3MsIGFyZ3M9Wyd0ZXN0JywgNDJdKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5CShyZXZpc2lvbiAyMTQ2ODgpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiAr
MTMzLDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0
CiAgICAgICAgIHNlbGYuX3dvcmtlcl9udW1iZXIgPSB3b3JrZXJfbnVtYmVyCiAgICAgICAgIHNl
bGYuX25vX3RpbWVvdXQgPSBub190aW1lb3V0CisgICAgICAgIHNlbGYuX3RhcmdldF9ob3N0ID0g
cG9ydC50YXJnZXRfaG9zdCh3b3JrZXJfbnVtYmVyKQogCiAgICAgICAgIHNlbGYuX2RyaXZlcl90
ZW1wZGlyID0gTm9uZQogICAgICAgICBzZWxmLl9kcml2ZXJfdXNlcl9kaXJlY3Rvcnlfc3VmZml4
ID0gTm9uZQpAQCAtMzU5LDE2ICszNjAsMTYgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAg
ICAgICMgRWFjaCBkcml2ZXIgcHJvY2VzcyBzaG91bGQgYmUgdXNpbmcgaW5kaXZpZHVhbCBkaXJl
Y3RvcmllcyB1bmRlciBfZHJpdmVyX3RlbXBkaXIgKHdoaWNoIGlzIGRlbGV0ZWQgd2hlbiBzdG9w
cGluZyksCiAgICAgICAgICMgaG93ZXZlciBzb21lIHN1YnN5c3RlbXMgb24gc29tZSBwbGF0Zm9y
bXMgY291bGQgZW5kIHVwIHVzaW5nIHByb2Nlc3MgZGVmYXVsdCBvbmVzLgogICAgICAgICBzZWxm
Ll9wb3J0Ll9jbGVhcl9nbG9iYWxfY2FjaGVzX2FuZF90ZW1wb3JhcnlfZmlsZXMoKQotICAgICAg
ICBzZWxmLl9kcml2ZXJfdGVtcGRpciA9IHNlbGYuX3BvcnQuX2RyaXZlcl90ZW1wZGlyKCkKKyAg
ICAgICAgc2VsZi5fZHJpdmVyX3RlbXBkaXIgPSBzZWxmLl9wb3J0Ll9kcml2ZXJfdGVtcGRpcihz
ZWxmLl90YXJnZXRfaG9zdCkKICAgICAgICAgc2VsZi5fZHJpdmVyX3VzZXJfZGlyZWN0b3J5X3N1
ZmZpeCA9IG9zLnBhdGguYmFzZW5hbWUoc3RyKHNlbGYuX2RyaXZlcl90ZW1wZGlyKSkKICAgICAg
ICAgdXNlcl9jYWNoZV9kaXJlY3RvcnkgPSBzZWxmLl9wb3J0Ll9wYXRoX3RvX3VzZXJfY2FjaGVf
ZGlyZWN0b3J5KHNlbGYuX2RyaXZlcl91c2VyX2RpcmVjdG9yeV9zdWZmaXgpCiAgICAgICAgIGlm
IHVzZXJfY2FjaGVfZGlyZWN0b3J5OgotICAgICAgICAgICAgc2VsZi5fcG9ydC5fZmlsZXN5c3Rl
bS5tYXliZV9tYWtlX2RpcmVjdG9yeSh1c2VyX2NhY2hlX2RpcmVjdG9yeSkKKyAgICAgICAgICAg
IHNlbGYuX3RhcmdldF9ob3N0LmZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkodXNlcl9j
YWNoZV9kaXJlY3RvcnkpCiAgICAgICAgICAgICBzZWxmLl9kcml2ZXJfdXNlcl9jYWNoZV9kaXJl
Y3RvcnkgPSB1c2VyX2NhY2hlX2RpcmVjdG9yeQogICAgICAgICBlbnZpcm9ubWVudCA9IHNlbGYu
X3NldHVwX2Vudmlyb25fZm9yX3Rlc3QoKQogICAgICAgICBzZWxmLl9jcmFzaGVkX3Byb2Nlc3Nf
bmFtZSA9IE5vbmUKICAgICAgICAgc2VsZi5fY3Jhc2hlZF9waWQgPSBOb25lCi0gICAgICAgIHNl
bGYuX3NlcnZlcl9wcm9jZXNzID0gc2VsZi5fcG9ydC5fdGVzdF9ydW5uZXJfcHJvY2Vzc19jb25z
dHJ1Y3RvcihzZWxmLl9wb3J0LCBzZWxmLl9zZXJ2ZXJfbmFtZSwgc2VsZi5jbWRfbGluZShwaXhl
bF90ZXN0cywgcGVyX3Rlc3RfYXJncyksIGVudmlyb25tZW50LCB3b3JrZXJfbnVtYmVyPXNlbGYu
X3dvcmtlcl9udW1iZXIpCisgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzID0gc2VsZi5fcG9y
dC5fdGVzdF9ydW5uZXJfcHJvY2Vzc19jb25zdHJ1Y3RvcihzZWxmLl9wb3J0LCBzZWxmLl9zZXJ2
ZXJfbmFtZSwgc2VsZi5jbWRfbGluZShwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJncyksIGVudmly
b25tZW50LCB0YXJnZXRfaG9zdD1zZWxmLl90YXJnZXRfaG9zdCkKICAgICAgICAgc2VsZi5fc2Vy
dmVyX3Byb2Nlc3Muc3RhcnQoKQogCiAgICAgZGVmIF9ydW5fcG9zdF9zdGFydF90YXNrcyhzZWxm
KToKQEAgLTM4OCwxMCArMzg5LDEwIEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAg
ICAgICAgIHNlbGYuX3Byb2ZpbGVyLnByb2ZpbGVfYWZ0ZXJfZXhpdCgpCiAKICAgICAgICAgaWYg
c2VsZi5fZHJpdmVyX3RlbXBkaXI6Ci0gICAgICAgICAgICBzZWxmLl9wb3J0Ll9maWxlc3lzdGVt
LnJtdHJlZShzdHIoc2VsZi5fZHJpdmVyX3RlbXBkaXIpKQorICAgICAgICAgICAgc2VsZi5fdGFy
Z2V0X2hvc3QuZmlsZXN5c3RlbS5ybXRyZWUoc3RyKHNlbGYuX2RyaXZlcl90ZW1wZGlyKSkKICAg
ICAgICAgICAgIHNlbGYuX2RyaXZlcl90ZW1wZGlyID0gTm9uZQogICAgICAgICBpZiBzZWxmLl9k
cml2ZXJfdXNlcl9jYWNoZV9kaXJlY3Rvcnk6Ci0gICAgICAgICAgICBzZWxmLl9wb3J0Ll9maWxl
c3lzdGVtLnJtdHJlZShzZWxmLl9kcml2ZXJfdXNlcl9jYWNoZV9kaXJlY3RvcnkpCisgICAgICAg
ICAgICBzZWxmLl90YXJnZXRfaG9zdC5maWxlc3lzdGVtLnJtdHJlZShzZWxmLl9kcml2ZXJfdXNl
cl9jYWNoZV9kaXJlY3RvcnkpCiAgICAgICAgICAgICBzZWxmLl9kcml2ZXJfdXNlcl9jYWNoZV9k
aXJlY3RvcnkgPSBOb25lCiAKICAgICBkZWYgY21kX2xpbmUoc2VsZiwgcGl4ZWxfdGVzdHMsIHBl
cl90ZXN0X2FyZ3MpOgpAQCAtNDMyLDcgKzQzMyw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgog
ICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gZXJyX2xpbmUKICAgICAgICAgICAg
IF9sb2cuZGVidWcoZXJyX2xpbmUpCiAgICAgICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRp
b24oInNhbXBsZV9vbl90aW1lb3V0Iik6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5zYW1w
bGVfcHJvY2VzcyhjaGlsZF9wcm9jZXNzX25hbWUsIGNoaWxkX3Byb2Nlc3NfcGlkKQorICAgICAg
ICAgICAgICAgIHNlbGYuX3BvcnQuc2FtcGxlX3Byb2Nlc3MoY2hpbGRfcHJvY2Vzc19uYW1lLCBj
aGlsZF9wcm9jZXNzX3BpZCwgc2VsZi5fdGFyZ2V0X2hvc3QpCiAgICAgICAgIGlmIG91dF9saW5l
ID09ICJGQUlMOiBUaW1lZCBvdXQgd2FpdGluZyBmb3Igbm90aWZ5RG9uZSB0byBiZSBjYWxsZWRc
biI6CiAgICAgICAgICAgICBzZWxmLl9kcml2ZXJfdGltZWRfb3V0ID0gVHJ1ZQogCkBAIC00NjEs
NyArNDYyLDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICAgICBfbG9nLmRlYnVn
KCclcyBpcyB1bnJlc3BvbnNpdmUsIHBpZCA9ICVzJyAlIChjaGlsZF9wcm9jZXNzX25hbWUsIHN0
cihjaGlsZF9wcm9jZXNzX3BpZCkpKQogICAgICAgICAgICAgc2VsZi5fZHJpdmVyX3RpbWVkX291
dCA9IFRydWUKICAgICAgICAgICAgIGlmIGNoaWxkX3Byb2Nlc3NfcGlkOgotICAgICAgICAgICAg
ICAgIHNlbGYuX3BvcnQuc2FtcGxlX3Byb2Nlc3MoY2hpbGRfcHJvY2Vzc19uYW1lLCBjaGlsZF9w
cm9jZXNzX3BpZCkKKyAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnNhbXBsZV9wcm9jZXNzKGNo
aWxkX3Byb2Nlc3NfbmFtZSwgY2hpbGRfcHJvY2Vzc19waWQsIHNlbGYuX3RhcmdldF9ob3N0KQog
ICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gZXJyb3JfbGluZQogICAgICAgICAg
ICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Mud3JpdGUoJyNTQU1QTEUgRklOSVNIRURcbicsIFRydWUp
ICAjIE11c3QgYmUgYWJsZSB0byBpZ25vcmUgYSBicm9rZW4gcGlwZSBoZXJlLCB0YXJnZXQgcHJv
Y2VzcyBtYXkgYWxyZWFkeSBiZSBjbG9zZWQuCiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQpAQCAt
NDc0LDkgKzQ3NSw5IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICBlbGlmIHNlbGYu
aXNfd2ViX3BsYXRmb3JtX3Rlc3QoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkgb3IgKHNlbGYuaXNf
aHR0cF90ZXN0KGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpIGFuZCAoc2VsZi5fcG9ydC5nZXRfb3B0
aW9uKCd3ZWJraXRfdGVzdF9ydW5uZXInKSBvciBzeXMucGxhdGZvcm0gPT0gImN5Z3dpbiIpKToK
ICAgICAgICAgICAgIGNvbW1hbmQgPSBzZWxmLnRlc3RfdG9fdXJpKGRyaXZlcl9pbnB1dC50ZXN0
X25hbWUpCiAgICAgICAgICAgICBjb21tYW5kICs9ICInLS1hYnNvbHV0ZVBhdGgnIgotICAgICAg
ICAgICAgY29tbWFuZCArPSBzZWxmLl9wb3J0LmFic3BhdGhfZm9yX3Rlc3QoZHJpdmVyX2lucHV0
LnRlc3RfbmFtZSkKKyAgICAgICAgICAgIGNvbW1hbmQgKz0gc2VsZi5fcG9ydC5hYnNwYXRoX2Zv
cl90ZXN0KGRyaXZlcl9pbnB1dC50ZXN0X25hbWUsIHNlbGYuX3RhcmdldF9ob3N0KQogICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYuX3BvcnQuYWJzcGF0aF9mb3JfdGVz
dChkcml2ZXJfaW5wdXQudGVzdF9uYW1lKQorICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYuX3Bv
cnQuYWJzcGF0aF9mb3JfdGVzdChkcml2ZXJfaW5wdXQudGVzdF9uYW1lLCBzZWxmLl90YXJnZXRf
aG9zdCkKICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJzoKICAgICAgICAg
ICAgICAgICBjb21tYW5kID0gcGF0aC5jeWdwYXRoKGNvbW1hbmQpCiAKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2lvcy5weQkocmV2aXNpb24gMjE0Njg4KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2lvcy5weQkod29ya2luZyBjb3B5KQpAQCAtNzcsMTMgKzc3LDEzIEBAIGNs
YXNzIElPU1BvcnQoRGFyd2luUG9ydCk6CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3Io
J0RldmljZSBhdCB7fSBjb3VsZCBub3QgYmUgZm91bmQnLmZvcm1hdChudW1iZXIpKQogICAgICAg
ICByZXR1cm4gZGV2aWNlCiAKLSAgICAjIEZJWE1FOiBUaGlzIGlzIG9ubHkgZXhwb3NlZCBzbyB0
aGF0IFNpbXVsYXRvclByb2Nlc3MgY2FuIHVzZSBpdC4KLSAgICBkZWYgZGV2aWNlX2Zvcl93b3Jr
ZXJfbnVtYmVyKHNlbGYsIG51bWJlcik6Ci0gICAgICAgIGlmIHNlbGYuX3ByaW50aW5nX2NtZF9s
aW5lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAjIEEgZGV2aWNlIGlzIHRoZSB0YXJn
ZXQgaG9zdCBmb3IgYSBzcGVjaWZpYyB3b3JrZXIgbnVtYmVyLgorICAgIGRlZiB0YXJnZXRfaG9z
dChzZWxmLCB3b3JrZXJfbnVtYmVyPU5vbmUpOgorICAgICAgICBpZiBzZWxmLl9wcmludGluZ19j
bWRfbGluZSBvciB3b3JrZXJfbnVtYmVyIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5ob3N0CiAgICAgICAgICMgV2hlbiB1c2luZyBzaW11bGF0ZWQgZGV2aWNlcywgdGhpcyBtZWFu
cyB3ZWJraXRweSBpcyBtYW5hZ2luZyB0aGUgZGV2aWNlcy4KICAgICAgICAgaWYgc2VsZi51c2lu
Z19tdWx0aXBsZV9kZXZpY2VzKCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fdGVzdGluZ19k
ZXZpY2UobnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RpbmdfZGV2aWNlKHdv
cmtlcl9udW1iZXIpCiAgICAgICAgIHJldHVybiBzZWxmLl9jdXJyZW50X2RldmljZQogCiAgICAg
ZGVmIGRlZmF1bHRfYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CkBAIC0xMTEsNyArMTExLDcg
QEAgY2xhc3MgSU9TUG9ydChEYXJ3aW5Qb3J0KToKICAgICAgICAgc2VsZi5fY3JlYXRlX2Rldmlj
ZXMoZGV2aWNlX2NsYXNzKQogCiAgICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxmLmNoaWxkX3By
b2Nlc3NlcygpKToKLSAgICAgICAgICAgIGRldmljZSA9IHNlbGYuZGV2aWNlX2Zvcl93b3JrZXJf
bnVtYmVyKGkpCisgICAgICAgICAgICBkZXZpY2UgPSBzZWxmLnRhcmdldF9ob3N0KGkpCiAgICAg
ICAgICAgICBfbG9nLmRlYnVnKCdJbnN0YWxsaW5nIHRvIHt9Jy5mb3JtYXQoZGV2aWNlKSkKICAg
ICAgICAgICAgICMgV2l0aG91dCBwYXNzaW5nIERZTERfTElCUkFSWV9QQVRILCBsaWJXZWJDb3Jl
VGVzdFN1cHBvcnQgY2Fubm90IGJlIGxvYWRlZCBhbmQgRFJUL1dLVFIgd2lsbCBjcmFzaCBwcmUt
bGF1bmNoLAogICAgICAgICAgICAgIyBsZWF2aW5nIGEgY3Jhc2ggbG9nIHdoaWNoIHdpbGwgYmUg
cGlja2VkIHVwIGluIHJlc3VsdHMuICBObyBEWUxEX0ZSQU1FV09SS19QQVRIIHdpbGwgYWxzbyBj
YXVzZSB0aGUgRFJUL1dLVFIgdG8KQEAgLTEyMCw3ICsxMjAsNyBAQCBjbGFzcyBJT1NQb3J0KERh
cndpblBvcnQpOgogICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmFpbGVkIHRv
IGluc3RhbGwgYXBwIHt9IG9uIGRldmljZSB7fScuZm9ybWF0KHNlbGYuX3BhdGhfdG9fZHJpdmVy
KCksIGRldmljZS51ZGlkKSkKIAogICAgICAgICBmb3IgaSBpbiB4cmFuZ2Uoc2VsZi5jaGlsZF9w
cm9jZXNzZXMoKSk6Ci0gICAgICAgICAgICBzZWxmLmRldmljZV9mb3Jfd29ya2VyX251bWJlcihp
KS5wcmVwYXJlX2Zvcl90ZXN0aW5nKCkKKyAgICAgICAgICAgIHNlbGYudGFyZ2V0X2hvc3QoaSku
cHJlcGFyZV9mb3JfdGVzdGluZygpCiAKICAgICBkZWYgY2xlYW5fdXBfdGVzdF9ydW4oc2VsZik6
CiAgICAgICAgIHN1cGVyKElPU1BvcnQsIHNlbGYpLmNsZWFuX3VwX3Rlc3RfcnVuKCkKQEAgLTEy
OSw5ICsxMjksOSBAQCBjbGFzcyBJT1NQb3J0KERhcndpblBvcnQpOgogICAgICAgICAjIEZhaWx1
cmUgdG8gdGVhcmRvd24gZGV2aWNlcyBjYW4gbGVhdmUgdGhpbmdzIGluIGEgYmFkIHN0YXRlLgog
ICAgICAgICBleGNlcHRpb25fbGlzdCA9IFtdCiAgICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxm
LmNoaWxkX3Byb2Nlc3NlcygpKToKLSAgICAgICAgICAgIGRldmljZSA9IHNlbGYuZGV2aWNlX2Zv
cl93b3JrZXJfbnVtYmVyKGkpCisgICAgICAgICAgICBkZXZpY2UgPSBzZWxmLnRhcmdldF9ob3N0
KGkpCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5kZXZpY2VfZm9yX3dv
cmtlcl9udW1iZXIoaSkuZmluaXNoZWRfdGVzdGluZygpCisgICAgICAgICAgICAgICAgc2VsZi50
YXJnZXRfaG9zdChpKS5maW5pc2hlZF90ZXN0aW5nKCkKICAgICAgICAgICAgIGV4Y2VwdCBCYXNl
RXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgdHJhY2UgPSB0cmFjZWJhY2suZm9ybWF0
X2V4YygpCiAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShlLCBFeGNlcHRpb24pOgpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQkocmV2
aXNpb24gMjE0Njg4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9j
ZXNzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFNlcnZlclByb2Nl
c3Mob2JqZWN0KToKICAgICBpbmRlZmluaXRlbHkuIFRoZSBjbGFzcyBhbHNvIGhhbmRsZXMgdHJh
bnNwYXJlbnRseSByZXN0YXJ0aW5nIHByb2Nlc3NlcwogICAgIGFzIG5lY2Vzc2FyeSB0byBrZWVw
IGlzc3VpbmcgY29tbWFuZHMuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmos
IG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdHJlYXRfbm9f
ZGF0YV9hc19jcmFzaD1GYWxzZSwgd29ya2VyX251bWJlcj1Ob25lKToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgcG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5l
cz1GYWxzZSwgdHJlYXRfbm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgdGFyZ2V0X2hvc3Q9Tm9uZSk6
CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0X29iagogICAgICAgICBzZWxmLl9uYW1lID0gbmFt
ZSAgIyBTaG91bGQgYmUgdGhlIGNvbW1hbmQgbmFtZSAoZS5nLiBEdW1wUmVuZGVyVHJlZSwgSW1h
Z2VEaWZmKQogICAgICAgICBzZWxmLl9jbWQgPSBjbWQKQEAgLTY5LDcgKzY5LDcgQEAgY2xhc3Mg
U2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgICAgICAjIERvbid0IHNldCBpZiB0aGVyZSB3aWxs
IGJlIGJpbmFyeSBkYXRhIG9yIHRoZSBkYXRhIG11c3QgYmUgQVNDSUkgZW5jb2RlZC4KICAgICAg
ICAgc2VsZi5fdW5pdmVyc2FsX25ld2xpbmVzID0gdW5pdmVyc2FsX25ld2xpbmVzCiAgICAgICAg
IHNlbGYuX3RyZWF0X25vX2RhdGFfYXNfY3Jhc2ggPSB0cmVhdF9ub19kYXRhX2FzX2NyYXNoCi0g
ICAgICAgIHNlbGYuX2hvc3QgPSBzZWxmLl9wb3J0Lmhvc3QKKyAgICAgICAgc2VsZi5fdGFyZ2V0
X2hvc3QgPSB0YXJnZXRfaG9zdCBvciBwb3J0X29iai5ob3N0CiAgICAgICAgIHNlbGYuX3BpZCA9
IE5vbmUKICAgICAgICAgc2VsZi5fcmVzZXQoKQogCkBAIC0xMTYsOSArMTE2LDkgQEAgY2xhc3Mg
U2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgICAgICAjIGNsb3NlX2ZkcyBpcyBhIHdvcmthcm91
bmQgZm9yIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCiAgICAgICAgICMgSW4gUHl0
aG9uIDIuNy4xMCwgY2xvc2VfZmRzIGlzIGFsc28gc3VwcG9ydGVkIG9uIFdpbmRvd3MuCiAgICAg
ICAgIGNsb3NlX2ZkcyA9IFRydWUKLSAgICAgICAgc2VsZi5fcHJvYyA9IHNlbGYuX2hvc3QuZXhl
Y3V0aXZlLnBvcGVuKHNlbGYuX2NtZCwgc3RkaW49c2VsZi5faG9zdC5leGVjdXRpdmUuUElQRSwK
LSAgICAgICAgICAgIHN0ZG91dD1zZWxmLl9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAotICAgICAgICAg
ICAgc3RkZXJyPXNlbGYuX2hvc3QuZXhlY3V0aXZlLlBJUEUsCisgICAgICAgIHNlbGYuX3Byb2Mg
PSBzZWxmLl90YXJnZXRfaG9zdC5leGVjdXRpdmUucG9wZW4oc2VsZi5fY21kLCBzdGRpbj1zZWxm
Ll90YXJnZXRfaG9zdC5leGVjdXRpdmUuUElQRSwKKyAgICAgICAgICAgIHN0ZG91dD1zZWxmLl90
YXJnZXRfaG9zdC5leGVjdXRpdmUuUElQRSwKKyAgICAgICAgICAgIHN0ZGVycj1zZWxmLl90YXJn
ZXRfaG9zdC5leGVjdXRpdmUuUElQRSwKICAgICAgICAgICAgIGNsb3NlX2Zkcz1jbG9zZV9mZHMs
CiAgICAgICAgICAgICBlbnY9c2VsZi5fZW52LAogICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xp
bmVzPXNlbGYuX3VuaXZlcnNhbF9uZXdsaW5lcykKQEAgLTIxOSw3ICsyMTksNyBAQCBjbGFzcyBT
ZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAgZGVmIF9oYW5kbGVfdGltZW91dChzZWxmKToKICAg
ICAgICAgc2VsZi50aW1lZF9vdXQgPSBUcnVlCiAgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29w
dGlvbigic2FtcGxlX29uX3RpbWVvdXQiKToKLSAgICAgICAgICAgIHNlbGYuX3BvcnQuc2FtcGxl
X3Byb2Nlc3Moc2VsZi5fbmFtZSwgc2VsZi5fcHJvYy5waWQpCisgICAgICAgICAgICBzZWxmLl9w
b3J0LnNhbXBsZV9wcm9jZXNzKHNlbGYuX25hbWUsIHNlbGYuX3Byb2MucGlkLCBzZWxmLl90YXJn
ZXRfaG9zdCkKIAogICAgIGRlZiBfc3BsaXRfc3RyaW5nX2FmdGVyX2luZGV4KHNlbGYsIHN0cmlu
ZywgaW5kZXgpOgogICAgICAgICByZXR1cm4gc3RyaW5nWzppbmRleF0sIHN0cmluZ1tpbmRleDpd
CkBAIC0zNzgsNyArMzc4LDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgICAg
ICBzZWxmLnN0b3AoMC4wKQogCiAgICAgZGVmIF9raWxsKHNlbGYpOgotICAgICAgICBzZWxmLl9o
b3N0LmV4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCisgICAgICAgIHNlbGYu
X3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCiAgICAg
ICAgIGlmIHNlbGYuX3Byb2MucG9sbCgpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5f
cHJvYy53YWl0KCkKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9w
cm9jZXNzX21vY2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L3NlcnZlcl9wcm9jZXNzX21vY2sucHkJKHJldmlzaW9uIDIxNDY4OCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzc19tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw3ICsyOCw3IEBACiAKIAogY2xhc3MgTW9ja1NlcnZlclByb2Nlc3Mob2JqZWN0KToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmo9Tm9uZSwgbmFtZT1Ob25lLCBjbWQ9Tm9uZSwg
ZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgbGluZXM9Tm9uZSwgY3Jhc2hlZD1G
YWxzZSwgd29ya2VyX251bWJlcj1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9v
Ymo9Tm9uZSwgbmFtZT1Ob25lLCBjbWQ9Tm9uZSwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5l
cz1GYWxzZSwgbGluZXM9Tm9uZSwgY3Jhc2hlZD1GYWxzZSwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CiAg
ICAgICAgIHNlbGYudGltZWRfb3V0ID0gRmFsc2UKICAgICAgICAgc2VsZi5saW5lcyA9IGxpbmVz
IG9yIFtdCiAgICAgICAgIHNlbGYuY3Jhc2hlZCA9IGNyYXNoZWQKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nlc3MucHkJKHJldmlzaW9uIDIx
NDY4OCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5w
eQkod29ya2luZyBjb3B5KQpAQCAtNzAsMTMgKzcwLDExIEBAIGNsYXNzIFNpbXVsYXRvclByb2Nl
c3MoU2VydmVyUHJvY2Vzcyk6CiAgICAgICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0CiAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmos
IG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdHJlYXRfbm9f
ZGF0YV9hc19jcmFzaD1GYWxzZSwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CisgICAgICAgIGVudlsnUE9S
VCddID0gc3RyKHRhcmdldF9ob3N0Lmxpc3RlbmluZ19wb3J0KCkpICAjIFRoZSB0YXJnZXRfaG9z
dCBzaG91bGQgYmUgYSBkZXZpY2UuCisgICAgICAgIHN1cGVyKFNpbXVsYXRvclByb2Nlc3MsIHNl
bGYpLl9faW5pdF9fKHBvcnRfb2JqLCBuYW1lLCBjbWQsIGVudiwgdW5pdmVyc2FsX25ld2xpbmVz
LCB0cmVhdF9ub19kYXRhX2FzX2NyYXNoLCB0YXJnZXRfaG9zdCkKIAotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwb3J0X29iaiwgbmFtZSwgY21kLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVz
PUZhbHNlLCB0cmVhdF9ub19kYXRhX2FzX2NyYXNoPUZhbHNlLCB3b3JrZXJfbnVtYmVyPU5vbmUp
OgogICAgICAgICBzZWxmLl9idW5kbGVfaWQgPSBwb3J0X29iai5hcHBfaWRlbnRpZmllcl9mcm9t
X2J1bmRsZShjbWRbMF0pCi0gICAgICAgIHNlbGYuX2RldmljZSA9IHBvcnRfb2JqLmRldmljZV9m
b3Jfd29ya2VyX251bWJlcih3b3JrZXJfbnVtYmVyKQotCi0gICAgICAgIGVudlsnUE9SVCddID0g
c3RyKHNlbGYuX2RldmljZS5saXN0ZW5pbmdfcG9ydCgpKQotICAgICAgICBzdXBlcihTaW11bGF0
b3JQcm9jZXNzLCBzZWxmKS5fX2luaXRfXyhwb3J0X29iaiwgbmFtZSwgY21kLCBlbnYsIHVuaXZl
cnNhbF9uZXdsaW5lcywgdHJlYXRfbm9fZGF0YV9hc19jcmFzaCkKIAogICAgIEBzdGF0aWNtZXRo
b2QKICAgICBkZWYgX2FjY2VwdF9jb25uZWN0aW9uX2NyZWF0ZV9maWxlKHNlcnZlciwgdHlwZSk6
CkBAIC05MSwxMiArODksMTIgQEAgY2xhc3MgU2ltdWxhdG9yUHJvY2VzcyhTZXJ2ZXJQcm9jZXNz
KToKIAogICAgICAgICAjIEVhY2ggZGV2aWNlIGhhcyBhIGxpc3RlbmluZyBzb2NrZXQgaW50aXRp
bGFpemVkIGR1cmluZyB0aGUgcG9ydCdzIHNldHVwX3Rlc3RfcnVuLgogICAgICAgICAjIDMgY2xp
ZW50IGNvbm5lY3Rpb25zIHdpbGwgYmUgYWNjZXB0ZWQgZm9yIHN0ZGluLCBzdGRvdXQgYW5kIHN0
ZGVyciBpbiB0aGF0IG9yZGVyLgotICAgICAgICBzZWxmLl9kZXZpY2UubGlzdGVuaW5nX3NvY2tl
dC5saXN0ZW4oMykKLSAgICAgICAgc2VsZi5fcGlkID0gc2VsZi5fZGV2aWNlLmxhdW5jaF9hcHAo
c2VsZi5fYnVuZGxlX2lkLCBzZWxmLl9jbWRbMTpdLCBlbnY9c2VsZi5fZW52KQorICAgICAgICBz
ZWxmLl90YXJnZXRfaG9zdC5saXN0ZW5pbmdfc29ja2V0Lmxpc3RlbigzKQorICAgICAgICBzZWxm
Ll9waWQgPSBzZWxmLl90YXJnZXRfaG9zdC5sYXVuY2hfYXBwKHNlbGYuX2J1bmRsZV9pZCwgc2Vs
Zi5fY21kWzE6XSwgZW52PXNlbGYuX2VudikKIAogICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0s
IGZyYW1lKToKICAgICAgICAgICAgIGFzc2VydCBzaWdudW0gPT0gc2lnbmFsLlNJR0FMUk0KLSAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVGltZWQgb3V0IHdhaXRpbmcgZm9yIHByb2Nlc3Mg
dG8gY29ubmVjdCBhdCBwb3J0IHt9Jy5mb3JtYXQoc2VsZi5fZGV2aWNlLmxpc3RlbmluZ19wb3J0
KCkpKQorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdUaW1lZCBvdXQgd2FpdGluZyBmb3Ig
cHJvY2VzcyB0byBjb25uZWN0IGF0IHBvcnQge30nLmZvcm1hdChzZWxmLl90YXJnZXRfaG9zdC5s
aXN0ZW5pbmdfcG9ydCgpKSkKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwg
aGFuZGxlcikKICAgICAgICAgc2lnbmFsLmFsYXJtKDMpICAjIEluIHNlY29uZHMKIApAQCAtMTA1
LDEyICsxMDMsMTIgQEAgY2xhc3MgU2ltdWxhdG9yUHJvY2VzcyhTZXJ2ZXJQcm9jZXNzKToKICAg
ICAgICAgc3RkZXJyID0gTm9uZQogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIFRoaXMgb3Jk
ZXIgbWF0Y2hlcyB0aGUgY2xpZW50IHNpZGUgY29ubmVjdGlvbnMgaW4gVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9JT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgc2V0VXBJT1NMYXlvdXRUZXN0
Q29tbXVuaWNhdGlvbigpCi0gICAgICAgICAgICBzdGRpbiA9IFNpbXVsYXRvclByb2Nlc3MuX2Fj
Y2VwdF9jb25uZWN0aW9uX2NyZWF0ZV9maWxlKHNlbGYuX2RldmljZS5saXN0ZW5pbmdfc29ja2V0
LCAndycpCi0gICAgICAgICAgICBzdGRvdXQgPSBTaW11bGF0b3JQcm9jZXNzLl9hY2NlcHRfY29u
bmVjdGlvbl9jcmVhdGVfZmlsZShzZWxmLl9kZXZpY2UubGlzdGVuaW5nX3NvY2tldCwgJ3JiJykK
LSAgICAgICAgICAgIHN0ZGVyciA9IFNpbXVsYXRvclByb2Nlc3MuX2FjY2VwdF9jb25uZWN0aW9u
X2NyZWF0ZV9maWxlKHNlbGYuX2RldmljZS5saXN0ZW5pbmdfc29ja2V0LCAncmInKQorICAgICAg
ICAgICAgc3RkaW4gPSBTaW11bGF0b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVf
ZmlsZShzZWxmLl90YXJnZXRfaG9zdC5saXN0ZW5pbmdfc29ja2V0LCAndycpCisgICAgICAgICAg
ICBzdGRvdXQgPSBTaW11bGF0b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmls
ZShzZWxmLl90YXJnZXRfaG9zdC5saXN0ZW5pbmdfc29ja2V0LCAncmInKQorICAgICAgICAgICAg
c3RkZXJyID0gU2ltdWxhdG9yUHJvY2Vzcy5fYWNjZXB0X2Nvbm5lY3Rpb25fY3JlYXRlX2ZpbGUo
c2VsZi5fdGFyZ2V0X2hvc3QubGlzdGVuaW5nX3NvY2tldCwgJ3JiJykKICAgICAgICAgZXhjZXB0
OgogICAgICAgICAgICAgIyBXZSBzZXQgc2VsZi5fcHJvYyBhcyBfcmVzZXQoKSBhbmQgX2tpbGwo
KSBkZXBlbmQgb24gaXQuCi0gICAgICAgICAgICBzZWxmLl9wcm9jID0gU2ltdWxhdG9yUHJvY2Vz
cy5Qb3BlbihzZWxmLl9waWQsIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgc2VsZi5fZGV2aWNlKQor
ICAgICAgICAgICAgc2VsZi5fcHJvYyA9IFNpbXVsYXRvclByb2Nlc3MuUG9wZW4oc2VsZi5fcGlk
LCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIHNlbGYuX3RhcmdldF9ob3N0KQogICAgICAgICAgICAg
aWYgc2VsZi5fcHJvYy5wb2xsKCkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5f
cmVzZXQoKQogICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQXBwIHt9IGNyYXNoZWQg
YmVmb3JlIHN0ZGluIGNvdWxkIGJlIGF0dGFjaGVkJy5mb3JtYXQob3MucGF0aC5iYXNlbmFtZShz
ZWxmLl9jbWRbMF0pKSkKQEAgLTExOSwxNCArMTE3LDkgQEAgY2xhc3MgU2ltdWxhdG9yUHJvY2Vz
cyhTZXJ2ZXJQcm9jZXNzKToKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIHNpZ25hbC5hbGFy
bSgwKSAgIyBDYW5jZWwgYWxhcm0KIAotICAgICAgICBzZWxmLl9wcm9jID0gU2ltdWxhdG9yUHJv
Y2Vzcy5Qb3BlbihzZWxmLl9waWQsIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgc2VsZi5fZGV2aWNl
KQorICAgICAgICBzZWxmLl9wcm9jID0gU2ltdWxhdG9yUHJvY2Vzcy5Qb3BlbihzZWxmLl9waWQs
IHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgc2VsZi5fdGFyZ2V0X2hvc3QpCiAKICAgICBkZWYgc3Rv
cChzZWxmLCB0aW1lb3V0X3NlY3M9My4wKToKICAgICAgICAgaWYgc2VsZi5fcHJvYzoKLSAgICAg
ICAgICAgIHNlbGYuX2RldmljZS5leGVjdXRpdmUua2lsbF9wcm9jZXNzKHNlbGYuX3Byb2MucGlk
KQorICAgICAgICAgICAgc2VsZi5fdGFyZ2V0X2hvc3QuZXhlY3V0aXZlLmtpbGxfcHJvY2Vzcyhz
ZWxmLl9wcm9jLnBpZCkKICAgICAgICAgcmV0dXJuIHN1cGVyKFNpbXVsYXRvclByb2Nlc3MsIHNl
bGYpLnN0b3AodGltZW91dF9zZWNzKQotCi0gICAgZGVmIF9raWxsKHNlbGYpOgotICAgICAgICBz
ZWxmLl9kZXZpY2UuZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9jLnBpZCkKLSAgICAg
ICAgaWYgc2VsZi5fcHJvYy5wb2xsKCkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9w
cm9jLndhaXQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306026</attachid>
            <date>2017-03-31 16:42:55 -0700</date>
            <delta_ts>2017-03-31 17:24:51 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-170186-20170331164254.patch</filename>
            <type>text/plain</type>
            <size>30194</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxNDY5OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY5IEBACisyMDE3LTAzLTMxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogQWRkIHRhcmdldCBob3N0IGNvbmNlcHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDE4NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzEzMDE3OTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFBy
b3NrdXJ5YWtvdi4KKworICAgICAgICBBZGRpbmcgdGhlIGlkZWEgb2YgYSB0YXJnZXQgaG9zdC4g
VGFyZ2V0IGhvc3RzIGFyZSBvYmplY3RzIGNvbmZvcm1pbmcgdG8gdGhlCisgICAgICAgIHN0cnVj
dHVyZSBvZiB0aGUgU3lzdGVtSG9zdCBvYmplY3QgaW4gU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL3N5c3RlbWhvc3QucHkKKyAgICAgICAgVGFyZ2V0IGhvc3RzIGFyZSB0aGUgaG9zdHMg
YXNzb2NpYXRlZCB3aXRoIGEgd29ya2VyIHByb2Nlc3MuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weToKKyAgICAgICAgKEZpbGVTeXN0ZW0u
bWFwX2Jhc2VfaG9zdF9wYXRoKTogQ29udmVydCBhIHBhdGggZnJvbSBhbiBhYnNvbHV0ZSBwYXRo
IG9uIHRoZSBiYXNlCisgICAgICAgIGhvc3QgdG8gYW4gYWJzb2x1dGUgcGF0aCBvbiB0aGlzIGhv
c3QuCisgICAgICAgIChGaWxlU3lzdGVtLm1vdmVfdG9fYmFzZV9ob3N0KTogTW92ZSBmaWxlIGZy
b20gdGhpcyBob3N0IHRvIHRoZSBiYXNlIGhvc3QuCisgICAgICAgIChGaWxlU3lzdGVtLm1vdmVf
ZnJvbV9iYXNlX2hvc3QpOiBNb3ZlIGZpbGUgZnJvbSB0aGUgYmFzZSBob3N0IHRvIHRoaXMgaG9z
dC4KKyAgICAgICAgKEZpbGVTeXN0ZW0uY29weV90b19iYXNlX2hvc3QpOiBDb3B5IGZpbGUgZnJv
bSB0aGlzIGhvc3QgdG8gdGhlIGJhc2UgaG9zdC4KKyAgICAgICAgKEZpbGVTeXN0ZW0uY29weV9m
cm9tX2Jhc2VfaG9zdCk6IENvcHkgZmlsZSBmcm9tIHRoZSBiYXNlIGhvc3QgdG8gdGhpcyBob3N0
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21v
Y2sucHk6CisgICAgICAgIChNb2NrRmlsZVN5c3RlbS5tYXBfYmFzZV9ob3N0X3BhdGgpOiBDb252
ZXJ0IGEgcGF0aCBmcm9tIGFuIGFic29sdXRlIHBhdGggb24gdGhlIGJhc2UKKyAgICAgICAgaG9z
dCB0byBhbiBhYnNvbHV0ZSBwYXRoIG9uIHRoaXMgaG9zdC4KKyAgICAgICAgKE1vY2tGaWxlU3lz
dGVtLm1vdmVfdG9fYmFzZV9ob3N0KTogTW92ZSBmaWxlIGZyb20gdGhpcyBob3N0IHRvIHRoZSBi
YXNlIGhvc3QuCisgICAgICAgIChNb2NrRmlsZVN5c3RlbS5tb3ZlX2Zyb21fYmFzZV9ob3N0KTog
TW92ZSBmaWxlIGZyb20gdGhlIGJhc2UgaG9zdCB0byB0aGlzIGhvc3QuCisgICAgICAgIChNb2Nr
RmlsZVN5c3RlbS5jb3B5X3RvX2Jhc2VfaG9zdCk6IENvcHkgZmlsZSBmcm9tIHRoaXMgaG9zdCB0
byB0aGUgYmFzZSBob3N0LgorICAgICAgICAoTW9ja0ZpbGVTeXN0ZW0uY29weV9mcm9tX2Jhc2Vf
aG9zdCk6IENvcHkgZmlsZSBmcm9tIHRoZSBiYXNlIGhvc3QgdG8gdGhpcyBob3N0LgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydC50YXJnZXRf
aG9zdCk6IFJldHVybiBob3N0IGRldGVybWluZWQgYnkgd29ya2VyIG51bWJlci4KKyAgICAgICAg
KFBvcnQuYWJzcGF0aF9mb3JfdGVzdCk6IEFjY2VwdCBvcHRpb25hbCB0YXJnZXRfaG9zdCBhcmd1
bWVudCB0byByZXR1cm4gbG9jYXRpb24KKyAgICAgICAgb2YgdGVzdCBvbiBhIHRhcmdldCBob3N0
LgorICAgICAgICAoUG9ydC5fZHJpdmVyX3RlbXBkaXIpOiBBY2NlcHQgb3B0aW9uYWwgdGFyZ2V0
X2hvc3QgYXJndW1lbnQgdG8gcmV0dXJuIGEgdGVtcG9yYXJ5CisgICAgICAgIGRpcmVjdG9yeSBv
biBhIHRhcmdldCBob3N0LgorICAgICAgICAoUG9ydC5zYW1wbGVfcHJvY2Vzcyk6IEFjY2VwdCBv
cHRpb25hbCB0YXJnZXRfaG9zdCBhcmd1bWVudCB0byBzYW1wbGUgcHJvY2VzcyBvbgorICAgICAg
ICBhIHRhcmdldCBob3N0LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW4u
cHk6CisgICAgICAgIChEYXJ3aW5Qb3J0LnNhbXBsZV9wcm9jZXNzKTogUnVuIHNhbXBsZSBwcm9j
ZXNzIG9uIHRhcmdldCBob3N0LgorICAgICAgICAoRGFyd2luUG9ydC5zYW1wbGVfZmlsZV9wYXRo
KTogQWNjZXB0IGRpcmVjdG9yeSBmb3IgZmlsZS4KKyAgICAgICAgKERhcndpblBvcnQuc3BpbmR1
bXBfZmlsZV9wYXRoKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rh
cndpbl90ZXN0Y2FzZS5weToKKyAgICAgICAgKERhcndpblRlc3QudGVzdF9zcGluZHVtcCk6IENo
ZWNrIGZpbGUgbW92ZW1lbnQuCisgICAgICAgIChEYXJ3aW5UZXN0LnRlc3Rfc2FtcGxlX3Byb2Nl
c3MpOiBEaXR0by4KKyAgICAgICAgKERhcndpblRlc3QudGVzdF9zYW1wbGVfcHJvY2Vzc19leGNl
cHRpb24pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHk6CisgICAg
ICAgIChEcml2ZXIuX19pbml0X18pOiBBZGQgYW5kIHNldCBzZWxmLl90YXJnZXRfaG9zdCB2YXJp
YWJsZS4KKyAgICAgICAgKERyaXZlci5fc3RhcnQpOiBQYXNzIHRhcmdldCBob3N0IHRvIF9kcml2
ZXJfdGVtcGRpcigpLgorICAgICAgICAoRHJpdmVyLnN0b3ApOiBDYWxsIHRoZSB0YXJnZXQgaG9z
dCdzIHJtdHJlZS4KKyAgICAgICAgKERyaXZlci5fY2hlY2tfZm9yX2RyaXZlcl90aW1lb3V0KTog
UGFzcyB0YXJnZXQgaG9zdCB0byBzYW1wbGVfcHJvY2Vzcy4KKyAgICAgICAgKERyaXZlci5fY2hl
Y2tfZm9yX2RyaXZlcl9jcmFzaF9vcl91bnJlc3BvbnNpdmVuZXNzKTogRGl0dG8uCisgICAgICAg
IChEcml2ZXIuX2NvbW1hbmRfZnJvbV9kcml2ZXJfaW5wdXQpOiBQYXNzIHRhcmdldCBob3N0IHRv
IGFic3BhdGhfZm9yX3Rlc3QgYW5kIG1hcAorICAgICAgICBsYXlvdXQgdGVzdCBkaXJlY3Rvcnkg
dG8gdGFyZ2V0IGhvc3QuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weToK
KyAgICAgICAgKElPU1BvcnQpOgorICAgICAgICAoSU9TUG9ydC50YXJnZXRfaG9zdCk6IFJlcGxh
Y2VkIGRldmljZV9mb3Jfd29ya2VyX251bWJlci4KKyAgICAgICAgKElPU1BvcnQuc2V0dXBfdGVz
dF9ydW4pOiBSZXBsYWNlIGRldmljZV9mb3Jfd29ya2VyX251bWJlciB3aXRoIHRhcmdldF9ob3N0
LgorICAgICAgICAoSU9TUG9ydC5kZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIpOiBSZXBsYWNlZCB3
aXRoIHRhcmdldF9ob3N0LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJf
cHJvY2Vzcy5weToKKyAgICAgICAgKFNlcnZlclByb2Nlc3MuX19pbml0X18pOiBBY2NlcHQgdGFy
Z2V0X2hvc3QgaW5zdGVhZCBvZiB3b3JrZXJfbnVtYmVyLgorICAgICAgICAoU2VydmVyUHJvY2Vz
cy5fc3RhcnQpOiBSZXBsYWNlIF9ob3N0IHdpdGggX3RhcmdldF9ob3N0LgorICAgICAgICAoU2Vy
dmVyUHJvY2Vzcy5faGFuZGxlX3RpbWVvdXQpOiBEaXR0by4KKyAgICAgICAgKFNlcnZlclByb2Nl
c3MuX2tpbGwpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxh
dG9yX3Byb2Nlc3MucHk6CisgICAgICAgIChTaW11bGF0b3JQcm9jZXNzLl9faW5pdF9fKTogQWNj
ZXB0IHRhcmdldF9ob3N0IGluc3RlYWQgb2Ygd29ya2VyX251bWJlci4KKyAgICAgICAgKFNpbXVs
YXRvclByb2Nlc3MuX3N0YXJ0KTogUmVwbGFjZSBfZGV2aWNlIHdpdGggX3RhcmdldF9ob3N0Lgor
ICAgICAgICAoU2ltdWxhdG9yUHJvY2Vzcy5zdG9wKTogRGl0dG8uCisgICAgICAgIChTaW11bGF0
b3JQcm9jZXNzLl9raWxsKTogRGVsZXRlZC4KKwogMjAxNy0wMy0zMSAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBmaXggYWZ0ZXIgcjIx
NDU2OQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0
ZW0ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2ZpbGVzeXN0ZW0ucHkJKHJldmlzaW9uIDIxNDY5OCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsMyAr
MzEwLDI4IEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKIAogICAgIGRlZiBjb21wYXJlKHNl
bGYsIHBhdGgxLCBwYXRoMik6CiAgICAgICAgIHJldHVybiBmaWxlY21wLmNtcChwYXRoMSwgcGF0
aDIpCisKKyAgICBkZWYgbWFwX2Jhc2VfaG9zdF9wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICAi
IiJSZXR1cm5zIGEgcGF0aCBmcm9tIHRoZSBiYXNlIGhvc3QgbG9jYWxpemVkIGZvciB0aGlzIGhv
c3QuIEJ5IGRlZmF1bHQsCisgICAgICAgIHRoaXMgaG9zdCBhc3N1bWVzIGl0IGlzIHRoZSBiYXNl
IGhvc3QgYW5kIG1hcHMgdGhlIHBhdGggdG8gaXRzZWxmIiIiCisgICAgICAgIHJldHVybiBwYXRo
CisKKyAgICBkZWYgbW92ZV90b19iYXNlX2hvc3Qoc2VsZiwgc291cmNlLCBkZXN0aW5hdGlvbik6
CisgICAgICAgICIiIk1vdmVzIGEgZmlsZSBmcm9tIHRoaXMgaG9zdCB0byB0aGUgYmFzZSBob3N0
LiBCeSBkZWZhdWx0LCB0aGlzIGhvc3QKKyAgICAgICAgYXNzdW1lcyBpdCBpcyB0aGUgYmFzZSBo
b3N0IGFuZCB3aWxsIGp1c3QgZXhlY3V0ZSBhIG1vdmUuIiIiCisgICAgICAgIHNlbGYubW92ZShz
b3VyY2UsIGRlc3RpbmF0aW9uKQorCisgICAgZGVmIG1vdmVfZnJvbV9iYXNlX2hvc3Qoc2VsZiwg
c291cmNlLCBkZXN0aW5hdGlvbik6CisgICAgICAgICIiIk1vdmVzIGEgZmlsZSBmcm9tIHRoZSBi
YXNlIGhvc3QgdG8gdGhpcyBob3N0LiBCeSBkZWZhdWx0LCB0aGlzIGhvc3QKKyAgICAgICAgYXNz
dW1lcyBpdCBpcyB0aGUgYmFzZSBob3N0IGFuZCB3aWxsIGp1c3QgZXhlY3V0ZSBhIG1vdmUuIiIi
CisgICAgICAgIHNlbGYubW92ZShzb3VyY2UsIGRlc3RpbmF0aW9uKQorCisgICAgZGVmIGNvcHlf
dG9fYmFzZV9ob3N0KHNlbGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgorICAgICAgICAiIiJDb3B5
IGEgZmlsZSBmcm9tIHRoaXMgaG9zdCB0byB0aGUgYmFzZSBob3N0LiBCeSBkZWZhdWx0LCB0aGlz
IGhvc3QKKyAgICAgICAgYXNzdW1lcyBpdCBpcyB0aGUgYmFzZSBob3N0IGFuZCB3aWxsIGp1c3Qg
ZXhlY3V0ZSBhIGNvcHl0cmVlLiIiIgorICAgICAgICBzZWxmLmNvcHl0cmVlKHNvdXJjZSwgZGVz
dGluYXRpb24pCisKKyAgICBkZWYgY29weV9mcm9tX2Jhc2VfaG9zdChzZWxmLCBzb3VyY2UsIGRl
c3RpbmF0aW9uKToKKyAgICAgICAgIiIiQ29weSBhIGZpbGUgZnJvbSB0aGUgYmFzZSBob3N0IHRv
IHRoaXMgaG9zdC4gQnkgZGVmYXVsdCwgdGhpcyBob3N0CisgICAgICAgIGFzc3VtZXMgaXQgaXMg
dGhlIGJhc2UgaG9zdCBhbmQgd2lsbCBqdXN0IGV4ZWN1dGUgYSBjb3B5dHJlZS4iIiIKKyAgICAg
ICAgc2VsZi5jb3B5dHJlZShzb3VyY2UsIGRlc3RpbmF0aW9uKQpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5
CShyZXZpc2lvbiAyMTQ2OTgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MjAsNiArNDIwLDIxIEBA
IGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgZGVmIGNvbXBhcmUoc2VsZiwgcGF0
aDEsIHBhdGgyKToKICAgICAgICAgcmV0dXJuIHNlbGYucmVhZF9iaW5hcnlfZmlsZShwYXRoMSkg
PT0gc2VsZi5yZWFkX2JpbmFyeV9maWxlKHBhdGgyKQogCisgICAgZGVmIG1hcF9iYXNlX2hvc3Rf
cGF0aChzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIHBhdGgKKworICAgIGRlZiBtb3ZlX3Rv
X2Jhc2VfaG9zdChzZWxmLCBzb3VyY2UsIGRlc3RpbmF0aW9uKToKKyAgICAgICAgc2VsZi5tb3Zl
KHNvdXJjZSwgZGVzdGluYXRpb24pCisKKyAgICBkZWYgbW92ZV9mcm9tX2Jhc2VfaG9zdChzZWxm
LCBzb3VyY2UsIGRlc3RpbmF0aW9uKToKKyAgICAgICAgc2VsZi5tb3ZlKHNvdXJjZSwgZGVzdGlu
YXRpb24pCisKKyAgICBkZWYgY29weV90b19iYXNlX2hvc3Qoc2VsZiwgc291cmNlLCBkZXN0aW5h
dGlvbik6CisgICAgICAgIHNlbGYubW92ZShzb3VyY2UsIGRlc3RpbmF0aW9uKQorCisgICAgZGVm
IGNvcHlfZnJvbV9iYXNlX2hvc3Qoc2VsZiwgc291cmNlLCBkZXN0aW5hdGlvbik6CisgICAgICAg
IHNlbGYubW92ZShzb3VyY2UsIGRlc3RpbmF0aW9uKQorCiAKIGNsYXNzIFdyaXRhYmxlQmluYXJ5
RmlsZU9iamVjdChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcywgcGF0aCk6Cklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkocmV2aXNpb24gMjE0Njk4KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTE0
Miw2ICsxNDIsOSBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2xheW91dF90
ZXN0c19kaXIgPSBoYXNhdHRyKG9wdGlvbnMsICdsYXlvdXRfdGVzdHNfZGlyJykgYW5kIG9wdGlv
bnMubGF5b3V0X3Rlc3RzX2RpciBhbmQgc2VsZi5fZmlsZXN5c3RlbS5hYnNwYXRoKG9wdGlvbnMu
bGF5b3V0X3Rlc3RzX2RpcikKICAgICAgICAgc2VsZi5fdzNjX3Jlc291cmNlX2ZpbGVzID0gTm9u
ZQogCisgICAgZGVmIHRhcmdldF9ob3N0KHNlbGYsIHdvcmtlcl9udW1iZXI9Tm9uZSk6CisgICAg
ICAgIHJldHVybiBzZWxmLmhvc3QKKwogICAgIGRlZiBhcmNoaXRlY3R1cmUoc2VsZik6CiAgICAg
ICAgIHJldHVybiBzZWxmLmdldF9vcHRpb24oJ2FyY2hpdGVjdHVyZScpCiAKQEAgLTgwMiwxMCAr
ODA1LDExIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBzZWxmLmhv
c3QuZmlsZXN5c3RlbS5hYnNwYXRoKGZpbGVuYW1lKQogCiAgICAgQG1lbW9pemVkCi0gICAgZGVm
IGFic3BhdGhfZm9yX3Rlc3Qoc2VsZiwgdGVzdF9uYW1lKToKKyAgICBkZWYgYWJzcGF0aF9mb3Jf
dGVzdChzZWxmLCB0ZXN0X25hbWUsIHRhcmdldF9ob3N0PU5vbmUpOgogICAgICAgICAiIiJSZXR1
cm5zIHRoZSBmdWxsIHBhdGggdG8gdGhlIGZpbGUgZm9yIGEgZ2l2ZW4gdGVzdCBuYW1lLiBUaGlz
IGlzIHRoZQotICAgICAgICBpbnZlcnNlIG9mIHJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoKS4iIiIK
LSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19k
aXIoKSwgdGVzdF9uYW1lKQorICAgICAgICBpbnZlcnNlIG9mIHJlbGF0aXZlX3Rlc3RfZmlsZW5h
bWUoKSBpZiBubyB0YXJnZXRfaG9zdCBpcyBzcGVjaWZpZWQuIiIiCisgICAgICAgIGhvc3QgPSB0
YXJnZXRfaG9zdCBvciBzZWxmLmhvc3QKKyAgICAgICAgcmV0dXJuIGhvc3QuZmlsZXN5c3RlbS5q
b2luKGhvc3QuZmlsZXN5c3RlbS5tYXBfYmFzZV9ob3N0X3BhdGgoc2VsZi5sYXlvdXRfdGVzdHNf
ZGlyKCkpLCB0ZXN0X25hbWUpCiAKICAgICBkZWYganNjX3Jlc3VsdHNfZGlyZWN0b3J5KHNlbGYp
OgogICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgpCkBAIC0xMjgyLDggKzEyODYsOSBA
QCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICBsb2NhbF9kcml2ZXJfcGF0aCA9IGJh
c2UgKyAiLmV4ZSIKICAgICAgICAgcmV0dXJuIGxvY2FsX2RyaXZlcl9wYXRoCiAKLSAgICBkZWYg
X2RyaXZlcl90ZW1wZGlyKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5t
a2R0ZW1wKHByZWZpeD0nJXMtJyAlIHNlbGYuZHJpdmVyX25hbWUoKSkKKyAgICBkZWYgX2RyaXZl
cl90ZW1wZGlyKHNlbGYsIHRhcmdldF9ob3N0PU5vbmUpOgorICAgICAgICBob3N0ID0gdGFyZ2V0
X2hvc3Qgb3Igc2VsZi5ob3N0CisgICAgICAgIHJldHVybiBob3N0LmZpbGVzeXN0ZW0ubWtkdGVt
cChwcmVmaXg9J3t9cy0nLmZvcm1hdChzZWxmLmRyaXZlcl9uYW1lKCkpKQogCiAgICAgZGVmIF9w
YXRoX3RvX3VzZXJfY2FjaGVfZGlyZWN0b3J5KHNlbGYsIHN1ZmZpeD1Ob25lKToKICAgICAgICAg
cmV0dXJuIE5vbmUKQEAgLTEzNTQsNyArMTM1OSw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAg
ICBkZWYgbG9va19mb3JfbmV3X3NhbXBsZXMoc2VsZiwgdW5yZXNwb25zaXZlX3Byb2Nlc3Nlcywg
c3RhcnRfdGltZSk6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBzYW1wbGVfcHJvY2VzcyhzZWxm
LCBuYW1lLCBwaWQpOgorICAgIGRlZiBzYW1wbGVfcHJvY2VzcyhzZWxmLCBuYW1lLCBwaWQsIHRh
cmdldF9ob3N0PU5vbmUpOgogICAgICAgICBwYXNzCiAKICAgICBkZWYgZmluZF9zeXN0ZW1fcGlk
KHNlbGYsIG5hbWUsIHBpZCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFy
d2luLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW4u
cHkJKHJldmlzaW9uIDIxNDY5OCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3
aW4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw4ICsxMjIsMTAgQEAgY2xhc3MgRGFyd2luUG9y
dChBcHBsZVBvcnQpOgogICAgICAgICBhbGxfY3Jhc2hfbG9nID0gc2VsZi5fbG9va19mb3JfYWxs
X2NyYXNoX2xvZ3NfaW5fbG9nX2RpcihzdGFydF90aW1lKQogICAgICAgICByZXR1cm4gc2VsZi5f
bWVyZ2VfY3Jhc2hfbG9ncyhjcmFzaF9sb2dzLCBhbGxfY3Jhc2hfbG9nLCBjcmFzaGVkX3Byb2Nl
c3NlcykKIAotICAgIGRlZiBzYW1wbGVfcHJvY2VzcyhzZWxmLCBuYW1lLCBwaWQpOgotICAgICAg
ICBleGl0X3N0YXR1cyA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbCisgICAgZGVmIHNh
bXBsZV9wcm9jZXNzKHNlbGYsIG5hbWUsIHBpZCwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CisgICAgICAg
IGhvc3QgPSB0YXJnZXRfaG9zdCBvciBzZWxmLmhvc3QKKyAgICAgICAgdGVtcGRpciA9IGhvc3Qu
ZmlsZXN5c3RlbS5ta2R0ZW1wKCkKKyAgICAgICAgZXhpdF9zdGF0dXMgPSBob3N0LmV4ZWN1dGl2
ZS5ydW5fY29tbWFuZChbCiAgICAgICAgICAgICAiL3Vzci9iaW4vc3VkbyIsCiAgICAgICAgICAg
ICAiLW4iLAogICAgICAgICAgICAgIi91c3Ivc2Jpbi9zcGluZHVtcCIsCkBAIC0xMzEsMzQgKzEz
Myw0NSBAQCBjbGFzcyBEYXJ3aW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgICAgICAgICAxMCwKICAg
ICAgICAgICAgIDEwLAogICAgICAgICAgICAgIi1maWxlIiwKLSAgICAgICAgICAgIHNlbGYuc3Bp
bmR1bXBfZmlsZV9wYXRoKG5hbWUsIHBpZCksCisgICAgICAgICAgICBEYXJ3aW5Qb3J0LnNwaW5k
dW1wX2ZpbGVfcGF0aChob3N0LCBuYW1lLCBwaWQsIHN0cih0ZW1wZGlyKSksCiAgICAgICAgIF0s
IHJldHVybl9leGl0X2NvZGU9VHJ1ZSkKICAgICAgICAgaWYgZXhpdF9zdGF0dXM6CiAgICAgICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsK
KyAgICAgICAgICAgICAgICBob3N0LmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChbCiAgICAgICAgICAg
ICAgICAgICAgICIvdXNyL2Jpbi9zYW1wbGUiLAogICAgICAgICAgICAgICAgICAgICBwaWQsCiAg
ICAgICAgICAgICAgICAgICAgIDEwLAogICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAgICAg
ICAgICAgICAgICAgIi1maWxlIiwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zYW1wbGVfZmls
ZV9wYXRoKG5hbWUsIHBpZCksCisgICAgICAgICAgICAgICAgICAgIERhcndpblBvcnQuc2FtcGxl
X2ZpbGVfcGF0aChob3N0LCBuYW1lLCBwaWQsIHN0cih0ZW1wZGlyKSksCiAgICAgICAgICAgICAg
ICAgXSkKKyAgICAgICAgICAgICAgICBob3N0LmZpbGVzeXN0ZW0ubW92ZV90b19iYXNlX2hvc3Qo
RGFyd2luUG9ydC5zYW1wbGVfZmlsZV9wYXRoKGhvc3QsIG5hbWUsIHBpZCwgc3RyKHRlbXBkaXIp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGFy
d2luUG9ydC5zYW1wbGVfZmlsZV9wYXRoKHNlbGYuaG9zdCwgbmFtZSwgcGlkLCBzZWxmLnJlc3Vs
dHNfZGlyZWN0b3J5KCkpKQogICAgICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6CiAg
ICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdVbmFibGUgdG8gc2FtcGxlIHByb2Nlc3M6JyAr
IHN0cihlKSkKLQotICAgIGRlZiBzYW1wbGVfZmlsZV9wYXRoKHNlbGYsIG5hbWUsIHBpZCk6Ci0g
ICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5yZXN1bHRzX2RpcmVjdG9y
eSgpLCAiezB9LXsxfS1zYW1wbGUudHh0Ii5mb3JtYXQobmFtZSwgcGlkKSkKLQotICAgIGRlZiBz
cGluZHVtcF9maWxlX3BhdGgoc2VsZiwgbmFtZSwgcGlkKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
X2ZpbGVzeXN0ZW0uam9pbihzZWxmLnJlc3VsdHNfZGlyZWN0b3J5KCksICJ7MH0tezF9LXNwaW5k
dW1wLnR4dCIuZm9ybWF0KG5hbWUsIHBpZCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBo
b3N0LmZpbGVzeXN0ZW0ubW92ZV90b19iYXNlX2hvc3QoRGFyd2luUG9ydC5zcGluZHVtcF9maWxl
X3BhdGgoaG9zdCwgbmFtZSwgcGlkLCBzdHIodGVtcGRpcikpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhcndpblBvcnQuc3BpbmR1bXBfZmlsZV9wYXRo
KHNlbGYuaG9zdCwgbmFtZSwgcGlkLCBzZWxmLnJlc3VsdHNfZGlyZWN0b3J5KCkpKQorICAgICAg
ICBob3N0LmZpbGVzeXN0ZW0ucm10cmVlKHN0cih0ZW1wZGlyKSkKKworICAgIEBzdGF0aWNtZXRo
b2QKKyAgICBkZWYgc2FtcGxlX2ZpbGVfcGF0aChob3N0LCBuYW1lLCBwaWQsIGRpcmVjdG9yeSk6
CisgICAgICAgIHJldHVybiBob3N0LmZpbGVzeXN0ZW0uam9pbihkaXJlY3RvcnksICJ7MH0tezF9
LXNhbXBsZS50eHQiLmZvcm1hdChuYW1lLCBwaWQpKQorCisgICAgQHN0YXRpY21ldGhvZAorICAg
IGRlZiBzcGluZHVtcF9maWxlX3BhdGgoaG9zdCwgbmFtZSwgcGlkLCBkaXJlY3RvcnkpOgorICAg
ICAgICByZXR1cm4gaG9zdC5maWxlc3lzdGVtLmpvaW4oZGlyZWN0b3J5LCAiezB9LXsxfS1zcGlu
ZHVtcC50eHQiLmZvcm1hdChuYW1lLCBwaWQpKQogCiAgICAgZGVmIGxvb2tfZm9yX25ld19zYW1w
bGVzKHNlbGYsIHVucmVzcG9uc2l2ZV9wcm9jZXNzZXMsIHN0YXJ0X3RpbWUpOgogICAgICAgICBz
YW1wbGVfZmlsZXMgPSB7fQogICAgICAgICBmb3IgKHRlc3RfbmFtZSwgcHJvY2Vzc19uYW1lLCBw
aWQpIGluIHVucmVzcG9uc2l2ZV9wcm9jZXNzZXM6Ci0gICAgICAgICAgICBzYW1wbGVfZmlsZSA9
IHNlbGYuc2FtcGxlX2ZpbGVfcGF0aChwcm9jZXNzX25hbWUsIHBpZCkKLSAgICAgICAgICAgIGlm
IG5vdCBzZWxmLl9maWxlc3lzdGVtLmlzZmlsZShzYW1wbGVfZmlsZSk6Ci0gICAgICAgICAgICAg
ICAgY29udGludWUKLSAgICAgICAgICAgIHNhbXBsZV9maWxlc1t0ZXN0X25hbWVdID0gc2FtcGxl
X2ZpbGUKKyAgICAgICAgICAgIHNhbXBsZV9maWxlID0gRGFyd2luUG9ydC5zYW1wbGVfZmlsZV9w
YXRoKHNlbGYuaG9zdCwgcHJvY2Vzc19uYW1lLCBwaWQsIHNlbGYucmVzdWx0c19kaXJlY3Rvcnko
KSkKKyAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uaXNmaWxlKHNhbXBsZV9maWxlKToK
KyAgICAgICAgICAgICAgICBzYW1wbGVfZmlsZXNbdGVzdF9uYW1lXSA9IHNhbXBsZV9maWxlCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNwaW5kdW1wX2ZpbGUgPSBEYXJ3aW5Q
b3J0LnNwaW5kdW1wX2ZpbGVfcGF0aChzZWxmLmhvc3QsIHByb2Nlc3NfbmFtZSwgcGlkLCBzZWxm
LnJlc3VsdHNfZGlyZWN0b3J5KCkpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3Rl
bS5pc2ZpbGUoc3BpbmR1bXBfZmlsZSk6CisgICAgICAgICAgICAgICAgICAgIHNhbXBsZV9maWxl
c1t0ZXN0X25hbWVdID0gc3BpbmR1bXBfZmlsZQogICAgICAgICByZXR1cm4gc2FtcGxlX2ZpbGVz
CiAKICAgICBkZWYgbWFrZV9jb21tYW5kKHNlbGYpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2Rhcndpbl90ZXN0Y2FzZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvZGFyd2luX3Rlc3RjYXNlLnB5CShyZXZpc2lvbiAyMTQ2OTgpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luX3Rlc3RjYXNlLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC05Miw5ICs5MiwxMiBAQCBjbGFzcyBEYXJ3aW5UZXN0KHBvcnRfdGVzdGNhc2UuUG9y
dFRlc3RDCiAgICAgICAgICAgICBwcmludCBhcmdzCiAKICAgICAgICAgcG9ydCA9IHNlbGYubWFr
ZV9wb3J0KCkKLSAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIocnVuX2Nv
bW1hbmRfZm49bG9nZ2luZ19ydW5fY29tbWFuZCkKLSAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0g
IlsnL3Vzci9iaW4vc3VkbycsICctbicsICcvdXNyL3NiaW4vc3BpbmR1bXAnLCA0MiwgMTAsIDEw
LCAnLWZpbGUnLCAnL21vY2stYnVpbGQvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0LTQyLXNwaW5k
dW1wLnR4dCddXG4iCisgICAgICAgIHBvcnQuaG9zdC5maWxlc3lzdGVtLmZpbGVzWycvX19pbV90
bXAvdG1wXzBfL3Rlc3QtNDItc3BpbmR1bXAudHh0J10gPSAnU3BpbmR1bXAgZmlsZScKKyAgICAg
ICAgcG9ydC5ob3N0LmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPWxv
Z2dpbmdfcnVuX2NvbW1hbmQpCisgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJbJy91c3IvYmlu
L3N1ZG8nLCAnLW4nLCAnL3Vzci9zYmluL3NwaW5kdW1wJywgNDIsIDEwLCAxMCwgJy1maWxlJywg
Jy9fX2ltX3RtcC90bXBfMF8vdGVzdC00Mi1zcGluZHVtcC50eHQnXVxuIgogICAgICAgICBPdXRw
dXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5zYW1wbGVfcHJvY2VzcywgYXJn
cz1bJ3Rlc3QnLCA0Ml0sIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9tb2NrLWJ1aWxk
L2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdC00Mi1zcGluZHVtcC50eHQnXSwgJ1NwaW5kdW1wIGZp
bGUnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxl
c1snL19faW1fdG1wL3RtcF8wXy90ZXN0LTQyLXNwaW5kdW1wLnR4dCddKQogCiAgICAgZGVmIHRl
c3Rfc2FtcGxlX3Byb2Nlc3Moc2VsZik6CiAKQEAgLTEwNSw5ICsxMDgsMTIgQEAgY2xhc3MgRGFy
d2luVGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0QwogICAgICAgICAgICAgcmV0dXJuIDAKIAog
ICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQotICAgICAgICBwb3J0Ll9leGVjdXRpdmUg
PSBNb2NrRXhlY3V0aXZlMihydW5fY29tbWFuZF9mbj1sb2dnaW5nX3J1bl9jb21tYW5kKQotICAg
ICAgICBleHBlY3RlZF9zdGRvdXQgPSAiWycvdXNyL2Jpbi9zYW1wbGUnLCA0MiwgMTAsIDEwLCAn
LWZpbGUnLCAnL21vY2stYnVpbGQvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0LTQyLXNhbXBsZS50
eHQnXVxuIgorICAgICAgICBwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxlc1snL19faW1fdG1wL3Rt
cF8wXy90ZXN0LTQyLXNhbXBsZS50eHQnXSA9ICdTYW1wbGUgZmlsZScKKyAgICAgICAgcG9ydC5o
b3N0LmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPWxvZ2dpbmdfcnVu
X2NvbW1hbmQpCisgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJbJy91c3IvYmluL3NhbXBsZScs
IDQyLCAxMCwgMTAsICctZmlsZScsICcvX19pbV90bXAvdG1wXzBfL3Rlc3QtNDItc2FtcGxlLnR4
dCddXG4iCiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0
LnNhbXBsZV9wcm9jZXNzLCBhcmdzPVsndGVzdCcsIDQyXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVj
dGVkX3N0ZG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Lmhvc3QuZmlsZXN5c3Rl
bS5maWxlc1snL21vY2stYnVpbGQvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0LTQyLXNhbXBsZS50
eHQnXSwgJ1NhbXBsZSBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocG9ydC5ob3N0
LmZpbGVzeXN0ZW0uZmlsZXNbJy9fX2ltX3RtcC90bXBfMF8vdGVzdC00Mi1zYW1wbGUudHh0J10p
CiAKICAgICBkZWYgdGVzdF9zYW1wbGVfcHJvY2Vzc19leGNlcHRpb24oc2VsZik6CiAgICAgICAg
IGRlZiB0aHJvd2luZ19ydW5fY29tbWFuZChhcmdzKToKQEAgLTExNiw1ICsxMjIsNSBAQCBjbGFz
cyBEYXJ3aW5UZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDCiAgICAgICAgICAgICByYWlzZSBT
Y3JpcHRFcnJvcigiTU9DSyBzY3JpcHQgZXJyb3IiKQogCiAgICAgICAgIHBvcnQgPSBzZWxmLm1h
a2VfcG9ydCgpCi0gICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9j
b21tYW5kX2ZuPXRocm93aW5nX3J1bl9jb21tYW5kKQorICAgICAgICBwb3J0Lmhvc3QuZXhlY3V0
aXZlID0gTW9ja0V4ZWN1dGl2ZTIocnVuX2NvbW1hbmRfZm49dGhyb3dpbmdfcnVuX2NvbW1hbmQp
CiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0LnNhbXBs
ZV9wcm9jZXNzLCBhcmdzPVsndGVzdCcsIDQyXSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9kcml2ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2RyaXZlci5weQkocmV2aXNpb24gMjE0Njk4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2RyaXZlci5weQkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMyw3IEBAIGNsYXNz
IERyaXZlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAogICAgICAgICBzZWxm
Ll93b3JrZXJfbnVtYmVyID0gd29ya2VyX251bWJlcgogICAgICAgICBzZWxmLl9ub190aW1lb3V0
ID0gbm9fdGltZW91dAorICAgICAgICBzZWxmLl90YXJnZXRfaG9zdCA9IHBvcnQudGFyZ2V0X2hv
c3Qod29ya2VyX251bWJlcikKIAogICAgICAgICBzZWxmLl9kcml2ZXJfdGVtcGRpciA9IE5vbmUK
ICAgICAgICAgc2VsZi5fZHJpdmVyX3VzZXJfZGlyZWN0b3J5X3N1ZmZpeCA9IE5vbmUKQEAgLTM1
OSwxNiArMzYwLDE2IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAjIEVhY2ggZHJp
dmVyIHByb2Nlc3Mgc2hvdWxkIGJlIHVzaW5nIGluZGl2aWR1YWwgZGlyZWN0b3JpZXMgdW5kZXIg
X2RyaXZlcl90ZW1wZGlyICh3aGljaCBpcyBkZWxldGVkIHdoZW4gc3RvcHBpbmcpLAogICAgICAg
ICAjIGhvd2V2ZXIgc29tZSBzdWJzeXN0ZW1zIG9uIHNvbWUgcGxhdGZvcm1zIGNvdWxkIGVuZCB1
cCB1c2luZyBwcm9jZXNzIGRlZmF1bHQgb25lcy4KICAgICAgICAgc2VsZi5fcG9ydC5fY2xlYXJf
Z2xvYmFsX2NhY2hlc19hbmRfdGVtcG9yYXJ5X2ZpbGVzKCkKLSAgICAgICAgc2VsZi5fZHJpdmVy
X3RlbXBkaXIgPSBzZWxmLl9wb3J0Ll9kcml2ZXJfdGVtcGRpcigpCisgICAgICAgIHNlbGYuX2Ry
aXZlcl90ZW1wZGlyID0gc2VsZi5fcG9ydC5fZHJpdmVyX3RlbXBkaXIoc2VsZi5fdGFyZ2V0X2hv
c3QpCiAgICAgICAgIHNlbGYuX2RyaXZlcl91c2VyX2RpcmVjdG9yeV9zdWZmaXggPSBvcy5wYXRo
LmJhc2VuYW1lKHN0cihzZWxmLl9kcml2ZXJfdGVtcGRpcikpCiAgICAgICAgIHVzZXJfY2FjaGVf
ZGlyZWN0b3J5ID0gc2VsZi5fcG9ydC5fcGF0aF90b191c2VyX2NhY2hlX2RpcmVjdG9yeShzZWxm
Ll9kcml2ZXJfdXNlcl9kaXJlY3Rvcnlfc3VmZml4KQogICAgICAgICBpZiB1c2VyX2NhY2hlX2Rp
cmVjdG9yeToKLSAgICAgICAgICAgIHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9k
aXJlY3RvcnkodXNlcl9jYWNoZV9kaXJlY3RvcnkpCisgICAgICAgICAgICBzZWxmLl90YXJnZXRf
aG9zdC5maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHVzZXJfY2FjaGVfZGlyZWN0b3J5
KQogICAgICAgICAgICAgc2VsZi5fZHJpdmVyX3VzZXJfY2FjaGVfZGlyZWN0b3J5ID0gdXNlcl9j
YWNoZV9kaXJlY3RvcnkKICAgICAgICAgZW52aXJvbm1lbnQgPSBzZWxmLl9zZXR1cF9lbnZpcm9u
X2Zvcl90ZXN0KCkKICAgICAgICAgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBOb25lCiAg
ICAgICAgIHNlbGYuX2NyYXNoZWRfcGlkID0gTm9uZQotICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJv
Y2VzcyA9IHNlbGYuX3BvcnQuX3Rlc3RfcnVubmVyX3Byb2Nlc3NfY29uc3RydWN0b3Ioc2VsZi5f
cG9ydCwgc2VsZi5fc2VydmVyX25hbWUsIHNlbGYuY21kX2xpbmUocGl4ZWxfdGVzdHMsIHBlcl90
ZXN0X2FyZ3MpLCBlbnZpcm9ubWVudCwgd29ya2VyX251bWJlcj1zZWxmLl93b3JrZXJfbnVtYmVy
KQorICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2VzcyA9IHNlbGYuX3BvcnQuX3Rlc3RfcnVubmVy
X3Byb2Nlc3NfY29uc3RydWN0b3Ioc2VsZi5fcG9ydCwgc2VsZi5fc2VydmVyX25hbWUsIHNlbGYu
Y21kX2xpbmUocGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpLCBlbnZpcm9ubWVudCwgdGFyZ2V0
X2hvc3Q9c2VsZi5fdGFyZ2V0X2hvc3QpCiAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnN0
YXJ0KCkKIAogICAgIGRlZiBfcnVuX3Bvc3Rfc3RhcnRfdGFza3Moc2VsZik6CkBAIC0zODgsMTAg
KzM4OSwxMCBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLl9w
cm9maWxlci5wcm9maWxlX2FmdGVyX2V4aXQoKQogCiAgICAgICAgIGlmIHNlbGYuX2RyaXZlcl90
ZW1wZGlyOgotICAgICAgICAgICAgc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5ybXRyZWUoc3RyKHNl
bGYuX2RyaXZlcl90ZW1wZGlyKSkKKyAgICAgICAgICAgIHNlbGYuX3RhcmdldF9ob3N0LmZpbGVz
eXN0ZW0ucm10cmVlKHN0cihzZWxmLl9kcml2ZXJfdGVtcGRpcikpCiAgICAgICAgICAgICBzZWxm
Ll9kcml2ZXJfdGVtcGRpciA9IE5vbmUKICAgICAgICAgaWYgc2VsZi5fZHJpdmVyX3VzZXJfY2Fj
aGVfZGlyZWN0b3J5OgotICAgICAgICAgICAgc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5ybXRyZWUo
c2VsZi5fZHJpdmVyX3VzZXJfY2FjaGVfZGlyZWN0b3J5KQorICAgICAgICAgICAgc2VsZi5fdGFy
Z2V0X2hvc3QuZmlsZXN5c3RlbS5ybXRyZWUoc2VsZi5fZHJpdmVyX3VzZXJfY2FjaGVfZGlyZWN0
b3J5KQogICAgICAgICAgICAgc2VsZi5fZHJpdmVyX3VzZXJfY2FjaGVfZGlyZWN0b3J5ID0gTm9u
ZQogCiAgICAgZGVmIGNtZF9saW5lKHNlbGYsIHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKToK
QEAgLTQzMiw3ICs0MzMsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgICAgIHNl
bGYuZXJyb3JfZnJvbV90ZXN0ICs9IGVycl9saW5lCiAgICAgICAgICAgICBfbG9nLmRlYnVnKGVy
cl9saW5lKQogICAgICAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCJzYW1wbGVfb25f
dGltZW91dCIpOgotICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuc2FtcGxlX3Byb2Nlc3MoY2hp
bGRfcHJvY2Vzc19uYW1lLCBjaGlsZF9wcm9jZXNzX3BpZCkKKyAgICAgICAgICAgICAgICBzZWxm
Ll9wb3J0LnNhbXBsZV9wcm9jZXNzKGNoaWxkX3Byb2Nlc3NfbmFtZSwgY2hpbGRfcHJvY2Vzc19w
aWQsIHNlbGYuX3RhcmdldF9ob3N0KQogICAgICAgICBpZiBvdXRfbGluZSA9PSAiRkFJTDogVGlt
ZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUgdG8gYmUgY2FsbGVkXG4iOgogICAgICAgICAg
ICAgc2VsZi5fZHJpdmVyX3RpbWVkX291dCA9IFRydWUKIApAQCAtNDYxLDcgKzQ2Miw3IEBAIGNs
YXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAgICAgX2xvZy5kZWJ1ZygnJXMgaXMgdW5yZXNw
b25zaXZlLCBwaWQgPSAlcycgJSAoY2hpbGRfcHJvY2Vzc19uYW1lLCBzdHIoY2hpbGRfcHJvY2Vz
c19waWQpKSkKICAgICAgICAgICAgIHNlbGYuX2RyaXZlcl90aW1lZF9vdXQgPSBUcnVlCiAgICAg
ICAgICAgICBpZiBjaGlsZF9wcm9jZXNzX3BpZDoKLSAgICAgICAgICAgICAgICBzZWxmLl9wb3J0
LnNhbXBsZV9wcm9jZXNzKGNoaWxkX3Byb2Nlc3NfbmFtZSwgY2hpbGRfcHJvY2Vzc19waWQpCisg
ICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5zYW1wbGVfcHJvY2VzcyhjaGlsZF9wcm9jZXNzX25h
bWUsIGNoaWxkX3Byb2Nlc3NfcGlkLCBzZWxmLl90YXJnZXRfaG9zdCkKICAgICAgICAgICAgIHNl
bGYuZXJyb3JfZnJvbV90ZXN0ICs9IGVycm9yX2xpbmUKICAgICAgICAgICAgIHNlbGYuX3NlcnZl
cl9wcm9jZXNzLndyaXRlKCcjU0FNUExFIEZJTklTSEVEXG4nLCBUcnVlKSAgIyBNdXN0IGJlIGFi
bGUgdG8gaWdub3JlIGEgYnJva2VuIHBpcGUgaGVyZSwgdGFyZ2V0IHByb2Nlc3MgbWF5IGFscmVh
ZHkgYmUgY2xvc2VkLgogICAgICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTQ3NCw5ICs0NzUsOSBA
QCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgZWxpZiBzZWxmLmlzX3dlYl9wbGF0Zm9y
bV90ZXN0KGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpIG9yIChzZWxmLmlzX2h0dHBfdGVzdChkcml2
ZXJfaW5wdXQudGVzdF9uYW1lKSBhbmQgKHNlbGYuX3BvcnQuZ2V0X29wdGlvbignd2Via2l0X3Rl
c3RfcnVubmVyJykgb3Igc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iKSk6CiAgICAgICAgICAgICBj
b21tYW5kID0gc2VsZi50ZXN0X3RvX3VyaShkcml2ZXJfaW5wdXQudGVzdF9uYW1lKQogICAgICAg
ICAgICAgY29tbWFuZCArPSAiJy0tYWJzb2x1dGVQYXRoJyIKLSAgICAgICAgICAgIGNvbW1hbmQg
Kz0gc2VsZi5fcG9ydC5hYnNwYXRoX2Zvcl90ZXN0KGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpCisg
ICAgICAgICAgICBjb21tYW5kICs9IHNlbGYuX3BvcnQuYWJzcGF0aF9mb3JfdGVzdChkcml2ZXJf
aW5wdXQudGVzdF9uYW1lLCBzZWxmLl90YXJnZXRfaG9zdCkKICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGNvbW1hbmQgPSBzZWxmLl9wb3J0LmFic3BhdGhfZm9yX3Rlc3QoZHJpdmVyX2lucHV0
LnRlc3RfbmFtZSkKKyAgICAgICAgICAgIGNvbW1hbmQgPSBzZWxmLl9wb3J0LmFic3BhdGhfZm9y
X3Rlc3QoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSwgc2VsZi5fdGFyZ2V0X2hvc3QpCiAgICAgICAg
ICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbic6CiAgICAgICAgICAgICAgICAgY29tbWFu
ZCA9IHBhdGguY3lncGF0aChjb21tYW5kKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvaW9zLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9p
b3MucHkJKHJldmlzaW9uIDIxNDY5OCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9p
b3MucHkJKHdvcmtpbmcgY29weSkKQEAgLTc3LDEzICs3NywxMyBAQCBjbGFzcyBJT1NQb3J0KERh
cndpblBvcnQpOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdEZXZpY2UgYXQge30g
Y291bGQgbm90IGJlIGZvdW5kJy5mb3JtYXQobnVtYmVyKSkKICAgICAgICAgcmV0dXJuIGRldmlj
ZQogCi0gICAgIyBGSVhNRTogVGhpcyBpcyBvbmx5IGV4cG9zZWQgc28gdGhhdCBTaW11bGF0b3JQ
cm9jZXNzIGNhbiB1c2UgaXQuCi0gICAgZGVmIGRldmljZV9mb3Jfd29ya2VyX251bWJlcihzZWxm
LCBudW1iZXIpOgotICAgICAgICBpZiBzZWxmLl9wcmludGluZ19jbWRfbGluZToKLSAgICAgICAg
ICAgIHJldHVybiBOb25lCisgICAgIyBBIGRldmljZSBpcyB0aGUgdGFyZ2V0IGhvc3QgZm9yIGEg
c3BlY2lmaWMgd29ya2VyIG51bWJlci4KKyAgICBkZWYgdGFyZ2V0X2hvc3Qoc2VsZiwgd29ya2Vy
X251bWJlcj1Ob25lKToKKyAgICAgICAgaWYgc2VsZi5fcHJpbnRpbmdfY21kX2xpbmUgb3Igd29y
a2VyX251bWJlciBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuaG9zdAogICAgICAg
ICAjIFdoZW4gdXNpbmcgc2ltdWxhdGVkIGRldmljZXMsIHRoaXMgbWVhbnMgd2Via2l0cHkgaXMg
bWFuYWdpbmcgdGhlIGRldmljZXMuCiAgICAgICAgIGlmIHNlbGYudXNpbmdfbXVsdGlwbGVfZGV2
aWNlcygpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RpbmdfZGV2aWNlKG51bWJlcikK
KyAgICAgICAgICAgIHJldHVybiBzZWxmLl90ZXN0aW5nX2RldmljZSh3b3JrZXJfbnVtYmVyKQog
ICAgICAgICByZXR1cm4gc2VsZi5fY3VycmVudF9kZXZpY2UKIAogICAgIGRlZiBkZWZhdWx0X2Jh
c2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpOgpAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIElPU1Bv
cnQoRGFyd2luUG9ydCk6CiAgICAgICAgIHNlbGYuX2NyZWF0ZV9kZXZpY2VzKGRldmljZV9jbGFz
cykKIAogICAgICAgICBmb3IgaSBpbiB4cmFuZ2Uoc2VsZi5jaGlsZF9wcm9jZXNzZXMoKSk6Ci0g
ICAgICAgICAgICBkZXZpY2UgPSBzZWxmLmRldmljZV9mb3Jfd29ya2VyX251bWJlcihpKQorICAg
ICAgICAgICAgZGV2aWNlID0gc2VsZi50YXJnZXRfaG9zdChpKQogICAgICAgICAgICAgX2xvZy5k
ZWJ1ZygnSW5zdGFsbGluZyB0byB7fScuZm9ybWF0KGRldmljZSkpCiAgICAgICAgICAgICAjIFdp
dGhvdXQgcGFzc2luZyBEWUxEX0xJQlJBUllfUEFUSCwgbGliV2ViQ29yZVRlc3RTdXBwb3J0IGNh
bm5vdCBiZSBsb2FkZWQgYW5kIERSVC9XS1RSIHdpbGwgY3Jhc2ggcHJlLWxhdW5jaCwKICAgICAg
ICAgICAgICMgbGVhdmluZyBhIGNyYXNoIGxvZyB3aGljaCB3aWxsIGJlIHBpY2tlZCB1cCBpbiBy
ZXN1bHRzLiAgTm8gRFlMRF9GUkFNRVdPUktfUEFUSCB3aWxsIGFsc28gY2F1c2UgdGhlIERSVC9X
S1RSIHRvCkBAIC0xMjAsNyArMTIwLDcgQEAgY2xhc3MgSU9TUG9ydChEYXJ3aW5Qb3J0KToKICAg
ICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZhaWxlZCB0byBpbnN0YWxsIGFwcCB7
fSBvbiBkZXZpY2Uge30nLmZvcm1hdChzZWxmLl9wYXRoX3RvX2RyaXZlcigpLCBkZXZpY2UudWRp
ZCkpCiAKICAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuY2hpbGRfcHJvY2Vzc2VzKCkpOgot
ICAgICAgICAgICAgc2VsZi5kZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIoaSkucHJlcGFyZV9mb3Jf
dGVzdGluZygpCisgICAgICAgICAgICBzZWxmLnRhcmdldF9ob3N0KGkpLnByZXBhcmVfZm9yX3Rl
c3RpbmcoKQogCiAgICAgZGVmIGNsZWFuX3VwX3Rlc3RfcnVuKHNlbGYpOgogICAgICAgICBzdXBl
cihJT1NQb3J0LCBzZWxmKS5jbGVhbl91cF90ZXN0X3J1bigpCkBAIC0xMjksNyArMTI5LDcgQEAg
Y2xhc3MgSU9TUG9ydChEYXJ3aW5Qb3J0KToKICAgICAgICAgIyBGYWlsdXJlIHRvIHRlYXJkb3du
IGRldmljZXMgY2FuIGxlYXZlIHRoaW5ncyBpbiBhIGJhZCBzdGF0ZS4KICAgICAgICAgZXhjZXB0
aW9uX2xpc3QgPSBbXQogICAgICAgICBmb3IgaSBpbiB4cmFuZ2Uoc2VsZi5jaGlsZF9wcm9jZXNz
ZXMoKSk6Ci0gICAgICAgICAgICBkZXZpY2UgPSBzZWxmLmRldmljZV9mb3Jfd29ya2VyX251bWJl
cihpKQorICAgICAgICAgICAgZGV2aWNlID0gc2VsZi50YXJnZXRfaG9zdChpKQogICAgICAgICAg
ICAgdHJ5OgogICAgICAgICAgICAgICAgIGlmIGRldmljZToKICAgICAgICAgICAgICAgICAgICAg
ZGV2aWNlLmZpbmlzaGVkX3Rlc3RpbmcoKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L3NlcnZlcl9wcm9jZXNzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQkocmV2aXNpb24gMjE0Njk4KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02
MCw3ICs2MCw3IEBAIGNsYXNzIFNlcnZlclByb2Nlc3Mob2JqZWN0KToKICAgICBpbmRlZmluaXRl
bHkuIFRoZSBjbGFzcyBhbHNvIGhhbmRsZXMgdHJhbnNwYXJlbnRseSByZXN0YXJ0aW5nIHByb2Nl
c3NlcwogICAgIGFzIG5lY2Vzc2FyeSB0byBrZWVwIGlzc3VpbmcgY29tbWFuZHMuIiIiCiAKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZl
cnNhbF9uZXdsaW5lcz1GYWxzZSwgdHJlYXRfbm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgd29ya2Vy
X251bWJlcj1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG5hbWUsIGNt
ZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdHJlYXRfbm9fZGF0YV9hc19j
cmFzaD1GYWxzZSwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0
X29iagogICAgICAgICBzZWxmLl9uYW1lID0gbmFtZSAgIyBTaG91bGQgYmUgdGhlIGNvbW1hbmQg
bmFtZSAoZS5nLiBEdW1wUmVuZGVyVHJlZSwgSW1hZ2VEaWZmKQogICAgICAgICBzZWxmLl9jbWQg
PSBjbWQKQEAgLTY5LDcgKzY5LDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAg
ICAgICAjIERvbid0IHNldCBpZiB0aGVyZSB3aWxsIGJlIGJpbmFyeSBkYXRhIG9yIHRoZSBkYXRh
IG11c3QgYmUgQVNDSUkgZW5jb2RlZC4KICAgICAgICAgc2VsZi5fdW5pdmVyc2FsX25ld2xpbmVz
ID0gdW5pdmVyc2FsX25ld2xpbmVzCiAgICAgICAgIHNlbGYuX3RyZWF0X25vX2RhdGFfYXNfY3Jh
c2ggPSB0cmVhdF9ub19kYXRhX2FzX2NyYXNoCi0gICAgICAgIHNlbGYuX2hvc3QgPSBzZWxmLl9w
b3J0Lmhvc3QKKyAgICAgICAgc2VsZi5fdGFyZ2V0X2hvc3QgPSB0YXJnZXRfaG9zdCBvciBwb3J0
X29iai5ob3N0CiAgICAgICAgIHNlbGYuX3BpZCA9IE5vbmUKICAgICAgICAgc2VsZi5fcmVzZXQo
KQogCkBAIC0xMTYsOSArMTE2LDkgQEAgY2xhc3MgU2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAg
ICAgICAjIGNsb3NlX2ZkcyBpcyBhIHdvcmthcm91bmQgZm9yIGh0dHA6Ly9idWdzLnB5dGhvbi5v
cmcvaXNzdWUyMzIwCiAgICAgICAgICMgSW4gUHl0aG9uIDIuNy4xMCwgY2xvc2VfZmRzIGlzIGFs
c28gc3VwcG9ydGVkIG9uIFdpbmRvd3MuCiAgICAgICAgIGNsb3NlX2ZkcyA9IFRydWUKLSAgICAg
ICAgc2VsZi5fcHJvYyA9IHNlbGYuX2hvc3QuZXhlY3V0aXZlLnBvcGVuKHNlbGYuX2NtZCwgc3Rk
aW49c2VsZi5faG9zdC5leGVjdXRpdmUuUElQRSwKLSAgICAgICAgICAgIHN0ZG91dD1zZWxmLl9o
b3N0LmV4ZWN1dGl2ZS5QSVBFLAotICAgICAgICAgICAgc3RkZXJyPXNlbGYuX2hvc3QuZXhlY3V0
aXZlLlBJUEUsCisgICAgICAgIHNlbGYuX3Byb2MgPSBzZWxmLl90YXJnZXRfaG9zdC5leGVjdXRp
dmUucG9wZW4oc2VsZi5fY21kLCBzdGRpbj1zZWxmLl90YXJnZXRfaG9zdC5leGVjdXRpdmUuUElQ
RSwKKyAgICAgICAgICAgIHN0ZG91dD1zZWxmLl90YXJnZXRfaG9zdC5leGVjdXRpdmUuUElQRSwK
KyAgICAgICAgICAgIHN0ZGVycj1zZWxmLl90YXJnZXRfaG9zdC5leGVjdXRpdmUuUElQRSwKICAg
ICAgICAgICAgIGNsb3NlX2Zkcz1jbG9zZV9mZHMsCiAgICAgICAgICAgICBlbnY9c2VsZi5fZW52
LAogICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPXNlbGYuX3VuaXZlcnNhbF9uZXdsaW5l
cykKQEAgLTIxOSw3ICsyMTksNyBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAg
ZGVmIF9oYW5kbGVfdGltZW91dChzZWxmKToKICAgICAgICAgc2VsZi50aW1lZF9vdXQgPSBUcnVl
CiAgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbigic2FtcGxlX29uX3RpbWVvdXQiKToK
LSAgICAgICAgICAgIHNlbGYuX3BvcnQuc2FtcGxlX3Byb2Nlc3Moc2VsZi5fbmFtZSwgc2VsZi5f
cHJvYy5waWQpCisgICAgICAgICAgICBzZWxmLl9wb3J0LnNhbXBsZV9wcm9jZXNzKHNlbGYuX25h
bWUsIHNlbGYuX3Byb2MucGlkLCBzZWxmLl90YXJnZXRfaG9zdCkKIAogICAgIGRlZiBfc3BsaXRf
c3RyaW5nX2FmdGVyX2luZGV4KHNlbGYsIHN0cmluZywgaW5kZXgpOgogICAgICAgICByZXR1cm4g
c3RyaW5nWzppbmRleF0sIHN0cmluZ1tpbmRleDpdCkBAIC0zNzgsNyArMzc4LDcgQEAgY2xhc3Mg
U2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgICAgICBzZWxmLnN0b3AoMC4wKQogCiAgICAgZGVm
IF9raWxsKHNlbGYpOgotICAgICAgICBzZWxmLl9ob3N0LmV4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Mo
c2VsZi5fcHJvYy5waWQpCisgICAgICAgIHNlbGYuX3RhcmdldF9ob3N0LmV4ZWN1dGl2ZS5raWxs
X3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCiAgICAgICAgIGlmIHNlbGYuX3Byb2MucG9sbCgpIGlz
IG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5fcHJvYy53YWl0KCkKIApJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzX21vY2sucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzX21vY2sucHkJKHJl
dmlzaW9uIDIxNDY5OCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJv
Y2Vzc19tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIAogY2xhc3Mg
TW9ja1NlcnZlclByb2Nlc3Mob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9v
Ymo9Tm9uZSwgbmFtZT1Ob25lLCBjbWQ9Tm9uZSwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5l
cz1GYWxzZSwgbGluZXM9Tm9uZSwgY3Jhc2hlZD1GYWxzZSwgd29ya2VyX251bWJlcj1Ob25lKToK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmo9Tm9uZSwgbmFtZT1Ob25lLCBjbWQ9Tm9u
ZSwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgbGluZXM9Tm9uZSwgY3Jhc2hl
ZD1GYWxzZSwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CiAgICAgICAgIHNlbGYudGltZWRfb3V0ID0gRmFs
c2UKICAgICAgICAgc2VsZi5saW5lcyA9IGxpbmVzIG9yIFtdCiAgICAgICAgIHNlbGYuY3Jhc2hl
ZCA9IGNyYXNoZWQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3Jf
cHJvY2Vzcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2lt
dWxhdG9yX3Byb2Nlc3MucHkJKHJldmlzaW9uIDIxNDY5OCkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5weQkod29ya2luZyBjb3B5KQpAQCAtNzAsMTMg
KzcwLDExIEBAIGNsYXNzIFNpbXVsYXRvclByb2Nlc3MoU2VydmVyUHJvY2Vzcyk6CiAgICAgICAg
ICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZl
cnNhbF9uZXdsaW5lcz1GYWxzZSwgdHJlYXRfbm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgdGFyZ2V0
X2hvc3Q9Tm9uZSk6CisgICAgICAgIGVudlsnUE9SVCddID0gc3RyKHRhcmdldF9ob3N0Lmxpc3Rl
bmluZ19wb3J0KCkpICAjIFRoZSB0YXJnZXRfaG9zdCBzaG91bGQgYmUgYSBkZXZpY2UuCisgICAg
ICAgIHN1cGVyKFNpbXVsYXRvclByb2Nlc3MsIHNlbGYpLl9faW5pdF9fKHBvcnRfb2JqLCBuYW1l
LCBjbWQsIGVudiwgdW5pdmVyc2FsX25ld2xpbmVzLCB0cmVhdF9ub19kYXRhX2FzX2NyYXNoLCB0
YXJnZXRfaG9zdCkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaiwgbmFtZSwgY21k
LCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0cmVhdF9ub19kYXRhX2FzX2Ny
YXNoPUZhbHNlLCB3b3JrZXJfbnVtYmVyPU5vbmUpOgogICAgICAgICBzZWxmLl9idW5kbGVfaWQg
PSBwb3J0X29iai5hcHBfaWRlbnRpZmllcl9mcm9tX2J1bmRsZShjbWRbMF0pCi0gICAgICAgIHNl
bGYuX2RldmljZSA9IHBvcnRfb2JqLmRldmljZV9mb3Jfd29ya2VyX251bWJlcih3b3JrZXJfbnVt
YmVyKQotCi0gICAgICAgIGVudlsnUE9SVCddID0gc3RyKHNlbGYuX2RldmljZS5saXN0ZW5pbmdf
cG9ydCgpKQotICAgICAgICBzdXBlcihTaW11bGF0b3JQcm9jZXNzLCBzZWxmKS5fX2luaXRfXyhw
b3J0X29iaiwgbmFtZSwgY21kLCBlbnYsIHVuaXZlcnNhbF9uZXdsaW5lcywgdHJlYXRfbm9fZGF0
YV9hc19jcmFzaCkKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX2FjY2VwdF9jb25uZWN0
aW9uX2NyZWF0ZV9maWxlKHNlcnZlciwgdHlwZSk6CkBAIC05MSwxMiArODksMTIgQEAgY2xhc3Mg
U2ltdWxhdG9yUHJvY2VzcyhTZXJ2ZXJQcm9jZXNzKToKIAogICAgICAgICAjIEVhY2ggZGV2aWNl
IGhhcyBhIGxpc3RlbmluZyBzb2NrZXQgaW50aXRpbGFpemVkIGR1cmluZyB0aGUgcG9ydCdzIHNl
dHVwX3Rlc3RfcnVuLgogICAgICAgICAjIDMgY2xpZW50IGNvbm5lY3Rpb25zIHdpbGwgYmUgYWNj
ZXB0ZWQgZm9yIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciBpbiB0aGF0IG9yZGVyLgotICAgICAg
ICBzZWxmLl9kZXZpY2UubGlzdGVuaW5nX3NvY2tldC5saXN0ZW4oMykKLSAgICAgICAgc2VsZi5f
cGlkID0gc2VsZi5fZGV2aWNlLmxhdW5jaF9hcHAoc2VsZi5fYnVuZGxlX2lkLCBzZWxmLl9jbWRb
MTpdLCBlbnY9c2VsZi5fZW52KQorICAgICAgICBzZWxmLl90YXJnZXRfaG9zdC5saXN0ZW5pbmdf
c29ja2V0Lmxpc3RlbigzKQorICAgICAgICBzZWxmLl9waWQgPSBzZWxmLl90YXJnZXRfaG9zdC5s
YXVuY2hfYXBwKHNlbGYuX2J1bmRsZV9pZCwgc2VsZi5fY21kWzE6XSwgZW52PXNlbGYuX2VudikK
IAogICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKICAgICAgICAgICAgIGFzc2Vy
dCBzaWdudW0gPT0gc2lnbmFsLlNJR0FMUk0KLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbign
VGltZWQgb3V0IHdhaXRpbmcgZm9yIHByb2Nlc3MgdG8gY29ubmVjdCBhdCBwb3J0IHt9Jy5mb3Jt
YXQoc2VsZi5fZGV2aWNlLmxpc3RlbmluZ19wb3J0KCkpKQorICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCdUaW1lZCBvdXQgd2FpdGluZyBmb3IgcHJvY2VzcyB0byBjb25uZWN0IGF0IHBvcnQg
e30nLmZvcm1hdChzZWxmLl90YXJnZXRfaG9zdC5saXN0ZW5pbmdfcG9ydCgpKSkKICAgICAgICAg
c2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKICAgICAgICAgc2lnbmFsLmFs
YXJtKDMpICAjIEluIHNlY29uZHMKIApAQCAtMTA1LDEyICsxMDMsMTIgQEAgY2xhc3MgU2ltdWxh
dG9yUHJvY2VzcyhTZXJ2ZXJQcm9jZXNzKToKICAgICAgICAgc3RkZXJyID0gTm9uZQogICAgICAg
ICB0cnk6CiAgICAgICAgICAgICAjIFRoaXMgb3JkZXIgbWF0Y2hlcyB0aGUgY2xpZW50IHNpZGUg
Y29ubmVjdGlvbnMgaW4gVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9JT1NMYXlvdXRUZXN0Q29tbXVu
aWNhdGlvbi5jcHAgc2V0VXBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbigpCi0gICAgICAgICAg
ICBzdGRpbiA9IFNpbXVsYXRvclByb2Nlc3MuX2FjY2VwdF9jb25uZWN0aW9uX2NyZWF0ZV9maWxl
KHNlbGYuX2RldmljZS5saXN0ZW5pbmdfc29ja2V0LCAndycpCi0gICAgICAgICAgICBzdGRvdXQg
PSBTaW11bGF0b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmlsZShzZWxmLl9k
ZXZpY2UubGlzdGVuaW5nX3NvY2tldCwgJ3JiJykKLSAgICAgICAgICAgIHN0ZGVyciA9IFNpbXVs
YXRvclByb2Nlc3MuX2FjY2VwdF9jb25uZWN0aW9uX2NyZWF0ZV9maWxlKHNlbGYuX2RldmljZS5s
aXN0ZW5pbmdfc29ja2V0LCAncmInKQorICAgICAgICAgICAgc3RkaW4gPSBTaW11bGF0b3JQcm9j
ZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmlsZShzZWxmLl90YXJnZXRfaG9zdC5saXN0
ZW5pbmdfc29ja2V0LCAndycpCisgICAgICAgICAgICBzdGRvdXQgPSBTaW11bGF0b3JQcm9jZXNz
Ll9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmlsZShzZWxmLl90YXJnZXRfaG9zdC5saXN0ZW5p
bmdfc29ja2V0LCAncmInKQorICAgICAgICAgICAgc3RkZXJyID0gU2ltdWxhdG9yUHJvY2Vzcy5f
YWNjZXB0X2Nvbm5lY3Rpb25fY3JlYXRlX2ZpbGUoc2VsZi5fdGFyZ2V0X2hvc3QubGlzdGVuaW5n
X3NvY2tldCwgJ3JiJykKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgIyBXZSBzZXQgc2Vs
Zi5fcHJvYyBhcyBfcmVzZXQoKSBhbmQgX2tpbGwoKSBkZXBlbmQgb24gaXQuCi0gICAgICAgICAg
ICBzZWxmLl9wcm9jID0gU2ltdWxhdG9yUHJvY2Vzcy5Qb3BlbihzZWxmLl9waWQsIHN0ZGluLCBz
dGRvdXQsIHN0ZGVyciwgc2VsZi5fZGV2aWNlKQorICAgICAgICAgICAgc2VsZi5fcHJvYyA9IFNp
bXVsYXRvclByb2Nlc3MuUG9wZW4oc2VsZi5fcGlkLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIHNl
bGYuX3RhcmdldF9ob3N0KQogICAgICAgICAgICAgaWYgc2VsZi5fcHJvYy5wb2xsKCkgaXMgbm90
IE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5fcmVzZXQoKQogICAgICAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignQXBwIHt9IGNyYXNoZWQgYmVmb3JlIHN0ZGluIGNvdWxkIGJlIGF0dGFj
aGVkJy5mb3JtYXQob3MucGF0aC5iYXNlbmFtZShzZWxmLl9jbWRbMF0pKSkKQEAgLTExOSwxNCAr
MTE3LDkgQEAgY2xhc3MgU2ltdWxhdG9yUHJvY2VzcyhTZXJ2ZXJQcm9jZXNzKToKICAgICAgICAg
ICAgIHJhaXNlCiAgICAgICAgIHNpZ25hbC5hbGFybSgwKSAgIyBDYW5jZWwgYWxhcm0KIAotICAg
ICAgICBzZWxmLl9wcm9jID0gU2ltdWxhdG9yUHJvY2Vzcy5Qb3BlbihzZWxmLl9waWQsIHN0ZGlu
LCBzdGRvdXQsIHN0ZGVyciwgc2VsZi5fZGV2aWNlKQorICAgICAgICBzZWxmLl9wcm9jID0gU2lt
dWxhdG9yUHJvY2Vzcy5Qb3BlbihzZWxmLl9waWQsIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgc2Vs
Zi5fdGFyZ2V0X2hvc3QpCiAKICAgICBkZWYgc3RvcChzZWxmLCB0aW1lb3V0X3NlY3M9My4wKToK
ICAgICAgICAgaWYgc2VsZi5fcHJvYzoKLSAgICAgICAgICAgIHNlbGYuX2RldmljZS5leGVjdXRp
dmUua2lsbF9wcm9jZXNzKHNlbGYuX3Byb2MucGlkKQorICAgICAgICAgICAgc2VsZi5fdGFyZ2V0
X2hvc3QuZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9jLnBpZCkKICAgICAgICAgcmV0
dXJuIHN1cGVyKFNpbXVsYXRvclByb2Nlc3MsIHNlbGYpLnN0b3AodGltZW91dF9zZWNzKQotCi0g
ICAgZGVmIF9raWxsKHNlbGYpOgotICAgICAgICBzZWxmLl9kZXZpY2UuZXhlY3V0aXZlLmtpbGxf
cHJvY2VzcyhzZWxmLl9wcm9jLnBpZCkKLSAgICAgICAgaWYgc2VsZi5fcHJvYy5wb2xsKCkgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9wcm9jLndhaXQoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>