<?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>174390</bug_id>
          
          <creation_ts>2017-07-11 13:59:10 -0700</creation_ts>
          <short_desc>Subclass Benchmark Runner script for future Web Driver support</short_desc>
          <delta_ts>2017-08-04 05:02:58 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>175186</dependson>
          <blocked>174056</blocked>
    
    <blocked>174443</blocked>
          <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>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1327727</commentid>
    <comment_count>0</comment_count>
    <who name="Matthew Stewart">matthew_r_stewart</who>
    <bug_when>2017-07-11 13:59:10 -0700</bug_when>
    <thetext>Subclass Benchmark Runner script for future Web Driver support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327735</commentid>
    <comment_count>1</comment_count>
      <attachid>315164</attachid>
    <who name="Matthew Stewart">matthew_r_stewart</who>
    <bug_when>2017-07-11 14:12:43 -0700</bug_when>
    <thetext>Created attachment 315164
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327807</commentid>
    <comment_count>2</comment_count>
      <attachid>315164</attachid>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2017-07-11 15:58:23 -0700</bug_when>
    <thetext>Comment on attachment 315164
Patch

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

good job.  Just fix up webdriver and websocket and I think we&apos;ll be good.

&gt; Tools/Scripts/webkitpy/benchmark_runner/benchmark_runner.py:62
&gt; +        pass

Probably should dump an error message if this version of the function gets called.  Something about instantiating an abstract class

&gt; Tools/Scripts/webkitpy/benchmark_runner/benchmark_runner.py:100
&gt; +        pass

ditto

&gt; Tools/Scripts/webkitpy/benchmark_runner/run_benchmark.py:40
&gt; +    parser.add_argument(&apos;--driver&apos;, dest=&apos;driver&apos;, default=&apos;web-socket&apos;, choices=[&apos;web-driver&apos;, &apos;web-socket&apos;])

webdriver I think should be one word same for websocket</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328238</commentid>
    <comment_count>3</comment_count>
      <attachid>315286</attachid>
    <who name="Matthew Stewart">matthew_r_stewart</who>
    <bug_when>2017-07-12 15:17:04 -0700</bug_when>
    <thetext>Created attachment 315286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1329785</commentid>
    <comment_count>4</comment_count>
      <attachid>315286</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-07-17 17:28:19 -0700</bug_when>
    <thetext>Comment on attachment 315286
Patch

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

&gt; Tools/Scripts/webkitpy/benchmark_runner/benchmark_runner.py:62
&gt; +        raise NotImplementedError(&apos;BenchmarkRunner is an abstract class and shouldn\&apos;t be instantiated.&apos;)

unnecessary &apos;pass&apos;?
Or would it make more sense to make it an abstractmethod?

&gt; Tools/Scripts/webkitpy/benchmark_runner/benchmark_runner.py:102
&gt; +        pass

It maybe cleaner to make execute function to be
with BenchmarkBuilder(self._plan_name, self._plan, self.name) as web_root:
    self._run_benchmark(int(self._plan[&apos;count&apos;]), web_root)

and add name = &apos;webdriver&apos; on WebDriverBenchmarkRunner and &apos;websocket&apos; on WebSocketBenchmarkRunner.

&gt; Tools/Scripts/webkitpy/benchmark_runner/run_benchmark.py:40
&gt; +    parser.add_argument(&apos;--driver&apos;, dest=&apos;driver&apos;, default=&apos;websocket&apos;, choices=[&apos;webdriver&apos;, &apos;websocket&apos;])

Maybe we could try something like
benchmark_runner_map = {
    WebDriverBenchmarkRunner.name: WebDriverBenchmarkRunner,
    WebSocketBenchmarkRunner.name: WebSocketBenchmarkRunner,
};

choices=benchmark_runner_map.keys()

&gt; Tools/Scripts/webkitpy/benchmark_runner/run_benchmark.py:96
&gt; +    if args.driver == &apos;webdriver&apos;:
&gt; +        runner = WebDriverBenchmarkRunner(args.plan, args.localCopy, args.countOverride, args.buildDir, args.output, args.platform, args.browser, args.scale_unit, args.device_id)
&gt; +    else:
&gt; +        runner = WebSocketBenchmarkRunner(args.plan, args.localCopy, args.countOverride, args.buildDir, args.output, args.platform, args.browser, args.scale_unit, args.device_id)

If we adopt &apos;benchmark_runner_map&apos;, then, there hat we can do is:
benchmark_runner_class = benchmark_runner_map[args.driver]
runner = benchmark_runner_class(args.plan, args.localCopy, args.countOverride, args.buildDir, args.output, args.platform, args.browser, args.scale_unit, args.device_id)

&gt; Tools/Scripts/webkitpy/benchmark_runner/run_benchmark.py:100
&gt; +

Remove this line

&gt; Tools/Scripts/webkitpy/benchmark_runner/webdriver_benchmark_runner.py:8
&gt; +from benchmark_runner import BenchmarkRunner
&gt; +from benchmark_builder import BenchmarkBuilder
&gt; +from selenium.webdriver.support.ui import WebDriverWait

nit, import should be alphabetical
Once execute is removed, BenchmarkBuilder is not needed in this file.

&gt; Tools/Scripts/webkitpy/benchmark_runner/webdriver_benchmark_runner.py:15
&gt; +

name = &apos;webdriver&apos;

&gt; Tools/Scripts/webkitpy/benchmark_runner/webdriver_benchmark_runner.py:23
&gt; +            url = &apos;file://%s/%s/%s&apos; % (web_root, self._plan_name, test_file)

I would recommend to use str.format.

&gt; Tools/Scripts/webkitpy/benchmark_runner/webdriver_benchmark_runner.py:34
&gt; +    def execute(self):
&gt; +        with BenchmarkBuilder(self._plan_name, self._plan, &apos;webdriver&apos;) as web_root:
&gt; +            self._run_benchmark(int(self._plan[&apos;count&apos;]), web_root)

Not necessary anymore.

&gt; Tools/Scripts/webkitpy/benchmark_runner/websocket_benchmark_runner.py:8
&gt; +from benchmark_builder import BenchmarkBuilder

Once execute is removed, this should be cleaned up as well.

&gt; Tools/Scripts/webkitpy/benchmark_runner/websocket_benchmark_runner.py:17
&gt; +

add name = &apos;websocket&apos;

&gt; Tools/Scripts/webkitpy/benchmark_runner/websocket_benchmark_runner.py:21
&gt; +        BenchmarkRunner.__init__(self, plan_file, local_copy, count_override, build_dir, output_file, platform, browser, scale_unit=True, device_id=None)

It would be better to use &apos;super(WebSocketBenchmarkRunner, self)&apos; instead.

&gt; Tools/Scripts/webkitpy/benchmark_runner/websocket_benchmark_runner.py:44
&gt; +    def execute(self):
&gt; +        with BenchmarkBuilder(self._plan_name, self._plan, &apos;websocket&apos;) as web_root:
&gt; +            self._run_benchmark(int(self._plan[&apos;count&apos;]), web_root)

Not needed anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330238</commentid>
    <comment_count>5</comment_count>
      <attachid>315873</attachid>
    <who name="Matthew Stewart">matthew_r_stewart</who>
    <bug_when>2017-07-18 18:56:20 -0700</bug_when>
    <thetext>Created attachment 315873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330250</commentid>
    <comment_count>6</comment_count>
      <attachid>315879</attachid>
    <who name="Matthew Stewart">matthew_r_stewart</who>
    <bug_when>2017-07-18 19:38:33 -0700</bug_when>
    <thetext>Created attachment 315879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330251</commentid>
    <comment_count>7</comment_count>
      <attachid>315879</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-07-18 19:44:58 -0700</bug_when>
    <thetext>Comment on attachment 315879
Patch

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

&gt; Tools/ChangeLog:6
&gt; +        Reviewed by Dewei Zhu.

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330510</commentid>
    <comment_count>8</comment_count>
      <attachid>315958</attachid>
    <who name="Matthew Stewart">matthew_r_stewart</who>
    <bug_when>2017-07-19 16:07:53 -0700</bug_when>
    <thetext>Created attachment 315958
Subclass Benchmark Runner script for WebDriver support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331800</commentid>
    <comment_count>9</comment_count>
      <attachid>315958</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-24 17:14:52 -0700</bug_when>
    <thetext>Comment on attachment 315958
Subclass Benchmark Runner script for WebDriver support

Rejecting attachment 315958 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 315958, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Dewei Zhu found in /Volumes/Data/EWS/WebKit/Tools/ChangeLog does not appear to be a valid reviewer according to contributors.json.
/Volumes/Data/EWS/WebKit/Tools/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-queues.webkit.org/results/4181285</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331815</commentid>
    <comment_count>10</comment_count>
      <attachid>316334</attachid>
    <who name="Matthew Stewart">matthew_r_stewart</who>
    <bug_when>2017-07-24 18:01:38 -0700</bug_when>
    <thetext>Created attachment 316334
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331827</commentid>
    <comment_count>11</comment_count>
      <attachid>316334</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-24 18:42:15 -0700</bug_when>
    <thetext>Comment on attachment 316334
patch

Rejecting attachment 316334 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 316334, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
.webkit.org/git/WebKit
   e1d65cb..c668947  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 219851 = e1d65cbd37dbe81d09d4d06fec21583903fbd13e
r219852 = c66894799395d770494683b1519ab41f7e4b007b
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: http://webkit-queues.webkit.org/results/4181637</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331847</commentid>
    <comment_count>12</comment_count>
      <attachid>316344</attachid>
    <who name="Matthew Stewart">matthew_r_stewart</who>
    <bug_when>2017-07-24 20:27:33 -0700</bug_when>
    <thetext>Created attachment 316344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331866</commentid>
    <comment_count>13</comment_count>
      <attachid>316344</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-24 21:10:03 -0700</bug_when>
    <thetext>Comment on attachment 316344
Patch

Clearing flags on attachment: 316344

Committed r219857: &lt;http://trac.webkit.org/changeset/219857&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331867</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-24 21:10:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315164</attachid>
            <date>2017-07-11 14:12:43 -0700</date>
            <delta_ts>2017-07-12 15:17:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174390-20170711141242.patch</filename>
            <type>text/plain</type>
            <size>11123</size>
            <attacher name="Matthew Stewart">matthew_r_stewart</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MzU1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzdhNzgzYTczMTg5NzIyM2E1NzMxMzcyZjUwYzk3ODY5
YWQ2YjQ1Mi4uZjExOTI3NWYxMDZkMmI3MDM2NTliNTkwZmE0MWY5N2VlOTdhYWExMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1
IEBACisyMDE3LTA3LTExICBNYXR0aGV3IFN0ZXdhcnQgIDxtYXR0aGV3X3Jfc3Rld2FydEBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3ViY2xhc3MgQmVuY2htYXJrIFJ1bm5lciBzY3JpcHQgZm9yIGZ1
dHVyZSBXZWIgRHJpdmVyIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NDM5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNwbGl0IGJlbmNobWFya19ydW5uZXIgaW50byB3ZWJfc29ja2V0IGFu
ZCB3ZWJfZHJpdmVyIHN1YmNsYXNzZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2Jl
bmNobWFya19ydW5uZXIvYmVuY2htYXJrX2J1aWxkZXIucHk6CisgICAgICAgIChCZW5jaG1hcmtC
dWlsZGVyLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19y
dW5uZXIvYmVuY2htYXJrX3J1bm5lci5weToKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5fX2lu
aXRfXyk6CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIuX2ZpbmRfcGxhbl9maWxlKToKKyAgICAg
ICAgKEJlbmNobWFya1J1bm5lci5fcnVuX29uZV90ZXN0KToKKyAgICAgICAgKEJlbmNobWFya1J1
bm5lci5leGVjdXRlKToKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5fZ2V0X3Jlc3VsdCk6IERl
bGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3J1bl9i
ZW5jaG1hcmsucHk6CisgICAgICAgIChwYXJzZV9hcmdzKToKKyAgICAgICAgKHN0YXJ0KToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvd2ViX2RyaXZlcl9iZW5j
aG1hcmtfcnVubmVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFdlYkRyaXZlckJlbmNobWFya1J1bm5l
cik6CisgICAgICAgIChXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIuX2dldF9yZXN1bHQpOgorICAg
ICAgICAoV2ViRHJpdmVyQmVuY2htYXJrUnVubmVyLl9ydW5fb25lX3Rlc3QpOgorICAgICAgICAo
V2ViRHJpdmVyQmVuY2htYXJrUnVubmVyLmV4ZWN1dGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJfc29ja2V0X2JlbmNobWFya19ydW5uZXIucHk6IEFk
ZGVkLgorICAgICAgICAoV2ViU29ja2V0QmVuY2htYXJrUnVubmVyKToKKyAgICAgICAgKFdlYlNv
Y2tldEJlbmNobWFya1J1bm5lci5fX2luaXRfXyk6CisgICAgICAgIChXZWJTb2NrZXRCZW5jaG1h
cmtSdW5uZXIuX2dldF9yZXN1bHQpOgorICAgICAgICAoV2ViU29ja2V0QmVuY2htYXJrUnVubmVy
Ll9ydW5fb25lX3Rlc3QpOgorICAgICAgICAoV2ViU29ja2V0QmVuY2htYXJrUnVubmVyLmV4ZWN1
dGUpOgorCiAyMDE3LTA3LTExICBMdWNhcyBGb3JzY2hsZXIgIDxsZm9yc2NobGVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBDb25maWd1cmUgYnVpbGRib3QgdG8gdHJhbnNmZXIgYWxsIGFyY2hpdmVz
IHRvIFMzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVu
bmVyL2JlbmNobWFya19idWlsZGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1h
cmtfcnVubmVyL2JlbmNobWFya19idWlsZGVyLnB5CmluZGV4IGEzMmVjN2M0ZWI3N2ZiNGIyMTJm
MmE1MWFhMzM1MjM5OWIzNmFlMGYuLjc4ODY2NzEyOGU4YzQ4NjM2YWZjODY3NGMzZmM0NjhjMzhk
OThjNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5l
ci9iZW5jaG1hcmtfYnVpbGRlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNo
bWFya19ydW5uZXIvYmVuY2htYXJrX2J1aWxkZXIucHkKQEAgLTE2LDkgKzE2LDEwIEBAIF9sb2cg
PSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCiBjbGFzcyBCZW5jaG1hcmtCdWlsZGVy
KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBsYW4pOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBuYW1lLCBwbGFuLCBkcml2ZXIpOgogICAgICAgICBzZWxmLl9uYW1lID0g
bmFtZQogICAgICAgICBzZWxmLl9wbGFuID0gcGxhbgorICAgICAgICBzZWxmLl9kcml2ZXIgPSBk
cml2ZXIKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIHNlbGYuX3dlYl9yb290
ID0gdGVtcGZpbGUubWtkdGVtcCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2JlbmNobWFya19ydW5uZXIvYmVuY2htYXJrX3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcnVubmVyLnB5CmluZGV4IDdhZDJmYmI1
M2ExNzE1MDMxOGExYjliM2FhMDRhNDVkYjEyODE3MWMuLmRmMDczYjI3Y2NlMjYyZjVhYjBlYmY0
ZDU1YTgxYmFmN2NiZTlkNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVu
Y2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcnVubmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcnVubmVyLnB5CkBAIC0xMiwxMSArMTIs
OCBAQCBpbXBvcnQgdHlwZXMKIGltcG9ydCBvcwogaW1wb3J0IHVybHBhcnNlCiAKLWZyb20gYmVu
Y2htYXJrX2J1aWxkZXIgaW1wb3J0IEJlbmNobWFya0J1aWxkZXIKIGZyb20gYmVuY2htYXJrX3Jl
c3VsdHMgaW1wb3J0IEJlbmNobWFya1Jlc3VsdHMKIGZyb20gYnJvd3Nlcl9kcml2ZXIuYnJvd3Nl
cl9kcml2ZXJfZmFjdG9yeSBpbXBvcnQgQnJvd3NlckRyaXZlckZhY3RvcnkKLWZyb20gaHR0cF9z
ZXJ2ZXJfZHJpdmVyLmh0dHBfc2VydmVyX2RyaXZlcl9mYWN0b3J5IGltcG9ydCBIVFRQU2VydmVy
RHJpdmVyRmFjdG9yeQotZnJvbSB1dGlscyBpbXBvcnQgdGltZW91dAogCiAKIF9sb2cgPSBsb2dn
aW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTM3LDggKzM0LDYgQEAgY2xhc3MgQmVuY2htYXJr
UnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgaWYgY291bnRfb3ZlcnJpZGU6CiAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3BsYW5bJ2NvdW50J10gPSBjb3VudF9vdmVycmlkZQogICAg
ICAgICAgICAgICAgIHNlbGYuX2Jyb3dzZXJfZHJpdmVyID0gQnJvd3NlckRyaXZlckZhY3Rvcnku
Y3JlYXRlKHBsYXRmb3JtLCBicm93c2VyKQotICAgICAgICAgICAgICAgIHNlbGYuX2h0dHBfc2Vy
dmVyX2RyaXZlciA9IEhUVFBTZXJ2ZXJEcml2ZXJGYWN0b3J5LmNyZWF0ZShwbGF0Zm9ybSkKLSAg
ICAgICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIuc2V0X2RldmljZV9pZChkZXZp
Y2VfaWQpCiAgICAgICAgICAgICAgICAgc2VsZi5fYnVpbGRfZGlyID0gb3MucGF0aC5hYnNwYXRo
KGJ1aWxkX2RpcikgaWYgYnVpbGRfZGlyIGVsc2UgTm9uZQogICAgICAgICAgICAgICAgIHNlbGYu
X291dHB1dF9maWxlID0gb3V0cHV0X2ZpbGUKICAgICAgICAgICAgICAgICBzZWxmLl9zY2FsZV91
bml0ID0gc2NhbGVfdW5pdApAQCAtNjMsMjQgKzU4LDggQEAgY2xhc3MgQmVuY2htYXJrUnVubmVy
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFic1BhdGgKICAgICAgICAgcmV0dXJu
IHBsYW5fZmlsZQogCi0gICAgZGVmIF9nZXRfcmVzdWx0KHNlbGYsIHRlc3RfdXJsKToKLSAgICAg
ICAgcmVzdWx0ID0gc2VsZi5fYnJvd3Nlcl9kcml2ZXIuYWRkX2FkZGl0aW9uYWxfcmVzdWx0cyh0
ZXN0X3VybCwgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLmZldGNoX3Jlc3VsdCgpKQotICAgICAg
ICBhc3NlcnQobm90IHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5nZXRfcmV0dXJuX2NvZGUoKSkK
LSAgICAgICAgcmV0dXJuIHJlc3VsdAotCiAgICAgZGVmIF9ydW5fb25lX3Rlc3Qoc2VsZiwgd2Vi
X3Jvb3QsIHRlc3RfZmlsZSk6Ci0gICAgICAgIHJlc3VsdCA9IE5vbmUKLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLnNlcnZlKHdlYl9yb290KQotICAg
ICAgICAgICAgdXJsID0gdXJscGFyc2UudXJsam9pbihzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIu
YmFzZV91cmwoKSwgc2VsZi5fcGxhbl9uYW1lICsgJy8nICsgdGVzdF9maWxlKQotICAgICAgICAg
ICAgc2VsZi5fYnJvd3Nlcl9kcml2ZXIubGF1bmNoX3VybCh1cmwsIHNlbGYuX3BsYW5bJ29wdGlv
bnMnXSwgc2VsZi5fYnVpbGRfZGlyKQotICAgICAgICAgICAgd2l0aCB0aW1lb3V0KHNlbGYuX3Bs
YW5bJ3RpbWVvdXQnXSk6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fZ2V0X3Jlc3Vs
dCh1cmwpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9icm93c2VyX2RyaXZl
ci5jbG9zZV9icm93c2VycygpCi0gICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIu
a2lsbF9zZXJ2ZXIoKQotCi0gICAgICAgIHJldHVybiBqc29uLmxvYWRzKHJlc3VsdCkKKyAgICAg
ICAgcGFzcwogCiAgICAgZGVmIF9ydW5fYmVuY2htYXJrKHNlbGYsIGNvdW50LCB3ZWJfcm9vdCk6
CiAgICAgICAgIHJlc3VsdHMgPSBbXQpAQCAtMTE4LDggKzk3LDcgQEAgY2xhc3MgQmVuY2htYXJr
UnVubmVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuc2hvd19yZXN1bHRzKHJlc3VsdHMsIHNlbGYu
X3NjYWxlX3VuaXQpCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmKToKLSAgICAgICAgd2l0aCBCZW5j
aG1hcmtCdWlsZGVyKHNlbGYuX3BsYW5fbmFtZSwgc2VsZi5fcGxhbikgYXMgd2ViX3Jvb3Q6Ci0g
ICAgICAgICAgICBzZWxmLl9ydW5fYmVuY2htYXJrKGludChzZWxmLl9wbGFuWydjb3VudCddKSwg
d2ViX3Jvb3QpCisgICAgICAgIHBhc3MKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfZHVt
cChjbHMsIHJlc3VsdHMsIG91dHB1dF9maWxlKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9ydW5fYmVuY2htYXJrLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3J1bl9iZW5jaG1hcmsucHkKaW5kZXggN2Y2Yjgw
ODZkNjJkZTVhZTJlY2JhNGUyNjY1MGJmNTE0NTVlN2VlMy4uOGYwYjk0ZDk0OGY4ZTZmZmJkM2Q0
MmMwZjE1YWY0MjlmZGU0YjZhMSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9i
ZW5jaG1hcmtfcnVubmVyL3J1bl9iZW5jaG1hcmsucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9iZW5jaG1hcmtfcnVubmVyL3J1bl9iZW5jaG1hcmsucHkKQEAgLTcsNyArNyw4IEBAIGlt
cG9ydCBwbGF0Zm9ybQogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKLWZyb20gYmVuY2htYXJrX3J1
bm5lciBpbXBvcnQgQmVuY2htYXJrUnVubmVyCitmcm9tIHdlYl9kcml2ZXJfYmVuY2htYXJrX3J1
bm5lciBpbXBvcnQgV2ViRHJpdmVyQmVuY2htYXJrUnVubmVyCitmcm9tIHdlYl9zb2NrZXRfYmVu
Y2htYXJrX3J1bm5lciBpbXBvcnQgV2ViU29ja2V0QmVuY2htYXJrUnVubmVyCiBmcm9tIGJyb3dz
ZXJfZHJpdmVyLmJyb3dzZXJfZHJpdmVyX2ZhY3RvcnkgaW1wb3J0IEJyb3dzZXJEcml2ZXJGYWN0
b3J5CiAKIApAQCAtMzYsNiArMzcsNyBAQCBkZWYgcGFyc2VfYXJncygpOgogICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoJy0tbG9jYWwtY29weScsIGRlc3Q9J2xvY2FsQ29weScsIGhlbHA9J1BhdGgg
dG8gYSBsb2NhbCBjb3B5IG9mIHRoZSBiZW5jaG1hcmsuIGUuZy4gUGVyZm9ybWFuY2VUZXN0cy9T
dW5TcGlkZXIvJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNvdW50JywgZGVzdD0nY291
bnRPdmVycmlkZScsIHR5cGU9aW50LCBoZWxwPSdOdW1iZXIgb2YgdGltZXMgdG8gcnVuIHRoZSBi
ZW5jaG1hcmsuIGUuZy4gNScpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kZXZpY2UtaWQn
LCBkZXN0PSdkZXZpY2VfaWQnLCBkZWZhdWx0PU5vbmUpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgnLS1kcml2ZXInLCBkZXN0PSdkcml2ZXInLCBkZWZhdWx0PSd3ZWItc29ja2V0JywgY2hvaWNl
cz1bJ3dlYi1kcml2ZXInLCAnd2ViLXNvY2tldCddKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Jy0tbm8tYWRqdXN0LXVuaXQnLCBkZXN0PSdzY2FsZV91bml0JywgYWN0aW9uPSdzdG9yZV9mYWxz
ZScpCiAgICAgbXV0dWFsX2dyb3VwID0gcGFyc2VyLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3Jv
dXAocmVxdWlyZWQ9VHJ1ZSkKICAgICBtdXR1YWxfZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXJlYWQt
cmVzdWx0cy1qc29uJywgZGVzdD0nanNvbl9maWxlJywgaGVscD0nU3BlY2lmeSBmaWxlIHlvdSB3
YW50IHRvIGZvcm1hdCcpCkBAIC04OCwxMCArOTAsMTQgQEAgZGVmIHN0YXJ0KGFyZ3MpOgogICAg
ICAgICBpZiBmYWlsZWQ6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCdUaGUgZm9sbG93aW5nIGJl
bmNobWFyayBwbGFucyBoYXZlIGZhaWxlZDogJXMnICUgZmFpbGVkKQogICAgICAgICByZXR1cm4g
bGVuKGZhaWxlZCkKLSAgICBydW5uZXIgPSBCZW5jaG1hcmtSdW5uZXIoYXJncy5wbGFuLCBhcmdz
LmxvY2FsQ29weSwgYXJncy5jb3VudE92ZXJyaWRlLCBhcmdzLmJ1aWxkRGlyLCBhcmdzLm91dHB1
dCwgYXJncy5wbGF0Zm9ybSwgYXJncy5icm93c2VyLCBhcmdzLnNjYWxlX3VuaXQsIGFyZ3MuZGV2
aWNlX2lkKQorICAgIGlmIGFyZ3MuZHJpdmVyID09ICd3ZWItZHJpdmVyJzoKKyAgICAgICAgcnVu
bmVyID0gV2ViRHJpdmVyQmVuY2htYXJrUnVubmVyKGFyZ3MucGxhbiwgYXJncy5sb2NhbENvcHks
IGFyZ3MuY291bnRPdmVycmlkZSwgYXJncy5idWlsZERpciwgYXJncy5vdXRwdXQsIGFyZ3MucGxh
dGZvcm0sIGFyZ3MuYnJvd3NlciwgYXJncy5zY2FsZV91bml0LCBhcmdzLmRldmljZV9pZCkKKyAg
ICBlbHNlOgorICAgICAgICBydW5uZXIgPSBXZWJTb2NrZXRCZW5jaG1hcmtSdW5uZXIoYXJncy5w
bGFuLCBhcmdzLmxvY2FsQ29weSwgYXJncy5jb3VudE92ZXJyaWRlLCBhcmdzLmJ1aWxkRGlyLCBh
cmdzLm91dHB1dCwgYXJncy5wbGF0Zm9ybSwgYXJncy5icm93c2VyLCBhcmdzLnNjYWxlX3VuaXQs
IGFyZ3MuZGV2aWNlX2lkKQogICAgIHJ1bm5lci5leGVjdXRlKCkKIAogCisKIGRlZiBmb3JtYXRf
bG9nZ2VyKGxvZ2dlcik6CiAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuSU5GTykKICAgICBj
aCA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2JlbmNobWFya19ydW5uZXIvd2ViX2RyaXZlcl9iZW5jaG1hcmtfcnVubmVyLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3dlYl9kcml2ZXJfYmVuY2ht
YXJrX3J1bm5lci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDFmMTY3ZTY5Zjc2YWYzODg4NDhiNjI1ZGJiZTVj
NzczZTg4ODE1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5j
aG1hcmtfcnVubmVyL3dlYl9kcml2ZXJfYmVuY2htYXJrX3J1bm5lci5weQpAQCAtMCwwICsxLDM0
IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworaW1wb3J0IGpzb24KK2ltcG9ydCBsb2dnaW5n
CisKK2Zyb20gYmVuY2htYXJrX3J1bm5lciBpbXBvcnQgQmVuY2htYXJrUnVubmVyCitmcm9tIGJl
bmNobWFya19idWlsZGVyIGltcG9ydCBCZW5jaG1hcmtCdWlsZGVyCitmcm9tIHNlbGVuaXVtLndl
YmRyaXZlci5zdXBwb3J0LnVpIGltcG9ydCBXZWJEcml2ZXJXYWl0CisKKworX2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKK2NsYXNzIFdlYkRyaXZlckJlbmNobWFya1J1bm5l
cihCZW5jaG1hcmtSdW5uZXIpOgorCisgICAgZGVmIF9nZXRfcmVzdWx0KHNlbGYsIGRyaXZlcik6
CisgICAgICAgIHJlc3VsdCA9IGRyaXZlci5leGVjdXRlX3NjcmlwdCgicmV0dXJuIHdpbmRvdy53
ZWJkcml2ZXJfcmVzdWx0cyIpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfcnVu
X29uZV90ZXN0KHNlbGYsIHdlYl9yb290LCB0ZXN0X2ZpbGUpOgorICAgICAgICByZXN1bHQgPSBO
b25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHVybCA9ICdmaWxlOi8vJXMvJXMvJXMnICUg
KHdlYl9yb290LCBzZWxmLl9wbGFuX25hbWUsIHRlc3RfZmlsZSkKKyAgICAgICAgICAgIGRyaXZl
ciA9IHNlbGYuX2Jyb3dzZXJfZHJpdmVyLmxhdW5jaF9kcml2ZXIodXJsLCBzZWxmLl9wbGFuWydv
cHRpb25zJ10sIHNlbGYuX2J1aWxkX2RpcikKKyAgICAgICAgICAgIF9sb2cuaW5mbygnV2FpdGlu
ZyBvbiByZXN1bHRzIGZyb20gd2ViIGJyb3dzZXInKQorICAgICAgICAgICAgcmVzdWx0ID0gV2Vi
RHJpdmVyV2FpdChkcml2ZXIsIHNlbGYuX3BsYW5bJ3RpbWVvdXQnXSwgcG9sbF9mcmVxdWVuY3k9
MS4wKS51bnRpbChzZWxmLl9nZXRfcmVzdWx0KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAg
ICAgc2VsZi5fYnJvd3Nlcl9kcml2ZXIuY2xvc2VfYnJvd3NlcnMoKQorCisgICAgICAgIHJldHVy
biBqc29uLmxvYWRzKHJlc3VsdCkKKworICAgIGRlZiBleGVjdXRlKHNlbGYpOgorICAgICAgICB3
aXRoIEJlbmNobWFya0J1aWxkZXIoc2VsZi5fcGxhbl9uYW1lLCBzZWxmLl9wbGFuLCAnd2ViLWRy
aXZlcicpIGFzIHdlYl9yb290OgorICAgICAgICAgICAgc2VsZi5fcnVuX2JlbmNobWFyayhpbnQo
c2VsZi5fcGxhblsnY291bnQnXSksIHdlYl9yb290KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3dlYl9zb2NrZXRfYmVuY2htYXJrX3J1bm5lci5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJfc29ja2V0X2Jl
bmNobWFya19ydW5uZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGEyZjM3YmIwOTNiN2ZjMjgwZjFiZWY2NDU0
ZWQwYmE3OGY2ZWI4NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
YmVuY2htYXJrX3J1bm5lci93ZWJfc29ja2V0X2JlbmNobWFya19ydW5uZXIucHkKQEAgLTAsMCAr
MSw0NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKK2ltcG9ydCBqc29uCitpbXBvcnQgbG9n
Z2luZworaW1wb3J0IHVybHBhcnNlCisKK2Zyb20gYmVuY2htYXJrX3J1bm5lciBpbXBvcnQgQmVu
Y2htYXJrUnVubmVyCitmcm9tIGJlbmNobWFya19idWlsZGVyIGltcG9ydCBCZW5jaG1hcmtCdWls
ZGVyCitmcm9tIGh0dHBfc2VydmVyX2RyaXZlci5odHRwX3NlcnZlcl9kcml2ZXJfZmFjdG9yeSBp
bXBvcnQgSFRUUFNlcnZlckRyaXZlckZhY3RvcnkKK2Zyb20gdXRpbHMgaW1wb3J0IHRpbWVvdXQK
KworCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworY2xhc3MgV2ViU29j
a2V0QmVuY2htYXJrUnVubmVyKEJlbmNobWFya1J1bm5lcik6CisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgcGxhbl9maWxlLCBsb2NhbF9jb3B5LCBjb3VudF9vdmVycmlkZSwgYnVpbGRfZGlyLCBv
dXRwdXRfZmlsZSwgcGxhdGZvcm0sIGJyb3dzZXIsIHNjYWxlX3VuaXQ9VHJ1ZSwgZGV2aWNlX2lk
PU5vbmUpOgorICAgICAgICBzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIgPSBIVFRQU2VydmVyRHJp
dmVyRmFjdG9yeS5jcmVhdGUocGxhdGZvcm0pCisgICAgICAgIHNlbGYuX2h0dHBfc2VydmVyX2Ry
aXZlci5zZXRfZGV2aWNlX2lkKGRldmljZV9pZCkKKyAgICAgICAgQmVuY2htYXJrUnVubmVyLl9f
aW5pdF9fKHNlbGYsIHBsYW5fZmlsZSwgbG9jYWxfY29weSwgY291bnRfb3ZlcnJpZGUsIGJ1aWxk
X2Rpciwgb3V0cHV0X2ZpbGUsIHBsYXRmb3JtLCBicm93c2VyLCBzY2FsZV91bml0PVRydWUsIGRl
dmljZV9pZD1Ob25lKQorCisgICAgZGVmIF9nZXRfcmVzdWx0KHNlbGYsIHRlc3RfdXJsKToKKyAg
ICAgICAgcmVzdWx0ID0gc2VsZi5fYnJvd3Nlcl9kcml2ZXIuYWRkX2FkZGl0aW9uYWxfcmVzdWx0
cyh0ZXN0X3VybCwgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLmZldGNoX3Jlc3VsdCgpKQorICAg
ICAgICBhc3NlcnQobm90IHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5nZXRfcmV0dXJuX2NvZGUo
KSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIF9ydW5fb25lX3Rlc3Qoc2VsZiwg
d2ViX3Jvb3QsIHRlc3RfZmlsZSk6CisgICAgICAgIHJlc3VsdCA9IE5vbmUKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLnNlcnZlKHdlYl9yb290KQor
ICAgICAgICAgICAgdXJsID0gdXJscGFyc2UudXJsam9pbihzZWxmLl9odHRwX3NlcnZlcl9kcml2
ZXIuYmFzZV91cmwoKSwgc2VsZi5fcGxhbl9uYW1lICsgJy8nICsgdGVzdF9maWxlKQorICAgICAg
ICAgICAgc2VsZi5fYnJvd3Nlcl9kcml2ZXIubGF1bmNoX3VybCh1cmwsIHNlbGYuX3BsYW5bJ29w
dGlvbnMnXSwgc2VsZi5fYnVpbGRfZGlyKQorICAgICAgICAgICAgd2l0aCB0aW1lb3V0KHNlbGYu
X3BsYW5bJ3RpbWVvdXQnXSk6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fZ2V0X3Jl
c3VsdCh1cmwpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9icm93c2VyX2Ry
aXZlci5jbG9zZV9icm93c2VycygpCisgICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlcl9kcml2
ZXIua2lsbF9zZXJ2ZXIoKQorCisgICAgICAgIHJldHVybiBqc29uLmxvYWRzKHJlc3VsdCkKKwor
ICAgIGRlZiBleGVjdXRlKHNlbGYpOgorICAgICAgICB3aXRoIEJlbmNobWFya0J1aWxkZXIoc2Vs
Zi5fcGxhbl9uYW1lLCBzZWxmLl9wbGFuLCAnd2ViLXNvY2tldCcpIGFzIHdlYl9yb290OgorICAg
ICAgICAgICAgc2VsZi5fcnVuX2JlbmNobWFyayhpbnQoc2VsZi5fcGxhblsnY291bnQnXSksIHdl
Yl9yb290KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315286</attachid>
            <date>2017-07-12 15:17:04 -0700</date>
            <delta_ts>2017-07-18 18:56:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174390-20170712151703.patch</filename>
            <type>text/plain</type>
            <size>11405</size>
            <attacher name="Matthew Stewart">matthew_r_stewart</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MzU1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzdhNzgzYTczMTg5NzIyM2E1NzMxMzcyZjUwYzk3ODY5
