<?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>176436</bug_id>
          
          <creation_ts>2017-09-05 18:30:28 -0700</creation_ts>
          <short_desc>Add Live PLT implemented with WebDriver</short_desc>
          <delta_ts>2017-09-27 12:37:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matthew Stewart">matthew_r_stewart</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dean_johnson</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>glenn</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1345752</commentid>
    <comment_count>0</comment_count>
    <who name="Matthew Stewart">matthew_r_stewart</who>
    <bug_when>2017-09-05 18:30:28 -0700</bug_when>
    <thetext>Add Live PLT implemented with WebDriver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345755</commentid>
    <comment_count>1</comment_count>
      <attachid>319968</attachid>
    <who name="Matthew Stewart">matthew_r_stewart</who>
    <bug_when>2017-09-05 18:42:37 -0700</bug_when>
    <thetext>Created attachment 319968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345756</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-05 18:45:34 -0700</bug_when>
    <thetext>Attachment 319968 did not pass style-queue:


ERROR: Tools/Scripts/run-webdriver-plt.py:2:  No name &apos;webdriver_plt&apos; in module &apos;webkitpy&apos;  [pylint/E0611] [5]
ERROR: Tools/Scripts/run-webdriver-plt.py:3:  No name &apos;webdriver_plt&apos; in module &apos;webkitpy&apos;  [pylint/E0611] [5]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346128</commentid>
    <comment_count>3</comment_count>
      <attachid>319968</attachid>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2017-09-06 15:56:47 -0700</bug_when>
    <thetext>Comment on attachment 319968
Patch

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

&gt; Tools/Scripts/run-webdriver-plt.py:13
&gt; +    parser.add_argument(&apos;-n&apos;, &apos;--instances&apos;, dest=&apos;instances&apos;, type=int, default=3, help=&apos;Test the suite n times in the same browser session&apos;)

This backwards from the other plt.  Instances is number of times safari is launched

&gt; Tools/Scripts/webkitpy/webdriver_plt/liveplt.py:23
&gt; +        self.size = size

I&apos;d create a log message dumping the parameters here.  It&apos;s useful to go back and look at the defaults when trying to compare two logs.

&gt; Tools/Scripts/webkitpy/webdriver_plt/liveplt.py:90
&gt; +        sleep(1)

Ideally you&apos;d use web driver to figure out when the window is maximized.  Blanket sleep statements often behave badly when things aren&apos;t going as planned.

&gt; Tools/Scripts/webkitpy/webdriver_plt/liveplt.py:116
&gt; +                    pass  # opening new tabs not currently possible

please print a help message here

&gt; Tools/Scripts/webkitpy/webdriver_plt/liveplt.py:133
&gt; +        NT_results = driver.execute_script(&apos;return performance.getEntriesByType(&quot;navigation&quot;)[0]&apos;)  # navigation timing 2

nit probably should have used lower case nt.

&gt; Tools/Scripts/webkitpy/webdriver_plt/suites/social.suite:13
&gt; +    ]

pleased add a media suite.  ie. youtube flickr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346205</commentid>
    <comment_count>4</comment_count>
      <attachid>319968</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-09-06 19:21:06 -0700</bug_when>
    <thetext>Comment on attachment 319968
Patch

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

&gt; Tools/ChangeLog:36
&gt; +        * Scripts/webkitpy/webdriver_plt/suites/__init__.py: Added.

This file should not be empty, otherwise, it will be ignored by svn.

&gt; Tools/Scripts/webkitpy/webdriver_plt/liveplt.py:12
&gt; +    &apos;safari&apos;: 76,
&gt; +    &apos;chrome&apos;: 0,
&gt; +    &apos;firefox&apos;: 37,
&gt; +    &apos;stp&apos;: 76,
&gt; +}

Does those number ever change?

&gt; Tools/Scripts/webkitpy/webdriver_plt/pltresults.py:28
&gt; +        self.product *= time

I would prefer using log function to calculate geomean.
geomean = (x * y)^(1/2)
-&gt; log(geomean) = log((x * y)^(1/2))
-&gt; log(geomean) = (1/2) * (log(x) + log(y))
So we can accumulate log(time) here, and get geomean by apply pow(e, accumulated_value / n)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346505</commentid>
    <comment_count>5</comment_count>
      <attachid>320164</attachid>
    <who name="Matthew Stewart">matthew_r_stewart</who>
    <bug_when>2017-09-07 13:05:38 -0700</bug_when>
    <thetext>Created attachment 320164
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346690</commentid>
    <comment_count>6</comment_count>
      <attachid>320224</attachid>
    <who name="Matthew Stewart">matthew_r_stewart</who>
    <bug_when>2017-09-07 19:20:00 -0700</bug_when>
    <thetext>Created attachment 320224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346697</commentid>
    <comment_count>7</comment_count>
      <attachid>320224</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-07 19:58:11 -0700</bug_when>
    <thetext>Comment on attachment 320224
Patch

Clearing flags on attachment: 320224

Committed r221777: &lt;http://trac.webkit.org/changeset/221777&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346698</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-07 19:58:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353545</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:37:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693639&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319968</attachid>
            <date>2017-09-05 18:42:37 -0700</date>
            <delta_ts>2017-09-07 13:05:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176436-20170905184237.patch</filename>
            <type>text/plain</type>
            <size>23166</size>
            <attacher name="Matthew Stewart">matthew_r_stewart</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjU2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGIyMTdkYzMyMzU0NzI1OGY0NmUxYWMyMTc2YjYzMDdi
