<?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>54729</bug_id>
          
          <creation_ts>2011-02-18 00:33:39 -0800</creation_ts>
          <short_desc>Web Inspector: flakyness of inspector tests</short_desc>
          <delta_ts>2011-02-22 07:30:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>353464</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-02-18 00:33:39 -0800</bug_when>
    <thetext>many inspector tests are flaky.

I think the reason for this is a race between two pages.
We have inspected page and Inspector&apos;s frontend page. 
When frontend page is loaded it begins to interact with
Inspector&apos;s backend to gather information about the state
of the inspecting page. This process is completely asynchronous. 
A number of messages will be sent back and forth. 
At the same time the inspected page tries do its work and
send their messages to check the state inspector and trying
to do some things with it. However, the state of Inspector&apos;s page
is not stable until it finishes its initialization process. 

it would be better to wait until Inspector&apos;s frontend page will send
all their requests and receive back all the answers.
We definitely know how many requests are waiting for answers and need
just wait until the number becomes 0 and process test command after that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353467</commentid>
    <comment_count>1</comment_count>
      <attachid>82931</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-02-18 01:01:59 -0800</bug_when>
    <thetext>Created attachment 82931
[patch] initial version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353488</commentid>
    <comment_count>2</comment_count>
      <attachid>82931</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-02-18 02:06:33 -0800</bug_when>
    <thetext>Comment on attachment 82931
[patch] initial version

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

&gt; Source/WebCore/ChangeLog:6
&gt; +

You should specify a bug URL after the issue title

&gt; Source/WebCore/inspector/CodeGeneratorInspector.pm:629
&gt; +        return !!this._waitForResponse;

The boolean cast is not necessary, and we normally do not use it (according to one of pfeldman&apos;s reviews)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353507</commentid>
    <comment_count>3</comment_count>
      <attachid>82931</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-18 02:50:43 -0800</bug_when>
    <thetext>Comment on attachment 82931
[patch] initial version

We already have a counter for runAfterPendingDispatches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355156</commentid>
    <comment_count>4</comment_count>
      <attachid>83293</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-02-22 02:55:14 -0800</bug_when>
    <thetext>Created attachment 83293
[patch] initial version

now test harness:
1) doesn&apos;t use setTimeout for processing pending test scripts;
2) has no difference between WebKit and Chromium implementations;
3) eval pending test scripts only when all the responses are received.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355159</commentid>
    <comment_count>5</comment_count>
      <attachid>83293</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-22 03:05:25 -0800</bug_when>
    <thetext>Comment on attachment 83293
[patch] initial version

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

&gt; Source/WebCore/inspector/CodeGeneratorInspector.pm:714
&gt; +    this._waitForResponse = 0;

this._pendingResponseCount

&gt; Source/WebCore/inspector/CodeGeneratorInspector.pm:732
&gt; +        --this._waitForResponse;

move this line to after callback.apply

&gt; Source/WebCore/inspector/CodeGeneratorInspector.pm:815
&gt; +            if (this.runAfterPendingDispatches &amp;&amp; WebInspector.pendingDispatches === 0 &amp;&amp; !this.isWaitingForResponse())

pendingDispatches is of no use now.

&gt; Source/WebCore/inspector/front-end/TestController.js:78
&gt; +WebInspector.testController = new WebInspector.TestController();

You should not need it (leave as it was).

&gt; Source/WebCore/inspector/front-end/TestController.js:79
&gt; +WebInspector.evaluateForTestInFrontend = WebInspector.testController._evaluateForTestInFrontend.bind(WebInspector.testController);

Leave as it was.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355191</commentid>
    <comment_count>6</comment_count>
      <attachid>83301</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-02-22 05:04:08 -0800</bug_when>
    <thetext>Created attachment 83301
[patch] third version

comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355201</commentid>
    <comment_count>7</comment_count>
      <attachid>83301</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-22 05:28:55 -0800</bug_when>
    <thetext>Comment on attachment 83301
[patch] third version

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

&gt; Source/WebCore/inspector/CodeGeneratorInspector.pm:733
&gt; +        --this._pendingResponsesCount;

you should move this into dispatch (after the if/else).

&gt; Source/WebCore/inspector/CodeGeneratorInspector.pm:815
&gt; +            if (this.runAfterPendingDispatches &amp;&amp; !this.isWaitingForResponse())

Just move it here.

&gt; Source/WebCore/inspector/front-end/TestController.js:77
&gt; +    WebInspector.testController.runAfterPendingDispatches(invokeMethod);

I&apos;d rather implement runAfterPendingDispatches on the InspectorBackendStub and use it both: from test controller and inspectortest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355251</commentid>
    <comment_count>8</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-02-22 07:28:56 -0800</bug_when>
    <thetext>Committed r79322
	M	LayoutTests/http/tests/inspector/inspector-test.js
	M	LayoutTests/ChangeLog
	M	Source/WebKit/chromium/ChangeLog
	M	Source/WebKit/chromium/src/js/DevTools.js
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/inspector/CodeGeneratorInspector.pm
	M	Source/WebCore/inspector/front-end/inspector.js
	M	Source/WebCore/inspector/front-end/TestController.js
	D	Tools/DumpRenderTree/chromium/DRTDevToolsCallArgs.cpp
	D	Tools/DumpRenderTree/chromium/DRTDevToolsCallArgs.h
	M	Tools/DumpRenderTree/chromium/DRTDevToolsClient.cpp
	M	Tools/DumpRenderTree/chromium/DRTDevToolsAgent.h
	M	Tools/DumpRenderTree/chromium/DRTDevToolsClient.h
	M	Tools/DumpRenderTree/chromium/DRTDevToolsAgent.cpp
	M	Tools/DumpRenderTree/DumpRenderTree.gypi
	M	Tools/ChangeLog
W: -empty_dir: trunk/Tools/DumpRenderTree/chromium/DRTDevToolsCallArgs.cpp
W: -empty_dir: trunk/Tools/DumpRenderTree/chromium/DRTDevToolsCallArgs.h
r79322 = 169c0aa5e9b5d1327052690447638f5bcfa812cc (refs/remotes/trunk)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355252</commentid>
    <comment_count>9</comment_count>
      <attachid>83311</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-02-22 07:30:37 -0800</bug_when>
    <thetext>Created attachment 83311
the patch I&apos;m going to land.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82931</attachid>
            <date>2011-02-18 01:01:59 -0800</date>
            <delta_ts>2011-02-22 07:29:07 -0800</delta_ts>
            <desc>[patch] initial version</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>3557</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNTdkYTZhLi4zZDViMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTEtMDItMTcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGZsYWt5bmVzcyBvZiBpbnNwZWN0b3IgdGVzdHMuCisKKyAgICAgICAgSSB0aGluayB0
aGUgcmVhc29uIGZvciB0aGlzIGlzIGEgcmFjZSBiZXR3ZWVuIHR3byBwYWdlcy4KKyAgICAgICAg
V2UgaGF2ZSBpbnNwZWN0ZWQgcGFnZSBhbmQgSW5zcGVjdG9yJ3MgZnJvbnRlbmQgcGFnZS4KKyAg
ICAgICAgV2hlbiBmcm9udGVuZCBwYWdlIGlzIGxvYWRlZCBpdCBiZWdpbnMgdG8gaW50ZXJhY3Qg
d2l0aAorICAgICAgICBJbnNwZWN0b3IncyBiYWNrZW5kIHRvIGdhdGhlciBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgc3RhdGUKKyAgICAgICAgb2YgdGhlIGluc3BlY3RpbmcgcGFnZS4gVGhpcyBwcm9j
ZXNzIGlzIGNvbXBsZXRlbHkgYXN5bmNocm9ub3VzLgorICAgICAgICBBIG51bWJlciBvZiBtZXNz
YWdlcyB3aWxsIGJlIHNlbnQgYmFjayBhbmQgZm9ydGguCisgICAgICAgIEF0IHRoZSBzYW1lIHRp
bWUgdGhlIGluc3BlY3RpbmcgcGFnZSB0cmllcyBkbyBpdHMgd29yayBhbmQKKyAgICAgICAgc2Vu
ZCBpdHMgbWVzc2FnZXMgdG8gY2hlY2sgdGhlIHN0YXRlIG9mIGluc3BlY3RvciBhbmQgdHJ5Cisg
ICAgICAgIHRvIGRvIHNvbWUgdGhpbmdzIHdpdGggaXQuIEhvd2V2ZXIsIHRoZSBzdGF0ZSBvZiBJ
bnNwZWN0b3IncyBwYWdlCisgICAgICAgIGlzIG5vdCBzdGFibGUgdW50aWwgaXQgZmluaXNoZXMg
aXRzIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuCisKKyAgICAgICAgSXQgd291bGQgYmUgYmV0dGVy
IHRvIHdhaXQgdW50aWwgSW5zcGVjdG9yJ3MgZnJvbnRlbmQgcGFnZSB3aWxsIHNlbmQKKyAgICAg
ICAgYWxsIGl0cyByZXF1ZXN0cyBhbmQgcmVjZWl2ZSBiYWNrIGFsbCB0aGUgYW5zd2Vycy4KKyAg
ICAgICAgV2UgZGVmaW5pdGVseSBrbm93IGhvdyBtYW55IHJlcXVlc3RzIGFyZSB3YWl0aW5nIGZv
ciBhbnN3ZXJzIGFuZCBuZWVkCisgICAgICAgIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbnVtYmVyIGJl
Y29tZXMgMCBhbmQgcHJvY2VzcyB0ZXN0IGNvbW1hbmQgYWZ0ZXIgdGhhdC4KKworICAgICAgICAq
IGluc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGVz
dENvbnRyb2xsZXIucHJvdG90eXBlLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMpOgorCiAyMDEx
LTAyLTE3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCmluZGV4IDdiMGEzNjguLjUwOWFhMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBt
CkBAIC01OTUsNiArNTk1LDcgQEAgJGxpY2Vuc2VUZW1wbGF0ZQogSW5zcGVjdG9yQmFja2VuZFN0
dWIgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5fbGFzdENhbGxiYWNrSWQgPSAxOworICAgIHRo
aXMuX3dhaXRGb3JSZXNwb25zZSA9IDA7CiAgICAgdGhpcy5fY2FsbGJhY2tzID0ge307CiAgICAg
dGhpcy5fZG9tYWluRGlzcGF0Y2hlcnMgPSB7fTsKICRKU1N0dWJzCkBAIC02MDQsNiArNjA1LDcg
QEAgSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlID0gewogICAgIF93cmFwOiBmdW5jdGlv
bihjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHZhciBjYWxsYmFja0lkID0gdGhpcy5fbGFzdENh
bGxiYWNrSWQrKzsKKyAgICAgICAgKyt0aGlzLl93YWl0Rm9yUmVzcG9uc2U7CiAgICAgICAgIHRo
aXMuX2NhbGxiYWNrc1tjYWxsYmFja0lkXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307CiAg
ICAgICAgIHJldHVybiBjYWxsYmFja0lkOwogICAgIH0sCkBAIC02MTEsMTUgKzYxMywyMiBAQCBJ
bnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUgPSB7CiAgICAgX3Byb2Nlc3NSZXNwb25zZTog
ZnVuY3Rpb24oY2FsbGJhY2tJZCwgYXJncykKICAgICB7CiAgICAgICAgIHZhciBjYWxsYmFjayA9
IHRoaXMuX2NhbGxiYWNrc1tjYWxsYmFja0lkXTsKKyAgICAgICAgLS10aGlzLl93YWl0Rm9yUmVz
cG9uc2U7CiAgICAgICAgIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFyZ3MpOwogICAgICAgICBkZWxl
dGUgdGhpcy5fY2FsbGJhY2tzW2NhbGxiYWNrSWRdOwogICAgIH0sCiAKICAgICBfcmVtb3ZlUmVz
cG9uc2VDYWxsYmFja0VudHJ5OiBmdW5jdGlvbihjYWxsYmFja0lkKQogICAgIHsKKyAgICAgICAg
LS10aGlzLl93YWl0Rm9yUmVzcG9uc2U7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9jYWxsYmFja3Nb
Y2FsbGJhY2tJZF07CiAgICAgfSwKIAorICAgIGlzV2FpdGluZ0ZvclJlc3BvbnNlOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gISF0aGlzLl93YWl0Rm9yUmVzcG9uc2U7CisgICAg
fSwKKwogICAgIF9yZWdpc3RlckRlbGVnYXRlOiBmdW5jdGlvbihjb21tYW5kSW5mbykKICAgICB7
CiAgICAgICAgIHZhciBjb21tYW5kT2JqZWN0ID0gSlNPTi5wYXJzZShjb21tYW5kSW5mbyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9s
bGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0Q29udHJvbGxl
ci5qcwppbmRleCAwOTY3MDI3Li41MmM4YjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanMKQEAgLTUxLDcgKzUxLDcgQEAg
V2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKIAogICAgIHJ1bkFmdGVy
UGVuZGluZ0Rpc3BhdGNoZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgaWYg
KFdlYkluc3BlY3Rvci5wZW5kaW5nRGlzcGF0Y2hlcyA9PT0gMCkgeworICAgICAgICBpZiAoV2Vi
SW5zcGVjdG9yLnBlbmRpbmdEaXNwYXRjaGVzID09PSAwICYmIEluc3BlY3RvckJhY2tlbmQuaXNX
YWl0aW5nRm9yUmVzcG9uc2UoKSkgewogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83293</attachid>
            <date>2011-02-22 02:55:14 -0800</date>
            <delta_ts>2011-02-22 07:29:17 -0800</delta_ts>
            <desc>[patch] initial version</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>26927</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0Mzg5N2FjLi5jYTg3OTc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDIt
MjIgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGZsYWt5
bmVzcyBvZiBpbnNwZWN0b3IgdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NDcyOQorCisgICAgICAgIEkgdGhpbmsgdGhlIHJlYXNvbiBmb3Ig
dGhpcyBpcyBhIHJhY2UgYmV0d2VlbiB0d28gcGFnZXMuCisgICAgICAgIFdlIGhhdmUgaW5zcGVj
dGVkIHBhZ2UgYW5kIEluc3BlY3RvcidzIGZyb250ZW5kIHBhZ2UuCisgICAgICAgIFdoZW4gZnJv
bnRlbmQgcGFnZSBpcyBsb2FkZWQgaXQgYmVnaW5zIHRvIGludGVyYWN0IHdpdGgKKyAgICAgICAg
SW5zcGVjdG9yJ3MgYmFja2VuZCB0byBnYXRoZXIgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRl
CisgICAgICAgIG9mIHRoZSBpbnNwZWN0aW5nIHBhZ2UuIFRoaXMgcHJvY2VzcyBpcyBjb21wbGV0
ZWx5IGFzeW5jaHJvbm91cy4KKyAgICAgICAgQSBudW1iZXIgb2YgbWVzc2FnZXMgd2lsbCBiZSBz
ZW50IGJhY2sgYW5kIGZvcnRoLgorICAgICAgICBBdCB0aGUgc2FtZSB0aW1lIHRoZSBpbnNwZWN0
ZWQgcGFnZSB0cmllcyBkbyBpdHMgd29yayBhbmQKKyAgICAgICAgc2VuZCB0aGVpciBtZXNzYWdl
cyB0byBjaGVjayB0aGUgc3RhdGUgaW5zcGVjdG9yIGFuZCB0cnlpbmcKKyAgICAgICAgdG8gZG8g
c29tZSB0aGluZ3Mgd2l0aCBpdC4gSG93ZXZlciwgdGhlIHN0YXRlIG9mIEluc3BlY3RvcidzIHBh
Z2UKKyAgICAgICAgaXMgbm90IHN0YWJsZSB1bnRpbCBpdCBmaW5pc2hlcyBpdHMgaW5pdGlhbGl6
YXRpb24gcHJvY2Vzcy4KKworICAgICAgICBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gd2FpdCB1bnRp
bCBJbnNwZWN0b3IncyBmcm9udGVuZCBwYWdlIHdpbGwgc2VuZAorICAgICAgICBhbGwgdGhlaXIg
cmVxdWVzdHMgYW5kIHJlY2VpdmUgYmFjayBhbGwgdGhlIGFuc3dlcnMuCisgICAgICAgIFdlIGRl
ZmluaXRlbHkga25vdyBob3cgbWFueSByZXF1ZXN0cyBhcmUgd2FpdGluZyBmb3IgYW5zd2VycyBh
bmQgbmVlZAorICAgICAgICBqdXN0IHdhaXQgdW50aWwgdGhlIG51bWJlciBiZWNvbWVzIDAgYW5k
IHByb2Nlc3MgdGVzdCBjb21tYW5kIGFmdGVyIHRoYXQuCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVj
dG9yVGVzdC5JbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMpOgorCiAyMDEx
LTAyLTIyIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAgICAgICAgIAogICAg
ICAgICBVbnJldmlld2VkIHRlc3RfZXhwZWN0YXRpb24udHh0IHVwZGF0ZS4gCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCmluZGV4IDkx
YWY4MDUuLjQzYThiNWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0LmpzCkBAIC0xMzAsNyArMTMwLDcgQEAgSW5zcGVjdG9yVGVzdC5y
dW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzID0gZnVuY3Rpb24oY2FsbGJhY2spCiB7CiAgICAgY2Fs
bGJhY2sgPSBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKGNhbGxiYWNrKTsKIAotICAgIFdlYkluc3Bl
Y3Rvci5UZXN0Q29udHJvbGxlci5wcm90b3R5cGUucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhj
YWxsYmFjayk7CisgICAgV2ViSW5zcGVjdG9yLnRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGlu
Z0Rpc3BhdGNoZXMoY2FsbGJhY2spOwogfQogCiBJbnNwZWN0b3JUZXN0LmNyZWF0ZUtleUV2ZW50
ID0gZnVuY3Rpb24oa2V5SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkMzE4NGNlLi5lNDVkYjNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDItMjIgIElseWEgVGlraG9ub3Zz
a3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGZsYWt5bmVzcyBvZiBpbnNwZWN0b3Ig
dGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NDcyOQorCisgICAgICAgIEkgdGhpbmsgdGhlIHJlYXNvbiBmb3IgdGhpcyBpcyBhIHJhY2UgYmV0
d2VlbiB0d28gcGFnZXMuCisgICAgICAgIFdlIGhhdmUgaW5zcGVjdGVkIHBhZ2UgYW5kIEluc3Bl
Y3RvcidzIGZyb250ZW5kIHBhZ2UuCisgICAgICAgIFdoZW4gZnJvbnRlbmQgcGFnZSBpcyBsb2Fk
ZWQgaXQgYmVnaW5zIHRvIGludGVyYWN0IHdpdGgKKyAgICAgICAgSW5zcGVjdG9yJ3MgYmFja2Vu
ZCB0byBnYXRoZXIgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRlCisgICAgICAgIG9mIHRoZSBp
bnNwZWN0aW5nIHBhZ2UuIFRoaXMgcHJvY2VzcyBpcyBjb21wbGV0ZWx5IGFzeW5jaHJvbm91cy4K
KyAgICAgICAgQSBudW1iZXIgb2YgbWVzc2FnZXMgd2lsbCBiZSBzZW50IGJhY2sgYW5kIGZvcnRo
LgorICAgICAgICBBdCB0aGUgc2FtZSB0aW1lIHRoZSBpbnNwZWN0ZWQgcGFnZSB0cmllcyBkbyBp
dHMgd29yayBhbmQKKyAgICAgICAgc2VuZCB0aGVpciBtZXNzYWdlcyB0byBjaGVjayB0aGUgc3Rh
dGUgaW5zcGVjdG9yIGFuZCB0cnlpbmcKKyAgICAgICAgdG8gZG8gc29tZSB0aGluZ3Mgd2l0aCBp
dC4gSG93ZXZlciwgdGhlIHN0YXRlIG9mIEluc3BlY3RvcidzIHBhZ2UKKyAgICAgICAgaXMgbm90
IHN0YWJsZSB1bnRpbCBpdCBmaW5pc2hlcyBpdHMgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4KKwor
ICAgICAgICBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gd2FpdCB1bnRpbCBJbnNwZWN0b3IncyBmcm9u
dGVuZCBwYWdlIHdpbGwgc2VuZAorICAgICAgICBhbGwgdGhlaXIgcmVxdWVzdHMgYW5kIHJlY2Vp
dmUgYmFjayBhbGwgdGhlIGFuc3dlcnMuCisgICAgICAgIFdlIGRlZmluaXRlbHkga25vdyBob3cg
bWFueSByZXF1ZXN0cyBhcmUgd2FpdGluZyBmb3IgYW5zd2VycyBhbmQgbmVlZAorICAgICAgICBq
dXN0IHdhaXQgdW50aWwgdGhlIG51bWJlciBiZWNvbWVzIDAgYW5kIHByb2Nlc3MgdGVzdCBjb21t
YW5kIGFmdGVyIHRoYXQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5wbToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVyLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXN0Q29udHJvbGxlci5wcm90b3R5cGUubm90aWZ5RG9uZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIucHJvdG90eXBlLnJ1bkFmdGVyUGVuZGluZ0Rpc3Bh
dGNoZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLnByb3RvdHlwZS5f
ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZGlzcGF0Y2gpOgorCiAyMDEx
LTAyLTIyICBTdGV2ZSBMYWNleSAgPHNqbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29k
ZUdlbmVyYXRvckluc3BlY3Rvci5wbQppbmRleCA2OWRjMDZkLi40OGE0YzMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQpAQCAt
NzExLDYgKzcxMSw3IEBAICRsaWNlbnNlVGVtcGxhdGUKIEluc3BlY3RvckJhY2tlbmRTdHViID0g
ZnVuY3Rpb24oKQogewogICAgIHRoaXMuX2xhc3RDYWxsYmFja0lkID0gMTsKKyAgICB0aGlzLl93
YWl0Rm9yUmVzcG9uc2UgPSAwOwogICAgIHRoaXMuX2NhbGxiYWNrcyA9IHt9OwogICAgIHRoaXMu
X2RvbWFpbkRpc3BhdGNoZXJzID0ge307CiAkSlNTdHVicwpAQCAtNzIwLDYgKzcyMSw3IEBAIElu
c3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZSA9IHsKICAgICBfd3JhcDogZnVuY3Rpb24oY2Fs
bGJhY2spCiAgICAgewogICAgICAgICB2YXIgY2FsbGJhY2tJZCA9IHRoaXMuX2xhc3RDYWxsYmFj
a0lkKys7CisgICAgICAgICsrdGhpcy5fd2FpdEZvclJlc3BvbnNlOwogICAgICAgICB0aGlzLl9j
YWxsYmFja3NbY2FsbGJhY2tJZF0gPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHt9OwogICAgICAg
ICByZXR1cm4gY2FsbGJhY2tJZDsKICAgICB9LApAQCAtNzI3LDE1ICs3MjksMjIgQEAgSW5zcGVj
dG9yQmFja2VuZFN0dWIucHJvdG90eXBlID0gewogICAgIF9wcm9jZXNzUmVzcG9uc2U6IGZ1bmN0
aW9uKGNhbGxiYWNrSWQsIGFyZ3MpCiAgICAgewogICAgICAgICB2YXIgY2FsbGJhY2sgPSB0aGlz
Ll9jYWxsYmFja3NbY2FsbGJhY2tJZF07CisgICAgICAgIC0tdGhpcy5fd2FpdEZvclJlc3BvbnNl
OwogICAgICAgICBjYWxsYmFjay5hcHBseShudWxsLCBhcmdzKTsKICAgICAgICAgZGVsZXRlIHRo
aXMuX2NhbGxiYWNrc1tjYWxsYmFja0lkXTsKICAgICB9LAogCiAgICAgX3JlbW92ZVJlc3BvbnNl
Q2FsbGJhY2tFbnRyeTogZnVuY3Rpb24oY2FsbGJhY2tJZCkKICAgICB7CisgICAgICAgIC0tdGhp
cy5fd2FpdEZvclJlc3BvbnNlOwogICAgICAgICBkZWxldGUgdGhpcy5fY2FsbGJhY2tzW2NhbGxi
YWNrSWRdOwogICAgIH0sCiAKKyAgICBpc1dhaXRpbmdGb3JSZXNwb25zZTogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dhaXRGb3JSZXNwb25zZTsKKyAgICB9LAorCiAg
ICAgX3JlZ2lzdGVyRGVsZWdhdGU6IGZ1bmN0aW9uKGNvbW1hbmRJbmZvKQogICAgIHsKICAgICAg
ICAgdmFyIGNvbW1hbmRPYmplY3QgPSBKU09OLnBhcnNlKGNvbW1hbmRJbmZvKTsKQEAgLTgwMCwx
MCArODA5LDEyIEBAIEluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZSA9IHsKICAgICAgICAg
aWYgKCJzZXEiIGluIG1lc3NhZ2VPYmplY3QpIHsgLy8ganVzdCBhIHJlc3BvbnNlIGZvciBzb21l
IHJlcXVlc3QKICAgICAgICAgICAgIGlmIChtZXNzYWdlT2JqZWN0LnN1Y2Nlc3MpCiAgICAgICAg
ICAgICAgICAgdGhpcy5fcHJvY2Vzc1Jlc3BvbnNlKG1lc3NhZ2VPYmplY3Quc2VxLCBhcmd1bWVu
dHMpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUmVz
cG9uc2VDYWxsYmFja0VudHJ5KG1lc3NhZ2VPYmplY3Quc2VxKQorICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0UHJvdG9jb2xFcnJvcihtZXNzYWdlT2JqZWN0KTsK
LSAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRoaXMucnVuQWZ0ZXJQZW5kaW5nRGlz
cGF0Y2hlcyAmJiBXZWJJbnNwZWN0b3IucGVuZGluZ0Rpc3BhdGNoZXMgPT09IDAgJiYgIXRoaXMu
aXNXYWl0aW5nRm9yUmVzcG9uc2UoKSkKKyAgICAgICAgICAgICAgICB0aGlzLnJ1bkFmdGVyUGVu
ZGluZ0Rpc3BhdGNoZXMoKTsKKwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xs
ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVy
LmpzCmluZGV4IDA5NjcwMjcuLjdlOTUxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0Q29udHJvbGxlci5qcwpAQCAtMjgsNTQgKzI4LDUyIEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlciA9IGZ1
bmN0aW9uKGNhbGxJZCkKK1dlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlciA9IGZ1bmN0aW9uKCkK
IHsKLSAgICB0aGlzLl9jYWxsSWQgPSBjYWxsSWQ7Ci0gICAgdGhpcy5fd2FpdFVudGlsRG9uZSA9
IGZhbHNlOwotICAgIHRoaXMucmVzdWx0cyA9IFtdOworICAgIHRoaXMuX3NjcmlwdHMgPSBbXTsK
KyAgICBJbnNwZWN0b3JCYWNrZW5kLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMgPSB0aGlzLnJ1
bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMuYmluZCh0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yLlRl
c3RDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKLSAgICB3YWl0VW50aWxEb25lOiBmdW5jdGlvbigp
CisgICAgbm90aWZ5RG9uZTogZnVuY3Rpb24oY2FsbElkLCByZXN1bHQpCiAgICAgewotICAgICAg
ICB0aGlzLl93YWl0VW50aWxEb25lID0gdHJ1ZTsKLSAgICB9LAotCi0gICAgbm90aWZ5RG9uZTog
ZnVuY3Rpb24ocmVzdWx0KQotICAgIHsKLSAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICJ1
bmRlZmluZWQiICYmIHRoaXMucmVzdWx0cy5sZW5ndGgpCi0gICAgICAgICAgICByZXN1bHQgPSB0
aGlzLnJlc3VsdHM7CiAgICAgICAgIHZhciBtZXNzYWdlID0gdHlwZW9mIHJlc3VsdCA9PT0gInVu
ZGVmaW5lZCIgPyAiXCI8dW5kZWZpbmVkPlwiIiA6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCk7Ci0g
ICAgICAgIEluc3BlY3RvckFnZW50LmRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQodGhpcy5f
Y2FsbElkLCBtZXNzYWdlKTsKKyAgICAgICAgSW5zcGVjdG9yQWdlbnQuZGlkRXZhbHVhdGVGb3JU
ZXN0SW5Gcm9udGVuZChjYWxsSWQsIG1lc3NhZ2UpOwogICAgIH0sCiAKICAgICBydW5BZnRlclBl
bmRpbmdEaXNwYXRjaGVzOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmIChX
ZWJJbnNwZWN0b3IucGVuZGluZ0Rpc3BhdGNoZXMgPT09IDApIHsKLSAgICAgICAgICAgIGNhbGxi
YWNrKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAg
ICAgICAgIHRoaXMuX3NjcmlwdHMucHVzaChjYWxsYmFjayk7CisKKyAgICAgICAgaWYgKFdlYklu
c3BlY3Rvci5wZW5kaW5nRGlzcGF0Y2hlcyA9PT0gMCAmJiAhSW5zcGVjdG9yQmFja2VuZC5pc1dh
aXRpbmdGb3JSZXNwb25zZSgpKSB7CisgICAgICAgICAgICB2YXIgc2NyaXB0cyA9IHRoaXMuX3Nj
cmlwdHM7CisgICAgICAgICAgICB0aGlzLl9zY3JpcHRzID0gW10KKyAgICAgICAgICAgIGZvciAo
dmFyIGlkID0gMDsgaWQgPCBzY3JpcHRzLmxlbmd0aDsgKytpZCkKKyAgICAgICAgICAgICAgICAg
c2NyaXB0c1tpZF0uY2FsbCh0aGlzKTsKICAgICAgICAgfQotICAgICAgICBzZXRUaW1lb3V0KHRo
aXMucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcy5iaW5kKHRoaXMpLCAwLCBjYWxsYmFjayk7Ci0g
ICAgfQotfQorICAgIH0sCiAKLVdlYkluc3BlY3Rvci5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5k
ID0gZnVuY3Rpb24oY2FsbElkLCBzY3JpcHQpCi17Ci0gICAgdmFyIGNvbnRyb2xsZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyKGNhbGxJZCk7Ci0gICAgZnVuY3Rpb24gaW52b2tl
TWV0aG9kKCkKKyAgICBfZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZDogZnVuY3Rpb24oY2FsbElk
LCBzY3JpcHQpCiAgICAgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgdmFyIHJlc3VsdDsK
LSAgICAgICAgICAgIGlmICh3aW5kb3dbc2NyaXB0XSAmJiB0eXBlb2Ygd2luZG93W3NjcmlwdF0g
PT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gd2luZG93W3NjcmlwdF0u
Y2FsbChXZWJJbnNwZWN0b3IsIGNvbnRyb2xsZXIpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IHdpbmRvdy5ldmFsKHNjcmlwdCk7CisgICAgICAgIGZ1bmN0aW9u
IGludm9rZU1ldGhvZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICAgICAgdmFyIHJlc3VsdDsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93W3NjcmlwdF0gJiYg
dHlwZW9mIHdpbmRvd1tzY3JpcHRdID09PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSB3aW5kb3dbc2NyaXB0XS5jYWxsKFdlYkluc3BlY3RvciwgY29udHJvbGxlcik7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB3aW5k
b3cuZXZhbChzY3JpcHQpOwogCi0gICAgICAgICAgICBpZiAoIWNvbnRyb2xsZXIuX3dhaXRVbnRp
bERvbmUpCi0gICAgICAgICAgICAgICAgY29udHJvbGxlci5ub3RpZnlEb25lKHJlc3VsdCk7Ci0g
ICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIGNvbnRyb2xsZXIubm90aWZ5RG9uZShl
LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5RG9uZShjYWxsSWQsIHJl
c3VsdCk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgdGhpcy5u
b3RpZnlEb25lKGNhbGxJZCwgZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fQorICAgICAgICB0aGlzLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoaW52b2tlTWV0aG9kKTsK
ICAgICB9Ci0gICAgY29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGludm9rZU1l
dGhvZCk7CiB9CisKKworV2ViSW5zcGVjdG9yLnRlc3RDb250cm9sbGVyID0gbmV3IFdlYkluc3Bl
Y3Rvci5UZXN0Q29udHJvbGxlcigpOworV2ViSW5zcGVjdG9yLmV2YWx1YXRlRm9yVGVzdEluRnJv
bnRlbmQgPSBXZWJJbnNwZWN0b3IudGVzdENvbnRyb2xsZXIuX2V2YWx1YXRlRm9yVGVzdEluRnJv
bnRlbmQuYmluZChXZWJJbnNwZWN0b3IudGVzdENvbnRyb2xsZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCA2Mjg2OGU5Li43YThl
NTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qcwpAQCAtNjA0LDggKzYwNCw4IEBAIFdlYkluc3BlY3Rvci5kaXNwYXRjaCA9IGZ1bmN0aW9u
KG1lc3NhZ2UpIHsKICAgICAvLyBUaGlzIGlzIGltcG9ydGFudCB0byBMYXlvdXRUZXN0cy4KICAg
ICBmdW5jdGlvbiBkZWxheURpc3BhdGNoKCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvckJhY2tl
bmQuZGlzcGF0Y2gobWVzc2FnZSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5wZW5kaW5nRGlzcGF0
Y2hlcy0tOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmRpc3BhdGNoKG1lc3NhZ2UpOwogICAg
IH0KICAgICBXZWJJbnNwZWN0b3IucGVuZGluZ0Rpc3BhdGNoZXMrKzsKICAgICBzZXRUaW1lb3V0
KGRlbGF5RGlzcGF0Y2gsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyNjkxYjc4
Li5iMTE2M2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisy
MDExLTAyLTIyICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBmbGFreW5lc3Mgb2YgaW5zcGVjdG9yIHRlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ3MjkKKworICAgICAgICBJIHRoaW5rIHRoZSByZWFz
b24gZm9yIHRoaXMgaXMgYSByYWNlIGJldHdlZW4gdHdvIHBhZ2VzLgorICAgICAgICBXZSBoYXZl
IGluc3BlY3RlZCBwYWdlIGFuZCBJbnNwZWN0b3IncyBmcm9udGVuZCBwYWdlLgorICAgICAgICBX
aGVuIGZyb250ZW5kIHBhZ2UgaXMgbG9hZGVkIGl0IGJlZ2lucyB0byBpbnRlcmFjdCB3aXRoCisg
ICAgICAgIEluc3BlY3RvcidzIGJhY2tlbmQgdG8gZ2F0aGVyIGluZm9ybWF0aW9uIGFib3V0IHRo
ZSBzdGF0ZQorICAgICAgICBvZiB0aGUgaW5zcGVjdGluZyBwYWdlLiBUaGlzIHByb2Nlc3MgaXMg
Y29tcGxldGVseSBhc3luY2hyb25vdXMuCisgICAgICAgIEEgbnVtYmVyIG9mIG1lc3NhZ2VzIHdp
bGwgYmUgc2VudCBiYWNrIGFuZCBmb3J0aC4KKyAgICAgICAgQXQgdGhlIHNhbWUgdGltZSB0aGUg
aW5zcGVjdGVkIHBhZ2UgdHJpZXMgZG8gaXRzIHdvcmsgYW5kCisgICAgICAgIHNlbmQgdGhlaXIg
bWVzc2FnZXMgdG8gY2hlY2sgdGhlIHN0YXRlIGluc3BlY3RvciBhbmQgdHJ5aW5nCisgICAgICAg
IHRvIGRvIHNvbWUgdGhpbmdzIHdpdGggaXQuIEhvd2V2ZXIsIHRoZSBzdGF0ZSBvZiBJbnNwZWN0
b3IncyBwYWdlCisgICAgICAgIGlzIG5vdCBzdGFibGUgdW50aWwgaXQgZmluaXNoZXMgaXRzIGlu
aXRpYWxpemF0aW9uIHByb2Nlc3MuCisKKyAgICAgICAgSXQgd291bGQgYmUgYmV0dGVyIHRvIHdh
aXQgdW50aWwgSW5zcGVjdG9yJ3MgZnJvbnRlbmQgcGFnZSB3aWxsIHNlbmQKKyAgICAgICAgYWxs
IHRoZWlyIHJlcXVlc3RzIGFuZCByZWNlaXZlIGJhY2sgYWxsIHRoZSBhbnN3ZXJzLgorICAgICAg
ICBXZSBkZWZpbml0ZWx5IGtub3cgaG93IG1hbnkgcmVxdWVzdHMgYXJlIHdhaXRpbmcgZm9yIGFu
c3dlcnMgYW5kIG5lZWQKKyAgICAgICAganVzdCB3YWl0IHVudGlsIHRoZSBudW1iZXIgYmVjb21l
cyAwIGFuZCBwcm9jZXNzIHRlc3QgY29tbWFuZCBhZnRlciB0aGF0LgorCisgICAgICAgICogc3Jj
L2pzL0RldlRvb2xzLmpzOgorCiAyMDExLTAyLTIxICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMKaW5kZXggM2Q2MWJlNy4uMDNjNzJkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMKQEAgLTEzMCwyNiAr
MTMwLDYgQEAgV2ViSW5zcGVjdG9yLm9wZW5MaW5rRXh0ZXJuYWxseUxhYmVsID0gZnVuY3Rpb24o
KQogCiAKIAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8g
Q2hyb21pdW0gbGF5b3V0IHRlc3QgaGFybmVzcyBzdXBwb3J0LiAvLwotLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1XZWJJbnNwZWN0b3IucnVuQWZ0ZXJQZW5k
aW5nRGlzcGF0Y2hlc1F1ZXVlID0gW107Ci0KLVdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5w
cm90b3R5cGUucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyA9IGZ1bmN0aW9uKGNhbGxiYWNrKQot
ewotICAgIFdlYkluc3BlY3Rvci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzUXVldWUucHVzaChj
YWxsYmFjayk7Ci19OwotCi1XZWJJbnNwZWN0b3IucXVldWVzQXJlRW1wdHkgPSBmdW5jdGlvbigp
Ci17Ci0gICAgdmFyIGNvcHkgPSB0aGlzLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXNRdWV1ZS5z
bGljZSgpOwotICAgIHRoaXMucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlc1F1ZXVlID0gW107Ci0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3B5Lmxlbmd0aDsgKytpKQotICAgICAgICBjb3B5W2ld
LmNhbGwodGhpcyk7Ci19OwotCi0KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyBD
aHJvbWl1bSB0aGVtZSBzdXBwb3J0LiAvLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0MmIw
YTFjLi5jNDAwZjEzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDItMjIgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGZsYWt5bmVzcyBvZiBpbnNwZWN0b3IgdGVzdHMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDcyOQor
CisgICAgICAgIEkgdGhpbmsgdGhlIHJlYXNvbiBmb3IgdGhpcyBpcyBhIHJhY2UgYmV0d2VlbiB0
d28gcGFnZXMuCisgICAgICAgIFdlIGhhdmUgaW5zcGVjdGVkIHBhZ2UgYW5kIEluc3BlY3Rvcidz
IGZyb250ZW5kIHBhZ2UuCisgICAgICAgIFdoZW4gZnJvbnRlbmQgcGFnZSBpcyBsb2FkZWQgaXQg
YmVnaW5zIHRvIGludGVyYWN0IHdpdGgKKyAgICAgICAgSW5zcGVjdG9yJ3MgYmFja2VuZCB0byBn
YXRoZXIgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRlCisgICAgICAgIG9mIHRoZSBpbnNwZWN0
aW5nIHBhZ2UuIFRoaXMgcHJvY2VzcyBpcyBjb21wbGV0ZWx5IGFzeW5jaHJvbm91cy4KKyAgICAg
ICAgQSBudW1iZXIgb2YgbWVzc2FnZXMgd2lsbCBiZSBzZW50IGJhY2sgYW5kIGZvcnRoLgorICAg
ICAgICBBdCB0aGUgc2FtZSB0aW1lIHRoZSBpbnNwZWN0ZWQgcGFnZSB0cmllcyBkbyBpdHMgd29y
ayBhbmQKKyAgICAgICAgc2VuZCB0aGVpciBtZXNzYWdlcyB0byBjaGVjayB0aGUgc3RhdGUgaW5z
cGVjdG9yIGFuZCB0cnlpbmcKKyAgICAgICAgdG8gZG8gc29tZSB0aGluZ3Mgd2l0aCBpdC4gSG93
ZXZlciwgdGhlIHN0YXRlIG9mIEluc3BlY3RvcidzIHBhZ2UKKyAgICAgICAgaXMgbm90IHN0YWJs
ZSB1bnRpbCBpdCBmaW5pc2hlcyBpdHMgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4KKworICAgICAg
ICBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gd2FpdCB1bnRpbCBJbnNwZWN0b3IncyBmcm9udGVuZCBw
YWdlIHdpbGwgc2VuZAorICAgICAgICBhbGwgdGhlaXIgcmVxdWVzdHMgYW5kIHJlY2VpdmUgYmFj
ayBhbGwgdGhlIGFuc3dlcnMuCisgICAgICAgIFdlIGRlZmluaXRlbHkga25vdyBob3cgbWFueSBy
ZXF1ZXN0cyBhcmUgd2FpdGluZyBmb3IgYW5zd2VycyBhbmQgbmVlZAorICAgICAgICBqdXN0IHdh
aXQgdW50aWwgdGhlIG51bWJlciBiZWNvbWVzIDAgYW5kIHByb2Nlc3MgdGVzdCBjb21tYW5kIGFm
dGVyIHRoYXQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuY3Bw
OgorICAgICAgICAoRFJURGV2VG9vbHNBZ2VudDo6c2VuZE1lc3NhZ2VUb0luc3BlY3RvckZyb250
ZW5kKToKKyAgICAgICAgKERSVERldlRvb2xzQWdlbnQ6OnJ1bnRpbWVQcm9wZXJ0eUNoYW5nZWQp
OgorICAgICAgICAoRFJURGV2VG9vbHNBZ2VudDo6YXN5bmNDYWxsKToKKyAgICAgICAgKERSVERl
dlRvb2xzQWdlbnQ6OmNhbGwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RS
VERldlRvb2xzQWdlbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRE
ZXZUb29sc0NhbGxBcmdzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9EUlREZXZUb29sc0NhbGxBcmdzLmg6IFJlbW92ZWQuCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuY3BwOgorICAgICAgICAoRFJURGV2
VG9vbHNDbGllbnQ6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAgICAgICAgKERSVERldlRvb2xz
Q2xpZW50Ojphc3luY0NhbGwpOgorICAgICAgICAoRFJURGV2VG9vbHNDbGllbnQ6OmNhbGwpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50Lmg6CisK
IDIwMTEtMDItMjEgIEx1a2FzeiBTbGFjaGNpYWsgIDxsLnNsYWNoY2lha0BzYW1zdW5nLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXggM2QyMWJlNy4uYTNmMDUyMCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC0xMSw4ICsxMSw2IEBACiAgICAgICAg
ICAgICAnY2hyb21pdW0vQ3BwVmFyaWFudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9EUlRE
ZXZUb29sc0FnZW50LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vRFJURGV2VG9vbHNBZ2Vu
dC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9EUlREZXZUb29sc0NhbGxBcmdzLmNwcCcsCi0g
ICAgICAgICAgICAnY2hyb21pdW0vRFJURGV2VG9vbHNDYWxsQXJncy5oJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L0RSVERldlRvb2xzQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL0R1bXBSZW5kZXJU
cmVlLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRE
ZXZUb29sc0FnZW50LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRv
b2xzQWdlbnQuY3BwCmluZGV4IDc4Yzg2ZTcuLjc2YWE3ODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuY3BwCkBAIC0zMSwxMiArMzEs
MTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEUlREZXZUb29sc0FnZW50Lmgi
CiAKLSNpbmNsdWRlICJEUlREZXZUb29sc0NhbGxBcmdzLmgiCiAjaW5jbHVkZSAiRFJURGV2VG9v
bHNDbGllbnQuaCIKIAogI2luY2x1ZGUgIldlYkNTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJEZXZU
b29sc0FnZW50LmgiCi0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5o
IgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCiAKQEAgLTYzLDEz
ICs2MSwxMyBAQCB2b2lkIERSVERldlRvb2xzQWdlbnQ6OnNldFdlYlZpZXcoV2ViVmlldyogd2Vi
VmlldykKICAgICBtX3dlYlZpZXcgPSB3ZWJWaWV3OwogfQogCi12b2lkIERSVERldlRvb2xzQWdl
bnQ6OnNlbmRNZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZChjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYgZGF0YSkKK3ZvaWQgRFJURGV2VG9vbHNBZ2VudDo6c2VuZE1lc3NhZ2VUb0luc3BlY3RvckZy
b250ZW5kKGNvbnN0IFdlYlN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAobV9kcnREZXZUb29sc0Ns
aWVudCkKLSAgICAgICAgIG1fZHJ0RGV2VG9vbHNDbGllbnQtPmFzeW5jQ2FsbChEUlREZXZUb29s
c0NhbGxBcmdzKGRhdGEpKTsKKyAgICAgICAgIG1fZHJ0RGV2VG9vbHNDbGllbnQtPmFzeW5jQ2Fs
bChkYXRhKTsKIH0KIAotdm9pZCBEUlREZXZUb29sc0FnZW50OjpydW50aW1lUHJvcGVydHlDaGFu
Z2VkKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYgdmFsdWUpCit2b2lkIERSVERldlRvb2xzQWdlbnQ6OnJ1bnRpbWVQcm9wZXJ0eUNoYW5nZWQo
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKQogewogICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQuCiB9CkBAIC04NCwxOCArODIsMTYgQEAgV2ViRGV2VG9vbHNBZ2Vu
dENsaWVudDo6V2ViS2l0Q2xpZW50TWVzc2FnZUxvb3AqIERSVERldlRvb2xzQWdlbnQ6OmNyZWF0
ZUNsaWVudE0KICAgICByZXR1cm4gd2Via2l0X3N1cHBvcnQ6OkNyZWF0ZURldlRvb2xzTWVzc2Fn
ZUxvb3AoKTsKIH0KIAotdm9pZCBEUlREZXZUb29sc0FnZW50Ojphc3luY0NhbGwoY29uc3QgRFJU
RGV2VG9vbHNDYWxsQXJncyYgYXJncykKK3ZvaWQgRFJURGV2VG9vbHNBZ2VudDo6YXN5bmNDYWxs
KGNvbnN0IFdlYlN0cmluZyYgYXJncykKIHsKICAgICBwb3N0VGFzayhuZXcgQXN5bmNDYWxsVGFz
ayh0aGlzLCBhcmdzKSk7CiB9CiAKLXZvaWQgRFJURGV2VG9vbHNBZ2VudDo6Y2FsbChjb25zdCBE
UlREZXZUb29sc0NhbGxBcmdzICZhcmdzKQordm9pZCBEUlREZXZUb29sc0FnZW50OjpjYWxsKGNv
bnN0IFdlYlN0cmluZyYgYXJncykKIHsKICAgICBXZWJEZXZUb29sc0FnZW50KiBhZ2VudCA9IHdl
YkRldlRvb2xzQWdlbnQoKTsKICAgICBpZiAoYWdlbnQpCi0gICAgICAgIGFnZW50LT5kaXNwYXRj
aE9uSW5zcGVjdG9yQmFja2VuZChhcmdzLm1fZGF0YSk7Ci0gICAgaWYgKERSVERldlRvb2xzQ2Fs
bEFyZ3M6OmNhbGxzQ291bnQoKSA9PSAxICYmIG1fZHJ0RGV2VG9vbHNDbGllbnQpCi0gICAgICAg
IG1fZHJ0RGV2VG9vbHNDbGllbnQtPmFsbE1lc3NhZ2VzUHJvY2Vzc2VkKCk7CisgICAgICAgIGFn
ZW50LT5kaXNwYXRjaE9uSW5zcGVjdG9yQmFja2VuZChhcmdzKTsKIH0KIAogdm9pZCBEUlREZXZU
b29sc0FnZW50OjpkZWxheWVkRnJvbnRlbmRMb2FkZWQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oCmluZGV4IDY2NTQzNWMuLjRjYmM4YmMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdl
bnQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50
LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpZm5kZWYgRFJURGV2VG9vbHNBZ2VudF9oCiAjZGVmaW5l
IERSVERldlRvb2xzQWdlbnRfaAogCi0jaW5jbHVkZSAiRFJURGV2VG9vbHNDYWxsQXJncy5oIgog
I2luY2x1ZGUgIlRhc2suaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50Q2xpZW50LmgiCisj
aW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtNDEsNyArNDEsNiBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgV2ViQ1N0cmluZzsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnQ7Ci1jbGFzcyBX
ZWJTdHJpbmc7CiBjbGFzcyBXZWJWaWV3Owogc3RydWN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGE7
CiAKQEAgLTY1LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJDU3Ry
aW5nIGRlYnVnZ2VyU2NyaXB0U291cmNlKCk7CiAgICAgdmlydHVhbCBXZWJLaXRDbGllbnRNZXNz
YWdlTG9vcCogY3JlYXRlQ2xpZW50TWVzc2FnZUxvb3AoKTsKIAotICAgIHZvaWQgYXN5bmNDYWxs
KGNvbnN0IERSVERldlRvb2xzQ2FsbEFyZ3MmKTsKKyAgICB2b2lkIGFzeW5jQ2FsbChjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYgYXJncyk7CiAKICAgICB2b2lkIGF0dGFjaChEUlREZXZUb29sc0Ns
aWVudCopOwogICAgIHZvaWQgZGV0YWNoKCk7CkBAIC03NiwxOCArNzUsMTggQEAgcHVibGljOgog
ICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKIHByaXZh
dGU6Ci0gICAgdm9pZCBjYWxsKGNvbnN0IERSVERldlRvb2xzQ2FsbEFyZ3MmKTsKKyAgICB2b2lk
IGNhbGwoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFyZ3MpOwogICAgIHZvaWQgZGVsYXllZEZy
b250ZW5kTG9hZGVkKCk7CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hNZXNzYWdlTG9vcCgpOwog
ICAgIFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudCogd2ViRGV2VG9vbHNBZ2VudCgpOwogCiAgICAg
Y2xhc3MgQXN5bmNDYWxsVGFzazogcHVibGljIE1ldGhvZFRhc2s8RFJURGV2VG9vbHNBZ2VudD4g
ewogICAgIHB1YmxpYzoKLSAgICAgICAgQXN5bmNDYWxsVGFzayhEUlREZXZUb29sc0FnZW50KiBv
YmplY3QsIGNvbnN0IERSVERldlRvb2xzQ2FsbEFyZ3MmIGFyZ3MpCisgICAgICAgIEFzeW5jQ2Fs
bFRhc2soRFJURGV2VG9vbHNBZ2VudCogb2JqZWN0LCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYg
YXJncykKICAgICAgICAgICAgIDogTWV0aG9kVGFzazxEUlREZXZUb29sc0FnZW50PihvYmplY3Qp
LCBtX2FyZ3MoYXJncykge30KICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1f
b2JqZWN0LT5jYWxsKG1fYXJncyk7IH0KICAgICBwcml2YXRlOgotICAgICAgICBEUlREZXZUb29s
c0NhbGxBcmdzIG1fYXJnczsKKyAgICAgICAgV2ViS2l0OjpXZWJTdHJpbmcgbV9hcmdzOwogICAg
IH07CiAKICAgICBzdHJ1Y3QgRGVsYXllZEZyb250ZW5kTG9hZGVkVGFzazogcHVibGljIE1ldGhv
ZFRhc2s8RFJURGV2VG9vbHNBZ2VudD4gewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDYWxsQXJncy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9EUlREZXZUb29sc0NhbGxBcmdzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZGFjZDZmNy4uMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9EUlREZXZUb29sc0NhbGxBcmdzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRFJURGV2VG9vbHNDYWxsQXJncy5oIgot
Ci0vLyBzdGF0aWMKLWludCBEUlREZXZUb29sc0NhbGxBcmdzOjptX2NhbGxzQ291bnQgPSAwOwot
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0Nh
bGxBcmdzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NhbGxB
cmdzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1NDgxNTkuLjAwMDAwMDAKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDYWxsQXJncy5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRFJURGV2VG9vbHNDYWxsQXJnc19o
Ci0jZGVmaW5lIERSVERldlRvb2xzQ2FsbEFyZ3NfaAotCi0jaW5jbHVkZSAiV2ViU3RyaW5nLmgi
Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLQotY2xhc3MgRFJURGV2VG9vbHNDYWxsQXJn
cyB7Ci1wdWJsaWM6Ci0gICAgRFJURGV2VG9vbHNDYWxsQXJncyhjb25zdCBXZWJLaXQ6OldlYlN0
cmluZyYgZGF0YSkKLSAgICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICB7Ci0gICAgICAgICsrbV9j
YWxsc0NvdW50OwotICAgIH0KLQotICAgIERSVERldlRvb2xzQ2FsbEFyZ3MoY29uc3QgRFJURGV2
VG9vbHNDYWxsQXJncyYgYXJncykKLSAgICAgICAgOiBtX2RhdGEoYXJncy5tX2RhdGEpCi0gICAg
ewotICAgICAgICArK21fY2FsbHNDb3VudDsKLSAgICB9Ci0KLSAgICB+RFJURGV2VG9vbHNDYWxs
QXJncygpCi0gICAgewotICAgICAgICAtLW1fY2FsbHNDb3VudDsKLSAgICAgICAgQVNTRVJUKG1f
Y2FsbHNDb3VudCA+PSAwKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgaW50IGNhbGxzQ291bnQoKSB7
IHJldHVybiBtX2NhbGxzQ291bnQ7IH0KLQotICAgIFdlYktpdDo6V2ViU3RyaW5nIG1fZGF0YTsK
LQotcHJpdmF0ZToKLSAgICBzdGF0aWMgaW50IG1fY2FsbHNDb3VudDsKLX07Ci0KLSNlbmRpZiAv
LyBEUlREZXZUb29sc0NhbGxBcmdzX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmNwcAppbmRleCBhY2NjZjE4Li4yN2YwMDkxIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQu
Y3BwCkBAIC0zMiwxMyArMzIsMTEgQEAKICNpbmNsdWRlICJEUlREZXZUb29sc0NsaWVudC5oIgog
CiAjaW5jbHVkZSAiRFJURGV2VG9vbHNBZ2VudC5oIgotI2luY2x1ZGUgIkRSVERldlRvb2xzQ2Fs
bEFyZ3MuaCIKIAogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnQuaCIKICNpbmNsdWRlICJXZWJE
ZXZUb29sc0Zyb250ZW5kLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJT
Y3JpcHRTb3VyY2UuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJWaWV3
LmgiCiAjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKIApAQCAtNzYs
NyArNzQsNyBAQCB2b2lkIERSVERldlRvb2xzQ2xpZW50OjpzZW5kRnJvbnRlbmRMb2FkZWQoKSB7
CiB2b2lkIERSVERldlRvb2xzQ2xpZW50OjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBXZWJT
dHJpbmcmIGRhdGEpCiB7CiAgICAgaWYgKG1fZHJ0RGV2VG9vbHNBZ2VudCkKLSAgICAgICAgbV9k
cnREZXZUb29sc0FnZW50LT5hc3luY0NhbGwoRFJURGV2VG9vbHNDYWxsQXJncyhkYXRhKSk7Cisg
ICAgICAgIG1fZHJ0RGV2VG9vbHNBZ2VudC0+YXN5bmNDYWxsKGRhdGEpOwogfQogCiB2b2lkIERS
VERldlRvb2xzQ2xpZW50OjpzZW5kRGVidWdnZXJDb21tYW5kVG9BZ2VudChjb25zdCBXZWJTdHJp
bmcmIGNvbW1hbmQpCkBAIC0xMDQsMjEgKzEwMiwxMyBAQCB2b2lkIERSVERldlRvb2xzQ2xpZW50
Ojp1bmRvY2tXaW5kb3coKQogICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4KIH0KIAotdm9pZCBEUlRE
ZXZUb29sc0NsaWVudDo6YXN5bmNDYWxsKGNvbnN0IERSVERldlRvb2xzQ2FsbEFyZ3MmIGFyZ3Mp
Cit2b2lkIERSVERldlRvb2xzQ2xpZW50Ojphc3luY0NhbGwoY29uc3QgV2ViU3RyaW5nJiBhcmdz
KQogewogICAgIHBvc3RUYXNrKG5ldyBBc3luY0NhbGxUYXNrKHRoaXMsIGFyZ3MpKTsKIH0KIAot
dm9pZCBEUlREZXZUb29sc0NsaWVudDo6Y2FsbChjb25zdCBEUlREZXZUb29sc0NhbGxBcmdzJiBh
cmdzKQordm9pZCBEUlREZXZUb29sc0NsaWVudDo6Y2FsbChjb25zdCBXZWJTdHJpbmcmIGFyZ3Mp
CiB7Ci0gICAgbV93ZWJEZXZUb29sc0Zyb250ZW5kLT5kaXNwYXRjaE9uSW5zcGVjdG9yRnJvbnRl
bmQoYXJncy5tX2RhdGEpOwotICAgIGlmIChEUlREZXZUb29sc0NhbGxBcmdzOjpjYWxsc0NvdW50
KCkgPT0gMSkKLSAgICAgICAgYWxsTWVzc2FnZXNQcm9jZXNzZWQoKTsKKyAgICBtX3dlYkRldlRv
b2xzRnJvbnRlbmQtPmRpc3BhdGNoT25JbnNwZWN0b3JGcm9udGVuZChhcmdzKTsKIH0KIAotdm9p
ZCBEUlREZXZUb29sc0NsaWVudDo6YWxsTWVzc2FnZXNQcm9jZXNzZWQoKQotewotICAgIG1fd2Vi
Vmlldy0+bWFpbkZyYW1lKCktPmV4ZWN1dGVTY3JpcHQoCi0gICAgICAgIFdlYktpdDo6V2ViU2Ny
aXB0U291cmNlKFdlYlN0cmluZzo6ZnJvbVVURjgoCi0gICAgICAgICAgICAiaWYgKHdpbmRvdy5X
ZWJJbnNwZWN0b3IgJiYgV2ViSW5zcGVjdG9yLnF1ZXVlc0FyZUVtcHR5KSBXZWJJbnNwZWN0b3Iu
cXVldWVzQXJlRW1wdHkoKTsiKSkpOwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmgKaW5kZXggMGNiYTUxYy4uOGE5M2VlMCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5oCkBA
IC0zMSwxNyArMzEsMTUgQEAKICNpZm5kZWYgRFJURGV2VG9vbHNDbGllbnRfaAogI2RlZmluZSBE
UlREZXZUb29sc0NsaWVudF9oCiAKLSNpbmNsdWRlICJEUlREZXZUb29sc0NhbGxBcmdzLmgiCiAj
aW5jbHVkZSAiVGFzay5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQuaCIK
KyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJE
ZXZUb29sc0Zyb250ZW5kOwogc3RydWN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGE7Ci1jbGFzcyBX
ZWJTdHJpbmc7CiBjbGFzcyBXZWJWaWV3OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKQEAgLTY1
LDIwICs2MywyMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRvY2tXaW5kb3coKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdW5kb2NrV2luZG93KCk7CiAKLSAgICB2b2lkIGFzeW5jQ2FsbChjb25z
dCBEUlREZXZUb29sc0NhbGxBcmdzJik7CisgICAgdm9pZCBhc3luY0NhbGwoY29uc3QgV2ViS2l0
OjpXZWJTdHJpbmcmIGFyZ3MpOwogCiAgICAgdm9pZCBhbGxNZXNzYWdlc1Byb2Nlc3NlZCgpOwog
ICAgIFRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKICBwcml2
YXRlOgotICAgIHZvaWQgY2FsbChjb25zdCBEUlREZXZUb29sc0NhbGxBcmdzJik7CisgICAgdm9p
ZCBjYWxsKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBhcmdzKTsKICAgICBjbGFzcyBBc3luY0Nh
bGxUYXNrOiBwdWJsaWMgTWV0aG9kVGFzazxEUlREZXZUb29sc0NsaWVudD4gewogICAgIHB1Ymxp
YzoKLSAgICAgICAgQXN5bmNDYWxsVGFzayhEUlREZXZUb29sc0NsaWVudCogb2JqZWN0LCBjb25z
dCBEUlREZXZUb29sc0NhbGxBcmdzJiBhcmdzKQorICAgICAgICBBc3luY0NhbGxUYXNrKERSVERl
dlRvb2xzQ2xpZW50KiBvYmplY3QsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBhcmdzKQogICAg
ICAgICAgICAgOiBNZXRob2RUYXNrPERSVERldlRvb2xzQ2xpZW50PihvYmplY3QpLCBtX2FyZ3Mo
YXJncykge30KICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5j
YWxsKG1fYXJncyk7IH0KICAgICBwcml2YXRlOgotICAgICAgICBEUlREZXZUb29sc0NhbGxBcmdz
IG1fYXJnczsKKyAgICAgICAgV2ViS2l0OjpXZWJTdHJpbmcgbV9hcmdzOwogICAgIH07CiAKICAg
ICBUYXNrTGlzdCBtX3Rhc2tMaXN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83301</attachid>
            <date>2011-02-22 05:04:08 -0800</date>
            <delta_ts>2011-02-22 07:29:36 -0800</delta_ts>
            <desc>[patch] third version</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>26578</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNDcyYjkzLi45ZGRlNjZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDIt
MjIgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGZsYWt5
bmVzcyBvZiBpbnNwZWN0b3IgdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NDcyOQorCisgICAgICAgIEkgdGhpbmsgdGhlIHJlYXNvbiBmb3Ig
dGhpcyBpcyBhIHJhY2UgYmV0d2VlbiB0d28gcGFnZXMuCisgICAgICAgIFdlIGhhdmUgaW5zcGVj
dGVkIHBhZ2UgYW5kIEluc3BlY3RvcidzIGZyb250ZW5kIHBhZ2UuCisgICAgICAgIFdoZW4gZnJv
bnRlbmQgcGFnZSBpcyBsb2FkZWQgaXQgYmVnaW5zIHRvIGludGVyYWN0IHdpdGgKKyAgICAgICAg
SW5zcGVjdG9yJ3MgYmFja2VuZCB0byBnYXRoZXIgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRl
CisgICAgICAgIG9mIHRoZSBpbnNwZWN0aW5nIHBhZ2UuIFRoaXMgcHJvY2VzcyBpcyBjb21wbGV0
ZWx5IGFzeW5jaHJvbm91cy4KKyAgICAgICAgQSBudW1iZXIgb2YgbWVzc2FnZXMgd2lsbCBiZSBz
ZW50IGJhY2sgYW5kIGZvcnRoLgorICAgICAgICBBdCB0aGUgc2FtZSB0aW1lIHRoZSBpbnNwZWN0
ZWQgcGFnZSB0cmllcyBkbyBpdHMgd29yayBhbmQKKyAgICAgICAgc2VuZCB0aGVpciBtZXNzYWdl
cyB0byBjaGVjayB0aGUgc3RhdGUgaW5zcGVjdG9yIGFuZCB0cnlpbmcKKyAgICAgICAgdG8gZG8g
c29tZSB0aGluZ3Mgd2l0aCBpdC4gSG93ZXZlciwgdGhlIHN0YXRlIG9mIEluc3BlY3RvcidzIHBh
Z2UKKyAgICAgICAgaXMgbm90IHN0YWJsZSB1bnRpbCBpdCBmaW5pc2hlcyBpdHMgaW5pdGlhbGl6
YXRpb24gcHJvY2Vzcy4KKworICAgICAgICBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gd2FpdCB1bnRp
bCBJbnNwZWN0b3IncyBmcm9udGVuZCBwYWdlIHdpbGwgc2VuZAorICAgICAgICBhbGwgdGhlaXIg
cmVxdWVzdHMgYW5kIHJlY2VpdmUgYmFjayBhbGwgdGhlIGFuc3dlcnMuCisgICAgICAgIFdlIGRl
ZmluaXRlbHkga25vdyBob3cgbWFueSByZXF1ZXN0cyBhcmUgd2FpdGluZyBmb3IgYW5zd2VycyBh
bmQgbmVlZAorICAgICAgICBqdXN0IHdhaXQgdW50aWwgdGhlIG51bWJlciBiZWNvbWVzIDAgYW5k
IHByb2Nlc3MgdGVzdCBjb21tYW5kIGFmdGVyIHRoYXQuCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVj
dG9yVGVzdC5JbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMpOgorCiAyMDEx
LTAyLTIyICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5z
cGVjdG9yLXRlc3QuanMKaW5kZXggOTFhZjgwNS4uNTI2MTFlZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKQEAgLTEyOSw4ICsx
MjksNyBAQCBJbnNwZWN0b3JUZXN0LnBhZ2VSZWxvYWRlZCA9IGZ1bmN0aW9uKCkKIEluc3BlY3Rv
clRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogewog
ICAgIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjayk7Ci0KLSAgICBX
ZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIucHJvdG90eXBlLnJ1bkFmdGVyUGVuZGluZ0Rpc3Bh
dGNoZXMoY2FsbGJhY2spOworICAgIFdlYkluc3BlY3Rvci50ZXN0Q29udHJvbGxlci5ydW5BZnRl
clBlbmRpbmdEaXNwYXRjaGVzKGNhbGxiYWNrKTsKIH0KIAogSW5zcGVjdG9yVGVzdC5jcmVhdGVL
ZXlFdmVudCA9IGZ1bmN0aW9uKGtleUlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJjMzdlZC4u
ZjRhNjg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDExLTAyLTIyICBJbHlhIFRp
a2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBmbGFreW5lc3Mgb2YgaW5z
cGVjdG9yIHRlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTQ3MjkKKworICAgICAgICBJIHRoaW5rIHRoZSByZWFzb24gZm9yIHRoaXMgaXMgYSBy
YWNlIGJldHdlZW4gdHdvIHBhZ2VzLgorICAgICAgICBXZSBoYXZlIGluc3BlY3RlZCBwYWdlIGFu
ZCBJbnNwZWN0b3IncyBmcm9udGVuZCBwYWdlLgorICAgICAgICBXaGVuIGZyb250ZW5kIHBhZ2Ug
aXMgbG9hZGVkIGl0IGJlZ2lucyB0byBpbnRlcmFjdCB3aXRoCisgICAgICAgIEluc3BlY3Rvcidz
IGJhY2tlbmQgdG8gZ2F0aGVyIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGF0ZQorICAgICAgICBv
ZiB0aGUgaW5zcGVjdGluZyBwYWdlLiBUaGlzIHByb2Nlc3MgaXMgY29tcGxldGVseSBhc3luY2hy
b25vdXMuCisgICAgICAgIEEgbnVtYmVyIG9mIG1lc3NhZ2VzIHdpbGwgYmUgc2VudCBiYWNrIGFu
ZCBmb3J0aC4KKyAgICAgICAgQXQgdGhlIHNhbWUgdGltZSB0aGUgaW5zcGVjdGVkIHBhZ2UgdHJp
ZXMgZG8gaXRzIHdvcmsgYW5kCisgICAgICAgIHNlbmQgdGhlaXIgbWVzc2FnZXMgdG8gY2hlY2sg
dGhlIHN0YXRlIGluc3BlY3RvciBhbmQgdHJ5aW5nCisgICAgICAgIHRvIGRvIHNvbWUgdGhpbmdz
IHdpdGggaXQuIEhvd2V2ZXIsIHRoZSBzdGF0ZSBvZiBJbnNwZWN0b3IncyBwYWdlCisgICAgICAg
IGlzIG5vdCBzdGFibGUgdW50aWwgaXQgZmluaXNoZXMgaXRzIGluaXRpYWxpemF0aW9uIHByb2Nl
c3MuCisKKyAgICAgICAgSXQgd291bGQgYmUgYmV0dGVyIHRvIHdhaXQgdW50aWwgSW5zcGVjdG9y
J3MgZnJvbnRlbmQgcGFnZSB3aWxsIHNlbmQKKyAgICAgICAgYWxsIHRoZWlyIHJlcXVlc3RzIGFu
ZCByZWNlaXZlIGJhY2sgYWxsIHRoZSBhbnN3ZXJzLgorICAgICAgICBXZSBkZWZpbml0ZWx5IGtu
b3cgaG93IG1hbnkgcmVxdWVzdHMgYXJlIHdhaXRpbmcgZm9yIGFuc3dlcnMgYW5kIG5lZWQKKyAg
ICAgICAganVzdCB3YWl0IHVudGlsIHRoZSBudW1iZXIgYmVjb21lcyAwIGFuZCBwcm9jZXNzIHRl
c3QgY29tbWFuZCBhZnRlciB0aGF0LgorCisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0
b3JJbnNwZWN0b3IucG06CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0Q29udHJv
bGxlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlcik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIucHJvdG90eXBlLm5vdGlmeURvbmUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLnByb3RvdHlwZS5ydW5BZnRlclBlbmRp
bmdEaXNwYXRjaGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5wcm90
b3R5cGUuX2V2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmRpc3BhdGNoKToK
KwogMjAxMS0wMi0yMiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCmluZGV4IDY5ZGMwNmQuLjJiOWIz
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5z
cGVjdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5z
cGVjdG9yLnBtCkBAIC03MTEsNiArNzExLDcgQEAgJGxpY2Vuc2VUZW1wbGF0ZQogSW5zcGVjdG9y
QmFja2VuZFN0dWIgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5fbGFzdENhbGxiYWNrSWQgPSAx
OworICAgIHRoaXMuX3BlbmRpbmdSZXNwb25zZXNDb3VudCA9IDA7CiAgICAgdGhpcy5fY2FsbGJh
Y2tzID0ge307CiAgICAgdGhpcy5fZG9tYWluRGlzcGF0Y2hlcnMgPSB7fTsKICRKU1N0dWJzCkBA
IC03MjAsNiArNzIxLDcgQEAgSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlID0gewogICAg
IF93cmFwOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHZhciBjYWxsYmFja0lk
ID0gdGhpcy5fbGFzdENhbGxiYWNrSWQrKzsKKyAgICAgICAgKyt0aGlzLl9wZW5kaW5nUmVzcG9u
c2VzQ291bnQ7CiAgICAgICAgIHRoaXMuX2NhbGxiYWNrc1tjYWxsYmFja0lkXSA9IGNhbGxiYWNr
IHx8IGZ1bmN0aW9uKCkge307CiAgICAgICAgIHJldHVybiBjYWxsYmFja0lkOwogICAgIH0sCkBA
IC03MjgsMTQgKzczMCwyMSBAQCBJbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUgPSB7CiAg
ICAgewogICAgICAgICB2YXIgY2FsbGJhY2sgPSB0aGlzLl9jYWxsYmFja3NbY2FsbGJhY2tJZF07
CiAgICAgICAgIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFyZ3MpOworICAgICAgICAtLXRoaXMuX3Bl
bmRpbmdSZXNwb25zZXNDb3VudDsKICAgICAgICAgZGVsZXRlIHRoaXMuX2NhbGxiYWNrc1tjYWxs
YmFja0lkXTsKICAgICB9LAogCiAgICAgX3JlbW92ZVJlc3BvbnNlQ2FsbGJhY2tFbnRyeTogZnVu
Y3Rpb24oY2FsbGJhY2tJZCkKICAgICB7CisgICAgICAgIC0tdGhpcy5fcGVuZGluZ1Jlc3BvbnNl
c0NvdW50OwogICAgICAgICBkZWxldGUgdGhpcy5fY2FsbGJhY2tzW2NhbGxiYWNrSWRdOwogICAg
IH0sCiAKKyAgICBpc1dhaXRpbmdGb3JSZXNwb25zZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdSZXNwb25zZXNDb3VudDsKKyAgICB9LAorCiAgICAgX3Jl
Z2lzdGVyRGVsZWdhdGU6IGZ1bmN0aW9uKGNvbW1hbmRJbmZvKQogICAgIHsKICAgICAgICAgdmFy
IGNvbW1hbmRPYmplY3QgPSBKU09OLnBhcnNlKGNvbW1hbmRJbmZvKTsKQEAgLTgwMCwxMCArODA5
LDEyIEBAIEluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCJz
ZXEiIGluIG1lc3NhZ2VPYmplY3QpIHsgLy8ganVzdCBhIHJlc3BvbnNlIGZvciBzb21lIHJlcXVl
c3QKICAgICAgICAgICAgIGlmIChtZXNzYWdlT2JqZWN0LnN1Y2Nlc3MpCiAgICAgICAgICAgICAg
ICAgdGhpcy5fcHJvY2Vzc1Jlc3BvbnNlKG1lc3NhZ2VPYmplY3Quc2VxLCBhcmd1bWVudHMpOwot
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUmVzcG9uc2VD
YWxsYmFja0VudHJ5KG1lc3NhZ2VPYmplY3Quc2VxKQorICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIHRoaXMucmVwb3J0UHJvdG9jb2xFcnJvcihtZXNzYWdlT2JqZWN0KTsKLSAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRoaXMucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hl
cyAmJiAhdGhpcy5pc1dhaXRpbmdGb3JSZXNwb25zZSgpKQorICAgICAgICAgICAgICAgIHRoaXMu
cnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcygpOworCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
ZXN0Q29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGVz
dENvbnRyb2xsZXIuanMKaW5kZXggMDk2NzAyNy4uMmFlOWQ2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0Q29udHJvbGxlci5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVyLmpzCkBAIC0yOCw0
MCArMjgsMzggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRlc3RDb250
cm9sbGVyID0gZnVuY3Rpb24oY2FsbElkKQorV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyID0g
ZnVuY3Rpb24oKQogewotICAgIHRoaXMuX2NhbGxJZCA9IGNhbGxJZDsKLSAgICB0aGlzLl93YWl0
VW50aWxEb25lID0gZmFsc2U7Ci0gICAgdGhpcy5yZXN1bHRzID0gW107CisgICAgdGhpcy5fc2Ny
aXB0cyA9IFtdOworICAgIEluc3BlY3RvckJhY2tlbmQucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hl
cyA9IHRoaXMucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcy5iaW5kKHRoaXMpOwogfQogCiBXZWJJ
bnNwZWN0b3IuVGVzdENvbnRyb2xsZXIucHJvdG90eXBlID0gewotICAgIHdhaXRVbnRpbERvbmU6
IGZ1bmN0aW9uKCkKKyAgICBub3RpZnlEb25lOiBmdW5jdGlvbihjYWxsSWQsIHJlc3VsdCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuX3dhaXRVbnRpbERvbmUgPSB0cnVlOwotICAgIH0sCi0KLSAgICBu
b3RpZnlEb25lOiBmdW5jdGlvbihyZXN1bHQpCi0gICAgewotICAgICAgICBpZiAodHlwZW9mIHJl
c3VsdCA9PT0gInVuZGVmaW5lZCIgJiYgdGhpcy5yZXN1bHRzLmxlbmd0aCkKLSAgICAgICAgICAg
IHJlc3VsdCA9IHRoaXMucmVzdWx0czsKICAgICAgICAgdmFyIG1lc3NhZ2UgPSB0eXBlb2YgcmVz
dWx0ID09PSAidW5kZWZpbmVkIiA/ICJcIjx1bmRlZmluZWQ+XCIiIDogSlNPTi5zdHJpbmdpZnko
cmVzdWx0KTsKLSAgICAgICAgSW5zcGVjdG9yQWdlbnQuZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9u
dGVuZCh0aGlzLl9jYWxsSWQsIG1lc3NhZ2UpOworICAgICAgICBJbnNwZWN0b3JBZ2VudC5kaWRF
dmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGNhbGxJZCwgbWVzc2FnZSk7CiAgICAgfSwKIAogICAg
IHJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5wZW5kaW5nRGlzcGF0Y2hlcyA9PT0gMCkgewotICAgICAg
ICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGNhbGxi
YWNrKQorICAgICAgICAgICAgdGhpcy5fc2NyaXB0cy5wdXNoKGNhbGxiYWNrKTsKKworICAgICAg
ICBpZiAoIUluc3BlY3RvckJhY2tlbmQuaXNXYWl0aW5nRm9yUmVzcG9uc2UoKSkgeworICAgICAg
ICAgICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9zY3JpcHRzOworICAgICAgICAgICAgdGhpcy5fc2Ny
aXB0cyA9IFtdCisgICAgICAgICAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgc2NyaXB0cy5sZW5n
dGg7ICsraWQpCisgICAgICAgICAgICAgICAgIHNjcmlwdHNbaWRdLmNhbGwodGhpcyk7CiAgICAg
ICAgIH0KLSAgICAgICAgc2V0VGltZW91dCh0aGlzLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMu
YmluZCh0aGlzKSwgMCwgY2FsbGJhY2spOwogICAgIH0KIH0KIAogV2ViSW5zcGVjdG9yLmV2YWx1
YXRlRm9yVGVzdEluRnJvbnRlbmQgPSBmdW5jdGlvbihjYWxsSWQsIHNjcmlwdCkKIHsKLSAgICB2
YXIgY29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIoY2FsbElkKTsK
KyAgICBpZiAoIVdlYkluc3BlY3Rvci50ZXN0Q29udHJvbGxlcikKKyAgICAgICAgV2ViSW5zcGVj
dG9yLnRlc3RDb250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlcigpOwor
CiAgICAgZnVuY3Rpb24gaW52b2tlTWV0aG9kKCkKICAgICB7CiAgICAgICAgIHRyeSB7CkBAIC03
MSwxMSArNjksMTAgQEAgV2ViSW5zcGVjdG9yLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQgPSBm
dW5jdGlvbihjYWxsSWQsIHNjcmlwdCkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICByZXN1bHQgPSB3aW5kb3cuZXZhbChzY3JpcHQpOwogCi0gICAgICAgICAgICBpZiAoIWNvbnRy
b2xsZXIuX3dhaXRVbnRpbERvbmUpCi0gICAgICAgICAgICAgICAgY29udHJvbGxlci5ub3RpZnlE
b25lKHJlc3VsdCk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IudGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZShjYWxsSWQsIHJlc3VsdCk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
ICAgIGNvbnRyb2xsZXIubm90aWZ5RG9uZShlLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLnRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoY2FsbElkLCBlLnRvU3RyaW5nKCkp
OwogICAgICAgICB9CiAgICAgfQotICAgIGNvbnRyb2xsZXIucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0
Y2hlcyhpbnZva2VNZXRob2QpOworICAgIFdlYkluc3BlY3Rvci50ZXN0Q29udHJvbGxlci5ydW5B
ZnRlclBlbmRpbmdEaXNwYXRjaGVzKGludm9rZU1ldGhvZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IDE2YWFlMWUuLjRlYjlh
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzCkBAIC01OTIsMTMgKzU5Miw3IEBAIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250
ZW50TG9hZGVkIiwgd2luZG93TG9hZGVkLCBmYWxzZSk7CiBXZWJJbnNwZWN0b3IuZGlzcGF0Y2gg
PSBmdW5jdGlvbihtZXNzYWdlKSB7CiAgICAgLy8gV2UnZCBsaWtlIHRvIGVuZm9yY2UgYXN5bmNo
cm9ub3VzIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGluc3BlY3RvciBjb250cm9sbGVyIGFuZCB0
aGUgZnJvbnRlbmQuCiAgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgdG8gTGF5b3V0VGVzdHMuCi0g
ICAgZnVuY3Rpb24gZGVsYXlEaXNwYXRjaCgpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JCYWNr
ZW5kLmRpc3BhdGNoKG1lc3NhZ2UpOwotICAgICAgICBXZWJJbnNwZWN0b3IucGVuZGluZ0Rpc3Bh
dGNoZXMtLTsKLSAgICB9Ci0gICAgV2ViSW5zcGVjdG9yLnBlbmRpbmdEaXNwYXRjaGVzKys7Ci0g
ICAgc2V0VGltZW91dChkZWxheURpc3BhdGNoLCAwKTsKKyAgICBzZXRUaW1lb3V0KEluc3BlY3Rv
ckJhY2tlbmQuZGlzcGF0Y2guYmluZChJbnNwZWN0b3JCYWNrZW5kKSwgMCwgbWVzc2FnZSk7CiB9
CiAKIFdlYkluc3BlY3Rvci5kaXNwYXRjaE1lc3NhZ2VGcm9tQmFja2VuZCA9IGZ1bmN0aW9uKG1l
c3NhZ2VPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDI2OTFiNzguLmIxMTYz
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDIt
MjIgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGZsYWt5
bmVzcyBvZiBpbnNwZWN0b3IgdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NDcyOQorCisgICAgICAgIEkgdGhpbmsgdGhlIHJlYXNvbiBmb3Ig
dGhpcyBpcyBhIHJhY2UgYmV0d2VlbiB0d28gcGFnZXMuCisgICAgICAgIFdlIGhhdmUgaW5zcGVj
dGVkIHBhZ2UgYW5kIEluc3BlY3RvcidzIGZyb250ZW5kIHBhZ2UuCisgICAgICAgIFdoZW4gZnJv
bnRlbmQgcGFnZSBpcyBsb2FkZWQgaXQgYmVnaW5zIHRvIGludGVyYWN0IHdpdGgKKyAgICAgICAg
SW5zcGVjdG9yJ3MgYmFja2VuZCB0byBnYXRoZXIgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRl
CisgICAgICAgIG9mIHRoZSBpbnNwZWN0aW5nIHBhZ2UuIFRoaXMgcHJvY2VzcyBpcyBjb21wbGV0
ZWx5IGFzeW5jaHJvbm91cy4KKyAgICAgICAgQSBudW1iZXIgb2YgbWVzc2FnZXMgd2lsbCBiZSBz
ZW50IGJhY2sgYW5kIGZvcnRoLgorICAgICAgICBBdCB0aGUgc2FtZSB0aW1lIHRoZSBpbnNwZWN0
ZWQgcGFnZSB0cmllcyBkbyBpdHMgd29yayBhbmQKKyAgICAgICAgc2VuZCB0aGVpciBtZXNzYWdl
cyB0byBjaGVjayB0aGUgc3RhdGUgaW5zcGVjdG9yIGFuZCB0cnlpbmcKKyAgICAgICAgdG8gZG8g
c29tZSB0aGluZ3Mgd2l0aCBpdC4gSG93ZXZlciwgdGhlIHN0YXRlIG9mIEluc3BlY3RvcidzIHBh
Z2UKKyAgICAgICAgaXMgbm90IHN0YWJsZSB1bnRpbCBpdCBmaW5pc2hlcyBpdHMgaW5pdGlhbGl6
YXRpb24gcHJvY2Vzcy4KKworICAgICAgICBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gd2FpdCB1bnRp
bCBJbnNwZWN0b3IncyBmcm9udGVuZCBwYWdlIHdpbGwgc2VuZAorICAgICAgICBhbGwgdGhlaXIg
cmVxdWVzdHMgYW5kIHJlY2VpdmUgYmFjayBhbGwgdGhlIGFuc3dlcnMuCisgICAgICAgIFdlIGRl
ZmluaXRlbHkga25vdyBob3cgbWFueSByZXF1ZXN0cyBhcmUgd2FpdGluZyBmb3IgYW5zd2VycyBh
bmQgbmVlZAorICAgICAgICBqdXN0IHdhaXQgdW50aWwgdGhlIG51bWJlciBiZWNvbWVzIDAgYW5k
IHByb2Nlc3MgdGVzdCBjb21tYW5kIGFmdGVyIHRoYXQuCisKKyAgICAgICAgKiBzcmMvanMvRGV2
VG9vbHMuanM6CisKIDIwMTEtMDItMjEgIE5pY28gV2ViZXIgIDx0aGFraXNAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwppbmRleCAzZDYxYmU3Li4wM2M3MmQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwpAQCAtMTMwLDI2ICsxMzAsNiBA
QCBXZWJJbnNwZWN0b3Iub3BlbkxpbmtFeHRlcm5hbGx5TGFiZWwgPSBmdW5jdGlvbigpCiAKIAog
Ci0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBDaHJvbWl1
bSBsYXlvdXQgdGVzdCBoYXJuZXNzIHN1cHBvcnQuIC8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLVdlYkluc3BlY3Rvci5ydW5BZnRlclBlbmRpbmdEaXNw
YXRjaGVzUXVldWUgPSBbXTsKLQotV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLnByb3RvdHlw
ZS5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzID0gZnVuY3Rpb24oY2FsbGJhY2spCi17Ci0gICAg
V2ViSW5zcGVjdG9yLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXNRdWV1ZS5wdXNoKGNhbGxiYWNr
KTsKLX07Ci0KLVdlYkluc3BlY3Rvci5xdWV1ZXNBcmVFbXB0eSA9IGZ1bmN0aW9uKCkKLXsKLSAg
ICB2YXIgY29weSA9IHRoaXMucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlc1F1ZXVlLnNsaWNlKCk7
Ci0gICAgdGhpcy5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzUXVldWUgPSBbXTsKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNvcHkubGVuZ3RoOyArK2kpCi0gICAgICAgIGNvcHlbaV0uY2FsbCh0
aGlzKTsKLX07Ci0KLQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vIENocm9taXVt
IHRoZW1lIHN1cHBvcnQuIC8vCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQyYjBhMWMuLmM0
MDBmMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0MSBAQAorMjAxMS0wMi0yMiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogZmxha3luZXNzIG9mIGluc3BlY3RvciB0ZXN0cy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NzI5CisKKyAgICAg
ICAgSSB0aGluayB0aGUgcmVhc29uIGZvciB0aGlzIGlzIGEgcmFjZSBiZXR3ZWVuIHR3byBwYWdl
cy4KKyAgICAgICAgV2UgaGF2ZSBpbnNwZWN0ZWQgcGFnZSBhbmQgSW5zcGVjdG9yJ3MgZnJvbnRl
bmQgcGFnZS4KKyAgICAgICAgV2hlbiBmcm9udGVuZCBwYWdlIGlzIGxvYWRlZCBpdCBiZWdpbnMg
dG8gaW50ZXJhY3Qgd2l0aAorICAgICAgICBJbnNwZWN0b3IncyBiYWNrZW5kIHRvIGdhdGhlciBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUKKyAgICAgICAgb2YgdGhlIGluc3BlY3RpbmcgcGFn
ZS4gVGhpcyBwcm9jZXNzIGlzIGNvbXBsZXRlbHkgYXN5bmNocm9ub3VzLgorICAgICAgICBBIG51
bWJlciBvZiBtZXNzYWdlcyB3aWxsIGJlIHNlbnQgYmFjayBhbmQgZm9ydGguCisgICAgICAgIEF0
IHRoZSBzYW1lIHRpbWUgdGhlIGluc3BlY3RlZCBwYWdlIHRyaWVzIGRvIGl0cyB3b3JrIGFuZAor
ICAgICAgICBzZW5kIHRoZWlyIG1lc3NhZ2VzIHRvIGNoZWNrIHRoZSBzdGF0ZSBpbnNwZWN0b3Ig
YW5kIHRyeWluZworICAgICAgICB0byBkbyBzb21lIHRoaW5ncyB3aXRoIGl0LiBIb3dldmVyLCB0
aGUgc3RhdGUgb2YgSW5zcGVjdG9yJ3MgcGFnZQorICAgICAgICBpcyBub3Qgc3RhYmxlIHVudGls
IGl0IGZpbmlzaGVzIGl0cyBpbml0aWFsaXphdGlvbiBwcm9jZXNzLgorCisgICAgICAgIEl0IHdv
dWxkIGJlIGJldHRlciB0byB3YWl0IHVudGlsIEluc3BlY3RvcidzIGZyb250ZW5kIHBhZ2Ugd2ls
bCBzZW5kCisgICAgICAgIGFsbCB0aGVpciByZXF1ZXN0cyBhbmQgcmVjZWl2ZSBiYWNrIGFsbCB0
aGUgYW5zd2Vycy4KKyAgICAgICAgV2UgZGVmaW5pdGVseSBrbm93IGhvdyBtYW55IHJlcXVlc3Rz
IGFyZSB3YWl0aW5nIGZvciBhbnN3ZXJzIGFuZCBuZWVkCisgICAgICAgIGp1c3Qgd2FpdCB1bnRp
bCB0aGUgbnVtYmVyIGJlY29tZXMgMCBhbmQgcHJvY2VzcyB0ZXN0IGNvbW1hbmQgYWZ0ZXIgdGhh
dC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHA6CisgICAg
ICAgIChEUlREZXZUb29sc0FnZW50OjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQpOgor
ICAgICAgICAoRFJURGV2VG9vbHNBZ2VudDo6cnVudGltZVByb3BlcnR5Q2hhbmdlZCk6CisgICAg
ICAgIChEUlREZXZUb29sc0FnZW50Ojphc3luY0NhbGwpOgorICAgICAgICAoRFJURGV2VG9vbHNB
Z2VudDo6Y2FsbCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9v
bHNBZ2VudC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xz
Q2FsbEFyZ3MuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0RSVERldlRvb2xzQ2FsbEFyZ3MuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5jcHA6CisgICAgICAgIChEUlREZXZUb29sc0Ns
aWVudDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQpOgorICAgICAgICAoRFJURGV2VG9vbHNDbGllbnQ6
OmFzeW5jQ2FsbCk6CisgICAgICAgIChEUlREZXZUb29sc0NsaWVudDo6Y2FsbCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuaDoKKwogMjAxMS0w
Mi0yMSAgTHVrYXN6IFNsYWNoY2lhayAgPGwuc2xhY2hjaWFrQHNhbXN1bmcuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUuZ3lwaQppbmRleCAzZDIxYmU3Li5hM2YwNTIwIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTExLDggKzExLDYgQEAKICAgICAgICAgICAgICdj
aHJvbWl1bS9DcHBWYXJpYW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL0RSVERldlRvb2xz
QWdlbnQuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmgnLAot
ICAgICAgICAgICAgJ2Nocm9taXVtL0RSVERldlRvb2xzQ2FsbEFyZ3MuY3BwJywKLSAgICAgICAg
ICAgICdjaHJvbWl1bS9EUlREZXZUb29sc0NhbGxBcmdzLmgnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL0RSVERldlRvb2xzQ2xpZW50LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vRFJURGV2
VG9vbHNDbGllbnQuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3Bw
JywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xz
QWdlbnQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2Vu
dC5jcHAKaW5kZXggNzhjODZlNy4uNzZhYTc4MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHAKQEAgLTMxLDEyICszMSwxMCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRSVERldlRvb2xzQWdlbnQuaCIKIAotI2lu
Y2x1ZGUgIkRSVERldlRvb2xzQ2FsbEFyZ3MuaCIKICNpbmNsdWRlICJEUlREZXZUb29sc0NsaWVu
dC5oIgogCiAjaW5jbHVkZSAiV2ViQ1N0cmluZy5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdl
bnQuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5j
bHVkZSAid2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKIApAQCAtNjMsMTMgKzYxLDEz
IEBAIHZvaWQgRFJURGV2VG9vbHNBZ2VudDo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJWaWV3KQog
ICAgIG1fd2ViVmlldyA9IHdlYlZpZXc7CiB9CiAKLXZvaWQgRFJURGV2VG9vbHNBZ2VudDo6c2Vu
ZE1lc3NhZ2VUb0luc3BlY3RvckZyb250ZW5kKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBkYXRh
KQordm9pZCBEUlREZXZUb29sc0FnZW50OjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQo
Y29uc3QgV2ViU3RyaW5nJiBkYXRhKQogewogICAgIGlmIChtX2RydERldlRvb2xzQ2xpZW50KQot
ICAgICAgICAgbV9kcnREZXZUb29sc0NsaWVudC0+YXN5bmNDYWxsKERSVERldlRvb2xzQ2FsbEFy
Z3MoZGF0YSkpOworICAgICAgICAgbV9kcnREZXZUb29sc0NsaWVudC0+YXN5bmNDYWxsKGRhdGEp
OwogfQogCi12b2lkIERSVERldlRvb2xzQWdlbnQ6OnJ1bnRpbWVQcm9wZXJ0eUNoYW5nZWQoY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB2YWx1
ZSkKK3ZvaWQgRFJURGV2VG9vbHNBZ2VudDo6cnVudGltZVByb3BlcnR5Q2hhbmdlZChjb25zdCBX
ZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6
IEltcGxlbWVudC4KIH0KQEAgLTg0LDE4ICs4MiwxNiBAQCBXZWJEZXZUb29sc0FnZW50Q2xpZW50
OjpXZWJLaXRDbGllbnRNZXNzYWdlTG9vcCogRFJURGV2VG9vbHNBZ2VudDo6Y3JlYXRlQ2xpZW50
TQogICAgIHJldHVybiB3ZWJraXRfc3VwcG9ydDo6Q3JlYXRlRGV2VG9vbHNNZXNzYWdlTG9vcCgp
OwogfQogCi12b2lkIERSVERldlRvb2xzQWdlbnQ6OmFzeW5jQ2FsbChjb25zdCBEUlREZXZUb29s
c0NhbGxBcmdzJiBhcmdzKQordm9pZCBEUlREZXZUb29sc0FnZW50Ojphc3luY0NhbGwoY29uc3Qg
V2ViU3RyaW5nJiBhcmdzKQogewogICAgIHBvc3RUYXNrKG5ldyBBc3luY0NhbGxUYXNrKHRoaXMs
IGFyZ3MpKTsKIH0KIAotdm9pZCBEUlREZXZUb29sc0FnZW50OjpjYWxsKGNvbnN0IERSVERldlRv
b2xzQ2FsbEFyZ3MgJmFyZ3MpCit2b2lkIERSVERldlRvb2xzQWdlbnQ6OmNhbGwoY29uc3QgV2Vi
U3RyaW5nJiBhcmdzKQogewogICAgIFdlYkRldlRvb2xzQWdlbnQqIGFnZW50ID0gd2ViRGV2VG9v
bHNBZ2VudCgpOwogICAgIGlmIChhZ2VudCkKLSAgICAgICAgYWdlbnQtPmRpc3BhdGNoT25JbnNw
ZWN0b3JCYWNrZW5kKGFyZ3MubV9kYXRhKTsKLSAgICBpZiAoRFJURGV2VG9vbHNDYWxsQXJnczo6
Y2FsbHNDb3VudCgpID09IDEgJiYgbV9kcnREZXZUb29sc0NsaWVudCkKLSAgICAgICAgbV9kcnRE
ZXZUb29sc0NsaWVudC0+YWxsTWVzc2FnZXNQcm9jZXNzZWQoKTsKKyAgICAgICAgYWdlbnQtPmRp
c3BhdGNoT25JbnNwZWN0b3JCYWNrZW5kKGFyZ3MpOwogfQogCiB2b2lkIERSVERldlRvb2xzQWdl
bnQ6OmRlbGF5ZWRGcm9udGVuZExvYWRlZCgpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmgKaW5kZXggNjY1NDM1Yy4uNGNiYzhiYyAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuaApAQCAt
MzEsOSArMzEsOSBAQAogI2lmbmRlZiBEUlREZXZUb29sc0FnZW50X2gKICNkZWZpbmUgRFJURGV2
VG9vbHNBZ2VudF9oCiAKLSNpbmNsdWRlICJEUlREZXZUb29sc0NhbGxBcmdzLmgiCiAjaW5jbHVk
ZSAiVGFzay5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRDbGllbnQuaCIKKyNpbmNsdWRl
ICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogCkBAIC00MSw3ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJDU3RyaW5nOwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudDsKLWNsYXNzIFdlYlN0cmlu
ZzsKIGNsYXNzIFdlYlZpZXc7CiBzdHJ1Y3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YTsKIApAQCAt
NjUsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYkNTdHJpbmcgZGVi
dWdnZXJTY3JpcHRTb3VyY2UoKTsKICAgICB2aXJ0dWFsIFdlYktpdENsaWVudE1lc3NhZ2VMb29w
KiBjcmVhdGVDbGllbnRNZXNzYWdlTG9vcCgpOwogCi0gICAgdm9pZCBhc3luY0NhbGwoY29uc3Qg
RFJURGV2VG9vbHNDYWxsQXJncyYpOworICAgIHZvaWQgYXN5bmNDYWxsKGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJiBhcmdzKTsKIAogICAgIHZvaWQgYXR0YWNoKERSVERldlRvb2xzQ2xpZW50Kik7
CiAgICAgdm9pZCBkZXRhY2goKTsKQEAgLTc2LDE4ICs3NSwxOCBAQCBwdWJsaWM6CiAgICAgVGFz
a0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGNhbGwoY29uc3QgRFJURGV2VG9vbHNDYWxsQXJncyYpOworICAgIHZvaWQgY2FsbChj
b25zdCBXZWJLaXQ6OldlYlN0cmluZyYgYXJncyk7CiAgICAgdm9pZCBkZWxheWVkRnJvbnRlbmRM
b2FkZWQoKTsKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaE1lc3NhZ2VMb29wKCk7CiAgICAgV2Vi
S2l0OjpXZWJEZXZUb29sc0FnZW50KiB3ZWJEZXZUb29sc0FnZW50KCk7CiAKICAgICBjbGFzcyBB
c3luY0NhbGxUYXNrOiBwdWJsaWMgTWV0aG9kVGFzazxEUlREZXZUb29sc0FnZW50PiB7CiAgICAg
cHVibGljOgotICAgICAgICBBc3luY0NhbGxUYXNrKERSVERldlRvb2xzQWdlbnQqIG9iamVjdCwg
Y29uc3QgRFJURGV2VG9vbHNDYWxsQXJncyYgYXJncykKKyAgICAgICAgQXN5bmNDYWxsVGFzayhE
UlREZXZUb29sc0FnZW50KiBvYmplY3QsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBhcmdzKQog
ICAgICAgICAgICAgOiBNZXRob2RUYXNrPERSVERldlRvb2xzQWdlbnQ+KG9iamVjdCksIG1fYXJn
cyhhcmdzKSB7fQogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIHsgbV9vYmplY3Qt
PmNhbGwobV9hcmdzKTsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIERSVERldlRvb2xzQ2FsbEFy
Z3MgbV9hcmdzOworICAgICAgICBXZWJLaXQ6OldlYlN0cmluZyBtX2FyZ3M7CiAgICAgfTsKIAog
ICAgIHN0cnVjdCBEZWxheWVkRnJvbnRlbmRMb2FkZWRUYXNrOiBwdWJsaWMgTWV0aG9kVGFzazxE
UlREZXZUb29sc0FnZW50PiB7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9EUlREZXZUb29sc0NhbGxBcmdzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0RSVERldlRvb2xzQ2FsbEFyZ3MuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkYWNkNmY3Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RS
VERldlRvb2xzQ2FsbEFyZ3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEUlREZXZUb29sc0NhbGxBcmdzLmgiCi0KLS8vIHN0
YXRpYwotaW50IERSVERldlRvb2xzQ2FsbEFyZ3M6Om1fY2FsbHNDb3VudCA9IDA7Ci0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2FsbEFyZ3Mu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2FsbEFyZ3MuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTU0ODE1OS4uMDAwMDAwMAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NhbGxBcmdzLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBEUlREZXZUb29sc0NhbGxBcmdzX2gKLSNkZWZp
bmUgRFJURGV2VG9vbHNDYWxsQXJnc19oCi0KLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKLSNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi1jbGFzcyBEUlREZXZUb29sc0NhbGxBcmdzIHsKLXB1
YmxpYzoKLSAgICBEUlREZXZUb29sc0NhbGxBcmdzKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBk
YXRhKQotICAgICAgICA6IG1fZGF0YShkYXRhKQotICAgIHsKLSAgICAgICAgKyttX2NhbGxzQ291
bnQ7Ci0gICAgfQotCi0gICAgRFJURGV2VG9vbHNDYWxsQXJncyhjb25zdCBEUlREZXZUb29sc0Nh
bGxBcmdzJiBhcmdzKQotICAgICAgICA6IG1fZGF0YShhcmdzLm1fZGF0YSkKLSAgICB7Ci0gICAg
ICAgICsrbV9jYWxsc0NvdW50OwotICAgIH0KLQotICAgIH5EUlREZXZUb29sc0NhbGxBcmdzKCkK
LSAgICB7Ci0gICAgICAgIC0tbV9jYWxsc0NvdW50OwotICAgICAgICBBU1NFUlQobV9jYWxsc0Nv
dW50ID49IDApOwotICAgIH0KLQotICAgIHN0YXRpYyBpbnQgY2FsbHNDb3VudCgpIHsgcmV0dXJu
IG1fY2FsbHNDb3VudDsgfQotCi0gICAgV2ViS2l0OjpXZWJTdHJpbmcgbV9kYXRhOwotCi1wcml2
YXRlOgotICAgIHN0YXRpYyBpbnQgbV9jYWxsc0NvdW50OwotfTsKLQotI2VuZGlmIC8vIERSVERl
dlRvb2xzQ2FsbEFyZ3NfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRFJURGV2VG9vbHNDbGllbnQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RFJURGV2VG9vbHNDbGllbnQuY3BwCmluZGV4IGFjY2NmMTguLjI3ZjAwOTEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5jcHAKQEAg
LTMyLDEzICszMiwxMSBAQAogI2luY2x1ZGUgIkRSVERldlRvb2xzQ2xpZW50LmgiCiAKICNpbmNs
dWRlICJEUlREZXZUb29sc0FnZW50LmgiCi0jaW5jbHVkZSAiRFJURGV2VG9vbHNDYWxsQXJncy5o
IgogCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudC5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xz
RnJvbnRlbmQuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlNjcmlwdFNv
dXJjZS5oIgotI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNp
bmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgogCkBAIC03Niw3ICs3NCw3
IEBAIHZvaWQgRFJURGV2VG9vbHNDbGllbnQ6OnNlbmRGcm9udGVuZExvYWRlZCgpIHsKIHZvaWQg
RFJURGV2VG9vbHNDbGllbnQ6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFdlYlN0cmluZyYg
ZGF0YSkKIHsKICAgICBpZiAobV9kcnREZXZUb29sc0FnZW50KQotICAgICAgICBtX2RydERldlRv
b2xzQWdlbnQtPmFzeW5jQ2FsbChEUlREZXZUb29sc0NhbGxBcmdzKGRhdGEpKTsKKyAgICAgICAg
bV9kcnREZXZUb29sc0FnZW50LT5hc3luY0NhbGwoZGF0YSk7CiB9CiAKIHZvaWQgRFJURGV2VG9v
bHNDbGllbnQ6OnNlbmREZWJ1Z2dlckNvbW1hbmRUb0FnZW50KGNvbnN0IFdlYlN0cmluZyYgY29t
bWFuZCkKQEAgLTEwNCwyMSArMTAyLDEzIEBAIHZvaWQgRFJURGV2VG9vbHNDbGllbnQ6OnVuZG9j
a1dpbmRvdygpCiAgICAgLy8gTm90IGltcGxlbWVudGVkLgogfQogCi12b2lkIERSVERldlRvb2xz
Q2xpZW50Ojphc3luY0NhbGwoY29uc3QgRFJURGV2VG9vbHNDYWxsQXJncyYgYXJncykKK3ZvaWQg
RFJURGV2VG9vbHNDbGllbnQ6OmFzeW5jQ2FsbChjb25zdCBXZWJTdHJpbmcmIGFyZ3MpCiB7CiAg
ICAgcG9zdFRhc2sobmV3IEFzeW5jQ2FsbFRhc2sodGhpcywgYXJncykpOwogfQogCi12b2lkIERS
VERldlRvb2xzQ2xpZW50OjpjYWxsKGNvbnN0IERSVERldlRvb2xzQ2FsbEFyZ3MmIGFyZ3MpCit2
b2lkIERSVERldlRvb2xzQ2xpZW50OjpjYWxsKGNvbnN0IFdlYlN0cmluZyYgYXJncykKIHsKLSAg
ICBtX3dlYkRldlRvb2xzRnJvbnRlbmQtPmRpc3BhdGNoT25JbnNwZWN0b3JGcm9udGVuZChhcmdz
Lm1fZGF0YSk7Ci0gICAgaWYgKERSVERldlRvb2xzQ2FsbEFyZ3M6OmNhbGxzQ291bnQoKSA9PSAx
KQotICAgICAgICBhbGxNZXNzYWdlc1Byb2Nlc3NlZCgpOworICAgIG1fd2ViRGV2VG9vbHNGcm9u
dGVuZC0+ZGlzcGF0Y2hPbkluc3BlY3RvckZyb250ZW5kKGFyZ3MpOwogfQogCi12b2lkIERSVERl
dlRvb2xzQ2xpZW50OjphbGxNZXNzYWdlc1Byb2Nlc3NlZCgpCi17Ci0gICAgbV93ZWJWaWV3LT5t
YWluRnJhbWUoKS0+ZXhlY3V0ZVNjcmlwdCgKLSAgICAgICAgV2ViS2l0OjpXZWJTY3JpcHRTb3Vy
Y2UoV2ViU3RyaW5nOjpmcm9tVVRGOCgKLSAgICAgICAgICAgICJpZiAod2luZG93LldlYkluc3Bl
Y3RvciAmJiBXZWJJbnNwZWN0b3IucXVldWVzQXJlRW1wdHkpIFdlYkluc3BlY3Rvci5xdWV1ZXNB
cmVFbXB0eSgpOyIpKSk7Ci19CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9EUlREZXZUb29sc0NsaWVudC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RFJURGV2VG9vbHNDbGllbnQuaAppbmRleCAwY2JhNTFjLi44YTkzZWUwIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5oCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmgKQEAgLTMxLDE3
ICszMSwxNSBAQAogI2lmbmRlZiBEUlREZXZUb29sc0NsaWVudF9oCiAjZGVmaW5lIERSVERldlRv
b2xzQ2xpZW50X2gKIAotI2luY2x1ZGUgIkRSVERldlRvb2xzQ2FsbEFyZ3MuaCIKICNpbmNsdWRl
ICJUYXNrLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oIgorI2luY2x1
ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkRldlRvb2xz
RnJvbnRlbmQ7CiBzdHJ1Y3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YTsKLWNsYXNzIFdlYlN0cmlu
ZzsKIGNsYXNzIFdlYlZpZXc7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApAQCAtNjUsMjAgKzYz
LDIwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZG9ja1dpbmRvdygpOwogICAgIHZpcnR1
YWwgdm9pZCB1bmRvY2tXaW5kb3coKTsKIAotICAgIHZvaWQgYXN5bmNDYWxsKGNvbnN0IERSVERl
dlRvb2xzQ2FsbEFyZ3MmKTsKKyAgICB2b2lkIGFzeW5jQ2FsbChjb25zdCBXZWJLaXQ6OldlYlN0
cmluZyYgYXJncyk7CiAKICAgICB2b2lkIGFsbE1lc3NhZ2VzUHJvY2Vzc2VkKCk7CiAgICAgVGFz
a0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogIHByaXZhdGU6Ci0g
ICAgdm9pZCBjYWxsKGNvbnN0IERSVERldlRvb2xzQ2FsbEFyZ3MmKTsKKyAgICB2b2lkIGNhbGwo
Y29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFyZ3MpOwogICAgIGNsYXNzIEFzeW5jQ2FsbFRhc2s6
IHB1YmxpYyBNZXRob2RUYXNrPERSVERldlRvb2xzQ2xpZW50PiB7CiAgICAgcHVibGljOgotICAg
ICAgICBBc3luY0NhbGxUYXNrKERSVERldlRvb2xzQ2xpZW50KiBvYmplY3QsIGNvbnN0IERSVERl
dlRvb2xzQ2FsbEFyZ3MmIGFyZ3MpCisgICAgICAgIEFzeW5jQ2FsbFRhc2soRFJURGV2VG9vbHND
bGllbnQqIG9iamVjdCwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFyZ3MpCiAgICAgICAgICAg
ICA6IE1ldGhvZFRhc2s8RFJURGV2VG9vbHNDbGllbnQ+KG9iamVjdCksIG1fYXJncyhhcmdzKSB7
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIHsgbV9vYmplY3QtPmNhbGwobV9h
cmdzKTsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIERSVERldlRvb2xzQ2FsbEFyZ3MgbV9hcmdz
OworICAgICAgICBXZWJLaXQ6OldlYlN0cmluZyBtX2FyZ3M7CiAgICAgfTsKIAogICAgIFRhc2tM
aXN0IG1fdGFza0xpc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83311</attachid>
            <date>2011-02-22 07:30:37 -0800</date>
            <delta_ts>2011-02-22 07:30:37 -0800</delta_ts>
            <desc>the patch I&apos;m going to land.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23515</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3ZjI1MTIyLi43ZjEzY2FlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDIt
MjIgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZmxha3lu
ZXNzIG9mIGluc3BlY3RvciB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU0NzI5CisKKyAgICAgICAgQXMgZmFyIGFzIHdlIGhhdmUgdGhlIHBy
b3RvY29sIHdpdGggc2VxdWVuY2UgbnVtYmVycyB3ZSBjYW4gc2ltcGxpZnkgdGVzdCBoYXJuZXNz
IHN1cHBvcnQKKyAgICAgICAgYW5kIGRyb3Agb3V0IGNob21pdW0gc3BlY2lmaWMgbWV0aG9kcy4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzOgorICAg
ICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5k
aW5nRGlzcGF0Y2hlcyk6CisKIDIwMTEtMDItMjIgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2Fu
Y2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qu
anMKaW5kZXggOTFhZjgwNS4uYjEwMzk1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKQEAgLTEyOSw4ICsxMjksNyBAQCBJbnNw
ZWN0b3JUZXN0LnBhZ2VSZWxvYWRlZCA9IGZ1bmN0aW9uKCkKIEluc3BlY3RvclRlc3QucnVuQWZ0
ZXJQZW5kaW5nRGlzcGF0Y2hlcyA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogewogICAgIGNhbGxiYWNr
ID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjayk7Ci0KLSAgICBXZWJJbnNwZWN0b3Iu
VGVzdENvbnRyb2xsZXIucHJvdG90eXBlLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoY2FsbGJh
Y2spOworICAgIEluc3BlY3RvckJhY2tlbmQucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhjYWxs
YmFjayk7CiB9CiAKIEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZlbnQgPSBmdW5jdGlvbihrZXlJ
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBlY2NkNGIuLjQ2ZGFiZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMiBAQAorMjAxMS0wMi0yMiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBmbGFreW5lc3Mgb2YgaW5zcGVjdG9yIHRlc3RzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ3MjkKKworICAgICAgICBB
cyBmYXIgYXMgd2UgaGF2ZSB0aGUgcHJvdG9jb2wgd2l0aCBzZXF1ZW5jZSBudW1iZXJzIHdlIGNh
biBzaW1wbGlmeSB0ZXN0IGhhcm5lc3Mgc3VwcG9ydAorICAgICAgICBhbmQgZHJvcCBvdXQgY2hv
bWl1bSBzcGVjaWZpYyBtZXRob2RzLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0
b3JJbnNwZWN0b3IucG06CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0Q29udHJv
bGxlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlcik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIucHJvdG90eXBlLm5vdGlmeURvbmUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLnByb3RvdHlwZS5ydW5BZnRlclBlbmRp
bmdEaXNwYXRjaGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5wcm90
b3R5cGUuX2V2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmRpc3BhdGNoKToK
KwogMjAxMS0wMi0yMiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQppbmRleCA2OWRjMDZk
Li44MDZkMzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVy
YXRvckluc3BlY3Rvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVy
YXRvckluc3BlY3Rvci5wbQpAQCAtNzExLDYgKzcxMSw3IEBAICRsaWNlbnNlVGVtcGxhdGUKIElu
c3BlY3RvckJhY2tlbmRTdHViID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuX2xhc3RDYWxsYmFj
a0lkID0gMTsKKyAgICB0aGlzLl9wZW5kaW5nUmVzcG9uc2VzQ291bnQgPSAwOwogICAgIHRoaXMu
X2NhbGxiYWNrcyA9IHt9OwogICAgIHRoaXMuX2RvbWFpbkRpc3BhdGNoZXJzID0ge307CiAkSlNT
dHVicwpAQCAtNzIwLDIyICs3MjEsMTEgQEAgSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBl
ID0gewogICAgIF93cmFwOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHZhciBj
YWxsYmFja0lkID0gdGhpcy5fbGFzdENhbGxiYWNrSWQrKzsKKyAgICAgICAgKyt0aGlzLl9wZW5k
aW5nUmVzcG9uc2VzQ291bnQ7CiAgICAgICAgIHRoaXMuX2NhbGxiYWNrc1tjYWxsYmFja0lkXSA9
IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307CiAgICAgICAgIHJldHVybiBjYWxsYmFja0lkOwog
ICAgIH0sCiAKLSAgICBfcHJvY2Vzc1Jlc3BvbnNlOiBmdW5jdGlvbihjYWxsYmFja0lkLCBhcmdz
KQotICAgIHsKLSAgICAgICAgdmFyIGNhbGxiYWNrID0gdGhpcy5fY2FsbGJhY2tzW2NhbGxiYWNr
SWRdOwotICAgICAgICBjYWxsYmFjay5hcHBseShudWxsLCBhcmdzKTsKLSAgICAgICAgZGVsZXRl
IHRoaXMuX2NhbGxiYWNrc1tjYWxsYmFja0lkXTsKLSAgICB9LAotCi0gICAgX3JlbW92ZVJlc3Bv
bnNlQ2FsbGJhY2tFbnRyeTogZnVuY3Rpb24oY2FsbGJhY2tJZCkKLSAgICB7Ci0gICAgICAgIGRl
bGV0ZSB0aGlzLl9jYWxsYmFja3NbY2FsbGJhY2tJZF07Ci0gICAgfSwKLQogICAgIF9yZWdpc3Rl
ckRlbGVnYXRlOiBmdW5jdGlvbihjb21tYW5kSW5mbykKICAgICB7CiAgICAgICAgIHZhciBjb21t
YW5kT2JqZWN0ID0gSlNPTi5wYXJzZShjb21tYW5kSW5mbyk7CkBAIC03OTksMTEgKzc4OSwxNiBA
QCBJbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKCJzZXEi
IGluIG1lc3NhZ2VPYmplY3QpIHsgLy8ganVzdCBhIHJlc3BvbnNlIGZvciBzb21lIHJlcXVlc3QK
ICAgICAgICAgICAgIGlmIChtZXNzYWdlT2JqZWN0LnN1Y2Nlc3MpCi0gICAgICAgICAgICAgICAg
dGhpcy5fcHJvY2Vzc1Jlc3BvbnNlKG1lc3NhZ2VPYmplY3Quc2VxLCBhcmd1bWVudHMpOwotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUmVzcG9uc2VDYWxs
YmFja0VudHJ5KG1lc3NhZ2VPYmplY3Quc2VxKQorICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxi
YWNrc1ttZXNzYWdlT2JqZWN0LnNlcV0uYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKKyAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICB0aGlzLnJlcG9ydFByb3RvY29sRXJyb3IobWVzc2Fn
ZU9iamVjdCk7Ci0gICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC0tdGhpcy5fcGVuZGluZ1Jl
c3BvbnNlc0NvdW50OworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2NhbGxiYWNrc1ttZXNzYWdl
T2JqZWN0LnNlcV07CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9zY3JpcHRzICYmICF0aGlzLl9w
ZW5kaW5nUmVzcG9uc2VzQ291bnQpCisgICAgICAgICAgICAgICAgdGhpcy5ydW5BZnRlclBlbmRp
bmdEaXNwYXRjaGVzKCk7CisKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC04
MjYsNyArODIxLDIyIEBAIEluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgY29uc29sZS5lcnJvcigiUHJvdG9jb2wgRXJyb3I6IEluc3BlY3RvckJhY2tlbmQgcmVxdWVz
dCB3aXRoIHNlcSA9ICIgKyBtZXNzYWdlT2JqZWN0LnNlcSArICIgZmFpbGVkLiIpOwogICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG1lc3NhZ2VPYmplY3QuZXJyb3JzLmxlbmd0aDsgKytpKQog
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiICAgICIgKyBtZXNzYWdlT2JqZWN0LmVycm9yc1tp
XSk7Ci0gICAgICAgIHRoaXMuX3JlbW92ZVJlc3BvbnNlQ2FsbGJhY2tFbnRyeShtZXNzYWdlT2Jq
ZWN0LnNlcSk7CisgICAgfSwKKworICAgIHJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXM6IGZ1bmN0
aW9uKHNjcmlwdCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fc2NyaXB0cykKKyAgICAgICAg
ICAgIHRoaXMuX3NjcmlwdHMgPSBbXTsKKworICAgICAgICBpZiAoc2NyaXB0KQorICAgICAgICAg
ICAgdGhpcy5fc2NyaXB0cy5wdXNoKHNjcmlwdCk7CisKKyAgICAgICAgaWYgKCF0aGlzLl9wZW5k
aW5nUmVzcG9uc2VzQ291bnQpIHsKKyAgICAgICAgICAgIHZhciBzY3JpcHRzID0gdGhpcy5fc2Ny
aXB0czsKKyAgICAgICAgICAgIHRoaXMuX3NjcmlwdHMgPSBbXQorICAgICAgICAgICAgZm9yICh2
YXIgaWQgPSAwOyBpZCA8IHNjcmlwdHMubGVuZ3RoOyArK2lkKQorICAgICAgICAgICAgICAgICBz
Y3JpcHRzW2lkXS5jYWxsKHRoaXMpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVyLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0Q29udHJvbGxlci5qcwppbmRl
eCAwOTY3MDI3Li5lNjc4M2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanMKQEAgLTI4LDQwICsyOCwyMCBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIgPSBmdW5jdGlvbihj
YWxsSWQpCitXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIgPSBmdW5jdGlvbigpCiB7Ci0gICAg
dGhpcy5fY2FsbElkID0gY2FsbElkOwotICAgIHRoaXMuX3dhaXRVbnRpbERvbmUgPSBmYWxzZTsK
LSAgICB0aGlzLnJlc3VsdHMgPSBbXTsKIH0KIAogV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVy
LnByb3RvdHlwZSA9IHsKLSAgICB3YWl0VW50aWxEb25lOiBmdW5jdGlvbigpCisgICAgbm90aWZ5
RG9uZTogZnVuY3Rpb24oY2FsbElkLCByZXN1bHQpCiAgICAgewotICAgICAgICB0aGlzLl93YWl0
VW50aWxEb25lID0gdHJ1ZTsKLSAgICB9LAotCi0gICAgbm90aWZ5RG9uZTogZnVuY3Rpb24ocmVz
dWx0KQotICAgIHsKLSAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICJ1bmRlZmluZWQiICYm
IHRoaXMucmVzdWx0cy5sZW5ndGgpCi0gICAgICAgICAgICByZXN1bHQgPSB0aGlzLnJlc3VsdHM7
CiAgICAgICAgIHZhciBtZXNzYWdlID0gdHlwZW9mIHJlc3VsdCA9PT0gInVuZGVmaW5lZCIgPyAi
XCI8dW5kZWZpbmVkPlwiIiA6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCk7Ci0gICAgICAgIEluc3Bl
Y3RvckFnZW50LmRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQodGhpcy5fY2FsbElkLCBtZXNz
YWdlKTsKLSAgICB9LAotCi0gICAgcnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlczogZnVuY3Rpb24o
Y2FsbGJhY2spCi0gICAgewotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBlbmRpbmdEaXNwYXRj
aGVzID09PSAwKSB7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIHNldFRpbWVvdXQodGhpcy5ydW5BZnRlclBlbmRpbmdEaXNw
YXRjaGVzLmJpbmQodGhpcyksIDAsIGNhbGxiYWNrKTsKKyAgICAgICAgSW5zcGVjdG9yQWdlbnQu
ZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChjYWxsSWQsIG1lc3NhZ2UpOwogICAgIH0KIH0K
IAogV2ViSW5zcGVjdG9yLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQgPSBmdW5jdGlvbihjYWxs
SWQsIHNjcmlwdCkKIHsKLSAgICB2YXIgY29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGVz
dENvbnRyb2xsZXIoY2FsbElkKTsKICAgICBmdW5jdGlvbiBpbnZva2VNZXRob2QoKQogICAgIHsK
ICAgICAgICAgdHJ5IHsKQEAgLTcxLDExICs1MSwxMCBAQCBXZWJJbnNwZWN0b3IuZXZhbHVhdGVG
b3JUZXN0SW5Gcm9udGVuZCA9IGZ1bmN0aW9uKGNhbGxJZCwgc2NyaXB0KQogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHdpbmRvdy5ldmFsKHNjcmlwdCk7CiAKLSAg
ICAgICAgICAgIGlmICghY29udHJvbGxlci5fd2FpdFVudGlsRG9uZSkKLSAgICAgICAgICAgICAg
ICBjb250cm9sbGVyLm5vdGlmeURvbmUocmVzdWx0KTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5UZXN0Q29udHJvbGxlci5wcm90b3R5cGUubm90aWZ5RG9uZShjYWxsSWQsIHJlc3VsdCk7CiAg
ICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIGNvbnRyb2xsZXIubm90aWZ5RG9uZShl
LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnRlc3RDb250cm9sbGVyLnBy
b3RvdHlwZS5ub3RpZnlEb25lKGNhbGxJZCwgZS50b1N0cmluZygpKTsKICAgICAgICAgfQogICAg
IH0KLSAgICBjb250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoaW52b2tlTWV0aG9k
KTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoaW52b2tl
TWV0aG9kKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMKaW5kZXggMTZhYWUxZS4uNGViOWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTU5MiwxMyArNTkyLDcgQEAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCB3aW5kb3dMb2FkZWQsIGZh
bHNlKTsKIFdlYkluc3BlY3Rvci5kaXNwYXRjaCA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHsKICAgICAv
LyBXZSdkIGxpa2UgdG8gZW5mb3JjZSBhc3luY2hyb25vdXMgaW50ZXJhY3Rpb24gYmV0d2VlbiB0
aGUgaW5zcGVjdG9yIGNvbnRyb2xsZXIgYW5kIHRoZSBmcm9udGVuZC4KICAgICAvLyBUaGlzIGlz
IGltcG9ydGFudCB0byBMYXlvdXRUZXN0cy4KLSAgICBmdW5jdGlvbiBkZWxheURpc3BhdGNoKCkK
LSAgICB7Ci0gICAgICAgIEluc3BlY3RvckJhY2tlbmQuZGlzcGF0Y2gobWVzc2FnZSk7Ci0gICAg
ICAgIFdlYkluc3BlY3Rvci5wZW5kaW5nRGlzcGF0Y2hlcy0tOwotICAgIH0KLSAgICBXZWJJbnNw
ZWN0b3IucGVuZGluZ0Rpc3BhdGNoZXMrKzsKLSAgICBzZXRUaW1lb3V0KGRlbGF5RGlzcGF0Y2gs
IDApOworICAgIHNldFRpbWVvdXQoSW5zcGVjdG9yQmFja2VuZC5kaXNwYXRjaC5iaW5kKEluc3Bl
Y3RvckJhY2tlbmQpLCAwLCBtZXNzYWdlKTsKIH0KIAogV2ViSW5zcGVjdG9yLmRpc3BhdGNoTWVz
c2FnZUZyb21CYWNrZW5kID0gZnVuY3Rpb24obWVzc2FnZU9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggMDBjOGE0NC4uYTFkNDJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMi0yMiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNs
b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBmbGFreW5lc3Mgb2YgaW5zcGVjdG9yIHRlc3RzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ3MjkKKworICAg
ICAgICBBcyBmYXIgYXMgd2UgaGF2ZSB0aGUgcHJvdG9jb2wgd2l0aCBzZXF1ZW5jZSBudW1iZXJz
IHdlIGNhbiBzaW1wbGlmeSB0ZXN0IGhhcm5lc3Mgc3VwcG9ydAorICAgICAgICBhbmQgZHJvcCBv
dXQgY2hvbWl1bSBzcGVjaWZpYyBtZXRob2RzLgorCisgICAgICAgICogc3JjL2pzL0RldlRvb2xz
LmpzOgorCiAyMDExLTAyLTIxICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCmluZGV4IDNkNjFiZTcuLjAzYzcyZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCkBAIC0xMzAsMjYgKzEzMCw2
IEBAIFdlYkluc3BlY3Rvci5vcGVuTGlua0V4dGVybmFsbHlMYWJlbCA9IGZ1bmN0aW9uKCkKIAog
CiAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIENocm9t
aXVtIGxheW91dCB0ZXN0IGhhcm5lc3Mgc3VwcG9ydC4gLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotV2ViSW5zcGVjdG9yLnJ1bkFmdGVyUGVuZGluZ0Rp
c3BhdGNoZXNRdWV1ZSA9IFtdOwotCi1XZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIucHJvdG90
eXBlLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAg
ICBXZWJJbnNwZWN0b3IucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlc1F1ZXVlLnB1c2goY2FsbGJh
Y2spOwotfTsKLQotV2ViSW5zcGVjdG9yLnF1ZXVlc0FyZUVtcHR5ID0gZnVuY3Rpb24oKQotewot
ICAgIHZhciBjb3B5ID0gdGhpcy5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzUXVldWUuc2xpY2Uo
KTsKLSAgICB0aGlzLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXNRdWV1ZSA9IFtdOwotICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY29weS5sZW5ndGg7ICsraSkKLSAgICAgICAgY29weVtpXS5jYWxs
KHRoaXMpOwotfTsKLQotCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gQ2hyb21p
dW0gdGhlbWUgc3VwcG9ydC4gLy8KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTM1YzA4NS4u
YjI3NTU5MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI4IEBACisyMDExLTAyLTIyICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xv
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IGZsYWt5bmVzcyBvZiBpbnNwZWN0b3IgdGVzdHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDcyOQorCisgICAg
ICAgIEFzIGZhciBhcyB3ZSBoYXZlIHRoZSBwcm90b2NvbCB3aXRoIHNlcXVlbmNlIG51bWJlcnMg
d2UgY2FuIHNpbXBsaWZ5IHRlc3QgaGFybmVzcyBzdXBwb3J0CisgICAgICAgIGFuZCBkcm9wIG91
dCBjaG9taXVtIHNwZWNpZmljIG1ldGhvZHMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RS
VERldlRvb2xzQWdlbnQuY3BwOgorICAgICAgICAoRFJURGV2VG9vbHNBZ2VudDo6c2VuZE1lc3Nh
Z2VUb0luc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKERSVERldlRvb2xzQWdlbnQ6OnJ1bnRp
bWVQcm9wZXJ0eUNoYW5nZWQpOgorICAgICAgICAoRFJURGV2VG9vbHNBZ2VudDo6YXN5bmNDYWxs
KToKKyAgICAgICAgKERSVERldlRvb2xzQWdlbnQ6OmNhbGwpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NhbGxBcmdzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NhbGxBcmdzLmg6IFJlbW92ZWQu
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuY3Bw
OgorICAgICAgICAoRFJURGV2VG9vbHNDbGllbnQ6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAg
ICAgICAgKERSVERldlRvb2xzQ2xpZW50Ojphc3luY0NhbGwpOgorICAgICAgICAoRFJURGV2VG9v
bHNDbGllbnQ6OmNhbGwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERl
dlRvb2xzQ2xpZW50Lmg6CisKIDIwMTEtMDItMjIgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCAzZDIxYmU3Li5hM2YwNTIwIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTExLDggKzExLDYgQEAK
ICAgICAgICAgICAgICdjaHJvbWl1bS9DcHBWYXJpYW50LmgnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL0RSVERldlRvb2xzQWdlbnQuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9EUlREZXZU
b29sc0FnZW50LmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL0RSVERldlRvb2xzQ2FsbEFyZ3Mu
Y3BwJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9EUlREZXZUb29sc0NhbGxBcmdzLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmNwcCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vRHVt
cFJlbmRlclRyZWUuY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0RSVERldlRvb2xzQWdlbnQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RFJURGV2VG9vbHNBZ2VudC5jcHAKaW5kZXggNzhjODZlNy4uNzZhYTc4MSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5jcHAKQEAgLTMx
LDEyICszMSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRSVERldlRvb2xz
QWdlbnQuaCIKIAotI2luY2x1ZGUgIkRSVERldlRvb2xzQ2FsbEFyZ3MuaCIKICNpbmNsdWRlICJE
UlREZXZUb29sc0NsaWVudC5oIgogCiAjaW5jbHVkZSAiV2ViQ1N0cmluZy5oIgogI2luY2x1ZGUg
IldlYkRldlRvb2xzQWdlbnQuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJX
ZWJWaWV3LmgiCiAjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKIApA
QCAtNjMsMTMgKzYxLDEzIEBAIHZvaWQgRFJURGV2VG9vbHNBZ2VudDo6c2V0V2ViVmlldyhXZWJW
aWV3KiB3ZWJWaWV3KQogICAgIG1fd2ViVmlldyA9IHdlYlZpZXc7CiB9CiAKLXZvaWQgRFJURGV2
VG9vbHNBZ2VudDo6c2VuZE1lc3NhZ2VUb0luc3BlY3RvckZyb250ZW5kKGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJiBkYXRhKQordm9pZCBEUlREZXZUb29sc0FnZW50OjpzZW5kTWVzc2FnZVRvSW5z
cGVjdG9yRnJvbnRlbmQoY29uc3QgV2ViU3RyaW5nJiBkYXRhKQogewogICAgIGlmIChtX2RydERl
dlRvb2xzQ2xpZW50KQotICAgICAgICAgbV9kcnREZXZUb29sc0NsaWVudC0+YXN5bmNDYWxsKERS
VERldlRvb2xzQ2FsbEFyZ3MoZGF0YSkpOworICAgICAgICAgbV9kcnREZXZUb29sc0NsaWVudC0+
YXN5bmNDYWxsKGRhdGEpOwogfQogCi12b2lkIERSVERldlRvb2xzQWdlbnQ6OnJ1bnRpbWVQcm9w
ZXJ0eUNoYW5nZWQoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgRFJURGV2VG9vbHNBZ2VudDo6cnVudGltZVByb3BlcnR5
Q2hhbmdlZChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpCiB7
CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KIH0KQEAgLTg0LDE4ICs4MiwxNiBAQCBXZWJEZXZU
b29sc0FnZW50Q2xpZW50OjpXZWJLaXRDbGllbnRNZXNzYWdlTG9vcCogRFJURGV2VG9vbHNBZ2Vu
dDo6Y3JlYXRlQ2xpZW50TQogICAgIHJldHVybiB3ZWJraXRfc3VwcG9ydDo6Q3JlYXRlRGV2VG9v
bHNNZXNzYWdlTG9vcCgpOwogfQogCi12b2lkIERSVERldlRvb2xzQWdlbnQ6OmFzeW5jQ2FsbChj
b25zdCBEUlREZXZUb29sc0NhbGxBcmdzJiBhcmdzKQordm9pZCBEUlREZXZUb29sc0FnZW50Ojph
c3luY0NhbGwoY29uc3QgV2ViU3RyaW5nJiBhcmdzKQogewogICAgIHBvc3RUYXNrKG5ldyBBc3lu
Y0NhbGxUYXNrKHRoaXMsIGFyZ3MpKTsKIH0KIAotdm9pZCBEUlREZXZUb29sc0FnZW50OjpjYWxs
KGNvbnN0IERSVERldlRvb2xzQ2FsbEFyZ3MgJmFyZ3MpCit2b2lkIERSVERldlRvb2xzQWdlbnQ6
OmNhbGwoY29uc3QgV2ViU3RyaW5nJiBhcmdzKQogewogICAgIFdlYkRldlRvb2xzQWdlbnQqIGFn
ZW50ID0gd2ViRGV2VG9vbHNBZ2VudCgpOwogICAgIGlmIChhZ2VudCkKLSAgICAgICAgYWdlbnQt
PmRpc3BhdGNoT25JbnNwZWN0b3JCYWNrZW5kKGFyZ3MubV9kYXRhKTsKLSAgICBpZiAoRFJURGV2
VG9vbHNDYWxsQXJnczo6Y2FsbHNDb3VudCgpID09IDEgJiYgbV9kcnREZXZUb29sc0NsaWVudCkK
LSAgICAgICAgbV9kcnREZXZUb29sc0NsaWVudC0+YWxsTWVzc2FnZXNQcm9jZXNzZWQoKTsKKyAg
ICAgICAgYWdlbnQtPmRpc3BhdGNoT25JbnNwZWN0b3JCYWNrZW5kKGFyZ3MpOwogfQogCiB2b2lk
IERSVERldlRvb2xzQWdlbnQ6OmRlbGF5ZWRGcm9udGVuZExvYWRlZCgpCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmgKaW5kZXggNjY1NDM1Yy4u
NGNiYzhiYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2
VG9vbHNBZ2VudC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRv
b2xzQWdlbnQuaApAQCAtMzEsOSArMzEsOSBAQAogI2lmbmRlZiBEUlREZXZUb29sc0FnZW50X2gK
ICNkZWZpbmUgRFJURGV2VG9vbHNBZ2VudF9oCiAKLSNpbmNsdWRlICJEUlREZXZUb29sc0NhbGxB
cmdzLmgiCiAjaW5jbHVkZSAiVGFzay5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC00MSw3ICs0MSw2IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJDU3RyaW5nOwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudDsK
LWNsYXNzIFdlYlN0cmluZzsKIGNsYXNzIFdlYlZpZXc7CiBzdHJ1Y3QgV2ViRGV2VG9vbHNNZXNz
YWdlRGF0YTsKIApAQCAtNjUsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJLaXQ6
OldlYkNTdHJpbmcgZGVidWdnZXJTY3JpcHRTb3VyY2UoKTsKICAgICB2aXJ0dWFsIFdlYktpdENs
aWVudE1lc3NhZ2VMb29wKiBjcmVhdGVDbGllbnRNZXNzYWdlTG9vcCgpOwogCi0gICAgdm9pZCBh
c3luY0NhbGwoY29uc3QgRFJURGV2VG9vbHNDYWxsQXJncyYpOworICAgIHZvaWQgYXN5bmNDYWxs
KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBhcmdzKTsKIAogICAgIHZvaWQgYXR0YWNoKERSVERl
dlRvb2xzQ2xpZW50Kik7CiAgICAgdm9pZCBkZXRhY2goKTsKQEAgLTc2LDE4ICs3NSwxOCBAQCBw
dWJsaWM6CiAgICAgVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0K
IAogcHJpdmF0ZToKLSAgICB2b2lkIGNhbGwoY29uc3QgRFJURGV2VG9vbHNDYWxsQXJncyYpOwor
ICAgIHZvaWQgY2FsbChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgYXJncyk7CiAgICAgdm9pZCBk
ZWxheWVkRnJvbnRlbmRMb2FkZWQoKTsKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaE1lc3NhZ2VM
b29wKCk7CiAgICAgV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50KiB3ZWJEZXZUb29sc0FnZW50KCk7
CiAKICAgICBjbGFzcyBBc3luY0NhbGxUYXNrOiBwdWJsaWMgTWV0aG9kVGFzazxEUlREZXZUb29s
c0FnZW50PiB7CiAgICAgcHVibGljOgotICAgICAgICBBc3luY0NhbGxUYXNrKERSVERldlRvb2xz
QWdlbnQqIG9iamVjdCwgY29uc3QgRFJURGV2VG9vbHNDYWxsQXJncyYgYXJncykKKyAgICAgICAg
QXN5bmNDYWxsVGFzayhEUlREZXZUb29sc0FnZW50KiBvYmplY3QsIGNvbnN0IFdlYktpdDo6V2Vi
U3RyaW5nJiBhcmdzKQogICAgICAgICAgICAgOiBNZXRob2RUYXNrPERSVERldlRvb2xzQWdlbnQ+
KG9iamVjdCksIG1fYXJncyhhcmdzKSB7fQogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxp
ZCgpIHsgbV9vYmplY3QtPmNhbGwobV9hcmdzKTsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIERS
VERldlRvb2xzQ2FsbEFyZ3MgbV9hcmdzOworICAgICAgICBXZWJLaXQ6OldlYlN0cmluZyBtX2Fy
Z3M7CiAgICAgfTsKIAogICAgIHN0cnVjdCBEZWxheWVkRnJvbnRlbmRMb2FkZWRUYXNrOiBwdWJs
aWMgTWV0aG9kVGFzazxEUlREZXZUb29sc0FnZW50PiB7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NhbGxBcmdzLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2FsbEFyZ3MuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkYWNkNmY3Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2FsbEFyZ3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEUlREZXZUb29sc0NhbGxB
cmdzLmgiCi0KLS8vIHN0YXRpYwotaW50IERSVERldlRvb2xzQ2FsbEFyZ3M6Om1fY2FsbHNDb3Vu
dCA9IDA7Ci0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERl
dlRvb2xzQ2FsbEFyZ3MuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRv
b2xzQ2FsbEFyZ3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTU0ODE1OS4uMDAw
MDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NhbGxB
cmdzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBEUlREZXZUb29sc0Nh
bGxBcmdzX2gKLSNkZWZpbmUgRFJURGV2VG9vbHNDYWxsQXJnc19oCi0KLSNpbmNsdWRlICJXZWJT
dHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi1jbGFzcyBEUlREZXZUb29s
c0NhbGxBcmdzIHsKLXB1YmxpYzoKLSAgICBEUlREZXZUb29sc0NhbGxBcmdzKGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJiBkYXRhKQotICAgICAgICA6IG1fZGF0YShkYXRhKQotICAgIHsKLSAgICAg
ICAgKyttX2NhbGxzQ291bnQ7Ci0gICAgfQotCi0gICAgRFJURGV2VG9vbHNDYWxsQXJncyhjb25z
dCBEUlREZXZUb29sc0NhbGxBcmdzJiBhcmdzKQotICAgICAgICA6IG1fZGF0YShhcmdzLm1fZGF0
YSkKLSAgICB7Ci0gICAgICAgICsrbV9jYWxsc0NvdW50OwotICAgIH0KLQotICAgIH5EUlREZXZU
b29sc0NhbGxBcmdzKCkKLSAgICB7Ci0gICAgICAgIC0tbV9jYWxsc0NvdW50OwotICAgICAgICBB
U1NFUlQobV9jYWxsc0NvdW50ID49IDApOwotICAgIH0KLQotICAgIHN0YXRpYyBpbnQgY2FsbHND
b3VudCgpIHsgcmV0dXJuIG1fY2FsbHNDb3VudDsgfQotCi0gICAgV2ViS2l0OjpXZWJTdHJpbmcg
bV9kYXRhOwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBpbnQgbV9jYWxsc0NvdW50OwotfTsKLQot
I2VuZGlmIC8vIERSVERldlRvb2xzQ2FsbEFyZ3NfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuY3BwCmluZGV4IGFjY2NmMTguLjI3ZjAw
OTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xz
Q2xpZW50LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29s
c0NsaWVudC5jcHAKQEAgLTMyLDEzICszMiwxMSBAQAogI2luY2x1ZGUgIkRSVERldlRvb2xzQ2xp
ZW50LmgiCiAKICNpbmNsdWRlICJEUlREZXZUb29sc0FnZW50LmgiCi0jaW5jbHVkZSAiRFJURGV2
VG9vbHNDYWxsQXJncy5oIgogCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudC5oIgogI2luY2x1
ZGUgIldlYkRldlRvb2xzRnJvbnRlbmQuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1
ZGUgIldlYlNjcmlwdFNvdXJjZS5oIgotI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUg
IldlYlZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgog
CkBAIC03Niw3ICs3NCw3IEBAIHZvaWQgRFJURGV2VG9vbHNDbGllbnQ6OnNlbmRGcm9udGVuZExv
YWRlZCgpIHsKIHZvaWQgRFJURGV2VG9vbHNDbGllbnQ6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNv
bnN0IFdlYlN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAobV9kcnREZXZUb29sc0FnZW50KQotICAg
ICAgICBtX2RydERldlRvb2xzQWdlbnQtPmFzeW5jQ2FsbChEUlREZXZUb29sc0NhbGxBcmdzKGRh
dGEpKTsKKyAgICAgICAgbV9kcnREZXZUb29sc0FnZW50LT5hc3luY0NhbGwoZGF0YSk7CiB9CiAK
IHZvaWQgRFJURGV2VG9vbHNDbGllbnQ6OnNlbmREZWJ1Z2dlckNvbW1hbmRUb0FnZW50KGNvbnN0
IFdlYlN0cmluZyYgY29tbWFuZCkKQEAgLTEwNCwyMSArMTAyLDEzIEBAIHZvaWQgRFJURGV2VG9v
bHNDbGllbnQ6OnVuZG9ja1dpbmRvdygpCiAgICAgLy8gTm90IGltcGxlbWVudGVkLgogfQogCi12
b2lkIERSVERldlRvb2xzQ2xpZW50Ojphc3luY0NhbGwoY29uc3QgRFJURGV2VG9vbHNDYWxsQXJn
cyYgYXJncykKK3ZvaWQgRFJURGV2VG9vbHNDbGllbnQ6OmFzeW5jQ2FsbChjb25zdCBXZWJTdHJp
bmcmIGFyZ3MpCiB7CiAgICAgcG9zdFRhc2sobmV3IEFzeW5jQ2FsbFRhc2sodGhpcywgYXJncykp
OwogfQogCi12b2lkIERSVERldlRvb2xzQ2xpZW50OjpjYWxsKGNvbnN0IERSVERldlRvb2xzQ2Fs
bEFyZ3MmIGFyZ3MpCit2b2lkIERSVERldlRvb2xzQ2xpZW50OjpjYWxsKGNvbnN0IFdlYlN0cmlu
ZyYgYXJncykKIHsKLSAgICBtX3dlYkRldlRvb2xzRnJvbnRlbmQtPmRpc3BhdGNoT25JbnNwZWN0
b3JGcm9udGVuZChhcmdzLm1fZGF0YSk7Ci0gICAgaWYgKERSVERldlRvb2xzQ2FsbEFyZ3M6OmNh
bGxzQ291bnQoKSA9PSAxKQotICAgICAgICBhbGxNZXNzYWdlc1Byb2Nlc3NlZCgpOworICAgIG1f
d2ViRGV2VG9vbHNGcm9udGVuZC0+ZGlzcGF0Y2hPbkluc3BlY3RvckZyb250ZW5kKGFyZ3MpOwog
fQogCi12b2lkIERSVERldlRvb2xzQ2xpZW50OjphbGxNZXNzYWdlc1Byb2Nlc3NlZCgpCi17Ci0g
ICAgbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZXhlY3V0ZVNjcmlwdCgKLSAgICAgICAgV2ViS2l0
OjpXZWJTY3JpcHRTb3VyY2UoV2ViU3RyaW5nOjpmcm9tVVRGOCgKLSAgICAgICAgICAgICJpZiAo
d2luZG93LldlYkluc3BlY3RvciAmJiBXZWJJbnNwZWN0b3IucXVldWVzQXJlRW1wdHkpIFdlYklu
c3BlY3Rvci5xdWV1ZXNBcmVFbXB0eSgpOyIpKSk7Ci19CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuaAppbmRleCAwY2JhNTFjLi44YTkzZWUw
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0Ns
aWVudC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xp
ZW50LmgKQEAgLTMxLDE3ICszMSwxNSBAQAogI2lmbmRlZiBEUlREZXZUb29sc0NsaWVudF9oCiAj
ZGVmaW5lIERSVERldlRvb2xzQ2xpZW50X2gKIAotI2luY2x1ZGUgIkRSVERldlRvb2xzQ2FsbEFy
Z3MuaCIKICNpbmNsdWRlICJUYXNrLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNGcm9udGVuZENs
aWVudC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYkRldlRvb2xzRnJvbnRlbmQ7CiBzdHJ1Y3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YTsK
LWNsYXNzIFdlYlN0cmluZzsKIGNsYXNzIFdlYlZpZXc7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApAQCAtNjUsMjAgKzYzLDIwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZG9ja1dpbmRv
dygpOwogICAgIHZpcnR1YWwgdm9pZCB1bmRvY2tXaW5kb3coKTsKIAotICAgIHZvaWQgYXN5bmND
YWxsKGNvbnN0IERSVERldlRvb2xzQ2FsbEFyZ3MmKTsKKyAgICB2b2lkIGFzeW5jQ2FsbChjb25z
dCBXZWJLaXQ6OldlYlN0cmluZyYgYXJncyk7CiAKICAgICB2b2lkIGFsbE1lc3NhZ2VzUHJvY2Vz
c2VkKCk7CiAgICAgVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0K
IAogIHByaXZhdGU6Ci0gICAgdm9pZCBjYWxsKGNvbnN0IERSVERldlRvb2xzQ2FsbEFyZ3MmKTsK
KyAgICB2b2lkIGNhbGwoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFyZ3MpOwogICAgIGNsYXNz
IEFzeW5jQ2FsbFRhc2s6IHB1YmxpYyBNZXRob2RUYXNrPERSVERldlRvb2xzQ2xpZW50PiB7CiAg
ICAgcHVibGljOgotICAgICAgICBBc3luY0NhbGxUYXNrKERSVERldlRvb2xzQ2xpZW50KiBvYmpl
Y3QsIGNvbnN0IERSVERldlRvb2xzQ2FsbEFyZ3MmIGFyZ3MpCisgICAgICAgIEFzeW5jQ2FsbFRh
c2soRFJURGV2VG9vbHNDbGllbnQqIG9iamVjdCwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGFy
Z3MpCiAgICAgICAgICAgICA6IE1ldGhvZFRhc2s8RFJURGV2VG9vbHNDbGllbnQ+KG9iamVjdCks
IG1fYXJncyhhcmdzKSB7fQogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIHsgbV9v
YmplY3QtPmNhbGwobV9hcmdzKTsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIERSVERldlRvb2xz
Q2FsbEFyZ3MgbV9hcmdzOworICAgICAgICBXZWJLaXQ6OldlYlN0cmluZyBtX2FyZ3M7CiAgICAg
fTsKIAogICAgIFRhc2tMaXN0IG1fdGFza0xpc3Q7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>