YWQ2YjQ1Mi4uOTdmNGQ5MmNhNjVjNDE0MGI0OGUzNjkzZDU2M2I1ZWM3ZWRlMjNkNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3
IEBACisyMDE3LTA3LTEyICBNYXR0aGV3IFN0ZXdhcnQgIDxtYXR0aGV3X3Jfc3Rld2FydEBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3ViY2xhc3MgQmVuY2htYXJrIFJ1bm5lciBzY3JpcHQgZm9yIGZ1
dHVyZSBXZWJEcml2ZXIgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc0MzkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU3RlcGhhbmllIExl
d2lzLgorCisgICAgICAgIFNwbGl0IGJlbmNobWFya19ydW5uZXIgaW50byB3ZWJzb2NrZXQgYW5k
IHdlYmRyaXZlciBzdWJjbGFzc2VzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iZW5j
aG1hcmtfcnVubmVyL2JlbmNobWFya19idWlsZGVyLnB5OgorICAgICAgICAoQmVuY2htYXJrQnVp
bGRlci5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVu
bmVyL2JlbmNobWFya19ydW5uZXIucHk6CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIuX19pbml0
X18pOgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLl9maW5kX3BsYW5fZmlsZSk6CisgICAgICAg
IChCZW5jaG1hcmtSdW5uZXIuX3J1bl9vbmVfdGVzdC5hbmQpOgorICAgICAgICAoQmVuY2htYXJr
UnVubmVyLl9ydW5fb25lX3Rlc3QpOgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLmV4ZWN1dGUu
YW5kKToKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5leGVjdXRlKToKKyAgICAgICAgKEJlbmNo
bWFya1J1bm5lci5fZ2V0X3Jlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9iZW5jaG1hcmtfcnVubmVyL3J1bl9iZW5jaG1hcmsucHk6CisgICAgICAgIChwYXJzZV9h
cmdzKToKKyAgICAgICAgKHN0YXJ0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JlbmNo
bWFya19ydW5uZXIvd2ViZHJpdmVyX2JlbmNobWFya19ydW5uZXIucHk6IEFkZGVkLgorICAgICAg
ICAoV2ViRHJpdmVyQmVuY2htYXJrUnVubmVyKToKKyAgICAgICAgKFdlYkRyaXZlckJlbmNobWFy
a1J1bm5lci5fZ2V0X3Jlc3VsdCk6CisgICAgICAgIChXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIu
X3J1bl9vbmVfdGVzdCk6CisgICAgICAgIChXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIuZXhlY3V0
ZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3dlYnNvY2tl
dF9iZW5jaG1hcmtfcnVubmVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFdlYlNvY2tldEJlbmNobWFy
a1J1bm5lcik6CisgICAgICAgIChXZWJTb2NrZXRCZW5jaG1hcmtSdW5uZXIuX19pbml0X18pOgor
ICAgICAgICAoV2ViU29ja2V0QmVuY2htYXJrUnVubmVyLl9nZXRfcmVzdWx0KToKKyAgICAgICAg
KFdlYlNvY2tldEJlbmNobWFya1J1bm5lci5fcnVuX29uZV90ZXN0KToKKyAgICAgICAgKFdlYlNv
Y2tldEJlbmNobWFya1J1bm5lci5leGVjdXRlKToKKwogMjAxNy0wNy0xMSAgTHVjYXMgRm9yc2No
bGVyICA8bGZvcnNjaGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ29uZmlndXJlIGJ1aWxkYm90
IHRvIHRyYW5zZmVyIGFsbCBhcmNoaXZlcyB0byBTMy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfYnVpbGRlci5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfYnVpbGRlci5weQpp
bmRleCBhMzJlYzdjNGViNzdmYjRiMjEyZjJhNTFhYTMzNTIzOTliMzZhZTBmLi43ODg2NjcxMjhl
OGM0ODYzNmFmYzg2NzRjM2ZjNDY4YzM4ZDk4YzcxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvYmVuY2htYXJrX2J1aWxkZXIucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2JlbmNobWFya19idWlsZGVyLnB5
CkBAIC0xNiw5ICsxNiwxMCBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAK
IAogY2xhc3MgQmVuY2htYXJrQnVpbGRlcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBuYW1lLCBwbGFuKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGxhbiwgZHJpdmVy
KToKICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5fcGxhbiA9IHBsYW4K
KyAgICAgICAgc2VsZi5fZHJpdmVyID0gZHJpdmVyCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYp
OgogICAgICAgICBzZWxmLl93ZWJfcm9vdCA9IHRlbXBmaWxlLm1rZHRlbXAoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2JlbmNobWFya19ydW5u
ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvYmVuY2htYXJr
X3J1bm5lci5weQppbmRleCA3YWQyZmJiNTNhMTcxNTAzMThhMWI5YjNhYTA0YTQ1ZGIxMjgxNzFj
Li44M2NjY2JhYjNkZjBhNGY1NDE4ZjBmZDk2ZTQzZTUxODFhNjFmNDM3IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvYmVuY2htYXJrX3J1bm5lci5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvYmVuY2htYXJr
X3J1bm5lci5weQpAQCAtMTIsMTEgKzEyLDggQEAgaW1wb3J0IHR5cGVzCiBpbXBvcnQgb3MKIGlt
cG9ydCB1cmxwYXJzZQogCi1mcm9tIGJlbmNobWFya19idWlsZGVyIGltcG9ydCBCZW5jaG1hcmtC
dWlsZGVyCiBmcm9tIGJlbmNobWFya19yZXN1bHRzIGltcG9ydCBCZW5jaG1hcmtSZXN1bHRzCiBm
cm9tIGJyb3dzZXJfZHJpdmVyLmJyb3dzZXJfZHJpdmVyX2ZhY3RvcnkgaW1wb3J0IEJyb3dzZXJE
cml2ZXJGYWN0b3J5Ci1mcm9tIGh0dHBfc2VydmVyX2RyaXZlci5odHRwX3NlcnZlcl9kcml2ZXJf
ZmFjdG9yeSBpbXBvcnQgSFRUUFNlcnZlckRyaXZlckZhY3RvcnkKLWZyb20gdXRpbHMgaW1wb3J0
IHRpbWVvdXQKIAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC0zNyw4
ICszNCw2IEBAIGNsYXNzIEJlbmNobWFya1J1bm5lcihvYmplY3QpOgogICAgICAgICAgICAgICAg
IGlmIGNvdW50X292ZXJyaWRlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9wbGFuWydjb3Vu
dCddID0gY291bnRfb3ZlcnJpZGUKICAgICAgICAgICAgICAgICBzZWxmLl9icm93c2VyX2RyaXZl
ciA9IEJyb3dzZXJEcml2ZXJGYWN0b3J5LmNyZWF0ZShwbGF0Zm9ybSwgYnJvd3NlcikKLSAgICAg
ICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIgPSBIVFRQU2VydmVyRHJpdmVyRmFj
dG9yeS5jcmVhdGUocGxhdGZvcm0pCi0gICAgICAgICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXJf
ZHJpdmVyLnNldF9kZXZpY2VfaWQoZGV2aWNlX2lkKQogICAgICAgICAgICAgICAgIHNlbGYuX2J1
aWxkX2RpciA9IG9zLnBhdGguYWJzcGF0aChidWlsZF9kaXIpIGlmIGJ1aWxkX2RpciBlbHNlIE5v
bmUKICAgICAgICAgICAgICAgICBzZWxmLl9vdXRwdXRfZmlsZSA9IG91dHB1dF9maWxlCiAgICAg
ICAgICAgICAgICAgc2VsZi5fc2NhbGVfdW5pdCA9IHNjYWxlX3VuaXQKQEAgLTYzLDI0ICs1OCw5
IEBAIGNsYXNzIEJlbmNobWFya1J1bm5lcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHJldHVy
biBhYnNQYXRoCiAgICAgICAgIHJldHVybiBwbGFuX2ZpbGUKIAotICAgIGRlZiBfZ2V0X3Jlc3Vs
dChzZWxmLCB0ZXN0X3VybCk6Ci0gICAgICAgIHJlc3VsdCA9IHNlbGYuX2Jyb3dzZXJfZHJpdmVy
LmFkZF9hZGRpdGlvbmFsX3Jlc3VsdHModGVzdF91cmwsIHNlbGYuX2h0dHBfc2VydmVyX2RyaXZl
ci5mZXRjaF9yZXN1bHQoKSkKLSAgICAgICAgYXNzZXJ0KG5vdCBzZWxmLl9odHRwX3NlcnZlcl9k
cml2ZXIuZ2V0X3JldHVybl9jb2RlKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQogICAgIGRl
ZiBfcnVuX29uZV90ZXN0KHNlbGYsIHdlYl9yb290LCB0ZXN0X2ZpbGUpOgotICAgICAgICByZXN1
bHQgPSBOb25lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2h0dHBfc2VydmVyX2Ry
aXZlci5zZXJ2ZSh3ZWJfcm9vdCkKLSAgICAgICAgICAgIHVybCA9IHVybHBhcnNlLnVybGpvaW4o
c2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLmJhc2VfdXJsKCksIHNlbGYuX3BsYW5fbmFtZSArICcv
JyArIHRlc3RfZmlsZSkKLSAgICAgICAgICAgIHNlbGYuX2Jyb3dzZXJfZHJpdmVyLmxhdW5jaF91
cmwodXJsLCBzZWxmLl9wbGFuWydvcHRpb25zJ10sIHNlbGYuX2J1aWxkX2RpcikKLSAgICAgICAg
ICAgIHdpdGggdGltZW91dChzZWxmLl9wbGFuWyd0aW1lb3V0J10pOgotICAgICAgICAgICAgICAg
IHJlc3VsdCA9IHNlbGYuX2dldF9yZXN1bHQodXJsKQotICAgICAgICBmaW5hbGx5OgotICAgICAg
ICAgICAgc2VsZi5fYnJvd3Nlcl9kcml2ZXIuY2xvc2VfYnJvd3NlcnMoKQotICAgICAgICAgICAg
c2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLmtpbGxfc2VydmVyKCkKLQotICAgICAgICByZXR1cm4g
anNvbi5sb2FkcyhyZXN1bHQpCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ0Jl
bmNobWFya1J1bm5lciBpcyBhbiBhYnN0cmFjdCBjbGFzcyBhbmQgc2hvdWxkblwndCBiZSBpbnN0
YW50aWF0ZWQuJykKKyAgICAgICAgcGFzcwogCiAgICAgZGVmIF9ydW5fYmVuY2htYXJrKHNlbGYs
IGNvdW50LCB3ZWJfcm9vdCk6CiAgICAgICAgIHJlc3VsdHMgPSBbXQpAQCAtMTE4LDggKzk4LDgg
QEAgY2xhc3MgQmVuY2htYXJrUnVubmVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuc2hvd19yZXN1
bHRzKHJlc3VsdHMsIHNlbGYuX3NjYWxlX3VuaXQpCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmKToK
LSAgICAgICAgd2l0aCBCZW5jaG1hcmtCdWlsZGVyKHNlbGYuX3BsYW5fbmFtZSwgc2VsZi5fcGxh
bikgYXMgd2ViX3Jvb3Q6Ci0gICAgICAgICAgICBzZWxmLl9ydW5fYmVuY2htYXJrKGludChzZWxm
Ll9wbGFuWydjb3VudCddKSwgd2ViX3Jvb3QpCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVk
RXJyb3IoJ0JlbmNobWFya1J1bm5lciBpcyBhbiBhYnN0cmFjdCBjbGFzcyBhbmQgc2hvdWxkblwn
dCBiZSBpbnN0YW50aWF0ZWQuJykKKyAgICAgICAgcGFzcwogCiAgICAgQGNsYXNzbWV0aG9kCiAg
ICAgZGVmIF9kdW1wKGNscywgcmVzdWx0cywgb3V0cHV0X2ZpbGUpOgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3J1bl9iZW5jaG1hcmsucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvcnVuX2JlbmNobWFyay5weQpp
bmRleCA3ZjZiODA4NmQ2MmRlNWFlMmVjYmE0ZTI2NjUwYmY1MTQ1NWU3ZWUzLi4zNTNjMDA0MjA2
YjE5NDEwZTIzMDk2YjRmZjYzODFmNjY5ZGZmN2JmIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvcnVuX2JlbmNobWFyay5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvcnVuX2JlbmNobWFyay5weQpAQCAtNyw3
ICs3LDggQEAgaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIAotZnJvbSBi
ZW5jaG1hcmtfcnVubmVyIGltcG9ydCBCZW5jaG1hcmtSdW5uZXIKK2Zyb20gd2ViZHJpdmVyX2Jl
bmNobWFya19ydW5uZXIgaW1wb3J0IFdlYkRyaXZlckJlbmNobWFya1J1bm5lcgorZnJvbSB3ZWJz
b2NrZXRfYmVuY2htYXJrX3J1bm5lciBpbXBvcnQgV2ViU29ja2V0QmVuY2htYXJrUnVubmVyCiBm
cm9tIGJyb3dzZXJfZHJpdmVyLmJyb3dzZXJfZHJpdmVyX2ZhY3RvcnkgaW1wb3J0IEJyb3dzZXJE
cml2ZXJGYWN0b3J5CiAKIApAQCAtMzYsNiArMzcsNyBAQCBkZWYgcGFyc2VfYXJncygpOgogICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbG9jYWwtY29weScsIGRlc3Q9J2xvY2FsQ29weScsIGhl
bHA9J1BhdGggdG8gYSBsb2NhbCBjb3B5IG9mIHRoZSBiZW5jaG1hcmsuIGUuZy4gUGVyZm9ybWFu
Y2VUZXN0cy9TdW5TcGlkZXIvJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNvdW50Jywg
ZGVzdD0nY291bnRPdmVycmlkZScsIHR5cGU9aW50LCBoZWxwPSdOdW1iZXIgb2YgdGltZXMgdG8g
cnVuIHRoZSBiZW5jaG1hcmsuIGUuZy4gNScpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1k
ZXZpY2UtaWQnLCBkZXN0PSdkZXZpY2VfaWQnLCBkZWZhdWx0PU5vbmUpCisgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgnLS1kcml2ZXInLCBkZXN0PSdkcml2ZXInLCBkZWZhdWx0PSd3ZWJzb2NrZXQn
LCBjaG9pY2VzPVsnd2ViZHJpdmVyJywgJ3dlYnNvY2tldCddKQogICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoJy0tbm8tYWRqdXN0LXVuaXQnLCBkZXN0PSdzY2FsZV91bml0JywgYWN0aW9uPSdzdG9y
ZV9mYWxzZScpCiAgICAgbXV0dWFsX2dyb3VwID0gcGFyc2VyLmFkZF9tdXR1YWxseV9leGNsdXNp
dmVfZ3JvdXAocmVxdWlyZWQ9VHJ1ZSkKICAgICBtdXR1YWxfZ3JvdXAuYWRkX2FyZ3VtZW50KCct
LXJlYWQtcmVzdWx0cy1qc29uJywgZGVzdD0nanNvbl9maWxlJywgaGVscD0nU3BlY2lmeSBmaWxl
IHlvdSB3YW50IHRvIGZvcm1hdCcpCkBAIC04OCwxMCArOTAsMTQgQEAgZGVmIHN0YXJ0KGFyZ3Mp
OgogICAgICAgICBpZiBmYWlsZWQ6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCdUaGUgZm9sbG93
aW5nIGJlbmNobWFyayBwbGFucyBoYXZlIGZhaWxlZDogJXMnICUgZmFpbGVkKQogICAgICAgICBy
ZXR1cm4gbGVuKGZhaWxlZCkKLSAgICBydW5uZXIgPSBCZW5jaG1hcmtSdW5uZXIoYXJncy5wbGFu
LCBhcmdzLmxvY2FsQ29weSwgYXJncy5jb3VudE92ZXJyaWRlLCBhcmdzLmJ1aWxkRGlyLCBhcmdz
Lm91dHB1dCwgYXJncy5wbGF0Zm9ybSwgYXJncy5icm93c2VyLCBhcmdzLnNjYWxlX3VuaXQsIGFy
Z3MuZGV2aWNlX2lkKQorICAgIGlmIGFyZ3MuZHJpdmVyID09ICd3ZWJkcml2ZXInOgorICAgICAg
ICBydW5uZXIgPSBXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIoYXJncy5wbGFuLCBhcmdzLmxvY2Fs
Q29weSwgYXJncy5jb3VudE92ZXJyaWRlLCBhcmdzLmJ1aWxkRGlyLCBhcmdzLm91dHB1dCwgYXJn
cy5wbGF0Zm9ybSwgYXJncy5icm93c2VyLCBhcmdzLnNjYWxlX3VuaXQsIGFyZ3MuZGV2aWNlX2lk
KQorICAgIGVsc2U6CisgICAgICAgIHJ1bm5lciA9IFdlYlNvY2tldEJlbmNobWFya1J1bm5lcihh
cmdzLnBsYW4sIGFyZ3MubG9jYWxDb3B5LCBhcmdzLmNvdW50T3ZlcnJpZGUsIGFyZ3MuYnVpbGRE
aXIsIGFyZ3Mub3V0cHV0LCBhcmdzLnBsYXRmb3JtLCBhcmdzLmJyb3dzZXIsIGFyZ3Muc2NhbGVf
dW5pdCwgYXJncy5kZXZpY2VfaWQpCiAgICAgcnVubmVyLmV4ZWN1dGUoKQogCiAKKwogZGVmIGZv
cm1hdF9sb2dnZXIobG9nZ2VyKToKICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQog
ICAgIGNoID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJkcml2ZXJfYmVuY2htYXJrX3J1bm5lci5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJkcml2ZXJfYmVu
Y2htYXJrX3J1bm5lci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjhlZGQ0NWM4NDA0ODY0YTRjY2IyMjE2MDRi
OTVhNWFmZWRkYmI1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9i
ZW5jaG1hcmtfcnVubmVyL3dlYmRyaXZlcl9iZW5jaG1hcmtfcnVubmVyLnB5CkBAIC0wLDAgKzEs
MzQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCitpbXBvcnQganNvbgoraW1wb3J0IGxvZ2dp
bmcKKworZnJvbSBiZW5jaG1hcmtfcnVubmVyIGltcG9ydCBCZW5jaG1hcmtSdW5uZXIKK2Zyb20g
YmVuY2htYXJrX2J1aWxkZXIgaW1wb3J0IEJlbmNobWFya0J1aWxkZXIKK2Zyb20gc2VsZW5pdW0u
d2ViZHJpdmVyLnN1cHBvcnQudWkgaW1wb3J0IFdlYkRyaXZlcldhaXQKKworCitfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworY2xhc3MgV2ViRHJpdmVyQmVuY2htYXJrUnVu
bmVyKEJlbmNobWFya1J1bm5lcik6CisKKyAgICBkZWYgX2dldF9yZXN1bHQoc2VsZiwgZHJpdmVy
KToKKyAgICAgICAgcmVzdWx0ID0gZHJpdmVyLmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gd2luZG93
LndlYmRyaXZlcl9yZXN1bHRzIikKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIF9y
dW5fb25lX3Rlc3Qoc2VsZiwgd2ViX3Jvb3QsIHRlc3RfZmlsZSk6CisgICAgICAgIHJlc3VsdCA9
IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdXJsID0gJ2ZpbGU6Ly8lcy8lcy8lcycg
JSAod2ViX3Jvb3QsIHNlbGYuX3BsYW5fbmFtZSwgdGVzdF9maWxlKQorICAgICAgICAgICAgZHJp
dmVyID0gc2VsZi5fYnJvd3Nlcl9kcml2ZXIubGF1bmNoX2RyaXZlcih1cmwsIHNlbGYuX3BsYW5b
J29wdGlvbnMnXSwgc2VsZi5fYnVpbGRfZGlyKQorICAgICAgICAgICAgX2xvZy5pbmZvKCdXYWl0
aW5nIG9uIHJlc3VsdHMgZnJvbSB3ZWIgYnJvd3NlcicpCisgICAgICAgICAgICByZXN1bHQgPSBX
ZWJEcml2ZXJXYWl0KGRyaXZlciwgc2VsZi5fcGxhblsndGltZW91dCddLCBwb2xsX2ZyZXF1ZW5j
eT0xLjApLnVudGlsKHNlbGYuX2dldF9yZXN1bHQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAg
ICAgICBzZWxmLl9icm93c2VyX2RyaXZlci5jbG9zZV9icm93c2VycygpCisKKyAgICAgICAgcmV0
dXJuIGpzb24ubG9hZHMocmVzdWx0KQorCisgICAgZGVmIGV4ZWN1dGUoc2VsZik6CisgICAgICAg
IHdpdGggQmVuY2htYXJrQnVpbGRlcihzZWxmLl9wbGFuX25hbWUsIHNlbGYuX3BsYW4sICd3ZWJk
cml2ZXInKSBhcyB3ZWJfcm9vdDoKKyAgICAgICAgICAgIHNlbGYuX3J1bl9iZW5jaG1hcmsoaW50
KHNlbGYuX3BsYW5bJ2NvdW50J10pLCB3ZWJfcm9vdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJzb2NrZXRfYmVuY2htYXJrX3J1bm5lci5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJzb2NrZXRfYmVu
Y2htYXJrX3J1bm5lci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjAzNzAyZWNiMmI4YmIwZWFiYzA1N2NiODRm
NGNhODQxYzA4ZjcwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9i
ZW5jaG1hcmtfcnVubmVyL3dlYnNvY2tldF9iZW5jaG1hcmtfcnVubmVyLnB5CkBAIC0wLDAgKzEs
NDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCitpbXBvcnQganNvbgoraW1wb3J0IGxvZ2dp
bmcKK2ltcG9ydCB1cmxwYXJzZQorCitmcm9tIGJlbmNobWFya19ydW5uZXIgaW1wb3J0IEJlbmNo
bWFya1J1bm5lcgorZnJvbSBiZW5jaG1hcmtfYnVpbGRlciBpbXBvcnQgQmVuY2htYXJrQnVpbGRl
cgorZnJvbSBodHRwX3NlcnZlcl9kcml2ZXIuaHR0cF9zZXJ2ZXJfZHJpdmVyX2ZhY3RvcnkgaW1w
b3J0IEhUVFBTZXJ2ZXJEcml2ZXJGYWN0b3J5Citmcm9tIHV0aWxzIGltcG9ydCB0aW1lb3V0CisK
KworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKK2NsYXNzIFdlYlNvY2tl
dEJlbmNobWFya1J1bm5lcihCZW5jaG1hcmtSdW5uZXIpOgorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBsYW5fZmlsZSwgbG9jYWxfY29weSwgY291bnRfb3ZlcnJpZGUsIGJ1aWxkX2Rpciwgb3V0
cHV0X2ZpbGUsIHBsYXRmb3JtLCBicm93c2VyLCBzY2FsZV91bml0PVRydWUsIGRldmljZV9pZD1O
b25lKToKKyAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyID0gSFRUUFNlcnZlckRyaXZl
ckZhY3RvcnkuY3JlYXRlKHBsYXRmb3JtKQorICAgICAgICBzZWxmLl9odHRwX3NlcnZlcl9kcml2
ZXIuc2V0X2RldmljZV9pZChkZXZpY2VfaWQpCisgICAgICAgIEJlbmNobWFya1J1bm5lci5fX2lu
aXRfXyhzZWxmLCBwbGFuX2ZpbGUsIGxvY2FsX2NvcHksIGNvdW50X292ZXJyaWRlLCBidWlsZF9k
aXIsIG91dHB1dF9maWxlLCBwbGF0Zm9ybSwgYnJvd3Nlciwgc2NhbGVfdW5pdD1UcnVlLCBkZXZp
Y2VfaWQ9Tm9uZSkKKworICAgIGRlZiBfZ2V0X3Jlc3VsdChzZWxmLCB0ZXN0X3VybCk6CisgICAg
ICAgIHJlc3VsdCA9IHNlbGYuX2Jyb3dzZXJfZHJpdmVyLmFkZF9hZGRpdGlvbmFsX3Jlc3VsdHMo
dGVzdF91cmwsIHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5mZXRjaF9yZXN1bHQoKSkKKyAgICAg
ICAgYXNzZXJ0KG5vdCBzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIuZ2V0X3JldHVybl9jb2RlKCkp
CisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfcnVuX29uZV90ZXN0KHNlbGYsIHdl
Yl9yb290LCB0ZXN0X2ZpbGUpOgorICAgICAgICByZXN1bHQgPSBOb25lCisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5zZXJ2ZSh3ZWJfcm9vdCkKKyAg
ICAgICAgICAgIHVybCA9IHVybHBhcnNlLnVybGpvaW4oc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVy
LmJhc2VfdXJsKCksIHNlbGYuX3BsYW5fbmFtZSArICcvJyArIHRlc3RfZmlsZSkKKyAgICAgICAg
ICAgIHNlbGYuX2Jyb3dzZXJfZHJpdmVyLmxhdW5jaF91cmwodXJsLCBzZWxmLl9wbGFuWydvcHRp
b25zJ10sIHNlbGYuX2J1aWxkX2RpcikKKyAgICAgICAgICAgIHdpdGggdGltZW91dChzZWxmLl9w
bGFuWyd0aW1lb3V0J10pOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2dldF9yZXN1
bHQodXJsKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fYnJvd3Nlcl9kcml2
ZXIuY2xvc2VfYnJvd3NlcnMoKQorICAgICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVy
LmtpbGxfc2VydmVyKCkKKworICAgICAgICByZXR1cm4ganNvbi5sb2FkcyhyZXN1bHQpCisKKyAg
ICBkZWYgZXhlY3V0ZShzZWxmKToKKyAgICAgICAgd2l0aCBCZW5jaG1hcmtCdWlsZGVyKHNlbGYu
X3BsYW5fbmFtZSwgc2VsZi5fcGxhbiwgJ3dlYnNvY2tldCcpIGFzIHdlYl9yb290OgorICAgICAg
ICAgICAgc2VsZi5fcnVuX2JlbmNobWFyayhpbnQoc2VsZi5fcGxhblsnY291bnQnXSksIHdlYl9y
b290KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315873</attachid>
            <date>2017-07-18 18:56:20 -0700</date>
            <delta_ts>2017-07-18 19:38:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174390-20170718185620.patch</filename>
            <type>text/plain</type>
            <size>11357</size>
            <attacher name="Matthew Stewart">matthew_r_stewart</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NjQxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTAxOWI3MGRiYmY5MTE3ZjVmYjhkNWIwODkwZDIzNmYx