NjgxNzk0Zi4uZDY2OWM1NGU0Yjc0NDQ0NzU3NDFjYTRhNjZjOTQ5YTg5MzNjN2RhYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYw
IEBACiAyMDE3LTA5LTA1ICBNYXR0aGV3IFN0ZXdhcnQgIDxtYXR0aGV3X3Jfc3Rld2FydEBhcHBs
ZS5jb20+CiAKKyAgICAgICAgQWRkIExpdmUgUExUIGltcGxlbWVudGVkIHdpdGggV2ViRHJpdmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0MzYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEg
bmV3IFBMVCB0aGF0IHJ1bnMgb24gbGl2ZSB3ZWJzaXRlcy4KKworICAgICAgICAqIFNjcmlwdHMv
cnVuLXdlYmRyaXZlci1wbHQucHk6IEFkZGVkLgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAg
ICAgIChzdGFydCk6CisgICAgICAgIChtYWtlX3N1aXRlcyk6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvX19pbml0X18ucHk6IEFkZGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9saXZlcGx0LnB5OiBB
ZGRlZC4KKyAgICAgICAgKFBhZ2VMb2FkVGVzdCk6CisgICAgICAgIChQYWdlTG9hZFRlc3QuX19p
bml0X18pOgorICAgICAgICAoUGFnZUxvYWRUZXN0LnN0YXJ0KToKKyAgICAgICAgKFBhZ2VMb2Fk
VGVzdC5ydW5fc3VpdGUpOgorICAgICAgICAoUGFnZUxvYWRUZXN0Ll9nZXRfZHJpdmVyX2Zvcl9i
cm93c2VyKToKKyAgICAgICAgKFBhZ2VMb2FkVGVzdC5fc2V0dXBfYnJvd3Nlcl93aW5kb3cpOgor
ICAgICAgICAoUGFnZUxvYWRUZXN0LnJ1bl9vbmVfdGVzdCk6CisgICAgICAgIChQYWdlTG9hZFRl
c3QuZ2V0X3Jlc3VsdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3Bs
dC9wbHRyZXN1bHRzLnB5OiBBZGRlZC4KKyAgICAgICAgKFBMVFJlc3VsdHMpOgorICAgICAgICAo
UExUUmVzdWx0cy5fX2luaXRfXyk6CisgICAgICAgIChQTFRSZXN1bHRzLl9fYWRkX18pOgorICAg
ICAgICAoUExUUmVzdWx0cy5hZGRfdGltaW5nX3Jlc3VsdCk6CisgICAgICAgIChQTFRSZXN1bHRz
Lm1lYW4pOgorICAgICAgICAoUExUUmVzdWx0cy5nZW9tZXRyaWNfbWVhbik6CisgICAgICAgIChQ
TFRSZXN1bHRzLm1lYW5fY29lZl92YXJpYW5jZSk6CisgICAgICAgIChQTFRSZXN1bHRzLnByaW50
X3Jlc3VsdHMpOgorICAgICAgICAoUExUUmVzdWx0cy5wcmludF91cmxfcmVzdWx0cyk6CisgICAg
ICAgIChQTFRSZXN1bHRzLl9mb3JtYXRfdGltZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9fX2luaXRfXy5weTogQWRkZWQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9hcmFiaWMuc3VpdGU6IEFkZGVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9zdWl0ZXMvY2prLnN1aXRl
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVz
L25ld3Muc3VpdGU6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVy
X3BsdC9zdWl0ZXMvc2VhcmNoLnN1aXRlOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3Nob3BwaW5nLnN1aXRlOiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3NvY2lhbC5zdWl0ZTogQWRk
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9zdWl0
ZS5weTogQWRkZWQuCisgICAgICAgIChTdWl0ZSk6CisgICAgICAgIChTdWl0ZS5fX2luaXRfXyk6
CisgICAgICAgIChTdWl0ZS5nZXRfYXZhaWxhYmxlX3N1aXRlcyk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3VybHJlc3VsdHMucHk6IEFkZGVkLgorICAgICAgICAo
VVJMUmVzdWx0cyk6CisgICAgICAgIChVUkxSZXN1bHRzLl9faW5pdF9fKToKKyAgICAgICAgKFVS
TFJlc3VsdHMuX19hZGRfXyk6CisgICAgICAgIChVUkxSZXN1bHRzLm1lYW4pOgorICAgICAgICAo
VVJMUmVzdWx0cy5jb2VmX3ZhcmlhbmNlKToKKyAgICAgICAgKFVSTFJlc3VsdHMucHJpbnRfcmVz
dWx0cyk6CisgICAgICAgIChVUkxSZXN1bHRzLl9mb3JtYXRfdGltZSk6CisKKzIwMTctMDktMDUg
IE1hdHRoZXcgU3Rld2FydCAgPG1hdHRoZXdfcl9zdGV3YXJ0QGFwcGxlLmNvbT4KKwogICAgICAg
ICBCZW5jaG1hcmsgUnVubmVyIFdlYkRyaXZlciBtYXhpbWl6ZSB3aW5kb3cgb24gYnJvd3NlciBs
YXVuY2gKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTcwMgogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi13ZWJkcml2ZXItcGx0LnB5IGIv
VG9vbHMvU2NyaXB0cy9ydW4td2ViZHJpdmVyLXBsdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWJjOGExM2Ix
MmU2NTkyYTRhOTI5NGM1MzVkNWFmNDVhYTNkOGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy9ydW4td2ViZHJpdmVyLXBsdC5weQpAQCAtMCwwICsxLDUyIEBACitpbXBvcnQgYXJn
cGFyc2UKK2Zyb20gd2Via2l0cHkud2ViZHJpdmVyX3BsdC5zdWl0ZXMuc3VpdGUgaW1wb3J0IFN1
aXRlCitmcm9tIHdlYmtpdHB5LndlYmRyaXZlcl9wbHQubGl2ZXBsdCBpbXBvcnQgUGFnZUxvYWRU
ZXN0CisKK2F2YWlsYWJsZV9icm93c2VycyA9IFsKKyAgICAic2FmYXJpIiwgImNocm9tZSIsICJm
aXJlZm94IiwgInN0cCIsCitdCisKKworZGVmIHBhcnNlX2FyZ3MoKToKKyAgICBwYXJzZXIgPSBh
cmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nQXV0b21hdGUgcnVubmluZyBQTFQg
d2l0aCBsaXZlIHdlYnNpdGVzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctaScsICctLWl0
ZXJhdGlvbnMnLCBkZXN0PSdpdGVyYXRpb25zJywgdHlwZT1pbnQsIGRlZmF1bHQ9MywgaGVscD0n
UmVzdGFydCB0aGUgYnJvd3NlciBpIHRpbWVzIGZvciBlYWNoIHN1aXRlJykKKyAgICBwYXJzZXIu
YWRkX2FyZ3VtZW50KCctbicsICctLWluc3RhbmNlcycsIGRlc3Q9J2luc3RhbmNlcycsIHR5cGU9
aW50LCBkZWZhdWx0PTMsIGhlbHA9J1Rlc3QgdGhlIHN1aXRlIG4gdGltZXMgaW4gdGhlIHNhbWUg
YnJvd3NlciBzZXNzaW9uJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdycsICctLXdhaXQn
LCBkZXN0PSd3YWl0JywgdHlwZT1mbG9hdCwgZGVmYXVsdD0zLjAsIGhlbHA9J1dhaXQgdGltZSBi
ZXR3ZWVuIHBhZ2VzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsICctLWJyb3dzZXIn
LCBkZXN0PSdicm93c2VyJywgZGVmYXVsdD0nc2FmYXJpJywgY2hvaWNlcz1hdmFpbGFibGVfYnJv
d3NlcnMpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zdWl0ZXMnLCBkZXN0PSdz
dWl0ZXMnLCBuYXJncz0nKycsIGhlbHA9J0xpc3Qgb25lIG9yIG1vcmUgc3VpdGVzIHRvIHJ1bi4g
SWYgdW5zcGVjaWZpZWQsIGRlZmF1bHRzIHRvIHJ1bm5pbmcgYWxsIHN1aXRlcycpCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgnLS13aWR0aCcsIGRlc3Q9J3dpZHRoJywgaGVscD0nU2V0IHRoZSBp
bm5lciB3aW5kb3cgd2lkdGgnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taGVpZ2h0Jywg
ZGVzdD0naGVpZ2h0JywgaGVscD0nU2V0IHRoZSBpbm5lciB3aW5kb3cgaGVpZ2h0JykKKworICAg
IGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICByZXR1cm4gYXJncworCisKK2RlZiBz
dGFydChhcmdzKToKKyAgICBzdWl0ZXMgPSBtYWtlX3N1aXRlcyhhcmdzLnN1aXRlcykKKyAgICBz
aXplID0gKGFyZ3Mud2lkdGgsIGFyZ3MuaGVpZ2h0KQorICAgIHBsdCA9IFBhZ2VMb2FkVGVzdChh
cmdzLml0ZXJhdGlvbnMsIGFyZ3MuaW5zdGFuY2VzLCBhcmdzLndhaXQsIGFyZ3MuYnJvd3Nlciwg
c3VpdGVzLCBzaXplKQorICAgIHBsdC5zdGFydCgpCisKKworZGVmIG1ha2Vfc3VpdGVzKHN1aXRl
c2xpc3QpOgorICAgIGF2YWlsYWJsZV9zdWl0ZXMgPSBTdWl0ZS5nZXRfYXZhaWxhYmxlX3N1aXRl
cygpCisgICAgc3VpdGVzID0gbGlzdCgpCisgICAgaWYgc3VpdGVzbGlzdDoKKyAgICAgICAgZm9y
IHN1aXRlbmFtZSBpbiBzdWl0ZXNsaXN0OgorICAgICAgICAgICAgaWYgc3VpdGVuYW1lLmxvd2Vy
KCkgbm90IGluIGF2YWlsYWJsZV9zdWl0ZXM6CisgICAgICAgICAgICAgICAgcHJpbnQoIlN1aXRl
IFwie31cIiBub3QgZm91bmQuIi5mb3JtYXQoc3VpdGVuYW1lKSkKKyAgICAgICAgICAgICAgICBx
dWl0KCkKKyAgICAgICAgICAgIHN1aXRlcy5hcHBlbmQoU3VpdGUoc3VpdGVuYW1lLmxvd2VyKCkp
KQorICAgIGVsc2U6CisgICAgICAgIGZvciBzdWl0ZW5hbWUgaW4gYXZhaWxhYmxlX3N1aXRlczoK
KyAgICAgICAgICAgIHN1aXRlcy5hcHBlbmQoU3VpdGUoc3VpdGVuYW1lKSkKKyAgICByZXR1cm4g
c3VpdGVzCisKKworZGVmIG1haW4oKToKKyAgICByZXR1cm4gc3RhcnQocGFyc2VfYXJncygpKQor
CisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvX19pbml0X18ucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5
ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L2xpdmVwbHQucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvbGl2ZXBsdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTQ3YzA4N2Uz
OTU1OWRhYzdjZTI2ZjY2ZTJhZTNkZjA1ZTFmZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L2xpdmVwbHQucHkKQEAgLTAsMCArMSwxNDcg
QEAKK2ltcG9ydCB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQuc2VsZW5pdW0KK2Zy
b20gcGx0cmVzdWx0cyBpbXBvcnQgUExUUmVzdWx0cworZnJvbSBzZWxlbml1bSBpbXBvcnQgd2Vi
ZHJpdmVyCitmcm9tIHRpbWUgaW1wb3J0IHNsZWVwCitmcm9tIHdlYmtpdHB5LmJlbmNobWFya19y
dW5uZXIudXRpbHMgaW1wb3J0IGdldF9kcml2ZXJfYmluYXJ5X3BhdGgKKworYnJvd3Nlcl9oZWln
aHRfb2Zmc2V0cyA9IHsKKyAgICAnc2FmYXJpJzogNzYsCisgICAgJ2Nocm9tZSc6IDAsCisgICAg
J2ZpcmVmb3gnOiAzNywKKyAgICAnc3RwJzogNzYsCit9CisKKworY2xhc3MgUGFnZUxvYWRUZXN0
KG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlcmF0aW9ucywgaW5zdGFuY2Vz
LCB3YWl0LCBicm93c2VyLCBzdWl0ZXMsIHNpemUpOgorICAgICAgICBzZWxmLml0ZXJhdGlvbnMg
PSBpdGVyYXRpb25zCisgICAgICAgIHNlbGYuaW5zdGFuY2VzID0gaW5zdGFuY2VzCisgICAgICAg
IHNlbGYud2FpdCA9IHdhaXQKKyAgICAgICAgc2VsZi5icm93c2VyID0gYnJvd3NlcgorICAgICAg
ICBzZWxmLnN1aXRlcyA9IHN1aXRlcworICAgICAgICBzZWxmLnNpemUgPSBzaXplCisKKyAgICBk
ZWYgc3RhcnQoc2VsZik6CisgICAgICAgIHRvdGFsX3Jlc3VsdHMgPSBQTFRSZXN1bHRzKCkKKyAg
ICAgICAgc3VpdGVpZCA9IDAKKyAgICAgICAgZm9yIHN1aXRlIGluIHNlbGYuc3VpdGVzOgorICAg
ICAgICAgICAgc3VpdGUuYXR0ZW1wdHMgLT0gMQorICAgICAgICAgICAgaWYgc3VpdGUuYXR0ZW1w
dHMgPD0gMDoKKyAgICAgICAgICAgICAgICBwcmludCgiRmFpbGVkIHRvIGZpbmlzaCBydW5uaW5n
IHN1aXRlIHtuYW1lfS4gUmVzdWx0cyBhcmUgaW5jb21wbGV0ZS4iLmZvcm1hdChuYW1lPXN1aXRl
Lm5hbWUpKQorICAgICAgICAgICAgICAgIHByaW50KCJFeGl0aW5nLi4uIikKKyAgICAgICAgICAg
ICAgICBxdWl0KCkKKyAgICAgICAgICAgIHN1aXRlaWQgKz0gMQorICAgICAgICAgICAgcHJpbnQo
Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpCisgICAgICAgICAgICBwcmludCgiUnVu
bmluZyBzdWl0ZSB7aWR9IG9mIHtudW19OiB7bmFtZX0iLmZvcm1hdChpZD1zdWl0ZWlkLCBudW09
bGVuKHNlbGYuc3VpdGVzKSwgbmFtZT1zdWl0ZS5uYW1lKSkKKyAgICAgICAgICAgIHByaW50KCIt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKQorICAgICAgICAgICAgcHJpbnQoIiIpCisg
ICAgICAgICAgICB0b3RhbF9yZXN1bHRzICs9IHNlbGYucnVuX3N1aXRlKHN1aXRlKQorICAgICAg
ICB0b3RhbF9yZXN1bHRzLnByaW50X3Jlc3VsdHMoKQorCisgICAgZGVmIHJ1bl9zdWl0ZShzZWxm
LCBzdWl0ZSk6CisgICAgICAgIGNvbGRfcnVuX3Jlc3VsdHMgPSBQTFRSZXN1bHRzKCkKKyAgICAg
ICAgc3VpdGVfcmVzdWx0cyA9IFBMVFJlc3VsdHMoKQorCisgICAgICAgIGZvciBpbnN0YW5jZSBp
biByYW5nZShzZWxmLmluc3RhbmNlcyk6CisgICAgICAgICAgICBkcml2ZXIgPSBzZWxmLl9nZXRf
ZHJpdmVyX2Zvcl9icm93c2VyKHNlbGYuYnJvd3NlcikKKyAgICAgICAgICAgIHNlbGYuX3NldHVw
X2Jyb3dzZXJfd2luZG93KGRyaXZlcikKKyAgICAgICAgICAgIHNsZWVwKDUpCisgICAgICAgICAg
ICBmb3IgaXRlcmF0aW9uIGluIHJhbmdlKHNlbGYuaXRlcmF0aW9ucyArIDEpOgorICAgICAgICAg
ICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKQorICAgICAgICAg
ICAgICAgIGlmIGl0ZXJhdGlvbiA9PSAwOgorICAgICAgICAgICAgICAgICAgICBwcmludCgiUnVu
bmluZyBpdGVybmF0aW9uICVzIChjb2xkIHJ1bikiICUgaXRlcmF0aW9uKQorICAgICAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCJSdW5uaW5nIGl0ZXJuYXRpb24g
JXMiICUgaXRlcmF0aW9uKQorICAgICAgICAgICAgICAgIHJ1bl9yZXN1bHRzID0gc2VsZi5ydW5f
b25lX3Rlc3Qoc3VpdGUsIGRyaXZlcikKKyAgICAgICAgICAgICAgICBpZiBub3QgcnVuX3Jlc3Vs
dHM6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCJBIHBhZ2UgZmFpbGVkIHRvIGxvYWQgNSBj
b25zZWN1dGl2ZSB0aW1lcy4gUmUtcXVldWluZyBzdWl0ZS4iKQorICAgICAgICAgICAgICAgICAg
ICBzZWxmLnN1aXRlcy5hcHBlbmQoc3VpdGUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBQ
TFRSZXN1bHRzKCkKKyAgICAgICAgICAgICAgICBydW5fcmVzdWx0cy5wcmludF91cmxfcmVzdWx0
cygiSU5ESVZJRFVBTCIpCisgICAgICAgICAgICAgICAgaWYgaXRlcmF0aW9uID09IDA6CisgICAg
ICAgICAgICAgICAgICAgIGNvbGRfcnVuX3Jlc3VsdHMgKz0gcnVuX3Jlc3VsdHMKKyAgICAgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzdWl0ZV9yZXN1bHRzICs9IHJ1bl9y
ZXN1bHRzCisgICAgICAgICAgICBkcml2ZXIucXVpdCgpCisgICAgICAgIGNvbGRfcnVuX3Jlc3Vs
dHMucHJpbnRfcmVzdWx0cyhzdWl0ZS5uYW1lLCBUcnVlKQorICAgICAgICBzdWl0ZV9yZXN1bHRz
LnByaW50X3Jlc3VsdHMoc3VpdGUubmFtZSkKKyAgICAgICAgcmV0dXJuIHN1aXRlX3Jlc3VsdHMK
KworICAgIGRlZiBfZ2V0X2RyaXZlcl9mb3JfYnJvd3NlcihzZWxmLCBicm93c2VyKToKKyAgICAg
ICAgZHJpdmVyX2V4ZWN1dGFibGUgPSBnZXRfZHJpdmVyX2JpbmFyeV9wYXRoKGJyb3dzZXIpCisg
ICAgICAgIGlmIGJyb3dzZXIgPT0gJ3NhZmFyaSc6CisgICAgICAgICAgICByZXR1cm4gd2ViZHJp
dmVyLlNhZmFyaSgpCisgICAgICAgIGlmIGJyb3dzZXIgPT0gJ2Nocm9tZSc6CisgICAgICAgICAg
ICBmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5jaHJvbWUub3B0aW9ucyBpbXBvcnQgT3B0aW9ucwor
ICAgICAgICAgICAgb3B0aW9ucyA9IE9wdGlvbnMoKQorICAgICAgICAgICAgb3B0aW9ucy5hZGRf
YXJndW1lbnQoIi0tZGlzYWJsZS13ZWItc2VjdXJpdHkiKQorICAgICAgICAgICAgb3B0aW9ucy5h
ZGRfYXJndW1lbnQoIi0tdXNlci1kYXRhLWRpciIpCisgICAgICAgICAgICBvcHRpb25zLmFkZF9h
cmd1bWVudCgiLS1kaXNhYmxlLWV4dGVuc2lvbnMiKQorICAgICAgICAgICAgb3B0aW9ucy5hZGRf
YXJndW1lbnQoIi0tc3RhcnQtbWF4aW1pemVkIikKKyAgICAgICAgICAgIHJldHVybiB3ZWJkcml2
ZXIuQ2hyb21lKGNocm9tZV9vcHRpb25zPW9wdGlvbnMsIGV4ZWN1dGFibGVfcGF0aD1kcml2ZXJf
ZXhlY3V0YWJsZSkKKyAgICAgICAgaWYgYnJvd3NlciA9PSAnZmlyZWZveCc6CisgICAgICAgICAg
ICByZXR1cm4gd2ViZHJpdmVyLkZpcmVmb3goZXhlY3V0YWJsZV9wYXRoPWRyaXZlcl9leGVjdXRh
YmxlKQorICAgICAgICBpZiBicm93c2VyID09ICdzdHAnOgorICAgICAgICAgICAgcmV0dXJuIHdl
YmRyaXZlci5TYWZhcmkoZXhlY3V0YWJsZV9wYXRoPScvQXBwbGljYXRpb25zL1NhZmFyaSBUZWNo
bm9sb2d5IFByZXZpZXcuYXBwL0NvbnRlbnRzL01hY09TL3NhZmFyaWRyaXZlcicpCisKKyAgICBk
ZWYgX3NldHVwX2Jyb3dzZXJfd2luZG93KHNlbGYsIGRyaXZlcik6CisgICAgICAgIGRyaXZlci5t
YXhpbWl6ZV93aW5kb3coKQorICAgICAgICBzbGVlcCgxKQorICAgICAgICBjdXJyZW50X3NpemUg
PSBkcml2ZXIuZ2V0X3dpbmRvd19zaXplKCkKKworICAgICAgICBuZXdfd2lkdGgsIG5ld19oZWln
aHQgPSBzZWxmLnNpemUKKyAgICAgICAgaWYgbm90IG5ld193aWR0aDoKKyAgICAgICAgICAgIG5l
d193aWR0aCA9IGRyaXZlci5leGVjdXRlX3NjcmlwdCgncmV0dXJuIHNjcmVlbi53aWR0aDsnKQor
ICAgICAgICBpZiBub3QgbmV3X2hlaWdodDoKKyAgICAgICAgICAgIG5ld19oZWlnaHQgPSBjdXJy
ZW50X3NpemVbJ2hlaWdodCddIC0gYnJvd3Nlcl9oZWlnaHRfb2Zmc2V0c1tzZWxmLmJyb3dzZXJd
CisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZHJpdmVyLnNldF93aW5kb3dfc2l6ZSh3aWR0
aD1uZXdfd2lkdGgsIGhlaWdodD1uZXdfaGVpZ2h0KQorICAgICAgICAgICAgZHJpdmVyLnNldF93
aW5kb3dfcG9zaXRpb24oeD0wLCB5PTApCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHBh
c3MKKworICAgIGRlZiBydW5fb25lX3Rlc3Qoc2VsZiwgc3VpdGUsIGRyaXZlcik6CisgICAgICAg
IHRhYnMgPSBGYWxzZQorICAgICAgICBjdXJyZW50VGFiSWR4ID0gMAorICAgICAgICBtYXhUYWJz
ID0gNQorICAgICAgICBtYXhSZXRyeXMgPSA1CisKKyAgICAgICAgbG9jYWxfcmVzdWx0cyA9IFBM
VFJlc3VsdHMoKQorCisgICAgICAgIGZvciB1cmwgaW4gc3VpdGUudXJsczoKKyAgICAgICAgICAg
IGlmIHRhYnM6CisgICAgICAgICAgICAgICAgaWYgY3VycmVudFRhYklkeCA8IG1heFRhYnMgLSAx
OgorICAgICAgICAgICAgICAgICAgICBwYXNzICAjIG9wZW5pbmcgbmV3IHRhYnMgbm90IGN1cnJl
bnRseSBwb3NzaWJsZQorICAgICAgICAgICAgICAgIGRyaXZlci5zd2l0Y2hfdG9fd2luZG93KGRy
aXZlci53aW5kb3dfaGFuZGxlc1tjdXJyZW50VGFiSWR4ICUgbWF4VGFic10pCisgICAgICAgICAg
ICAgICAgY3VycmVudFRhYklkeCArPSAxCisgICAgICAgICAgICB0ZW1wV2FpdCA9IHNlbGYud2Fp
dAorICAgICAgICAgICAgZm9yIGF0dGVtcHQgaW4gcmFuZ2UobWF4UmV0cnlzKToKKyAgICAgICAg
ICAgICAgICBkcml2ZXIuZ2V0KHVybCkKKyAgICAgICAgICAgICAgICBzbGVlcCh0ZW1wV2FpdCkK
KyAgICAgICAgICAgICAgICBpZiBzZWxmLmdldF9yZXN1bHRzKGRyaXZlciwgbG9jYWxfcmVzdWx0
cywgdXJsKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgICAgIHBy
aW50KCJ7dXJsfSBuZXZlciBmaW5pc2hlZCBsb2FkaW5nLiBSZXRyeWluZy4uLiIuZm9ybWF0KHVy
bD11cmwpKQorICAgICAgICAgICAgICAgIHRlbXBXYWl0ICs9IDAuNQorICAgICAgICAgICAgICAg
IGlmIGF0dGVtcHQgPT0gbWF4UmV0cnlzIC0gMToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKyAgICAgICAgcmV0dXJuIGxvY2FsX3Jlc3VsdHMKKworICAgIGRlZiBnZXRfcmVzdWx0
cyhzZWxmLCBkcml2ZXIsIHJlc3VsdHMsIHVybCk6CisgICAgICAgIE5UX3Jlc3VsdHMgPSBkcml2
ZXIuZXhlY3V0ZV9zY3JpcHQoJ3JldHVybiBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJu
YXZpZ2F0aW9uIilbMF0nKSAgIyBuYXZpZ2F0aW9uIHRpbWluZyAyCisgICAgICAgIGlmIG5vdCBO
VF9yZXN1bHRzOgorICAgICAgICAgICAgTlRfcmVzdWx0cyA9IGRyaXZlci5leGVjdXRlX3Njcmlw
dCgncmV0dXJuIHBlcmZvcm1hbmNlLnRpbWluZycpICAjIG5hdmlnYXRpb24gdGltaW5nIDEKKyAg
ICAgICAgICAgIHN0YXJ0ID0gTlRfcmVzdWx0c1snbmF2aWdhdGlvblN0YXJ0J10KKyAgICAgICAg
ICAgIGVuZCA9IE5UX3Jlc3VsdHNbJ2xvYWRFdmVudEVuZCddCisgICAgICAgICAgICBpZiBzdGFy
dCA9PSAwIG9yIGVuZCA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgc3RhcnQgPSBOVF9yZXN1bHRzWydzdGFydFRpbWUnXQorICAg
ICAgICAgICAgZW5kID0gTlRfcmVzdWx0c1snbG9hZEV2ZW50RW5kJ10KKyAgICAgICAgICAgIGlm
IGVuZCA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHJlc3Vs
dHMuYWRkX3RpbWluZ19yZXN1bHQoZW5kIC0gc3RhcnQsIHVybCkKKyAgICAgICAgcmV0dXJuIFRy
dWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9wbHRy
ZXN1bHRzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3BsdHJlc3Vs
dHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzUyNTJjYjk2NTM3NjZlZTEyNzg3ZjAxNzQwMGUwZGFjMTkwNGQy
MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3Bs
dC9wbHRyZXN1bHRzLnB5CkBAIC0wLDAgKzEsMTAwIEBACitmcm9tIGNvbGxlY3Rpb25zIGltcG9y
dCBPcmRlcmVkRGljdAorZnJvbSB1cmxyZXN1bHRzIGltcG9ydCBVUkxSZXN1bHRzCisKKworY2xh
c3MgUExUUmVzdWx0cyhvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb2R1Y3Q9
MSwgdG90YWxzdW09MCwgbnVtX3VybHM9MCwgdXJscz1Ob25lKToKKyAgICAgICAgc2VsZi5wcm9k
dWN0ID0gcHJvZHVjdAorICAgICAgICBzZWxmLnN1bSA9IHRvdGFsc3VtCisgICAgICAgIHNlbGYu
Y291bnQgPSBudW1fdXJscworICAgICAgICBpZiB1cmxzIGlzIE5vbmU6CisgICAgICAgICAgICB1
cmxzID0gT3JkZXJlZERpY3QoKQorICAgICAgICBzZWxmLnVybHMgPSB1cmxzCisKKyAgICBkZWYg
X19hZGRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIG5ld19wcm9kdWN0ID0gc2VsZi5wcm9kdWN0
ICogb3RoZXIucHJvZHVjdAorICAgICAgICBuZXdfc3VtID0gc2VsZi5zdW0gKyBvdGhlci5zdW0K
KyAgICAgICAgbmV3X2NvdW50ID0gc2VsZi5jb3VudCArIG90aGVyLmNvdW50CisgICAgICAgIG5l
d191cmxzID0gT3JkZXJlZERpY3Qoc2VsZi51cmxzKQorICAgICAgICBmb3IgKHVybCwgcmVzdWx0
cykgaW4gb3RoZXIudXJscy5pdGVtcygpOgorICAgICAgICAgICAgaWYgdXJsIG5vdCBpbiBzZWxm
LnVybHM6CisgICAgICAgICAgICAgICAgbmV3X3VybHNbdXJsXSA9IFVSTFJlc3VsdHMoKQorICAg
ICAgICAgICAgbmV3X3VybHNbdXJsXSArPSByZXN1bHRzCisgICAgICAgIHJldHVybiBQTFRSZXN1
bHRzKG5ld19wcm9kdWN0LCBuZXdfc3VtLCBuZXdfY291bnQsIG5ld191cmxzKQorCisgICAgZGVm
IGFkZF90aW1pbmdfcmVzdWx0KHNlbGYsIHRpbWUsIHVybCk6CisgICAgICAgIHRpbWUgLz0gMTAw
MC4wCisgICAgICAgIHNlbGYucHJvZHVjdCAqPSB0aW1lCisgICAgICAgIHNlbGYuc3VtICs9IHRp
bWUKKyAgICAgICAgc2VsZi5jb3VudCArPSAxCisgICAgICAgIGlmIHVybCBpbiBzZWxmLnVybHM6
CisgICAgICAgICAgICBzZWxmLnVybHNbdXJsXSArPSBVUkxSZXN1bHRzKHRpbWUsIDEsIHRpbWUg
KiogMikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYudXJsc1t1cmxdID0gVVJMUmVz
dWx0cyh0aW1lLCAxLCB0aW1lICoqIDIpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWVhbihz
ZWxmKToKKyAgICAgICAgaWYgc2VsZi5jb3VudDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnN1
bSAvIGZsb2F0KHNlbGYuY291bnQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4g
MAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGdlb21ldHJpY19tZWFuKHNlbGYpOgorICAgICAg
ICBpZiBzZWxmLmNvdW50OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucHJvZHVjdCAqKiAoMS4w
IC8gc2VsZi5jb3VudCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAwCisKKyAg
ICBAcHJvcGVydHkKKyAgICBkZWYgbWVhbl9jb2VmX3ZhcmlhbmNlKHNlbGYpOgorICAgICAgICB0
b3RhbCA9IDAuMAorICAgICAgICBmb3IgXywgcmVzdWx0cyBpbiBzZWxmLnVybHMuaXRlbXMoKToK
KyAgICAgICAgICAgIHRvdGFsICs9IHJlc3VsdHMuY29lZl92YXJpYW5jZQorICAgICAgICBpZiBz
ZWxmLnVybHMgYW5kIGxlbihzZWxmLnVybHMpOgorICAgICAgICAgICAgcmV0dXJuIHRvdGFsIC8g
ZmxvYXQobGVuKHNlbGYudXJscykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4g
MC4wCisKKyAgICBkZWYgcHJpbnRfcmVzdWx0cyhzZWxmLCBzdWl0ZW5hbWU9Tm9uZSwgY29sZF9y
dW49RmFsc2UpOgorICAgICAgICBwcmludCgiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IikKKyAgICAgICAgaWYgbm90IHN1aXRlbmFtZToKKyAgICAgICAgICAgIHByaW50KCIiKQorICAg
ICAgICAgICAgcHJpbnQoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpCisgICAgICAg
ICAgICBwcmludCgiT1ZFUkFMTCBQTFQgUkVTVUxUUyBTVU1NQVJZOiIpCisgICAgICAgIGVsaWYg
Y29sZF9ydW46CisgICAgICAgICAgICBwcmludCgiQ29sZCBSdW4gUmVzdWx0cyBmb3Ige25hbWV9
OiIuZm9ybWF0KG5hbWU9c3VpdGVuYW1lKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBy
aW50KCJQTFQgUmVzdWx0cyBmb3Ige25hbWV9OiIuZm9ybWF0KG5hbWU9c3VpdGVuYW1lKSkKKyAg
ICAgICAgaWYgc3VpdGVuYW1lOgorICAgICAgICAgICAgc2VsZi5wcmludF91cmxfcmVzdWx0cygi
TUVBTiIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnByaW50X3VybF9yZXN1bHRz
KCJUT1RBTCBNRUFOIikKKyAgICAgICAgcHJpbnQoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSIpCisgICAgICAgIHByaW50KCJUT1RBTCBUSU1FOiB7dGltZX0iLmZvcm1hdCh0aW1lPXNl
bGYuX2Zvcm1hdF90aW1lKHNlbGYuc3VtKSkpCisgICAgICAgIHByaW50KCJUT1RBTCBVUkxTOiB7
dXJsc30iLmZvcm1hdCh1cmxzPXNlbGYuY291bnQpKQorICAgICAgICBpZiBzZWxmLnVybHMgYW5k
IGxlbihzZWxmLnVybHMpIGFuZCBzZWxmLnVybHMudmFsdWVzKClbMF0uY291bnQgPiAxOgorICAg
ICAgICAgICAgcHJpbnQoIkFWRVJBR0UgQ09FRkZJQ0lFTlQgT0YgVkFSSUFOQ0U6IHswOi4yZn0l
Ii5mb3JtYXQoc2VsZi5tZWFuX2NvZWZfdmFyaWFuY2UpKQorICAgICAgICBwcmludCgiQVZFUkFH
RSBUSU1FIFBFUiBQQUdFOiB7YXZnfSIuZm9ybWF0KGF2Zz1zZWxmLl9mb3JtYXRfdGltZShzZWxm
Lm1lYW4pKSkKKyAgICAgICAgcHJpbnQoIkdFT01FVFJJQyBNRUFOOiB7YXZnfSIuZm9ybWF0KGF2
Zz1zZWxmLl9mb3JtYXRfdGltZShzZWxmLmdlb21ldHJpY19tZWFuKSkpCisgICAgICAgIHByaW50
KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKQorICAgICAgICBwcmludCgiIikKKwor
ICAgIGRlZiBwcmludF91cmxfcmVzdWx0cyhzZWxmLCB1cmxSZXN1bHRzVHlwZSk6CisgICAgICAg
IHByaW50KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKQorICAgICAgICBwcmludCgi
e3R5cGV9IFVSTCBMT0FEIFRJTUVTOiIuZm9ybWF0KHR5cGU9dXJsUmVzdWx0c1R5cGUpKQorICAg
ICAgICBpZiBub3QgbGVuKHNlbGYudXJscyk6CisgICAgICAgICAgICBwcmludCgiIikKKyAgICAg
ICAgICAgIHJldHVybgorICAgICAgICBpZiBzZWxmLnVybHMudmFsdWVzKClbMF0uY291bnQgPiAx
OgorICAgICAgICAgICAgcmVzdWx0c19mb3JtYXRfc3RyID0gInt0aW1lfXt2YXJ9e3VybH0iCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHRzX2Zvcm1hdF9zdHIgPSAie3RpbWV9e3Vy
bH0iCisgICAgICAgIHByaW50KHJlc3VsdHNfZm9ybWF0X3N0ci5mb3JtYXQodGltZT0idGltZSAo
bXMpIi5sanVzdCgxMyksIHZhcj0iQ29WICglKSIubGp1c3QoOSksIHVybD0idXJsIikpCisgICAg
ICAgIGZvciAodXJsLCByZXN1bHRzKSBpbiBzZWxmLnVybHMuaXRlbXMoKToKKyAgICAgICAgICAg
IHJlc3VsdHMucHJpbnRfcmVzdWx0cyh1cmwsIHJlc3VsdHNfZm9ybWF0X3N0cikKKyAgICAgICAg
cHJpbnQoIiIpCisKKyAgICBkZWYgX2Zvcm1hdF90aW1lKHNlbGYsIHRpbWUpOgorICAgICAgICBy
ZXR1cm4gInt9IG1zIi5mb3JtYXQoInswOi4yZn0iLmZvcm1hdCh0aW1lICogMTAwMC4wKS5yc3Ry
aXAoJzAnKS5yc3RyaXAoJy4nKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
d2ViZHJpdmVyX3BsdC9zdWl0ZXMvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3dlYmRyaXZlcl9wbHQvc3VpdGVzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJk
MWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvd2ViZHJpdmVyX3BsdC9zdWl0ZXMvYXJhYmljLnN1aXRlIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9hcmFiaWMuc3VpdGUKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODE4ZWI3OWUyYjlkYjgzNmFmZmEyODFkOTczYjkwYWVmMzkxMzIwNwotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9zdWl0ZXMvYXJhYmljLnN1
aXRlCkBAIC0wLDAgKzEsMTQgQEAKK3sKKyAgICAidXJscyI6IFsKKyAgICAgICAgImh0dHA6Ly93
d3cua29vb3JhLmNvbSIsCisgICAgICAgICJodHRwOi8vd3d3Lmtvb29yYS5jb20vP249MCZvPXMw
IiwKKyAgICAgICAgImh0dHBzOi8vd3d3LmJheXQuY29tL2FyIiwKKyAgICAgICAgImh0dHBzOi8v
d3d3LmJheXQuY29tL2FyL2VtcGxveWVycyIsCisgICAgICAgICJodHRwOi8vd3d3LnlhbGxha29y
YS5jb20iLAorICAgICAgICAiaHR0cDovL3d3dy55YWxsYWtvcmEuY29tL2FyL3RvdXJzIiwKKyAg
ICAgICAgImh0dHA6Ly93d3cudW4ub3JnL2FyL2luZGV4Lmh0bWwiLAorICAgICAgICAiaHR0cDov
L3d3dy51bi5vcmcvYXIvc2VjdGlvbnMvcmVzb3VyY2VzL2RlbGVnYXRlcyIsCisgICAgICAgICJo
dHRwczovL3d3dy5lbWlyYXRlcy5jb20vYWUvYXJhYmljIiwKKyAgICAgICAgImh0dHBzOi8vd3d3
LmVtaXJhdGVzLmNvbS9hZS9hcmFiaWMvZGVzdGluYXRpb25zL2ZsaWdodHMtdG8tdW5pdGVkLXN0
YXRlcy5hc3B4IgorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
d2ViZHJpdmVyX3BsdC9zdWl0ZXMvY2prLnN1aXRlIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
ZWJkcml2ZXJfcGx0L3N1aXRlcy9jamsuc3VpdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIxMmE0NGJiODM2MDVk
NDgwYzk4ODRmMjlkMTQ1ODE2NDFjZDAxZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9zdWl0ZXMvY2prLnN1aXRlCkBAIC0wLDAgKzEsMTYg
QEAKK3sKKyAgICAidXJscyI6IFsKKyAgICAgICAgImh0dHBzOi8vd3d3LnNvZ291LmNvbSIsCisg
ICAgICAgICJodHRwczovL3d3dy5zb2dvdS5jb20vd2ViP3F1ZXJ5PXdlYmtpdCIsCisgICAgICAg
ICJodHRwczovL2NuLm55dGltZXMuY29tIiwKKyAgICAgICAgImh0dHBzOi8vY24ubnl0aW1lcy5j
b20vdXNhIiwKKyAgICAgICAgImh0dHBzOi8vd3d3LnlhaG9vLmNvLmpwIiwKKyAgICAgICAgImh0
dHBzOi8vaGVhZGxpbmVzLnlhaG9vLmNvLmpwL2hsP2E9MjAxNzA4MjYtMDAwMDAwMDItamlqX2Fm
cC1pbnQiLAorICAgICAgICAiaHR0cHM6Ly93d3cucmFrdXRlbi5jby5qcCIsCisgICAgICAgICJo
dHRwczovL2V2ZW50LnJha3V0ZW4uY28uanAiLAorICAgICAgICAiaHR0cDovL2tha2FrdS5jb20i
LAorICAgICAgICAiaHR0cDovL2tha2FrdS5jb20vcGMvbGNkLW1vbml0b3IiLAorICAgICAgICAi
aHR0cHM6Ly93d3cubmF2ZXIuY29tIiwKKyAgICAgICAgImh0dHBzOi8vc2VjdGlvbi5ibG9nLm5h
dmVyLmNvbSIKKyAgICBdCit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dl
YmRyaXZlcl9wbHQvc3VpdGVzL25ld3Muc3VpdGUgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dl
YmRyaXZlcl9wbHQvc3VpdGVzL25ld3Muc3VpdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjgxZjhiOThiMDRmYzRh
YzVlMDdhMjY2OTY4ZGE3M2UyYzc1MzQ4YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9zdWl0ZXMvbmV3cy5zdWl0ZQpAQCAtMCwwICsxLDE0
IEBACit7CisgICAgInVybHMiOiBbCisgICAgICAgICJodHRwczovL3d3dy5ueXRpbWVzLmNvbSIs
CisgICAgICAgICJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDE3LzA2LzI3L3RlY2hub2xvZ3kv
ZWR1Y2F0aW9uLXBhcnRvdmktY29tcHV0ZXItc2NpZW5jZS1jb2RpbmctYXBwbGUtbWljcm9zb2Z0
Lmh0bWwiLAorICAgICAgICAiaHR0cHM6Ly93d3cudGhlZ3VhcmRpYW4uY29tL3VzL3RlY2hub2xv
Z3kiLAorICAgICAgICAiaHR0cHM6Ly93d3cudGhlZ3VhcmRpYW4uY29tL3RlY2hub2xvZ3kvMjAx
Ny9qdW4vMjkvaXBob25lLWF0LTEwLWhvdy1pdC1jaGFuZ2VkLWV2ZXJ5dGhpbmciLAorICAgICAg
ICAiaHR0cDovL3d3dy5lc3BuLmNvbSIsCisgICAgICAgICJodHRwOi8vd3d3LmVzcG4uY29tL3Rl
bm5pcy9zdG9yeS9fL2lkLzIwNDY2NDg4L3JhZmFlbC1uYWRhbC1kb2VzLW5vdC13YW50LWZhY2Ut
cm9nZXItZmVkZXJlci11cy1vcGVuIiwKKyAgICAgICAgImh0dHBzOi8vbmV3cy5nb29nbGUuY29t
L25ld3MiLAorICAgICAgICAiaHR0cHM6Ly9uZXdzLmdvb2dsZS5jb20vbmV3cy9oZWFkbGluZXMv
c2VjdGlvbi90b3BpYy9XT1JMRCIsCisgICAgICAgICJodHRwczovL3d3dy55YWhvby5jb20iLAor
ICAgICAgICAiaHR0cHM6Ly93d3cueWFob28uY29tL3RlY2gvYXBvcy1wb2stbW9uLWFwb3MtY2Vs
ZWJyYXRlcy0xNTU1MjM4MTQuaHRtbCIKKyAgICBdCit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3NlYXJjaC5zdWl0ZSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9zdWl0ZXMvc2VhcmNoLnN1aXRlCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgxZGIxMTUyNWRkZGFjZTg1YTAxN2ZiNmEzMWQyNzIxYzA4ZWIxMzIKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3NlYXJj
aC5zdWl0ZQpAQCAtMCwwICsxLDE0IEBACit7CisgICAgInVybHMiOiBbCisgICAgICAgICJodHRw
czovL3d3dy5nb29nbGUuY29tIiwKKyAgICAgICAgImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2Vh
cmNoP3E9d2Via2l0IiwKKyAgICAgICAgImh0dHBzOi8vc2VhcmNoLnlhaG9vLmNvbSIsCisgICAg
ICAgICJodHRwczovL3NlYXJjaC55YWhvby5jb20vc2VhcmNoP3A9d2Via2l0IiwKKyAgICAgICAg
Imh0dHBzOi8vd3d3LnlhbmRleC5jb20iLAorICAgICAgICAiaHR0cHM6Ly93d3cueWFuZGV4LmNv
bS9zZWFyY2gvP3RleHQ9d2Via2l0IiwKKyAgICAgICAgImh0dHA6Ly93d3cuYmluZy5jb20iLAor
ICAgICAgICAiaHR0cDovL3d3dy5iaW5nLmNvbS9zZWFyY2g/cT13ZWJraXQiLAorICAgICAgICAi
aHR0cHM6Ly9kdWNrZHVja2dvLmNvbSIsCisgICAgICAgICJodHRwczovL2R1Y2tkdWNrZ28uY29t
Lz9xPXdlYmtpdCIKKyAgICBdCit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3Nob3BwaW5nLnN1aXRlIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9zaG9wcGluZy5zdWl0ZQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2I5
MGY2ZTg1YzY1OTY0MTgyZjdkZjA5YzI3YzA3YmE2ZDU4MmEyCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9zaG9wcGluZy5zdWl0
ZQpAQCAtMCwwICsxLDE0IEBACit7CisgICAgInVybHMiOiBbCisgICAgICAgICJodHRwczovL3d3
dy5hbWF6b24uY29tIiwKKyAgICAgICAgImh0dHBzOi8vd3d3LmFtYXpvbi5jb20vRXZlbi1GYXN0
ZXItV2ViLVNpdGVzLVBlcmZvcm1hbmNlL2RwLzA1OTY1MjIzMDQiLAorICAgICAgICAiaHR0cHM6
Ly93d3cuZWJheS5jb20iLAorICAgICAgICAiaHR0cHM6Ly93d3cuZWJheS5jb20vZGVhbHMiLAor
ICAgICAgICAiaHR0cHM6Ly93d3cuY3JhaWdzbGlzdC5vcmciLAorICAgICAgICAiaHR0cHM6Ly93
d3cuY3JhaWdzbGlzdC5vcmcvc2VhcmNoL3NzcyIsCisgICAgICAgICJodHRwczovL3d3dy53YWxt
YXJ0LmNvbSIsCisgICAgICAgICJodHRwczovL3d3dy53YWxtYXJ0LmNvbS9zZWFyY2gvP3F1ZXJ5
PWZvb2QiLAorICAgICAgICAiaHR0cHM6Ly93d3cuZXRzeS5jb20iLAorICAgICAgICAiaHR0cHM6
Ly93d3cuZXRzeS5jb20vYy9lbGVjdHJvbmljcy1hbmQtYWNjZXNzb3JpZXMiCisgICAgXQorfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9z
b2NpYWwuc3VpdGUgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVz
L3NvY2lhbC5zdWl0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTgyM2IyMmE3NzIxMTdmMzZjMjhhZGUzNWRjMmQ1
MjVlYWVmNmNmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJk
cml2ZXJfcGx0L3N1aXRlcy9zb2NpYWwuc3VpdGUKQEAgLTAsMCArMSwxNCBAQAoreworICAgICJ1
cmxzIjogWworICAgICAgICAiaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tIiwKKyAgICAgICAgImh0
dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9mYWNlYm9vayIsCisgICAgICAgICJodHRwczovL3d3dy50
dW1ibHIuY29tL3NlYXJjaC9hcHBsZSIsCisgICAgICAgICJodHRwOi8vcmVkaXNjb3ZlcmluZ2Vh
cnRoLnR1bWJsci5jb20iLAorICAgICAgICAiaHR0cHM6Ly90d2l0dGVyLmNvbS9zZWFyY2g/cT13
ZWJraXQiLAorICAgICAgICAiaHR0cHM6Ly90d2l0dGVyLmNvbS93ZWJraXQiLAorICAgICAgICAi
aHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9leHBsb3JlL3RhZ3Mvc2t5IiwKKyAgICAgICAgImh0
dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vYXBwbGUiLAorICAgICAgICAiaHR0cHM6Ly93d3cucmVk
ZGl0LmNvbSIsCisgICAgICAgICJodHRwczovL3d3dy5yZWRkaXQuY29tL3IvcHJvZ3JhbW1pbmci
CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJf
cGx0L3N1aXRlcy9zdWl0ZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3Bs
dC9zdWl0ZXMvc3VpdGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY1ZWQwYjlkNzk0ODgyYTAzZGVlNGI5ZDQ4
ODk0ZmFjNmZmZjAzNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
d2ViZHJpdmVyX3BsdC9zdWl0ZXMvc3VpdGUucHkKQEAgLTAsMCArMSwyMSBAQAoraW1wb3J0IGpz
b24KK2ltcG9ydCBvcworCisKK2NsYXNzIFN1aXRlKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHN1aXRlbmFtZSk6CisgICAgICAgIGZpbGVuYW1lID0gInswfS5zdWl0ZSIuZm9ybWF0
KHN1aXRlbmFtZSkKKyAgICAgICAgZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJu
YW1lKF9fZmlsZV9fKSwgZmlsZW5hbWUpCisgICAgICAgIHdpdGggb3BlbihmaWxlcGF0aCkgYXMg
c3VpdGVmaWxlOgorICAgICAgICAgICAgX3N1aXRlID0ganNvbi5sb2FkKHN1aXRlZmlsZSkKKyAg
ICAgICAgc2VsZi51cmxzID0gX3N1aXRlWyd1cmxzJ10KKyAgICAgICAgc2VsZi5uYW1lID0gc3Vp
dGVuYW1lCisgICAgICAgIHNlbGYuYXR0ZW1wdHMgPSAyCisKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgZ2V0X2F2YWlsYWJsZV9zdWl0ZXMoY2xzKToKKyAgICAgICAgc3VpdGVzZGlyID0gb3Mu
cGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgICAgICBzdWl0ZXNsaXN0ID0gW29zLnBhdGguc3Bs
aXRleHQoZilbMF0ubG93ZXIoKSBmb3IgZiBpbiBvcy5saXN0ZGlyKHN1aXRlc2RpcikgaWYgZi5l
bmRzd2l0aCgnLnN1aXRlJyldCisgICAgICAgIGlmIG5vdCBzdWl0ZXNsaXN0OgorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdDYW50IGZpbmQgYW55IC5zdWl0ZSBmaWxlcyBpbiBkaXJlY3Rv
cnkgJXMnICUgc3VpdGVzZGlyKQorICAgICAgICByZXR1cm4gc3VpdGVzbGlzdApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3VybHJlc3VsdHMucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvdXJscmVzdWx0cy5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lN2Y4ODMyYjAyYTFhMGEwNWI3N2ExYzM1OGI0ZWQ3ODZkNmU4N2U2Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3VybHJlc3VsdHMu
cHkKQEAgLTAsMCArMSwzNyBAQAorZnJvbSBtYXRoIGltcG9ydCBzcXJ0CisKKworY2xhc3MgVVJM
UmVzdWx0cyhvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvdGFsdGltZT0wLCBu
dW1fdXJscz0wLCBzdGRfZGV2PTAuMCk6CisgICAgICAgIHNlbGYudGltZSA9IHRvdGFsdGltZQor
ICAgICAgICBzZWxmLmNvdW50ID0gbnVtX3VybHMKKyAgICAgICAgc2VsZi5zdGRfZGV2X2NvdW50
ZXIgPSBzdGRfZGV2CisKKyAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIG5l
d190aW1lID0gc2VsZi50aW1lICsgb3RoZXIudGltZQorICAgICAgICBuZXdfY291bnQgPSBzZWxm
LmNvdW50ICsgb3RoZXIuY291bnQKKyAgICAgICAgbmV3X3N0ZF9kZXZfY291bnRlciA9IHNlbGYu
c3RkX2Rldl9jb3VudGVyICsgb3RoZXIuc3RkX2Rldl9jb3VudGVyCisgICAgICAgIHJldHVybiBV
UkxSZXN1bHRzKG5ld190aW1lLCBuZXdfY291bnQsIG5ld19zdGRfZGV2X2NvdW50ZXIpCisKKyAg
ICBAcHJvcGVydHkKKyAgICBkZWYgbWVhbihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jb3VudDoK
KyAgICAgICAgICAgIHJldHVybiBzZWxmLnRpbWUgLyBmbG9hdChzZWxmLmNvdW50KQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIDAKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBj
b2VmX3ZhcmlhbmNlKHNlbGYpOgorICAgICAgICBuID0gc2VsZi5jb3VudAorICAgICAgICBpZiBu
IDw9IDE6CisgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICBzdGRfZGV2ID0gc3FydCgoc2Vs
Zi5zdGRfZGV2X2NvdW50ZXIgLyBmbG9hdChuIC0gMSkpIC0gKG4gLyBmbG9hdChuIC0gMSkpICog
KHNlbGYubWVhbiAqKiAyKSkKKyAgICAgICAgcmV0dXJuIChzdGRfZGV2ICogMTAwLjApIC8gc2Vs
Zi5tZWFuCisKKyAgICBkZWYgcHJpbnRfcmVzdWx0cyhzZWxmLCB1cmwsIHJlc3VsdHNfZm9ybWF0
X3N0cik6CisgICAgICAgIHN0cl90aW1lID0gc2VsZi5fZm9ybWF0X3RpbWUoc2VsZi5tZWFuKQor
ICAgICAgICBwcmludChyZXN1bHRzX2Zvcm1hdF9zdHIuZm9ybWF0KHRpbWU9c3RyX3RpbWUubGp1
c3QoMTMpLCB2YXI9InswOi4yZn0lIi5mb3JtYXQoc2VsZi5jb2VmX3ZhcmlhbmNlKS5sanVzdCg5
KSwgdXJsPXVybCkpCisKKyAgICBkZWYgX2Zvcm1hdF90aW1lKHNlbGYsIHRpbWUpOgorICAgICAg
ICByZXR1cm4gInt9IG1zIi5mb3JtYXQoInswOi4yZn0iLmZvcm1hdCh0aW1lICogMTAwMC4wKS5y
c3RyaXAoJzAnKS5yc3RyaXAoJy4nKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320164</attachid>
            <date>2017-09-07 13:05:38 -0700</date>
            <delta_ts>2017-09-07 19:19:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176436-20170907130537.patch</filename>
            <type>text/plain</type>
            <size>24459</size>
            <attacher name="Matthew Stewart">matthew_r_stewart</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjU2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGIyMTdkYzMyMzU0NzI1OGY0NmUxYWMyMTc2YjYzMDdi