MjkzNjcyOC4uOGEyYWNkMWVkMTdhNDE0ZTEzZjliNDg1OTI3YjJhYjk0ZThkMWFlYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDE3LTA3LTE4ICBNYXR0aGV3IFN0ZXdhcnQgIDxtYXR0aGV3X3Jfc3Rld2FydEBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3ViY2xhc3MgQmVuY2htYXJrIFJ1bm5lciBzY3JpcHQgZm9yIFdl
YkRyaXZlciBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQzOTAKKworICAgICAgICBSZXZpZXdlZCBieSBEZXdlaSBaaHUuCisKKyAgICAg
ICAgQWRkIFdlYlNlcnZlckJlbmNobWFya1J1bm5lciBhbmQgV2ViRHJpdmVyQmVuY2htYXJrUnVu
bmVyIHN1YmNsYXNzZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19y
dW5uZXIvYmVuY2htYXJrX2J1aWxkZXIucHk6CisgICAgICAgIChCZW5jaG1hcmtCdWlsZGVyLl9f
aW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvYmVu
Y2htYXJrX3J1bm5lci5weToKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5fX2luaXRfXyk6Cisg
ICAgICAgIChCZW5jaG1hcmtSdW5uZXIuX2ZpbmRfcGxhbl9maWxlKToKKyAgICAgICAgKEJlbmNo
bWFya1J1bm5lci5fcnVuX29uZV90ZXN0LmFuZCk6CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIu
ZXhlY3V0ZSk6CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIuX2dldF9yZXN1bHQpOiBEZWxldGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9ydW5fYmVuY2ht
YXJrLnB5OgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgIChzdGFydCk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3dlYmRyaXZlcl9iZW5jaG1hcmtf
cnVubmVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFdlYkRyaXZlckJlbmNobWFya1J1bm5lcik6Cisg
ICAgICAgIChXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIuX2dldF9yZXN1bHQpOgorICAgICAgICAo
V2ViRHJpdmVyQmVuY2htYXJrUnVubmVyLl9ydW5fb25lX3Rlc3QpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJzZXJ2ZXJfYmVuY2htYXJrX3J1bm5lci5w
eTogQWRkZWQuCisgICAgICAgIChXZWJTZXJ2ZXJCZW5jaG1hcmtSdW5uZXIpOgorICAgICAgICAo
V2ViU2VydmVyQmVuY2htYXJrUnVubmVyLl9faW5pdF9fKToKKyAgICAgICAgKFdlYlNlcnZlckJl
bmNobWFya1J1bm5lci5fZ2V0X3Jlc3VsdCk6CisgICAgICAgIChXZWJTZXJ2ZXJCZW5jaG1hcmtS
dW5uZXIuX3J1bl9vbmVfdGVzdCk6CisKIDIwMTctMDctMTggIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIGxsZGI6IEFkZCB0eXBlIHN1bW1hcnkgZm9yIFN0cmlu
Z1ZpZXcKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5l
ci9iZW5jaG1hcmtfYnVpbGRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJr
X3J1bm5lci9iZW5jaG1hcmtfYnVpbGRlci5weQppbmRleCBhMzJlYzdjNGViNzdmYjRiMjEyZjJh
NTFhYTMzNTIzOTliMzZhZTBmLi5jNDBlNjExYTVhNWY3NWQ1ZDljYTFlYTQwMTc0YmRjOTA4MTg2
YmUzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIv
YmVuY2htYXJrX2J1aWxkZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1h
cmtfcnVubmVyL2JlbmNobWFya19idWlsZGVyLnB5CkBAIC04LDE3ICs4LDE4IEBAIGltcG9ydCBz
aHV0aWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGFyZmlsZQogCi1mcm9tIHppcGZpbGUg
aW1wb3J0IFppcEZpbGUKIGZyb20gd2Via2l0cHkuYmVuY2htYXJrX3J1bm5lci51dGlscyBpbXBv
cnQgZ2V0X3BhdGhfZnJvbV9wcm9qZWN0X3Jvb3QsIGZvcmNlX3JlbW92ZQorZnJvbSB6aXBmaWxl
IGltcG9ydCBaaXBGaWxlCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQog
CiAKIGNsYXNzIEJlbmNobWFya0J1aWxkZXIob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbmFtZSwgcGxhbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBsYW4sIGRyaXZl
cik6CiAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYuX3BsYW4gPSBwbGFu
CisgICAgICAgIHNlbGYuX2RyaXZlciA9IGRyaXZlcgogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxm
KToKICAgICAgICAgc2VsZi5fd2ViX3Jvb3QgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcnVu
bmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2JlbmNobWFy
a19ydW5uZXIucHkKaW5kZXggN2FkMmZiYjUzYTE3MTUwMzE4YTFiOWIzYWEwNGE0NWRiMTI4MTcx
Yy4uMjlkZDM3M2FkY2FkYWU2OWE3NTM3M2I3OTgyOTg2YjM0YTQ1MWNhMCAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2JlbmNobWFya19ydW5uZXIu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2JlbmNobWFy
a19ydW5uZXIucHkKQEAgLTE1LDggKzE1LDYgQEAgaW1wb3J0IHVybHBhcnNlCiBmcm9tIGJlbmNo
bWFya19idWlsZGVyIGltcG9ydCBCZW5jaG1hcmtCdWlsZGVyCiBmcm9tIGJlbmNobWFya19yZXN1
bHRzIGltcG9ydCBCZW5jaG1hcmtSZXN1bHRzCiBmcm9tIGJyb3dzZXJfZHJpdmVyLmJyb3dzZXJf
ZHJpdmVyX2ZhY3RvcnkgaW1wb3J0IEJyb3dzZXJEcml2ZXJGYWN0b3J5Ci1mcm9tIGh0dHBfc2Vy
dmVyX2RyaXZlci5odHRwX3NlcnZlcl9kcml2ZXJfZmFjdG9yeSBpbXBvcnQgSFRUUFNlcnZlckRy
aXZlckZhY3RvcnkKLWZyb20gdXRpbHMgaW1wb3J0IHRpbWVvdXQKIAogCiBfbG9nID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC0yNiw2ICsyNCw3IEBAIGNsYXNzIEJlbmNobWFya1J1
bm5lcihvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYW5fZmlsZSwgbG9jYWxf
Y29weSwgY291bnRfb3ZlcnJpZGUsIGJ1aWxkX2Rpciwgb3V0cHV0X2ZpbGUsIHBsYXRmb3JtLCBi
cm93c2VyLCBzY2FsZV91bml0PVRydWUsIGRldmljZV9pZD1Ob25lKToKICAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgc2VsZi5uYW1lID0gJ2JlbmNobWFya19ydW5uZXInCiAgICAgICAgICAgICBw
bGFuX2ZpbGUgPSBzZWxmLl9maW5kX3BsYW5fZmlsZShwbGFuX2ZpbGUpCiAgICAgICAgICAgICB3
aXRoIG9wZW4ocGxhbl9maWxlLCAncicpIGFzIGZwOgogICAgICAgICAgICAgICAgIHNlbGYuX3Bs
YW5fbmFtZSA9IG9zLnBhdGguc3BsaXQob3MucGF0aC5zcGxpdGV4dChwbGFuX2ZpbGUpWzBdKVsx
XQpAQCAtMzcsOCArMzYsNiBAQCBjbGFzcyBCZW5jaG1hcmtSdW5uZXIob2JqZWN0KToKICAgICAg
ICAgICAgICAgICBpZiBjb3VudF9vdmVycmlkZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
cGxhblsnY291bnQnXSA9IGNvdW50X292ZXJyaWRlCiAgICAgICAgICAgICAgICAgc2VsZi5fYnJv
d3Nlcl9kcml2ZXIgPSBCcm93c2VyRHJpdmVyRmFjdG9yeS5jcmVhdGUocGxhdGZvcm0sIGJyb3dz
ZXIpCi0gICAgICAgICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyID0gSFRUUFNlcnZl
ckRyaXZlckZhY3RvcnkuY3JlYXRlKHBsYXRmb3JtKQotICAgICAgICAgICAgICAgIHNlbGYuX2h0
dHBfc2VydmVyX2RyaXZlci5zZXRfZGV2aWNlX2lkKGRldmljZV9pZCkKICAgICAgICAgICAgICAg
ICBzZWxmLl9idWlsZF9kaXIgPSBvcy5wYXRoLmFic3BhdGgoYnVpbGRfZGlyKSBpZiBidWlsZF9k
aXIgZWxzZSBOb25lCiAgICAgICAgICAgICAgICAgc2VsZi5fb3V0cHV0X2ZpbGUgPSBvdXRwdXRf
ZmlsZQogICAgICAgICAgICAgICAgIHNlbGYuX3NjYWxlX3VuaXQgPSBzY2FsZV91bml0CkBAIC02
MywyNCArNjAsOCBAQCBjbGFzcyBCZW5jaG1hcmtSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAg
ICAgICByZXR1cm4gYWJzUGF0aAogICAgICAgICByZXR1cm4gcGxhbl9maWxlCiAKLSAgICBkZWYg
X2dldF9yZXN1bHQoc2VsZiwgdGVzdF91cmwpOgotICAgICAgICByZXN1bHQgPSBzZWxmLl9icm93
c2VyX2RyaXZlci5hZGRfYWRkaXRpb25hbF9yZXN1bHRzKHRlc3RfdXJsLCBzZWxmLl9odHRwX3Nl
cnZlcl9kcml2ZXIuZmV0Y2hfcmVzdWx0KCkpCi0gICAgICAgIGFzc2VydChub3Qgc2VsZi5faHR0
cF9zZXJ2ZXJfZHJpdmVyLmdldF9yZXR1cm5fY29kZSgpKQotICAgICAgICByZXR1cm4gcmVzdWx0
Ci0KICAgICBkZWYgX3J1bl9vbmVfdGVzdChzZWxmLCB3ZWJfcm9vdCwgdGVzdF9maWxlKToKLSAg
ICAgICAgcmVzdWx0ID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9odHRw
X3NlcnZlcl9kcml2ZXIuc2VydmUod2ViX3Jvb3QpCi0gICAgICAgICAgICB1cmwgPSB1cmxwYXJz
ZS51cmxqb2luKHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5iYXNlX3VybCgpLCBzZWxmLl9wbGFu
X25hbWUgKyAnLycgKyB0ZXN0X2ZpbGUpCi0gICAgICAgICAgICBzZWxmLl9icm93c2VyX2RyaXZl
ci5sYXVuY2hfdXJsKHVybCwgc2VsZi5fcGxhblsnb3B0aW9ucyddLCBzZWxmLl9idWlsZF9kaXIp
Ci0gICAgICAgICAgICB3aXRoIHRpbWVvdXQoc2VsZi5fcGxhblsndGltZW91dCddKToKLSAgICAg
ICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9nZXRfcmVzdWx0KHVybCkKLSAgICAgICAgZmluYWxs
eToKLSAgICAgICAgICAgIHNlbGYuX2Jyb3dzZXJfZHJpdmVyLmNsb3NlX2Jyb3dzZXJzKCkKLSAg
ICAgICAgICAgIHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5raWxsX3NlcnZlcigpCi0KLSAgICAg
ICAgcmV0dXJuIGpzb24ubG9hZHMocmVzdWx0KQorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRl
ZEVycm9yKCdCZW5jaG1hcmtSdW5uZXIgaXMgYW4gYWJzdHJhY3QgY2xhc3MgYW5kIHNob3VsZG5c
J3QgYmUgaW5zdGFudGlhdGVkLicpCiAKICAgICBkZWYgX3J1bl9iZW5jaG1hcmsoc2VsZiwgY291
bnQsIHdlYl9yb290KToKICAgICAgICAgcmVzdWx0cyA9IFtdCkBAIC0xMTgsNyArOTksNyBAQCBj
bGFzcyBCZW5jaG1hcmtSdW5uZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5zaG93X3Jlc3VsdHMo
cmVzdWx0cywgc2VsZi5fc2NhbGVfdW5pdCkKIAogICAgIGRlZiBleGVjdXRlKHNlbGYpOgotICAg
ICAgICB3aXRoIEJlbmNobWFya0J1aWxkZXIoc2VsZi5fcGxhbl9uYW1lLCBzZWxmLl9wbGFuKSBh
cyB3ZWJfcm9vdDoKKyAgICAgICAgd2l0aCBCZW5jaG1hcmtCdWlsZGVyKHNlbGYuX3BsYW5fbmFt
ZSwgc2VsZi5fcGxhbiwgc2VsZi5uYW1lKSBhcyB3ZWJfcm9vdDoKICAgICAgICAgICAgIHNlbGYu
X3J1bl9iZW5jaG1hcmsoaW50KHNlbGYuX3BsYW5bJ2NvdW50J10pLCB3ZWJfcm9vdCkKIAogICAg
IEBjbGFzc21ldGhvZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1h
cmtfcnVubmVyL3J1bl9iZW5jaG1hcmsucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNo
bWFya19ydW5uZXIvcnVuX2JlbmNobWFyay5weQppbmRleCA3ZjZiODA4NmQ2MmRlNWFlMmVjYmE0
ZTI2NjUwYmY1MTQ1NWU3ZWUzLi5iZDZmNDE1ZjFhZGU4Zjc0NTQ3NGNhYzZjYzAxYTk5ZGU0YjUx
NWQxIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIv
cnVuX2JlbmNobWFyay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19y
dW5uZXIvcnVuX2JlbmNobWFyay5weQpAQCAtNywxMSArNywxNiBAQCBpbXBvcnQgcGxhdGZvcm0K
IGltcG9ydCBvcwogaW1wb3J0IHN5cwogCi1mcm9tIGJlbmNobWFya19ydW5uZXIgaW1wb3J0IEJl
bmNobWFya1J1bm5lcgogZnJvbSBicm93c2VyX2RyaXZlci5icm93c2VyX2RyaXZlcl9mYWN0b3J5
IGltcG9ydCBCcm93c2VyRHJpdmVyRmFjdG9yeQorZnJvbSB3ZWJkcml2ZXJfYmVuY2htYXJrX3J1
bm5lciBpbXBvcnQgV2ViRHJpdmVyQmVuY2htYXJrUnVubmVyCitmcm9tIHdlYnNlcnZlcl9iZW5j
aG1hcmtfcnVubmVyIGltcG9ydCBXZWJTZXJ2ZXJCZW5jaG1hcmtSdW5uZXIKIAogCiBfbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCitiZW5jaG1hcmtfcnVubmVyX3N1YmNsYXNzZXMg
PSB7CisgICAgV2ViRHJpdmVyQmVuY2htYXJrUnVubmVyLm5hbWU6IFdlYkRyaXZlckJlbmNobWFy
a1J1bm5lciwKKyAgICBXZWJTZXJ2ZXJCZW5jaG1hcmtSdW5uZXIubmFtZTogV2ViU2VydmVyQmVu
Y2htYXJrUnVubmVyLAorfQogCiAKIGRlZiBkZWZhdWx0X3BsYXRmb3JtKCk6CkBAIC0zNiw2ICs0
MSw3IEBAIGRlZiBwYXJzZV9hcmdzKCk6CiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1sb2Nh
bC1jb3B5JywgZGVzdD0nbG9jYWxDb3B5JywgaGVscD0nUGF0aCB0byBhIGxvY2FsIGNvcHkgb2Yg
dGhlIGJlbmNobWFyay4gZS5nLiBQZXJmb3JtYW5jZVRlc3RzL1N1blNwaWRlci8nKQogICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoJy0tY291bnQnLCBkZXN0PSdjb3VudE92ZXJyaWRlJywgdHlwZT1p
bnQsIGhlbHA9J051bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIGJlbmNobWFyay4gZS5nLiA1JykK
ICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWRldmljZS1pZCcsIGRlc3Q9J2RldmljZV9pZCcs
IGRlZmF1bHQ9Tm9uZSkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWRyaXZlcicsIGRlc3Q9
J2RyaXZlcicsIGRlZmF1bHQ9V2ViU2VydmVyQmVuY2htYXJrUnVubmVyLm5hbWUsIGNob2ljZXM9
YmVuY2htYXJrX3J1bm5lcl9zdWJjbGFzc2VzLmtleXMoKSkKICAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCctLW5vLWFkanVzdC11bml0JywgZGVzdD0nc2NhbGVfdW5pdCcsIGFjdGlvbj0nc3RvcmVf
ZmFsc2UnKQogICAgIG11dHVhbF9ncm91cCA9IHBhcnNlci5hZGRfbXV0dWFsbHlfZXhjbHVzaXZl
X2dyb3VwKHJlcXVpcmVkPVRydWUpCiAgICAgbXV0dWFsX2dyb3VwLmFkZF9hcmd1bWVudCgnLS1y
ZWFkLXJlc3VsdHMtanNvbicsIGRlc3Q9J2pzb25fZmlsZScsIGhlbHA9J1NwZWNpZnkgZmlsZSB5
b3Ugd2FudCB0byBmb3JtYXQnKQpAQCAtODgsNyArOTQsOCBAQCBkZWYgc3RhcnQoYXJncyk6CiAg
ICAgICAgIGlmIGZhaWxlZDoKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1RoZSBmb2xsb3dpbmcg
YmVuY2htYXJrIHBsYW5zIGhhdmUgZmFpbGVkOiAlcycgJSBmYWlsZWQpCiAgICAgICAgIHJldHVy
biBsZW4oZmFpbGVkKQotICAgIHJ1bm5lciA9IEJlbmNobWFya1J1bm5lcihhcmdzLnBsYW4sIGFy
Z3MubG9jYWxDb3B5LCBhcmdzLmNvdW50T3ZlcnJpZGUsIGFyZ3MuYnVpbGREaXIsIGFyZ3Mub3V0
cHV0LCBhcmdzLnBsYXRmb3JtLCBhcmdzLmJyb3dzZXIsIGFyZ3Muc2NhbGVfdW5pdCwgYXJncy5k
ZXZpY2VfaWQpCisgICAgYmVuY2htYXJrX3J1bm5lcl9jbGFzcyA9IGJlbmNobWFya19ydW5uZXJf
c3ViY2xhc3Nlc1thcmdzLmRyaXZlcl0KKyAgICBydW5uZXIgPSBiZW5jaG1hcmtfcnVubmVyX2Ns
YXNzKGFyZ3MucGxhbiwgYXJncy5sb2NhbENvcHksIGFyZ3MuY291bnRPdmVycmlkZSwgYXJncy5i
dWlsZERpciwgYXJncy5vdXRwdXQsIGFyZ3MucGxhdGZvcm0sIGFyZ3MuYnJvd3NlciwgYXJncy5z
Y2FsZV91bml0LCBhcmdzLmRldmljZV9pZCkKICAgICBydW5uZXIuZXhlY3V0ZSgpCiAKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3dlYmRyaXZl
cl9iZW5jaG1hcmtfcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtf
cnVubmVyL3dlYmRyaXZlcl9iZW5jaG1hcmtfcnVubmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlYjUzZjk5
NjZmZDc3YWUxM2Y0ZWZlOWNkNGY4ODRmNDc0MzRkNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvd2ViZHJpdmVyX2JlbmNobWFya19y
dW5uZXIucHkKQEAgLTAsMCArMSwzMCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKK2ltcG9y
dCBqc29uCitpbXBvcnQgbG9nZ2luZworCitmcm9tIGJlbmNobWFya19ydW5uZXIgaW1wb3J0IEJl
bmNobWFya1J1bm5lcgorZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9ydC51aSBpbXBvcnQg
V2ViRHJpdmVyV2FpdAorCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKwor
CitjbGFzcyBXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIoQmVuY2htYXJrUnVubmVyKToKKyAgICBu
YW1lID0gJ3dlYmRyaXZlcicKKworICAgIGRlZiBfZ2V0X3Jlc3VsdChzZWxmLCBkcml2ZXIpOgor
ICAgICAgICByZXN1bHQgPSBkcml2ZXIuZXhlY3V0ZV9zY3JpcHQoInJldHVybiB3aW5kb3cud2Vi
ZHJpdmVyX3Jlc3VsdHMiKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgX3J1bl9v
bmVfdGVzdChzZWxmLCB3ZWJfcm9vdCwgdGVzdF9maWxlKToKKyAgICAgICAgcmVzdWx0ID0gTm9u
ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICB1cmwgPSAnZmlsZTovL3tyb290fS97cGxhbl9u
YW1lfS97dGVzdF9maWxlfScuZm9ybWF0KHJvb3Q9d2ViX3Jvb3QsIHBsYW5fbmFtZT1zZWxmLl9w
bGFuX25hbWUsIHRlc3RfZmlsZT10ZXN0X2ZpbGUpCisgICAgICAgICAgICBkcml2ZXIgPSBzZWxm
Ll9icm93c2VyX2RyaXZlci5sYXVuY2hfZHJpdmVyKHVybCwgc2VsZi5fcGxhblsnb3B0aW9ucydd
LCBzZWxmLl9idWlsZF9kaXIpCisgICAgICAgICAgICBfbG9nLmluZm8oJ1dhaXRpbmcgb24gcmVz
dWx0cyBmcm9tIHdlYiBicm93c2VyJykKKyAgICAgICAgICAgIHJlc3VsdCA9IFdlYkRyaXZlcldh
aXQoZHJpdmVyLCBzZWxmLl9wbGFuWyd0aW1lb3V0J10sIHBvbGxfZnJlcXVlbmN5PTEuMCkudW50
aWwoc2VsZi5fZ2V0X3Jlc3VsdCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYu
X2Jyb3dzZXJfZHJpdmVyLmNsb3NlX2Jyb3dzZXJzKCkKKworICAgICAgICByZXR1cm4ganNvbi5s
b2FkcyhyZXN1bHQpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFy
a19ydW5uZXIvd2Vic2VydmVyX2JlbmNobWFya19ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2JlbmNobWFya19ydW5uZXIvd2Vic2VydmVyX2JlbmNobWFya19ydW5uZXIucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWE5N2Y2Y2FkMmU0MmEyZWEyZTljNGYyYzIyOWZkNTE4ZTdkMmQ0YQotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJz
ZXJ2ZXJfYmVuY2htYXJrX3J1bm5lci5weQpAQCAtMCwwICsxLDQwIEBACisjIS91c3IvYmluL2Vu
diBweXRob24KKworaW1wb3J0IGpzb24KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgdXJscGFyc2UK
KworZnJvbSBiZW5jaG1hcmtfcnVubmVyIGltcG9ydCBCZW5jaG1hcmtSdW5uZXIKK2Zyb20gaHR0
cF9zZXJ2ZXJfZHJpdmVyLmh0dHBfc2VydmVyX2RyaXZlcl9mYWN0b3J5IGltcG9ydCBIVFRQU2Vy
dmVyRHJpdmVyRmFjdG9yeQorZnJvbSB1dGlscyBpbXBvcnQgdGltZW91dAorCisKK19sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworCitjbGFzcyBXZWJTZXJ2ZXJCZW5jaG1hcmtS
dW5uZXIoQmVuY2htYXJrUnVubmVyKToKKyAgICBuYW1lID0gJ3dlYnNlcnZlcicKKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwbGFuX2ZpbGUsIGxvY2FsX2NvcHksIGNvdW50X292ZXJyaWRlLCBi
dWlsZF9kaXIsIG91dHB1dF9maWxlLCBwbGF0Zm9ybSwgYnJvd3Nlciwgc2NhbGVfdW5pdD1UcnVl
LCBkZXZpY2VfaWQ9Tm9uZSk6CisgICAgICAgIHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlciA9IEhU
VFBTZXJ2ZXJEcml2ZXJGYWN0b3J5LmNyZWF0ZShwbGF0Zm9ybSkKKyAgICAgICAgc2VsZi5faHR0
cF9zZXJ2ZXJfZHJpdmVyLnNldF9kZXZpY2VfaWQoZGV2aWNlX2lkKQorICAgICAgICBzdXBlcihX
ZWJTZXJ2ZXJCZW5jaG1hcmtSdW5uZXIsIHNlbGYpLl9faW5pdF9fKHBsYW5fZmlsZSwgbG9jYWxf
Y29weSwgY291bnRfb3ZlcnJpZGUsIGJ1aWxkX2Rpciwgb3V0cHV0X2ZpbGUsIHBsYXRmb3JtLCBi
cm93c2VyLCBzY2FsZV91bml0LCBkZXZpY2VfaWQpCisKKyAgICBkZWYgX2dldF9yZXN1bHQoc2Vs
ZiwgdGVzdF91cmwpOgorICAgICAgICByZXN1bHQgPSBzZWxmLl9icm93c2VyX2RyaXZlci5hZGRf
YWRkaXRpb25hbF9yZXN1bHRzKHRlc3RfdXJsLCBzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIuZmV0
Y2hfcmVzdWx0KCkpCisgICAgICAgIGFzc2VydChub3Qgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVy
LmdldF9yZXR1cm5fY29kZSgpKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgX3J1
bl9vbmVfdGVzdChzZWxmLCB3ZWJfcm9vdCwgdGVzdF9maWxlKToKKyAgICAgICAgcmVzdWx0ID0g
Tm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIu
c2VydmUod2ViX3Jvb3QpCisgICAgICAgICAgICB1cmwgPSB1cmxwYXJzZS51cmxqb2luKHNlbGYu
X2h0dHBfc2VydmVyX2RyaXZlci5iYXNlX3VybCgpLCBzZWxmLl9wbGFuX25hbWUgKyAnLycgKyB0
ZXN0X2ZpbGUpCisgICAgICAgICAgICBzZWxmLl9icm93c2VyX2RyaXZlci5sYXVuY2hfdXJsKHVy
bCwgc2VsZi5fcGxhblsnb3B0aW9ucyddLCBzZWxmLl9idWlsZF9kaXIpCisgICAgICAgICAgICB3
aXRoIHRpbWVvdXQoc2VsZi5fcGxhblsndGltZW91dCddKToKKyAgICAgICAgICAgICAgICByZXN1
bHQgPSBzZWxmLl9nZXRfcmVzdWx0KHVybCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAg
IHNlbGYuX2Jyb3dzZXJfZHJpdmVyLmNsb3NlX2Jyb3dzZXJzKCkKKyAgICAgICAgICAgIHNlbGYu
X2h0dHBfc2VydmVyX2RyaXZlci5raWxsX3NlcnZlcigpCisKKyAgICAgICAgcmV0dXJuIGpzb24u
bG9hZHMocmVzdWx0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315879</attachid>
            <date>2017-07-18 19:38:33 -0700</date>
            <delta_ts>2017-07-19 16:07:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174390-20170718193832.patch</filename>
            <type>text/plain</type>
            <size>7765</size>
            <attacher name="Matthew Stewart">matthew_r_stewart</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NjQxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTAxOWI3MGRiYmY5MTE3ZjVmYjhkNWIwODkwZDIzNmYx