NjgxNzk0Zi4uZDY2OWM1NGU0Yjc0NDQ0NzU3NDFjYTRhNjZjOTQ5YTg5MzNjN2RhYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYw
IEBACiAyMDE3LTA5LTA1ICBNYXR0aGV3IFN0ZXdhcnQgIDxtYXR0aGV3X3Jfc3Rld2FydEBhcHBs
ZS5jb20+CiAKKyAgICAgICAgQWRkIExpdmUgUExUIGltcGxlbWVudGVkIHdpdGggV2ViRHJpdmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0MzYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEg
bmV3IFBMVCB0aGF0IHJ1bnMgb24gbGl2ZSB3ZWJzaXRlcy4KKworICAgICAgICAqIFNjcmlwdHMv
cnVuLXdlYmRyaXZlci1wbHQucHk6IEFkZGVkLgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAg
ICAgIChzdGFydCk6CisgICAgICAgIChtYWtlX3N1aXRlcyk6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvX19pbml0X18ucHk6IEFkZGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9saXZlcGx0LnB5OiBB
ZGRlZC4KKyAgICAgICAgKFBhZ2VMb2FkVGVzdCk6CisgICAgICAgIChQYWdlTG9hZFRlc3QuX19p
bml0X18pOgorICAgICAgICAoUGFnZUxvYWRUZXN0LnN0YXJ0KToKKyAgICAgICAgKFBhZ2VMb2Fk
VGVzdC5ydW5fc3VpdGUpOgorICAgICAgICAoUGFnZUxvYWRUZXN0Ll9nZXRfZHJpdmVyX2Zvcl9i
cm93c2VyKToKKyAgICAgICAgKFBhZ2VMb2FkVGVzdC5fc2V0dXBfYnJvd3Nlcl93aW5kb3cpOgor
ICAgICAgICAoUGFnZUxvYWRUZXN0LnJ1bl9vbmVfdGVzdCk6CisgICAgICAgIChQYWdlTG9hZFRl
c3QuZ2V0X3Jlc3VsdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3Bs
dC9wbHRyZXN1bHRzLnB5OiBBZGRlZC4KKyAgICAgICAgKFBMVFJlc3VsdHMpOgorICAgICAgICAo
UExUUmVzdWx0cy5fX2luaXRfXyk6CisgICAgICAgIChQTFRSZXN1bHRzLl9fYWRkX18pOgorICAg
ICAgICAoUExUUmVzdWx0cy5hZGRfdGltaW5nX3Jlc3VsdCk6CisgICAgICAgIChQTFRSZXN1bHRz
Lm1lYW4pOgorICAgICAgICAoUExUUmVzdWx0cy5nZW9tZXRyaWNfbWVhbik6CisgICAgICAgIChQ
TFRSZXN1bHRzLm1lYW5fY29lZl92YXJpYW5jZSk6CisgICAgICAgIChQTFRSZXN1bHRzLnByaW50
X3Jlc3VsdHMpOgorICAgICAgICAoUExUUmVzdWx0cy5wcmludF91cmxfcmVzdWx0cyk6CisgICAg
ICAgIChQTFRSZXN1bHRzLl9mb3JtYXRfdGltZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9fX2luaXRfXy5weTogQWRkZWQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9hcmFiaWMuc3VpdGU6IEFkZGVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9zdWl0ZXMvY2prLnN1aXRl
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVz
L25ld3Muc3VpdGU6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVy
X3BsdC9zdWl0ZXMvc2VhcmNoLnN1aXRlOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3Nob3BwaW5nLnN1aXRlOiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3NvY2lhbC5zdWl0ZTogQWRk
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9zdWl0
ZS5weTogQWRkZWQuCisgICAgICAgIChTdWl0ZSk6CisgICAgICAgIChTdWl0ZS5fX2luaXRfXyk6
CisgICAgICAgIChTdWl0ZS5nZXRfYXZhaWxhYmxlX3N1aXRlcyk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3VybHJlc3VsdHMucHk6IEFkZGVkLgorICAgICAgICAo
VVJMUmVzdWx0cyk6CisgICAgICAgIChVUkxSZXN1bHRzLl9faW5pdF9fKToKKyAgICAgICAgKFVS
TFJlc3VsdHMuX19hZGRfXyk6CisgICAgICAgIChVUkxSZXN1bHRzLm1lYW4pOgorICAgICAgICAo
VVJMUmVzdWx0cy5jb2VmX3ZhcmlhbmNlKToKKyAgICAgICAgKFVSTFJlc3VsdHMucHJpbnRfcmVz
dWx0cyk6CisgICAgICAgIChVUkxSZXN1bHRzLl9mb3JtYXRfdGltZSk6CisKKzIwMTctMDktMDUg
IE1hdHRoZXcgU3Rld2FydCAgPG1hdHRoZXdfcl9zdGV3YXJ0QGFwcGxlLmNvbT4KKwogICAgICAg
ICBCZW5jaG1hcmsgUnVubmVyIFdlYkRyaXZlciBtYXhpbWl6ZSB3aW5kb3cgb24gYnJvd3NlciBs
YXVuY2gKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTcwMgogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi13ZWJkcml2ZXItcGx0LnB5IGIv
VG9vbHMvU2NyaXB0cy9ydW4td2ViZHJpdmVyLXBsdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmM4MjRmZmRi
NTQ0MDFhYmNjY2YyOTdiNmRhMGEzZjAyYTJkN2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy9ydW4td2ViZHJpdmVyLXBsdC5weQpAQCAtMCwwICsxLDUyIEBACitpbXBvcnQgYXJn
cGFyc2UKK2Zyb20gd2Via2l0cHkud2ViZHJpdmVyX3BsdC5zdWl0ZXMuc3VpdGUgaW1wb3J0IFN1
aXRlCitmcm9tIHdlYmtpdHB5LndlYmRyaXZlcl9wbHQubGl2ZXBsdCBpbXBvcnQgUGFnZUxvYWRU
ZXN0CisKK2F2YWlsYWJsZV9icm93c2VycyA9IFsKKyAgICAic2FmYXJpIiwgImNocm9tZSIsICJm
aXJlZm94IiwgInN0cCIsCitdCisKKworZGVmIHBhcnNlX2FyZ3MoKToKKyAgICBwYXJzZXIgPSBh
cmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nQXV0b21hdGUgcnVubmluZyBQTFQg
d2l0aCBsaXZlIHdlYnNpdGVzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctaScsICctLWl0
ZXJhdGlvbnMnLCBkZXN0PSdpdGVyYXRpb25zJywgdHlwZT1pbnQsIGRlZmF1bHQ9MywgaGVscD0n
VGVzdCB0aGUgc3VpdGUgaSB0aW1lcyBpbiB0aGUgc2FtZSBicm93c2VyIHNlc3Npb24nKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoJy1uJywgJy0taW5zdGFuY2VzJywgZGVzdD0naW5zdGFuY2Vz
JywgdHlwZT1pbnQsIGRlZmF1bHQ9MywgaGVscD0nUmVzdGFydCB0aGUgYnJvd3NlciBuIHRpbWVz
IGZvciBlYWNoIHN1aXRlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdycsICctLXdhaXQn
LCBkZXN0PSd3YWl0JywgdHlwZT1mbG9hdCwgZGVmYXVsdD0zLjAsIGhlbHA9J1dhaXQgdGltZSBi
ZXR3ZWVuIHBhZ2VzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsICctLWJyb3dzZXIn
LCBkZXN0PSdicm93c2VyJywgZGVmYXVsdD0nc2FmYXJpJywgY2hvaWNlcz1hdmFpbGFibGVfYnJv
d3NlcnMpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zdWl0ZXMnLCBkZXN0PSdz
dWl0ZXMnLCBuYXJncz0nKycsIGhlbHA9J0xpc3Qgb25lIG9yIG1vcmUgc3VpdGVzIHRvIHJ1bi4g
SWYgdW5zcGVjaWZpZWQsIGRlZmF1bHRzIHRvIHJ1bm5pbmcgYWxsIHN1aXRlcycpCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgnLS13aWR0aCcsIGRlc3Q9J3dpZHRoJywgaGVscD0nU2V0IHRoZSBp
bm5lciB3aW5kb3cgd2lkdGgnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taGVpZ2h0Jywg
ZGVzdD0naGVpZ2h0JywgaGVscD0nU2V0IHRoZSBpbm5lciB3aW5kb3cgaGVpZ2h0JykKKworICAg
IGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICByZXR1cm4gYXJncworCisKK2RlZiBz
dGFydChhcmdzKToKKyAgICBzdWl0ZXMgPSBtYWtlX3N1aXRlcyhhcmdzLnN1aXRlcykKKyAgICBz
aXplID0gKGFyZ3Mud2lkdGgsIGFyZ3MuaGVpZ2h0KQorICAgIHBsdCA9IFBhZ2VMb2FkVGVzdChh
cmdzLml0ZXJhdGlvbnMsIGFyZ3MuaW5zdGFuY2VzLCBhcmdzLndhaXQsIGFyZ3MuYnJvd3Nlciwg
c3VpdGVzLCBzaXplKQorICAgIHBsdC5zdGFydCgpCisKKworZGVmIG1ha2Vfc3VpdGVzKHN1aXRl
c2xpc3QpOgorICAgIGF2YWlsYWJsZV9zdWl0ZXMgPSBTdWl0ZS5nZXRfYXZhaWxhYmxlX3N1aXRl
cygpCisgICAgc3VpdGVzID0gbGlzdCgpCisgICAgaWYgc3VpdGVzbGlzdDoKKyAgICAgICAgZm9y
IHN1aXRlbmFtZSBpbiBzdWl0ZXNsaXN0OgorICAgICAgICAgICAgaWYgc3VpdGVuYW1lLmxvd2Vy
KCkgbm90IGluIGF2YWlsYWJsZV9zdWl0ZXM6CisgICAgICAgICAgICAgICAgcHJpbnQoIlN1aXRl
IFwie31cIiBub3QgZm91bmQuIi5mb3JtYXQoc3VpdGVuYW1lKSkKKyAgICAgICAgICAgICAgICBx
dWl0KCkKKyAgICAgICAgICAgIHN1aXRlcy5hcHBlbmQoU3VpdGUoc3VpdGVuYW1lLmxvd2VyKCkp
KQorICAgIGVsc2U6CisgICAgICAgIGZvciBzdWl0ZW5hbWUgaW4gYXZhaWxhYmxlX3N1aXRlczoK
KyAgICAgICAgICAgIHN1aXRlcy5hcHBlbmQoU3VpdGUoc3VpdGVuYW1lKSkKKyAgICByZXR1cm4g
c3VpdGVzCisKKworZGVmIG1haW4oKToKKyAgICByZXR1cm4gc3RhcnQocGFyc2VfYXJncygpKQor
CisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvX19pbml0X18ucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFl
MjgzOTlmNWZkYTJkZmIxYjA0NDA1ZjRhM2I0ODk1ZjVmYWMxZQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9fX2luaXRfXy5weQpAQCAtMCww
ICsxIEBACitwYXNzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZl
cl9wbHQvbGl2ZXBsdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9s
aXZlcGx0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZWI2OWQ1Y2M1N2NjYTc1NTMyMWQ4MjlkMTU3MTg0Yzk2
MTFmNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZl
cl9wbHQvbGl2ZXBsdC5weQpAQCAtMCwwICsxLDE3MCBAQAoraW1wb3J0IHdlYmtpdHB5LnRoaXJk
cGFydHkuYXV0b2luc3RhbGxlZC5zZWxlbml1bQorZnJvbSBwbHRyZXN1bHRzIGltcG9ydCBQTFRS
ZXN1bHRzCitmcm9tIHNlbGVuaXVtIGltcG9ydCB3ZWJkcml2ZXIKK2Zyb20gdGltZSBpbXBvcnQg
c2xlZXAKK2Zyb20gd2Via2l0cHkuYmVuY2htYXJrX3J1bm5lci51dGlscyBpbXBvcnQgZ2V0X2Ry
aXZlcl9iaW5hcnlfcGF0aAorZnJvbSB3ZWJraXRweS5jb21tb24udGltZW91dF9jb250ZXh0IGlt
cG9ydCBUaW1lb3V0CisKK2Jyb3dzZXJfaGVpZ2h0X29mZnNldHMgPSB7CisgICAgJ3NhZmFyaSc6
IDc2LAorICAgICdjaHJvbWUnOiAwLAorICAgICdmaXJlZm94JzogMzcsCisgICAgJ3N0cCc6IDc2
LAorfQorCisKK2NsYXNzIFBhZ2VMb2FkVGVzdChvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGl0ZXJhdGlvbnMsIGluc3RhbmNlcywgd2FpdCwgYnJvd3Nlciwgc3VpdGVzLCBzaXpl
KToKKyAgICAgICAgcHJpbnQoIkNyZWF0aW5nIFBMVCB3aXRoIHBhcmFtZXRlcnM6IikKKyAgICAg
ICAgcHJpbnQoIml0ZXJhdGlvbnM6IHt9Ii5mb3JtYXQoaXRlcmF0aW9ucykpCisgICAgICAgIHBy
aW50KCJpbnN0YW5jZXM6IHt9Ii5mb3JtYXQoaW5zdGFuY2VzKSkKKyAgICAgICAgcHJpbnQoIndh
aXQ6IHt9cyIuZm9ybWF0KHdhaXQpKQorICAgICAgICBwcmludCgiYnJvd3Nlcjoge30iLmZvcm1h
dChicm93c2VyKSkKKyAgICAgICAgcHJpbnQoInN1aXRlczoge30iLmZvcm1hdChbcy5uYW1lIGZv
ciBzIGluIHN1aXRlc10pKQorICAgICAgICB3aWR0aCwgaGVpZ2h0ID0gc2l6ZQorICAgICAgICBp
ZiB3aWR0aDoKKyAgICAgICAgICAgIHByaW50KCJ3aWR0aDoge30iLmZvcm1hdCh3aWR0aCkpCisg
ICAgICAgIGlmIGhlaWdodDoKKyAgICAgICAgICAgIHByaW50KCJoZWlnaHQ6IHt9Ii5mb3JtYXQo
aGVpZ2h0KSkKKyAgICAgICAgcHJpbnQoIiIpCisgICAgICAgIHNlbGYuaXRlcmF0aW9ucyA9IGl0
ZXJhdGlvbnMKKyAgICAgICAgc2VsZi5pbnN0YW5jZXMgPSBpbnN0YW5jZXMKKyAgICAgICAgc2Vs
Zi53YWl0ID0gd2FpdAorICAgICAgICBzZWxmLmJyb3dzZXIgPSBicm93c2VyCisgICAgICAgIHNl
bGYuc3VpdGVzID0gc3VpdGVzCisgICAgICAgIHNlbGYuc2l6ZSA9IHNpemUKKworICAgIGRlZiBz
dGFydChzZWxmKToKKyAgICAgICAgdG90YWxfcmVzdWx0cyA9IFBMVFJlc3VsdHMoKQorICAgICAg
ICBzdWl0ZWlkID0gMAorICAgICAgICBmb3Igc3VpdGUgaW4gc2VsZi5zdWl0ZXM6CisgICAgICAg
ICAgICBzdWl0ZS5hdHRlbXB0cyAtPSAxCisgICAgICAgICAgICBzdWl0ZWlkICs9IDEKKyAgICAg
ICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKQorICAgICAgICAg
ICAgcHJpbnQoIlJ1bm5pbmcgc3VpdGUge2lkfSBvZiB7bnVtfToge25hbWV9Ii5mb3JtYXQoaWQ9
c3VpdGVpZCwgbnVtPWxlbihzZWxmLnN1aXRlcyksIG5hbWU9c3VpdGUubmFtZSkpCisgICAgICAg
ICAgICBwcmludCgiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIikKKyAgICAgICAgICAg
IHByaW50KCIiKQorICAgICAgICAgICAgdG90YWxfcmVzdWx0cyArPSBzZWxmLnJ1bl9zdWl0ZShz
dWl0ZSkKKyAgICAgICAgdG90YWxfcmVzdWx0cy5wcmludF9yZXN1bHRzKCkKKworICAgIGRlZiBy
dW5fc3VpdGUoc2VsZiwgc3VpdGUpOgorICAgICAgICBjb2xkX3J1bl9yZXN1bHRzID0gUExUUmVz
dWx0cygpCisgICAgICAgIHN1aXRlX3Jlc3VsdHMgPSBQTFRSZXN1bHRzKCkKKworICAgICAgICBm
b3IgaW5zdGFuY2UgaW4gcmFuZ2Uoc2VsZi5pbnN0YW5jZXMpOgorICAgICAgICAgICAgZHJpdmVy
ID0gc2VsZi5fZ2V0X2RyaXZlcl9mb3JfYnJvd3NlcihzZWxmLmJyb3dzZXIpCisgICAgICAgICAg
ICBzZWxmLl9zZXR1cF9icm93c2VyX3dpbmRvdyhkcml2ZXIpCisgICAgICAgICAgICBzbGVlcCg1
KQorICAgICAgICAgICAgZm9yIGl0ZXJhdGlvbiBpbiByYW5nZShzZWxmLml0ZXJhdGlvbnMgKyAx
KToKKyAgICAgICAgICAgICAgICBwcmludCgiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IikKKyAgICAgICAgICAgICAgICBpZiBpdGVyYXRpb24gPT0gMDoKKyAgICAgICAgICAgICAgICAg
ICAgcHJpbnQoIlJ1bm5pbmcgaXRlcm5hdGlvbiAlcyAoY29sZCBydW4pIiAlIGl0ZXJhdGlvbikK
KyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwcmludCgiUnVubmlu
ZyBpdGVybmF0aW9uICVzIiAlIGl0ZXJhdGlvbikKKyAgICAgICAgICAgICAgICBydW5fcmVzdWx0
cyA9IHNlbGYucnVuX29uZV90ZXN0KHN1aXRlLCBkcml2ZXIpCisgICAgICAgICAgICAgICAgaWYg
bm90IHJ1bl9yZXN1bHRzOgorICAgICAgICAgICAgICAgICAgICBpZiBzdWl0ZS5hdHRlbXB0cyA8
PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkZhaWxlZCB0byBmaW5pc2ggc3Vp
dGUge25hbWV9IGFmdGVyIHt4fSBhdHRlbXB0cy4gUmVzdWx0cyBhcmUgaW5jb21wbGV0ZS4iLmZv
cm1hdChuYW1lPXN1aXRlLm5hbWUsIHg9c3VpdGUubWF4X2F0dGVtcHRzKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHByaW50KCJFeGl0aW5nLi4uIikKKyAgICAgICAgICAgICAgICAgICAgICAg
IHF1aXQoKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAg
ICAgcHJpbnQoIkEgcGFnZSBmYWlsZWQgdG8gbG9hZC4gUmUtcXVldWluZyBzdWl0ZS4iKQorICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdWl0ZXMuYXBwZW5kKHN1aXRlKQorICAgICAgICAg
ICAgICAgICAgICAgICAgZHJpdmVyLnF1aXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFBMVFJlc3VsdHMoKQorICAgICAgICAgICAgICAgIHJ1bl9yZXN1bHRzLnByaW50X3VybF9y
ZXN1bHRzKCJJTkRJVklEVUFMIikKKyAgICAgICAgICAgICAgICBpZiBpdGVyYXRpb24gPT0gMDoK
KyAgICAgICAgICAgICAgICAgICAgY29sZF9ydW5fcmVzdWx0cyArPSBydW5fcmVzdWx0cworICAg
ICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHN1aXRlX3Jlc3VsdHMgKz0g
cnVuX3Jlc3VsdHMKKyAgICAgICAgICAgIGRyaXZlci5xdWl0KCkKKyAgICAgICAgY29sZF9ydW5f
cmVzdWx0cy5wcmludF9yZXN1bHRzKHN1aXRlLm5hbWUsIFRydWUpCisgICAgICAgIHN1aXRlX3Jl
c3VsdHMucHJpbnRfcmVzdWx0cyhzdWl0ZS5uYW1lKQorICAgICAgICByZXR1cm4gc3VpdGVfcmVz
dWx0cworCisgICAgZGVmIF9nZXRfZHJpdmVyX2Zvcl9icm93c2VyKHNlbGYsIGJyb3dzZXIpOgor
ICAgICAgICBkcml2ZXJfZXhlY3V0YWJsZSA9IGdldF9kcml2ZXJfYmluYXJ5X3BhdGgoYnJvd3Nl
cikKKyAgICAgICAgaWYgYnJvd3NlciA9PSAnc2FmYXJpJzoKKyAgICAgICAgICAgIHJldHVybiB3
ZWJkcml2ZXIuU2FmYXJpKCkKKyAgICAgICAgaWYgYnJvd3NlciA9PSAnY2hyb21lJzoKKyAgICAg
ICAgICAgIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNocm9tZS5vcHRpb25zIGltcG9ydCBPcHRp
b25zCisgICAgICAgICAgICBvcHRpb25zID0gT3B0aW9ucygpCisgICAgICAgICAgICBvcHRpb25z
LmFkZF9hcmd1bWVudCgiLS1kaXNhYmxlLXdlYi1zZWN1cml0eSIpCisgICAgICAgICAgICBvcHRp
b25zLmFkZF9hcmd1bWVudCgiLS1kaXNhYmxlLWV4dGVuc2lvbnMiKQorICAgICAgICAgICAgb3B0
aW9ucy5hZGRfYXJndW1lbnQoIi0tc3RhcnQtbWF4aW1pemVkIikKKyAgICAgICAgICAgIHJldHVy
biB3ZWJkcml2ZXIuQ2hyb21lKGNocm9tZV9vcHRpb25zPW9wdGlvbnMsIGV4ZWN1dGFibGVfcGF0
aD1kcml2ZXJfZXhlY3V0YWJsZSkKKyAgICAgICAgaWYgYnJvd3NlciA9PSAnZmlyZWZveCc6Cisg
ICAgICAgICAgICByZXR1cm4gd2ViZHJpdmVyLkZpcmVmb3goZXhlY3V0YWJsZV9wYXRoPWRyaXZl
cl9leGVjdXRhYmxlKQorICAgICAgICBpZiBicm93c2VyID09ICdzdHAnOgorICAgICAgICAgICAg
cmV0dXJuIHdlYmRyaXZlci5TYWZhcmkoZXhlY3V0YWJsZV9wYXRoPScvQXBwbGljYXRpb25zL1Nh
ZmFyaSBUZWNobm9sb2d5IFByZXZpZXcuYXBwL0NvbnRlbnRzL01hY09TL3NhZmFyaWRyaXZlcicp
CisKKyAgICBkZWYgX3NldHVwX2Jyb3dzZXJfd2luZG93KHNlbGYsIGRyaXZlcik6CisgICAgICAg
IGRyaXZlci5tYXhpbWl6ZV93aW5kb3coKQorICAgICAgICBzbGVlcCgxKQorICAgICAgICBjdXJy
ZW50X3NpemUgPSBkcml2ZXIuZ2V0X3dpbmRvd19zaXplKCkKKworICAgICAgICBuZXdfd2lkdGgs
IG5ld19oZWlnaHQgPSBzZWxmLnNpemUKKyAgICAgICAgaWYgbm90IG5ld193aWR0aDoKKyAgICAg
ICAgICAgIG5ld193aWR0aCA9IGRyaXZlci5leGVjdXRlX3NjcmlwdCgncmV0dXJuIHNjcmVlbi53
aWR0aDsnKQorICAgICAgICAgICAgcHJpbnQoInNldHRpbmcgd2lkdGggdG8ge30iLmZvcm1hdChu
ZXdfd2lkdGgpKQorICAgICAgICBpZiBub3QgbmV3X2hlaWdodDoKKyAgICAgICAgICAgIG5ld19o
ZWlnaHQgPSBjdXJyZW50X3NpemVbJ2hlaWdodCddIC0gYnJvd3Nlcl9oZWlnaHRfb2Zmc2V0c1tz
ZWxmLmJyb3dzZXJdCisgICAgICAgICAgICBwcmludCgic2V0dGluZyBoZWlnaHQgdG8ge30iLmZv
cm1hdChuZXdfaGVpZ2h0KSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBkcml2ZXIuc2V0
X3dpbmRvd19zaXplKHdpZHRoPW5ld193aWR0aCwgaGVpZ2h0PW5ld19oZWlnaHQpCisgICAgICAg
ICAgICBkcml2ZXIuc2V0X3dpbmRvd19wb3NpdGlvbih4PTAsIHk9MCkKKyAgICAgICAgZXhjZXB0
OgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHJ1bl9vbmVfdGVzdChzZWxmLCBzdWl0ZSwg
ZHJpdmVyKToKKyAgICAgICAgdGFicyA9IEZhbHNlCisgICAgICAgIGN1cnJlbnRUYWJJZHggPSAw
CisgICAgICAgIG1heFRhYnMgPSA1CisgICAgICAgIG1heFJldHJ5cyA9IDUKKyAgICAgICAgdGlt
ZW91dCA9IDMwCisKKyAgICAgICAgbG9jYWxfcmVzdWx0cyA9IFBMVFJlc3VsdHMoKQorCisgICAg
ICAgIGZvciB1cmwgaW4gc3VpdGUudXJsczoKKyAgICAgICAgICAgIGlmIHRhYnM6CisgICAgICAg
ICAgICAgICAgaWYgY3VycmVudFRhYklkeCA8IG1heFRhYnMgLSAxOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJPcGVuaW5nIG5ldyB0YWJzIGlzIG5vdCBz
dXBwb3J0ZWQgeWV0LiIpCisgICAgICAgICAgICAgICAgZHJpdmVyLnN3aXRjaF90b193aW5kb3co
ZHJpdmVyLndpbmRvd19oYW5kbGVzW2N1cnJlbnRUYWJJZHggJSBtYXhUYWJzXSkKKyAgICAgICAg
ICAgICAgICBjdXJyZW50VGFiSWR4ICs9IDEKKyAgICAgICAgICAgIHRlbXBXYWl0ID0gc2VsZi53
YWl0CisgICAgICAgICAgICBmb3IgYXR0ZW1wdCBpbiByYW5nZShtYXhSZXRyeXMpOgorICAgICAg
ICAgICAgICAgIGRyaXZlci5zZXRfcGFnZV9sb2FkX3RpbWVvdXQodGltZW91dCkKKyAgICAgICAg
ICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGRyaXZlci5nZXQodXJsKQorICAgICAg
ICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoInt1cmx9IHRpbWVk
IG91dCBhZnRlciB7dGltZX0gc2Vjb25kcy4iLmZvcm1hdCh1cmw9dXJsLCB0aW1lPXRpbWVvdXQp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAgICAgc2xl
ZXAodGVtcFdhaXQpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5nZXRfcmVzdWx0cyhkcml2ZXIs
IGxvY2FsX3Jlc3VsdHMsIHVybCk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAg
ICAgICAgICAgICBwcmludCgiQ291bGQgbm90IGdldCByZXN1bHRzIGZvciB7dXJsfS4gUmV0cnlp
bmcuLi4iLmZvcm1hdCh1cmw9dXJsKSkKKyAgICAgICAgICAgICAgICB0ZW1wV2FpdCArPSAwLjUK
KyAgICAgICAgICAgICAgICBpZiBhdHRlbXB0ID09IG1heFJldHJ5cyAtIDE6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBsb2NhbF9yZXN1bHRzCisKKyAg
ICBkZWYgZ2V0X3Jlc3VsdHMoc2VsZiwgZHJpdmVyLCByZXN1bHRzLCB1cmwpOgorICAgICAgICBu
dF9yZXN1bHRzID0gZHJpdmVyLmV4ZWN1dGVfc2NyaXB0KCdyZXR1cm4gcGVyZm9ybWFuY2UuZ2V0
RW50cmllc0J5VHlwZSgibmF2aWdhdGlvbiIpWzBdJykgICMgbmF2aWdhdGlvbiB0aW1pbmcgMgor
ICAgICAgICBpZiBub3QgbnRfcmVzdWx0czoKKyAgICAgICAgICAgIG50X3Jlc3VsdHMgPSBkcml2
ZXIuZXhlY3V0ZV9zY3JpcHQoJ3JldHVybiBwZXJmb3JtYW5jZS50aW1pbmcnKSAgIyBuYXZpZ2F0
aW9uIHRpbWluZyAxCisgICAgICAgICAgICBzdGFydCA9IG50X3Jlc3VsdHNbJ25hdmlnYXRpb25T
dGFydCddCisgICAgICAgICAgICBlbmQgPSBudF9yZXN1bHRzWydsb2FkRXZlbnRFbmQnXQorICAg
ICAgICAgICAgaWYgc3RhcnQgPT0gMCBvciBlbmQgPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN0YXJ0ID0gbnRfcmVzdWx0c1sn
c3RhcnRUaW1lJ10KKyAgICAgICAgICAgIGVuZCA9IG50X3Jlc3VsdHNbJ2xvYWRFdmVudEVuZCdd
CisgICAgICAgICAgICBpZiBlbmQgPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KworICAgICAgICByZXN1bHRzLmFkZF90aW1pbmdfcmVzdWx0KGVuZCAtIHN0YXJ0LCB1cmwpCisg
ICAgICAgIHJldHVybiBUcnVlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dl
YmRyaXZlcl9wbHQvcGx0cmVzdWx0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvd2ViZHJp
dmVyX3BsdC9wbHRyZXN1bHRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1MjUyY2I5NjUzNzY2ZWUxMjc4N2Yw
MTc0MDBlMGRhYzE5MDRkMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3dlYmRyaXZlcl9wbHQvcGx0cmVzdWx0cy5weQpAQCAtMCwwICsxLDEwMCBAQAorZnJvbSBj
b2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKK2Zyb20gdXJscmVzdWx0cyBpbXBvcnQgVVJM
UmVzdWx0cworCisKK2NsYXNzIFBMVFJlc3VsdHMob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwcm9kdWN0PTEsIHRvdGFsc3VtPTAsIG51bV91cmxzPTAsIHVybHM9Tm9uZSk6Cisg
ICAgICAgIHNlbGYucHJvZHVjdCA9IHByb2R1Y3QKKyAgICAgICAgc2VsZi5zdW0gPSB0b3RhbHN1
bQorICAgICAgICBzZWxmLmNvdW50ID0gbnVtX3VybHMKKyAgICAgICAgaWYgdXJscyBpcyBOb25l
OgorICAgICAgICAgICAgdXJscyA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgc2VsZi51cmxzID0g
dXJscworCisgICAgZGVmIF9fYWRkX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBuZXdfcHJvZHVj
dCA9IHNlbGYucHJvZHVjdCAqIG90aGVyLnByb2R1Y3QKKyAgICAgICAgbmV3X3N1bSA9IHNlbGYu
c3VtICsgb3RoZXIuc3VtCisgICAgICAgIG5ld19jb3VudCA9IHNlbGYuY291bnQgKyBvdGhlci5j
b3VudAorICAgICAgICBuZXdfdXJscyA9IE9yZGVyZWREaWN0KHNlbGYudXJscykKKyAgICAgICAg
Zm9yICh1cmwsIHJlc3VsdHMpIGluIG90aGVyLnVybHMuaXRlbXMoKToKKyAgICAgICAgICAgIGlm
IHVybCBub3QgaW4gc2VsZi51cmxzOgorICAgICAgICAgICAgICAgIG5ld191cmxzW3VybF0gPSBV
UkxSZXN1bHRzKCkKKyAgICAgICAgICAgIG5ld191cmxzW3VybF0gKz0gcmVzdWx0cworICAgICAg
ICByZXR1cm4gUExUUmVzdWx0cyhuZXdfcHJvZHVjdCwgbmV3X3N1bSwgbmV3X2NvdW50LCBuZXdf
dXJscykKKworICAgIGRlZiBhZGRfdGltaW5nX3Jlc3VsdChzZWxmLCB0aW1lLCB1cmwpOgorICAg
ICAgICB0aW1lIC89IDEwMDAuMAorICAgICAgICBzZWxmLnByb2R1Y3QgKj0gdGltZQorICAgICAg
ICBzZWxmLnN1bSArPSB0aW1lCisgICAgICAgIHNlbGYuY291bnQgKz0gMQorICAgICAgICBpZiB1
cmwgaW4gc2VsZi51cmxzOgorICAgICAgICAgICAgc2VsZi51cmxzW3VybF0gKz0gVVJMUmVzdWx0
cyh0aW1lLCAxLCB0aW1lICoqIDIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnVy
bHNbdXJsXSA9IFVSTFJlc3VsdHModGltZSwgMSwgdGltZSAqKiAyKQorCisgICAgQHByb3BlcnR5
CisgICAgZGVmIG1lYW4oc2VsZik6CisgICAgICAgIGlmIHNlbGYuY291bnQ6CisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5zdW0gLyBmbG9hdChzZWxmLmNvdW50KQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgcmV0dXJuIDAKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBnZW9tZXRyaWNfbWVh
bihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jb3VudDoKKyAgICAgICAgICAgIHJldHVybiBzZWxm
LnByb2R1Y3QgKiogKDEuMCAvIHNlbGYuY291bnQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICByZXR1cm4gMAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1lYW5fY29lZl92YXJpYW5jZShz
ZWxmKToKKyAgICAgICAgdG90YWwgPSAwLjAKKyAgICAgICAgZm9yIF8sIHJlc3VsdHMgaW4gc2Vs
Zi51cmxzLml0ZW1zKCk6CisgICAgICAgICAgICB0b3RhbCArPSByZXN1bHRzLmNvZWZfdmFyaWFu
Y2UKKyAgICAgICAgaWYgc2VsZi51cmxzIGFuZCBsZW4oc2VsZi51cmxzKToKKyAgICAgICAgICAg
IHJldHVybiB0b3RhbCAvIGZsb2F0KGxlbihzZWxmLnVybHMpKQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgcmV0dXJuIDAuMAorCisgICAgZGVmIHByaW50X3Jlc3VsdHMoc2VsZiwgc3VpdGVu
YW1lPU5vbmUsIGNvbGRfcnVuPUZhbHNlKToKKyAgICAgICAgcHJpbnQoIi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSIpCisgICAgICAgIGlmIG5vdCBzdWl0ZW5hbWU6CisgICAgICAgICAg
ICBwcmludCgiIikKKyAgICAgICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0iKQorICAgICAgICAgICAgcHJpbnQoIk9WRVJBTEwgUExUIFJFU1VMVFMgU1VNTUFSWToi
KQorICAgICAgICBlbGlmIGNvbGRfcnVuOgorICAgICAgICAgICAgcHJpbnQoIkNvbGQgUnVuIFJl
c3VsdHMgZm9yIHtuYW1lfToiLmZvcm1hdChuYW1lPXN1aXRlbmFtZSkpCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBwcmludCgiUExUIFJlc3VsdHMgZm9yIHtuYW1lfToiLmZvcm1hdChuYW1l
PXN1aXRlbmFtZSkpCisgICAgICAgIGlmIHN1aXRlbmFtZToKKyAgICAgICAgICAgIHNlbGYucHJp
bnRfdXJsX3Jlc3VsdHMoIk1FQU4iKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5w
cmludF91cmxfcmVzdWx0cygiVE9UQUwgTUVBTiIpCisgICAgICAgIHByaW50KCItLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0iKQorICAgICAgICBwcmludCgiVE9UQUwgVElNRToge3RpbWV9
Ii5mb3JtYXQodGltZT1zZWxmLl9mb3JtYXRfdGltZShzZWxmLnN1bSkpKQorICAgICAgICBwcmlu
dCgiVE9UQUwgVVJMUzoge3VybHN9Ii5mb3JtYXQodXJscz1zZWxmLmNvdW50KSkKKyAgICAgICAg
aWYgc2VsZi51cmxzIGFuZCBsZW4oc2VsZi51cmxzKSBhbmQgc2VsZi51cmxzLnZhbHVlcygpWzBd
LmNvdW50ID4gMToKKyAgICAgICAgICAgIHByaW50KCJBVkVSQUdFIENPRUZGSUNJRU5UIE9GIFZB
UklBTkNFOiB7MDouMmZ9JSIuZm9ybWF0KHNlbGYubWVhbl9jb2VmX3ZhcmlhbmNlKSkKKyAgICAg
ICAgcHJpbnQoIkFWRVJBR0UgVElNRSBQRVIgUEFHRToge2F2Z30iLmZvcm1hdChhdmc9c2VsZi5f
Zm9ybWF0X3RpbWUoc2VsZi5tZWFuKSkpCisgICAgICAgIHByaW50KCJHRU9NRVRSSUMgTUVBTjog
e2F2Z30iLmZvcm1hdChhdmc9c2VsZi5fZm9ybWF0X3RpbWUoc2VsZi5nZW9tZXRyaWNfbWVhbikp
KQorICAgICAgICBwcmludCgiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIikKKyAgICAg
ICAgcHJpbnQoIiIpCisKKyAgICBkZWYgcHJpbnRfdXJsX3Jlc3VsdHMoc2VsZiwgdXJsUmVzdWx0
c1R5cGUpOgorICAgICAgICBwcmludCgiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIikK
KyAgICAgICAgcHJpbnQoInt0eXBlfSBVUkwgTE9BRCBUSU1FUzoiLmZvcm1hdCh0eXBlPXVybFJl
c3VsdHNUeXBlKSkKKyAgICAgICAgaWYgbm90IGxlbihzZWxmLnVybHMpOgorICAgICAgICAgICAg
cHJpbnQoIiIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgc2VsZi51cmxzLnZhbHVl
cygpWzBdLmNvdW50ID4gMToKKyAgICAgICAgICAgIHJlc3VsdHNfZm9ybWF0X3N0ciA9ICJ7dGlt
ZX17dmFyfXt1cmx9IgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0c19mb3JtYXRf
c3RyID0gInt0aW1lfXt1cmx9IgorICAgICAgICBwcmludChyZXN1bHRzX2Zvcm1hdF9zdHIuZm9y
bWF0KHRpbWU9InRpbWUgKG1zKSIubGp1c3QoMTMpLCB2YXI9IkNvViAoJSkiLmxqdXN0KDkpLCB1
cmw9InVybCIpKQorICAgICAgICBmb3IgKHVybCwgcmVzdWx0cykgaW4gc2VsZi51cmxzLml0ZW1z
KCk6CisgICAgICAgICAgICByZXN1bHRzLnByaW50X3Jlc3VsdHModXJsLCByZXN1bHRzX2Zvcm1h
dF9zdHIpCisgICAgICAgIHByaW50KCIiKQorCisgICAgZGVmIF9mb3JtYXRfdGltZShzZWxmLCB0
aW1lKToKKyAgICAgICAgcmV0dXJuICJ7fSBtcyIuZm9ybWF0KCJ7MDouMmZ9Ii5mb3JtYXQodGlt
ZSAqIDEwMDAuMCkucnN0cmlwKCcwJykucnN0cmlwKCcuJykpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL19faW5pdF9fLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9fX2luaXRfXy5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yYWUyODM5OWY1ZmRhMmRmYjFiMDQ0MDVmNGEzYjQ4OTVmNWZhYzFlCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9fX2lu
aXRfXy5weQpAQCAtMCwwICsxIEBACitwYXNzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL2FyYWJpYy5zdWl0ZSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvd2ViZHJpdmVyX3BsdC9zdWl0ZXMvYXJhYmljLnN1aXRlCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgx
OGViNzllMmI5ZGI4MzZhZmZhMjgxZDk3M2I5MGFlZjM5MTMyMDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL2FyYWJpYy5zdWl0
ZQpAQCAtMCwwICsxLDE0IEBACit7CisgICAgInVybHMiOiBbCisgICAgICAgICJodHRwOi8vd3d3
Lmtvb29yYS5jb20iLAorICAgICAgICAiaHR0cDovL3d3dy5rb29vcmEuY29tLz9uPTAmbz1zMCIs
CisgICAgICAgICJodHRwczovL3d3dy5iYXl0LmNvbS9hciIsCisgICAgICAgICJodHRwczovL3d3
dy5iYXl0LmNvbS9hci9lbXBsb3llcnMiLAorICAgICAgICAiaHR0cDovL3d3dy55YWxsYWtvcmEu
Y29tIiwKKyAgICAgICAgImh0dHA6Ly93d3cueWFsbGFrb3JhLmNvbS9hci90b3VycyIsCisgICAg
ICAgICJodHRwOi8vd3d3LnVuLm9yZy9hci9pbmRleC5odG1sIiwKKyAgICAgICAgImh0dHA6Ly93
d3cudW4ub3JnL2FyL3NlY3Rpb25zL3Jlc291cmNlcy9kZWxlZ2F0ZXMiLAorICAgICAgICAiaHR0
cHM6Ly93d3cuZW1pcmF0ZXMuY29tL2FlL2FyYWJpYyIsCisgICAgICAgICJodHRwczovL3d3dy5l
bWlyYXRlcy5jb20vYWUvYXJhYmljL2Rlc3RpbmF0aW9ucy9mbGlnaHRzLXRvLXVuaXRlZC1zdGF0
ZXMuYXNweCIKKyAgICBdCit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dl
YmRyaXZlcl9wbHQvc3VpdGVzL2Nqay5zdWl0ZSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvd2Vi
ZHJpdmVyX3BsdC9zdWl0ZXMvY2prLnN1aXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4YjhkOGFhNzQwYjA4YmVk
MjlmOGZjZjNiNWFhMzBhZDdmMGJjMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL2Nqay5zdWl0ZQpAQCAtMCwwICsxLDE2IEBA
Cit7CisgICAgInVybHMiOiBbCisgICAgICAgICJodHRwczovL3d3dy5zb2dvdS5jb20iLAorICAg
ICAgICAiaHR0cHM6Ly93d3cuc29nb3UuY29tL3dlYj9xdWVyeT13ZWJraXQiLAorICAgICAgICAi
aHR0cHM6Ly9jbi5ueXRpbWVzLmNvbSIsCisgICAgICAgICJodHRwczovL2NuLm55dGltZXMuY29t
L3VzYSIsCisgICAgICAgICJodHRwczovL3d3dy55YWhvby5jby5qcCIsCisgICAgICAgICJodHRw
czovL25ld3MueWFob28uY28uanAvcGlja3VwLzYyNTI2NzIiLAorICAgICAgICAiaHR0cHM6Ly93
d3cucmFrdXRlbi5jby5qcCIsCisgICAgICAgICJodHRwczovL2V2ZW50LnJha3V0ZW4uY28uanAi
LAorICAgICAgICAiaHR0cDovL2tha2FrdS5jb20iLAorICAgICAgICAiaHR0cDovL2tha2FrdS5j
b20vcGMvbGNkLW1vbml0b3IiLAorICAgICAgICAiaHR0cHM6Ly93d3cubmF2ZXIuY29tIiwKKyAg
ICAgICAgImh0dHBzOi8vc2VjdGlvbi5ibG9nLm5hdmVyLmNvbSIKKyAgICBdCit9CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL25ld3Muc3Vp
dGUgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL25ld3Muc3Vp
dGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjgxZjhiOThiMDRmYzRhYzVlMDdhMjY2OTY4ZGE3M2UyYzc1MzQ4Ywot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9z
dWl0ZXMvbmV3cy5zdWl0ZQpAQCAtMCwwICsxLDE0IEBACit7CisgICAgInVybHMiOiBbCisgICAg
ICAgICJodHRwczovL3d3dy5ueXRpbWVzLmNvbSIsCisgICAgICAgICJodHRwczovL3d3dy5ueXRp
bWVzLmNvbS8yMDE3LzA2LzI3L3RlY2hub2xvZ3kvZWR1Y2F0aW9uLXBhcnRvdmktY29tcHV0ZXIt
c2NpZW5jZS1jb2RpbmctYXBwbGUtbWljcm9zb2Z0Lmh0bWwiLAorICAgICAgICAiaHR0cHM6Ly93
d3cudGhlZ3VhcmRpYW4uY29tL3VzL3RlY2hub2xvZ3kiLAorICAgICAgICAiaHR0cHM6Ly93d3cu
dGhlZ3VhcmRpYW4uY29tL3RlY2hub2xvZ3kvMjAxNy9qdW4vMjkvaXBob25lLWF0LTEwLWhvdy1p
dC1jaGFuZ2VkLWV2ZXJ5dGhpbmciLAorICAgICAgICAiaHR0cDovL3d3dy5lc3BuLmNvbSIsCisg
ICAgICAgICJodHRwOi8vd3d3LmVzcG4uY29tL3Rlbm5pcy9zdG9yeS9fL2lkLzIwNDY2NDg4L3Jh
ZmFlbC1uYWRhbC1kb2VzLW5vdC13YW50LWZhY2Utcm9nZXItZmVkZXJlci11cy1vcGVuIiwKKyAg
ICAgICAgImh0dHBzOi8vbmV3cy5nb29nbGUuY29tL25ld3MiLAorICAgICAgICAiaHR0cHM6Ly9u
ZXdzLmdvb2dsZS5jb20vbmV3cy9oZWFkbGluZXMvc2VjdGlvbi90b3BpYy9XT1JMRCIsCisgICAg
ICAgICJodHRwczovL3d3dy55YWhvby5jb20iLAorICAgICAgICAiaHR0cHM6Ly93d3cueWFob28u
Y29tL3RlY2gvYXBvcy1wb2stbW9uLWFwb3MtY2VsZWJyYXRlcy0xNTU1MjM4MTQuaHRtbCIKKyAg
ICBdCit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQv
c3VpdGVzL3NlYXJjaC5zdWl0ZSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3Bs
dC9zdWl0ZXMvc2VhcmNoLnN1aXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZGIxMTUyNWRkZGFjZTg1YTAxN2Zi
NmEzMWQyNzIxYzA4ZWIxMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3NlYXJjaC5zdWl0ZQpAQCAtMCwwICsxLDE0IEBACit7
CisgICAgInVybHMiOiBbCisgICAgICAgICJodHRwczovL3d3dy5nb29nbGUuY29tIiwKKyAgICAg
ICAgImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9d2Via2l0IiwKKyAgICAgICAgImh0
dHBzOi8vc2VhcmNoLnlhaG9vLmNvbSIsCisgICAgICAgICJodHRwczovL3NlYXJjaC55YWhvby5j
b20vc2VhcmNoP3A9d2Via2l0IiwKKyAgICAgICAgImh0dHBzOi8vd3d3LnlhbmRleC5jb20iLAor
ICAgICAgICAiaHR0cHM6Ly93d3cueWFuZGV4LmNvbS9zZWFyY2gvP3RleHQ9d2Via2l0IiwKKyAg
ICAgICAgImh0dHA6Ly93d3cuYmluZy5jb20iLAorICAgICAgICAiaHR0cDovL3d3dy5iaW5nLmNv
bS9zZWFyY2g/cT13ZWJraXQiLAorICAgICAgICAiaHR0cHM6Ly9kdWNrZHVja2dvLmNvbSIsCisg
ICAgICAgICJodHRwczovL2R1Y2tkdWNrZ28uY29tLz9xPXdlYmtpdCIKKyAgICBdCit9CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3Nob3Bw
aW5nLnN1aXRlIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9z
aG9wcGluZy5zdWl0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2I5MGY2ZTg1YzY1OTY0MTgyZjdkZjA5YzI3YzA3
YmE2ZDU4MmEyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJk
cml2ZXJfcGx0L3N1aXRlcy9zaG9wcGluZy5zdWl0ZQpAQCAtMCwwICsxLDE0IEBACit7CisgICAg
InVybHMiOiBbCisgICAgICAgICJodHRwczovL3d3dy5hbWF6b24uY29tIiwKKyAgICAgICAgImh0
dHBzOi8vd3d3LmFtYXpvbi5jb20vRXZlbi1GYXN0ZXItV2ViLVNpdGVzLVBlcmZvcm1hbmNlL2Rw
LzA1OTY1MjIzMDQiLAorICAgICAgICAiaHR0cHM6Ly93d3cuZWJheS5jb20iLAorICAgICAgICAi
aHR0cHM6Ly93d3cuZWJheS5jb20vZGVhbHMiLAorICAgICAgICAiaHR0cHM6Ly93d3cuY3JhaWdz
bGlzdC5vcmciLAorICAgICAgICAiaHR0cHM6Ly93d3cuY3JhaWdzbGlzdC5vcmcvc2VhcmNoL3Nz
cyIsCisgICAgICAgICJodHRwczovL3d3dy53YWxtYXJ0LmNvbSIsCisgICAgICAgICJodHRwczov
L3d3dy53YWxtYXJ0LmNvbS9zZWFyY2gvP3F1ZXJ5PWZvb2QiLAorICAgICAgICAiaHR0cHM6Ly93
d3cuZXRzeS5jb20iLAorICAgICAgICAiaHR0cHM6Ly93d3cuZXRzeS5jb20vYy9lbGVjdHJvbmlj
cy1hbmQtYWNjZXNzb3JpZXMiCisgICAgXQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9zb2NpYWwuc3VpdGUgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3NvY2lhbC5zdWl0ZQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NzZmMDcwN2M3OTU4OTlkYWVmMDY0OTMwODY5NGM4ZTFiNmZiYWFjCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9zb2NpYWwuc3Vp
dGUKQEAgLTAsMCArMSwxNiBAQAoreworICAgICJ1cmxzIjogWworICAgICAgICAiaHR0cHM6Ly93
d3cuZmFjZWJvb2suY29tIiwKKyAgICAgICAgImh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9mYWNl
Ym9vayIsCisgICAgICAgICJodHRwczovL3d3dy50dW1ibHIuY29tL3NlYXJjaC9hcHBsZSIsCisg
ICAgICAgICJodHRwOi8vcmVkaXNjb3ZlcmluZ2VhcnRoLnR1bWJsci5jb20iLAorICAgICAgICAi
aHR0cHM6Ly90d2l0dGVyLmNvbS9zZWFyY2g/cT13ZWJraXQiLAorICAgICAgICAiaHR0cHM6Ly90
d2l0dGVyLmNvbS93ZWJraXQiLAorICAgICAgICAiaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9l
eHBsb3JlL3RhZ3Mvc2t5IiwKKyAgICAgICAgImh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vYXBw
bGUiLAorICAgICAgICAiaHR0cHM6Ly93d3cucmVkZGl0LmNvbSIsCisgICAgICAgICJodHRwczov
L3d3dy5yZWRkaXQuY29tL3IvcHJvZ3JhbW1pbmciLAorICAgICAgICAiaHR0cHM6Ly93d3cueW91
dHViZS5jb20iLAorICAgICAgICAiaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1RNmRz
UnBWeXlXcyIKKyAgICBdCit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dl
YmRyaXZlcl9wbHQvc3VpdGVzL3N1aXRlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJk
cml2ZXJfcGx0L3N1aXRlcy9zdWl0ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjdjZWJiZjNlMjY3YzJhMTJm
OTA1NmZhNDBhMmU1MTY2MWVmOTAzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9zdWl0ZS5weQpAQCAtMCwwICsxLDIyIEBACitp
bXBvcnQganNvbgoraW1wb3J0IG9zCisKKworY2xhc3MgU3VpdGUob2JqZWN0KToKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgc3VpdGVuYW1lKToKKyAgICAgICAgZmlsZW5hbWUgPSAiezB9LnN1aXRl
Ii5mb3JtYXQoc3VpdGVuYW1lKQorICAgICAgICBmaWxlcGF0aCA9IG9zLnBhdGguam9pbihvcy5w
YXRoLmRpcm5hbWUoX19maWxlX18pLCBmaWxlbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVw
YXRoKSBhcyBzdWl0ZWZpbGU6CisgICAgICAgICAgICBfc3VpdGUgPSBqc29uLmxvYWQoc3VpdGVm
aWxlKQorICAgICAgICBzZWxmLnVybHMgPSBfc3VpdGVbJ3VybHMnXQorICAgICAgICBzZWxmLm5h
bWUgPSBzdWl0ZW5hbWUKKyAgICAgICAgc2VsZi5hdHRlbXB0cyA9IDIKKyAgICAgICAgc2VsZi5t
YXhfYXR0ZW1wdHMgPSAyCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZ2V0X2F2YWlsYWJs
ZV9zdWl0ZXMoY2xzKToKKyAgICAgICAgc3VpdGVzZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKQorICAgICAgICBzdWl0ZXNsaXN0ID0gW29zLnBhdGguc3BsaXRleHQoZilbMF0ubG93ZXIo
KSBmb3IgZiBpbiBvcy5saXN0ZGlyKHN1aXRlc2RpcikgaWYgZi5lbmRzd2l0aCgnLnN1aXRlJyld
CisgICAgICAgIGlmIG5vdCBzdWl0ZXNsaXN0OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdDYW50IGZpbmQgYW55IC5zdWl0ZSBmaWxlcyBpbiBkaXJlY3RvcnkgJXMnICUgc3VpdGVzZGly
KQorICAgICAgICByZXR1cm4gc3VpdGVzbGlzdApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93ZWJkcml2ZXJfcGx0L3VybHJlc3VsdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3dlYmRyaXZlcl9wbHQvdXJscmVzdWx0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2Y4ODMyYjAyYTFh
MGEwNWI3N2ExYzM1OGI0ZWQ3ODZkNmU4N2U2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3VybHJlc3VsdHMucHkKQEAgLTAsMCArMSwzNyBA
QAorZnJvbSBtYXRoIGltcG9ydCBzcXJ0CisKKworY2xhc3MgVVJMUmVzdWx0cyhvYmplY3QpOgor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvdGFsdGltZT0wLCBudW1fdXJscz0wLCBzdGRfZGV2
PTAuMCk6CisgICAgICAgIHNlbGYudGltZSA9IHRvdGFsdGltZQorICAgICAgICBzZWxmLmNvdW50
ID0gbnVtX3VybHMKKyAgICAgICAgc2VsZi5zdGRfZGV2X2NvdW50ZXIgPSBzdGRfZGV2CisKKyAg
ICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIG5ld190aW1lID0gc2VsZi50aW1l
ICsgb3RoZXIudGltZQorICAgICAgICBuZXdfY291bnQgPSBzZWxmLmNvdW50ICsgb3RoZXIuY291
bnQKKyAgICAgICAgbmV3X3N0ZF9kZXZfY291bnRlciA9IHNlbGYuc3RkX2Rldl9jb3VudGVyICsg
b3RoZXIuc3RkX2Rldl9jb3VudGVyCisgICAgICAgIHJldHVybiBVUkxSZXN1bHRzKG5ld190aW1l
LCBuZXdfY291bnQsIG5ld19zdGRfZGV2X2NvdW50ZXIpCisKKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgbWVhbihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jb3VudDoKKyAgICAgICAgICAgIHJldHVy
biBzZWxmLnRpbWUgLyBmbG9hdChzZWxmLmNvdW50KQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcmV0dXJuIDAKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb2VmX3ZhcmlhbmNlKHNlbGYp
OgorICAgICAgICBuID0gc2VsZi5jb3VudAorICAgICAgICBpZiBuIDw9IDE6CisgICAgICAgICAg
ICByZXR1cm4gMAorICAgICAgICBzdGRfZGV2ID0gc3FydCgoc2VsZi5zdGRfZGV2X2NvdW50ZXIg
LyBmbG9hdChuIC0gMSkpIC0gKG4gLyBmbG9hdChuIC0gMSkpICogKHNlbGYubWVhbiAqKiAyKSkK
KyAgICAgICAgcmV0dXJuIChzdGRfZGV2ICogMTAwLjApIC8gc2VsZi5tZWFuCisKKyAgICBkZWYg
cHJpbnRfcmVzdWx0cyhzZWxmLCB1cmwsIHJlc3VsdHNfZm9ybWF0X3N0cik6CisgICAgICAgIHN0
cl90aW1lID0gc2VsZi5fZm9ybWF0X3RpbWUoc2VsZi5tZWFuKQorICAgICAgICBwcmludChyZXN1
bHRzX2Zvcm1hdF9zdHIuZm9ybWF0KHRpbWU9c3RyX3RpbWUubGp1c3QoMTMpLCB2YXI9InswOi4y
Zn0lIi5mb3JtYXQoc2VsZi5jb2VmX3ZhcmlhbmNlKS5sanVzdCg5KSwgdXJsPXVybCkpCisKKyAg
ICBkZWYgX2Zvcm1hdF90aW1lKHNlbGYsIHRpbWUpOgorICAgICAgICByZXR1cm4gInt9IG1zIi5m
b3JtYXQoInswOi4yZn0iLmZvcm1hdCh0aW1lICogMTAwMC4wKS5yc3RyaXAoJzAnKS5yc3RyaXAo
Jy4nKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320224</attachid>
            <date>2017-09-07 19:20:00 -0700</date>
            <delta_ts>2017-09-07 19:58:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176436-20170907192000.patch</filename>
            <type>text/plain</type>
            <size>24495</size>
            <attacher name="Matthew Stewart">matthew_r_stewart</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjU2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGIyMTdkYzMyMzU0NzI1OGY0NmUxYWMyMTc2YjYzMDdi