MjkzNjcyOC4uOGEyYWNkMWVkMTdhNDE0ZTEzZjliNDg1OTI3YjJhYjk0ZThkMWFlYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDE3LTA3LTE4ICBNYXR0aGV3IFN0ZXdhcnQgIDxtYXR0aGV3X3Jfc3Rld2FydEBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3ViY2xhc3MgQmVuY2htYXJrIFJ1bm5lciBzY3JpcHQgZm9yIFdl
YkRyaXZlciBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQzOTAKKworICAgICAgICBSZXZpZXdlZCBieSBEZXdlaSBaaHUuCisKKyAgICAg
ICAgQWRkIFdlYlNlcnZlckJlbmNobWFya1J1bm5lciBhbmQgV2ViRHJpdmVyQmVuY2htYXJrUnVu
bmVyIHN1YmNsYXNzZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19y
dW5uZXIvYmVuY2htYXJrX2J1aWxkZXIucHk6CisgICAgICAgIChCZW5jaG1hcmtCdWlsZGVyLl9f
aW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvYmVu
Y2htYXJrX3J1bm5lci5weToKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5fX2luaXRfXyk6Cisg
ICAgICAgIChCZW5jaG1hcmtSdW5uZXIuX2ZpbmRfcGxhbl9maWxlKToKKyAgICAgICAgKEJlbmNo
bWFya1J1bm5lci5fcnVuX29uZV90ZXN0LmFuZCk6CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIu
ZXhlY3V0ZSk6CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIuX2dldF9yZXN1bHQpOiBEZWxldGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9ydW5fYmVuY2ht
YXJrLnB5OgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgIChzdGFydCk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3dlYmRyaXZlcl9iZW5jaG1hcmtf
cnVubmVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFdlYkRyaXZlckJlbmNobWFya1J1bm5lcik6Cisg
ICAgICAgIChXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIuX2dldF9yZXN1bHQpOgorICAgICAgICAo
V2ViRHJpdmVyQmVuY2htYXJrUnVubmVyLl9ydW5fb25lX3Rlc3QpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJzZXJ2ZXJfYmVuY2htYXJrX3J1bm5lci5w
eTogQWRkZWQuCisgICAgICAgIChXZWJTZXJ2ZXJCZW5jaG1hcmtSdW5uZXIpOgorICAgICAgICAo
V2ViU2VydmVyQmVuY2htYXJrUnVubmVyLl9faW5pdF9fKToKKyAgICAgICAgKFdlYlNlcnZlckJl
bmNobWFya1J1bm5lci5fZ2V0X3Jlc3VsdCk6CisgICAgICAgIChXZWJTZXJ2ZXJCZW5jaG1hcmtS
dW5uZXIuX3J1bl9vbmVfdGVzdCk6CisKIDIwMTctMDctMTggIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIGxsZGI6IEFkZCB0eXBlIHN1bW1hcnkgZm9yIFN0cmlu
Z1ZpZXcKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5l
ci9iZW5jaG1hcmtfYnVpbGRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJr
X3J1bm5lci9iZW5jaG1hcmtfYnVpbGRlci5weQppbmRleCBhMzJlYzdjNGViNzdmYjRiMjEyZjJh
NTFhYTMzNTIzOTliMzZhZTBmLi5jNDBlNjExYTVhNWY3NWQ1ZDljYTFlYTQwMTc0YmRjOTA4MTg2
YmUzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIv
YmVuY2htYXJrX2J1aWxkZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1h
cmtfcnVubmVyL2JlbmNobWFya19idWlsZGVyLnB5CkBAIC04LDE3ICs4LDE4IEBAIGltcG9ydCBz
aHV0aWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGFyZmlsZQogCi1mcm9tIHppcGZpbGUg
aW1wb3J0IFppcEZpbGUKIGZyb20gd2Via2l0cHkuYmVuY2htYXJrX3J1bm5lci51dGlscyBpbXBv
cnQgZ2V0X3BhdGhfZnJvbV9wcm9qZWN0X3Jvb3QsIGZvcmNlX3JlbW92ZQorZnJvbSB6aXBmaWxl
IGltcG9ydCBaaXBGaWxlCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQog
CiAKIGNsYXNzIEJlbmNobWFya0J1aWxkZXIob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbmFtZSwgcGxhbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBsYW4sIGRyaXZl
cik6CiAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYuX3BsYW4gPSBwbGFu
CisgICAgICAgIHNlbGYuX2RyaXZlciA9IGRyaXZlcgogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxm
KToKICAgICAgICAgc2VsZi5fd2ViX3Jvb3QgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcnVu
bmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2JlbmNobWFy
a19ydW5uZXIucHkKaW5kZXggN2FkMmZiYjUzYTE3MTUwMzE4YTFiOWIzYWEwNGE0NWRiMTI4MTcx
Yy4uMDA4MTgxMjRlMzY4Njc4MmM0MmE1MjUzYTJjNjA5NzNhYmM1YWQxMSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2JlbmNobWFya19ydW5uZXIu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2JlbmNobWFy
a19ydW5uZXIucHkKQEAgLTE1LDE0ICsxNSwxMyBAQCBpbXBvcnQgdXJscGFyc2UKIGZyb20gYmVu
Y2htYXJrX2J1aWxkZXIgaW1wb3J0IEJlbmNobWFya0J1aWxkZXIKIGZyb20gYmVuY2htYXJrX3Jl
c3VsdHMgaW1wb3J0IEJlbmNobWFya1Jlc3VsdHMKIGZyb20gYnJvd3Nlcl9kcml2ZXIuYnJvd3Nl
cl9kcml2ZXJfZmFjdG9yeSBpbXBvcnQgQnJvd3NlckRyaXZlckZhY3RvcnkKLWZyb20gaHR0cF9z
ZXJ2ZXJfZHJpdmVyLmh0dHBfc2VydmVyX2RyaXZlcl9mYWN0b3J5IGltcG9ydCBIVFRQU2VydmVy
RHJpdmVyRmFjdG9yeQotZnJvbSB1dGlscyBpbXBvcnQgdGltZW91dAogCiAKIF9sb2cgPSBsb2dn
aW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCiBjbGFzcyBCZW5jaG1hcmtSdW5uZXIob2JqZWN0
KToKKyAgICBuYW1lID0gJ2JlbmNobWFya19ydW5uZXInCiAKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcGxhbl9maWxlLCBsb2NhbF9jb3B5LCBjb3VudF9vdmVycmlkZSwgYnVpbGRfZGlyLCBvdXRw
dXRfZmlsZSwgcGxhdGZvcm0sIGJyb3dzZXIsIHNjYWxlX3VuaXQ9VHJ1ZSwgZGV2aWNlX2lkPU5v
bmUpOgogICAgICAgICB0cnk6CkBAIC0zNyw4ICszNiw2IEBAIGNsYXNzIEJlbmNobWFya1J1bm5l
cihvYmplY3QpOgogICAgICAgICAgICAgICAgIGlmIGNvdW50X292ZXJyaWRlOgogICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9wbGFuWydjb3VudCddID0gY291bnRfb3ZlcnJpZGUKICAgICAgICAg
ICAgICAgICBzZWxmLl9icm93c2VyX2RyaXZlciA9IEJyb3dzZXJEcml2ZXJGYWN0b3J5LmNyZWF0
ZShwbGF0Zm9ybSwgYnJvd3NlcikKLSAgICAgICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlcl9k
cml2ZXIgPSBIVFRQU2VydmVyRHJpdmVyRmFjdG9yeS5jcmVhdGUocGxhdGZvcm0pCi0gICAgICAg
ICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLnNldF9kZXZpY2VfaWQoZGV2aWNlX2lk
KQogICAgICAgICAgICAgICAgIHNlbGYuX2J1aWxkX2RpciA9IG9zLnBhdGguYWJzcGF0aChidWls
ZF9kaXIpIGlmIGJ1aWxkX2RpciBlbHNlIE5vbmUKICAgICAgICAgICAgICAgICBzZWxmLl9vdXRw
dXRfZmlsZSA9IG91dHB1dF9maWxlCiAgICAgICAgICAgICAgICAgc2VsZi5fc2NhbGVfdW5pdCA9
IHNjYWxlX3VuaXQKQEAgLTYzLDI0ICs2MCw4IEBAIGNsYXNzIEJlbmNobWFya1J1bm5lcihvYmpl
Y3QpOgogICAgICAgICAgICAgICAgIHJldHVybiBhYnNQYXRoCiAgICAgICAgIHJldHVybiBwbGFu
X2ZpbGUKIAotICAgIGRlZiBfZ2V0X3Jlc3VsdChzZWxmLCB0ZXN0X3VybCk6Ci0gICAgICAgIHJl
c3VsdCA9IHNlbGYuX2Jyb3dzZXJfZHJpdmVyLmFkZF9hZGRpdGlvbmFsX3Jlc3VsdHModGVzdF91
cmwsIHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5mZXRjaF9yZXN1bHQoKSkKLSAgICAgICAgYXNz
ZXJ0KG5vdCBzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIuZ2V0X3JldHVybl9jb2RlKCkpCi0gICAg
ICAgIHJldHVybiByZXN1bHQKLQogICAgIGRlZiBfcnVuX29uZV90ZXN0KHNlbGYsIHdlYl9yb290
LCB0ZXN0X2ZpbGUpOgotICAgICAgICByZXN1bHQgPSBOb25lCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5zZXJ2ZSh3ZWJfcm9vdCkKLSAgICAgICAg
ICAgIHVybCA9IHVybHBhcnNlLnVybGpvaW4oc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLmJhc2Vf
dXJsKCksIHNlbGYuX3BsYW5fbmFtZSArICcvJyArIHRlc3RfZmlsZSkKLSAgICAgICAgICAgIHNl
bGYuX2Jyb3dzZXJfZHJpdmVyLmxhdW5jaF91cmwodXJsLCBzZWxmLl9wbGFuWydvcHRpb25zJ10s
IHNlbGYuX2J1aWxkX2RpcikKLSAgICAgICAgICAgIHdpdGggdGltZW91dChzZWxmLl9wbGFuWyd0
aW1lb3V0J10pOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2dldF9yZXN1bHQodXJs
KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fYnJvd3Nlcl9kcml2ZXIuY2xv
c2VfYnJvd3NlcnMoKQotICAgICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLmtpbGxf
c2VydmVyKCkKLQotICAgICAgICByZXR1cm4ganNvbi5sb2FkcyhyZXN1bHQpCisgICAgICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ0JlbmNobWFya1J1bm5lciBpcyBhbiBhYnN0cmFjdCBj
bGFzcyBhbmQgc2hvdWxkblwndCBiZSBpbnN0YW50aWF0ZWQuJykKIAogICAgIGRlZiBfcnVuX2Jl
bmNobWFyayhzZWxmLCBjb3VudCwgd2ViX3Jvb3QpOgogICAgICAgICByZXN1bHRzID0gW10KQEAg
LTExOCw3ICs5OSw3IEBAIGNsYXNzIEJlbmNobWFya1J1bm5lcihvYmplY3QpOgogICAgICAgICBz
ZWxmLnNob3dfcmVzdWx0cyhyZXN1bHRzLCBzZWxmLl9zY2FsZV91bml0KQogCiAgICAgZGVmIGV4
ZWN1dGUoc2VsZik6Ci0gICAgICAgIHdpdGggQmVuY2htYXJrQnVpbGRlcihzZWxmLl9wbGFuX25h
bWUsIHNlbGYuX3BsYW4pIGFzIHdlYl9yb290OgorICAgICAgICB3aXRoIEJlbmNobWFya0J1aWxk
ZXIoc2VsZi5fcGxhbl9uYW1lLCBzZWxmLl9wbGFuLCBzZWxmLm5hbWUpIGFzIHdlYl9yb290Ogog
ICAgICAgICAgICAgc2VsZi5fcnVuX2JlbmNobWFyayhpbnQoc2VsZi5fcGxhblsnY291bnQnXSks
IHdlYl9yb290KQogCiAgICAgQGNsYXNzbWV0aG9kCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvcnVuX2JlbmNobWFyay5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9ydW5fYmVuY2htYXJrLnB5CmluZGV4IDdmNmI4
MDg2ZDYyZGU1YWUyZWNiYTRlMjY2NTBiZjUxNDU1ZTdlZTMuLmJkNmY0MTVmMWFkZThmNzQ1NDc0
Y2FjNmNjMDFhOTlkZTRiNTE1ZDEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
YmVuY2htYXJrX3J1bm5lci9ydW5fYmVuY2htYXJrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvYmVuY2htYXJrX3J1bm5lci9ydW5fYmVuY2htYXJrLnB5CkBAIC03LDExICs3LDE2IEBA
IGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKLWZyb20gYmVuY2htYXJr
X3J1bm5lciBpbXBvcnQgQmVuY2htYXJrUnVubmVyCiBmcm9tIGJyb3dzZXJfZHJpdmVyLmJyb3dz
ZXJfZHJpdmVyX2ZhY3RvcnkgaW1wb3J0IEJyb3dzZXJEcml2ZXJGYWN0b3J5Citmcm9tIHdlYmRy
aXZlcl9iZW5jaG1hcmtfcnVubmVyIGltcG9ydCBXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIKK2Zy
b20gd2Vic2VydmVyX2JlbmNobWFya19ydW5uZXIgaW1wb3J0IFdlYlNlcnZlckJlbmNobWFya1J1
bm5lcgogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKK2JlbmNobWFya19y
dW5uZXJfc3ViY2xhc3NlcyA9IHsKKyAgICBXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIubmFtZTog
V2ViRHJpdmVyQmVuY2htYXJrUnVubmVyLAorICAgIFdlYlNlcnZlckJlbmNobWFya1J1bm5lci5u
YW1lOiBXZWJTZXJ2ZXJCZW5jaG1hcmtSdW5uZXIsCit9CiAKIAogZGVmIGRlZmF1bHRfcGxhdGZv
cm0oKToKQEAgLTM2LDYgKzQxLDcgQEAgZGVmIHBhcnNlX2FyZ3MoKToKICAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KCctLWxvY2FsLWNvcHknLCBkZXN0PSdsb2NhbENvcHknLCBoZWxwPSdQYXRoIHRv
IGEgbG9jYWwgY29weSBvZiB0aGUgYmVuY2htYXJrLiBlLmcuIFBlcmZvcm1hbmNlVGVzdHMvU3Vu
U3BpZGVyLycpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jb3VudCcsIGRlc3Q9J2NvdW50
T3ZlcnJpZGUnLCB0eXBlPWludCwgaGVscD0nTnVtYmVyIG9mIHRpbWVzIHRvIHJ1biB0aGUgYmVu
Y2htYXJrLiBlLmcuIDUnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZGV2aWNlLWlkJywg
ZGVzdD0nZGV2aWNlX2lkJywgZGVmYXVsdD1Ob25lKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Jy0tZHJpdmVyJywgZGVzdD0nZHJpdmVyJywgZGVmYXVsdD1XZWJTZXJ2ZXJCZW5jaG1hcmtSdW5u
ZXIubmFtZSwgY2hvaWNlcz1iZW5jaG1hcmtfcnVubmVyX3N1YmNsYXNzZXMua2V5cygpKQogICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8tYWRqdXN0LXVuaXQnLCBkZXN0PSdzY2FsZV91bml0
JywgYWN0aW9uPSdzdG9yZV9mYWxzZScpCiAgICAgbXV0dWFsX2dyb3VwID0gcGFyc2VyLmFkZF9t
dXR1YWxseV9leGNsdXNpdmVfZ3JvdXAocmVxdWlyZWQ9VHJ1ZSkKICAgICBtdXR1YWxfZ3JvdXAu
YWRkX2FyZ3VtZW50KCctLXJlYWQtcmVzdWx0cy1qc29uJywgZGVzdD0nanNvbl9maWxlJywgaGVs
cD0nU3BlY2lmeSBmaWxlIHlvdSB3YW50IHRvIGZvcm1hdCcpCkBAIC04OCw3ICs5NCw4IEBAIGRl
ZiBzdGFydChhcmdzKToKICAgICAgICAgaWYgZmFpbGVkOgogICAgICAgICAgICAgX2xvZy5lcnJv
cignVGhlIGZvbGxvd2luZyBiZW5jaG1hcmsgcGxhbnMgaGF2ZSBmYWlsZWQ6ICVzJyAlIGZhaWxl
ZCkKICAgICAgICAgcmV0dXJuIGxlbihmYWlsZWQpCi0gICAgcnVubmVyID0gQmVuY2htYXJrUnVu
bmVyKGFyZ3MucGxhbiwgYXJncy5sb2NhbENvcHksIGFyZ3MuY291bnRPdmVycmlkZSwgYXJncy5i
dWlsZERpciwgYXJncy5vdXRwdXQsIGFyZ3MucGxhdGZvcm0sIGFyZ3MuYnJvd3NlciwgYXJncy5z
Y2FsZV91bml0LCBhcmdzLmRldmljZV9pZCkKKyAgICBiZW5jaG1hcmtfcnVubmVyX2NsYXNzID0g
YmVuY2htYXJrX3J1bm5lcl9zdWJjbGFzc2VzW2FyZ3MuZHJpdmVyXQorICAgIHJ1bm5lciA9IGJl
bmNobWFya19ydW5uZXJfY2xhc3MoYXJncy5wbGFuLCBhcmdzLmxvY2FsQ29weSwgYXJncy5jb3Vu
dE92ZXJyaWRlLCBhcmdzLmJ1aWxkRGlyLCBhcmdzLm91dHB1dCwgYXJncy5wbGF0Zm9ybSwgYXJn
cy5icm93c2VyLCBhcmdzLnNjYWxlX3VuaXQsIGFyZ3MuZGV2aWNlX2lkKQogICAgIHJ1bm5lci5l
eGVjdXRlKCkKIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315958</attachid>
            <date>2017-07-19 16:07:53 -0700</date>
            <delta_ts>2017-07-24 18:01:38 -0700</delta_ts>
            <desc>Subclass Benchmark Runner script for WebDriver support</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>11146</size>
            <attacher name="Matthew Stewart">matthew_r_stewart</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NjQxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTAxOWI3MGRiYmY5MTE3ZjVmYjhkNWIwODkwZDIzNmYx
MjkzNjcyOC4uOGEyYWNkMWVkMTdhNDE0ZTEzZjliNDg1OTI3YjJhYjk0ZThkMWFlYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDE3LTA3LTE4ICBNYXR0aGV3IFN0ZXdhcnQgIDxtYXR0aGV3X3Jfc3Rld2FydEBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3ViY2xhc3MgQmVuY2htYXJrIFJ1bm5lciBzY3JpcHQgZm9yIFdl
YkRyaXZlciBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQzOTAKKworICAgICAgICBSZXZpZXdlZCBieSBEZXdlaSBaaHUuCisKKyAgICAg
ICAgQWRkIFdlYlNlcnZlckJlbmNobWFya1J1bm5lciBhbmQgV2ViRHJpdmVyQmVuY2htYXJrUnVu
bmVyIHN1YmNsYXNzZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19y
dW5uZXIvYmVuY2htYXJrX2J1aWxkZXIucHk6CisgICAgICAgIChCZW5jaG1hcmtCdWlsZGVyLl9f
aW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvYmVu
Y2htYXJrX3J1bm5lci5weToKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5fX2luaXRfXyk6Cisg
ICAgICAgIChCZW5jaG1hcmtSdW5uZXIuX2ZpbmRfcGxhbl9maWxlKToKKyAgICAgICAgKEJlbmNo
bWFya1J1bm5lci5fcnVuX29uZV90ZXN0LmFuZCk6CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIu
ZXhlY3V0ZSk6CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIuX2dldF9yZXN1bHQpOiBEZWxldGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9ydW5fYmVuY2ht
YXJrLnB5OgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgIChzdGFydCk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3dlYmRyaXZlcl9iZW5jaG1hcmtf
cnVubmVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFdlYkRyaXZlckJlbmNobWFya1J1bm5lcik6Cisg
ICAgICAgIChXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIuX2dldF9yZXN1bHQpOgorICAgICAgICAo
V2ViRHJpdmVyQmVuY2htYXJrUnVubmVyLl9ydW5fb25lX3Rlc3QpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJzZXJ2ZXJfYmVuY2htYXJrX3J1bm5lci5w
eTogQWRkZWQuCisgICAgICAgIChXZWJTZXJ2ZXJCZW5jaG1hcmtSdW5uZXIpOgorICAgICAgICAo
V2ViU2VydmVyQmVuY2htYXJrUnVubmVyLl9faW5pdF9fKToKKyAgICAgICAgKFdlYlNlcnZlckJl
bmNobWFya1J1bm5lci5fZ2V0X3Jlc3VsdCk6CisgICAgICAgIChXZWJTZXJ2ZXJCZW5jaG1hcmtS
dW5uZXIuX3J1bl9vbmVfdGVzdCk6CisKIDIwMTctMDctMTggIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIGxsZGI6IEFkZCB0eXBlIHN1bW1hcnkgZm9yIFN0cmlu
Z1ZpZXcKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5l
ci9iZW5jaG1hcmtfYnVpbGRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJr
X3J1bm5lci9iZW5jaG1hcmtfYnVpbGRlci5weQppbmRleCBhMzJlYzdjNGViNzdmYjRiMjEyZjJh
NTFhYTMzNTIzOTliMzZhZTBmLi5jNDBlNjExYTVhNWY3NWQ1ZDljYTFlYTQwMTc0YmRjOTA4MTg2
YmUzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIv
YmVuY2htYXJrX2J1aWxkZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1h
cmtfcnVubmVyL2JlbmNobWFya19idWlsZGVyLnB5CkBAIC04LDE3ICs4LDE4IEBAIGltcG9ydCBz
aHV0aWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGFyZmlsZQogCi1mcm9tIHppcGZpbGUg
aW1wb3J0IFppcEZpbGUKIGZyb20gd2Via2l0cHkuYmVuY2htYXJrX3J1bm5lci51dGlscyBpbXBv
cnQgZ2V0X3BhdGhfZnJvbV9wcm9qZWN0X3Jvb3QsIGZvcmNlX3JlbW92ZQorZnJvbSB6aXBmaWxl
IGltcG9ydCBaaXBGaWxlCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQog
CiAKIGNsYXNzIEJlbmNobWFya0J1aWxkZXIob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbmFtZSwgcGxhbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBsYW4sIGRyaXZl
cik6CiAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYuX3BsYW4gPSBwbGFu
CisgICAgICAgIHNlbGYuX2RyaXZlciA9IGRyaXZlcgogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxm
KToKICAgICAgICAgc2VsZi5fd2ViX3Jvb3QgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcnVu
bmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2JlbmNobWFy
a19ydW5uZXIucHkKaW5kZXggN2FkMmZiYjUzYTE3MTUwMzE4YTFiOWIzYWEwNGE0NWRiMTI4MTcx
Yy4uMDA4MTgxMjRlMzY4Njc4MmM0MmE1MjUzYTJjNjA5NzNhYmM1YWQxMSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2JlbmNobWFya19ydW5uZXIu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2JlbmNobWFy
a19ydW5uZXIucHkKQEAgLTE1LDE0ICsxNSwxMyBAQCBpbXBvcnQgdXJscGFyc2UKIGZyb20gYmVu
Y2htYXJrX2J1aWxkZXIgaW1wb3J0IEJlbmNobWFya0J1aWxkZXIKIGZyb20gYmVuY2htYXJrX3Jl
c3VsdHMgaW1wb3J0IEJlbmNobWFya1Jlc3VsdHMKIGZyb20gYnJvd3Nlcl9kcml2ZXIuYnJvd3Nl
cl9kcml2ZXJfZmFjdG9yeSBpbXBvcnQgQnJvd3NlckRyaXZlckZhY3RvcnkKLWZyb20gaHR0cF9z
ZXJ2ZXJfZHJpdmVyLmh0dHBfc2VydmVyX2RyaXZlcl9mYWN0b3J5IGltcG9ydCBIVFRQU2VydmVy
RHJpdmVyRmFjdG9yeQotZnJvbSB1dGlscyBpbXBvcnQgdGltZW91dAogCiAKIF9sb2cgPSBsb2dn
aW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCiBjbGFzcyBCZW5jaG1hcmtSdW5uZXIob2JqZWN0
KToKKyAgICBuYW1lID0gJ2JlbmNobWFya19ydW5uZXInCiAKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcGxhbl9maWxlLCBsb2NhbF9jb3B5LCBjb3VudF9vdmVycmlkZSwgYnVpbGRfZGlyLCBvdXRw
dXRfZmlsZSwgcGxhdGZvcm0sIGJyb3dzZXIsIHNjYWxlX3VuaXQ9VHJ1ZSwgZGV2aWNlX2lkPU5v
bmUpOgogICAgICAgICB0cnk6CkBAIC0zNyw4ICszNiw2IEBAIGNsYXNzIEJlbmNobWFya1J1bm5l
cihvYmplY3QpOgogICAgICAgICAgICAgICAgIGlmIGNvdW50X292ZXJyaWRlOgogICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9wbGFuWydjb3VudCddID0gY291bnRfb3ZlcnJpZGUKICAgICAgICAg
ICAgICAgICBzZWxmLl9icm93c2VyX2RyaXZlciA9IEJyb3dzZXJEcml2ZXJGYWN0b3J5LmNyZWF0
ZShwbGF0Zm9ybSwgYnJvd3NlcikKLSAgICAgICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlcl9k
cml2ZXIgPSBIVFRQU2VydmVyRHJpdmVyRmFjdG9yeS5jcmVhdGUocGxhdGZvcm0pCi0gICAgICAg
ICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLnNldF9kZXZpY2VfaWQoZGV2aWNlX2lk
KQogICAgICAgICAgICAgICAgIHNlbGYuX2J1aWxkX2RpciA9IG9zLnBhdGguYWJzcGF0aChidWls
ZF9kaXIpIGlmIGJ1aWxkX2RpciBlbHNlIE5vbmUKICAgICAgICAgICAgICAgICBzZWxmLl9vdXRw
dXRfZmlsZSA9IG91dHB1dF9maWxlCiAgICAgICAgICAgICAgICAgc2VsZi5fc2NhbGVfdW5pdCA9
IHNjYWxlX3VuaXQKQEAgLTYzLDI0ICs2MCw4IEBAIGNsYXNzIEJlbmNobWFya1J1bm5lcihvYmpl
Y3QpOgogICAgICAgICAgICAgICAgIHJldHVybiBhYnNQYXRoCiAgICAgICAgIHJldHVybiBwbGFu
X2ZpbGUKIAotICAgIGRlZiBfZ2V0X3Jlc3VsdChzZWxmLCB0ZXN0X3VybCk6Ci0gICAgICAgIHJl
c3VsdCA9IHNlbGYuX2Jyb3dzZXJfZHJpdmVyLmFkZF9hZGRpdGlvbmFsX3Jlc3VsdHModGVzdF91
cmwsIHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5mZXRjaF9yZXN1bHQoKSkKLSAgICAgICAgYXNz
ZXJ0KG5vdCBzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIuZ2V0X3JldHVybl9jb2RlKCkpCi0gICAg
ICAgIHJldHVybiByZXN1bHQKLQogICAgIGRlZiBfcnVuX29uZV90ZXN0KHNlbGYsIHdlYl9yb290
LCB0ZXN0X2ZpbGUpOgotICAgICAgICByZXN1bHQgPSBOb25lCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5zZXJ2ZSh3ZWJfcm9vdCkKLSAgICAgICAg
ICAgIHVybCA9IHVybHBhcnNlLnVybGpvaW4oc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLmJhc2Vf
dXJsKCksIHNlbGYuX3BsYW5fbmFtZSArICcvJyArIHRlc3RfZmlsZSkKLSAgICAgICAgICAgIHNl
bGYuX2Jyb3dzZXJfZHJpdmVyLmxhdW5jaF91cmwodXJsLCBzZWxmLl9wbGFuWydvcHRpb25zJ10s
IHNlbGYuX2J1aWxkX2RpcikKLSAgICAgICAgICAgIHdpdGggdGltZW91dChzZWxmLl9wbGFuWyd0
aW1lb3V0J10pOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2dldF9yZXN1bHQodXJs
KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fYnJvd3Nlcl9kcml2ZXIuY2xv
c2VfYnJvd3NlcnMoKQotICAgICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLmtpbGxf
c2VydmVyKCkKLQotICAgICAgICByZXR1cm4ganNvbi5sb2FkcyhyZXN1bHQpCisgICAgICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ0JlbmNobWFya1J1bm5lciBpcyBhbiBhYnN0cmFjdCBj
bGFzcyBhbmQgc2hvdWxkblwndCBiZSBpbnN0YW50aWF0ZWQuJykKIAogICAgIGRlZiBfcnVuX2Jl
bmNobWFyayhzZWxmLCBjb3VudCwgd2ViX3Jvb3QpOgogICAgICAgICByZXN1bHRzID0gW10KQEAg
LTExOCw3ICs5OSw3IEBAIGNsYXNzIEJlbmNobWFya1J1bm5lcihvYmplY3QpOgogICAgICAgICBz
ZWxmLnNob3dfcmVzdWx0cyhyZXN1bHRzLCBzZWxmLl9zY2FsZV91bml0KQogCiAgICAgZGVmIGV4
ZWN1dGUoc2VsZik6Ci0gICAgICAgIHdpdGggQmVuY2htYXJrQnVpbGRlcihzZWxmLl9wbGFuX25h
bWUsIHNlbGYuX3BsYW4pIGFzIHdlYl9yb290OgorICAgICAgICB3aXRoIEJlbmNobWFya0J1aWxk
ZXIoc2VsZi5fcGxhbl9uYW1lLCBzZWxmLl9wbGFuLCBzZWxmLm5hbWUpIGFzIHdlYl9yb290Ogog
ICAgICAgICAgICAgc2VsZi5fcnVuX2JlbmNobWFyayhpbnQoc2VsZi5fcGxhblsnY291bnQnXSks
IHdlYl9yb290KQogCiAgICAgQGNsYXNzbWV0aG9kCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvcnVuX2JlbmNobWFyay5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9ydW5fYmVuY2htYXJrLnB5CmluZGV4IDdmNmI4
MDg2ZDYyZGU1YWUyZWNiYTRlMjY2NTBiZjUxNDU1ZTdlZTMuLmJkNmY0MTVmMWFkZThmNzQ1NDc0
Y2FjNmNjMDFhOTlkZTRiNTE1ZDEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
YmVuY2htYXJrX3J1bm5lci9ydW5fYmVuY2htYXJrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvYmVuY2htYXJrX3J1bm5lci9ydW5fYmVuY2htYXJrLnB5CkBAIC03LDExICs3LDE2IEBA
IGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKLWZyb20gYmVuY2htYXJr
X3J1bm5lciBpbXBvcnQgQmVuY2htYXJrUnVubmVyCiBmcm9tIGJyb3dzZXJfZHJpdmVyLmJyb3dz
ZXJfZHJpdmVyX2ZhY3RvcnkgaW1wb3J0IEJyb3dzZXJEcml2ZXJGYWN0b3J5Citmcm9tIHdlYmRy
aXZlcl9iZW5jaG1hcmtfcnVubmVyIGltcG9ydCBXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIKK2Zy
b20gd2Vic2VydmVyX2JlbmNobWFya19ydW5uZXIgaW1wb3J0IFdlYlNlcnZlckJlbmNobWFya1J1
bm5lcgogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKK2JlbmNobWFya19y
dW5uZXJfc3ViY2xhc3NlcyA9IHsKKyAgICBXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIubmFtZTog
V2ViRHJpdmVyQmVuY2htYXJrUnVubmVyLAorICAgIFdlYlNlcnZlckJlbmNobWFya1J1bm5lci5u
YW1lOiBXZWJTZXJ2ZXJCZW5jaG1hcmtSdW5uZXIsCit9CiAKIAogZGVmIGRlZmF1bHRfcGxhdGZv
cm0oKToKQEAgLTM2LDYgKzQxLDcgQEAgZGVmIHBhcnNlX2FyZ3MoKToKICAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KCctLWxvY2FsLWNvcHknLCBkZXN0PSdsb2NhbENvcHknLCBoZWxwPSdQYXRoIHRv
IGEgbG9jYWwgY29weSBvZiB0aGUgYmVuY2htYXJrLiBlLmcuIFBlcmZvcm1hbmNlVGVzdHMvU3Vu
U3BpZGVyLycpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jb3VudCcsIGRlc3Q9J2NvdW50
T3ZlcnJpZGUnLCB0eXBlPWludCwgaGVscD0nTnVtYmVyIG9mIHRpbWVzIHRvIHJ1biB0aGUgYmVu
Y2htYXJrLiBlLmcuIDUnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZGV2aWNlLWlkJywg
ZGVzdD0nZGV2aWNlX2lkJywgZGVmYXVsdD1Ob25lKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Jy0tZHJpdmVyJywgZGVzdD0nZHJpdmVyJywgZGVmYXVsdD1XZWJTZXJ2ZXJCZW5jaG1hcmtSdW5u
ZXIubmFtZSwgY2hvaWNlcz1iZW5jaG1hcmtfcnVubmVyX3N1YmNsYXNzZXMua2V5cygpKQogICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8tYWRqdXN0LXVuaXQnLCBkZXN0PSdzY2FsZV91bml0
JywgYWN0aW9uPSdzdG9yZV9mYWxzZScpCiAgICAgbXV0dWFsX2dyb3VwID0gcGFyc2VyLmFkZF9t
dXR1YWxseV9leGNsdXNpdmVfZ3JvdXAocmVxdWlyZWQ9VHJ1ZSkKICAgICBtdXR1YWxfZ3JvdXAu
YWRkX2FyZ3VtZW50KCctLXJlYWQtcmVzdWx0cy1qc29uJywgZGVzdD0nanNvbl9maWxlJywgaGVs
cD0nU3BlY2lmeSBmaWxlIHlvdSB3YW50IHRvIGZvcm1hdCcpCkBAIC04OCw3ICs5NCw4IEBAIGRl
ZiBzdGFydChhcmdzKToKICAgICAgICAgaWYgZmFpbGVkOgogICAgICAgICAgICAgX2xvZy5lcnJv
cignVGhlIGZvbGxvd2luZyBiZW5jaG1hcmsgcGxhbnMgaGF2ZSBmYWlsZWQ6ICVzJyAlIGZhaWxl
ZCkKICAgICAgICAgcmV0dXJuIGxlbihmYWlsZWQpCi0gICAgcnVubmVyID0gQmVuY2htYXJrUnVu
bmVyKGFyZ3MucGxhbiwgYXJncy5sb2NhbENvcHksIGFyZ3MuY291bnRPdmVycmlkZSwgYXJncy5i
dWlsZERpciwgYXJncy5vdXRwdXQsIGFyZ3MucGxhdGZvcm0sIGFyZ3MuYnJvd3NlciwgYXJncy5z
Y2FsZV91bml0LCBhcmdzLmRldmljZV9pZCkKKyAgICBiZW5jaG1hcmtfcnVubmVyX2NsYXNzID0g
YmVuY2htYXJrX3J1bm5lcl9zdWJjbGFzc2VzW2FyZ3MuZHJpdmVyXQorICAgIHJ1bm5lciA9IGJl
bmNobWFya19ydW5uZXJfY2xhc3MoYXJncy5wbGFuLCBhcmdzLmxvY2FsQ29weSwgYXJncy5jb3Vu
dE92ZXJyaWRlLCBhcmdzLmJ1aWxkRGlyLCBhcmdzLm91dHB1dCwgYXJncy5wbGF0Zm9ybSwgYXJn
cy5icm93c2VyLCBhcmdzLnNjYWxlX3VuaXQsIGFyZ3MuZGV2aWNlX2lkKQogICAgIHJ1bm5lci5l
eGVjdXRlKCkKIAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFy
a19ydW5uZXIvd2ViZHJpdmVyX2JlbmNobWFya19ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2JlbmNobWFya19ydW5uZXIvd2ViZHJpdmVyX2JlbmNobWFya19ydW5uZXIucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWViNTNmOTk2NmZkNzdhZTEzZjRlZmU5Y2Q0Zjg4NGY0NzQzNGQ1MAotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJk
cml2ZXJfYmVuY2htYXJrX3J1bm5lci5weQpAQCAtMCwwICsxLDMwIEBACisjIS91c3IvYmluL2Vu
diBweXRob24KKworaW1wb3J0IGpzb24KK2ltcG9ydCBsb2dnaW5nCisKK2Zyb20gYmVuY2htYXJr
X3J1bm5lciBpbXBvcnQgQmVuY2htYXJrUnVubmVyCitmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5z
dXBwb3J0LnVpIGltcG9ydCBXZWJEcml2ZXJXYWl0CisKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKF9fbmFtZV9fKQorCisKK2NsYXNzIFdlYkRyaXZlckJlbmNobWFya1J1bm5lcihCZW5jaG1h
cmtSdW5uZXIpOgorICAgIG5hbWUgPSAnd2ViZHJpdmVyJworCisgICAgZGVmIF9nZXRfcmVzdWx0
KHNlbGYsIGRyaXZlcik6CisgICAgICAgIHJlc3VsdCA9IGRyaXZlci5leGVjdXRlX3NjcmlwdCgi
cmV0dXJuIHdpbmRvdy53ZWJkcml2ZXJfcmVzdWx0cyIpCisgICAgICAgIHJldHVybiByZXN1bHQK
KworICAgIGRlZiBfcnVuX29uZV90ZXN0KHNlbGYsIHdlYl9yb290LCB0ZXN0X2ZpbGUpOgorICAg
ICAgICByZXN1bHQgPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHVybCA9ICdmaWxl
Oi8ve3Jvb3R9L3twbGFuX25hbWV9L3t0ZXN0X2ZpbGV9Jy5mb3JtYXQocm9vdD13ZWJfcm9vdCwg
cGxhbl9uYW1lPXNlbGYuX3BsYW5fbmFtZSwgdGVzdF9maWxlPXRlc3RfZmlsZSkKKyAgICAgICAg
ICAgIGRyaXZlciA9IHNlbGYuX2Jyb3dzZXJfZHJpdmVyLmxhdW5jaF9kcml2ZXIodXJsLCBzZWxm
Ll9wbGFuWydvcHRpb25zJ10sIHNlbGYuX2J1aWxkX2RpcikKKyAgICAgICAgICAgIF9sb2cuaW5m
bygnV2FpdGluZyBvbiByZXN1bHRzIGZyb20gd2ViIGJyb3dzZXInKQorICAgICAgICAgICAgcmVz
dWx0ID0gV2ViRHJpdmVyV2FpdChkcml2ZXIsIHNlbGYuX3BsYW5bJ3RpbWVvdXQnXSwgcG9sbF9m
cmVxdWVuY3k9MS4wKS51bnRpbChzZWxmLl9nZXRfcmVzdWx0KQorICAgICAgICBmaW5hbGx5Ogor
ICAgICAgICAgICAgc2VsZi5fYnJvd3Nlcl9kcml2ZXIuY2xvc2VfYnJvd3NlcnMoKQorCisgICAg
ICAgIHJldHVybiBqc29uLmxvYWRzKHJlc3VsdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJzZXJ2ZXJfYmVuY2htYXJrX3J1bm5lci5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJzZXJ2ZXJfYmVuY2ht
YXJrX3J1bm5lci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTk3ZjZjYWQyZTQyYTJlYTJlOWM0ZjJjMjI5ZmQ1
MThlN2QyZDRhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5j
aG1hcmtfcnVubmVyL3dlYnNlcnZlcl9iZW5jaG1hcmtfcnVubmVyLnB5CkBAIC0wLDAgKzEsNDAg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCitpbXBvcnQganNvbgoraW1wb3J0IGxvZ2dpbmcK
K2ltcG9ydCB1cmxwYXJzZQorCitmcm9tIGJlbmNobWFya19ydW5uZXIgaW1wb3J0IEJlbmNobWFy
a1J1bm5lcgorZnJvbSBodHRwX3NlcnZlcl9kcml2ZXIuaHR0cF9zZXJ2ZXJfZHJpdmVyX2ZhY3Rv
cnkgaW1wb3J0IEhUVFBTZXJ2ZXJEcml2ZXJGYWN0b3J5Citmcm9tIHV0aWxzIGltcG9ydCB0aW1l
b3V0CisKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKK2NsYXNzIFdl
YlNlcnZlckJlbmNobWFya1J1bm5lcihCZW5jaG1hcmtSdW5uZXIpOgorICAgIG5hbWUgPSAnd2Vi
c2VydmVyJworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYW5fZmlsZSwgbG9jYWxfY29weSwg
Y291bnRfb3ZlcnJpZGUsIGJ1aWxkX2Rpciwgb3V0cHV0X2ZpbGUsIHBsYXRmb3JtLCBicm93c2Vy
LCBzY2FsZV91bml0PVRydWUsIGRldmljZV9pZD1Ob25lKToKKyAgICAgICAgc2VsZi5faHR0cF9z
ZXJ2ZXJfZHJpdmVyID0gSFRUUFNlcnZlckRyaXZlckZhY3RvcnkuY3JlYXRlKHBsYXRmb3JtKQor
ICAgICAgICBzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIuc2V0X2RldmljZV9pZChkZXZpY2VfaWQp
CisgICAgICAgIHN1cGVyKFdlYlNlcnZlckJlbmNobWFya1J1bm5lciwgc2VsZikuX19pbml0X18o
cGxhbl9maWxlLCBsb2NhbF9jb3B5LCBjb3VudF9vdmVycmlkZSwgYnVpbGRfZGlyLCBvdXRwdXRf
ZmlsZSwgcGxhdGZvcm0sIGJyb3dzZXIsIHNjYWxlX3VuaXQsIGRldmljZV9pZCkKKworICAgIGRl
ZiBfZ2V0X3Jlc3VsdChzZWxmLCB0ZXN0X3VybCk6CisgICAgICAgIHJlc3VsdCA9IHNlbGYuX2Jy
b3dzZXJfZHJpdmVyLmFkZF9hZGRpdGlvbmFsX3Jlc3VsdHModGVzdF91cmwsIHNlbGYuX2h0dHBf
c2VydmVyX2RyaXZlci5mZXRjaF9yZXN1bHQoKSkKKyAgICAgICAgYXNzZXJ0KG5vdCBzZWxmLl9o
dHRwX3NlcnZlcl9kcml2ZXIuZ2V0X3JldHVybl9jb2RlKCkpCisgICAgICAgIHJldHVybiByZXN1
bHQKKworICAgIGRlZiBfcnVuX29uZV90ZXN0KHNlbGYsIHdlYl9yb290LCB0ZXN0X2ZpbGUpOgor
ICAgICAgICByZXN1bHQgPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX2h0
dHBfc2VydmVyX2RyaXZlci5zZXJ2ZSh3ZWJfcm9vdCkKKyAgICAgICAgICAgIHVybCA9IHVybHBh
cnNlLnVybGpvaW4oc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLmJhc2VfdXJsKCksIHNlbGYuX3Bs
YW5fbmFtZSArICcvJyArIHRlc3RfZmlsZSkKKyAgICAgICAgICAgIHNlbGYuX2Jyb3dzZXJfZHJp
dmVyLmxhdW5jaF91cmwodXJsLCBzZWxmLl9wbGFuWydvcHRpb25zJ10sIHNlbGYuX2J1aWxkX2Rp
cikKKyAgICAgICAgICAgIHdpdGggdGltZW91dChzZWxmLl9wbGFuWyd0aW1lb3V0J10pOgorICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2dldF9yZXN1bHQodXJsKQorICAgICAgICBmaW5h
bGx5OgorICAgICAgICAgICAgc2VsZi5fYnJvd3Nlcl9kcml2ZXIuY2xvc2VfYnJvd3NlcnMoKQor
ICAgICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLmtpbGxfc2VydmVyKCkKKworICAg
ICAgICByZXR1cm4ganNvbi5sb2FkcyhyZXN1bHQpCg==
</data>
<flag name="review"
          id="337011"
          type_id="1"
          status="+"
          setter="slewis"
    />
    <flag name="commit-queue"
          id="337012"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316334</attachid>
            <date>2017-07-24 18:01:38 -0700</date>
            <delta_ts>2017-07-24 20:27:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>390.patch</filename>
            <type>text/plain</type>
            <size>11163</size>
            <attacher name="Matthew Stewart">matthew_r_stewart</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NjQxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTAxOWI3MGRiYmY5MTE3ZjVmYjhkNWIwODkwZDIzNmYx