NjgxNzk0Zi4uZGNiNTAyNDQxZTRkMDYyOWEwOWU3NzdlNGRjNjNjYWYzNjM2YWFhOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4
IEBACisyMDE3LTA5LTA3ICBNYXR0aGV3IFN0ZXdhcnQgIDxtYXR0aGV3X3Jfc3Rld2FydEBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIExpdmUgUExUIGltcGxlbWVudGVkIHdpdGggV2ViRHJpdmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0MzYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEg
bmV3IFBMVCB0aGF0IHJ1bnMgb24gbGl2ZSB3ZWJzaXRlcy4KKworICAgICAgICAqIFNjcmlwdHMv
cnVuLXdlYmRyaXZlci1wbHQucHk6IEFkZGVkLgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAg
ICAgIChzdGFydCk6CisgICAgICAgIChtYWtlX3N1aXRlcyk6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvX19pbml0X18ucHk6IEFkZGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9saXZlcGx0LnB5OiBB
ZGRlZC4KKyAgICAgICAgKFBhZ2VMb2FkVGVzdCk6CisgICAgICAgIChQYWdlTG9hZFRlc3QuX19p
bml0X18pOgorICAgICAgICAoUGFnZUxvYWRUZXN0LnN0YXJ0KToKKyAgICAgICAgKFBhZ2VMb2Fk
VGVzdC5ydW5fc3VpdGUpOgorICAgICAgICAoUGFnZUxvYWRUZXN0Ll9nZXRfZHJpdmVyX2Zvcl9i
cm93c2VyKToKKyAgICAgICAgKFBhZ2VMb2FkVGVzdC5fc2V0dXBfYnJvd3Nlcl93aW5kb3cpOgor
ICAgICAgICAoUGFnZUxvYWRUZXN0LnJ1bl9vbmVfdGVzdCk6CisgICAgICAgIChQYWdlTG9hZFRl
c3QuZ2V0X3Jlc3VsdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3Bs
dC9wbHRyZXN1bHRzLnB5OiBBZGRlZC4KKyAgICAgICAgKFBMVFJlc3VsdHMpOgorICAgICAgICAo
UExUUmVzdWx0cy5fX2luaXRfXyk6CisgICAgICAgIChQTFRSZXN1bHRzLl9fYWRkX18pOgorICAg
ICAgICAoUExUUmVzdWx0cy5hZGRfdGltaW5nX3Jlc3VsdCk6CisgICAgICAgIChQTFRSZXN1bHRz
Lm1lYW4pOgorICAgICAgICAoUExUUmVzdWx0cy5nZW9tZXRyaWNfbWVhbik6CisgICAgICAgIChQ
TFRSZXN1bHRzLm1lYW5fY29lZl92YXJpYW5jZSk6CisgICAgICAgIChQTFRSZXN1bHRzLnByaW50
X3Jlc3VsdHMpOgorICAgICAgICAoUExUUmVzdWx0cy5wcmludF91cmxfcmVzdWx0cyk6CisgICAg
ICAgIChQTFRSZXN1bHRzLl9mb3JtYXRfdGltZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9fX2luaXRfXy5weTogQWRkZWQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9hcmFiaWMuc3VpdGU6IEFkZGVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9zdWl0ZXMvY2prLnN1aXRl
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVz
L25ld3Muc3VpdGU6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVy
X3BsdC9zdWl0ZXMvc2VhcmNoLnN1aXRlOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3Nob3BwaW5nLnN1aXRlOiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3NvY2lhbC5zdWl0ZTogQWRk
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9zdWl0
ZS5weTogQWRkZWQuCisgICAgICAgIChTdWl0ZSk6CisgICAgICAgIChTdWl0ZS5fX2luaXRfXyk6
CisgICAgICAgIChTdWl0ZS5nZXRfYXZhaWxhYmxlX3N1aXRlcyk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3VybHJlc3VsdHMucHk6IEFkZGVkLgorICAgICAgICAo
VVJMUmVzdWx0cyk6CisgICAgICAgIChVUkxSZXN1bHRzLl9faW5pdF9fKToKKyAgICAgICAgKFVS
TFJlc3VsdHMuX19hZGRfXyk6CisgICAgICAgIChVUkxSZXN1bHRzLm1lYW4pOgorICAgICAgICAo
VVJMUmVzdWx0cy5jb2VmX3ZhcmlhbmNlKToKKyAgICAgICAgKFVSTFJlc3VsdHMucHJpbnRfcmVz
dWx0cyk6CisgICAgICAgIChVUkxSZXN1bHRzLl9mb3JtYXRfdGltZSk6CisKIDIwMTctMDktMDUg
IE1hdHRoZXcgU3Rld2FydCAgPG1hdHRoZXdfcl9zdGV3YXJ0QGFwcGxlLmNvbT4KIAogICAgICAg
ICBCZW5jaG1hcmsgUnVubmVyIFdlYkRyaXZlciBtYXhpbWl6ZSB3aW5kb3cgb24gYnJvd3NlciBs
YXVuY2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmRyaXZlci1wbHQucHkgYi9U
b29scy9TY3JpcHRzL3J1bi13ZWJkcml2ZXItcGx0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2YzgyNGZmZGI1
NDQwMWFiY2NjZjI5N2I2ZGEwYTNmMDJhMmQ3ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9T
Y3JpcHRzL3J1bi13ZWJkcml2ZXItcGx0LnB5CkBAIC0wLDAgKzEsNTIgQEAKK2ltcG9ydCBhcmdw
YXJzZQorZnJvbSB3ZWJraXRweS53ZWJkcml2ZXJfcGx0LnN1aXRlcy5zdWl0ZSBpbXBvcnQgU3Vp
dGUKK2Zyb20gd2Via2l0cHkud2ViZHJpdmVyX3BsdC5saXZlcGx0IGltcG9ydCBQYWdlTG9hZFRl
c3QKKworYXZhaWxhYmxlX2Jyb3dzZXJzID0gWworICAgICJzYWZhcmkiLCAiY2hyb21lIiwgImZp
cmVmb3giLCAic3RwIiwKK10KKworCitkZWYgcGFyc2VfYXJncygpOgorICAgIHBhcnNlciA9IGFy
Z3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdBdXRvbWF0ZSBydW5uaW5nIFBMVCB3
aXRoIGxpdmUgd2Vic2l0ZXMnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1pJywgJy0taXRl
cmF0aW9ucycsIGRlc3Q9J2l0ZXJhdGlvbnMnLCB0eXBlPWludCwgZGVmYXVsdD0zLCBoZWxwPSdU
ZXN0IHRoZSBzdWl0ZSBpIHRpbWVzIGluIHRoZSBzYW1lIGJyb3dzZXIgc2Vzc2lvbicpCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgnLW4nLCAnLS1pbnN0YW5jZXMnLCBkZXN0PSdpbnN0YW5jZXMn
LCB0eXBlPWludCwgZGVmYXVsdD0zLCBoZWxwPSdSZXN0YXJ0IHRoZSBicm93c2VyIG4gdGltZXMg
Zm9yIGVhY2ggc3VpdGUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy13JywgJy0td2FpdCcs
IGRlc3Q9J3dhaXQnLCB0eXBlPWZsb2F0LCBkZWZhdWx0PTMuMCwgaGVscD0nV2FpdCB0aW1lIGJl
dHdlZW4gcGFnZXMnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1iJywgJy0tYnJvd3Nlcics
IGRlc3Q9J2Jyb3dzZXInLCBkZWZhdWx0PSdzYWZhcmknLCBjaG9pY2VzPWF2YWlsYWJsZV9icm93
c2VycykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcycsICctLXN1aXRlcycsIGRlc3Q9J3N1
aXRlcycsIG5hcmdzPScrJywgaGVscD0nTGlzdCBvbmUgb3IgbW9yZSBzdWl0ZXMgdG8gcnVuLiBJ
ZiB1bnNwZWNpZmllZCwgZGVmYXVsdHMgdG8gcnVubmluZyBhbGwgc3VpdGVzJykKKyAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KCctLXdpZHRoJywgZGVzdD0nd2lkdGgnLCBoZWxwPSdTZXQgdGhlIGlu
bmVyIHdpbmRvdyB3aWR0aCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1oZWlnaHQnLCBk
ZXN0PSdoZWlnaHQnLCBoZWxwPSdTZXQgdGhlIGlubmVyIHdpbmRvdyBoZWlnaHQnKQorCisgICAg
YXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIHJldHVybiBhcmdzCisKKworZGVmIHN0
YXJ0KGFyZ3MpOgorICAgIHN1aXRlcyA9IG1ha2Vfc3VpdGVzKGFyZ3Muc3VpdGVzKQorICAgIHNp
emUgPSAoYXJncy53aWR0aCwgYXJncy5oZWlnaHQpCisgICAgcGx0ID0gUGFnZUxvYWRUZXN0KGFy
Z3MuaXRlcmF0aW9ucywgYXJncy5pbnN0YW5jZXMsIGFyZ3Mud2FpdCwgYXJncy5icm93c2VyLCBz
dWl0ZXMsIHNpemUpCisgICAgcGx0LnN0YXJ0KCkKKworCitkZWYgbWFrZV9zdWl0ZXMoc3VpdGVz
bGlzdCk6CisgICAgYXZhaWxhYmxlX3N1aXRlcyA9IFN1aXRlLmdldF9hdmFpbGFibGVfc3VpdGVz
KCkKKyAgICBzdWl0ZXMgPSBsaXN0KCkKKyAgICBpZiBzdWl0ZXNsaXN0OgorICAgICAgICBmb3Ig
c3VpdGVuYW1lIGluIHN1aXRlc2xpc3Q6CisgICAgICAgICAgICBpZiBzdWl0ZW5hbWUubG93ZXIo
KSBub3QgaW4gYXZhaWxhYmxlX3N1aXRlczoKKyAgICAgICAgICAgICAgICBwcmludCgiU3VpdGUg
XCJ7fVwiIG5vdCBmb3VuZC4iLmZvcm1hdChzdWl0ZW5hbWUpKQorICAgICAgICAgICAgICAgIHF1
aXQoKQorICAgICAgICAgICAgc3VpdGVzLmFwcGVuZChTdWl0ZShzdWl0ZW5hbWUubG93ZXIoKSkp
CisgICAgZWxzZToKKyAgICAgICAgZm9yIHN1aXRlbmFtZSBpbiBhdmFpbGFibGVfc3VpdGVzOgor
ICAgICAgICAgICAgc3VpdGVzLmFwcGVuZChTdWl0ZShzdWl0ZW5hbWUpKQorICAgIHJldHVybiBz
dWl0ZXMKKworCitkZWYgbWFpbigpOgorICAgIHJldHVybiBzdGFydChwYXJzZV9hcmdzKCkpCisK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9fX2luaXRfXy5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWUy
ODM5OWY1ZmRhMmRmYjFiMDQ0MDVmNGEzYjQ4OTVmNWZhYzFlCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L19faW5pdF9fLnB5CkBAIC0wLDAg
KzEgQEAKK3Bhc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVy
X3BsdC9saXZlcGx0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L2xp
dmVwbHQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2VmZDdkMmRiOTFkMDExM2I0OTViODc0ZGFlMDVmOGU1NjUw
YWVjNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVy
X3BsdC9saXZlcGx0LnB5CkBAIC0wLDAgKzEsMTcyIEBACitpbXBvcnQgd2Via2l0cHkudGhpcmRw
YXJ0eS5hdXRvaW5zdGFsbGVkLnNlbGVuaXVtCitmcm9tIHBsdHJlc3VsdHMgaW1wb3J0IFBMVFJl
c3VsdHMKK2Zyb20gc2VsZW5pdW0gaW1wb3J0IHdlYmRyaXZlcgorZnJvbSB0aW1lIGltcG9ydCBz
bGVlcAorZnJvbSB3ZWJraXRweS5iZW5jaG1hcmtfcnVubmVyLnV0aWxzIGltcG9ydCBnZXRfZHJp
dmVyX2JpbmFyeV9wYXRoCitmcm9tIHdlYmtpdHB5LmNvbW1vbi50aW1lb3V0X2NvbnRleHQgaW1w
b3J0IFRpbWVvdXQKKworIyBGSVhNRTogd2Ugd2FudCB0byBhdm9pZCBoYXJkY29kaW5nIHRoZSBv
ZmZzZXRzCisjIHdlIHVzZSB0aGlzIHRvIG1ha2Ugc3VyZSB0aGUgd2luZG93LmlubmVySGVpZ2h0
IG9mIGVhY2ggYnJvd3NlciBpcyB0aGUgc2FtZQorYnJvd3Nlcl9oZWlnaHRfb2Zmc2V0cyA9IHsK
KyAgICAnc2FmYXJpJzogNzYsCisgICAgJ2Nocm9tZSc6IDAsCisgICAgJ2ZpcmVmb3gnOiAzNywK
KyAgICAnc3RwJzogNzYsCit9CisKKworY2xhc3MgUGFnZUxvYWRUZXN0KG9iamVjdCk6CisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgaXRlcmF0aW9ucywgaW5zdGFuY2VzLCB3YWl0LCBicm93c2Vy
LCBzdWl0ZXMsIHNpemUpOgorICAgICAgICBwcmludCgiQ3JlYXRpbmcgUExUIHdpdGggcGFyYW1l
dGVyczoiKQorICAgICAgICBwcmludCgiaXRlcmF0aW9uczoge30iLmZvcm1hdChpdGVyYXRpb25z
KSkKKyAgICAgICAgcHJpbnQoImluc3RhbmNlczoge30iLmZvcm1hdChpbnN0YW5jZXMpKQorICAg
ICAgICBwcmludCgid2FpdDoge31zIi5mb3JtYXQod2FpdCkpCisgICAgICAgIHByaW50KCJicm93
c2VyOiB7fSIuZm9ybWF0KGJyb3dzZXIpKQorICAgICAgICBwcmludCgic3VpdGVzOiB7fSIuZm9y
bWF0KFtzLm5hbWUgZm9yIHMgaW4gc3VpdGVzXSkpCisgICAgICAgIHdpZHRoLCBoZWlnaHQgPSBz
aXplCisgICAgICAgIGlmIHdpZHRoOgorICAgICAgICAgICAgcHJpbnQoIndpZHRoOiB7fSIuZm9y
bWF0KHdpZHRoKSkKKyAgICAgICAgaWYgaGVpZ2h0OgorICAgICAgICAgICAgcHJpbnQoImhlaWdo
dDoge30iLmZvcm1hdChoZWlnaHQpKQorICAgICAgICBwcmludCgiIikKKyAgICAgICAgc2VsZi5p
dGVyYXRpb25zID0gaXRlcmF0aW9ucworICAgICAgICBzZWxmLmluc3RhbmNlcyA9IGluc3RhbmNl
cworICAgICAgICBzZWxmLndhaXQgPSB3YWl0CisgICAgICAgIHNlbGYuYnJvd3NlciA9IGJyb3dz
ZXIKKyAgICAgICAgc2VsZi5zdWl0ZXMgPSBzdWl0ZXMKKyAgICAgICAgc2VsZi5zaXplID0gc2l6
ZQorCisgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICB0b3RhbF9yZXN1bHRzID0gUExUUmVz
dWx0cygpCisgICAgICAgIHN1aXRlaWQgPSAwCisgICAgICAgIGZvciBzdWl0ZSBpbiBzZWxmLnN1
aXRlczoKKyAgICAgICAgICAgIHN1aXRlLmF0dGVtcHRzIC09IDEKKyAgICAgICAgICAgIHN1aXRl
aWQgKz0gMQorICAgICAgICAgICAgcHJpbnQoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSIpCisgICAgICAgICAgICBwcmludCgiUnVubmluZyBzdWl0ZSB7aWR9IG9mIHtudW19OiB7bmFt
ZX0iLmZvcm1hdChpZD1zdWl0ZWlkLCBudW09bGVuKHNlbGYuc3VpdGVzKSwgbmFtZT1zdWl0ZS5u
YW1lKSkKKyAgICAgICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0i
KQorICAgICAgICAgICAgcHJpbnQoIiIpCisgICAgICAgICAgICB0b3RhbF9yZXN1bHRzICs9IHNl
bGYucnVuX3N1aXRlKHN1aXRlKQorICAgICAgICB0b3RhbF9yZXN1bHRzLnByaW50X3Jlc3VsdHMo
KQorCisgICAgZGVmIHJ1bl9zdWl0ZShzZWxmLCBzdWl0ZSk6CisgICAgICAgIGNvbGRfcnVuX3Jl
c3VsdHMgPSBQTFRSZXN1bHRzKCkKKyAgICAgICAgc3VpdGVfcmVzdWx0cyA9IFBMVFJlc3VsdHMo
KQorCisgICAgICAgIGZvciBpbnN0YW5jZSBpbiByYW5nZShzZWxmLmluc3RhbmNlcyk6CisgICAg
ICAgICAgICBkcml2ZXIgPSBzZWxmLl9nZXRfZHJpdmVyX2Zvcl9icm93c2VyKHNlbGYuYnJvd3Nl
cikKKyAgICAgICAgICAgIHNlbGYuX3NldHVwX2Jyb3dzZXJfd2luZG93KGRyaXZlcikKKyAgICAg
ICAgICAgIHNsZWVwKDUpCisgICAgICAgICAgICBmb3IgaXRlcmF0aW9uIGluIHJhbmdlKHNlbGYu
aXRlcmF0aW9ucyArIDEpOgorICAgICAgICAgICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0iKQorICAgICAgICAgICAgICAgIGlmIGl0ZXJhdGlvbiA9PSAwOgorICAg
ICAgICAgICAgICAgICAgICBwcmludCgiUnVubmluZyBpdGVybmF0aW9uICVzIChjb2xkIHJ1biki
ICUgaXRlcmF0aW9uKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAg
IHByaW50KCJSdW5uaW5nIGl0ZXJuYXRpb24gJXMiICUgaXRlcmF0aW9uKQorICAgICAgICAgICAg
ICAgIHJ1bl9yZXN1bHRzID0gc2VsZi5ydW5fb25lX3Rlc3Qoc3VpdGUsIGRyaXZlcikKKyAgICAg
ICAgICAgICAgICBpZiBub3QgcnVuX3Jlc3VsdHM6CisgICAgICAgICAgICAgICAgICAgIGlmIHN1
aXRlLmF0dGVtcHRzIDw9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiRmFpbGVk
IHRvIGZpbmlzaCBzdWl0ZSB7bmFtZX0gYWZ0ZXIge3h9IGF0dGVtcHRzLiBSZXN1bHRzIGFyZSBp
bmNvbXBsZXRlLiIuZm9ybWF0KG5hbWU9c3VpdGUubmFtZSwgeD1zdWl0ZS5tYXhfYXR0ZW1wdHMp
KQorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkV4aXRpbmcuLi4iKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcXVpdCgpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgICAgICBwcmludCgiQSBwYWdlIGZhaWxlZCB0byBsb2FkLiBSZS1xdWV1aW5n
IHN1aXRlLiIpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN1aXRlcy5hcHBlbmQoc3Vp
dGUpCisgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIucXVpdCgpCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gUExUUmVzdWx0cygpCisgICAgICAgICAgICAgICAgcnVuX3Jlc3Vs
dHMucHJpbnRfdXJsX3Jlc3VsdHMoIklORElWSURVQUwiKQorICAgICAgICAgICAgICAgIGlmIGl0
ZXJhdGlvbiA9PSAwOgorICAgICAgICAgICAgICAgICAgICBjb2xkX3J1bl9yZXN1bHRzICs9IHJ1
bl9yZXN1bHRzCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc3Vp
dGVfcmVzdWx0cyArPSBydW5fcmVzdWx0cworICAgICAgICAgICAgZHJpdmVyLnF1aXQoKQorICAg
ICAgICBjb2xkX3J1bl9yZXN1bHRzLnByaW50X3Jlc3VsdHMoc3VpdGUubmFtZSwgVHJ1ZSkKKyAg
ICAgICAgc3VpdGVfcmVzdWx0cy5wcmludF9yZXN1bHRzKHN1aXRlLm5hbWUpCisgICAgICAgIHJl
dHVybiBzdWl0ZV9yZXN1bHRzCisKKyAgICBkZWYgX2dldF9kcml2ZXJfZm9yX2Jyb3dzZXIoc2Vs
ZiwgYnJvd3Nlcik6CisgICAgICAgIGRyaXZlcl9leGVjdXRhYmxlID0gZ2V0X2RyaXZlcl9iaW5h
cnlfcGF0aChicm93c2VyKQorICAgICAgICBpZiBicm93c2VyID09ICdzYWZhcmknOgorICAgICAg
ICAgICAgcmV0dXJuIHdlYmRyaXZlci5TYWZhcmkoKQorICAgICAgICBpZiBicm93c2VyID09ICdj
aHJvbWUnOgorICAgICAgICAgICAgZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuY2hyb21lLm9wdGlv
bnMgaW1wb3J0IE9wdGlvbnMKKyAgICAgICAgICAgIG9wdGlvbnMgPSBPcHRpb25zKCkKKyAgICAg
ICAgICAgIG9wdGlvbnMuYWRkX2FyZ3VtZW50KCItLWRpc2FibGUtd2ViLXNlY3VyaXR5IikKKyAg
ICAgICAgICAgIG9wdGlvbnMuYWRkX2FyZ3VtZW50KCItLWRpc2FibGUtZXh0ZW5zaW9ucyIpCisg
ICAgICAgICAgICBvcHRpb25zLmFkZF9hcmd1bWVudCgiLS1zdGFydC1tYXhpbWl6ZWQiKQorICAg
ICAgICAgICAgcmV0dXJuIHdlYmRyaXZlci5DaHJvbWUoY2hyb21lX29wdGlvbnM9b3B0aW9ucywg
ZXhlY3V0YWJsZV9wYXRoPWRyaXZlcl9leGVjdXRhYmxlKQorICAgICAgICBpZiBicm93c2VyID09
ICdmaXJlZm94JzoKKyAgICAgICAgICAgIHJldHVybiB3ZWJkcml2ZXIuRmlyZWZveChleGVjdXRh
YmxlX3BhdGg9ZHJpdmVyX2V4ZWN1dGFibGUpCisgICAgICAgIGlmIGJyb3dzZXIgPT0gJ3N0cCc6
CisgICAgICAgICAgICByZXR1cm4gd2ViZHJpdmVyLlNhZmFyaShleGVjdXRhYmxlX3BhdGg9Jy9B
cHBsaWNhdGlvbnMvU2FmYXJpIFRlY2hub2xvZ3kgUHJldmlldy5hcHAvQ29udGVudHMvTWFjT1Mv
c2FmYXJpZHJpdmVyJykKKworICAgIGRlZiBfc2V0dXBfYnJvd3Nlcl93aW5kb3coc2VsZiwgZHJp
dmVyKToKKyAgICAgICAgZHJpdmVyLm1heGltaXplX3dpbmRvdygpCisgICAgICAgIHNsZWVwKDEp
CisgICAgICAgIGN1cnJlbnRfc2l6ZSA9IGRyaXZlci5nZXRfd2luZG93X3NpemUoKQorCisgICAg
ICAgIG5ld193aWR0aCwgbmV3X2hlaWdodCA9IHNlbGYuc2l6ZQorICAgICAgICBpZiBub3QgbmV3
X3dpZHRoOgorICAgICAgICAgICAgbmV3X3dpZHRoID0gZHJpdmVyLmV4ZWN1dGVfc2NyaXB0KCdy
ZXR1cm4gc2NyZWVuLndpZHRoOycpCisgICAgICAgICAgICBwcmludCgic2V0dGluZyB3aWR0aCB0
byB7fSIuZm9ybWF0KG5ld193aWR0aCkpCisgICAgICAgIGlmIG5vdCBuZXdfaGVpZ2h0OgorICAg
ICAgICAgICAgbmV3X2hlaWdodCA9IGN1cnJlbnRfc2l6ZVsnaGVpZ2h0J10gLSBicm93c2VyX2hl
aWdodF9vZmZzZXRzW3NlbGYuYnJvd3Nlcl0KKyAgICAgICAgICAgIHByaW50KCJzZXR0aW5nIGhl
aWdodCB0byB7fSIuZm9ybWF0KG5ld19oZWlnaHQpKQorCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIGRyaXZlci5zZXRfd2luZG93X3NpemUod2lkdGg9bmV3X3dpZHRoLCBoZWlnaHQ9bmV3X2hl
aWdodCkKKyAgICAgICAgICAgIGRyaXZlci5zZXRfd2luZG93X3Bvc2l0aW9uKHg9MCwgeT0wKQor
ICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgcnVuX29uZV90ZXN0
KHNlbGYsIHN1aXRlLCBkcml2ZXIpOgorICAgICAgICB0YWJzID0gRmFsc2UKKyAgICAgICAgY3Vy
cmVudFRhYklkeCA9IDAKKyAgICAgICAgbWF4VGFicyA9IDUKKyAgICAgICAgbWF4UmV0cnlzID0g
NQorICAgICAgICB0aW1lb3V0ID0gMzAKKworICAgICAgICBsb2NhbF9yZXN1bHRzID0gUExUUmVz
dWx0cygpCisKKyAgICAgICAgZm9yIHVybCBpbiBzdWl0ZS51cmxzOgorICAgICAgICAgICAgaWYg
dGFiczoKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50VGFiSWR4IDwgbWF4VGFicyAtIDE6Cisg
ICAgICAgICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoIk9wZW5pbmcgbmV3
IHRhYnMgaXMgbm90IHN1cHBvcnRlZCB5ZXQuIikKKyAgICAgICAgICAgICAgICBkcml2ZXIuc3dp
dGNoX3RvX3dpbmRvdyhkcml2ZXIud2luZG93X2hhbmRsZXNbY3VycmVudFRhYklkeCAlIG1heFRh
YnNdKQorICAgICAgICAgICAgICAgIGN1cnJlbnRUYWJJZHggKz0gMQorICAgICAgICAgICAgdGVt
cFdhaXQgPSBzZWxmLndhaXQKKyAgICAgICAgICAgIGZvciBhdHRlbXB0IGluIHJhbmdlKG1heFJl
dHJ5cyk6CisgICAgICAgICAgICAgICAgZHJpdmVyLnNldF9wYWdlX2xvYWRfdGltZW91dCh0aW1l
b3V0KQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZHJpdmVyLmdl
dCh1cmwpCisgICAgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICAgICBwcmlu
dCgie3VybH0gdGltZWQgb3V0IGFmdGVyIHt0aW1lfSBzZWNvbmRzLiIuZm9ybWF0KHVybD11cmws
IHRpbWU9dGltZW91dCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAg
ICAgICAgICAgICBzbGVlcCh0ZW1wV2FpdCkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmdldF9y
ZXN1bHRzKGRyaXZlciwgbG9jYWxfcmVzdWx0cywgdXJsKToKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWsKKworICAgICAgICAgICAgICAgIHByaW50KCJDb3VsZCBub3QgZ2V0IHJlc3VsdHMgZm9y
IHt1cmx9LiBSZXRyeWluZy4uLiIuZm9ybWF0KHVybD11cmwpKQorICAgICAgICAgICAgICAgIHRl
bXBXYWl0ICs9IDAuNQorICAgICAgICAgICAgICAgIGlmIGF0dGVtcHQgPT0gbWF4UmV0cnlzIC0g
MToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIGxvY2Fs
X3Jlc3VsdHMKKworICAgIGRlZiBnZXRfcmVzdWx0cyhzZWxmLCBkcml2ZXIsIHJlc3VsdHMsIHVy
bCk6CisgICAgICAgIG50X3Jlc3VsdHMgPSBkcml2ZXIuZXhlY3V0ZV9zY3JpcHQoJ3JldHVybiBw
ZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJuYXZpZ2F0aW9uIilbMF0nKSAgIyBuYXZpZ2F0
aW9uIHRpbWluZyAyCisgICAgICAgIGlmIG5vdCBudF9yZXN1bHRzOgorICAgICAgICAgICAgbnRf
cmVzdWx0cyA9IGRyaXZlci5leGVjdXRlX3NjcmlwdCgncmV0dXJuIHBlcmZvcm1hbmNlLnRpbWlu
ZycpICAjIG5hdmlnYXRpb24gdGltaW5nIDEKKyAgICAgICAgICAgIHN0YXJ0ID0gbnRfcmVzdWx0
c1snbmF2aWdhdGlvblN0YXJ0J10KKyAgICAgICAgICAgIGVuZCA9IG50X3Jlc3VsdHNbJ2xvYWRF
dmVudEVuZCddCisgICAgICAgICAgICBpZiBzdGFydCA9PSAwIG9yIGVuZCA9PSAwOgorICAgICAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3RhcnQg
PSBudF9yZXN1bHRzWydzdGFydFRpbWUnXQorICAgICAgICAgICAgZW5kID0gbnRfcmVzdWx0c1sn
bG9hZEV2ZW50RW5kJ10KKyAgICAgICAgICAgIGlmIGVuZCA9PSAwOgorICAgICAgICAgICAgICAg
IHJldHVybiBGYWxzZQorCisgICAgICAgIHJlc3VsdHMuYWRkX3RpbWluZ19yZXN1bHQoZW5kIC0g
c3RhcnQsIHVybCkKKyAgICAgICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9wbHRyZXN1bHRzLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93ZWJkcml2ZXJfcGx0L3BsdHJlc3VsdHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFjY2M4NGI1
NTFlMDVmMzg5ZGIwMTE3MmE4YTI3MTI2MTgyNGY5MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9wbHRyZXN1bHRzLnB5CkBAIC0wLDAgKzEs
MTAwIEBACitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAorZnJvbSB1cmxyZXN1
bHRzIGltcG9ydCBVUkxSZXN1bHRzCitmcm9tIG1hdGggaW1wb3J0IGxvZywgZXhwCisKKworY2xh
c3MgUExUUmVzdWx0cyhvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGdlb19zdW09
MSwgdG90YWxzdW09MCwgbnVtX3VybHM9MCwgdXJscz1Ob25lKToKKyAgICAgICAgc2VsZi5nZW9f
c3VtID0gZ2VvX3N1bQorICAgICAgICBzZWxmLnN1bSA9IHRvdGFsc3VtCisgICAgICAgIHNlbGYu
Y291bnQgPSBudW1fdXJscworICAgICAgICBpZiB1cmxzIGlzIE5vbmU6CisgICAgICAgICAgICB1
cmxzID0gT3JkZXJlZERpY3QoKQorICAgICAgICBzZWxmLnVybHMgPSB1cmxzCisKKyAgICBkZWYg
X19hZGRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIG5ld19nZW9fc3VtID0gc2VsZi5nZW9fc3Vt
ICsgb3RoZXIuZ2VvX3N1bQorICAgICAgICBuZXdfc3VtID0gc2VsZi5zdW0gKyBvdGhlci5zdW0K
KyAgICAgICAgbmV3X2NvdW50ID0gc2VsZi5jb3VudCArIG90aGVyLmNvdW50CisgICAgICAgIG5l
d191cmxzID0gT3JkZXJlZERpY3Qoc2VsZi51cmxzKQorICAgICAgICBmb3IgKHVybCwgcmVzdWx0
cykgaW4gb3RoZXIudXJscy5pdGVtcygpOgorICAgICAgICAgICAgaWYgdXJsIG5vdCBpbiBzZWxm
LnVybHM6CisgICAgICAgICAgICAgICAgbmV3X3VybHNbdXJsXSA9IFVSTFJlc3VsdHMoKQorICAg
ICAgICAgICAgbmV3X3VybHNbdXJsXSArPSByZXN1bHRzCisgICAgICAgIHJldHVybiBQTFRSZXN1
bHRzKG5ld19nZW9fc3VtLCBuZXdfc3VtLCBuZXdfY291bnQsIG5ld191cmxzKQorCisgICAgZGVm
IGFkZF90aW1pbmdfcmVzdWx0KHNlbGYsIHRpbWUsIHVybCk6CisgICAgICAgIHNlbGYuZ2VvX3N1
bSArPSBsb2codGltZSkKKyAgICAgICAgc2VsZi5zdW0gKz0gdGltZQorICAgICAgICBzZWxmLmNv
dW50ICs9IDEKKyAgICAgICAgaWYgdXJsIGluIHNlbGYudXJsczoKKyAgICAgICAgICAgIHNlbGYu
dXJsc1t1cmxdICs9IFVSTFJlc3VsdHModGltZSwgMSwgdGltZSAqKiAyKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgc2VsZi51cmxzW3VybF0gPSBVUkxSZXN1bHRzKHRpbWUsIDEsIHRpbWUg
KiogMikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtZWFuKHNlbGYpOgorICAgICAgICBpZiBz
ZWxmLmNvdW50OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3VtIC8gZmxvYXQoc2VsZi5jb3Vu
dCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAwCisKKyAgICBAcHJvcGVydHkK
KyAgICBkZWYgZ2VvbWV0cmljX21lYW4oc2VsZik6CisgICAgICAgIGlmIHNlbGYuY291bnQ6Cisg
ICAgICAgICAgICByZXR1cm4gZXhwKHNlbGYuZ2VvX3N1bSAvIGZsb2F0KHNlbGYuY291bnQpKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIDAKKworICAgIEBwcm9wZXJ0eQorICAg
IGRlZiBtZWFuX2NvZWZfdmFyaWFuY2Uoc2VsZik6CisgICAgICAgIHRvdGFsID0gMC4wCisgICAg
ICAgIGZvciBfLCByZXN1bHRzIGluIHNlbGYudXJscy5pdGVtcygpOgorICAgICAgICAgICAgdG90
YWwgKz0gcmVzdWx0cy5jb2VmX3ZhcmlhbmNlCisgICAgICAgIGlmIHNlbGYudXJscyBhbmQgbGVu
KHNlbGYudXJscyk6CisgICAgICAgICAgICByZXR1cm4gdG90YWwgLyBmbG9hdChsZW4oc2VsZi51
cmxzKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAwLjAKKworICAgIGRlZiBw
cmludF9yZXN1bHRzKHNlbGYsIHN1aXRlbmFtZT1Ob25lLCBjb2xkX3J1bj1GYWxzZSk6CisgICAg
ICAgIHByaW50KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKQorICAgICAgICBpZiBu
b3Qgc3VpdGVuYW1lOgorICAgICAgICAgICAgcHJpbnQoIiIpCisgICAgICAgICAgICBwcmludCgi
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIikKKyAgICAgICAgICAgIHByaW50KCJPVkVS
QUxMIFBMVCBSRVNVTFRTIFNVTU1BUlk6IikKKyAgICAgICAgZWxpZiBjb2xkX3J1bjoKKyAgICAg
ICAgICAgIHByaW50KCJDb2xkIFJ1biBSZXN1bHRzIGZvciB7bmFtZX06Ii5mb3JtYXQobmFtZT1z
dWl0ZW5hbWUpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJpbnQoIlBMVCBSZXN1bHRz
IGZvciB7bmFtZX06Ii5mb3JtYXQobmFtZT1zdWl0ZW5hbWUpKQorICAgICAgICBpZiBzdWl0ZW5h
bWU6CisgICAgICAgICAgICBzZWxmLnByaW50X3VybF9yZXN1bHRzKCJNRUFOIikKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHNlbGYucHJpbnRfdXJsX3Jlc3VsdHMoIlRPVEFMIE1FQU4iKQor
ICAgICAgICBwcmludCgiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIikKKyAgICAgICAg
cHJpbnQoIlRPVEFMIFRJTUU6IHt0aW1lfSIuZm9ybWF0KHRpbWU9c2VsZi5fZm9ybWF0X3RpbWUo
c2VsZi5zdW0pKSkKKyAgICAgICAgcHJpbnQoIlRPVEFMIFVSTFM6IHt1cmxzfSIuZm9ybWF0KHVy
bHM9c2VsZi5jb3VudCkpCisgICAgICAgIGlmIHNlbGYudXJscyBhbmQgbGVuKHNlbGYudXJscykg
YW5kIHNlbGYudXJscy52YWx1ZXMoKVswXS5jb3VudCA+IDE6CisgICAgICAgICAgICBwcmludCgi
QVZFUkFHRSBDT0VGRklDSUVOVCBPRiBWQVJJQU5DRTogezA6LjJmfSUiLmZvcm1hdChzZWxmLm1l
YW5fY29lZl92YXJpYW5jZSkpCisgICAgICAgIHByaW50KCJBVkVSQUdFIFRJTUUgUEVSIFBBR0U6
IHthdmd9Ii5mb3JtYXQoYXZnPXNlbGYuX2Zvcm1hdF90aW1lKHNlbGYubWVhbikpKQorICAgICAg
ICBwcmludCgiR0VPTUVUUklDIE1FQU46IHthdmd9Ii5mb3JtYXQoYXZnPXNlbGYuX2Zvcm1hdF90
aW1lKHNlbGYuZ2VvbWV0cmljX21lYW4pKSkKKyAgICAgICAgcHJpbnQoIi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSIpCisgICAgICAgIHByaW50KCIiKQorCisgICAgZGVmIHByaW50X3Vy
bF9yZXN1bHRzKHNlbGYsIHVybFJlc3VsdHNUeXBlKToKKyAgICAgICAgcHJpbnQoIi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpCisgICAgICAgIHByaW50KCJ7dHlwZX0gVVJMIExPQUQg
VElNRVM6Ii5mb3JtYXQodHlwZT11cmxSZXN1bHRzVHlwZSkpCisgICAgICAgIGlmIG5vdCBsZW4o
c2VsZi51cmxzKToKKyAgICAgICAgICAgIHByaW50KCIiKQorICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgIGlmIHNlbGYudXJscy52YWx1ZXMoKVswXS5jb3VudCA+IDE6CisgICAgICAgICAgICBy
ZXN1bHRzX2Zvcm1hdF9zdHIgPSAie3RpbWV9e3Zhcn17dXJsfSIKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHJlc3VsdHNfZm9ybWF0X3N0ciA9ICJ7dGltZX17dXJsfSIKKyAgICAgICAgcHJp
bnQocmVzdWx0c19mb3JtYXRfc3RyLmZvcm1hdCh0aW1lPSJ0aW1lIChtcykiLmxqdXN0KDEyKSwg
dmFyPSJDb1YgKCUpIi5sanVzdCgxMCksIHVybD0idXJsIikpCisgICAgICAgIGZvciAodXJsLCBy
ZXN1bHRzKSBpbiBzZWxmLnVybHMuaXRlbXMoKToKKyAgICAgICAgICAgIHJlc3VsdHMucHJpbnRf
cmVzdWx0cyh1cmwsIHJlc3VsdHNfZm9ybWF0X3N0cikKKyAgICAgICAgcHJpbnQoIiIpCisKKyAg
ICBkZWYgX2Zvcm1hdF90aW1lKHNlbGYsIHRpbWUpOgorICAgICAgICByZXR1cm4gInt9IG1zIi5m
b3JtYXQoInswOi4yZn0iLmZvcm1hdChmbG9hdCh0aW1lKSkucnN0cmlwKCcwJykucnN0cmlwKCcu
JykpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3Vp
dGVzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1
aXRlcy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWUyODM5OWY1ZmRhMmRmYjFiMDQ0MDVmNGEz
YjQ4OTVmNWZhYzFlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
ZWJkcml2ZXJfcGx0L3N1aXRlcy9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACitwYXNzCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL2FyYWJp
Yy5zdWl0ZSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9zdWl0ZXMvYXJh
YmljLnN1aXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxOGViNzllMmI5ZGI4MzZhZmZhMjgxZDk3M2I5MGFlZjM5
MTMyMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZl
cl9wbHQvc3VpdGVzL2FyYWJpYy5zdWl0ZQpAQCAtMCwwICsxLDE0IEBACit7CisgICAgInVybHMi
OiBbCisgICAgICAgICJodHRwOi8vd3d3Lmtvb29yYS5jb20iLAorICAgICAgICAiaHR0cDovL3d3
dy5rb29vcmEuY29tLz9uPTAmbz1zMCIsCisgICAgICAgICJodHRwczovL3d3dy5iYXl0LmNvbS9h
ciIsCisgICAgICAgICJodHRwczovL3d3dy5iYXl0LmNvbS9hci9lbXBsb3llcnMiLAorICAgICAg
ICAiaHR0cDovL3d3dy55YWxsYWtvcmEuY29tIiwKKyAgICAgICAgImh0dHA6Ly93d3cueWFsbGFr
b3JhLmNvbS9hci90b3VycyIsCisgICAgICAgICJodHRwOi8vd3d3LnVuLm9yZy9hci9pbmRleC5o
dG1sIiwKKyAgICAgICAgImh0dHA6Ly93d3cudW4ub3JnL2FyL3NlY3Rpb25zL3Jlc291cmNlcy9k
ZWxlZ2F0ZXMiLAorICAgICAgICAiaHR0cHM6Ly93d3cuZW1pcmF0ZXMuY29tL2FlL2FyYWJpYyIs
CisgICAgICAgICJodHRwczovL3d3dy5lbWlyYXRlcy5jb20vYWUvYXJhYmljL2Rlc3RpbmF0aW9u
cy9mbGlnaHRzLXRvLXVuaXRlZC1zdGF0ZXMuYXNweCIKKyAgICBdCit9CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL2Nqay5zdWl0ZSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9zdWl0ZXMvY2prLnN1aXRlCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE4YjhkOGFhNzQwYjA4YmVkMjlmOGZjZjNiNWFhMzBhZDdmMGJjMDgKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL2Nq
ay5zdWl0ZQpAQCAtMCwwICsxLDE2IEBACit7CisgICAgInVybHMiOiBbCisgICAgICAgICJodHRw
czovL3d3dy5zb2dvdS5jb20iLAorICAgICAgICAiaHR0cHM6Ly93d3cuc29nb3UuY29tL3dlYj9x
dWVyeT13ZWJraXQiLAorICAgICAgICAiaHR0cHM6Ly9jbi5ueXRpbWVzLmNvbSIsCisgICAgICAg
ICJodHRwczovL2NuLm55dGltZXMuY29tL3VzYSIsCisgICAgICAgICJodHRwczovL3d3dy55YWhv
by5jby5qcCIsCisgICAgICAgICJodHRwczovL25ld3MueWFob28uY28uanAvcGlja3VwLzYyNTI2
NzIiLAorICAgICAgICAiaHR0cHM6Ly93d3cucmFrdXRlbi5jby5qcCIsCisgICAgICAgICJodHRw
czovL2V2ZW50LnJha3V0ZW4uY28uanAiLAorICAgICAgICAiaHR0cDovL2tha2FrdS5jb20iLAor
ICAgICAgICAiaHR0cDovL2tha2FrdS5jb20vcGMvbGNkLW1vbml0b3IiLAorICAgICAgICAiaHR0
cHM6Ly93d3cubmF2ZXIuY29tIiwKKyAgICAgICAgImh0dHBzOi8vc2VjdGlvbi5ibG9nLm5hdmVy
LmNvbSIKKyAgICBdCit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRy
aXZlcl9wbHQvc3VpdGVzL25ld3Muc3VpdGUgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRy
aXZlcl9wbHQvc3VpdGVzL25ld3Muc3VpdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjgxZjhiOThiMDRmYzRhYzVl
MDdhMjY2OTY4ZGE3M2UyYzc1MzQ4YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvd2ViZHJpdmVyX3BsdC9zdWl0ZXMvbmV3cy5zdWl0ZQpAQCAtMCwwICsxLDE0IEBA
Cit7CisgICAgInVybHMiOiBbCisgICAgICAgICJodHRwczovL3d3dy5ueXRpbWVzLmNvbSIsCisg
ICAgICAgICJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDE3LzA2LzI3L3RlY2hub2xvZ3kvZWR1
Y2F0aW9uLXBhcnRvdmktY29tcHV0ZXItc2NpZW5jZS1jb2RpbmctYXBwbGUtbWljcm9zb2Z0Lmh0
bWwiLAorICAgICAgICAiaHR0cHM6Ly93d3cudGhlZ3VhcmRpYW4uY29tL3VzL3RlY2hub2xvZ3ki
LAorICAgICAgICAiaHR0cHM6Ly93d3cudGhlZ3VhcmRpYW4uY29tL3RlY2hub2xvZ3kvMjAxNy9q
dW4vMjkvaXBob25lLWF0LTEwLWhvdy1pdC1jaGFuZ2VkLWV2ZXJ5dGhpbmciLAorICAgICAgICAi
aHR0cDovL3d3dy5lc3BuLmNvbSIsCisgICAgICAgICJodHRwOi8vd3d3LmVzcG4uY29tL3Rlbm5p
cy9zdG9yeS9fL2lkLzIwNDY2NDg4L3JhZmFlbC1uYWRhbC1kb2VzLW5vdC13YW50LWZhY2Utcm9n
ZXItZmVkZXJlci11cy1vcGVuIiwKKyAgICAgICAgImh0dHBzOi8vbmV3cy5nb29nbGUuY29tL25l
d3MiLAorICAgICAgICAiaHR0cHM6Ly9uZXdzLmdvb2dsZS5jb20vbmV3cy9oZWFkbGluZXMvc2Vj
dGlvbi90b3BpYy9XT1JMRCIsCisgICAgICAgICJodHRwczovL3d3dy55YWhvby5jb20iLAorICAg
ICAgICAiaHR0cHM6Ly93d3cueWFob28uY29tL3RlY2gvYXBvcy1wb2stbW9uLWFwb3MtY2VsZWJy
YXRlcy0xNTU1MjM4MTQuaHRtbCIKKyAgICBdCit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3NlYXJjaC5zdWl0ZSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvd2ViZHJpdmVyX3BsdC9zdWl0ZXMvc2VhcmNoLnN1aXRlCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgxZGIxMTUyNWRkZGFjZTg1YTAxN2ZiNmEzMWQyNzIxYzA4ZWIxMzIKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3NlYXJjaC5z
dWl0ZQpAQCAtMCwwICsxLDE0IEBACit7CisgICAgInVybHMiOiBbCisgICAgICAgICJodHRwczov
L3d3dy5nb29nbGUuY29tIiwKKyAgICAgICAgImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNo
P3E9d2Via2l0IiwKKyAgICAgICAgImh0dHBzOi8vc2VhcmNoLnlhaG9vLmNvbSIsCisgICAgICAg
ICJodHRwczovL3NlYXJjaC55YWhvby5jb20vc2VhcmNoP3A9d2Via2l0IiwKKyAgICAgICAgImh0
dHBzOi8vd3d3LnlhbmRleC5jb20iLAorICAgICAgICAiaHR0cHM6Ly93d3cueWFuZGV4LmNvbS9z
ZWFyY2gvP3RleHQ9d2Via2l0IiwKKyAgICAgICAgImh0dHA6Ly93d3cuYmluZy5jb20iLAorICAg
ICAgICAiaHR0cDovL3d3dy5iaW5nLmNvbS9zZWFyY2g/cT13ZWJraXQiLAorICAgICAgICAiaHR0
cHM6Ly9kdWNrZHVja2dvLmNvbSIsCisgICAgICAgICJodHRwczovL2R1Y2tkdWNrZ28uY29tLz9x
PXdlYmtpdCIKKyAgICBdCit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dl
YmRyaXZlcl9wbHQvc3VpdGVzL3Nob3BwaW5nLnN1aXRlIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9zaG9wcGluZy5zdWl0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2I5MGY2
ZTg1YzY1OTY0MTgyZjdkZjA5YzI3YzA3YmE2ZDU4MmEyCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9zaG9wcGluZy5zdWl0ZQpA
QCAtMCwwICsxLDE0IEBACit7CisgICAgInVybHMiOiBbCisgICAgICAgICJodHRwczovL3d3dy5h
bWF6b24uY29tIiwKKyAgICAgICAgImh0dHBzOi8vd3d3LmFtYXpvbi5jb20vRXZlbi1GYXN0ZXIt
V2ViLVNpdGVzLVBlcmZvcm1hbmNlL2RwLzA1OTY1MjIzMDQiLAorICAgICAgICAiaHR0cHM6Ly93
d3cuZWJheS5jb20iLAorICAgICAgICAiaHR0cHM6Ly93d3cuZWJheS5jb20vZGVhbHMiLAorICAg
ICAgICAiaHR0cHM6Ly93d3cuY3JhaWdzbGlzdC5vcmciLAorICAgICAgICAiaHR0cHM6Ly93d3cu
Y3JhaWdzbGlzdC5vcmcvc2VhcmNoL3NzcyIsCisgICAgICAgICJodHRwczovL3d3dy53YWxtYXJ0
LmNvbSIsCisgICAgICAgICJodHRwczovL3d3dy53YWxtYXJ0LmNvbS9zZWFyY2gvP3F1ZXJ5PWZv
b2QiLAorICAgICAgICAiaHR0cHM6Ly93d3cuZXRzeS5jb20iLAorICAgICAgICAiaHR0cHM6Ly93
d3cuZXRzeS5jb20vYy9lbGVjdHJvbmljcy1hbmQtYWNjZXNzb3JpZXMiCisgICAgXQorfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9zb2Np
YWwuc3VpdGUgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3Nv
Y2lhbC5zdWl0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzZmMDcwN2M3OTU4OTlkYWVmMDY0OTMwODY5NGM4ZTFi
NmZiYWFjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2
ZXJfcGx0L3N1aXRlcy9zb2NpYWwuc3VpdGUKQEAgLTAsMCArMSwxNiBAQAoreworICAgICJ1cmxz
IjogWworICAgICAgICAiaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tIiwKKyAgICAgICAgImh0dHBz
Oi8vd3d3LmZhY2Vib29rLmNvbS9mYWNlYm9vayIsCisgICAgICAgICJodHRwczovL3d3dy50dW1i
bHIuY29tL3NlYXJjaC9hcHBsZSIsCisgICAgICAgICJodHRwOi8vcmVkaXNjb3ZlcmluZ2VhcnRo
LnR1bWJsci5jb20iLAorICAgICAgICAiaHR0cHM6Ly90d2l0dGVyLmNvbS9zZWFyY2g/cT13ZWJr
aXQiLAorICAgICAgICAiaHR0cHM6Ly90d2l0dGVyLmNvbS93ZWJraXQiLAorICAgICAgICAiaHR0
cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9leHBsb3JlL3RhZ3Mvc2t5IiwKKyAgICAgICAgImh0dHBz
Oi8vd3d3Lmluc3RhZ3JhbS5jb20vYXBwbGUiLAorICAgICAgICAiaHR0cHM6Ly93d3cucmVkZGl0
LmNvbSIsCisgICAgICAgICJodHRwczovL3d3dy5yZWRkaXQuY29tL3IvcHJvZ3JhbW1pbmciLAor
ICAgICAgICAiaHR0cHM6Ly93d3cueW91dHViZS5jb20iLAorICAgICAgICAiaHR0cHM6Ly93d3cu
eW91dHViZS5jb20vd2F0Y2g/dj1RNmRzUnBWeXlXcyIKKyAgICBdCit9CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvc3VpdGVzL3N1aXRlLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9zdWl0ZS5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYjdjZWJiZjNlMjY3YzJhMTJmOTA1NmZhNDBhMmU1MTY2MWVmOTAzCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3N1aXRlcy9zdWl0
ZS5weQpAQCAtMCwwICsxLDIyIEBACitpbXBvcnQganNvbgoraW1wb3J0IG9zCisKKworY2xhc3Mg
U3VpdGUob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3VpdGVuYW1lKToKKyAgICAg
ICAgZmlsZW5hbWUgPSAiezB9LnN1aXRlIi5mb3JtYXQoc3VpdGVuYW1lKQorICAgICAgICBmaWxl
cGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCBmaWxlbmFtZSkK
KyAgICAgICAgd2l0aCBvcGVuKGZpbGVwYXRoKSBhcyBzdWl0ZWZpbGU6CisgICAgICAgICAgICBf
c3VpdGUgPSBqc29uLmxvYWQoc3VpdGVmaWxlKQorICAgICAgICBzZWxmLnVybHMgPSBfc3VpdGVb
J3VybHMnXQorICAgICAgICBzZWxmLm5hbWUgPSBzdWl0ZW5hbWUKKyAgICAgICAgc2VsZi5hdHRl
bXB0cyA9IDIKKyAgICAgICAgc2VsZi5tYXhfYXR0ZW1wdHMgPSAyCisKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgZ2V0X2F2YWlsYWJsZV9zdWl0ZXMoY2xzKToKKyAgICAgICAgc3VpdGVzZGly
ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgICAgICBzdWl0ZXNsaXN0ID0gW29zLnBh
dGguc3BsaXRleHQoZilbMF0ubG93ZXIoKSBmb3IgZiBpbiBvcy5saXN0ZGlyKHN1aXRlc2Rpcikg
aWYgZi5lbmRzd2l0aCgnLnN1aXRlJyldCisgICAgICAgIGlmIG5vdCBzdWl0ZXNsaXN0OgorICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDYW50IGZpbmQgYW55IC5zdWl0ZSBmaWxlcyBpbiBk
aXJlY3RvcnkgJXMnICUgc3VpdGVzZGlyKQorICAgICAgICByZXR1cm4gc3VpdGVzbGlzdApkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3VybHJlc3VsdHMu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3dlYmRyaXZlcl9wbHQvdXJscmVzdWx0cy5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNjlkYTI3MDlmOTc4ZjFjOThjYjkzYjkzMDgzN2E5Y2U0MzllZDQyCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93ZWJkcml2ZXJfcGx0L3VybHJl
c3VsdHMucHkKQEAgLTAsMCArMSwzNyBAQAorZnJvbSBtYXRoIGltcG9ydCBzcXJ0CisKKworY2xh
c3MgVVJMUmVzdWx0cyhvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvdGFsdGlt
ZT0wLCBudW1fdXJscz0wLCBzdGRfZGV2PTAuMCk6CisgICAgICAgIHNlbGYudGltZSA9IHRvdGFs
dGltZQorICAgICAgICBzZWxmLmNvdW50ID0gbnVtX3VybHMKKyAgICAgICAgc2VsZi5zdGRfZGV2
X2NvdW50ZXIgPSBzdGRfZGV2CisKKyAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CisgICAg
ICAgIG5ld190aW1lID0gc2VsZi50aW1lICsgb3RoZXIudGltZQorICAgICAgICBuZXdfY291bnQg
PSBzZWxmLmNvdW50ICsgb3RoZXIuY291bnQKKyAgICAgICAgbmV3X3N0ZF9kZXZfY291bnRlciA9
IHNlbGYuc3RkX2Rldl9jb3VudGVyICsgb3RoZXIuc3RkX2Rldl9jb3VudGVyCisgICAgICAgIHJl
dHVybiBVUkxSZXN1bHRzKG5ld190aW1lLCBuZXdfY291bnQsIG5ld19zdGRfZGV2X2NvdW50ZXIp
CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWVhbihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5j
b3VudDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRpbWUgLyBmbG9hdChzZWxmLmNvdW50KQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIDAKKworICAgIEBwcm9wZXJ0eQorICAg
IGRlZiBjb2VmX3ZhcmlhbmNlKHNlbGYpOgorICAgICAgICBuID0gc2VsZi5jb3VudAorICAgICAg
ICBpZiBuIDw9IDE6CisgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICBzdGRfZGV2ID0gc3Fy
dCgoc2VsZi5zdGRfZGV2X2NvdW50ZXIgLyBmbG9hdChuIC0gMSkpIC0gKG4gLyBmbG9hdChuIC0g
MSkpICogKHNlbGYubWVhbiAqKiAyKSkKKyAgICAgICAgcmV0dXJuIChzdGRfZGV2ICogMTAwLjAp
IC8gc2VsZi5tZWFuCisKKyAgICBkZWYgcHJpbnRfcmVzdWx0cyhzZWxmLCB1cmwsIHJlc3VsdHNf
Zm9ybWF0X3N0cik6CisgICAgICAgIHN0cl90aW1lID0gc2VsZi5fZm9ybWF0X3RpbWUoc2VsZi5t
ZWFuKQorICAgICAgICBwcmludChyZXN1bHRzX2Zvcm1hdF9zdHIuZm9ybWF0KHRpbWU9c3RyX3Rp
bWUubGp1c3QoMTIpLCB2YXI9InswOi4yZn0lIi5mb3JtYXQoc2VsZi5jb2VmX3ZhcmlhbmNlKS5s
anVzdCgxMCksIHVybD11cmwpKQorCisgICAgZGVmIF9mb3JtYXRfdGltZShzZWxmLCB0aW1lKToK
KyAgICAgICAgcmV0dXJuICJ7fSBtcyIuZm9ybWF0KGludCh0aW1lKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>