MjkzNjcyOC4uOGEyYWNkMWVkMTdhNDE0ZTEzZjliNDg1OTI3YjJhYjk0ZThkMWFlYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDE3LTA3LTE4ICBNYXR0aGV3IFN0ZXdhcnQgIDxtYXR0aGV3X3Jfc3Rld2FydEBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3ViY2xhc3MgQmVuY2htYXJrIFJ1bm5lciBzY3JpcHQgZm9yIFdl
YkRyaXZlciBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQzOTAKKworICAgICAgICBSZXZpZXdlZCBieSBEZXdlaSBaaHUsIFN0ZXBoYW5p
ZSBMZXdpcy4KKworICAgICAgICBBZGQgV2ViU2VydmVyQmVuY2htYXJrUnVubmVyIGFuZCBXZWJE
cml2ZXJCZW5jaG1hcmtSdW5uZXIgc3ViY2xhc3Nlcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfYnVpbGRlci5weToKKyAgICAgICAgKEJl
bmNobWFya0J1aWxkZXIuX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVu
Y2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcnVubmVyLnB5OgorICAgICAgICAoQmVuY2htYXJrUnVu
bmVyLl9faW5pdF9fKToKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5fZmluZF9wbGFuX2ZpbGUp
OgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLl9ydW5fb25lX3Rlc3QuYW5kKToKKyAgICAgICAg
KEJlbmNobWFya1J1bm5lci5leGVjdXRlKToKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5fZ2V0
X3Jlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtf
cnVubmVyL3J1bl9iZW5jaG1hcmsucHk6CisgICAgICAgIChwYXJzZV9hcmdzKToKKyAgICAgICAg
KHN0YXJ0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvd2Vi
ZHJpdmVyX2JlbmNobWFya19ydW5uZXIucHk6IEFkZGVkLgorICAgICAgICAoV2ViRHJpdmVyQmVu
Y2htYXJrUnVubmVyKToKKyAgICAgICAgKFdlYkRyaXZlckJlbmNobWFya1J1bm5lci5fZ2V0X3Jl
c3VsdCk6CisgICAgICAgIChXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIuX3J1bl9vbmVfdGVzdCk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3dlYnNlcnZlcl9i
ZW5jaG1hcmtfcnVubmVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFdlYlNlcnZlckJlbmNobWFya1J1
bm5lcik6CisgICAgICAgIChXZWJTZXJ2ZXJCZW5jaG1hcmtSdW5uZXIuX19pbml0X18pOgorICAg
ICAgICAoV2ViU2VydmVyQmVuY2htYXJrUnVubmVyLl9nZXRfcmVzdWx0KToKKyAgICAgICAgKFdl
YlNlcnZlckJlbmNobWFya1J1bm5lci5fcnVuX29uZV90ZXN0KToKKwogMjAxNy0wNy0xOCAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgbGxkYjogQWRkIHR5cGUg
c3VtbWFyeSBmb3IgU3RyaW5nVmlldwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9iZW5jaG1hcmtfcnVubmVyL2JlbmNobWFya19idWlsZGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2JlbmNobWFya19idWlsZGVyLnB5CmluZGV4IGEzMmVj
N2M0ZWI3N2ZiNGIyMTJmMmE1MWFhMzM1MjM5OWIzNmFlMGYuLmM0MGU2MTFhNWE1Zjc1ZDVkOWNh
MWVhNDAxNzRiZGM5MDgxODZiZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
YmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfYnVpbGRlci5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvYmVuY2htYXJrX2J1aWxkZXIucHkKQEAgLTgsMTcg
KzgsMTggQEAgaW1wb3J0IHNodXRpbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0YXJmaWxl
CiAKLWZyb20gemlwZmlsZSBpbXBvcnQgWmlwRmlsZQogZnJvbSB3ZWJraXRweS5iZW5jaG1hcmtf
cnVubmVyLnV0aWxzIGltcG9ydCBnZXRfcGF0aF9mcm9tX3Byb2plY3Rfcm9vdCwgZm9yY2VfcmVt
b3ZlCitmcm9tIHppcGZpbGUgaW1wb3J0IFppcEZpbGUKIAogCiBfbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoX19uYW1lX18pCiAKIAogY2xhc3MgQmVuY2htYXJrQnVpbGRlcihvYmplY3QpOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwbGFuKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
bmFtZSwgcGxhbiwgZHJpdmVyKToKICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKICAgICAgICAg
c2VsZi5fcGxhbiA9IHBsYW4KKyAgICAgICAgc2VsZi5fZHJpdmVyID0gZHJpdmVyCiAKICAgICBk
ZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICBzZWxmLl93ZWJfcm9vdCA9IHRlbXBmaWxlLm1r
ZHRlbXAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVu
bmVyL2JlbmNobWFya19ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFy
a19ydW5uZXIvYmVuY2htYXJrX3J1bm5lci5weQppbmRleCA3YWQyZmJiNTNhMTcxNTAzMThhMWI5
YjNhYTA0YTQ1ZGIxMjgxNzFjLi4wMDgxODEyNGUzNjg2NzgyYzQyYTUyNTNhMmM2MDk3M2FiYzVh
ZDExIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIv
YmVuY2htYXJrX3J1bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFy
a19ydW5uZXIvYmVuY2htYXJrX3J1bm5lci5weQpAQCAtMTUsMTQgKzE1LDEzIEBAIGltcG9ydCB1
cmxwYXJzZQogZnJvbSBiZW5jaG1hcmtfYnVpbGRlciBpbXBvcnQgQmVuY2htYXJrQnVpbGRlcgog
ZnJvbSBiZW5jaG1hcmtfcmVzdWx0cyBpbXBvcnQgQmVuY2htYXJrUmVzdWx0cwogZnJvbSBicm93
c2VyX2RyaXZlci5icm93c2VyX2RyaXZlcl9mYWN0b3J5IGltcG9ydCBCcm93c2VyRHJpdmVyRmFj
dG9yeQotZnJvbSBodHRwX3NlcnZlcl9kcml2ZXIuaHR0cF9zZXJ2ZXJfZHJpdmVyX2ZhY3Rvcnkg
aW1wb3J0IEhUVFBTZXJ2ZXJEcml2ZXJGYWN0b3J5Ci1mcm9tIHV0aWxzIGltcG9ydCB0aW1lb3V0
CiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKIGNsYXNzIEJlbmNo
bWFya1J1bm5lcihvYmplY3QpOgorICAgIG5hbWUgPSAnYmVuY2htYXJrX3J1bm5lcicKIAogICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBwbGFuX2ZpbGUsIGxvY2FsX2NvcHksIGNvdW50X292ZXJyaWRl
LCBidWlsZF9kaXIsIG91dHB1dF9maWxlLCBwbGF0Zm9ybSwgYnJvd3Nlciwgc2NhbGVfdW5pdD1U
cnVlLCBkZXZpY2VfaWQ9Tm9uZSk6CiAgICAgICAgIHRyeToKQEAgLTM3LDggKzM2LDYgQEAgY2xh
c3MgQmVuY2htYXJrUnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgaWYgY291bnRfb3Zl
cnJpZGU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BsYW5bJ2NvdW50J10gPSBjb3VudF9v
dmVycmlkZQogICAgICAgICAgICAgICAgIHNlbGYuX2Jyb3dzZXJfZHJpdmVyID0gQnJvd3NlckRy
aXZlckZhY3RvcnkuY3JlYXRlKHBsYXRmb3JtLCBicm93c2VyKQotICAgICAgICAgICAgICAgIHNl
bGYuX2h0dHBfc2VydmVyX2RyaXZlciA9IEhUVFBTZXJ2ZXJEcml2ZXJGYWN0b3J5LmNyZWF0ZShw
bGF0Zm9ybSkKLSAgICAgICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIuc2V0X2Rl
dmljZV9pZChkZXZpY2VfaWQpCiAgICAgICAgICAgICAgICAgc2VsZi5fYnVpbGRfZGlyID0gb3Mu
cGF0aC5hYnNwYXRoKGJ1aWxkX2RpcikgaWYgYnVpbGRfZGlyIGVsc2UgTm9uZQogICAgICAgICAg
ICAgICAgIHNlbGYuX291dHB1dF9maWxlID0gb3V0cHV0X2ZpbGUKICAgICAgICAgICAgICAgICBz
ZWxmLl9zY2FsZV91bml0ID0gc2NhbGVfdW5pdApAQCAtNjMsMjQgKzYwLDggQEAgY2xhc3MgQmVu
Y2htYXJrUnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFic1BhdGgKICAg
ICAgICAgcmV0dXJuIHBsYW5fZmlsZQogCi0gICAgZGVmIF9nZXRfcmVzdWx0KHNlbGYsIHRlc3Rf
dXJsKToKLSAgICAgICAgcmVzdWx0ID0gc2VsZi5fYnJvd3Nlcl9kcml2ZXIuYWRkX2FkZGl0aW9u
YWxfcmVzdWx0cyh0ZXN0X3VybCwgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLmZldGNoX3Jlc3Vs
dCgpKQotICAgICAgICBhc3NlcnQobm90IHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5nZXRfcmV0
dXJuX2NvZGUoKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCiAgICAgZGVmIF9ydW5fb25lX3Rl
c3Qoc2VsZiwgd2ViX3Jvb3QsIHRlc3RfZmlsZSk6Ci0gICAgICAgIHJlc3VsdCA9IE5vbmUKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLnNlcnZlKHdl
Yl9yb290KQotICAgICAgICAgICAgdXJsID0gdXJscGFyc2UudXJsam9pbihzZWxmLl9odHRwX3Nl
cnZlcl9kcml2ZXIuYmFzZV91cmwoKSwgc2VsZi5fcGxhbl9uYW1lICsgJy8nICsgdGVzdF9maWxl
KQotICAgICAgICAgICAgc2VsZi5fYnJvd3Nlcl9kcml2ZXIubGF1bmNoX3VybCh1cmwsIHNlbGYu
X3BsYW5bJ29wdGlvbnMnXSwgc2VsZi5fYnVpbGRfZGlyKQotICAgICAgICAgICAgd2l0aCB0aW1l
b3V0KHNlbGYuX3BsYW5bJ3RpbWVvdXQnXSk6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gc2Vs
Zi5fZ2V0X3Jlc3VsdCh1cmwpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9i
cm93c2VyX2RyaXZlci5jbG9zZV9icm93c2VycygpCi0gICAgICAgICAgICBzZWxmLl9odHRwX3Nl
cnZlcl9kcml2ZXIua2lsbF9zZXJ2ZXIoKQotCi0gICAgICAgIHJldHVybiBqc29uLmxvYWRzKHJl
c3VsdCkKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignQmVuY2htYXJrUnVubmVy
IGlzIGFuIGFic3RyYWN0IGNsYXNzIGFuZCBzaG91bGRuXCd0IGJlIGluc3RhbnRpYXRlZC4nKQog
CiAgICAgZGVmIF9ydW5fYmVuY2htYXJrKHNlbGYsIGNvdW50LCB3ZWJfcm9vdCk6CiAgICAgICAg
IHJlc3VsdHMgPSBbXQpAQCAtMTE4LDcgKzk5LDcgQEAgY2xhc3MgQmVuY2htYXJrUnVubmVyKG9i
amVjdCk6CiAgICAgICAgIHNlbGYuc2hvd19yZXN1bHRzKHJlc3VsdHMsIHNlbGYuX3NjYWxlX3Vu
aXQpCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmKToKLSAgICAgICAgd2l0aCBCZW5jaG1hcmtCdWls
ZGVyKHNlbGYuX3BsYW5fbmFtZSwgc2VsZi5fcGxhbikgYXMgd2ViX3Jvb3Q6CisgICAgICAgIHdp
dGggQmVuY2htYXJrQnVpbGRlcihzZWxmLl9wbGFuX25hbWUsIHNlbGYuX3BsYW4sIHNlbGYubmFt
ZSkgYXMgd2ViX3Jvb3Q6CiAgICAgICAgICAgICBzZWxmLl9ydW5fYmVuY2htYXJrKGludChzZWxm
Ll9wbGFuWydjb3VudCddKSwgd2ViX3Jvb3QpCiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9ydW5fYmVuY2htYXJr
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3J1bl9iZW5jaG1h
cmsucHkKaW5kZXggN2Y2YjgwODZkNjJkZTVhZTJlY2JhNGUyNjY1MGJmNTE0NTVlN2VlMy4uYmQ2
ZjQxNWYxYWRlOGY3NDU0NzRjYWM2Y2MwMWE5OWRlNGI1MTVkMSAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3J1bl9iZW5jaG1hcmsucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3J1bl9iZW5jaG1hcmsucHkK
QEAgLTcsMTEgKzcsMTYgQEAgaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMK
IAotZnJvbSBiZW5jaG1hcmtfcnVubmVyIGltcG9ydCBCZW5jaG1hcmtSdW5uZXIKIGZyb20gYnJv
d3Nlcl9kcml2ZXIuYnJvd3Nlcl9kcml2ZXJfZmFjdG9yeSBpbXBvcnQgQnJvd3NlckRyaXZlckZh
Y3RvcnkKK2Zyb20gd2ViZHJpdmVyX2JlbmNobWFya19ydW5uZXIgaW1wb3J0IFdlYkRyaXZlckJl
bmNobWFya1J1bm5lcgorZnJvbSB3ZWJzZXJ2ZXJfYmVuY2htYXJrX3J1bm5lciBpbXBvcnQgV2Vi
U2VydmVyQmVuY2htYXJrUnVubmVyCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt
ZV9fKQorYmVuY2htYXJrX3J1bm5lcl9zdWJjbGFzc2VzID0geworICAgIFdlYkRyaXZlckJlbmNo
bWFya1J1bm5lci5uYW1lOiBXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIsCisgICAgV2ViU2VydmVy
QmVuY2htYXJrUnVubmVyLm5hbWU6IFdlYlNlcnZlckJlbmNobWFya1J1bm5lciwKK30KIAogCiBk
ZWYgZGVmYXVsdF9wbGF0Zm9ybSgpOgpAQCAtMzYsNiArNDEsNyBAQCBkZWYgcGFyc2VfYXJncygp
OgogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbG9jYWwtY29weScsIGRlc3Q9J2xvY2FsQ29w
eScsIGhlbHA9J1BhdGggdG8gYSBsb2NhbCBjb3B5IG9mIHRoZSBiZW5jaG1hcmsuIGUuZy4gUGVy
Zm9ybWFuY2VUZXN0cy9TdW5TcGlkZXIvJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNv
dW50JywgZGVzdD0nY291bnRPdmVycmlkZScsIHR5cGU9aW50LCBoZWxwPSdOdW1iZXIgb2YgdGlt
ZXMgdG8gcnVuIHRoZSBiZW5jaG1hcmsuIGUuZy4gNScpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgnLS1kZXZpY2UtaWQnLCBkZXN0PSdkZXZpY2VfaWQnLCBkZWZhdWx0PU5vbmUpCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgnLS1kcml2ZXInLCBkZXN0PSdkcml2ZXInLCBkZWZhdWx0PVdlYlNl
cnZlckJlbmNobWFya1J1bm5lci5uYW1lLCBjaG9pY2VzPWJlbmNobWFya19ydW5uZXJfc3ViY2xh
c3Nlcy5rZXlzKCkpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1uby1hZGp1c3QtdW5pdCcs
IGRlc3Q9J3NjYWxlX3VuaXQnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJykKICAgICBtdXR1YWxfZ3Jv
dXAgPSBwYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cChyZXF1aXJlZD1UcnVlKQog
ICAgIG11dHVhbF9ncm91cC5hZGRfYXJndW1lbnQoJy0tcmVhZC1yZXN1bHRzLWpzb24nLCBkZXN0
PSdqc29uX2ZpbGUnLCBoZWxwPSdTcGVjaWZ5IGZpbGUgeW91IHdhbnQgdG8gZm9ybWF0JykKQEAg
LTg4LDcgKzk0LDggQEAgZGVmIHN0YXJ0KGFyZ3MpOgogICAgICAgICBpZiBmYWlsZWQ6CiAgICAg
ICAgICAgICBfbG9nLmVycm9yKCdUaGUgZm9sbG93aW5nIGJlbmNobWFyayBwbGFucyBoYXZlIGZh
aWxlZDogJXMnICUgZmFpbGVkKQogICAgICAgICByZXR1cm4gbGVuKGZhaWxlZCkKLSAgICBydW5u
ZXIgPSBCZW5jaG1hcmtSdW5uZXIoYXJncy5wbGFuLCBhcmdzLmxvY2FsQ29weSwgYXJncy5jb3Vu
dE92ZXJyaWRlLCBhcmdzLmJ1aWxkRGlyLCBhcmdzLm91dHB1dCwgYXJncy5wbGF0Zm9ybSwgYXJn
cy5icm93c2VyLCBhcmdzLnNjYWxlX3VuaXQsIGFyZ3MuZGV2aWNlX2lkKQorICAgIGJlbmNobWFy
a19ydW5uZXJfY2xhc3MgPSBiZW5jaG1hcmtfcnVubmVyX3N1YmNsYXNzZXNbYXJncy5kcml2ZXJd
CisgICAgcnVubmVyID0gYmVuY2htYXJrX3J1bm5lcl9jbGFzcyhhcmdzLnBsYW4sIGFyZ3MubG9j
YWxDb3B5LCBhcmdzLmNvdW50T3ZlcnJpZGUsIGFyZ3MuYnVpbGREaXIsIGFyZ3Mub3V0cHV0LCBh
cmdzLnBsYXRmb3JtLCBhcmdzLmJyb3dzZXIsIGFyZ3Muc2NhbGVfdW5pdCwgYXJncy5kZXZpY2Vf
aWQpCiAgICAgcnVubmVyLmV4ZWN1dGUoKQogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJkcml2ZXJfYmVuY2htYXJrX3J1bm5lci5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJkcml2ZXJfYmVuY2ht
YXJrX3J1bm5lci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZWI1M2Y5OTY2ZmQ3N2FlMTNmNGVmZTljZDRmODg0
ZjQ3NDM0ZDUwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5j
aG1hcmtfcnVubmVyL3dlYmRyaXZlcl9iZW5jaG1hcmtfcnVubmVyLnB5CkBAIC0wLDAgKzEsMzAg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCitpbXBvcnQganNvbgoraW1wb3J0IGxvZ2dpbmcK
KworZnJvbSBiZW5jaG1hcmtfcnVubmVyIGltcG9ydCBCZW5jaG1hcmtSdW5uZXIKK2Zyb20gc2Vs
ZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQudWkgaW1wb3J0IFdlYkRyaXZlcldhaXQKKworCitfbG9n
ID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworY2xhc3MgV2ViRHJpdmVyQmVuY2ht
YXJrUnVubmVyKEJlbmNobWFya1J1bm5lcik6CisgICAgbmFtZSA9ICd3ZWJkcml2ZXInCisKKyAg
ICBkZWYgX2dldF9yZXN1bHQoc2VsZiwgZHJpdmVyKToKKyAgICAgICAgcmVzdWx0ID0gZHJpdmVy
LmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gd2luZG93LndlYmRyaXZlcl9yZXN1bHRzIikKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIF9ydW5fb25lX3Rlc3Qoc2VsZiwgd2ViX3Jvb3Qs
IHRlc3RfZmlsZSk6CisgICAgICAgIHJlc3VsdCA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgdXJsID0gJ2ZpbGU6Ly97cm9vdH0ve3BsYW5fbmFtZX0ve3Rlc3RfZmlsZX0nLmZvcm1h
dChyb290PXdlYl9yb290LCBwbGFuX25hbWU9c2VsZi5fcGxhbl9uYW1lLCB0ZXN0X2ZpbGU9dGVz
dF9maWxlKQorICAgICAgICAgICAgZHJpdmVyID0gc2VsZi5fYnJvd3Nlcl9kcml2ZXIubGF1bmNo
X2RyaXZlcih1cmwsIHNlbGYuX3BsYW5bJ29wdGlvbnMnXSwgc2VsZi5fYnVpbGRfZGlyKQorICAg
ICAgICAgICAgX2xvZy5pbmZvKCdXYWl0aW5nIG9uIHJlc3VsdHMgZnJvbSB3ZWIgYnJvd3Nlcicp
CisgICAgICAgICAgICByZXN1bHQgPSBXZWJEcml2ZXJXYWl0KGRyaXZlciwgc2VsZi5fcGxhblsn
dGltZW91dCddLCBwb2xsX2ZyZXF1ZW5jeT0xLjApLnVudGlsKHNlbGYuX2dldF9yZXN1bHQpCisg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9icm93c2VyX2RyaXZlci5jbG9zZV9i
cm93c2VycygpCisKKyAgICAgICAgcmV0dXJuIGpzb24ubG9hZHMocmVzdWx0KQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3dlYnNlcnZlcl9iZW5j
aG1hcmtfcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVy
L3dlYnNlcnZlcl9iZW5jaG1hcmtfcnVubmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhOTdmNmNhZDJlNDJh
MmVhMmU5YzRmMmMyMjlmZDUxOGU3ZDJkNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvd2Vic2VydmVyX2JlbmNobWFya19ydW5uZXIu
cHkKQEAgLTAsMCArMSw0MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKK2ltcG9ydCBqc29u
CitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHVybHBhcnNlCisKK2Zyb20gYmVuY2htYXJrX3J1bm5l
ciBpbXBvcnQgQmVuY2htYXJrUnVubmVyCitmcm9tIGh0dHBfc2VydmVyX2RyaXZlci5odHRwX3Nl
cnZlcl9kcml2ZXJfZmFjdG9yeSBpbXBvcnQgSFRUUFNlcnZlckRyaXZlckZhY3RvcnkKK2Zyb20g
dXRpbHMgaW1wb3J0IHRpbWVvdXQKKworCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1l
X18pCisKKworY2xhc3MgV2ViU2VydmVyQmVuY2htYXJrUnVubmVyKEJlbmNobWFya1J1bm5lcik6
CisgICAgbmFtZSA9ICd3ZWJzZXJ2ZXInCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGxhbl9m
aWxlLCBsb2NhbF9jb3B5LCBjb3VudF9vdmVycmlkZSwgYnVpbGRfZGlyLCBvdXRwdXRfZmlsZSwg
cGxhdGZvcm0sIGJyb3dzZXIsIHNjYWxlX3VuaXQ9VHJ1ZSwgZGV2aWNlX2lkPU5vbmUpOgorICAg
ICAgICBzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIgPSBIVFRQU2VydmVyRHJpdmVyRmFjdG9yeS5j
cmVhdGUocGxhdGZvcm0pCisgICAgICAgIHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5zZXRfZGV2
aWNlX2lkKGRldmljZV9pZCkKKyAgICAgICAgc3VwZXIoV2ViU2VydmVyQmVuY2htYXJrUnVubmVy
LCBzZWxmKS5fX2luaXRfXyhwbGFuX2ZpbGUsIGxvY2FsX2NvcHksIGNvdW50X292ZXJyaWRlLCBi
dWlsZF9kaXIsIG91dHB1dF9maWxlLCBwbGF0Zm9ybSwgYnJvd3Nlciwgc2NhbGVfdW5pdCwgZGV2
aWNlX2lkKQorCisgICAgZGVmIF9nZXRfcmVzdWx0KHNlbGYsIHRlc3RfdXJsKToKKyAgICAgICAg
cmVzdWx0ID0gc2VsZi5fYnJvd3Nlcl9kcml2ZXIuYWRkX2FkZGl0aW9uYWxfcmVzdWx0cyh0ZXN0
X3VybCwgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLmZldGNoX3Jlc3VsdCgpKQorICAgICAgICBh
c3NlcnQobm90IHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5nZXRfcmV0dXJuX2NvZGUoKSkKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIF9ydW5fb25lX3Rlc3Qoc2VsZiwgd2ViX3Jv
b3QsIHRlc3RfZmlsZSk6CisgICAgICAgIHJlc3VsdCA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLnNlcnZlKHdlYl9yb290KQorICAgICAg
ICAgICAgdXJsID0gdXJscGFyc2UudXJsam9pbihzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIuYmFz
ZV91cmwoKSwgc2VsZi5fcGxhbl9uYW1lICsgJy8nICsgdGVzdF9maWxlKQorICAgICAgICAgICAg
c2VsZi5fYnJvd3Nlcl9kcml2ZXIubGF1bmNoX3VybCh1cmwsIHNlbGYuX3BsYW5bJ29wdGlvbnMn
XSwgc2VsZi5fYnVpbGRfZGlyKQorICAgICAgICAgICAgd2l0aCB0aW1lb3V0KHNlbGYuX3BsYW5b
J3RpbWVvdXQnXSk6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fZ2V0X3Jlc3VsdCh1
cmwpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9icm93c2VyX2RyaXZlci5j
bG9zZV9icm93c2VycygpCisgICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIua2ls
bF9zZXJ2ZXIoKQorCisgICAgICAgIHJldHVybiBqc29uLmxvYWRzKHJlc3VsdCkK
</data>
<flag name="review"
          id="337020"
          type_id="1"
          status="+"
          setter="slewis"
    />
    <flag name="commit-queue"
          id="337021"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316344</attachid>
            <date>2017-07-24 20:27:33 -0700</date>
            <delta_ts>2017-07-24 21:10:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>390.patch</filename>
            <type>text/plain</type>
            <size>11211</size>
            <attacher name="Matthew Stewart">matthew_r_stewart</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NjQxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTAxOWI3MGRiYmY5MTE3ZjVmYjhkNWIwODkwZDIzNmYx
MjkzNjcyOC4uOGEyYWNkMWVkMTdhNDE0ZTEzZjliNDg1OTI3YjJhYjk0ZThkMWFlYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDE3LTA3LTE4ICBNYXR0aGV3IFN0ZXdhcnQgIDxtYXR0aGV3X3Jfc3Rld2FydEBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3ViY2xhc3MgQmVuY2htYXJrIFJ1bm5lciBzY3JpcHQgZm9yIFdl
YkRyaXZlciBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQzOTAKKworICAgICAgICBSZXZpZXdlZCBieSBEZXdlaSBaaHUsIFN0ZXBoYW5p
ZSBMZXdpcy4KKworICAgICAgICBBZGQgV2ViU2VydmVyQmVuY2htYXJrUnVubmVyIGFuZCBXZWJE
cml2ZXJCZW5jaG1hcmtSdW5uZXIgc3ViY2xhc3Nlcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvYmVuY2htYXJrX3J1bm5lci9iZW5jaG1hcmtfYnVpbGRlci5weToKKyAgICAgICAgKEJl
bmNobWFya0J1aWxkZXIuX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVu
Y2htYXJrX3J1bm5lci9iZW5jaG1hcmtfcnVubmVyLnB5OgorICAgICAgICAoQmVuY2htYXJrUnVu
bmVyLl9faW5pdF9fKToKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5fZmluZF9wbGFuX2ZpbGUp
OgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLl9ydW5fb25lX3Rlc3QuYW5kKToKKyAgICAgICAg
KEJlbmNobWFya1J1bm5lci5leGVjdXRlKToKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5fZ2V0
X3Jlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtf
cnVubmVyL3J1bl9iZW5jaG1hcmsucHk6CisgICAgICAgIChwYXJzZV9hcmdzKToKKyAgICAgICAg
KHN0YXJ0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvd2Vi
ZHJpdmVyX2JlbmNobWFya19ydW5uZXIucHk6IEFkZGVkLgorICAgICAgICAoV2ViRHJpdmVyQmVu
Y2htYXJrUnVubmVyKToKKyAgICAgICAgKFdlYkRyaXZlckJlbmNobWFya1J1bm5lci5fZ2V0X3Jl
c3VsdCk6CisgICAgICAgIChXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIuX3J1bl9vbmVfdGVzdCk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3dlYnNlcnZlcl9i
ZW5jaG1hcmtfcnVubmVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFdlYlNlcnZlckJlbmNobWFya1J1
bm5lcik6CisgICAgICAgIChXZWJTZXJ2ZXJCZW5jaG1hcmtSdW5uZXIuX19pbml0X18pOgorICAg
ICAgICAoV2ViU2VydmVyQmVuY2htYXJrUnVubmVyLl9nZXRfcmVzdWx0KToKKyAgICAgICAgKFdl
YlNlcnZlckJlbmNobWFya1J1bm5lci5fcnVuX29uZV90ZXN0KToKKwogMjAxNy0wNy0yNCAgTWF0
dGhldyBTdGV3YXJ0ICA8bWF0dGhld19yX3N0ZXdhcnRAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBCZW5jaG1hcmtSdW5uZXIgcGF0Y2hlcyB3aXRoIFdlYkRyaXZlciBzdXBwb3J0IGZvciBlYWNo
IHRlc3RpbmcgcGxhbgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1h
cmtfcnVubmVyL2JlbmNobWFya19idWlsZGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9i
ZW5jaG1hcmtfcnVubmVyL2JlbmNobWFya19idWlsZGVyLnB5CmluZGV4IGEzMmVjN2M0ZWI3N2Zi
NGIyMTJmMmE1MWFhMzM1MjM5OWIzNmFlMGYuLmM0MGU2MTFhNWE1Zjc1ZDVkOWNhMWVhNDAxNzRi
ZGM5MDgxODZiZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJr
X3J1bm5lci9iZW5jaG1hcmtfYnVpbGRlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2JlbmNobWFya19ydW5uZXIvYmVuY2htYXJrX2J1aWxkZXIucHkKQEAgLTgsMTcgKzgsMTggQEAg
aW1wb3J0IHNodXRpbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0YXJmaWxlCiAKLWZyb20g
emlwZmlsZSBpbXBvcnQgWmlwRmlsZQogZnJvbSB3ZWJraXRweS5iZW5jaG1hcmtfcnVubmVyLnV0
aWxzIGltcG9ydCBnZXRfcGF0aF9mcm9tX3Byb2plY3Rfcm9vdCwgZm9yY2VfcmVtb3ZlCitmcm9t
IHppcGZpbGUgaW1wb3J0IFppcEZpbGUKIAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19u
YW1lX18pCiAKIAogY2xhc3MgQmVuY2htYXJrQnVpbGRlcihvYmplY3QpOgotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBuYW1lLCBwbGFuKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGxh
biwgZHJpdmVyKToKICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5fcGxh
biA9IHBsYW4KKyAgICAgICAgc2VsZi5fZHJpdmVyID0gZHJpdmVyCiAKICAgICBkZWYgX19lbnRl
cl9fKHNlbGYpOgogICAgICAgICBzZWxmLl93ZWJfcm9vdCA9IHRlbXBmaWxlLm1rZHRlbXAoKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2JlbmNo
bWFya19ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIv
YmVuY2htYXJrX3J1bm5lci5weQppbmRleCA3YWQyZmJiNTNhMTcxNTAzMThhMWI5YjNhYTA0YTQ1
ZGIxMjgxNzFjLi4wMDgxODEyNGUzNjg2NzgyYzQyYTUyNTNhMmM2MDk3M2FiYzVhZDExIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvYmVuY2htYXJr
X3J1bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIv
YmVuY2htYXJrX3J1bm5lci5weQpAQCAtMTUsMTQgKzE1LDEzIEBAIGltcG9ydCB1cmxwYXJzZQog
ZnJvbSBiZW5jaG1hcmtfYnVpbGRlciBpbXBvcnQgQmVuY2htYXJrQnVpbGRlcgogZnJvbSBiZW5j
aG1hcmtfcmVzdWx0cyBpbXBvcnQgQmVuY2htYXJrUmVzdWx0cwogZnJvbSBicm93c2VyX2RyaXZl
ci5icm93c2VyX2RyaXZlcl9mYWN0b3J5IGltcG9ydCBCcm93c2VyRHJpdmVyRmFjdG9yeQotZnJv
bSBodHRwX3NlcnZlcl9kcml2ZXIuaHR0cF9zZXJ2ZXJfZHJpdmVyX2ZhY3RvcnkgaW1wb3J0IEhU
VFBTZXJ2ZXJEcml2ZXJGYWN0b3J5Ci1mcm9tIHV0aWxzIGltcG9ydCB0aW1lb3V0CiAKIAogX2xv
ZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKIGNsYXNzIEJlbmNobWFya1J1bm5l
cihvYmplY3QpOgorICAgIG5hbWUgPSAnYmVuY2htYXJrX3J1bm5lcicKIAogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwbGFuX2ZpbGUsIGxvY2FsX2NvcHksIGNvdW50X292ZXJyaWRlLCBidWlsZF9k
aXIsIG91dHB1dF9maWxlLCBwbGF0Zm9ybSwgYnJvd3Nlciwgc2NhbGVfdW5pdD1UcnVlLCBkZXZp
Y2VfaWQ9Tm9uZSk6CiAgICAgICAgIHRyeToKQEAgLTM3LDggKzM2LDYgQEAgY2xhc3MgQmVuY2ht
YXJrUnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgaWYgY291bnRfb3ZlcnJpZGU6CiAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3BsYW5bJ2NvdW50J10gPSBjb3VudF9vdmVycmlkZQog
ICAgICAgICAgICAgICAgIHNlbGYuX2Jyb3dzZXJfZHJpdmVyID0gQnJvd3NlckRyaXZlckZhY3Rv
cnkuY3JlYXRlKHBsYXRmb3JtLCBicm93c2VyKQotICAgICAgICAgICAgICAgIHNlbGYuX2h0dHBf
c2VydmVyX2RyaXZlciA9IEhUVFBTZXJ2ZXJEcml2ZXJGYWN0b3J5LmNyZWF0ZShwbGF0Zm9ybSkK
LSAgICAgICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIuc2V0X2RldmljZV9pZChk
ZXZpY2VfaWQpCiAgICAgICAgICAgICAgICAgc2VsZi5fYnVpbGRfZGlyID0gb3MucGF0aC5hYnNw
YXRoKGJ1aWxkX2RpcikgaWYgYnVpbGRfZGlyIGVsc2UgTm9uZQogICAgICAgICAgICAgICAgIHNl
bGYuX291dHB1dF9maWxlID0gb3V0cHV0X2ZpbGUKICAgICAgICAgICAgICAgICBzZWxmLl9zY2Fs
ZV91bml0ID0gc2NhbGVfdW5pdApAQCAtNjMsMjQgKzYwLDggQEAgY2xhc3MgQmVuY2htYXJrUnVu
bmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFic1BhdGgKICAgICAgICAgcmV0
dXJuIHBsYW5fZmlsZQogCi0gICAgZGVmIF9nZXRfcmVzdWx0KHNlbGYsIHRlc3RfdXJsKToKLSAg
ICAgICAgcmVzdWx0ID0gc2VsZi5fYnJvd3Nlcl9kcml2ZXIuYWRkX2FkZGl0aW9uYWxfcmVzdWx0
cyh0ZXN0X3VybCwgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLmZldGNoX3Jlc3VsdCgpKQotICAg
ICAgICBhc3NlcnQobm90IHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5nZXRfcmV0dXJuX2NvZGUo
KSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCiAgICAgZGVmIF9ydW5fb25lX3Rlc3Qoc2VsZiwg
d2ViX3Jvb3QsIHRlc3RfZmlsZSk6Ci0gICAgICAgIHJlc3VsdCA9IE5vbmUKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLnNlcnZlKHdlYl9yb290KQot
ICAgICAgICAgICAgdXJsID0gdXJscGFyc2UudXJsam9pbihzZWxmLl9odHRwX3NlcnZlcl9kcml2
ZXIuYmFzZV91cmwoKSwgc2VsZi5fcGxhbl9uYW1lICsgJy8nICsgdGVzdF9maWxlKQotICAgICAg
ICAgICAgc2VsZi5fYnJvd3Nlcl9kcml2ZXIubGF1bmNoX3VybCh1cmwsIHNlbGYuX3BsYW5bJ29w
dGlvbnMnXSwgc2VsZi5fYnVpbGRfZGlyKQotICAgICAgICAgICAgd2l0aCB0aW1lb3V0KHNlbGYu
X3BsYW5bJ3RpbWVvdXQnXSk6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fZ2V0X3Jl
c3VsdCh1cmwpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9icm93c2VyX2Ry
aXZlci5jbG9zZV9icm93c2VycygpCi0gICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlcl9kcml2
ZXIua2lsbF9zZXJ2ZXIoKQotCi0gICAgICAgIHJldHVybiBqc29uLmxvYWRzKHJlc3VsdCkKKyAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignQmVuY2htYXJrUnVubmVyIGlzIGFuIGFi
c3RyYWN0IGNsYXNzIGFuZCBzaG91bGRuXCd0IGJlIGluc3RhbnRpYXRlZC4nKQogCiAgICAgZGVm
IF9ydW5fYmVuY2htYXJrKHNlbGYsIGNvdW50LCB3ZWJfcm9vdCk6CiAgICAgICAgIHJlc3VsdHMg
PSBbXQpAQCAtMTE4LDcgKzk5LDcgQEAgY2xhc3MgQmVuY2htYXJrUnVubmVyKG9iamVjdCk6CiAg
ICAgICAgIHNlbGYuc2hvd19yZXN1bHRzKHJlc3VsdHMsIHNlbGYuX3NjYWxlX3VuaXQpCiAKICAg
ICBkZWYgZXhlY3V0ZShzZWxmKToKLSAgICAgICAgd2l0aCBCZW5jaG1hcmtCdWlsZGVyKHNlbGYu
X3BsYW5fbmFtZSwgc2VsZi5fcGxhbikgYXMgd2ViX3Jvb3Q6CisgICAgICAgIHdpdGggQmVuY2ht
YXJrQnVpbGRlcihzZWxmLl9wbGFuX25hbWUsIHNlbGYuX3BsYW4sIHNlbGYubmFtZSkgYXMgd2Vi
X3Jvb3Q6CiAgICAgICAgICAgICBzZWxmLl9ydW5fYmVuY2htYXJrKGludChzZWxmLl9wbGFuWydj
b3VudCddKSwgd2ViX3Jvb3QpCiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9ydW5fYmVuY2htYXJrLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3J1bl9iZW5jaG1hcmsucHkKaW5k
ZXggN2Y2YjgwODZkNjJkZTVhZTJlY2JhNGUyNjY1MGJmNTE0NTVlN2VlMy4uYmQ2ZjQxNWYxYWRl
OGY3NDU0NzRjYWM2Y2MwMWE5OWRlNGI1MTVkMSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3J1bl9iZW5jaG1hcmsucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3J1bl9iZW5jaG1hcmsucHkKQEAgLTcsMTEg
KzcsMTYgQEAgaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIAotZnJvbSBi
ZW5jaG1hcmtfcnVubmVyIGltcG9ydCBCZW5jaG1hcmtSdW5uZXIKIGZyb20gYnJvd3Nlcl9kcml2
ZXIuYnJvd3Nlcl9kcml2ZXJfZmFjdG9yeSBpbXBvcnQgQnJvd3NlckRyaXZlckZhY3RvcnkKK2Zy
b20gd2ViZHJpdmVyX2JlbmNobWFya19ydW5uZXIgaW1wb3J0IFdlYkRyaXZlckJlbmNobWFya1J1
bm5lcgorZnJvbSB3ZWJzZXJ2ZXJfYmVuY2htYXJrX3J1bm5lciBpbXBvcnQgV2ViU2VydmVyQmVu
Y2htYXJrUnVubmVyCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorYmVu
Y2htYXJrX3J1bm5lcl9zdWJjbGFzc2VzID0geworICAgIFdlYkRyaXZlckJlbmNobWFya1J1bm5l
ci5uYW1lOiBXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIsCisgICAgV2ViU2VydmVyQmVuY2htYXJr
UnVubmVyLm5hbWU6IFdlYlNlcnZlckJlbmNobWFya1J1bm5lciwKK30KIAogCiBkZWYgZGVmYXVs
dF9wbGF0Zm9ybSgpOgpAQCAtMzYsNiArNDEsNyBAQCBkZWYgcGFyc2VfYXJncygpOgogICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoJy0tbG9jYWwtY29weScsIGRlc3Q9J2xvY2FsQ29weScsIGhlbHA9
J1BhdGggdG8gYSBsb2NhbCBjb3B5IG9mIHRoZSBiZW5jaG1hcmsuIGUuZy4gUGVyZm9ybWFuY2VU
ZXN0cy9TdW5TcGlkZXIvJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNvdW50JywgZGVz
dD0nY291bnRPdmVycmlkZScsIHR5cGU9aW50LCBoZWxwPSdOdW1iZXIgb2YgdGltZXMgdG8gcnVu
IHRoZSBiZW5jaG1hcmsuIGUuZy4gNScpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kZXZp
Y2UtaWQnLCBkZXN0PSdkZXZpY2VfaWQnLCBkZWZhdWx0PU5vbmUpCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgnLS1kcml2ZXInLCBkZXN0PSdkcml2ZXInLCBkZWZhdWx0PVdlYlNlcnZlckJlbmNo
bWFya1J1bm5lci5uYW1lLCBjaG9pY2VzPWJlbmNobWFya19ydW5uZXJfc3ViY2xhc3Nlcy5rZXlz
KCkpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1uby1hZGp1c3QtdW5pdCcsIGRlc3Q9J3Nj
YWxlX3VuaXQnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJykKICAgICBtdXR1YWxfZ3JvdXAgPSBwYXJz
ZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cChyZXF1aXJlZD1UcnVlKQogICAgIG11dHVh
bF9ncm91cC5hZGRfYXJndW1lbnQoJy0tcmVhZC1yZXN1bHRzLWpzb24nLCBkZXN0PSdqc29uX2Zp
bGUnLCBoZWxwPSdTcGVjaWZ5IGZpbGUgeW91IHdhbnQgdG8gZm9ybWF0JykKQEAgLTg4LDcgKzk0
LDggQEAgZGVmIHN0YXJ0KGFyZ3MpOgogICAgICAgICBpZiBmYWlsZWQ6CiAgICAgICAgICAgICBf
bG9nLmVycm9yKCdUaGUgZm9sbG93aW5nIGJlbmNobWFyayBwbGFucyBoYXZlIGZhaWxlZDogJXMn
ICUgZmFpbGVkKQogICAgICAgICByZXR1cm4gbGVuKGZhaWxlZCkKLSAgICBydW5uZXIgPSBCZW5j
aG1hcmtSdW5uZXIoYXJncy5wbGFuLCBhcmdzLmxvY2FsQ29weSwgYXJncy5jb3VudE92ZXJyaWRl
LCBhcmdzLmJ1aWxkRGlyLCBhcmdzLm91dHB1dCwgYXJncy5wbGF0Zm9ybSwgYXJncy5icm93c2Vy
LCBhcmdzLnNjYWxlX3VuaXQsIGFyZ3MuZGV2aWNlX2lkKQorICAgIGJlbmNobWFya19ydW5uZXJf
Y2xhc3MgPSBiZW5jaG1hcmtfcnVubmVyX3N1YmNsYXNzZXNbYXJncy5kcml2ZXJdCisgICAgcnVu
bmVyID0gYmVuY2htYXJrX3J1bm5lcl9jbGFzcyhhcmdzLnBsYW4sIGFyZ3MubG9jYWxDb3B5LCBh
cmdzLmNvdW50T3ZlcnJpZGUsIGFyZ3MuYnVpbGREaXIsIGFyZ3Mub3V0cHV0LCBhcmdzLnBsYXRm
b3JtLCBhcmdzLmJyb3dzZXIsIGFyZ3Muc2NhbGVfdW5pdCwgYXJncy5kZXZpY2VfaWQpCiAgICAg
cnVubmVyLmV4ZWN1dGUoKQogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
YmVuY2htYXJrX3J1bm5lci93ZWJkcml2ZXJfYmVuY2htYXJrX3J1bm5lci5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJkcml2ZXJfYmVuY2htYXJrX3J1bm5l
ci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xZWI1M2Y5OTY2ZmQ3N2FlMTNmNGVmZTljZDRmODg0ZjQ3NDM0ZDUw
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVu
bmVyL3dlYmRyaXZlcl9iZW5jaG1hcmtfcnVubmVyLnB5CkBAIC0wLDAgKzEsMzAgQEAKKyMhL3Vz
ci9iaW4vZW52IHB5dGhvbgorCitpbXBvcnQganNvbgoraW1wb3J0IGxvZ2dpbmcKKworZnJvbSBi
ZW5jaG1hcmtfcnVubmVyIGltcG9ydCBCZW5jaG1hcmtSdW5uZXIKK2Zyb20gc2VsZW5pdW0ud2Vi
ZHJpdmVyLnN1cHBvcnQudWkgaW1wb3J0IFdlYkRyaXZlcldhaXQKKworCitfbG9nID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworY2xhc3MgV2ViRHJpdmVyQmVuY2htYXJrUnVubmVy
KEJlbmNobWFya1J1bm5lcik6CisgICAgbmFtZSA9ICd3ZWJkcml2ZXInCisKKyAgICBkZWYgX2dl
dF9yZXN1bHQoc2VsZiwgZHJpdmVyKToKKyAgICAgICAgcmVzdWx0ID0gZHJpdmVyLmV4ZWN1dGVf
c2NyaXB0KCJyZXR1cm4gd2luZG93LndlYmRyaXZlcl9yZXN1bHRzIikKKyAgICAgICAgcmV0dXJu
IHJlc3VsdAorCisgICAgZGVmIF9ydW5fb25lX3Rlc3Qoc2VsZiwgd2ViX3Jvb3QsIHRlc3RfZmls
ZSk6CisgICAgICAgIHJlc3VsdCA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdXJs
ID0gJ2ZpbGU6Ly97cm9vdH0ve3BsYW5fbmFtZX0ve3Rlc3RfZmlsZX0nLmZvcm1hdChyb290PXdl
Yl9yb290LCBwbGFuX25hbWU9c2VsZi5fcGxhbl9uYW1lLCB0ZXN0X2ZpbGU9dGVzdF9maWxlKQor
ICAgICAgICAgICAgZHJpdmVyID0gc2VsZi5fYnJvd3Nlcl9kcml2ZXIubGF1bmNoX2RyaXZlcih1
cmwsIHNlbGYuX3BsYW5bJ29wdGlvbnMnXSwgc2VsZi5fYnVpbGRfZGlyKQorICAgICAgICAgICAg
X2xvZy5pbmZvKCdXYWl0aW5nIG9uIHJlc3VsdHMgZnJvbSB3ZWIgYnJvd3NlcicpCisgICAgICAg
ICAgICByZXN1bHQgPSBXZWJEcml2ZXJXYWl0KGRyaXZlciwgc2VsZi5fcGxhblsndGltZW91dCdd
LCBwb2xsX2ZyZXF1ZW5jeT0xLjApLnVudGlsKHNlbGYuX2dldF9yZXN1bHQpCisgICAgICAgIGZp
bmFsbHk6CisgICAgICAgICAgICBzZWxmLl9icm93c2VyX2RyaXZlci5jbG9zZV9icm93c2Vycygp
CisKKyAgICAgICAgcmV0dXJuIGpzb24ubG9hZHMocmVzdWx0KQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3dlYnNlcnZlcl9iZW5jaG1hcmtfcnVu
bmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3dlYnNlcnZl
cl9iZW5jaG1hcmtfcnVubmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhOTdmNmNhZDJlNDJhMmVhMmU5YzRm
MmMyMjlmZDUxOGU3ZDJkNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2JlbmNobWFya19ydW5uZXIvd2Vic2VydmVyX2JlbmNobWFya19ydW5uZXIucHkKQEAgLTAs
MCArMSw0MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKK2ltcG9ydCBqc29uCitpbXBvcnQg
bG9nZ2luZworaW1wb3J0IHVybHBhcnNlCisKK2Zyb20gYmVuY2htYXJrX3J1bm5lciBpbXBvcnQg
QmVuY2htYXJrUnVubmVyCitmcm9tIGh0dHBfc2VydmVyX2RyaXZlci5odHRwX3NlcnZlcl9kcml2
ZXJfZmFjdG9yeSBpbXBvcnQgSFRUUFNlcnZlckRyaXZlckZhY3RvcnkKK2Zyb20gdXRpbHMgaW1w
b3J0IHRpbWVvdXQKKworCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKwor
Y2xhc3MgV2ViU2VydmVyQmVuY2htYXJrUnVubmVyKEJlbmNobWFya1J1bm5lcik6CisgICAgbmFt
ZSA9ICd3ZWJzZXJ2ZXInCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGxhbl9maWxlLCBsb2Nh
bF9jb3B5LCBjb3VudF9vdmVycmlkZSwgYnVpbGRfZGlyLCBvdXRwdXRfZmlsZSwgcGxhdGZvcm0s
IGJyb3dzZXIsIHNjYWxlX3VuaXQ9VHJ1ZSwgZGV2aWNlX2lkPU5vbmUpOgorICAgICAgICBzZWxm
Ll9odHRwX3NlcnZlcl9kcml2ZXIgPSBIVFRQU2VydmVyRHJpdmVyRmFjdG9yeS5jcmVhdGUocGxh
dGZvcm0pCisgICAgICAgIHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5zZXRfZGV2aWNlX2lkKGRl
dmljZV9pZCkKKyAgICAgICAgc3VwZXIoV2ViU2VydmVyQmVuY2htYXJrUnVubmVyLCBzZWxmKS5f
X2luaXRfXyhwbGFuX2ZpbGUsIGxvY2FsX2NvcHksIGNvdW50X292ZXJyaWRlLCBidWlsZF9kaXIs
IG91dHB1dF9maWxlLCBwbGF0Zm9ybSwgYnJvd3Nlciwgc2NhbGVfdW5pdCwgZGV2aWNlX2lkKQor
CisgICAgZGVmIF9nZXRfcmVzdWx0KHNlbGYsIHRlc3RfdXJsKToKKyAgICAgICAgcmVzdWx0ID0g
c2VsZi5fYnJvd3Nlcl9kcml2ZXIuYWRkX2FkZGl0aW9uYWxfcmVzdWx0cyh0ZXN0X3VybCwgc2Vs
Zi5faHR0cF9zZXJ2ZXJfZHJpdmVyLmZldGNoX3Jlc3VsdCgpKQorICAgICAgICBhc3NlcnQobm90
IHNlbGYuX2h0dHBfc2VydmVyX2RyaXZlci5nZXRfcmV0dXJuX2NvZGUoKSkKKyAgICAgICAgcmV0
dXJuIHJlc3VsdAorCisgICAgZGVmIF9ydW5fb25lX3Rlc3Qoc2VsZiwgd2ViX3Jvb3QsIHRlc3Rf
ZmlsZSk6CisgICAgICAgIHJlc3VsdCA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
c2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLnNlcnZlKHdlYl9yb290KQorICAgICAgICAgICAgdXJs
ID0gdXJscGFyc2UudXJsam9pbihzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIuYmFzZV91cmwoKSwg
c2VsZi5fcGxhbl9uYW1lICsgJy8nICsgdGVzdF9maWxlKQorICAgICAgICAgICAgc2VsZi5fYnJv
d3Nlcl9kcml2ZXIubGF1bmNoX3VybCh1cmwsIHNlbGYuX3BsYW5bJ29wdGlvbnMnXSwgc2VsZi5f
YnVpbGRfZGlyKQorICAgICAgICAgICAgd2l0aCB0aW1lb3V0KHNlbGYuX3BsYW5bJ3RpbWVvdXQn
XSk6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fZ2V0X3Jlc3VsdCh1cmwpCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9icm93c2VyX2RyaXZlci5jbG9zZV9icm93
c2VycygpCisgICAgICAgICAgICBzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIua2lsbF9zZXJ2ZXIo
KQorCisgICAgICAgIHJldHVybiBqc29uLmxvYWRzKHJlc3VsdCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>