<?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>212685</bug_id>
          
          <creation_ts>2020-06-02 22:25:17 -0700</creation_ts>
          <short_desc>dataTransfer.types is empty when handling the &quot;dragstart&quot; event</short_desc>
          <delta_ts>2020-06-03 12:41:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1658623</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-06-02 22:25:17 -0700</bug_when>
    <thetext>In Chrome and Firefox, the types (and their data) are accessible during dragstart.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658624</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-06-02 22:25:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/61368402&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658631</commentid>
    <comment_count>2</comment_count>
      <attachid>400900</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-06-02 23:10:53 -0700</bug_when>
    <thetext>Created attachment 400900
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658767</commentid>
    <comment_count>3</comment_count>
      <attachid>400900</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2020-06-03 10:16:53 -0700</bug_when>
    <thetext>Comment on attachment 400900
For EWS

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

&gt; Source/WebCore/platform/StaticPasteboard.cpp:104
&gt; +    m_customData.writeString(&quot;text/html&quot;, markup);

Could append _s to the string literal.

&gt; Source/WebCore/platform/StaticPasteboard.cpp:109
&gt; +    m_customData.writeString(&quot;text/plain&quot;, text);

Ditto.

&gt; Source/WebCore/platform/StaticPasteboard.cpp:114
&gt; +    m_customData.writeString(&quot;text/uri-list&quot;, url.url.string());

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658816</commentid>
    <comment_count>4</comment_count>
      <attachid>400900</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-06-03 11:43:39 -0700</bug_when>
    <thetext>Comment on attachment 400900
For EWS

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

&gt;&gt; Source/WebCore/platform/StaticPasteboard.cpp:104
&gt;&gt; +    m_customData.writeString(&quot;text/html&quot;, markup);
&gt; 
&gt; Could append _s to the string literal.

Done!

&gt;&gt; Source/WebCore/platform/StaticPasteboard.cpp:109
&gt;&gt; +    m_customData.writeString(&quot;text/plain&quot;, text);
&gt; 
&gt; Ditto.

👍🏻

&gt;&gt; Source/WebCore/platform/StaticPasteboard.cpp:114
&gt;&gt; +    m_customData.writeString(&quot;text/uri-list&quot;, url.url.string());
&gt; 
&gt; Ditto.

👍🏻</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658818</commentid>
    <comment_count>5</comment_count>
      <attachid>400950</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-06-03 11:44:21 -0700</bug_when>
    <thetext>Created attachment 400950
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658840</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-03 12:41:54 -0700</bug_when>
    <thetext>Committed r262507: &lt;https://trac.webkit.org/changeset/262507&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400950.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400900</attachid>
            <date>2020-06-02 23:10:53 -0700</date>
            <delta_ts>2020-06-03 10:16:53 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-212685-20200602231053.patch</filename>
            <type>text/plain</type>
            <size>52470</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJkNjUwZjNhOThjZWUy
ZDEyOTcyZTkzMjU5YWY0ZThhM2MwMjllZC4uYmJmYWYxMDEzNzFhYjAyODU5YzFmYTJkOTRmM2E2
NzUwNzc3ZjIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMC0wNi0wMiAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBkYXRhVHJhbnNm
ZXIudHlwZXMgaXMgZW1wdHkgd2hlbiBoYW5kbGluZyB0aGUgImRyYWdzdGFydCIgZXZlbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjY4NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjEzNjg0MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBzZXZlcmFsIGN1cnJlbnRseSBzdHVi
YmVkIG1ldGhvZHMgb24gU3RhdGljUGFzdGVib2FyZCwgc28gdGhhdCB0aGUgRGF0YVRyYW5zZmVy
IHByb3ZpZGVkIHRvIHRoZSBwYWdlCisgICAgICAgIG9uIHRoZSAiZHJhZ3N0YXJ0IiBldmVudCBj
b250YWlucyB0aGUgRE9NLWV4cG9zZWQgZGF0YSB0eXBlcyB0aGF0IHdpbGwgYmUgd3JpdHRlbiB0
byB0aGUgc3lzdGVtIHBhc3RlYm9hcmQuIFRoaXMKKyAgICAgICAgaW5jbHVkZXMgInRleHQvaHRt
bCIsICJ0ZXh0L3BsYWluIiwgYW5kICJ0ZXh0L3VyaS1saXN0Ii4KKworICAgICAgICBUZXN0czog
IERyYWdBbmREcm9wVGVzdHMuRGF0YVRyYW5zZmVyVHlwZXNPbkRyYWdTdGFydEZvclRleHRTZWxl
Y3Rpb24KKyAgICAgICAgICAgICAgICBEcmFnQW5kRHJvcFRlc3RzLkRhdGFUcmFuc2ZlclR5cGVz
T25EcmFnU3RhcnRGb3JJbWFnZQorICAgICAgICAgICAgICAgIERyYWdBbmREcm9wVGVzdHMuRGF0
YVRyYW5zZmVyVHlwZXNPbkRyYWdTdGFydEZvckxpbmsKKworICAgICAgICAuLi5hcyB3ZWxsIGFz
IHNldmVyYWwgZXhpc3RpbmcgdGVzdHMgaW4gRHJhZ0FuZERyb3BUZXN0c0lPUy5tbSB0aGF0IGF0
dGVtcHQgdG8gc2V0IHBhc3RlYm9hcmQgZGF0YSBkdXJpbmcgdGhlCisgICAgICAgIGRyYWdzdGFy
dCBldmVudDoKKworICAgICAgICAgICAgICAgIERyYWdBbmREcm9wVGVzdHMuRGF0YVRyYW5zZmVy
U2FuaXRpemVIVE1MCisgICAgICAgICAgICAgICAgRHJhZ0FuZERyb3BUZXN0cy5EYXRhVHJhbnNm
ZXJTZXREYXRhQ2Fubm90V3JpdGVQbGF0Zm9ybVR5cGVzCisgICAgICAgICAgICAgICAgRHJhZ0Fu
ZERyb3BUZXN0cy5EYXRhVHJhbnNmZXJTZXREYXRhSW52YWxpZFVSTAorICAgICAgICAgICAgICAg
IERyYWdBbmREcm9wVGVzdHMuRGF0YVRyYW5zZmVyU2V0RGF0YVVuZXNjYXBlZFVSTAorICAgICAg
ICAgICAgICAgIERyYWdBbmREcm9wVGVzdHMuRGF0YVRyYW5zZmVyU2V0RGF0YVZhbGlkVVJMCisK
KyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6Y29tbWl0VG9QYXN0ZWJvYXJkKToKKworICAgICAgICBPbmx5IGNvbW1pdCBkYXRh
IHRvIHRoZSBuYXRpdmUgcGFzdGVib2FyZCBpZiB0aGUgcGFnZSBhY3R1YWxseSB0cmllZCB0byB3
cml0ZSBvciBtb2RpZnkgdGhlIGRhdGEuIFRoaXMgYWxsb3dzIHVzCisgICAgICAgIHRvIHByZXNl
cnZlIGV4aXN0aW5nIGJlaGF2aW9yIGJ5IGFsbG93aW5nIERyYWdDb250cm9sbGVyIHRvIHdyaXRl
IGRyYWdnZWQgZGF0YSB0byB0aGUgcGFzdGVib2FyZCBub3JtYWxseSBpbiB0aGUKKyAgICAgICAg
Y2FzZSB3aGVyZSB0aGUgcGFnZSBkaWRuJ3Qgc3BlY2lmeSBhbnkgY3VzdG9tIGRhdGEuIEluIHRo
ZSBjYXNlIHdoZXJlIHRoZSBwYWdlIGRvZXMgc3BlY2lmeSBjdXN0b20gZGF0YSwgd2Ugd2lsbAor
ICAgICAgICB3cml0ZSB0aGlzIGN1c3RvbSBkYXRhICppbiBhZGRpdGlvbiogdG8gYW55IGRlZmF1
bHQgZGF0YSB0aGF0IHdhcyB3cml0dGVuIHRvIHRoZSBzdGF0aWMgcGFzdGVib2FyZC4gV2hpbGUg
dGhpcworICAgICAgICBpcyBhIGRlcGFydHVyZSBmcm9tIG91ciBjdXJyZW50IGJlaGF2aW9yICh3
aGljaCBpcyB0byB0cmVhdCB0aGUgcGFzdGVib2FyZCBhcyBhIGJsYW5rIHNsYXRlIHRoYXQgY29u
dGFpbnMgb25seQorICAgICAgICB3aGF0ZXZlciBjdXN0b20gZGF0YSB3YXMgcHJvdmlkZWQgYnkg
dGhlIHBhZ2UpLCBpdCBtYXRjaGVzIGJlaGF2aW9yIGluIGJvdGggQ2hyb21lIGFuZCBGaXJlZm94
LCBhbmQgaXMgbGlrZWx5CisgICAgICAgIG1vcmUgY29tcGF0aWJsZSB3aXRoIHdlYnBhZ2VzIHRo
YXQgZG9uJ3QgaGF2ZSBVQS1zcGVjaWZpYyBsb2dpYyB0YXJnZXRpbmcgV2ViS2l0LgorCisgICAg
ICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorCisgICAgICAgIEF2b2lkIGNhbGxp
bmcgaW50byB0aGUgaW5qZWN0ZWQgYnVuZGxlIChhcyB3ZWxsIGFzIHdyaXRpbmcgYSBmZXcgcGFy
dGljdWxhciBub24td2ViLWV4cG9zZWQgdHlwZXMsIHN1Y2ggYXMgd2ViCisgICAgICAgIGFyY2hp
dmUgZGF0YSkgaW4gdGhlIGNhc2Ugd2hlcmUgd2UncmUgd3JpdGluZyB0byBhIHN0YXRpYyBwYXN0
ZWJvYXJkICh0aGVyZSdzIG5vIHBvaW50IGluIGRvaW5nIHRoaXMgZm9yIHRoZQorICAgICAgICBz
dGF0aWMgcGFzdGVib2FyZCwgYW5kIGluIHRoZSB3b3JzdCBjYXNlLCBpdCBjb3VsZCBjb25mdXNl
IHNvbWUgaW50ZXJuYWwgY2xpZW50cykuCisKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQp
OiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQpOgorCisgICAgICAgIERpdHRv
LiBCdXQgYWRkaXRpb25hbGx5LCBpbnRyb2R1Y2UgYSBtYXJrdXAgc3RyaW5nIHRvIFBhc3RlYm9h
cmRJbWFnZSwgc28gdGhhdCB3ZSB3aWxsIGV4cG9zZSB0aGUgInRleHQvaHRtbCIKKyAgICAgICAg
dHlwZSB3aGVuIHN0YXJ0aW5nIGEgZHJhZyBvbiBhbiBpbWFnZSBlbGVtZW50LgorCisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6c3RhcnREcmFnKToKKworICAgICAgICBPbmx5IGF0dGVtcHQgdG8gY2FsbCBpbnRvIGBQ
YXN0ZWJvYXJkOjp3cml0ZVRydXN0d29ydGh5V2ViVVJMc1Bib2FyZFR5cGVgIGluIHRoZSBjYXNl
IHdoZXJlIHRoZSBwYXN0ZWJvYXJkCisgICAgICAgIHN1cHBvcnRzIHRoaXMgdHlwZSAoaS5lLiBv
biBtYWNPUykuIFRoaXMgZml4ZXMgYW4gZXhpc3RpbmcgYXNzZXJ0aW9uIHRoYXQgd2FzIGhpdCBi
eSBteSBuZXcgQVBJIHRlc3QsIHdoaWNoCisgICAgICAgIGF0dGVtcHRzIHRvIG92ZXJyaWRlIHRo
ZSBjb250ZW50cyBvZiB0aGUgcGFzdGVib2FyZCB3aXRoIGN1c3RvbSBkYXRhIHdoaWxlIHN0YXJ0
aW5nIGEgZHJhZyBvbiBhIGxpbmsuCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgorCisgICAgICAg
IFNpbmNlIHRoZSBTdGF0aWNQYXN0ZWJvYXJkIGNvbnRhaW5zIGRhdGEgYmVmb3JlIHRoZSBwYWdl
IGhhcyB3cml0dGVuIGFueXRoaW5nLCBkb24ndCB1c2UgYFBhc3RlYm9hcmQ6Omhhc0RhdGEoKWAK
KyAgICAgICAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlcmUncyBjdXN0b20gZGF0YTsgaW5zdGVh
ZCwgdXNlIHRoZSBuZXcgYGhhc05vbkRlZmF1bHREYXRhKClgIG1ldGhvZCBvbgorICAgICAgICBg
U3RhdGljUGFzdGVib2FyZGAgKHNlZSBiZWxvdykuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNhbldyaXRlVHJ1c3R3
b3J0aHlXZWJVUkxzUGJvYXJkVHlwZSk6CisKKyAgICAgICAgT24gbm9uLW1hY09TIHBvcnRzLCBy
ZXR1cm4gZmFsc2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGF0
aWNQYXN0ZWJvYXJkOjpoYXNOb25EZWZhdWx0RGF0YSBjb25zdCk6CisKKyAgICAgICAgS2VlcCB0
cmFjayBvZiB3aGV0aGVyIHRoZSBwYWdlIGF0dGVtcHRlZCB0byBzdGFnZSBhbnkgY3VzdG9tIGRh
dGEgZHVyaW5nICJkcmFnc3RhcnQiIGJ5IG1haW50YWluaW5nIHRoZSBzZXQgb2YKKyAgICAgICAg
dHlwZXMgd3JpdHRlbiBieSB0aGUgcGFnZSwgdmlhIGNhbGxzIHRvIGB3cml0ZVN0cmluZygpYCBh
bmQgc2ltaWxhci4gSSdtIHVzaW5nIGEgc2V0IG9mIHR5cGVzIGhlcmUgaW5zdGVhZCBvZiBhCisg
ICAgICAgIHNpbXBsZSBgYm9vbGAgZmxhZyB0byBlbnN1cmUgY29ycmVjdG5lc3MgaW4gdGhlIGNh
c2Ugd2hlcmUgdGhlIHBhZ2UgYWRkcyBhIHR5cGUsIGFuZCB0aGVuIGxhdGVyIHJlbW92ZXMgdGhh
dAorICAgICAgICBzYW1lIGN1c3RvbSB0eXBlLCBzdWNoIHRoYXQgdGhlcmUgaXMgbm8gbG9uZ2Vy
IG5vbi1kZWZhdWx0IGRhdGEuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1Bhc3RlYm9hcmQ6
OndyaXRlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZ0lu
Q3VzdG9tRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdGF0aWNQYXN0ZWJvYXJkOjpjbGVhcik6
CisKKyAgICAgICAgU2VlIGFib3ZlLgorCisgICAgICAgIChXZWJDb3JlOjpTdGF0aWNQYXN0ZWJv
YXJkOjp3cml0ZU1hcmt1cCk6CisgICAgICAgIChXZWJDb3JlOjpTdGF0aWNQYXN0ZWJvYXJkOjp3
cml0ZVBsYWluVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTdGF0aWNQYXN0ZWJvYXJkOjp3cml0
ZSk6CisKKyAgICAgICAgSW1wbGVtZW50IHRoZXNlIG1ldGhvZHMgYnkgd3JpdGluZyB0byB0aGUg
YFBhc3RlYm9hcmRDdXN0b21EYXRhYC4gVGhlc2UgbWV0aG9kcyBhcmUgaW52b2tlZCBieSBvdXIg
b3duIGNvZGUKKyAgICAgICAgcmF0aGVyIHRoYW4gdGhlIGJpbmRpbmdzLCBhbmQgc2hvdWxkIG9u
bHkgYmUgdXNlZCB0byBzdGFnZSBkZWZhdWx0IGRhdGEgdHlwZXMgd2hlbiBzdGFydGluZyBhIGRy
YWcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjYW5Xcml0ZVRydXN0
d29ydGh5V2ViVVJMc1Bib2FyZFR5cGUpOgorCiAyMDIwLTA2LTAyICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIGhlbHBlciBtZXRob2QgdG8g
cG9wdWxhdGUgYSBEYXRhVHJhbnNmZXIgYmVmb3JlIGRpc3BhdGNoaW5nIGEgImRyYWdzdGFydCIg
ZXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggODQ2M2E0OGU5NzRmYmUz
Zjc3ZjY2OWU1MTc4MjQ3OWI5NGNiMTA5Ni4uOTA0YmRkOTM5MDVlNDZmYjIyYTU4MDZiNGFjNjEz
MmJmYTNjMDU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTQyNCw4ICs0
MjQsOCBAQCBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZl
bnQoY29uc3QgU3RyaW5nJiBwbGFpblRleHQsIGNvbgogdm9pZCBEYXRhVHJhbnNmZXI6OmNvbW1p
dFRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBuYXRpdmVQYXN0ZWJvYXJkKQogewogICAgIEFTU0VS
VChpczxTdGF0aWNQYXN0ZWJvYXJkPigqbV9wYXN0ZWJvYXJkKSAmJiAhaXM8U3RhdGljUGFzdGVi
b2FyZD4obmF0aXZlUGFzdGVib2FyZCkpOwotICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3Rv
bURhdGEgPSBkb3duY2FzdDxTdGF0aWNQYXN0ZWJvYXJkPigqbV9wYXN0ZWJvYXJkKS50YWtlQ3Vz
dG9tRGF0YSgpOwotICAgIGlmICghY3VzdG9tRGF0YS5oYXNEYXRhKCkpIHsKKyAgICBhdXRvJiBz
dGF0aWNQYXN0ZWJvYXJkID0gZG93bmNhc3Q8U3RhdGljUGFzdGVib2FyZD4oKm1fcGFzdGVib2Fy
ZCk7CisgICAgaWYgKCFzdGF0aWNQYXN0ZWJvYXJkLmhhc05vbkRlZmF1bHREYXRhKCkpIHsKICAg
ICAgICAgLy8gV2UgY2xlYXIgdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQgaGVyZSB0byBlbnN1cmUg
dGhhdCB0aGUgcGFzdGVib2FyZCBkb2Vzbid0IGNvbnRhaW4gYW55IGRhdGEKICAgICAgICAgLy8g
dGhhdCBtYXkgaGF2ZSBiZWVuIHdyaXR0ZW4gYmVmb3JlIHN0YXJ0aW5nIHRoZSBkcmFnIG9yIGNv
cHlpbmcsIGFuZCBhZnRlciBlbmRpbmcgdGhlIGxhc3QKICAgICAgICAgLy8gZHJhZyBzZXNzaW9u
IG9yIHBhc3RlLiBBZnRlciBwdXNoaW5nIHRoZSBzdGF0aWMgcGFzdGVib2FyZCdzIGNvbnRlbnRz
IHRvIHRoZSBwbGF0Zm9ybSwgdGhlCkBAIC00MzQsNiArNDM0LDcgQEAgdm9pZCBEYXRhVHJhbnNm
ZXI6OmNvbW1pdFRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBuYXRpdmVQYXN0ZWJvYXJkKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byBjdXN0b21EYXRhID0gc3RhdGljUGFzdGVi
b2FyZC50YWtlQ3VzdG9tRGF0YSgpOwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLmN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpKSB7CiAgICAgICAg
IGN1c3RvbURhdGEuc2V0T3JpZ2luKG1fb3JpZ2luSWRlbnRpZmllcik7CiAgICAgICAgIG5hdGl2
ZVBhc3RlYm9hcmQud3JpdGVDdXN0b21EYXRhKHsgY3VzdG9tRGF0YSB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IGViNWZhZGJmZTJlMTJlYjdj
MWFmYTA3ZWM2ZDMzMDc0NzlhYzNjNzYuLmRjZTY0MWU2Zjk2YTZiZTEyYjM2NmNmN2ZkNGFkN2Jl
ZTY5NDkwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9y
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bQpAQCAtMTE5LDEzICsxMTksMTUgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCiAgICAgUGFzdGVib2FyZFdlYkNvbnRlbnQg
Y29udGVudDsKICAgICBjb250ZW50LmNvbnRlbnRPcmlnaW4gPSBtX2RvY3VtZW50Lm9yaWdpbklk
ZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgY29udGVudC5jYW5TbWFydENvcHlPckRlbGV0
ZSA9IGNhblNtYXJ0Q29weU9yRGVsZXRlKCk7Ci0gICAgY29udGVudC5kYXRhSW5XZWJBcmNoaXZl
Rm9ybWF0ID0gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7Ci0gICAgY29udGVudC5kYXRh
SW5SVEZERm9ybWF0ID0gW3N0cmluZyBjb250YWluc0F0dGFjaG1lbnRzXSA/IGRhdGFJblJURkRG
b3JtYXQoc3RyaW5nLmdldCgpKSA6IG51bGxwdHI7Ci0gICAgY29udGVudC5kYXRhSW5SVEZGb3Jt
YXQgPSBkYXRhSW5SVEZGb3JtYXQoc3RyaW5nLmdldCgpKTsKLSAgICBjb250ZW50LmRhdGFJbkF0
dHJpYnV0ZWRTdHJpbmdGb3JtYXQgPSBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKHN0
cmluZy5nZXQoKSk7CisgICAgaWYgKCFwYXN0ZWJvYXJkLmlzU3RhdGljKCkpIHsKKyAgICAgICAg
Y29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0ID0gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9y
bWF0KCk7CisgICAgICAgIGNvbnRlbnQuZGF0YUluUlRGREZvcm1hdCA9IFtzdHJpbmcgY29udGFp
bnNBdHRhY2htZW50c10gPyBkYXRhSW5SVEZERm9ybWF0KHN0cmluZy5nZXQoKSkgOiBudWxscHRy
OworICAgICAgICBjb250ZW50LmRhdGFJblJURkZvcm1hdCA9IGRhdGFJblJURkZvcm1hdChzdHJp
bmcuZ2V0KCkpOworICAgICAgICBjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQg
PSBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKHN0cmluZy5nZXQoKSk7CisgICAgICAg
IGNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKHNlbGVjdGVkUmFuZ2Uo
KS5nZXQoKSwgY29udGVudC5jbGllbnRUeXBlcywgY29udGVudC5jbGllbnREYXRhKTsKKyAgICB9
CiAgICAgY29udGVudC5kYXRhSW5IVE1MRm9ybWF0ID0gc2VsZWN0aW9uSW5IVE1MRm9ybWF0KCk7
CiAgICAgY29udGVudC5kYXRhSW5TdHJpbmdGb3JtYXQgPSBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkV2l0aEltYWdlQWx0VGV4dCgpOwotICAgIGNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKHNlbGVjdGVkUmFuZ2UoKS5nZXQoKSwgY29udGVudC5jbGllbnRUeXBl
cywgY29udGVudC5jbGllbnREYXRhKTsKIAogICAgIHBhc3RlYm9hcmQud3JpdGUoY29udGVudCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggNjcyNGRiODUw
ZGE3NTk5ZjgwYTY2MjY2NGU2NTA4YTM2ZTUyZjIyNS4uMzEyMzI1ZjI3NjIxY2JiODg0OTJhMDQy
NmVlNTkxNjU2N2U0YTE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQpAQCAtMjA2LDEwICsyMDYsMTIgQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4KICAgICBwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSA9IHBhc3RlYm9hcmQucmVzb3VyY2VNSU1FVHlw
ZShjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKICAgICBwYXN0ZWJvYXJkSW1h
Z2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAKLSAgICBQ
b3NpdGlvbiBiZWZvcmVJbWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQb3Np
dGlvbklzQmVmb3JlQW5jaG9yKTsKLSAgICBQb3NpdGlvbiBhZnRlckltYWdlUG9zaXRpb24oJmlt
YWdlRWxlbWVudCwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcik7Ci0gICAgYXV0byBp
bWFnZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1lbnQoKSwgYmVmb3Jl
SW1hZ2VQb3NpdGlvbiwgYWZ0ZXJJbWFnZVBvc2l0aW9uKTsKLSAgICBjbGllbnQoKS0+Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShpbWFnZVJhbmdlLnB0cigpLCBwYXN0ZWJvYXJkSW1h
Z2UuY2xpZW50VHlwZXMsIHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsKKyAgICBpZiAoIXBh
c3RlYm9hcmQuaXNTdGF0aWMoKSkgeworICAgICAgICBQb3NpdGlvbiBiZWZvcmVJbWFnZVBvc2l0
aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKTsKKyAg
ICAgICAgUG9zaXRpb24gYWZ0ZXJJbWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9u
OjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpOworICAgICAgICBhdXRvIGltYWdlUmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKGltYWdlRWxlbWVudC5kb2N1bWVudCgpLCBiZWZvcmVJbWFnZVBvc2l0aW9uLCBh
ZnRlckltYWdlUG9zaXRpb24pOworICAgICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZShpbWFnZVJhbmdlLnB0cigpLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlw
ZXMsIHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsKKyAgICB9CiAKICAgICBwYXN0ZWJvYXJk
LndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0
b3JNYWMubW0KaW5kZXggYTc0MWU1MTQwMzUxMzM5Njc5N2IyNmNjZDc3ZTg2ZjIyYWNjOTZiMC4u
MWNkOGMzOTRhNzY5MWM1NWY0ZDhkZDM2ZGU4NTk2ZTcwNzc3YjdiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMjUwLDcgKzI1MCwxNCBAQCB2b2lkIEVkaXRv
cjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50
JiBpbWFnZUVsZW1lbgogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKGNhY2hlZEltYWdlKTsK
IAotICAgIHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0ID0gaW1hZ2VJbldl
YkFyY2hpdmVGb3JtYXQoaW1hZ2VFbGVtZW50KTsKKyAgICBpZiAoIXBhc3RlYm9hcmQuaXNTdGF0
aWMoKSkKKyAgICAgICAgcGFzdGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3JtYXQgPSBp
bWFnZUluV2ViQXJjaGl2ZUZvcm1hdChpbWFnZUVsZW1lbnQpOworCisgICAgaWYgKGF1dG8gaW1h
Z2VSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoaW1hZ2VFbGVtZW50KSkgeworICAgICAg
ICBhdXRvIHNlcmlhbGl6ZUNvbXBvc2VkVHJlZSA9IG1fZG9jdW1lbnQuc2V0dGluZ3MoKS5zZWxl
Y3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCgpID8gU2VyaWFsaXplQ29tcG9zZWRU
cmVlOjpZZXMgOiBTZXJpYWxpemVDb21wb3NlZFRyZWU6Ok5vOworICAgICAgICBwYXN0ZWJvYXJk
SW1hZ2UuZGF0YUluSFRNTEZvcm1hdCA9IHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJh
bmNlKFZpc2libGVTZWxlY3Rpb24geyAqaW1hZ2VSYW5nZSB9LCBSZXNvbHZlVVJMczo6WWVzRXhj
bHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3ksIHNlcmlhbGl6ZUNvbXBvc2VkVHJlZSk7Cisg
ICAgfQorCiAgICAgcGFzdGVib2FyZEltYWdlLnVybC51cmwgPSB1cmw7CiAgICAgcGFzdGVib2Fy
ZEltYWdlLnVybC50aXRsZSA9IHRpdGxlOwogICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudXNlclZp
c2libGVGb3JtID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhwYXN0ZWJvYXJkSW1hZ2UudXJsLnVy
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDRlZTJlMmZiMzU4
NGQ3ODk1NDE2M2JhYjliMTFjNWU3NWJmMmRkNTEuLjQxOTNkNGQ1ZDRlNDZiMmVmMmUxOTMwYWM5
N2E1MTJjOTQ4MjI1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBA
IC0xMTIzLDcgKzExMjMsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUm
IHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgICAgICAgICAg
ICAgIHNyYy5lZGl0b3IoKS5jb3B5VVJMKGxpbmtVUkwsIHRleHRDb250ZW50V2l0aFNpbXBsaWZp
ZWRXaGl0ZVNwYWNlLCBkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpKTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRVUkxEYXRhKHNyYy5l
ZGl0b3IoKS5wYXN0ZWJvYXJkV3JpdGVyVVJMKGxpbmtVUkwsIHRleHRDb250ZW50V2l0aFNpbXBs
aWZpZWRXaGl0ZVNwYWNlKSk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIH0gZWxzZSBpZiAo
ZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5jYW5Xcml0ZVRydXN0d29ydGh5V2ViVVJMc1Bib2Fy
ZFR5cGUoKSkgewogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwYXN0ZWJvYXJkIGFsc28g
Y29udGFpbnMgdHJ1c3R3b3J0aHkgbGluayBkYXRhCiAgICAgICAgICAgICAvLyBidXQgZG9uJ3Qg
b3ZlcndyaXRlIG1vcmUgZ2VuZXJhbCBwYXN0ZWJvYXJkIHR5cGVzLgogICAgICAgICAgICAgUGFz
dGVib2FyZFVSTCBwYXN0ZWJvYXJkVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CmluZGV4IGQ1NTc3ZWVmMTE0ODg2MDMxYzhhNzdkYzhhZTQzYTI2NGM4ZWFjZTUuLjM3ZDRiNDEw
Mzg5NjFmYTFmYjcyODdkZDc0YzFlNDRlY2QyZDA2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKQEAgLTM4NzIsMTMgKzM4NzIsMTQgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNr
RHIKICAgICBpbnZhbGlkYXRlRGF0YVRyYW5zZmVyKCk7CiAKICAgICBkcmFnU3RhdGUoKS5kYXRh
VHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoKTsKLSAgICBIYXNOb25EZWZh
dWx0UGFzdGVib2FyZERhdGEgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhID0gSGFzTm9uRGVm
YXVsdFBhc3RlYm9hcmREYXRhOjpObzsKKyAgICBhdXRvIGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJk
RGF0YSA9IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6Tm87CiAgICAgCiAgICAgaWYgKGRy
YWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzKSB7CiAgICAgICAgIEFTU0VSVChkcmFnU3Rh
dGUoKS5zb3VyY2UpOwogICAgICAgICBhdXRvIGRyYWdTdGFydERhdGFUcmFuc2ZlciA9IERhdGFU
cmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoZHJhZ1N0YXRlKCkuc291cmNlLT5kb2N1
bWVudCgpKTsKICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBkaXNwYXRjaERyYWdT
dGFydEV2ZW50T25Tb3VyY2VFbGVtZW50KGRyYWdTdGFydERhdGFUcmFuc2Zlcik7Ci0gICAgICAg
IGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSA9IGRyYWdTdGFydERhdGFUcmFuc2Zlci0+cGFz
dGVib2FyZCgpLmhhc0RhdGEoKSA/IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6WWVzIDog
SGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpObzsKKyAgICAgICAgaWYgKGRvd25jYXN0PFN0
YXRpY1Bhc3RlYm9hcmQ+KGRyYWdTdGFydERhdGFUcmFuc2Zlci0+cGFzdGVib2FyZCgpKS5oYXNO
b25EZWZhdWx0RGF0YSgpKQorICAgICAgICAgICAgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRh
ID0gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpZZXM7CiAgICAgICAgIGRyYWdTdGF0ZSgp
LmRhdGFUcmFuc2Zlci0+bW92ZURyYWdTdGF0ZShXVEZNb3ZlKGRyYWdTdGFydERhdGFUcmFuc2Zl
cikpOwogCiAgICAgICAgIGlmIChkcmFnU3RhdGUoKS5zb3VyY2UgJiYgZHJhZ1N0YXRlKCkudHlw
ZSA9PSBEcmFnU291cmNlQWN0aW9uREhUTUwgJiYgIWRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+
aGFzRHJhZ0ltYWdlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKaW5k
ZXggNTEwNjRmZjNkYTg3ZTNjMzFlNzliZWFlMjFkZDU1ZGMxOWZjODk4NC4uOWYxNmQ4ODYxZDFl
YTE1ZjUxMzkzNDM1YTNlNGU1YmMwYTdkYmYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5jcHAKQEAgLTEwMyw0ICsxMDMsMTMgQEAgVVJMIFBhc3RlYm9hcmQ6OnJlYWRVUkwo
c2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB7IH07CiB9CiAKKyNpZiAh
UExBVEZPUk0oTUFDKQorCitib29sIFBhc3RlYm9hcmQ6OmNhbldyaXRlVHJ1c3R3b3J0aHlXZWJV
UkxzUGJvYXJkVHlwZSgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYKKwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBkY2MwYTM5MmIzMGRlYjJiNzkz
NThhZDBlYmU3ZTQ5MTZhOWZiZjRlLi5lODRlZDFlOTIwNjBiNjJjMTFkMzI1OWYwZTMxM2QxZWU0
OTExNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0xMTgsNiArMTE4
LDcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJj
aGl2ZUZvcm1hdDsKKyAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQ
TEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CkBAIC0yMTQsNiArMjE1LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRX
ZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgPSBXZWJDb250ZW50UmVh
ZGluZ1BvbGljeTo6QW55VHlwZSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXggPSBXVEY6Om51
bGxvcHQpOwogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRG
aWxlUmVhZGVyJiwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXggPSBXVEY6Om51bGxvcHQpOwog
CisgICAgc3RhdGljIGJvb2wgY2FuV3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQYm9hcmRUeXBlKCk7
CisKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgQ29sb3ImKTsK
ICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVS
TCYpOwogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZVRydXN0d29ydGh5V2Vi
VVJMc1Bib2FyZFR5cGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwpAQCAtMjIyLDcgKzIyNSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZUN1c3RvbURh
dGEoY29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiYpOwogCi0gICAgZW51bSBjbGFz
cyBGaWxlQ29udGVudFN0YXRlIHsgTm9GaWxlT3JJbWFnZURhdGEsIEluTWVtb3J5SW1hZ2UsIE1h
eUNvbnRhaW5GaWxlUGF0aHMgfTsKKyAgICBlbnVtIGNsYXNzIEZpbGVDb250ZW50U3RhdGUgOiB1
aW50OF90IHsgTm9GaWxlT3JJbWFnZURhdGEsIEluTWVtb3J5SW1hZ2UsIE1heUNvbnRhaW5GaWxl
UGF0aHMgfTsKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIEZpbGVDb250ZW50U3RhdGUgZmls
ZUNvbnRlbnRTdGF0ZSgpOwogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5TbWFy
dFJlcGxhY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGlj
UGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJk
LmNwcAppbmRleCBlNDgwNjY2MjRmNGRjODlhNTEzOTViMzBlMDU3MGU1MWYyNmYzYTIwLi5mZmUy
YjE4ZjY4YjExN2NmNmY5M2FkMzA0ZjhlMDkzMjczNjY1ZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcApAQCAtNTgsMjggKzU4LDM5IEBAIFN0cmlu
ZyBTdGF0aWNQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSkKICAgICByZXR1cm4gbV9jdXN0b21EYXRhLnJlYWRTdHJpbmdJbkN1c3RvbURhdGEodHlw
ZSk7CiB9CiAKK2Jvb2wgU3RhdGljUGFzdGVib2FyZDo6aGFzTm9uRGVmYXVsdERhdGEoKSBjb25z
dAoreworICAgIHJldHVybiAhbV9ub25EZWZhdWx0RGF0YVR5cGVzLmlzRW1wdHkoKTsKK30KKwog
dm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7CisgICAgbV9ub25EZWZhdWx0RGF0YVR5cGVzLmFkZCh0eXBl
KTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgdmFsdWUpOwogfQogCiB2b2lk
IFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKIHsKKyAgICBtX25vbkRlZmF1bHREYXRhVHlwZXMuYWRkKHR5cGUp
OwogICAgIG1fY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgV1RGTW92ZShkYXRhKSk7CiB9CiAK
IHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogeworICAgIG1fbm9uRGVmYXVsdERhdGFU
eXBlcy5hZGQodHlwZSk7CiAgICAgbV9jdXN0b21EYXRhLndyaXRlU3RyaW5nSW5DdXN0b21EYXRh
KHR5cGUsIHZhbHVlKTsKIH0KIAogdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjpjbGVhcigpCiB7Cisg
ICAgbV9ub25EZWZhdWx0RGF0YVR5cGVzLmNsZWFyKCk7CisgICAgbV9maWxlQ29udGVudFN0YXRl
ID0gUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZTo6Tm9GaWxlT3JJbWFnZURhdGE7CiAgICAg
bV9jdXN0b21EYXRhLmNsZWFyKCk7CiB9CiAKIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6Y2xlYXIo
Y29uc3QgU3RyaW5nJiB0eXBlKQogeworICAgIG1fbm9uRGVmYXVsdERhdGFUeXBlcy5yZW1vdmUo
dHlwZSk7CiAgICAgbV9jdXN0b21EYXRhLmNsZWFyKHR5cGUpOwogfQogCkBAIC04OCw0ICs5OSw2
MCBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBTdGF0aWNQYXN0ZWJvYXJkOjp0YWtlQ3VzdG9tRGF0
YSgpCiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9jdXN0b21EYXRhLCB7IH0pOwogfQogCit2
b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQor
eworICAgIG1fY3VzdG9tRGF0YS53cml0ZVN0cmluZygidGV4dC9odG1sIiwgbWFya3VwKTsKK30K
Kwordm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKK3sKKyAgICBtX2N1c3RvbURhdGEud3JpdGVTdHJpbmco
InRleHQvcGxhaW4iLCB0ZXh0KTsKK30KKwordm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwpCit7CisgICAgbV9jdXN0b21EYXRhLndyaXRlU3RyaW5n
KCJ0ZXh0L3VyaS1saXN0IiwgdXJsLnVybC5zdHJpbmcoKSk7Cit9CisKK3ZvaWQgU3RhdGljUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBpbWFnZSkKK3sKKyAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgaWRlYWxseSByZW1lbWJlciB0aGUgaW1hZ2UgZGF0YSwgc28gdGhh
dCB3aGVuIHRoaXMgU3RhdGljUGFzdGVib2FyZAorICAgIC8vIGlzIGNvbW1pdHRlZCB0byB0aGUg
bmF0aXZlIHBhc3RlYm9hcmQsIHdlJ2xsIHByZXNlcnZlIHRoZSBpbWFnZSBhcyB3ZWxsLiBGb3Ig
bm93LCBzdGljaworICAgIC8vIHdpdGggb3VyIGV4aXN0aW5nIGJlaGF2aW9yLCB3aGljaCBwcmV2
ZW50cyBpbWFnZSBkYXRhIGZyb20gYmVpbmcgY29waWVkIGluIHRoZSBjYXNlIHdoZXJlCisgICAg
Ly8gYW55IG5vbi1kZWZhdWx0IGRhdGEgd2FzIHdyaXR0ZW4gYnkgdGhlIHBhZ2UuCisgICAgbV9m
aWxlQ29udGVudFN0YXRlID0gUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZTo6SW5NZW1vcnlJ
bWFnZTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIWltYWdlLmRhdGFJbkhUTUxGb3Jt
YXQuaXNFbXB0eSgpKQorICAgICAgICB3cml0ZU1hcmt1cChpbWFnZS5kYXRhSW5IVE1MRm9ybWF0
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGltYWdlKTsKKyNlbmRpZgorCisjaWYgIVBMQVRG
T1JNKFdJTikKKyAgICBpZiAoUGFzdGVib2FyZDo6Y2FuRXhwb3NlVVJMVG9ET01XaGVuUGFzdGVi
b2FyZENvbnRhaW5zRmlsZXMoaW1hZ2UudXJsLnVybC5zdHJpbmcoKSkpCisgICAgICAgIHdyaXRl
KGltYWdlLnVybCk7CisjZW5kaWYKK30KKwordm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKK3sKKyAgICBTdHJpbmcgbWFya3Vw
OworICAgIFN0cmluZyB0ZXh0OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbWFya3VwID0g
Y29udGVudC5kYXRhSW5IVE1MRm9ybWF0OworICAgIHRleHQgPSBjb250ZW50LmRhdGFJblN0cmlu
Z0Zvcm1hdDsKKyNlbGlmIFBMQVRGT1JNKEdUSykgfHwgVVNFKExJQldQRSkKKyAgICBtYXJrdXAg
PSBjb250ZW50Lm1hcmt1cDsKKyAgICB0ZXh0ID0gY29udGVudC50ZXh0OworI2VuZGlmCisKKyAg
ICBpZiAoIW1hcmt1cC5pc0VtcHR5KCkpCisgICAgICAgIHdyaXRlTWFya3VwKG1hcmt1cCk7CisK
KyAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQorICAgICAgICB3cml0ZVBsYWluVGV4dCh0ZXh0LCBT
bWFydFJlcGxhY2VPcHRpb246OkNhbm5vdFNtYXJ0UmVwbGFjZSk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAppbmRleCBhNmQ1MGQ4YWI3ZmE0Nzc5
ZDU2OGZhOWE4ZmNiMjRlYWY4N2Q0MDM0Li42OWYwN2Y0NGJiYjAxZmNlMGE2OGZhODUyMzM5N2U5
Nzk2NDZlM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0
ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5o
CkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIHRh
a2VDdXN0b21EYXRhKCk7CiAKKyAgICBib29sIGhhc05vbkRlZmF1bHREYXRhKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc1N0YXRpYygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJv
b2wgaGFzRGF0YSgpIGZpbmFsOwpAQCAtNTksMjQgKzYwLDI1IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgPSBQ
bGFpblRleHRVUkxSZWFkaW5nUG9saWN5OjpBbGxvd1VSTCwgT3B0aW9uYWw8c2l6ZV90PiA9IFdU
Rjo6bnVsbG9wdCkgZmluYWwgeyB9CiAgICAgdm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50
UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4gPSBXVEY6
Om51bGxvcHQpIGZpbmFsIHsgfQogCi0gICAgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJM
JikgZmluYWwgeyB9Ci0gICAgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKSBmaW5h
bCB7IH0KLSAgICB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JikgZmluYWwg
eyB9CisgICAgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJikgZmluYWw7CisgICAgdm9p
ZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKSBmaW5hbDsKKyAgICB2b2lkIHdyaXRlKGNv
bnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JikgZmluYWw7CisgICAgdm9pZCB3cml0ZU1hcmt1cChj
b25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHdyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmlu
ZyYsIFNtYXJ0UmVwbGFjZU9wdGlvbikgZmluYWw7CiAKICAgICB2b2lkIHdyaXRlQ3VzdG9tRGF0
YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikgZmluYWwgeyB9CiAKLSAgICBQ
YXN0ZWJvYXJkOjpGaWxlQ29udGVudFN0YXRlIGZpbGVDb250ZW50U3RhdGUoKSBmaW5hbCB7IHJl
dHVybiBGaWxlQ29udGVudFN0YXRlOjpOb0ZpbGVPckltYWdlRGF0YTsgfQorICAgIFBhc3RlYm9h
cmQ6OkZpbGVDb250ZW50U3RhdGUgZmlsZUNvbnRlbnRTdGF0ZSgpIGZpbmFsIHsgcmV0dXJuIG1f
ZmlsZUNvbnRlbnRTdGF0ZTsgfQogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgd3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJikgZmlu
YWwgeyB9Ci0gICAgdm9pZCB3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmLCBTbWFydFJlcGxh
Y2VPcHRpb24pIGZpbmFsIHsgfQotCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICB2b2lk
IHNldERyYWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikgZmluYWwgeyB9CiAjZW5k
aWYKIAogcHJpdmF0ZToKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBtX2N1c3RvbURhdGE7Cisg
ICAgSGFzaFNldDxTdHJpbmc+IG1fbm9uRGVmYXVsdERhdGFUeXBlczsKKyAgICBQYXN0ZWJvYXJk
OjpGaWxlQ29udGVudFN0YXRlIG1fZmlsZUNvbnRlbnRTdGF0ZSB7IFBhc3RlYm9hcmQ6OkZpbGVD
b250ZW50U3RhdGU6Ok5vRmlsZU9ySW1hZ2VEYXRhIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDMwMDhjNmNjZjUwMTFhNmI2
OGQ3ZDg0MmFjMWFhYTk2ODA4ZWY5MmQuLmNmZWIxYmVkNWJiNWY3YzZmMjQyNDNjOTlmYTQzN2Jj
ZmE5Zjk5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCkBAIC0yODEsNiArMjgxLDggQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0
ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlw
ZShhcmNoaXZlRGF0YS5nZXQoKSwgV2ViQXJjaGl2ZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5h
bWUpOwogICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGFyY2hpdmVEYXRhLmdldCgpLCBrVVRU
eXBlV2ViQXJjaGl2ZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgfQorICAgIGlmICghcGFzdGVi
b2FyZEltYWdlLmRhdGFJbkhUTUxGb3JtYXQuaXNFbXB0eSgpKQorICAgICAgICBtX2NoYW5nZUNv
dW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJp
bmdGb3JUeXBlKHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5IVE1MRm9ybWF0LCBsZWdhY3lIVE1MUGFz
dGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgd3JpdGVGaWxlV3JhcHBlckFz
UlRGREF0dGFjaG1lbnQoZmlsZVdyYXBwZXIocGFzdGVib2FyZEltYWdlKSwgbV9wYXN0ZWJvYXJk
TmFtZSwgbV9jaGFuZ2VDb3VudCk7CiB9CiAKQEAgLTc4OSw2ICs3OTEsMTEgQEAgdm9pZCBQYXN0
ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgbG9j
YXRpb24pCiB9CiAjZW5kaWYKIAorYm9vbCBQYXN0ZWJvYXJkOjpjYW5Xcml0ZVRydXN0d29ydGh5
V2ViVVJMc1Bib2FyZFR5cGUoKQoreworICAgIHJldHVybiB0cnVlOworfQorCiB9CiAKICNlbmRp
ZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggYzY1ZjcyZjg5MTk1YmJiZTNiYjA3NTEyZjQ0YzQzZWIwNGJjNzFhNS4u
ZWE1OTcyZjYxYjRmNWU5M2FjOGYwOTQzYzUzNzJhYzMxNWNkYTg4ZiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIw
LTA2LTAyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IGRhdGFUcmFuc2Zlci50eXBlcyBpcyBlbXB0eSB3aGVuIGhhbmRsaW5nIHRoZSAiZHJhZ3N0YXJ0
IiBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEyNjg1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTM2ODQwMj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIG5ldyBBUEkgdGVzdHMgYW5k
IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gdmVyaWZ5IHRoYXQgRGF0YVRyYW5zZmVyIHR5cGVzIGFu
ZCBkYXRhIGFyZSBhY2Nlc3NpYmxlIGR1cmluZworICAgICAgICB0aGUgImRyYWdzdGFydCIgZXZl
bnQuIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EcmFnQW5kRHJvcFRlc3RzLm1tOgorICAgICAg
ICAoLVtUZXN0V0tXZWJWaWV3IHNlbGVjdEVsZW1lbnRXaXRoSUQ6XSk6CisgICAgICAgICgtW0Ry
YWdBbmREcm9wU2ltdWxhdG9yIGRyYWdGcm9tRWxlbWVudFdpdGhJRDp0bzpdKToKKworICAgICAg
ICBBZGQgYSBmZXcgKHZlcnkgc3BlY2lhbGl6ZWQpIGhlbHBlciBtZXRob2RzIHRvIGFzc2lzdCB3
aXRoIHNpbXVsYXRpbmcgZHJhZ3Mgb3ZlciB0aGUgdmFyaW91cyBlbGVtZW50cyBpbiB0aGUgbmV3
CisgICAgICAgIGRyYWcgYW5kIGRyb3AgdGVzdCBoYXJuZXNzIHBhZ2UgYmVsb3cgKGRyYWdzdGFy
dC1kYXRhLmh0bWwpLgorCisgICAgICAgIChydW5EcmFnU3RhcnREYXRhVGVzdENhc2UpOgorCisg
ICAgICAgIFRlc3QgdGhlIGZvbGxvd2luZyBzY2VuYXJpb3MgKHNwbGl0IGJldHdlZW4gdGhyZWUg
QVBJIHRlc3RzKSBieSBkdW1waW5nIHRoZSByZXN1bHRpbmcgRGF0YVRyYW5zZmVyIHR5cGVzIGFu
ZAorICAgICAgICB0aGVpciBkYXRhIHN0cmluZ3MsIGFuZCBvYnNlcnZpbmcgdGhlIHJlc3VsdHM6
CisKKyAgICAgICAgLSBEcmFnZ2luZyBhIG5vcm1hbCB0ZXh0IHNlbGVjdGlvbi4KKyAgICAgICAg
LSBEcmFnZ2luZyBhIG5vcm1hbCB0ZXh0IHNlbGVjdGlvbiwgYW5kIHRoZW4gYWRkaW5nIGEgVVJM
IHN0cmluZy4KKyAgICAgICAgLSBEcmFnZ2luZyBhIG5vcm1hbCB0ZXh0IHNlbGVjdGlvbiwgYW5k
IHRoZW4gYWRkaW5nIGEgY3VzdG9tIHBhc3RlYm9hcmQgdHlwZS4KKyAgICAgICAgLSBEcmFnZ2lu
ZyBhIG5vcm1hbCB0ZXh0IHNlbGVjdGlvbiwgYnV0IHRoZW4gcmVwbGFjaW5nIHRoZSBkYXRhIHdp
dGgganVzdCBhIFVSTCBzdHJpbmcuCisgICAgICAgIC0gRHJhZ2dpbmcgYSBub3JtYWwgdGV4dCBz
ZWxlY3Rpb24sIGJ1dCB0aGVuIHJlcGxhY2luZyB0aGUgZGF0YSB3aXRoIGp1c3QgYSBjdXN0b20g
ZGF0YSB0eXBlLgorICAgICAgICAtIERyYWdnaW5nIGFuIGltYWdlIGVsZW1lbnQuCisgICAgICAg
IC0gRHJhZ2dpbmcgYW4gaW1hZ2UgZWxlbWVudCwgYW5kIHRoZW4gb3ZlcnJpZGluZyB0aGUgcGxh
aW4gdGV4dCBkYXRhLgorICAgICAgICAtIERyYWdnaW5nIGEgbGluayAoYW5jaG9yIGVsZW1lbnQp
LgorICAgICAgICAtIERyYWdnaW5nIGEgbGluaywgYW5kIHRoZW4gYWRkaW5nIGEgY3VzdG9tIHR5
cGUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2RyYWdzdGFy
dC1kYXRhLmh0bWw6IEFkZGVkLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IGhhcm5lc3MgdG8g
aGVscCB0ZXN0IERhdGFUcmFuc2ZlciB0eXBlcyB3aGVuIHN0YXJ0aW5nIGEgZHJhZy4gVGhpcyB0
ZXN0IHBhZ2UgY2FuIGFsc28gYmUgdXNlZCBhcworICAgICAgICBhIG1hbnVhbCB0ZXN0IGhhcm5l
c3MsIGJ5IHNpbXBseSBvcGVuaW5nIHRoZSB0ZXN0IHBhZ2UsIHN0YXJ0aW5nIGRyYWdzIG9uIHRo
ZSB2YXJpb3VzIGVsZW1lbnRzIGFuZCBvYnNlcnZpbmcgdGhlCisgICAgICAgIG91dHB1dCBpbiB0
aGUgdGV4dGFyZWEuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L2R1bXAtZGF0YXRyYW5zZmVyLXR5cGVzLmh0bWw6CisKKyAgICAgICAgVHdlYWsgdGhpcyB0ZXN0
IHBhZ2UgdG8gcmVwbGFjZSB0aGUgRGF0YVRyYW5zZmVyIHdpdGggY3VzdG9tIGRhdGEgKHJhdGhl
ciB0aGFuIHNpbXBseSBhcHBlbmQgaXQpIGJ5IGNhbGxpbmcKKyAgICAgICAgYERhdGFUcmFuc2Zl
ci5jbGVhckRhdGEoKWAgcHJpb3IgdG8gd3JpdGluZyB0aGUgY3VzdG9tIHR5cGVzLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RXS1dl
YlZpZXdIb3N0V2luZG93IGluaXRXaXRoV2ViVmlldzpjb250ZW50UmVjdDpzdHlsZU1hc2s6YmFj
a2luZzpkZWZlcjpdKToKKworICAgICAgICBBZGQgYSBgX193ZWFrYCByZWZlcmVuY2Ugb24gVGVz
dFdLV2ViVmlld0hvc3RXaW5kb3cgYmFjayB0byB0aGUgVGVzdFdLV2ViVmlldywgc28gdGhhdCB3
ZSBjYW4gY29uc3VsdAorICAgICAgICBgLWV2ZW50VGltZXN0YW1wYCB3aGVuIHN5bnRoZXNpemlu
ZyBtb3VzZSBldmVudHMgb24gbWFjT1MgZHVyaW5nIEFQSSB0ZXN0cy4KKworICAgICAgICAoLVtU
ZXN0V0tXZWJWaWV3SG9zdFdpbmRvdyBfbW91c2VEb3duQXRQb2ludDpzaW11bGF0ZVByZXNzdXJl
OmNsaWNrQ291bnQ6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXdIb3N0V2luZG93IF9tb3Vz
ZVVwQXRQb2ludDpjbGlja0NvdW50Ol0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3SG9zdFdp
bmRvdyBpbml0V2l0aFdlYlZpZXc6ZnJhbWU6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcg
X3NldFVwVGVzdFdpbmRvdzpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzZXRFdmVudFRp
bWVzdGFtcE9mZnNldDpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBldmVudFRpbWVzdGFt
cF0pOgorCisgICAgICAgIEFkZCBhIG1lY2hhbmlzbSB0byBvZmZzZXQgc3ludGhldGljIGV2ZW50
IHRpbWVzdGFtcHMgYnkgYSBnaXZlbiB0aW1lIGludGVydmFsIChpLmUuIHRoZSBldmVudCB0aW1l
c3RhbXAgb2Zmc2V0KS4KKworICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IG1vdXNlTW92ZVRvUG9p
bnQ6d2l0aEZsYWdzOl0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IF9tb3VzZUV2ZW50V2l0
aFR5cGU6YXRMb2NhdGlvbjpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyB0eXBlQ2hhcmFj
dGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9y
TWFjLm1tOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBydW5Gcm9tOnRvOl0pOgor
CisgICAgICAgIFdoaWxlIHNpbXVsYXRpbmcgZHJhZyBhbmQgZHJvcCBvbiBtYWNPUywgdXNlIGAt
c2V0RXZlbnRUaW1lc3RhbXBPZmZzZXQ6YCB0byAibGVhcCBmb3J3YXJkIiBpbiB0aW1lLCBzbyB0
aGF0IHRoZQorICAgICAgICAxNTAgbWlsbGlzZWNvbmQgZGVsYXkgd2hlbiBkcmFnZ2luZyBhIHRl
eHQgc2VsZWN0aW9uIGRvZXNuJ3QgcHJldmVudCBkcmFncyBmcm9tIGJlZ2lubmluZy4KKwogMjAy
MC0wNi0wMiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
ZXJ0IEZFQVRVUkVTX0RFRklORVMgcmVsYXRlZCBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDU4MDA1NjVkMmI4M2UwNjRlOGJkNjVlMzgyZmUzMWU5ZDJlZWVkYTQuLjQyOWVhOTlk
ZWE0OTQ4OTdjZDBmYmE4MzYzNTYxOTBhYTFkMDM1NjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMTAyLDYgKzExMDIsNyBAQAogCQlGNDY5RkIyNDFGMDE4MDRCMDA0MDE1MzkgLyogY29u
dGVudGVkaXRhYmxlLWFuZC10YXJnZXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDY5RkIyMzFGMDE4MDM1MDA0MDE1MzkgLyogY29u
dGVudGVkaXRhYmxlLWFuZC10YXJnZXQuaHRtbCAqLzsgfTsKIAkJRjQ2QTA5NUExRUQ4QTZFNjAw
RDRBQTU1IC8qIGFwcGxlLmdpZiBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDdEMzBFQjFFRDI4NjE5MDAwNDgyRTEgLyogYXBwbGUuZ2lmICov
OyB9OwogCQlGNDZBMDk1QjFFRDhBNkU2MDBENEFBNTUgLyogZ2lmLWFuZC1maWxlLWlucHV0Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQ3RDMwRUQxRUQyOEE2QzAwMDQ4MkUxIC8qIGdpZi1hbmQtZmlsZS1pbnB1dC5odG1sICovOyB9
OworCQlGNDZCRDU2OTI0ODcwNjQzMDA4MjgyRDYgLyogZHJhZ3N0YXJ0LWRhdGEuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDZCRDU2
ODI0ODcwNjJEMDA4MjgyRDYgLyogZHJhZ3N0YXJ0LWRhdGEuaHRtbCAqLzsgfTsKIAkJRjQ3NzI4
OTkxRTRBRTNDMTAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDc3Mjg5
ODFFNEFFM0FEMDA3QUJGNkEgLyogZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sICovOyB9
OwogCQlGNDdERkIyNjIxQTg3OERGMDAwMjFGQjYgLyogZGF0YS1kZXRlY3RvcnMuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDdERkIy
NDIxQTg3MDRBMDAwMjFGQjYgLyogZGF0YS1kZXRlY3RvcnMuaHRtbCAqLzsgfTsKIAkJRjQ4MTFF
NTkyMTk0MEJERTAwQTVFMEZEIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4MTFFNTgyMTk0MEI0NDAwQTVF
MEZEIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tICovOyB9OwpAQCAtMTMxOCw2ICsxMzE5LDcg
QEAKIAkJCQk1NzE0RUNCQjFDQThCRkU0MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2lu
YWxVUkxGcmFtZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0QTMyRUM0MUYwNUYz
ODUwMDQ3QzU0NCAvKiBkcmFnc3RhcnQtY2hhbmdlLXNlbGVjdGlvbi1vZmZzY3JlZW4uaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNEQ1RTRFODFGMEM1RDM4MDA4QzFBNDkgLyogZHJh
Z3N0YXJ0LWNsZWFyLXNlbGVjdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUY0
NkJENTY5MjQ4NzA2NDMwMDgyODJENiAvKiBkcmFnc3RhcnQtZGF0YS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCUY0MTk0QUQxMUY1QTMyMDEwMEFERDgzRiAvKiBkcm9wLXRhcmdldHMu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkyRUIyOUQ1RTFGNzYyREI5MDAyM0E1RjEg
LyogZHVtcC1kYXRhdHJhbnNmZXItdHlwZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQlBMTU1MDIyQzFFMDUwRDAzMDBBMjRDNTcgLyogZHVwbGljYXRlLWNvbXBsZXRpb24taGFuZGxl
ci1jYWxscy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjc2Nyw2ICsyNzY5LDcgQEAK
IAkJRjQ2ODQ5QkQxRUVGNThFNDAwQjkzN0ZFIC8qIFVJUGFzdGVib2FyZFRlc3RzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVUlQYXN0ZWJvYXJkVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0Njg0OUJGMUVFRjVFREMwMEI5MzdGRSAvKiByaWNoLWFuZC1wbGFpbi10
ZXh0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAicmljaC1hbmQtcGxhaW4tdGV4dC5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ2OUZCMjMxRjAxODAzNTAwNDAxNTM5IC8qIGNvbnRlbnRl
ZGl0YWJsZS1hbmQtdGFyZ2V0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiY29udGVudGVkaXRhYmxlLWFuZC10
YXJnZXQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NkJENTY4MjQ4NzA2
MkQwMDgyODJENiAvKiBkcmFnc3RhcnQtZGF0YS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gImRyYWdzdGFydC1kYXRhLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDc3Mjg5ODFFNEFFM0FEMDA3QUJGNkEgLyogZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImZ1bGwtcGFnZS1jb250ZW50ZWRpdGFi
bGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0N0QzMEVCMUVEMjg2MTkw
MDA0ODJFMSAvKiBhcHBsZS5naWYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBpbWFnZS5naWY7IHBhdGggPSBhcHBsZS5naWY7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY0N0QzMEVEMUVEMjhBNkMwMDA0ODJFMSAvKiBnaWYtYW5kLWZpbGUt
aW5wdXQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJnaWYtYW5kLWZpbGUtaW5wdXQuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTYwLDYgKzM1NjMsNyBAQAogCQkJCTU3MTRFQ0JBMUNB
OEJGRDEwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0bWwgKi8s
CiAJCQkJRjRBMzJFQzMxRjA1RjM3ODAwNDdDNTQ0IC8qIGRyYWdzdGFydC1jaGFuZ2Utc2VsZWN0
aW9uLW9mZnNjcmVlbi5odG1sICovLAogCQkJCUY0RDVFNEU3MUYwQzVEMjcwMDhDMUE0OSAvKiBk
cmFnc3RhcnQtY2xlYXItc2VsZWN0aW9uLmh0bWwgKi8sCisJCQkJRjQ2QkQ1NjgyNDg3MDYyRDAw
ODI4MkQ2IC8qIGRyYWdzdGFydC1kYXRhLmh0bWwgKi8sCiAJCQkJRjQxOTRBRDAxRjVBMkVBNTAw
QUREODNGIC8qIGRyb3AtdGFyZ2V0cy5odG1sICovLAogCQkJCTJFQjI5RDVEMUY3NjJEQTUwMDIz
QTVGMSAvKiBkdW1wLWRhdGF0cmFuc2Zlci10eXBlcy5odG1sICovLAogCQkJCUExNTUwMjJCMUUw
NTBCQzUwMEEyNEM1NyAvKiBkdXBsaWNhdGUtY29tcGxldGlvbi1oYW5kbGVyLWNhbGxzLmh0bWwg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Ry
YWdBbmREcm9wVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0RyYWdBbmREcm9wVGVzdHMubW0KaW5kZXggMzNkZjE1OTE0MDgzMmViNzkyYzMyNzA0ZmIwMmJl
YmJmNzQ1NTYzYy4uZTc3ZTVhNTM5NjQ3OTVkZGEzNTY2NzNmOTg4ZGY0YmE0NWY5YzgyNyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EcmFnQW5kRHJv
cFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJh
Z0FuZERyb3BUZXN0cy5tbQpAQCAtMjQsNiArMjQsNyBAQAogICovCiAKICNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiVGVzdC5oIgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgIVBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogCkBAIC0zNiw2ICszNywzMyBAQAogI2ltcG9ydCA8TW9iaWxl
Q29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgogI2VuZGlmCiAKK0BpbXBsZW1lbnRh
dGlvbiBUZXN0V0tXZWJWaWV3IChEcmFnQW5kRHJvcFRlc3RzKQorCistICh2b2lkKXNlbGVjdEVs
ZW1lbnRXaXRoSUQ6KE5TU3RyaW5nICopZWxlbWVudElECit7CisgICAgW3NlbGYgZXZhbHVhdGVK
YXZhU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZ2V0U2VsZWN0aW9uKCkuc2Vs
ZWN0QWxsQ2hpbGRyZW4oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyVAJykpIiwgZWxlbWVudElE
XSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIFtzZWxmIHdhaXRGb3JOZXh0UHJlc2VudGF0
aW9uVXBkYXRlXTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gRHJhZ0FuZERyb3BTaW11
bGF0b3IgKERyYWdBbmREcm9wVGVzdHMpCisKKy0gKHZvaWQpZHJhZ0Zyb21FbGVtZW50V2l0aElE
OihOU1N0cmluZyAqKWVsZW1lbnRJRCB0bzooQ0dQb2ludClkZXN0aW5hdGlvbgoreworICAgIE5T
QXJyYXk8TlNOdW1iZXIgKj4gKnJlY3RWYWx1ZXMgPSBbc2VsZi53ZWJWaWV3IG9iamVjdEJ5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIoKCkgPT4geyIK
KyAgICAgICAgIiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyVA
Jyk7IgorICAgICAgICAiICAgIGNvbnN0IGJvdW5kcyA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7IgorICAgICAgICAiICAgIHJldHVybiBbYm91bmRzLmxlZnQsIGJvdW5kcy50b3As
IGJvdW5kcy53aWR0aCwgYm91bmRzLmhlaWdodF07IgorICAgICAgICAifSkoKTsiLCBlbGVtZW50
SURdXTsKKworICAgIGF1dG8gYm91bmRzID0gQ0dSZWN0TWFrZShyZWN0VmFsdWVzWzBdLmZsb2F0
VmFsdWUsIHJlY3RWYWx1ZXNbMV0uZmxvYXRWYWx1ZSwgcmVjdFZhbHVlc1syXS5mbG9hdFZhbHVl
LCByZWN0VmFsdWVzWzNdLmZsb2F0VmFsdWUpOworICAgIGF1dG8gbWlkUG9pbnQgPSBDR1BvaW50
TWFrZShDR1JlY3RHZXRNaWRYKGJvdW5kcyksIENHUmVjdEdldE1pZFkoYm91bmRzKSk7CisgICAg
W3NlbGYgcnVuRnJvbTptaWRQb2ludCB0bzpkZXN0aW5hdGlvbl07Cit9CisKK0BlbmQKKwogVEVT
VChEcmFnQW5kRHJvcFRlc3RzLCBNb2Rlcm5XZWJBcmNoaXZlVHlwZSkKIHsKICAgICBOU0RhdGEg
Km1hcmt1cERhdGEgPSBbQCI8c3Ryb25nPjxpPkhlbGxvIHdvcmxkPC9pPjwvc3Ryb25nPiIgZGF0
YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwpAQCAtMTYwLDYgKzE4OCwxMjcg
QEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBQcmV2ZW50aW5nTW91c2VEb3duU2hvdWxkUHJldmVu
dERyYWdTdGFydCkKICAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAib2JzZXJ2ZWRNb3VzZWRvd24iXS5ib29sVmFsdWUpOwogfQogCitzdHJ1Y3Qg
RHJhZ1N0YXJ0RGF0YSB7CisgICAgQk9PTCBjb250YWluc0ZpbGUgeyBOTyB9OworICAgIE5TU3Ry
aW5nICp0ZXh0IHsgbmlsIH07CisgICAgTlNTdHJpbmcgKnVybCB7IG5pbCB9OworICAgIE5TU3Ry
aW5nICpodG1sIHsgbmlsIH07CisgICAgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5n
ICo+ICpjdXN0b21EYXRhIHsgbmlsIH07Cit9OworCitzdGF0aWMgRHJhZ1N0YXJ0RGF0YSBydW5E
cmFnU3RhcnREYXRhVGVzdENhc2UoRHJhZ0FuZERyb3BTaW11bGF0b3IgKnNpbXVsYXRvciwgTlNT
dHJpbmcgKmVsZW1lbnRJRCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBbc2ltdWxhdG9yIHdlYlZp
ZXddOworICAgIE5TU3RyaW5nICp0YWdOYW1lID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCclQCcpLnRhZ05hbWUiLCBlbGVtZW50SURdXTsKKyAgICBpZiAoIVt0YWdOYW1lIGlz
RXF1YWxUb1N0cmluZzpAIklNRyJdICYmICFbdGFnTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBIl0p
CisgICAgICAgIFt3ZWJWaWV3IHNlbGVjdEVsZW1lbnRXaXRoSUQ6ZWxlbWVudElEXTsKKworICAg
IFtzaW11bGF0b3IgZHJhZ0Zyb21FbGVtZW50V2l0aElEOmVsZW1lbnRJRCB0bzpDR1BvaW50TWFr
ZSg0MDAsIDQwMCldOworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PE5TU3RyaW5n
ICosIE5TU3RyaW5nICo+PiBhbGxEYXRhID0gYWRvcHROUyhbW3dlYlZpZXcgb2JqZWN0QnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImFsbERhdGEiXSBtdXRhYmxlQ29weV0pOworICAgIERyYWdTdGFy
dERhdGEgcmVzdWx0OworICAgIHJlc3VsdC50ZXh0ID0gW2FsbERhdGEgb2JqZWN0Rm9yS2V5OkAi
dGV4dC9wbGFpbiJdOworICAgIHJlc3VsdC51cmwgPSBbYWxsRGF0YSBvYmplY3RGb3JLZXk6QCJ0
ZXh0L3VyaS1saXN0Il07CisgICAgcmVzdWx0Lmh0bWwgPSBbYWxsRGF0YSBvYmplY3RGb3JLZXk6
QCJ0ZXh0L2h0bWwiXTsKKyAgICByZXN1bHQuY29udGFpbnNGaWxlID0gISFbYWxsRGF0YSBvYmpl
Y3RGb3JLZXk6QCJGaWxlcyJdOworICAgIFthbGxEYXRhIHJlbW92ZU9iamVjdEZvcktleTpAInRl
eHQvcGxhaW4iXTsKKyAgICBbYWxsRGF0YSByZW1vdmVPYmplY3RGb3JLZXk6QCJ0ZXh0L3VyaS1s
aXN0Il07CisgICAgW2FsbERhdGEgcmVtb3ZlT2JqZWN0Rm9yS2V5OkAidGV4dC9odG1sIl07Cisg
ICAgW2FsbERhdGEgcmVtb3ZlT2JqZWN0Rm9yS2V5OkAiRmlsZXMiXTsKKyAgICBpZiAoW2FsbERh
dGEgY291bnRdKQorICAgICAgICByZXN1bHQuY3VzdG9tRGF0YSA9IGFsbERhdGEuYXV0b3JlbGVh
c2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitURVNUKERyYWdBbmREcm9wVGVzdHMsIERh
dGFUcmFuc2ZlclR5cGVzT25EcmFnU3RhcnRGb3JUZXh0U2VsZWN0aW9uKQoreworICAgIGF1dG8g
c2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0
aFdlYlZpZXdGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDUwMCwgNTAwKV0pOworICAgIFtbc2ltdWxh
dG9yIHdlYlZpZXddIHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImRyYWdzdGFydC1k
YXRhIl07CisKKyAgICBhdXRvIHJlc3VsdCA9IHJ1bkRyYWdTdGFydERhdGFUZXN0Q2FzZShzaW11
bGF0b3IuZ2V0KCksIEAicmVndWxhciIpOworICAgIEVYUEVDVF9XS19TVFJFUSgiUmVndWxhciB0
ZXh0IiwgcmVzdWx0LnRleHQpOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdC51cmwpOworICAgIEVY
UEVDVF9UUlVFKFtyZXN1bHQuaHRtbCBjb250YWluc1N0cmluZzpAIlJlZ3VsYXIgdGV4dCJdKTsK
KyAgICBFWFBFQ1RfTlVMTChyZXN1bHQuY3VzdG9tRGF0YSk7CisgICAgRVhQRUNUX0ZBTFNFKHJl
c3VsdC5jb250YWluc0ZpbGUpOworCisgICAgcmVzdWx0ID0gcnVuRHJhZ1N0YXJ0RGF0YVRlc3RD
YXNlKHNpbXVsYXRvci5nZXQoKSwgQCJyZWd1bGFyLXVybCIpOworICAgIEVYUEVDVF9XS19TVFJF
USgiUmVndWxhciB0ZXh0ICsgVVJMIGRhdGEiLCByZXN1bHQudGV4dCk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKCJodHRwczovL3d3dy5nb29nbGUuY29tIiwgcmVzdWx0LnVybCk7CisgICAgRVhQRUNU
X1RSVUUoW3Jlc3VsdC5odG1sIGNvbnRhaW5zU3RyaW5nOkAiUmVndWxhciB0ZXh0ICsgVVJMIGRh
dGEiXSk7CisgICAgRVhQRUNUX05VTEwocmVzdWx0LmN1c3RvbURhdGEpOworICAgIEVYUEVDVF9G
QUxTRShyZXN1bHQuY29udGFpbnNGaWxlKTsKKworICAgIHJlc3VsdCA9IHJ1bkRyYWdTdGFydERh
dGFUZXN0Q2FzZShzaW11bGF0b3IuZ2V0KCksIEAicmVndWxhci1jdXN0b20iKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIlJlZ3VsYXIgdGV4dCArIGN1c3RvbSBkYXRhIiwgcmVzdWx0LnRleHQpOwor
ICAgIEVYUEVDVF9OVUxMKHJlc3VsdC51cmwpOworICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQuaHRt
bCBjb250YWluc1N0cmluZzpAIlJlZ3VsYXIgdGV4dCArIGN1c3RvbSBkYXRhIl0pOworICAgIEVY
UEVDVF9XS19TVFJFUSgiSGVsbG8gd29ybGQiLCByZXN1bHQuY3VzdG9tRGF0YVtAInRleHQvZm9v
Il0pOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQuY29udGFpbnNGaWxlKTsKKworICAgIHJlc3Vs
dCA9IHJ1bkRyYWdTdGFydERhdGFUZXN0Q2FzZShzaW11bGF0b3IuZ2V0KCksIEAidXJsIik7Cisg
ICAgRVhQRUNUX05VTEwocmVzdWx0LnRleHQpOworICAgIEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6
Ly93d3cuZ29vZ2xlLmNvbSIsIHJlc3VsdC51cmwpOworICAgIEVYUEVDVF9OVUxMKFtyZXN1bHQu
aHRtbCBjb250YWluc1N0cmluZzpAIlJlZ3VsYXIgdGV4dCArIGN1c3RvbSBkYXRhIl0pOworICAg
IEVYUEVDVF9OVUxMKHJlc3VsdC5jdXN0b21EYXRhKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0
LmNvbnRhaW5zRmlsZSk7CisKKyAgICByZXN1bHQgPSBydW5EcmFnU3RhcnREYXRhVGVzdENhc2Uo
c2ltdWxhdG9yLmdldCgpLCBAImN1c3RvbSIpOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdC50ZXh0
KTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQudXJsKTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQu
aHRtbCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJIZWxsbyB3b3JsZCIsIHJlc3VsdC5jdXN0b21E
YXRhW0AidGV4dC9mb28iXSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdC5jb250YWluc0ZpbGUp
OworfQorCitURVNUKERyYWdBbmREcm9wVGVzdHMsIERhdGFUcmFuc2ZlclR5cGVzT25EcmFnU3Rh
cnRGb3JJbWFnZSkKK3sKKyAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJv
cFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA1
MDAsIDUwMCldKTsKKyAgICBbW3NpbXVsYXRvciB3ZWJWaWV3XSBzeW5jaHJvbm91c2x5TG9hZFRl
c3RQYWdlTmFtZWQ6QCJkcmFnc3RhcnQtZGF0YSJdOworCisgICAgYXV0byByZXN1bHQgPSBydW5E
cmFnU3RhcnREYXRhVGVzdENhc2Uoc2ltdWxhdG9yLmdldCgpLCBAImltYWdlIik7CisgICAgRVhQ
RUNUX05VTEwocmVzdWx0LnRleHQpOworICAgIC8vIFRoZSBVUkwgc2hvdWxkIGJlIG5pbCBoZXJl
IGJlY2F1c2UgdGhlIGltYWdlIHNvdXJjZSBpcyBhIGZpbGUgVVJMLCBzbyB3ZSBzaG91ZCBhdm9p
ZCBleHBvc2luZyBpdCB0byB0aGUgcGFnZS4KKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQudXJsKTsK
KyNpZiBQTEFURk9STShNQUMpCisgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdC5odG1sIGNvbnRhaW5z
U3RyaW5nOkAiPGltZyJdKTsKKyNlbHNlCisgICAgRVhQRUNUX05VTEwocmVzdWx0Lmh0bWwpOwor
I2VuZGlmCisgICAgRVhQRUNUX05VTEwocmVzdWx0LmN1c3RvbURhdGEpOworICAgIEVYUEVDVF9U
UlVFKHJlc3VsdC5jb250YWluc0ZpbGUpOworCisgICAgcmVzdWx0ID0gcnVuRHJhZ1N0YXJ0RGF0
YVRlc3RDYXNlKHNpbXVsYXRvci5nZXQoKSwgQCJpbWFnZS10ZXh0Iik7CisgICAgRVhQRUNUX1dL
X1NUUkVRKCJUaGlzIGlzIGFuIGltYWdlIG9mIEN1cGVydGluby4iLCByZXN1bHQudGV4dCk7Cisg
ICAgRVhQRUNUX05VTEwocmVzdWx0LnVybCk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIEVYUEVD
VF9UUlVFKFtyZXN1bHQuaHRtbCBjb250YWluc1N0cmluZzpAIjxpbWciXSk7CisjZWxzZQorICAg
IEVYUEVDVF9OVUxMKHJlc3VsdC5odG1sKTsKKyNlbmRpZgorICAgIEVYUEVDVF9OVUxMKHJlc3Vs
dC5jdXN0b21EYXRhKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQuY29udGFpbnNGaWxlKTsKK30K
KworVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRhVHJhbnNmZXJUeXBlc09uRHJhZ1N0YXJ0Rm9y
TGluaykKK3sKKyAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVs
YXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA1MDAsIDgw
MCldKTsKKyAgICBbW3NpbXVsYXRvciB3ZWJWaWV3XSBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdl
TmFtZWQ6QCJkcmFnc3RhcnQtZGF0YSJdOworCisgICAgYXV0byByZXN1bHQgPSBydW5EcmFnU3Rh
cnREYXRhVGVzdENhc2Uoc2ltdWxhdG9yLmdldCgpLCBAImxpbmsiKTsKKyAgICBFWFBFQ1RfTlVM
TChyZXN1bHQudGV4dCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJodHRwczovL3d3dy5hcHBsZS5j
b20vIiwgcmVzdWx0LnVybCk7CisgICAgRVhQRUNUX05VTEwocmVzdWx0Lmh0bWwpOworICAgIEVY
UEVDVF9OVUxMKHJlc3VsdC5jdXN0b21EYXRhKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0LmNv
bnRhaW5zRmlsZSk7CisKKyAgICByZXN1bHQgPSBydW5EcmFnU3RhcnREYXRhVGVzdENhc2Uoc2lt
dWxhdG9yLmdldCgpLCBAImxpbmstY3VzdG9tIik7CisgICAgRVhQRUNUX05VTEwocmVzdWx0LnRl
eHQpOworICAgIEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyIsIHJlc3Vs
dC51cmwpOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdC5odG1sKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoImJhciIsIHJlc3VsdC5jdXN0b21EYXRhW0AidGV4dC9mb28iXSk7CisgICAgRVhQRUNUX0ZB
TFNFKHJlc3VsdC5jb250YWluc0ZpbGUpOworfQorCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCiAKIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgQ29sb3JJbnB1dFRvQ29sb3JJbnB1dCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvZHJhZ3N0YXJ0
LWRhdGEuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvZHJhZ3N0
YXJ0LWRhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOWM0OTJlZTEzOTFhNzBiYWU3OTZjMTRjZDg0ZThk
ODJkZWEwNzk2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9kcmFnc3RhcnQtZGF0YS5odG1sCkBAIC0wLDAgKzEsMTA5IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lk
dGgiPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK2JvZHkgeworICAgIG1hcmdpbjogMDsKKyAg
ICBwYWRkaW5nOiAwOworfQorCitoMSwgYSwgcCB7CisgICAgZm9udC1zaXplOiAyMHB4OworICAg
IGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7Cit9CisKK2gxIHsKKyAgICB1c2VyLXNlbGVjdDogYWxs
OworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IGFsbDsKK30KKworYSB7CisgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKK30KKworYTphY3RpdmUg
eworICAgIGNvbG9yOiBibHVlOworfQorCit0ZXh0YXJlYSB7CisgICAgbWFyZ2luOiAxZW07Cisg
ICAgd2lkdGg6IGNhbGMoMTAwJSAtIDJlbSk7CisgICAgZm9udC1zaXplOiAxNnB4OworICAgIGZv
bnQtZmFtaWx5OiBtb25vc3BhY2U7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAg
PGgxIGlkPSJyZWd1bGFyIj5SZWd1bGFyIHRleHQ8L2gxPgorICAgIDxoMSBpZD0icmVndWxhci11
cmwiPlJlZ3VsYXIgdGV4dCArIFVSTCBkYXRhPC9oMT4KKyAgICA8aDEgaWQ9InJlZ3VsYXItY3Vz
dG9tIj5SZWd1bGFyIHRleHQgKyBjdXN0b20gZGF0YTwvaDE+CisgICAgPGgxIGlkPSJ1cmwiPlVS
TCBkYXRhIG9ubHk8L2gxPgorICAgIDxoMSBpZD0iY3VzdG9tIj5DdXN0b20gZGF0YSBvbmx5PC9o
MT4KKyAgICA8aW1nIGlkPSJpbWFnZSIgc3JjPSJzdW5zZXQtaW4tY3VwZXJ0aW5vLTIwMHB4LnBu
ZyI+PC9pbWc+CisgICAgPGltZyBpZD0iaW1hZ2UtdGV4dCIgc3JjPSJzdW5zZXQtaW4tY3VwZXJ0
aW5vLTIwMHB4LnBuZyI+PC9pbWc+CisgICAgPGEgaWQ9ImxpbmsiIGhyZWY9Imh0dHBzOi8vd3d3
LmFwcGxlLmNvbS8iPkFwcGxlIEhvbWVwYWdlPC9hPgorICAgIDxhIGlkPSJsaW5rLWN1c3RvbSIg
aHJlZj0iaHR0cHM6Ly93d3cuYXBwbGUuY29tLyI+QXBwbGUgSG9tZXBhZ2U8L2E+CisgICAgPHRl
eHRhcmVhIHJvd3M9IjIwIiByZWFkb25seSBpZD0idGV4dC1vdXRwdXQiPjwvdGV4dGFyZWE+Cis8
L2JvZHk+Cis8c2NyaXB0Pgord2luZG93LmFsbERhdGEgPSB7fTsKK2NvbnN0IHRleHRPdXRwdXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dC1vdXRwdXQiKTsKKworZnVuY3Rpb24gY29s
bGVjdERhdGFGb3JFdmVudChldmVudCwgZWxlbWVudCkKK3sKKyAgICBhbGxEYXRhID0ge307Cisg
ICAgZm9yIChsZXQgdHlwZSBvZiBldmVudC5kYXRhVHJhbnNmZXIudHlwZXMpCisgICAgICAgIGFs
bERhdGFbdHlwZV0gPSBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSh0eXBlKTsKKyAgICB0ZXh0
T3V0cHV0LnZhbHVlID0gSlNPTi5zdHJpbmdpZnkoYWxsRGF0YSwgbnVsbCwgNCk7Cit9CisKK2Nv
bnN0IHJlZ3VsYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVndWxhciIpOworcmVndWxh
ci5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCBldmVudCA9PiBjb2xsZWN0RGF0YUZvckV2
ZW50KGV2ZW50LCByZWd1bGFyKSk7CisKK2NvbnN0IHJlZ3VsYXJVUkwgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVndWxhci11cmwiKTsKK3JlZ3VsYXJVUkwuYWRkRXZlbnRMaXN0ZW5lcigi
ZHJhZ3N0YXJ0IiwgZXZlbnQgPT4geworICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0
ZXh0L3VyaS1saXN0IiwgImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20iKTsKKyAgICBjb2xsZWN0RGF0
YUZvckV2ZW50KGV2ZW50LCByZWd1bGFyVVJMKTsKK30pOworCitjb25zdCByZWd1bGFyQ3VzdG9t
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ3VsYXItY3VzdG9tIik7CityZWd1bGFyQ3Vz
dG9tLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsIGV2ZW50ID0+IHsKKyAgICBldmVudC5k
YXRhVHJhbnNmZXIuc2V0RGF0YSgidGV4dC9mb28iLCAiSGVsbG8gd29ybGQiKTsKKyAgICBjb2xs
ZWN0RGF0YUZvckV2ZW50KGV2ZW50LCByZWd1bGFyQ3VzdG9tKTsKK30pOworCitjb25zdCB1cmwg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXJsIik7Cit1cmwuYWRkRXZlbnRMaXN0ZW5lcigi
ZHJhZ3N0YXJ0IiwgZXZlbnQgPT4geworICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5jbGVhckRhdGEo
KTsKKyAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgidGV4dC91cmktbGlzdCIsICJodHRw
czovL3d3dy5nb29nbGUuY29tIik7CisgICAgY29sbGVjdERhdGFGb3JFdmVudChldmVudCwgdXJs
KTsKK30pOworCitjb25zdCBjdXN0b20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY3VzdG9t
Iik7CitjdXN0b20uYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgZXZlbnQgPT4geworICAg
IGV2ZW50LmRhdGFUcmFuc2Zlci5jbGVhckRhdGEoKTsKKyAgICBldmVudC5kYXRhVHJhbnNmZXIu
c2V0RGF0YSgidGV4dC9mb28iLCAiSGVsbG8gd29ybGQiKTsKKyAgICBjb2xsZWN0RGF0YUZvckV2
ZW50KGV2ZW50LCBjdXN0b20pOworfSk7CisKK2NvbnN0IGltYWdlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImltYWdlIik7CitpbWFnZS5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCBl
dmVudCA9PiBjb2xsZWN0RGF0YUZvckV2ZW50KGV2ZW50LCBpbWFnZSkpOworCitjb25zdCBpbWFn
ZVRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1hZ2UtdGV4dCIpOworaW1hZ2VUZXh0
LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsIGV2ZW50ID0+IHsKKyAgICBldmVudC5kYXRh
VHJhbnNmZXIuc2V0RGF0YSgidGV4dC9wbGFpbiIsICJUaGlzIGlzIGFuIGltYWdlIG9mIEN1cGVy
dGluby4iKTsKKyAgICBjb2xsZWN0RGF0YUZvckV2ZW50KGV2ZW50LCBpbWFnZVRleHQpOworfSk7
CisKK2NvbnN0IGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGluayIpOworbGluay5h
ZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCBldmVudCA9PiBjb2xsZWN0RGF0YUZvckV2ZW50
KGV2ZW50LCBsaW5rKSk7CisKK2NvbnN0IGxpbmtDdXN0b20gPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibGluay1jdXN0b20iKTsKK2xpbmtDdXN0b20uYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0
YXJ0IiwgZXZlbnQgPT4geworICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0L2Zv
byIsICJiYXIiKTsKKyAgICBjb2xsZWN0RGF0YUZvckV2ZW50KGV2ZW50LCBsaW5rQ3VzdG9tKTsK
K30pOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL2R1bXAtZGF0YXRyYW5zZmVyLXR5cGVzLmh0bWwgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2R1bXAtZGF0YXRyYW5zZmVyLXR5cGVzLmh0
bWwKaW5kZXggZDZlMzU0MjhmOWM0OTZlN2E5ODhiZmI3MzhkYTZkNDQwNGY2NWI0Mi4uZWNlYjEx
NDczYTU2MzU5NmJiNjYwYzlhYTdjY2NjZjZmNDM3ZjhhYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9kdW1wLWRhdGF0cmFuc2Zlci10eXBlcy5odG1s
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvZHVtcC1kYXRhdHJh
bnNmZXItdHlwZXMuaHRtbApAQCAtMTAwLDYgKzEwMCw3IEBAIGZ1bmN0aW9uIHNldEN1c3RvbURh
dGEoZXZlbnQpIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjb25zdCBwYXN0ZWJvYXJk
ID0gZXZlbnQuZGF0YVRyYW5zZmVyIHx8IGV2ZW50LmNsaXBib2FyZERhdGE7CisgICAgcGFzdGVi
b2FyZC5jbGVhckRhdGEoKTsKICAgICBmb3IgKGNvbnN0IHR5cGUgaW4gY3VzdG9tRGF0YSkKICAg
ICAgICAgcGFzdGVib2FyZC5zZXREYXRhKHR5cGUsIGN1c3RvbURhdGFbdHlwZV0pOwogCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9T
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5t
bQppbmRleCBjODQ0ZGQwMzgzNWY0NGZlZjNmMWNlZDAwYTVhNDc0MjQzNGI1MjJlLi40M2I1ODg4
Y2YwMGUzZGU4MTFhYWNlMGYwOWFkZWQzZWQyNDYwNmJhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KQEAgLTc4LDcgKzc4
LDcgQEAgc3RhdGljIE5TRGF0YSAqdGVzdFpJUEFyY2hpdmUoKQogICAgIHJldHVybiBbTlNEYXRh
IGRhdGFXaXRoQ29udGVudHNPZlVSTDp6aXBGaWxlVVJMXTsKIH0KIAotQGltcGxlbWVudGF0aW9u
IFRlc3RXS1dlYlZpZXcgKERyYWdBbmREcm9wVGVzdHMpCitAaW1wbGVtZW50YXRpb24gVGVzdFdL
V2ViVmlldyAoRHJhZ0FuZERyb3BUZXN0c0lPUykKIAogLSAoQk9PTCllZGl0b3JDb250YWluc0lt
YWdlRWxlbWVudAogewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApp
bmRleCBhNjEyY2MwY2RhNTAwMDdjMWMzNTMwNmMxNmNlYmNlMjQwNTNiOTBjLi40NTg3NDI5MWRh
ZmU5OTMwNTk0MmZjMTE2M2Y4Y2UwMjJmOGNjNjllIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtMTMwLDYgKzEzMCw4IEBACiAtIChOU1dpbmRvdyAqKWhv
c3RXaW5kb3c7CiAtICh2b2lkKXR5cGVDaGFyYWN0ZXI6KGNoYXIpY2hhcmFjdGVyOwogLSAodm9p
ZCl3YWl0Rm9yUGVuZGluZ01vdXNlRXZlbnRzOworLSAodm9pZClzZXRFdmVudFRpbWVzdGFtcE9m
ZnNldDooTlNUaW1lSW50ZXJ2YWwpb2Zmc2V0OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBOU1RpbWVJbnRlcnZhbCBldmVudFRpbWVzdGFtcDsKIEBlbmQKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggOGJlMmRmMGRjNTZh
NGVkYjAyN2UyOGY0ZDc5NjMyZjA2NWY1NjI4ZS4uZTIzNTdhOWFiZDMwZWQzN2YyNDdiZDc0OTU1
MjI1YTMwMDVlZTFlNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbQpAQCAtMjcxLDkgKzI3MSwxMSBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0V0tX
ZWJWaWV3SG9zdFdpbmRvdyB7CiAgICAgQk9PTCBfZm9yY2VLZXlXaW5kb3c7CisgICAgX193ZWFr
IFRlc3RXS1dlYlZpZXcgKl93ZWJWaWV3OwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQorCiBzdGF0
aWMgaW50IGdFdmVudE51bWJlciA9IDE7CiAKIE5TRXZlbnRNYXNrIF9fc2ltdWxhdGVkX2ZvcmNl
Q2xpY2tBc3NvY2lhdGVkRXZlbnRzTWFzayhpZCBzZWxmLCBTRUwgX2NtZCkKQEAgLTI4MSw2ICsy
ODMsMTMgQEAgTlNFdmVudE1hc2sgX19zaW11bGF0ZWRfZm9yY2VDbGlja0Fzc29jaWF0ZWRFdmVu
dHNNYXNrKGlkIHNlbGYsIFNFTCBfY21kKQogICAgIHJldHVybiBOU0V2ZW50TWFza1ByZXNzdXJl
IHwgTlNFdmVudE1hc2tMZWZ0TW91c2VEb3duIHwgTlNFdmVudE1hc2tMZWZ0TW91c2VVcCB8IE5T
RXZlbnRNYXNrTGVmdE1vdXNlRHJhZ2dlZDsKIH0KIAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
V2ViVmlldzooVGVzdFdLV2ViVmlldyAqKXdlYlZpZXcgY29udGVudFJlY3Q6KE5TUmVjdCljb250
ZW50UmVjdCBzdHlsZU1hc2s6KE5TV2luZG93U3R5bGVNYXNrKXN0eWxlIGJhY2tpbmc6KE5TQmFj
a2luZ1N0b3JlVHlwZSliYWNraW5nU3RvcmVUeXBlIGRlZmVyOihCT09MKWZsYWcKK3sKKyAgICBp
ZiAoc2VsZiA9IFtzdXBlciBpbml0V2l0aENvbnRlbnRSZWN0OmNvbnRlbnRSZWN0IHN0eWxlTWFz
azpzdHlsZSBiYWNraW5nOmJhY2tpbmdTdG9yZVR5cGUgZGVmZXI6ZmxhZ10pCisgICAgICAgIF93
ZWJWaWV3ID0gd2ViVmlldzsKKyAgICByZXR1cm4gc2VsZjsKK30KKwogLSAodm9pZClfbW91c2VE
b3duQXRQb2ludDooTlNQb2ludClwb2ludCBzaW11bGF0ZVByZXNzdXJlOihCT09MKXNpbXVsYXRl
UHJlc3N1cmUgY2xpY2tDb3VudDooTlNVSW50ZWdlciljbGlja0NvdW50CiB7CiAgICAgTlNFdmVu
dFR5cGUgbW91c2VFdmVudFR5cGUgPSBOU0V2ZW50VHlwZUxlZnRNb3VzZURvd247CkBAIC0yODks
NyArMjk4LDcgQEAgLSAodm9pZClfbW91c2VEb3duQXRQb2ludDooTlNQb2ludClwb2ludCBzaW11
bGF0ZVByZXNzdXJlOihCT09MKXNpbXVsYXRlUHJlc3N1cmUKICAgICBpZiAoc2ltdWxhdGVQcmVz
c3VyZSkKICAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TWFza1ByZXNzdXJlOwogCi0g
ICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6bW91c2VFdmVu
dFR5cGUgbG9jYXRpb246cG9pbnQgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzIHRpbWVzdGFt
cDpHZXRDdXJyZW50RXZlbnRUaW1lKCkgd2luZG93TnVtYmVyOnNlbGYud2luZG93TnVtYmVyIGNv
bnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBldmVudE51bWJlcjorK2dF
dmVudE51bWJlciBjbGlja0NvdW50OmNsaWNrQ291bnQgcHJlc3N1cmU6c2ltdWxhdGVQcmVzc3Vy
ZV07CisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6bW91
c2VFdmVudFR5cGUgbG9jYXRpb246cG9pbnQgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzIHRp
bWVzdGFtcDpfd2ViVmlldy5ldmVudFRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6c2VsZi53aW5kb3dO
dW1iZXIgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGV2ZW50TnVt
YmVyOisrZ0V2ZW50TnVtYmVyIGNsaWNrQ291bnQ6Y2xpY2tDb3VudCBwcmVzc3VyZTpzaW11bGF0
ZVByZXNzdXJlXTsKICAgICBpZiAoIXNpbXVsYXRlUHJlc3N1cmUpIHsKICAgICAgICAgW3NlbGYg
c2VuZEV2ZW50OmV2ZW50XTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA5LDkgKzMxOCwxMCBAQCAt
ICh2b2lkKV9tb3VzZURvd25BdFBvaW50OihOU1BvaW50KXBvaW50IHNpbXVsYXRlUHJlc3N1cmU6
KEJPT0wpc2ltdWxhdGVQcmVzc3VyZQogCiAtICh2b2lkKV9tb3VzZVVwQXRQb2ludDooTlNQb2lu
dClwb2ludCBjbGlja0NvdW50OihOU1VJbnRlZ2VyKWNsaWNrQ291bnQKIHsKLSAgICBbc2VsZiBz
ZW5kRXZlbnQ6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlTGVmdE1vdXNl
VXAgbG9jYXRpb246cG9pbnQgbW9kaWZpZXJGbGFnczowIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZl
bnRUaW1lKCkgd2luZG93TnVtYmVyOnNlbGYud2luZG93TnVtYmVyIGNvbnRleHQ6W05TR3JhcGhp
Y3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBldmVudE51bWJlcjorK2dFdmVudE51bWJlciBjbGlj
a0NvdW50OmNsaWNrQ291bnQgcHJlc3N1cmU6MF1dOworICAgIFtzZWxmIHNlbmRFdmVudDpbTlNF
dmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVMZWZ0TW91c2VVcCBsb2NhdGlvbjpw
b2ludCBtb2RpZmllckZsYWdzOjAgdGltZXN0YW1wOl93ZWJWaWV3LmV2ZW50VGltZXN0YW1wIHdp
bmRvd051bWJlcjpzZWxmLndpbmRvd051bWJlciBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBj
dXJyZW50Q29udGV4dF0gZXZlbnROdW1iZXI6KytnRXZlbnROdW1iZXIgY2xpY2tDb3VudDpjbGlj
a0NvdW50IHByZXNzdXJlOjBdXTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKKyNlbmRp
ZgogCiAtIChCT09MKWlzS2V5V2luZG93CiB7CkBAIC0zMTksNiArMzI5LDcgQEAgLSAoQk9PTClp
c0tleVdpbmRvdwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxVSVdpbmRvdz4+IGdPdmVycmlkZGVuQXBwbGljYXRpb25LZXlX
aW5kb3c7CiBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPEluc3RhbmNlTWV0
aG9kU3dpenpsZXI+PiBnQXBwbGljYXRpb25LZXlXaW5kb3dTd2l6emxlcjsKIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxzdGQ6OnVuaXF1ZV9wdHI8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4+IGdTaGFy
ZWRBcHBsaWNhdGlvblN3aXp6bGVyOwpAQCAtMzQ1LDYgKzM1NiwxNCBAQCBzdGF0aWMgVUlXaW5k
b3cgKmFwcGxpY2F0aW9uS2V5V2luZG93T3ZlcnJpZGUoaWQsIFNFTCkKIHsKICAgICByZXR1cm4g
Z092ZXJyaWRkZW5BcHBsaWNhdGlvbktleVdpbmRvdy5nZXQoKS5nZXQoKTsKIH0KKworLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoV2ViVmlldzooVGVzdFdLV2ViVmlldyAqKXdlYlZpZXcgZnJhbWU6
KENHUmVjdClmcmFtZQoreworICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJh
bWVdKQorICAgICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CisgICAgcmV0dXJuIHNlbGY7Cit9CisK
ICNlbmRpZgogCiAtICh2b2lkKW1ha2VLZXlXaW5kb3cKQEAgLTM4OCw2ICs0MDcsOSBAQCBAaW1w
bGVtZW50YXRpb24gVGVzdFdLV2ViVmlldyB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENsYXNzTWV0
aG9kU3dpenpsZXI+IF9zaGFyZWRDYWxsb3V0QmFyU3dpenpsZXI7CiAgICAgSW5wdXRTZXNzaW9u
Q2hhbmdlQ291bnQgX2lucHV0U2Vzc2lvbkNoYW5nZUNvdW50OwogI2VuZGlmCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIE5TVGltZUludGVydmFsIF9ldmVudFRpbWVzdGFtcE9mZnNldDsKKyNlbmRp
ZgogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCkBAIC00
MzcsMTQgKzQ1OSwxNCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZy
YW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpbwogLSAodm9pZClfc2V0VXBU
ZXN0V2luZG93OihOU1JlY3QpZnJhbWUKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgX2hvc3RX
aW5kb3cgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlld0hvc3RXaW5kb3cgYWxsb2NdIGluaXRXaXRo
Q29udGVudFJlY3Q6ZnJhbWUgc3R5bGVNYXNrOihOU1dpbmRvd1N0eWxlTWFza0JvcmRlcmxlc3Mg
fCBOU1dpbmRvd1N0eWxlTWFza01pbmlhdHVyaXphYmxlKSBiYWNraW5nOk5TQmFja2luZ1N0b3Jl
QnVmZmVyZWQgZGVmZXI6Tk9dKTsKKyAgICBfaG9zdFdpbmRvdyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3SG9zdFdpbmRvdyBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OnNlbGYgY29udGVudFJlY3Q6
ZnJhbWUgc3R5bGVNYXNrOihOU1dpbmRvd1N0eWxlTWFza0JvcmRlcmxlc3MgfCBOU1dpbmRvd1N0
eWxlTWFza01pbmlhdHVyaXphYmxlKSBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVm
ZXI6Tk9dKTsKICAgICBbX2hvc3RXaW5kb3cgc2V0RnJhbWVPcmlnaW46TlNNYWtlUG9pbnQoMCwg
MCldOwogICAgIFtfaG9zdFdpbmRvdyBzZXRJc1Zpc2libGU6WUVTXTsKICAgICBbX2hvc3RXaW5k
b3cgY29udGVudFZpZXddLndhbnRzTGF5ZXIgPSBZRVM7CiAgICAgW1tfaG9zdFdpbmRvdyBjb250
ZW50Vmlld10gYWRkU3VidmlldzpzZWxmXTsKICAgICBbX2hvc3RXaW5kb3cgbWFrZUtleUFuZE9y
ZGVyRnJvbnQ6c2VsZl07CiAjZWxzZQotICAgIF9ob3N0V2luZG93ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXdIb3N0V2luZG93IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lXSk7CisgICAgX2hv
c3RXaW5kb3cgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlld0hvc3RXaW5kb3cgYWxsb2NdIGluaXRX
aXRoV2ViVmlldzpzZWxmIGZyYW1lOmZyYW1lXSk7CiAgICAgW19ob3N0V2luZG93IHNldEhpZGRl
bjpOT107CiAgICAgW19ob3N0V2luZG93IGFkZFN1YnZpZXc6c2VsZl07CiAjZW5kaWYKQEAgLTY4
NCw3ICs3MDYsMTkgQEAgQGVuZAogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCisKIEBpbXBs
ZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3IChNYWNPbmx5KQorCistICh2b2lkKXNldEV2ZW50VGlt
ZXN0YW1wT2Zmc2V0OihOU1RpbWVJbnRlcnZhbClvZmZzZXQKK3sKKyAgICBfZXZlbnRUaW1lc3Rh
bXBPZmZzZXQgKz0gb2Zmc2V0OworfQorCistIChOU1RpbWVJbnRlcnZhbClldmVudFRpbWVzdGFt
cAoreworICAgIHJldHVybiBHZXRDdXJyZW50RXZlbnRUaW1lKCkgKyBfZXZlbnRUaW1lc3RhbXBP
ZmZzZXQ7Cit9CisKIC0gKHZvaWQpbW91c2VEb3duQXRQb2ludDooTlNQb2ludClwb2ludEluV2lu
ZG93IHNpbXVsYXRlUHJlc3N1cmU6KEJPT0wpc2ltdWxhdGVQcmVzc3VyZQogewogICAgIFtfaG9z
dFdpbmRvdyBfbW91c2VEb3duQXRQb2ludDpwb2ludEluV2luZG93IHNpbXVsYXRlUHJlc3N1cmU6
c2ltdWxhdGVQcmVzc3VyZSBjbGlja0NvdW50OjFdOwpAQCAtNjk3LDcgKzczMSw3IEBAIC0gKHZv
aWQpbW91c2VVcEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdwogCiAtICh2b2lkKW1vdXNl
TW92ZVRvUG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdyB3aXRoRmxhZ3M6KE5TRXZlbnRNb2Rp
ZmllckZsYWdzKWZsYWdzCiB7Ci0gICAgW3NlbGYgbW91c2VNb3ZlZDpbc2VsZiBfbW91c2VFdmVu
dFdpdGhUeXBlOk5TRXZlbnRUeXBlTW91c2VNb3ZlZCBhdExvY2F0aW9uOnBvaW50SW5XaW5kb3cg
ZmxhZ3M6ZmxhZ3MgdGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRpbWUoKSBjbGlja0NvdW50OjBd
XTsKKyAgICBbc2VsZiBtb3VzZU1vdmVkOltzZWxmIF9tb3VzZUV2ZW50V2l0aFR5cGU6TlNFdmVu
dFR5cGVNb3VzZU1vdmVkIGF0TG9jYXRpb246cG9pbnRJbldpbmRvdyBmbGFnczpmbGFncyB0aW1l
c3RhbXA6c2VsZi5ldmVudFRpbWVzdGFtcCBjbGlja0NvdW50OjBdXTsKIH0KIAogLSAodm9pZClz
ZW5kQ2xpY2tzQXRQb2ludDooTlNQb2ludClwb2ludEluV2luZG93IG51bWJlck9mQ2xpY2tzOihO
U1VJbnRlZ2VyKW51bWJlck9mQ2xpY2tzCkBAIC03MjUsNyArNzU5LDcgQEAgLSAodm9pZCltb3Vz
ZURyYWdUb1BvaW50OihOU1BvaW50KXBvaW50SW5XaW5kb3cKIAogLSAoTlNFdmVudCAqKV9tb3Vz
ZUV2ZW50V2l0aFR5cGU6KE5TRXZlbnRUeXBlKXR5cGUgYXRMb2NhdGlvbjooTlNQb2ludClwb2lu
dEluV2luZG93CiB7Ci0gICAgcmV0dXJuIFtzZWxmIF9tb3VzZUV2ZW50V2l0aFR5cGU6dHlwZSBh
dExvY2F0aW9uOnBvaW50SW5XaW5kb3cgZmxhZ3M6MCB0aW1lc3RhbXA6R2V0Q3VycmVudEV2ZW50
VGltZSgpIGNsaWNrQ291bnQ6MF07CisgICAgcmV0dXJuIFtzZWxmIF9tb3VzZUV2ZW50V2l0aFR5
cGU6dHlwZSBhdExvY2F0aW9uOnBvaW50SW5XaW5kb3cgZmxhZ3M6MCB0aW1lc3RhbXA6c2VsZi5l
dmVudFRpbWVzdGFtcCBjbGlja0NvdW50OjBdOwogfQogCiAtIChOU0V2ZW50ICopX21vdXNlRXZl
bnRXaXRoVHlwZTooTlNFdmVudFR5cGUpdHlwZSBhdExvY2F0aW9uOihOU1BvaW50KWxvY2F0aW9u
SW5XaW5kb3cgZmxhZ3M6KE5TRXZlbnRNb2RpZmllckZsYWdzKWZsYWdzIHRpbWVzdGFtcDooTlNU
aW1lSW50ZXJ2YWwpdGltZXN0YW1wIGNsaWNrQ291bnQ6KE5TVUludGVnZXIpY2xpY2tDb3VudApA
QCAtNzQ5LDggKzc4Myw4IEBAIC0gKHZvaWQpdHlwZUNoYXJhY3RlcjooY2hhciljaGFyYWN0ZXIK
ICAgICBOU1N0cmluZyAqY2hhcmFjdGVyQXNTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIiVjIiAsIGNoYXJhY3Rlcl07CiAgICAgTlNFdmVudFR5cGUga2V5RG93bkV2ZW50VHlw
ZSA9IE5TRXZlbnRUeXBlS2V5RG93bjsKICAgICBOU0V2ZW50VHlwZSBrZXlVcEV2ZW50VHlwZSA9
IE5TRXZlbnRUeXBlS2V5VXA7Ci0gICAgW3NlbGYga2V5RG93bjpbTlNFdmVudCBrZXlFdmVudFdp
dGhUeXBlOmtleURvd25FdmVudFR5cGUgbG9jYXRpb246TlNaZXJvUG9pbnQgbW9kaWZpZXJGbGFn
czowIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1lKCkgd2luZG93TnVtYmVyOltfaG9zdFdp
bmRvdyB3aW5kb3dOdW1iZXJdIGNvbnRleHQ6bmlsIGNoYXJhY3RlcnM6Y2hhcmFjdGVyQXNTdHJp
bmcgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlckFzU3RyaW5nIGlzQVJlcGVh
dDpOTyBrZXlDb2RlOmNoYXJhY3Rlcl1dOwotICAgIFtzZWxmIGtleVVwOltOU0V2ZW50IGtleUV2
ZW50V2l0aFR5cGU6a2V5VXBFdmVudFR5cGUgbG9jYXRpb246TlNaZXJvUG9pbnQgbW9kaWZpZXJG
bGFnczowIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1lKCkgd2luZG93TnVtYmVyOltfaG9z
dFdpbmRvdyB3aW5kb3dOdW1iZXJdIGNvbnRleHQ6bmlsIGNoYXJhY3RlcnM6Y2hhcmFjdGVyQXNT
dHJpbmcgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlckFzU3RyaW5nIGlzQVJl
cGVhdDpOTyBrZXlDb2RlOmNoYXJhY3Rlcl1dOworICAgIFtzZWxmIGtleURvd246W05TRXZlbnQg
a2V5RXZlbnRXaXRoVHlwZTprZXlEb3duRXZlbnRUeXBlIGxvY2F0aW9uOk5TWmVyb1BvaW50IG1v
ZGlmaWVyRmxhZ3M6MCB0aW1lc3RhbXA6c2VsZi5ldmVudFRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6
W19ob3N0V2luZG93IHdpbmRvd051bWJlcl0gY29udGV4dDpuaWwgY2hhcmFjdGVyczpjaGFyYWN0
ZXJBc1N0cmluZyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyQXNTdHJpbmcg
aXNBUmVwZWF0Ok5PIGtleUNvZGU6Y2hhcmFjdGVyXV07CisgICAgW3NlbGYga2V5VXA6W05TRXZl
bnQga2V5RXZlbnRXaXRoVHlwZTprZXlVcEV2ZW50VHlwZSBsb2NhdGlvbjpOU1plcm9Qb2ludCBt
b2RpZmllckZsYWdzOjAgdGltZXN0YW1wOnNlbGYuZXZlbnRUaW1lc3RhbXAgd2luZG93TnVtYmVy
OltfaG9zdFdpbmRvdyB3aW5kb3dOdW1iZXJdIGNvbnRleHQ6bmlsIGNoYXJhY3RlcnM6Y2hhcmFj
dGVyQXNTdHJpbmcgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlckFzU3RyaW5n
IGlzQVJlcGVhdDpOTyBrZXlDb2RlOmNoYXJhY3Rlcl1dOwogfQogCiAtICh2b2lkKXdhaXRGb3JQ
ZW5kaW5nTW91c2VFdmVudHMKQEAgLTc2Myw2ICs3OTcsNyBAQCAtICh2b2lkKXdhaXRGb3JQZW5k
aW5nTW91c2VFdmVudHMKIH0KIAogQGVuZAorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
bWFjL0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMv
RHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KaW5kZXggMDc4ZWExMTAwYzVmZWM1ZmM1YmJmNmZk
ZTk2YmJlMDY0MjRlZDdjYS4uNzA3MWY3YjExNjkwNmM0OWU2MTlmNmEyZGMxM2I0YjA1NjRmYmRj
MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0
b3JNYWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0
b3JNYWMubW0KQEAgLTE3Nyw2ICsxNzcsOCBAQCAtICh2b2lkKXJ1bkZyb206KENHUG9pbnQpZmxp
cHBlZFN0YXJ0TG9jYXRpb24gdG86KENHUG9pbnQpZmxpcHBlZEVuZExvY2F0aW9uCiAgICAgW193
ZWJWaWV3IG1vdXNlRW50ZXJBdFBvaW50Ol9zdGFydExvY2F0aW9uSW5XaW5kb3ddOwogICAgIFtf
d2ViVmlldyBtb3VzZU1vdmVUb1BvaW50Ol9zdGFydExvY2F0aW9uSW5XaW5kb3cgd2l0aEZsYWdz
OjBdOwogICAgIFtfd2ViVmlldyBtb3VzZURvd25BdFBvaW50Ol9zdGFydExvY2F0aW9uSW5XaW5k
b3cgc2ltdWxhdGVQcmVzc3VyZTpOT107CisgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2UgZXhjZWVk
IHRoZSBtaW5pbXVtIDE1MG1zIGRlbGF5IGJldHdlZW4gaGFuZGxpbmcgbW91c2Vkb3duIGFuZCBk
cmFnIHdoZW4gZHJhZ2dpbmcgYSB0ZXh0IHNlbGVjdGlvbi4KKyAgICBbX3dlYlZpZXcgc2V0RXZl
bnRUaW1lc3RhbXBPZmZzZXQ6MC4yNV07CiAgICAgW193ZWJWaWV3IG1vdXNlRHJhZ1RvUG9pbnQ6
W3NlbGYgbG9jYXRpb25JblZpZXdGb3JDdXJyZW50UHJvZ3Jlc3NdXTsKICAgICBbX3dlYlZpZXcg
d2FpdEZvclBlbmRpbmdNb3VzZUV2ZW50c107CiAKQEAgLTE4Niw2ICsxODgsNyBAQCAtICh2b2lk
KXJ1bkZyb206KENHUG9pbnQpZmxpcHBlZFN0YXJ0TG9jYXRpb24gdG86KENHUG9pbnQpZmxpcHBl
ZEVuZExvY2F0aW9uCiAgICAgW193ZWJWaWV3IHdhaXRGb3JQZW5kaW5nTW91c2VFdmVudHNdOwog
CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZfZG9uZVdhaXRpbmdGb3JEcm9wKTsKKyAg
ICBbX3dlYlZpZXcgc2V0RXZlbnRUaW1lc3RhbXBPZmZzZXQ6MF07CiB9CiAKIC0gKHZvaWQpYmVn
aW5EcmFnZ2luZ1Nlc3Npb25JbldlYlZpZXc6KERyYWdBbmREcm9wVGVzdFdLV2ViVmlldyAqKXdl
YlZpZXcgd2l0aEl0ZW1zOihOU0FycmF5PE5TRHJhZ2dpbmdJdGVtICo+ICopaXRlbXMgc291cmNl
OihpZDxOU0RyYWdnaW5nU291cmNlPilzb3VyY2UK
</data>
<flag name="review"
          id="416302"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400950</attachid>
            <date>2020-06-03 11:44:21 -0700</date>
            <delta_ts>2020-06-03 12:41:55 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-212685-20200603114420.patch</filename>
            <type>text/plain</type>
            <size>52468</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJkNjUwZjNhOThjZWUy
ZDEyOTcyZTkzMjU5YWY0ZThhM2MwMjllZC4uNjgyNjMyNDFlYTExNTgwZTYyYjAxNDdkZjViOGVl
MjdmN2EzMDhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMC0wNi0wMiAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBkYXRhVHJhbnNm
ZXIudHlwZXMgaXMgZW1wdHkgd2hlbiBoYW5kbGluZyB0aGUgImRyYWdzdGFydCIgZXZlbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjY4NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjEzNjg0MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
eSBFc3Rlcy4KKworICAgICAgICBJbXBsZW1lbnRzIHNldmVyYWwgY3VycmVudGx5IHN0dWJiZWQg
bWV0aG9kcyBvbiBTdGF0aWNQYXN0ZWJvYXJkLCBzbyB0aGF0IHRoZSBEYXRhVHJhbnNmZXIgcHJv
dmlkZWQgdG8gdGhlIHBhZ2UKKyAgICAgICAgb24gdGhlICJkcmFnc3RhcnQiIGV2ZW50IGNvbnRh
aW5zIHRoZSBET00tZXhwb3NlZCBkYXRhIHR5cGVzIHRoYXQgd2lsbCBiZSB3cml0dGVuIHRvIHRo
ZSBzeXN0ZW0gcGFzdGVib2FyZC4gVGhpcworICAgICAgICBpbmNsdWRlcyAidGV4dC9odG1sIiwg
InRleHQvcGxhaW4iLCBhbmQgInRleHQvdXJpLWxpc3QiLgorCisgICAgICAgIFRlc3RzOiAgRHJh
Z0FuZERyb3BUZXN0cy5EYXRhVHJhbnNmZXJUeXBlc09uRHJhZ1N0YXJ0Rm9yVGV4dFNlbGVjdGlv
bgorICAgICAgICAgICAgICAgIERyYWdBbmREcm9wVGVzdHMuRGF0YVRyYW5zZmVyVHlwZXNPbkRy
YWdTdGFydEZvckltYWdlCisgICAgICAgICAgICAgICAgRHJhZ0FuZERyb3BUZXN0cy5EYXRhVHJh
bnNmZXJUeXBlc09uRHJhZ1N0YXJ0Rm9yTGluaworCisgICAgICAgIC4uLmFzIHdlbGwgYXMgc2V2
ZXJhbCBleGlzdGluZyB0ZXN0cyBpbiBEcmFnQW5kRHJvcFRlc3RzSU9TLm1tIHRoYXQgYXR0ZW1w
dCB0byBzZXQgcGFzdGVib2FyZCBkYXRhIGR1cmluZyB0aGUKKyAgICAgICAgZHJhZ3N0YXJ0IGV2
ZW50OgorCisgICAgICAgICAgICAgICAgRHJhZ0FuZERyb3BUZXN0cy5EYXRhVHJhbnNmZXJTYW5p
dGl6ZUhUTUwKKyAgICAgICAgICAgICAgICBEcmFnQW5kRHJvcFRlc3RzLkRhdGFUcmFuc2ZlclNl
dERhdGFDYW5ub3RXcml0ZVBsYXRmb3JtVHlwZXMKKyAgICAgICAgICAgICAgICBEcmFnQW5kRHJv
cFRlc3RzLkRhdGFUcmFuc2ZlclNldERhdGFJbnZhbGlkVVJMCisgICAgICAgICAgICAgICAgRHJh
Z0FuZERyb3BUZXN0cy5EYXRhVHJhbnNmZXJTZXREYXRhVW5lc2NhcGVkVVJMCisgICAgICAgICAg
ICAgICAgRHJhZ0FuZERyb3BUZXN0cy5EYXRhVHJhbnNmZXJTZXREYXRhVmFsaWRVUkwKKworICAg
ICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5z
ZmVyOjpjb21taXRUb1Bhc3RlYm9hcmQpOgorCisgICAgICAgIE9ubHkgY29tbWl0IGRhdGEgdG8g
dGhlIG5hdGl2ZSBwYXN0ZWJvYXJkIGlmIHRoZSBwYWdlIGFjdHVhbGx5IHRyaWVkIHRvIHdyaXRl
IG9yIG1vZGlmeSB0aGUgZGF0YS4gVGhpcyBhbGxvd3MgdXMKKyAgICAgICAgdG8gcHJlc2VydmUg
ZXhpc3RpbmcgYmVoYXZpb3IgYnkgYWxsb3dpbmcgRHJhZ0NvbnRyb2xsZXIgdG8gd3JpdGUgZHJh
Z2dlZCBkYXRhIHRvIHRoZSBwYXN0ZWJvYXJkIG5vcm1hbGx5IGluIHRoZQorICAgICAgICBjYXNl
IHdoZXJlIHRoZSBwYWdlIGRpZG4ndCBzcGVjaWZ5IGFueSBjdXN0b20gZGF0YS4gSW4gdGhlIGNh
c2Ugd2hlcmUgdGhlIHBhZ2UgZG9lcyBzcGVjaWZ5IGN1c3RvbSBkYXRhLCB3ZSB3aWxsCisgICAg
ICAgIHdyaXRlIHRoaXMgY3VzdG9tIGRhdGEgKmluIGFkZGl0aW9uKiB0byBhbnkgZGVmYXVsdCBk
YXRhIHRoYXQgd2FzIHdyaXR0ZW4gdG8gdGhlIHN0YXRpYyBwYXN0ZWJvYXJkLiBXaGlsZSB0aGlz
CisgICAgICAgIGlzIGEgZGVwYXJ0dXJlIGZyb20gb3VyIGN1cnJlbnQgYmVoYXZpb3IgKHdoaWNo
IGlzIHRvIHRyZWF0IHRoZSBwYXN0ZWJvYXJkIGFzIGEgYmxhbmsgc2xhdGUgdGhhdCBjb250YWlu
cyBvbmx5CisgICAgICAgIHdoYXRldmVyIGN1c3RvbSBkYXRhIHdhcyBwcm92aWRlZCBieSB0aGUg
cGFnZSksIGl0IG1hdGNoZXMgYmVoYXZpb3IgaW4gYm90aCBDaHJvbWUgYW5kIEZpcmVmb3gsIGFu
ZCBpcyBsaWtlbHkKKyAgICAgICAgbW9yZSBjb21wYXRpYmxlIHdpdGggd2VicGFnZXMgdGhhdCBk
b24ndCBoYXZlIFVBLXNwZWNpZmljIGxvZ2ljIHRhcmdldGluZyBXZWJLaXQuCisKKyAgICAgICAg
KiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Ojp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6CisKKyAgICAgICAgQXZvaWQgY2FsbGluZyBp
bnRvIHRoZSBpbmplY3RlZCBidW5kbGUgKGFzIHdlbGwgYXMgd3JpdGluZyBhIGZldyBwYXJ0aWN1
bGFyIG5vbi13ZWItZXhwb3NlZCB0eXBlcywgc3VjaCBhcyB3ZWIKKyAgICAgICAgYXJjaGl2ZSBk
YXRhKSBpbiB0aGUgY2FzZSB3aGVyZSB3ZSdyZSB3cml0aW5nIHRvIGEgc3RhdGljIHBhc3RlYm9h
cmQgKHRoZXJlJ3Mgbm8gcG9pbnQgaW4gZG9pbmcgdGhpcyBmb3IgdGhlCisgICAgICAgIHN0YXRp
YyBwYXN0ZWJvYXJkLCBhbmQgaW4gdGhlIHdvcnN0IGNhc2UsIGl0IGNvdWxkIGNvbmZ1c2Ugc29t
ZSBpbnRlcm5hbCBjbGllbnRzKS4KKworICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IERp
dHRvLgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6CisKKyAgICAgICAgRGl0dG8uIEJ1
dCBhZGRpdGlvbmFsbHksIGludHJvZHVjZSBhIG1hcmt1cCBzdHJpbmcgdG8gUGFzdGVib2FyZElt
YWdlLCBzbyB0aGF0IHdlIHdpbGwgZXhwb3NlIHRoZSAidGV4dC9odG1sIgorICAgICAgICB0eXBl
IHdoZW4gc3RhcnRpbmcgYSBkcmFnIG9uIGFuIGltYWdlIGVsZW1lbnQuCisKKyAgICAgICAgKiBw
YWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVy
OjpzdGFydERyYWcpOgorCisgICAgICAgIE9ubHkgYXR0ZW1wdCB0byBjYWxsIGludG8gYFBhc3Rl
Ym9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZWAgaW4gdGhlIGNhc2Ugd2hl
cmUgdGhlIHBhc3RlYm9hcmQKKyAgICAgICAgc3VwcG9ydHMgdGhpcyB0eXBlIChpLmUuIG9uIG1h
Y09TKS4gVGhpcyBmaXhlcyBhbiBleGlzdGluZyBhc3NlcnRpb24gdGhhdCB3YXMgaGl0IGJ5IG15
IG5ldyBBUEkgdGVzdCwgd2hpY2gKKyAgICAgICAgYXR0ZW1wdHMgdG8gb3ZlcnJpZGUgdGhlIGNv
bnRlbnRzIG9mIHRoZSBwYXN0ZWJvYXJkIHdpdGggY3VzdG9tIGRhdGEgd2hpbGUgc3RhcnRpbmcg
YSBkcmFnIG9uIGEgbGluay4KKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisKKyAgICAgICAgU2lu
Y2UgdGhlIFN0YXRpY1Bhc3RlYm9hcmQgY29udGFpbnMgZGF0YSBiZWZvcmUgdGhlIHBhZ2UgaGFz
IHdyaXR0ZW4gYW55dGhpbmcsIGRvbid0IHVzZSBgUGFzdGVib2FyZDo6aGFzRGF0YSgpYAorICAg
ICAgICB0byBkZXRlcm1pbmUgd2hldGhlciB0aGVyZSdzIGN1c3RvbSBkYXRhOyBpbnN0ZWFkLCB1
c2UgdGhlIG5ldyBgaGFzTm9uRGVmYXVsdERhdGEoKWAgbWV0aG9kIG9uCisgICAgICAgIGBTdGF0
aWNQYXN0ZWJvYXJkYCAoc2VlIGJlbG93KS4KKworICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y2FuV3JpdGVUcnVzdHdvcnRo
eVdlYlVSTHNQYm9hcmRUeXBlKToKKworICAgICAgICBPbiBub24tbWFjT1MgcG9ydHMsIHJldHVy
biBmYWxzZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1Bh
c3RlYm9hcmQ6Omhhc05vbkRlZmF1bHREYXRhIGNvbnN0KToKKworICAgICAgICBLZWVwIHRyYWNr
IG9mIHdoZXRoZXIgdGhlIHBhZ2UgYXR0ZW1wdGVkIHRvIHN0YWdlIGFueSBjdXN0b20gZGF0YSBk
dXJpbmcgImRyYWdzdGFydCIgYnkgbWFpbnRhaW5pbmcgdGhlIHNldCBvZgorICAgICAgICB0eXBl
cyB3cml0dGVuIGJ5IHRoZSBwYWdlLCB2aWEgY2FsbHMgdG8gYHdyaXRlU3RyaW5nKClgIGFuZCBz
aW1pbGFyLiBJJ20gdXNpbmcgYSBzZXQgb2YgdHlwZXMgaGVyZSBpbnN0ZWFkIG9mIGEKKyAgICAg
ICAgc2ltcGxlIGBib29sYCBmbGFnIHRvIGVuc3VyZSBjb3JyZWN0bmVzcyBpbiB0aGUgY2FzZSB3
aGVyZSB0aGUgcGFnZSBhZGRzIGEgdHlwZSwgYW5kIHRoZW4gbGF0ZXIgcmVtb3ZlcyB0aGF0Cisg
ICAgICAgIHNhbWUgY3VzdG9tIHR5cGUsIHN1Y2ggdGhhdCB0aGVyZSBpcyBubyBsb25nZXIgbm9u
LWRlZmF1bHQgZGF0YS4KKworICAgICAgICAoV2ViQ29yZTo6U3RhdGljUGFzdGVib2FyZDo6d3Jp
dGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljUGFzdGVib2FyZDo6d3JpdGVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlU3RyaW5nSW5DdXN0
b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1Bhc3RlYm9hcmQ6OmNsZWFyKToKKwor
ICAgICAgICBTZWUgYWJvdmUuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1Bhc3RlYm9hcmQ6
OndyaXRlTWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRl
UGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlKToK
KworICAgICAgICBJbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBieSB3cml0aW5nIHRvIHRoZSBgUGFz
dGVib2FyZEN1c3RvbURhdGFgLiBUaGVzZSBtZXRob2RzIGFyZSBpbnZva2VkIGJ5IG91ciBvd24g
Y29kZQorICAgICAgICByYXRoZXIgdGhhbiB0aGUgYmluZGluZ3MsIGFuZCBzaG91bGQgb25seSBi
ZSB1c2VkIHRvIHN0YWdlIGRlZmF1bHQgZGF0YSB0eXBlcyB3aGVuIHN0YXJ0aW5nIGEgZHJhZy4K
KworICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNhbldyaXRlVHJ1c3R3b3J0
aHlXZWJVUkxzUGJvYXJkVHlwZSk6CisKIDIwMjAtMDYtMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byBwb3B1
bGF0ZSBhIERhdGFUcmFuc2ZlciBiZWZvcmUgZGlzcGF0Y2hpbmcgYSAiZHJhZ3N0YXJ0IiBldmVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCA4NDYzYTQ4ZTk3NGZiZTNmNzdm
NjY5ZTUxNzgyNDc5Yjk0Y2IxMDk2Li45MDRiZGQ5MzkwNWU0NmZiMjJhNTgwNmI0YWM2MTMyYmZh
M2MwNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtNDI0LDggKzQyNCw4
IEBAIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChj
b25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29uCiB2b2lkIERhdGFUcmFuc2Zlcjo6Y29tbWl0VG9Q
YXN0ZWJvYXJkKFBhc3RlYm9hcmQmIG5hdGl2ZVBhc3RlYm9hcmQpCiB7CiAgICAgQVNTRVJUKGlz
PFN0YXRpY1Bhc3RlYm9hcmQ+KCptX3Bhc3RlYm9hcmQpICYmICFpczxTdGF0aWNQYXN0ZWJvYXJk
PihuYXRpdmVQYXN0ZWJvYXJkKSk7Ci0gICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0
YSA9IGRvd25jYXN0PFN0YXRpY1Bhc3RlYm9hcmQ+KCptX3Bhc3RlYm9hcmQpLnRha2VDdXN0b21E
YXRhKCk7Ci0gICAgaWYgKCFjdXN0b21EYXRhLmhhc0RhdGEoKSkgeworICAgIGF1dG8mIHN0YXRp
Y1Bhc3RlYm9hcmQgPSBkb3duY2FzdDxTdGF0aWNQYXN0ZWJvYXJkPigqbV9wYXN0ZWJvYXJkKTsK
KyAgICBpZiAoIXN0YXRpY1Bhc3RlYm9hcmQuaGFzTm9uRGVmYXVsdERhdGEoKSkgewogICAgICAg
ICAvLyBXZSBjbGVhciB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZCBoZXJlIHRvIGVuc3VyZSB0aGF0
IHRoZSBwYXN0ZWJvYXJkIGRvZXNuJ3QgY29udGFpbiBhbnkgZGF0YQogICAgICAgICAvLyB0aGF0
IG1heSBoYXZlIGJlZW4gd3JpdHRlbiBiZWZvcmUgc3RhcnRpbmcgdGhlIGRyYWcgb3IgY29weWlu
ZywgYW5kIGFmdGVyIGVuZGluZyB0aGUgbGFzdAogICAgICAgICAvLyBkcmFnIHNlc3Npb24gb3Ig
cGFzdGUuIEFmdGVyIHB1c2hpbmcgdGhlIHN0YXRpYyBwYXN0ZWJvYXJkJ3MgY29udGVudHMgdG8g
dGhlIHBsYXRmb3JtLCB0aGUKQEAgLTQzNCw2ICs0MzQsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6
Y29tbWl0VG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIG5hdGl2ZVBhc3RlYm9hcmQpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKKyAgICBhdXRvIGN1c3RvbURhdGEgPSBzdGF0aWNQYXN0ZWJvYXJk
LnRha2VDdXN0b21EYXRhKCk7CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuY3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKCkpIHsKICAgICAgICAgY3Vz
dG9tRGF0YS5zZXRPcmlnaW4obV9vcmlnaW5JZGVudGlmaWVyKTsKICAgICAgICAgbmF0aXZlUGFz
dGVib2FyZC53cml0ZUN1c3RvbURhdGEoeyBjdXN0b21EYXRhIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggZWI1ZmFkYmZlMmUxMmViN2MxYWZh
MDdlYzZkMzMwNzQ3OWFjM2M3Ni4uZGNlNjQxZTZmOTZhNmJlMTJiMzY2Y2Y3ZmQ0YWQ3YmVlNjk0
OTA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBA
IC0xMTksMTMgKzExOSwxNSBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCkKICAgICBQYXN0ZWJvYXJkV2ViQ29udGVudCBjb250
ZW50OwogICAgIGNvbnRlbnQuY29udGVudE9yaWdpbiA9IG1fZG9jdW1lbnQub3JpZ2luSWRlbnRp
ZmllckZvclBhc3RlYm9hcmQoKTsKICAgICBjb250ZW50LmNhblNtYXJ0Q29weU9yRGVsZXRlID0g
Y2FuU21hcnRDb3B5T3JEZWxldGUoKTsKLSAgICBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQgPSBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKLSAgICBjb250ZW50LmRhdGFJblJU
RkRGb3JtYXQgPSBbc3RyaW5nIGNvbnRhaW5zQXR0YWNobWVudHNdID8gZGF0YUluUlRGREZvcm1h
dChzdHJpbmcuZ2V0KCkpIDogbnVsbHB0cjsKLSAgICBjb250ZW50LmRhdGFJblJURkZvcm1hdCA9
IGRhdGFJblJURkZvcm1hdChzdHJpbmcuZ2V0KCkpOwotICAgIGNvbnRlbnQuZGF0YUluQXR0cmli
dXRlZFN0cmluZ0Zvcm1hdCA9IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoc3RyaW5n
LmdldCgpKTsKKyAgICBpZiAoIXBhc3RlYm9hcmQuaXNTdGF0aWMoKSkgeworICAgICAgICBjb250
ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQgPSBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQo
KTsKKyAgICAgICAgY29udGVudC5kYXRhSW5SVEZERm9ybWF0ID0gW3N0cmluZyBjb250YWluc0F0
dGFjaG1lbnRzXSA/IGRhdGFJblJURkRGb3JtYXQoc3RyaW5nLmdldCgpKSA6IG51bGxwdHI7Cisg
ICAgICAgIGNvbnRlbnQuZGF0YUluUlRGRm9ybWF0ID0gZGF0YUluUlRGRm9ybWF0KHN0cmluZy5n
ZXQoKSk7CisgICAgICAgIGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCA9IGFy
Y2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoc3RyaW5nLmdldCgpKTsKKyAgICAgICAgY2xp
ZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uoc2VsZWN0ZWRSYW5nZSgpLmdl
dCgpLCBjb250ZW50LmNsaWVudFR5cGVzLCBjb250ZW50LmNsaWVudERhdGEpOworICAgIH0KICAg
ICBjb250ZW50LmRhdGFJbkhUTUxGb3JtYXQgPSBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKICAg
ICBjb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdCA9IHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9h
cmRXaXRoSW1hZ2VBbHRUZXh0KCk7Ci0gICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2Uoc2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjb250ZW50LmNsaWVudFR5cGVzLCBj
b250ZW50LmNsaWVudERhdGEpOwogCiAgICAgcGFzdGVib2FyZC53cml0ZShjb250ZW50KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA2NzI0ZGI4NTBkYTc1
OTlmODBhNjYyNjY0ZTY1MDhhMzZlNTJmMjI1Li4zMTIzMjVmMjc2MjFjYmI4ODQ5MmEwNDI2ZWU1
OTE2NTY3ZTRhMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0
b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBA
IC0yMDYsMTAgKzIwNiwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQ
YXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVsZW1lbgogICAgIHBhc3RlYm9h
cmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlID0gcGFzdGVib2FyZC5yZXNvdXJjZU1JTUVUeXBlKGNh
Y2hlZEltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5y
ZXNvdXJjZURhdGEgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKIAotICAgIFBvc2l0
aW9uIGJlZm9yZUltYWdlUG9zaXRpb24oJmltYWdlRWxlbWVudCwgUG9zaXRpb246OlBvc2l0aW9u
SXNCZWZvcmVBbmNob3IpOwotICAgIFBvc2l0aW9uIGFmdGVySW1hZ2VQb3NpdGlvbigmaW1hZ2VF
bGVtZW50LCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKTsKLSAgICBhdXRvIGltYWdl
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGltYWdlRWxlbWVudC5kb2N1bWVudCgpLCBiZWZvcmVJbWFn
ZVBvc2l0aW9uLCBhZnRlckltYWdlUG9zaXRpb24pOwotICAgIGNsaWVudCgpLT5nZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKGltYWdlUmFuZ2UucHRyKCksIHBhc3RlYm9hcmRJbWFnZS5j
bGllbnRUeXBlcywgcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGEpOworICAgIGlmICghcGFzdGVi
b2FyZC5pc1N0YXRpYygpKSB7CisgICAgICAgIFBvc2l0aW9uIGJlZm9yZUltYWdlUG9zaXRpb24o
JmltYWdlRWxlbWVudCwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpOworICAgICAg
ICBQb3NpdGlvbiBhZnRlckltYWdlUG9zaXRpb24oJmltYWdlRWxlbWVudCwgUG9zaXRpb246OlBv
c2l0aW9uSXNBZnRlckFuY2hvcik7CisgICAgICAgIGF1dG8gaW1hZ2VSYW5nZSA9IFJhbmdlOjpj
cmVhdGUoaW1hZ2VFbGVtZW50LmRvY3VtZW50KCksIGJlZm9yZUltYWdlUG9zaXRpb24sIGFmdGVy
SW1hZ2VQb3NpdGlvbik7CisgICAgICAgIGNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKGltYWdlUmFuZ2UucHRyKCksIHBhc3RlYm9hcmRJbWFnZS5jbGllbnRUeXBlcywg
cGFzdGVib2FyZEltYWdlLmNsaWVudERhdGEpOworICAgIH0KIAogICAgIHBhc3RlYm9hcmQud3Jp
dGUocGFzdGVib2FyZEltYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQppbmRleCBhNzQxZTUxNDAzNTEzMzk2Nzk3YjI2Y2NkNzdlODZmMjJhY2M5NmIwLi4xY2Q4
YzM5NGE3NjkxYzU1ZjRkOGRkMzZkZTg1OTZlNzA3NzdiN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0yNTAsNyArMjUwLDE0IEBAIHZvaWQgRWRpdG9yOjp3
cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGlt
YWdlRWxlbWVuCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoY2FjaGVkSW1hZ2UpOwogCi0g
ICAgcGFzdGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3JtYXQgPSBpbWFnZUluV2ViQXJj
aGl2ZUZvcm1hdChpbWFnZUVsZW1lbnQpOworICAgIGlmICghcGFzdGVib2FyZC5pc1N0YXRpYygp
KQorICAgICAgICBwYXN0ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCA9IGltYWdl
SW5XZWJBcmNoaXZlRm9ybWF0KGltYWdlRWxlbWVudCk7CisKKyAgICBpZiAoYXV0byBpbWFnZVJh
bmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZShpbWFnZUVsZW1lbnQpKSB7CisgICAgICAgIGF1
dG8gc2VyaWFsaXplQ29tcG9zZWRUcmVlID0gbV9kb2N1bWVudC5zZXR0aW5ncygpLnNlbGVjdGlv
bkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkKCkgPyBTZXJpYWxpemVDb21wb3NlZFRyZWU6
OlllcyA6IFNlcmlhbGl6ZUNvbXBvc2VkVHJlZTo6Tm87CisgICAgICAgIHBhc3RlYm9hcmRJbWFn
ZS5kYXRhSW5IVE1MRm9ybWF0ID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2Uo
VmlzaWJsZVNlbGVjdGlvbiB7ICppbWFnZVJhbmdlIH0sIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRp
bmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFjeSwgc2VyaWFsaXplQ29tcG9zZWRUcmVlKTsKKyAgICB9
CisKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCA9IHVybDsKICAgICBwYXN0ZWJvYXJkSW1h
Z2UudXJsLnRpdGxlID0gdGl0bGU7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC51c2VyVmlzaWJs
ZUZvcm0gPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNGVlMmUyZmIzNTg0ZDc4
OTU0MTYzYmFiOWIxMWM1ZTc1YmYyZGQ1MS4uNDE5M2Q0ZDVkNGU0NmIyZWYyZTE5MzBhYzk3YTUx
MmM5NDgyMjU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTEx
MjMsNyArMTEyMyw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3Jj
LCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgICAgICAgICAgICAg
c3JjLmVkaXRvcigpLmNvcHlVUkwobGlua1VSTCwgdGV4dENvbnRlbnRXaXRoU2ltcGxpZmllZFdo
aXRlU3BhY2UsIGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNldFVSTERhdGEoc3JjLmVkaXRv
cigpLnBhc3RlYm9hcmRXcml0ZXJVUkwobGlua1VSTCwgdGV4dENvbnRlbnRXaXRoU2ltcGxpZmll
ZFdoaXRlU3BhY2UpKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgfSBlbHNlIGlmIChkYXRh
VHJhbnNmZXIucGFzdGVib2FyZCgpLmNhbldyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlw
ZSgpKSB7CiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHBhc3RlYm9hcmQgYWxzbyBjb250
YWlucyB0cnVzdHdvcnRoeSBsaW5rIGRhdGEKICAgICAgICAgICAgIC8vIGJ1dCBkb24ndCBvdmVy
d3JpdGUgbW9yZSBnZW5lcmFsIHBhc3RlYm9hcmQgdHlwZXMuCiAgICAgICAgICAgICBQYXN0ZWJv
YXJkVVJMIHBhc3RlYm9hcmRVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5k
ZXggZDU1NzdlZWYxMTQ4ODYwMzFjOGE3N2RjOGFlNDNhMjY0YzhlYWNlNS4uMzdkNGI0MTAzODk2
MWZhMWZiNzI4N2RkNzRjMWU0NGVjZDJkMDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcApAQCAtMzg3MiwxMyArMzg3MiwxNCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
RHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcgog
ICAgIGludmFsaWRhdGVEYXRhVHJhbnNmZXIoKTsKIAogICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFu
c2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZygpOwotICAgIEhhc05vbkRlZmF1bHRQ
YXN0ZWJvYXJkRGF0YSBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgPSBIYXNOb25EZWZhdWx0
UGFzdGVib2FyZERhdGE6Ok5vOworICAgIGF1dG8gaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRh
ID0gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpObzsKICAgICAKICAgICBpZiAoZHJhZ1N0
YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMpIHsKICAgICAgICAgQVNTRVJUKGRyYWdTdGF0ZSgp
LnNvdXJjZSk7CiAgICAgICAgIGF1dG8gZHJhZ1N0YXJ0RGF0YVRyYW5zZmVyID0gRGF0YVRyYW5z
ZmVyOjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVudChkcmFnU3RhdGUoKS5zb3VyY2UtPmRvY3VtZW50
KCkpOwogICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGRpc3BhdGNoRHJhZ1N0YXJ0
RXZlbnRPblNvdXJjZUVsZW1lbnQoZHJhZ1N0YXJ0RGF0YVRyYW5zZmVyKTsKLSAgICAgICAgaGFz
Tm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhID0gZHJhZ1N0YXJ0RGF0YVRyYW5zZmVyLT5wYXN0ZWJv
YXJkKCkuaGFzRGF0YSgpID8gSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpZZXMgOiBIYXNO
b25EZWZhdWx0UGFzdGVib2FyZERhdGE6Ok5vOworICAgICAgICBpZiAoZG93bmNhc3Q8U3RhdGlj
UGFzdGVib2FyZD4oZHJhZ1N0YXJ0RGF0YVRyYW5zZmVyLT5wYXN0ZWJvYXJkKCkpLmhhc05vbkRl
ZmF1bHREYXRhKCkpCisgICAgICAgICAgICBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgPSBI
YXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGE6OlllczsKICAgICAgICAgZHJhZ1N0YXRlKCkuZGF0
YVRyYW5zZmVyLT5tb3ZlRHJhZ1N0YXRlKFdURk1vdmUoZHJhZ1N0YXJ0RGF0YVRyYW5zZmVyKSk7
CiAKICAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLnNvdXJjZSAmJiBkcmFnU3RhdGUoKS50eXBlID09
IERyYWdTb3VyY2VBY3Rpb25ESFRNTCAmJiAhZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5oYXNE
cmFnSW1hZ2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCA1
MTA2NGZmM2RhODdlM2MzMWU3OWJlYWUyMWRkNTVkYzE5ZmM4OTg0Li45ZjE2ZDg4NjFkMWVhMTVm
NTEzOTM0MzVhM2U0ZTViYzBhN2RiZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmNwcApAQCAtMTAzLDQgKzEwMywxMyBAQCBVUkwgUGFzdGVib2FyZDo6cmVhZFVSTChzaXpl
X3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAorI2lmICFQTEFU
Rk9STShNQUMpCisKK2Jvb2wgUGFzdGVib2FyZDo6Y2FuV3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQ
Ym9hcmRUeXBlKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IGRjYzBhMzkyYjMwZGViMmI3OTM1OGFk
MGViZTdlNDkxNmE5ZmJmNGUuLmU4NGVkMWU5MjA2MGI2MmMxMWQzMjU5ZjBlMzEzZDFlZTQ5MTE0
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTExOCw2ICsxMTgsNyBA
QCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlIHsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZl
Rm9ybWF0OworICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogI2VuZGlmCiAjaWYgIVBMQVRG
T1JNKFdJTikKICAgICBQYXN0ZWJvYXJkVVJMIHVybDsKQEAgLTIxNCw2ICsyMTUsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZFdlYkNv
bnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSA9IFdlYkNvbnRlbnRSZWFkaW5n
UG9saWN5OjpBbnlUeXBlLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCA9IFdURjo6bnVsbG9w
dCk7CiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZEZpbGVS
ZWFkZXImLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCA9IFdURjo6bnVsbG9wdCk7CiAKKyAg
ICBzdGF0aWMgYm9vbCBjYW5Xcml0ZVRydXN0d29ydGh5V2ViVVJMc1Bib2FyZFR5cGUoKTsKKwog
ICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBDb2xvciYpOwogICAg
IHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7
CiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlVHJ1c3R3b3J0aHlXZWJVUkxz
UGJvYXJkVHlwZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7CkBAIC0yMjIsNyArMjI1LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlQ3VzdG9tRGF0YShj
b25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+Jik7CiAKLSAgICBlbnVtIGNsYXNzIEZp
bGVDb250ZW50U3RhdGUgeyBOb0ZpbGVPckltYWdlRGF0YSwgSW5NZW1vcnlJbWFnZSwgTWF5Q29u
dGFpbkZpbGVQYXRocyB9OworICAgIGVudW0gY2xhc3MgRmlsZUNvbnRlbnRTdGF0ZSA6IHVpbnQ4
X3QgeyBOb0ZpbGVPckltYWdlRGF0YSwgSW5NZW1vcnlJbWFnZSwgTWF5Q29udGFpbkZpbGVQYXRo
cyB9OwogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgRmlsZUNvbnRlbnRTdGF0ZSBmaWxlQ29u
dGVudFN0YXRlKCk7CiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCBib29sIGNhblNtYXJ0UmVw
bGFjZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0
ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3Bw
CmluZGV4IGU0ODA2NjYyNGY0ZGM4OWE1MTM5NWIzMGUwNTcwZTUxZjI2ZjNhMjAuLjZmMzIxZmFl
ZmQwZTYxNDkxNTE4YWE1ZGQ0ZGFiZjE4ZmUxMWJlYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCkBAIC01OCwyOCArNTgsMzkgQEAgU3RyaW5nIFN0
YXRpY1Bhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBl
KQogICAgIHJldHVybiBtX2N1c3RvbURhdGEucmVhZFN0cmluZ0luQ3VzdG9tRGF0YSh0eXBlKTsK
IH0KIAorYm9vbCBTdGF0aWNQYXN0ZWJvYXJkOjpoYXNOb25EZWZhdWx0RGF0YSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFtX25vbkRlZmF1bHREYXRhVHlwZXMuaXNFbXB0eSgpOworfQorCiB2b2lk
IFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKKyAgICBtX25vbkRlZmF1bHREYXRhVHlwZXMuYWRkKHR5cGUpOwog
ICAgIG1fY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCB2YWx1ZSk7CiB9CiAKIHZvaWQgU3Rh
dGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKQogeworICAgIG1fbm9uRGVmYXVsdERhdGFUeXBlcy5hZGQodHlwZSk7CiAg
ICAgbV9jdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBXVEZNb3ZlKGRhdGEpKTsKIH0KIAogdm9p
ZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CisgICAgbV9ub25EZWZhdWx0RGF0YVR5cGVz
LmFkZCh0eXBlKTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVTdHJpbmdJbkN1c3RvbURhdGEodHlw
ZSwgdmFsdWUpOwogfQogCiB2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OmNsZWFyKCkKIHsKKyAgICBt
X25vbkRlZmF1bHREYXRhVHlwZXMuY2xlYXIoKTsKKyAgICBtX2ZpbGVDb250ZW50U3RhdGUgPSBQ
YXN0ZWJvYXJkOjpGaWxlQ29udGVudFN0YXRlOjpOb0ZpbGVPckltYWdlRGF0YTsKICAgICBtX2N1
c3RvbURhdGEuY2xlYXIoKTsKIH0KIAogdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjpjbGVhcihjb25z
dCBTdHJpbmcmIHR5cGUpCiB7CisgICAgbV9ub25EZWZhdWx0RGF0YVR5cGVzLnJlbW92ZSh0eXBl
KTsKICAgICBtX2N1c3RvbURhdGEuY2xlYXIodHlwZSk7CiB9CiAKQEAgLTg4LDQgKzk5LDYwIEBA
IFBhc3RlYm9hcmRDdXN0b21EYXRhIFN0YXRpY1Bhc3RlYm9hcmQ6OnRha2VDdXN0b21EYXRhKCkK
ICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2N1c3RvbURhdGEsIHsgfSk7CiB9CiAKK3ZvaWQg
U3RhdGljUGFzdGVib2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJiBtYXJrdXApCit7Cisg
ICAgbV9jdXN0b21EYXRhLndyaXRlU3RyaW5nKCJ0ZXh0L2h0bWwiX3MsIG1hcmt1cCk7Cit9CisK
K3ZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBTbWFydFJlcGxhY2VPcHRpb24pCit7CisgICAgbV9jdXN0b21EYXRhLndyaXRlU3RyaW5nKCJ0
ZXh0L3BsYWluIl9zLCB0ZXh0KTsKK30KKwordm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwpCit7CisgICAgbV9jdXN0b21EYXRhLndyaXRlU3RyaW5n
KCJ0ZXh0L3VyaS1saXN0Il9zLCB1cmwudXJsLnN0cmluZygpKTsKK30KKwordm9pZCBTdGF0aWNQ
YXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIGltYWdlKQoreworICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBpZGVhbGx5IHJlbWVtYmVyIHRoZSBpbWFnZSBkYXRhLCBzbyB0
aGF0IHdoZW4gdGhpcyBTdGF0aWNQYXN0ZWJvYXJkCisgICAgLy8gaXMgY29tbWl0dGVkIHRvIHRo
ZSBuYXRpdmUgcGFzdGVib2FyZCwgd2UnbGwgcHJlc2VydmUgdGhlIGltYWdlIGFzIHdlbGwuIEZv
ciBub3csIHN0aWNrCisgICAgLy8gd2l0aCBvdXIgZXhpc3RpbmcgYmVoYXZpb3IsIHdoaWNoIHBy
ZXZlbnRzIGltYWdlIGRhdGEgZnJvbSBiZWluZyBjb3BpZWQgaW4gdGhlIGNhc2Ugd2hlcmUKKyAg
ICAvLyBhbnkgbm9uLWRlZmF1bHQgZGF0YSB3YXMgd3JpdHRlbiBieSB0aGUgcGFnZS4KKyAgICBt
X2ZpbGVDb250ZW50U3RhdGUgPSBQYXN0ZWJvYXJkOjpGaWxlQ29udGVudFN0YXRlOjpJbk1lbW9y
eUltYWdlOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghaW1hZ2UuZGF0YUluSFRNTEZv
cm1hdC5pc0VtcHR5KCkpCisgICAgICAgIHdyaXRlTWFya3VwKGltYWdlLmRhdGFJbkhUTUxGb3Jt
YXQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaW1hZ2UpOworI2VuZGlmCisKKyNpZiAhUExB
VEZPUk0oV0lOKQorICAgIGlmIChQYXN0ZWJvYXJkOjpjYW5FeHBvc2VVUkxUb0RPTVdoZW5QYXN0
ZWJvYXJkQ29udGFpbnNGaWxlcyhpbWFnZS51cmwudXJsLnN0cmluZygpKSkKKyAgICAgICAgd3Jp
dGUoaW1hZ2UudXJsKTsKKyNlbmRpZgorfQorCit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQoreworICAgIFN0cmluZyBtYXJr
dXA7CisgICAgU3RyaW5nIHRleHQ7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtYXJrdXAg
PSBjb250ZW50LmRhdGFJbkhUTUxGb3JtYXQ7CisgICAgdGV4dCA9IGNvbnRlbnQuZGF0YUluU3Ry
aW5nRm9ybWF0OworI2VsaWYgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQorICAgIG1hcmt1
cCA9IGNvbnRlbnQubWFya3VwOworICAgIHRleHQgPSBjb250ZW50LnRleHQ7CisjZW5kaWYKKwor
ICAgIGlmICghbWFya3VwLmlzRW1wdHkoKSkKKyAgICAgICAgd3JpdGVNYXJrdXAobWFya3VwKTsK
KworICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCisgICAgICAgIHdyaXRlUGxhaW5UZXh0KHRleHQs
IFNtYXJ0UmVwbGFjZU9wdGlvbjo6Q2Fubm90U21hcnRSZXBsYWNlKTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IGE2ZDUwZDhhYjdmYTQ3
NzlkNTY4ZmE5YThmY2IyNGVhZjg3ZDQwMzQuLjY5ZjA3ZjQ0YmJiMDFmY2UwYTY4ZmE4NTIzMzk3
ZTk3OTY0NmUzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bh
c3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJk
LmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogCiAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEg
dGFrZUN1c3RvbURhdGEoKTsKIAorICAgIGJvb2wgaGFzTm9uRGVmYXVsdERhdGEoKSBjb25zdDsK
ICAgICBib29sIGlzU3RhdGljKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
Ym9vbCBoYXNEYXRhKCkgZmluYWw7CkBAIC01OSwyNCArNjAsMjUgQEAgcHVibGljOgogICAgIHZv
aWQgcmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSA9
IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6OkFsbG93VVJMLCBPcHRpb25hbDxzaXplX3Q+ID0g
V1RGOjpudWxsb3B0KSBmaW5hbCB7IH0KICAgICB2b2lkIHJlYWQoUGFzdGVib2FyZFdlYkNvbnRl
bnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSwgT3B0aW9uYWw8c2l6ZV90PiA9IFdU
Rjo6bnVsbG9wdCkgZmluYWwgeyB9CiAKLSAgICB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRV
UkwmKSBmaW5hbCB7IH0KLSAgICB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpIGZp
bmFsIHsgfQotICAgIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmKSBmaW5h
bCB7IH0KKyAgICB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKSBmaW5hbDsKKyAgICB2
b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpIGZpbmFsOworICAgIHZvaWQgd3JpdGUo
Y29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmKSBmaW5hbDsKKyAgICB2b2lkIHdyaXRlTWFya3Vw
KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgd3JpdGVQbGFpblRleHQoY29uc3QgU3Ry
aW5nJiwgU21hcnRSZXBsYWNlT3B0aW9uKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVDdXN0b21E
YXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mKSBmaW5hbCB7IH0KIAotICAg
IFBhc3RlYm9hcmQ6OkZpbGVDb250ZW50U3RhdGUgZmlsZUNvbnRlbnRTdGF0ZSgpIGZpbmFsIHsg
cmV0dXJuIEZpbGVDb250ZW50U3RhdGU6Ok5vRmlsZU9ySW1hZ2VEYXRhOyB9CisgICAgUGFzdGVi
b2FyZDo6RmlsZUNvbnRlbnRTdGF0ZSBmaWxlQ29udGVudFN0YXRlKCkgZmluYWwgeyByZXR1cm4g
bV9maWxlQ29udGVudFN0YXRlOyB9CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQogCi0gICAgdm9pZCB3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmKSBm
aW5hbCB7IH0KLSAgICB2b2lkIHdyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYsIFNtYXJ0UmVw
bGFjZU9wdGlvbikgZmluYWwgeyB9Ci0KICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHZv
aWQgc2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmKSBmaW5hbCB7IH0KICNl
bmRpZgogCiBwcml2YXRlOgogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIG1fY3VzdG9tRGF0YTsK
KyAgICBIYXNoU2V0PFN0cmluZz4gbV9ub25EZWZhdWx0RGF0YVR5cGVzOworICAgIFBhc3RlYm9h
cmQ6OkZpbGVDb250ZW50U3RhdGUgbV9maWxlQ29udGVudFN0YXRlIHsgUGFzdGVib2FyZDo6Rmls
ZUNvbnRlbnRTdGF0ZTo6Tm9GaWxlT3JJbWFnZURhdGEgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggMzAwOGM2Y2NmNTAxMWE2
YjY4ZDdkODQyYWMxYWFhOTY4MDhlZjkyZC4uY2ZlYjFiZWQ1YmI1ZjdjNmYyNDI0M2M5OWZhNDM3
YmNmYTlmOTkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KQEAgLTI4MSw2ICsyODEsOCBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBh
c3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgICAgICBtX2NoYW5nZUNvdW50ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JU
eXBlKGFyY2hpdmVEYXRhLmdldCgpLCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJk
TmFtZSk7CiAgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoYXJjaGl2ZURhdGEuZ2V0KCksIGtV
VFR5cGVXZWJBcmNoaXZlLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICB9CisgICAgaWYgKCFwYXN0
ZWJvYXJkSW1hZ2UuZGF0YUluSFRNTEZvcm1hdC5pc0VtcHR5KCkpCisgICAgICAgIG1fY2hhbmdl
Q291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0
cmluZ0ZvclR5cGUocGFzdGVib2FyZEltYWdlLmRhdGFJbkhUTUxGb3JtYXQsIGxlZ2FjeUhUTUxQ
YXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICB3cml0ZUZpbGVXcmFwcGVy
QXNSVEZEQXR0YWNobWVudChmaWxlV3JhcHBlcihwYXN0ZWJvYXJkSW1hZ2UpLCBtX3Bhc3RlYm9h
cmROYW1lLCBtX2NoYW5nZUNvdW50KTsKIH0KIApAQCAtNzg5LDYgKzc5MSwxMSBAQCB2b2lkIFBh
c3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBs
b2NhdGlvbikKIH0KICNlbmRpZgogCitib29sIFBhc3RlYm9hcmQ6OmNhbldyaXRlVHJ1c3R3b3J0
aHlXZWJVUkxzUGJvYXJkVHlwZSgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0KIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBjNjVmNzJmODkxOTViYmJlM2JiMDc1MTJmNDRjNDNlYjA0YmM3MWE1
Li45OTRhYmY2ZmIzMzNiMzkxNjljMjU0MmI1NTQ4YzI0MGQzMDMwMjhlIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIw
MjAtMDYtMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgZGF0YVRyYW5zZmVyLnR5cGVzIGlzIGVtcHR5IHdoZW4gaGFuZGxpbmcgdGhlICJkcmFnc3Rh
cnQiIGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTI2ODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMzY4NDAyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgQWRkcyBuZXcgQVBJIHRlc3RzIGFuZCB0
ZXN0IGluZnJhc3RydWN0dXJlIHRvIHZlcmlmeSB0aGF0IERhdGFUcmFuc2ZlciB0eXBlcyBhbmQg
ZGF0YSBhcmUgYWNjZXNzaWJsZSBkdXJpbmcKKyAgICAgICAgdGhlICJkcmFnc3RhcnQiIGV2ZW50
LiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0FuZERyb3BUZXN0cy5tbToKKyAgICAgICAg
KC1bVGVzdFdLV2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElEOl0pOgorICAgICAgICAoLVtEcmFn
QW5kRHJvcFNpbXVsYXRvciBkcmFnRnJvbUVsZW1lbnRXaXRoSUQ6dG86XSk6CisKKyAgICAgICAg
QWRkIGEgZmV3ICh2ZXJ5IHNwZWNpYWxpemVkKSBoZWxwZXIgbWV0aG9kcyB0byBhc3Npc3Qgd2l0
aCBzaW11bGF0aW5nIGRyYWdzIG92ZXIgdGhlIHZhcmlvdXMgZWxlbWVudHMgaW4gdGhlIG5ldwor
ICAgICAgICBkcmFnIGFuZCBkcm9wIHRlc3QgaGFybmVzcyBwYWdlIGJlbG93IChkcmFnc3RhcnQt
ZGF0YS5odG1sKS4KKworICAgICAgICAocnVuRHJhZ1N0YXJ0RGF0YVRlc3RDYXNlKToKKworICAg
ICAgICBUZXN0IHRoZSBmb2xsb3dpbmcgc2NlbmFyaW9zIChzcGxpdCBiZXR3ZWVuIHRocmVlIEFQ
SSB0ZXN0cykgYnkgZHVtcGluZyB0aGUgcmVzdWx0aW5nIERhdGFUcmFuc2ZlciB0eXBlcyBhbmQK
KyAgICAgICAgdGhlaXIgZGF0YSBzdHJpbmdzLCBhbmQgb2JzZXJ2aW5nIHRoZSByZXN1bHRzOgor
CisgICAgICAgIC0gRHJhZ2dpbmcgYSBub3JtYWwgdGV4dCBzZWxlY3Rpb24uCisgICAgICAgIC0g
RHJhZ2dpbmcgYSBub3JtYWwgdGV4dCBzZWxlY3Rpb24sIGFuZCB0aGVuIGFkZGluZyBhIFVSTCBz
dHJpbmcuCisgICAgICAgIC0gRHJhZ2dpbmcgYSBub3JtYWwgdGV4dCBzZWxlY3Rpb24sIGFuZCB0
aGVuIGFkZGluZyBhIGN1c3RvbSBwYXN0ZWJvYXJkIHR5cGUuCisgICAgICAgIC0gRHJhZ2dpbmcg
YSBub3JtYWwgdGV4dCBzZWxlY3Rpb24sIGJ1dCB0aGVuIHJlcGxhY2luZyB0aGUgZGF0YSB3aXRo
IGp1c3QgYSBVUkwgc3RyaW5nLgorICAgICAgICAtIERyYWdnaW5nIGEgbm9ybWFsIHRleHQgc2Vs
ZWN0aW9uLCBidXQgdGhlbiByZXBsYWNpbmcgdGhlIGRhdGEgd2l0aCBqdXN0IGEgY3VzdG9tIGRh
dGEgdHlwZS4KKyAgICAgICAgLSBEcmFnZ2luZyBhbiBpbWFnZSBlbGVtZW50LgorICAgICAgICAt
IERyYWdnaW5nIGFuIGltYWdlIGVsZW1lbnQsIGFuZCB0aGVuIG92ZXJyaWRpbmcgdGhlIHBsYWlu
IHRleHQgZGF0YS4KKyAgICAgICAgLSBEcmFnZ2luZyBhIGxpbmsgKGFuY2hvciBlbGVtZW50KS4K
KyAgICAgICAgLSBEcmFnZ2luZyBhIGxpbmssIGFuZCB0aGVuIGFkZGluZyBhIGN1c3RvbSB0eXBl
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9kcmFnc3RhcnQt
ZGF0YS5odG1sOiBBZGRlZC4KKworICAgICAgICBBZGQgYSBuZXcgdGVzdCBoYXJuZXNzIHRvIGhl
bHAgdGVzdCBEYXRhVHJhbnNmZXIgdHlwZXMgd2hlbiBzdGFydGluZyBhIGRyYWcuIFRoaXMgdGVz
dCBwYWdlIGNhbiBhbHNvIGJlIHVzZWQgYXMKKyAgICAgICAgYSBtYW51YWwgdGVzdCBoYXJuZXNz
LCBieSBzaW1wbHkgb3BlbmluZyB0aGUgdGVzdCBwYWdlLCBzdGFydGluZyBkcmFncyBvbiB0aGUg
dmFyaW91cyBlbGVtZW50cyBhbmQgb2JzZXJ2aW5nIHRoZQorICAgICAgICBvdXRwdXQgaW4gdGhl
IHRleHRhcmVhLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9k
dW1wLWRhdGF0cmFuc2Zlci10eXBlcy5odG1sOgorCisgICAgICAgIFR3ZWFrIHRoaXMgdGVzdCBw
YWdlIHRvIHJlcGxhY2UgdGhlIERhdGFUcmFuc2ZlciB3aXRoIGN1c3RvbSBkYXRhIChyYXRoZXIg
dGhhbiBzaW1wbHkgYXBwZW5kIGl0KSBieSBjYWxsaW5nCisgICAgICAgIGBEYXRhVHJhbnNmZXIu
Y2xlYXJEYXRhKClgIHByaW9yIHRvIHdyaXRpbmcgdGhlIGN1c3RvbSB0eXBlcy4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW06CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtUZXN0V0tXZWJW
aWV3SG9zdFdpbmRvdyBpbml0V2l0aFdlYlZpZXc6Y29udGVudFJlY3Q6c3R5bGVNYXNrOmJhY2tp
bmc6ZGVmZXI6XSk6CisKKyAgICAgICAgQWRkIGEgYF9fd2Vha2AgcmVmZXJlbmNlIG9uIFRlc3RX
S1dlYlZpZXdIb3N0V2luZG93IGJhY2sgdG8gdGhlIFRlc3RXS1dlYlZpZXcsIHNvIHRoYXQgd2Ug
Y2FuIGNvbnN1bHQKKyAgICAgICAgYC1ldmVudFRpbWVzdGFtcGAgd2hlbiBzeW50aGVzaXppbmcg
bW91c2UgZXZlbnRzIG9uIG1hY09TIGR1cmluZyBBUEkgdGVzdHMuCisKKyAgICAgICAgKC1bVGVz
dFdLV2ViVmlld0hvc3RXaW5kb3cgX21vdXNlRG93bkF0UG9pbnQ6c2ltdWxhdGVQcmVzc3VyZTpj
bGlja0NvdW50Ol0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3SG9zdFdpbmRvdyBfbW91c2VV
cEF0UG9pbnQ6Y2xpY2tDb3VudDpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlld0hvc3RXaW5k
b3cgaW5pdFdpdGhXZWJWaWV3OmZyYW1lOl0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IF9z
ZXRVcFRlc3RXaW5kb3c6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc2V0RXZlbnRUaW1l
c3RhbXBPZmZzZXQ6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgZXZlbnRUaW1lc3RhbXBd
KToKKworICAgICAgICBBZGQgYSBtZWNoYW5pc20gdG8gb2Zmc2V0IHN5bnRoZXRpYyBldmVudCB0
aW1lc3RhbXBzIGJ5IGEgZ2l2ZW4gdGltZSBpbnRlcnZhbCAoaS5lLiB0aGUgZXZlbnQgdGltZXN0
YW1wIG9mZnNldCkuCisKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBtb3VzZU1vdmVUb1BvaW50
OndpdGhGbGFnczpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBfbW91c2VFdmVudFdpdGhU
eXBlOmF0TG9jYXRpb246XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgdHlwZUNoYXJhY3Rl
cjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9EcmFnQW5kRHJvcFNpbXVsYXRvck1h
Yy5tbToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgcnVuRnJvbTp0bzpdKToKKwor
ICAgICAgICBXaGlsZSBzaW11bGF0aW5nIGRyYWcgYW5kIGRyb3Agb24gbWFjT1MsIHVzZSBgLXNl
dEV2ZW50VGltZXN0YW1wT2Zmc2V0OmAgdG8gImxlYXAgZm9yd2FyZCIgaW4gdGltZSwgc28gdGhh
dCB0aGUKKyAgICAgICAgMTUwIG1pbGxpc2Vjb25kIGRlbGF5IHdoZW4gZHJhZ2dpbmcgYSB0ZXh0
IHNlbGVjdGlvbiBkb2Vzbid0IHByZXZlbnQgZHJhZ3MgZnJvbSBiZWdpbm5pbmcuCisKIDIwMjAt
MDYtMDIgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVy
dCBGRUFUVVJFU19ERUZJTkVTIHJlbGF0ZWQgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA1ODAwNTY1ZDJiODNlMDY0ZThiZDY1ZTM4MmZlMzFlOWQyZWVlZGE0Li40MjllYTk5ZGVh
NDk0ODk3Y2QwZmJhODM2MzU2MTkwYWExZDAzNTY2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTEwMiw2ICsxMTAyLDcgQEAKIAkJRjQ2OUZCMjQxRjAxODA0QjAwNDAxNTM5IC8qIGNvbnRl
bnRlZGl0YWJsZS1hbmQtdGFyZ2V0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2OUZCMjMxRjAxODAzNTAwNDAxNTM5IC8qIGNvbnRl
bnRlZGl0YWJsZS1hbmQtdGFyZ2V0Lmh0bWwgKi87IH07CiAJCUY0NkEwOTVBMUVEOEE2RTYwMEQ0
QUE1NSAvKiBhcHBsZS5naWYgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ3RDMwRUIxRUQyODYxOTAwMDQ4MkUxIC8qIGFwcGxlLmdpZiAqLzsg
fTsKIAkJRjQ2QTA5NUIxRUQ4QTZFNjAwRDRBQTU1IC8qIGdpZi1hbmQtZmlsZS1pbnB1dC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
N0QzMEVEMUVEMjhBNkMwMDA0ODJFMSAvKiBnaWYtYW5kLWZpbGUtaW5wdXQuaHRtbCAqLzsgfTsK
KwkJRjQ2QkQ1NjkyNDg3MDY0MzAwODI4MkQ2IC8qIGRyYWdzdGFydC1kYXRhLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2QkQ1Njgy
NDg3MDYyRDAwODI4MkQ2IC8qIGRyYWdzdGFydC1kYXRhLmh0bWwgKi87IH07CiAJCUY0NzcyODk5
MUU0QUUzQzEwMDdBQkY2QSAvKiBmdWxsLXBhZ2UtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3NzI4OTgx
RTRBRTNBRDAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCAqLzsgfTsK
IAkJRjQ3REZCMjYyMUE4NzhERjAwMDIxRkI2IC8qIGRhdGEtZGV0ZWN0b3JzLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3REZCMjQy
MUE4NzA0QTAwMDIxRkI2IC8qIGRhdGEtZGV0ZWN0b3JzLmh0bWwgKi87IH07CiAJCUY0ODExRTU5
MjE5NDBCREUwMEE1RTBGRCAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODExRTU4MjE5NDBCNDQwMEE1RTBG
RCAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSAqLzsgfTsKQEAgLTEzMTgsNiArMTMxOSw3IEBA
CiAJCQkJNTcxNEVDQkIxQ0E4QkZFNDAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFs
VVJMRnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNEEzMkVDNDFGMDVGMzg1
MDA0N0M1NDQgLyogZHJhZ3N0YXJ0LWNoYW5nZS1zZWxlY3Rpb24tb2Zmc2NyZWVuLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRENUU0RTgxRjBDNUQzODAwOEMxQTQ5IC8qIGRyYWdz
dGFydC1jbGVhci1zZWxlY3Rpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQlGNDZC
RDU2OTI0ODcwNjQzMDA4MjgyRDYgLyogZHJhZ3N0YXJ0LWRhdGEuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQlGNDE5NEFEMTFGNUEzMjAxMDBBREQ4M0YgLyogZHJvcC10YXJnZXRzLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMkVCMjlENUUxRjc2MkRCOTAwMjNBNUYxIC8q
IGR1bXAtZGF0YXRyYW5zZmVyLXR5cGVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
QTE1NTAyMkMxRTA1MEQwMzAwQTI0QzU3IC8qIGR1cGxpY2F0ZS1jb21wbGV0aW9uLWhhbmRsZXIt
Y2FsbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTI3NjcsNiArMjc2OSw3IEBACiAJ
CUY0Njg0OUJEMUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0cy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFVJUGFzdGVib2FyZFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNDY4NDlCRjFFRUY1RURDMDBCOTM3RkUgLyogcmljaC1hbmQtcGxhaW4tdGV4
dC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gInJpY2gtYW5kLXBsYWluLXRleHQuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0NjlGQjIzMUYwMTgwMzUwMDQwMTUzOSAvKiBjb250ZW50ZWRp
dGFibGUtYW5kLXRhcmdldC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImNvbnRlbnRlZGl0YWJsZS1hbmQtdGFy
Z2V0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDZCRDU2ODI0ODcwNjJE
MDA4MjgyRDYgLyogZHJhZ3N0YXJ0LWRhdGEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJkcmFnc3RhcnQtZGF0YS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQ3NzI4OTgxRTRBRTNBRDAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJmdWxsLXBhZ2UtY29udGVudGVkaXRhYmxl
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDdEMzBFQjFFRDI4NjE5MDAw
NDgyRTEgLyogYXBwbGUuZ2lmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gaW1hZ2UuZ2lmOyBwYXRoID0gYXBwbGUuZ2lmOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNDdEMzBFRDFFRDI4QTZDMDAwNDgyRTEgLyogZ2lmLWFuZC1maWxlLWlu
cHV0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAiZ2lmLWFuZC1maWxlLWlucHV0Lmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMzU2MCw2ICszNTYzLDcgQEAKIAkJCQk1NzE0RUNCQTFDQThC
RkQxMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1sICovLAog
CQkJCUY0QTMyRUMzMUYwNUYzNzgwMDQ3QzU0NCAvKiBkcmFnc3RhcnQtY2hhbmdlLXNlbGVjdGlv
bi1vZmZzY3JlZW4uaHRtbCAqLywKIAkJCQlGNEQ1RTRFNzFGMEM1RDI3MDA4QzFBNDkgLyogZHJh
Z3N0YXJ0LWNsZWFyLXNlbGVjdGlvbi5odG1sICovLAorCQkJCUY0NkJENTY4MjQ4NzA2MkQwMDgy
ODJENiAvKiBkcmFnc3RhcnQtZGF0YS5odG1sICovLAogCQkJCUY0MTk0QUQwMUY1QTJFQTUwMEFE
RDgzRiAvKiBkcm9wLXRhcmdldHMuaHRtbCAqLywKIAkJCQkyRUIyOUQ1RDFGNzYyREE1MDAyM0E1
RjEgLyogZHVtcC1kYXRhdHJhbnNmZXItdHlwZXMuaHRtbCAqLywKIAkJCQlBMTU1MDIyQjFFMDUw
QkM1MDBBMjRDNTcgLyogZHVwbGljYXRlLWNvbXBsZXRpb24taGFuZGxlci1jYWxscy5odG1sICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EcmFn
QW5kRHJvcFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
cmFnQW5kRHJvcFRlc3RzLm1tCmluZGV4IDMzZGYxNTkxNDA4MzJlYjc5MmMzMjcwNGZiMDJiZWJi
Zjc0NTU2M2MuLmU3N2U1YTUzOTY0Nzk1ZGRhMzU2NjczZjk4OGRmNGJhNDVmOWM4MjcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0FuZERyb3BU
ZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RyYWdB
bmREcm9wVGVzdHMubW0KQEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlRlc3QuaCIKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmICFQTEFU
Rk9STShNQUNDQVRBTFlTVCkKIApAQCAtMzYsNiArMzcsMzMgQEAKICNpbXBvcnQgPE1vYmlsZUNv
cmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNlbmRpZgogCitAaW1wbGVtZW50YXRp
b24gVGVzdFdLV2ViVmlldyAoRHJhZ0FuZERyb3BUZXN0cykKKworLSAodm9pZClzZWxlY3RFbGVt
ZW50V2l0aElEOihOU1N0cmluZyAqKWVsZW1lbnRJRAoreworICAgIFtzZWxmIGV2YWx1YXRlSmF2
YVNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImdldFNlbGVjdGlvbigpLnNlbGVj
dEFsbENoaWxkcmVuKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCclQCcpKSIsIGVsZW1lbnRJRF0g
Y29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBbc2VsZiB3YWl0Rm9yTmV4dFByZXNlbnRhdGlv
blVwZGF0ZV07Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERyYWdBbmREcm9wU2ltdWxh
dG9yIChEcmFnQW5kRHJvcFRlc3RzKQorCistICh2b2lkKWRyYWdGcm9tRWxlbWVudFdpdGhJRDoo
TlNTdHJpbmcgKillbGVtZW50SUQgdG86KENHUG9pbnQpZGVzdGluYXRpb24KK3sKKyAgICBOU0Fy
cmF5PE5TTnVtYmVyICo+ICpyZWN0VmFsdWVzID0gW3NlbGYud2ViVmlldyBvYmplY3RCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiKCgpID0+IHsiCisg
ICAgICAgICIgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCclQCcp
OyIKKyAgICAgICAgIiAgICBjb25zdCBib3VuZHMgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpOyIKKyAgICAgICAgIiAgICByZXR1cm4gW2JvdW5kcy5sZWZ0LCBib3VuZHMudG9wLCBi
b3VuZHMud2lkdGgsIGJvdW5kcy5oZWlnaHRdOyIKKyAgICAgICAgIn0pKCk7IiwgZWxlbWVudElE
XV07CisKKyAgICBhdXRvIGJvdW5kcyA9IENHUmVjdE1ha2UocmVjdFZhbHVlc1swXS5mbG9hdFZh
bHVlLCByZWN0VmFsdWVzWzFdLmZsb2F0VmFsdWUsIHJlY3RWYWx1ZXNbMl0uZmxvYXRWYWx1ZSwg
cmVjdFZhbHVlc1szXS5mbG9hdFZhbHVlKTsKKyAgICBhdXRvIG1pZFBvaW50ID0gQ0dQb2ludE1h
a2UoQ0dSZWN0R2V0TWlkWChib3VuZHMpLCBDR1JlY3RHZXRNaWRZKGJvdW5kcykpOworICAgIFtz
ZWxmIHJ1bkZyb206bWlkUG9pbnQgdG86ZGVzdGluYXRpb25dOworfQorCitAZW5kCisKIFRFU1Qo
RHJhZ0FuZERyb3BUZXN0cywgTW9kZXJuV2ViQXJjaGl2ZVR5cGUpCiB7CiAgICAgTlNEYXRhICpt
YXJrdXBEYXRhID0gW0AiPHN0cm9uZz48aT5IZWxsbyB3b3JsZDwvaT48L3N0cm9uZz4iIGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKQEAgLTE2MCw2ICsxODgsMTI3IEBA
IFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgUHJldmVudGluZ01vdXNlRG93blNob3VsZFByZXZlbnRE
cmFnU3RhcnQpCiAgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAIm9ic2VydmVkTW91c2Vkb3duIl0uYm9vbFZhbHVlKTsKIH0KIAorc3RydWN0IERy
YWdTdGFydERhdGEgeworICAgIEJPT0wgY29udGFpbnNGaWxlIHsgTk8gfTsKKyAgICBOU1N0cmlu
ZyAqdGV4dCB7IG5pbCB9OworICAgIE5TU3RyaW5nICp1cmwgeyBuaWwgfTsKKyAgICBOU1N0cmlu
ZyAqaHRtbCB7IG5pbCB9OworICAgIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAq
PiAqY3VzdG9tRGF0YSB7IG5pbCB9OworfTsKKworc3RhdGljIERyYWdTdGFydERhdGEgcnVuRHJh
Z1N0YXJ0RGF0YVRlc3RDYXNlKERyYWdBbmREcm9wU2ltdWxhdG9yICpzaW11bGF0b3IsIE5TU3Ry
aW5nICplbGVtZW50SUQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gW3NpbXVsYXRvciB3ZWJWaWV3
XTsKKyAgICBOU1N0cmluZyAqdGFnTmFtZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnJUAnKS50YWdOYW1lIiwgZWxlbWVudElEXV07CisgICAgaWYgKCFbdGFnTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6QCJJTUciXSAmJiAhW3RhZ05hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQSJdKQor
ICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElEOmVsZW1lbnRJRF07CisKKyAgICBb
c2ltdWxhdG9yIGRyYWdGcm9tRWxlbWVudFdpdGhJRDplbGVtZW50SUQgdG86Q0dQb2ludE1ha2Uo
NDAwLCA0MDApXTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeTxOU1N0cmluZyAq
LCBOU1N0cmluZyAqPj4gYWxsRGF0YSA9IGFkb3B0TlMoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJhbGxEYXRhIl0gbXV0YWJsZUNvcHldKTsKKyAgICBEcmFnU3RhcnRE
YXRhIHJlc3VsdDsKKyAgICByZXN1bHQudGV4dCA9IFthbGxEYXRhIG9iamVjdEZvcktleTpAInRl
eHQvcGxhaW4iXTsKKyAgICByZXN1bHQudXJsID0gW2FsbERhdGEgb2JqZWN0Rm9yS2V5OkAidGV4
dC91cmktbGlzdCJdOworICAgIHJlc3VsdC5odG1sID0gW2FsbERhdGEgb2JqZWN0Rm9yS2V5OkAi
dGV4dC9odG1sIl07CisgICAgcmVzdWx0LmNvbnRhaW5zRmlsZSA9ICEhW2FsbERhdGEgb2JqZWN0
Rm9yS2V5OkAiRmlsZXMiXTsKKyAgICBbYWxsRGF0YSByZW1vdmVPYmplY3RGb3JLZXk6QCJ0ZXh0
L3BsYWluIl07CisgICAgW2FsbERhdGEgcmVtb3ZlT2JqZWN0Rm9yS2V5OkAidGV4dC91cmktbGlz
dCJdOworICAgIFthbGxEYXRhIHJlbW92ZU9iamVjdEZvcktleTpAInRleHQvaHRtbCJdOworICAg
IFthbGxEYXRhIHJlbW92ZU9iamVjdEZvcktleTpAIkZpbGVzIl07CisgICAgaWYgKFthbGxEYXRh
IGNvdW50XSkKKyAgICAgICAgcmVzdWx0LmN1c3RvbURhdGEgPSBhbGxEYXRhLmF1dG9yZWxlYXNl
KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRh
VHJhbnNmZXJUeXBlc09uRHJhZ1N0YXJ0Rm9yVGV4dFNlbGVjdGlvbikKK3sKKyAgICBhdXRvIHNp
bXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhX
ZWJWaWV3RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA1MDAsIDUwMCldKTsKKyAgICBbW3NpbXVsYXRv
ciB3ZWJWaWV3XSBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJkcmFnc3RhcnQtZGF0
YSJdOworCisgICAgYXV0byByZXN1bHQgPSBydW5EcmFnU3RhcnREYXRhVGVzdENhc2Uoc2ltdWxh
dG9yLmdldCgpLCBAInJlZ3VsYXIiKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIlJlZ3VsYXIgdGV4
dCIsIHJlc3VsdC50ZXh0KTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQudXJsKTsKKyAgICBFWFBF
Q1RfVFJVRShbcmVzdWx0Lmh0bWwgY29udGFpbnNTdHJpbmc6QCJSZWd1bGFyIHRleHQiXSk7Cisg
ICAgRVhQRUNUX05VTEwocmVzdWx0LmN1c3RvbURhdGEpOworICAgIEVYUEVDVF9GQUxTRShyZXN1
bHQuY29udGFpbnNGaWxlKTsKKworICAgIHJlc3VsdCA9IHJ1bkRyYWdTdGFydERhdGFUZXN0Q2Fz
ZShzaW11bGF0b3IuZ2V0KCksIEAicmVndWxhci11cmwiKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
IlJlZ3VsYXIgdGV4dCArIFVSTCBkYXRhIiwgcmVzdWx0LnRleHQpOworICAgIEVYUEVDVF9XS19T
VFJFUSgiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbSIsIHJlc3VsdC51cmwpOworICAgIEVYUEVDVF9U
UlVFKFtyZXN1bHQuaHRtbCBjb250YWluc1N0cmluZzpAIlJlZ3VsYXIgdGV4dCArIFVSTCBkYXRh
Il0pOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdC5jdXN0b21EYXRhKTsKKyAgICBFWFBFQ1RfRkFM
U0UocmVzdWx0LmNvbnRhaW5zRmlsZSk7CisKKyAgICByZXN1bHQgPSBydW5EcmFnU3RhcnREYXRh
VGVzdENhc2Uoc2ltdWxhdG9yLmdldCgpLCBAInJlZ3VsYXItY3VzdG9tIik7CisgICAgRVhQRUNU
X1dLX1NUUkVRKCJSZWd1bGFyIHRleHQgKyBjdXN0b20gZGF0YSIsIHJlc3VsdC50ZXh0KTsKKyAg
ICBFWFBFQ1RfTlVMTChyZXN1bHQudXJsKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVzdWx0Lmh0bWwg
Y29udGFpbnNTdHJpbmc6QCJSZWd1bGFyIHRleHQgKyBjdXN0b20gZGF0YSJdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIkhlbGxvIHdvcmxkIiwgcmVzdWx0LmN1c3RvbURhdGFbQCJ0ZXh0L2ZvbyJd
KTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0LmNvbnRhaW5zRmlsZSk7CisKKyAgICByZXN1bHQg
PSBydW5EcmFnU3RhcnREYXRhVGVzdENhc2Uoc2ltdWxhdG9yLmdldCgpLCBAInVybCIpOworICAg
IEVYUEVDVF9OVUxMKHJlc3VsdC50ZXh0KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImh0dHBzOi8v
d3d3Lmdvb2dsZS5jb20iLCByZXN1bHQudXJsKTsKKyAgICBFWFBFQ1RfTlVMTChbcmVzdWx0Lmh0
bWwgY29udGFpbnNTdHJpbmc6QCJSZWd1bGFyIHRleHQgKyBjdXN0b20gZGF0YSJdKTsKKyAgICBF
WFBFQ1RfTlVMTChyZXN1bHQuY3VzdG9tRGF0YSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdC5j
b250YWluc0ZpbGUpOworCisgICAgcmVzdWx0ID0gcnVuRHJhZ1N0YXJ0RGF0YVRlc3RDYXNlKHNp
bXVsYXRvci5nZXQoKSwgQCJjdXN0b20iKTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQudGV4dCk7
CisgICAgRVhQRUNUX05VTEwocmVzdWx0LnVybCk7CisgICAgRVhQRUNUX05VTEwocmVzdWx0Lmh0
bWwpOworICAgIEVYUEVDVF9XS19TVFJFUSgiSGVsbG8gd29ybGQiLCByZXN1bHQuY3VzdG9tRGF0
YVtAInRleHQvZm9vIl0pOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQuY29udGFpbnNGaWxlKTsK
K30KKworVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRhVHJhbnNmZXJUeXBlc09uRHJhZ1N0YXJ0
Rm9ySW1hZ2UpCit7CisgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BT
aW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlld0ZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgNTAw
LCA1MDApXSk7CisgICAgW1tzaW11bGF0b3Igd2ViVmlld10gc3luY2hyb25vdXNseUxvYWRUZXN0
UGFnZU5hbWVkOkAiZHJhZ3N0YXJ0LWRhdGEiXTsKKworICAgIGF1dG8gcmVzdWx0ID0gcnVuRHJh
Z1N0YXJ0RGF0YVRlc3RDYXNlKHNpbXVsYXRvci5nZXQoKSwgQCJpbWFnZSIpOworICAgIEVYUEVD
VF9OVUxMKHJlc3VsdC50ZXh0KTsKKyAgICAvLyBUaGUgVVJMIHNob3VsZCBiZSBuaWwgaGVyZSBi
ZWNhdXNlIHRoZSBpbWFnZSBzb3VyY2UgaXMgYSBmaWxlIFVSTCwgc28gd2Ugc2hvdWQgYXZvaWQg
ZXhwb3NpbmcgaXQgdG8gdGhlIHBhZ2UuCisgICAgRVhQRUNUX05VTEwocmVzdWx0LnVybCk7Cisj
aWYgUExBVEZPUk0oTUFDKQorICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQuaHRtbCBjb250YWluc1N0
cmluZzpAIjxpbWciXSk7CisjZWxzZQorICAgIEVYUEVDVF9OVUxMKHJlc3VsdC5odG1sKTsKKyNl
bmRpZgorICAgIEVYUEVDVF9OVUxMKHJlc3VsdC5jdXN0b21EYXRhKTsKKyAgICBFWFBFQ1RfVFJV
RShyZXN1bHQuY29udGFpbnNGaWxlKTsKKworICAgIHJlc3VsdCA9IHJ1bkRyYWdTdGFydERhdGFU
ZXN0Q2FzZShzaW11bGF0b3IuZ2V0KCksIEAiaW1hZ2UtdGV4dCIpOworICAgIEVYUEVDVF9XS19T
VFJFUSgiVGhpcyBpcyBhbiBpbWFnZSBvZiBDdXBlcnRpbm8uIiwgcmVzdWx0LnRleHQpOworICAg
IEVYUEVDVF9OVUxMKHJlc3VsdC51cmwpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0Lmh0bWwgY29udGFpbnNTdHJpbmc6QCI8aW1nIl0pOworI2Vsc2UKKyAgICBF
WFBFQ1RfTlVMTChyZXN1bHQuaHRtbCk7CisjZW5kaWYKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQu
Y3VzdG9tRGF0YSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0LmNvbnRhaW5zRmlsZSk7Cit9CisK
K1RFU1QoRHJhZ0FuZERyb3BUZXN0cywgRGF0YVRyYW5zZmVyVHlwZXNPbkRyYWdTdGFydEZvckxp
bmspCit7CisgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0
b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlld0ZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgNTAwLCA4MDAp
XSk7CisgICAgW1tzaW11bGF0b3Igd2ViVmlld10gc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5h
bWVkOkAiZHJhZ3N0YXJ0LWRhdGEiXTsKKworICAgIGF1dG8gcmVzdWx0ID0gcnVuRHJhZ1N0YXJ0
RGF0YVRlc3RDYXNlKHNpbXVsYXRvci5nZXQoKSwgQCJsaW5rIik7CisgICAgRVhQRUNUX05VTEwo
cmVzdWx0LnRleHQpOworICAgIEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93d3cuYXBwbGUuY29t
LyIsIHJlc3VsdC51cmwpOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdC5odG1sKTsKKyAgICBFWFBF
Q1RfTlVMTChyZXN1bHQuY3VzdG9tRGF0YSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdC5jb250
YWluc0ZpbGUpOworCisgICAgcmVzdWx0ID0gcnVuRHJhZ1N0YXJ0RGF0YVRlc3RDYXNlKHNpbXVs
YXRvci5nZXQoKSwgQCJsaW5rLWN1c3RvbSIpOworICAgIEVYUEVDVF9OVUxMKHJlc3VsdC50ZXh0
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImh0dHBzOi8vd3d3LmFwcGxlLmNvbS8iLCByZXN1bHQu
dXJsKTsKKyAgICBFWFBFQ1RfTlVMTChyZXN1bHQuaHRtbCk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KCJiYXIiLCByZXN1bHQuY3VzdG9tRGF0YVtAInRleHQvZm9vIl0pOworICAgIEVYUEVDVF9GQUxT
RShyZXN1bHQuY29udGFpbnNGaWxlKTsKK30KKwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQogCiBURVNUKERyYWdBbmREcm9wVGVzdHMsIENvbG9ySW5wdXRUb0NvbG9ySW5wdXQpCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2RyYWdzdGFydC1k
YXRhLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2RyYWdzdGFy
dC1kYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMThiMWRiNDljMTkxMzhiYmUyZGU2NmE3NTAwYzg0Njcx
NTU3ZDRiYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvZHJhZ3N0YXJ0LWRhdGEuaHRtbApAQCAtMCwwICsxLDEwOSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZp
Y2Utd2lkdGgiPgorPGhlYWQ+Cis8c3R5bGU+Citib2R5IHsKKyAgICBtYXJnaW46IDA7CisgICAg
cGFkZGluZzogMDsKK30KKworaDEsIGEsIHAgeworICAgIGZvbnQtc2l6ZTogMjBweDsKKyAgICBm
b250LWZhbWlseTogc3lzdGVtLXVpOworfQorCitoMSB7CisgICAgdXNlci1zZWxlY3Q6IGFsbDsK
KyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBhbGw7Cit9CisKK2EgeworICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cit9CisKK2E6YWN0aXZlIHsK
KyAgICBjb2xvcjogYmx1ZTsKK30KKwordGV4dGFyZWEgeworICAgIG1hcmdpbjogMWVtOworICAg
IHdpZHRoOiBjYWxjKDEwMCUgLSAyZW0pOworICAgIGZvbnQtc2l6ZTogMTZweDsKKyAgICBmb250
LWZhbWlseTogbW9ub3NwYWNlOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxo
MSBpZD0icmVndWxhciI+UmVndWxhciB0ZXh0PC9oMT4KKyAgICA8aDEgaWQ9InJlZ3VsYXItdXJs
Ij5SZWd1bGFyIHRleHQgKyBVUkwgZGF0YTwvaDE+CisgICAgPGgxIGlkPSJyZWd1bGFyLWN1c3Rv
bSI+UmVndWxhciB0ZXh0ICsgY3VzdG9tIGRhdGE8L2gxPgorICAgIDxoMSBpZD0idXJsIj5VUkwg
ZGF0YSBvbmx5PC9oMT4KKyAgICA8aDEgaWQ9ImN1c3RvbSI+Q3VzdG9tIGRhdGEgb25seTwvaDE+
CisgICAgPGltZyBpZD0iaW1hZ2UiIHNyYz0ic3Vuc2V0LWluLWN1cGVydGluby0yMDBweC5wbmci
PjwvaW1nPgorICAgIDxpbWcgaWQ9ImltYWdlLXRleHQiIHNyYz0ic3Vuc2V0LWluLWN1cGVydGlu
by0yMDBweC5wbmciPjwvaW1nPgorICAgIDxhIGlkPSJsaW5rIiBocmVmPSJodHRwczovL3d3dy5h
cHBsZS5jb20vIj5BcHBsZSBIb21lcGFnZTwvYT4KKyAgICA8YSBpZD0ibGluay1jdXN0b20iIGhy
ZWY9Imh0dHBzOi8vd3d3LmFwcGxlLmNvbS8iPkFwcGxlIEhvbWVwYWdlPC9hPgorICAgIDx0ZXh0
YXJlYSByb3dzPSIyMCIgcmVhZG9ubHkgaWQ9InRleHQtb3V0cHV0Ij48L3RleHRhcmVhPgorPC9i
b2R5PgorPHNjcmlwdD4KK3dpbmRvdy5hbGxEYXRhID0ge307Citjb25zdCB0ZXh0T3V0cHV0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQtb3V0cHV0Iik7CisKK2Z1bmN0aW9uIGNvbGxl
Y3REYXRhRm9yRXZlbnQoZXZlbnQsIGVsZW1lbnQpCit7CisgICAgYWxsRGF0YSA9IHt9OworICAg
IGZvciAobGV0IHR5cGUgb2YgZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzKQorICAgICAgICBhbGxE
YXRhW3R5cGVdID0gZXZlbnQuZGF0YVRyYW5zZmVyLmdldERhdGEodHlwZSk7CisgICAgdGV4dE91
dHB1dC52YWx1ZSA9IEpTT04uc3RyaW5naWZ5KGFsbERhdGEsIG51bGwsIDQpOworfQorCitjb25z
dCByZWd1bGFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ3VsYXIiKTsKK3JlZ3VsYXIu
YWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgZXZlbnQgPT4gY29sbGVjdERhdGFGb3JFdmVu
dChldmVudCwgcmVndWxhcikpOworCitjb25zdCByZWd1bGFyVVJMID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlZ3VsYXItdXJsIik7CityZWd1bGFyVVJMLmFkZEV2ZW50TGlzdGVuZXIoImRy
YWdzdGFydCIsIGV2ZW50ID0+IHsKKyAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgidGV4
dC91cmktbGlzdCIsICJodHRwczovL3d3dy5nb29nbGUuY29tIik7CisgICAgY29sbGVjdERhdGFG
b3JFdmVudChldmVudCwgcmVndWxhclVSTCk7Cit9KTsKKworY29uc3QgcmVndWxhckN1c3RvbSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWd1bGFyLWN1c3RvbSIpOworcmVndWxhckN1c3Rv
bS5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCBldmVudCA9PiB7CisgICAgZXZlbnQuZGF0
YVRyYW5zZmVyLnNldERhdGEoInRleHQvZm9vIiwgIkhlbGxvIHdvcmxkIik7CisgICAgY29sbGVj
dERhdGFGb3JFdmVudChldmVudCwgcmVndWxhckN1c3RvbSk7Cit9KTsKKworY29uc3QgdXJsID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVybCIpOwordXJsLmFkZEV2ZW50TGlzdGVuZXIoImRy
YWdzdGFydCIsIGV2ZW50ID0+IHsKKyAgICBldmVudC5kYXRhVHJhbnNmZXIuY2xlYXJEYXRhKCk7
CisgICAgZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoInRleHQvdXJpLWxpc3QiLCAiaHR0cHM6
Ly93d3cuZ29vZ2xlLmNvbSIpOworICAgIGNvbGxlY3REYXRhRm9yRXZlbnQoZXZlbnQsIHVybCk7
Cit9KTsKKworY29uc3QgY3VzdG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImN1c3RvbSIp
OworY3VzdG9tLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsIGV2ZW50ID0+IHsKKyAgICBl
dmVudC5kYXRhVHJhbnNmZXIuY2xlYXJEYXRhKCk7CisgICAgZXZlbnQuZGF0YVRyYW5zZmVyLnNl
dERhdGEoInRleHQvZm9vIiwgIkhlbGxvIHdvcmxkIik7CisgICAgY29sbGVjdERhdGFGb3JFdmVu
dChldmVudCwgY3VzdG9tKTsKK30pOworCitjb25zdCBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJpbWFnZSIpOworaW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgZXZl
bnQgPT4gY29sbGVjdERhdGFGb3JFdmVudChldmVudCwgaW1hZ2UpKTsKKworY29uc3QgaW1hZ2VU
ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltYWdlLXRleHQiKTsKK2ltYWdlVGV4dC5h
ZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCBldmVudCA9PiB7CisgICAgZXZlbnQuZGF0YVRy
YW5zZmVyLnNldERhdGEoInRleHQvcGxhaW4iLCAiVGhpcyBpcyBhbiBpbWFnZSBvZiBDdXBlcnRp
bm8uIik7CisgICAgY29sbGVjdERhdGFGb3JFdmVudChldmVudCwgaW1hZ2VUZXh0KTsKK30pOwor
Citjb25zdCBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpbmsiKTsKK2xpbmsuYWRk
RXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgZXZlbnQgPT4gY29sbGVjdERhdGFGb3JFdmVudChl
dmVudCwgbGluaykpOworCitjb25zdCBsaW5rQ3VzdG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImxpbmstY3VzdG9tIik7CitsaW5rQ3VzdG9tLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFy
dCIsIGV2ZW50ID0+IHsKKyAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgidGV4dC9mb28i
LCAiYmFyIik7CisgICAgY29sbGVjdERhdGFGb3JFdmVudChldmVudCwgbGlua0N1c3RvbSk7Cit9
KTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9kdW1wLWRhdGF0cmFuc2Zlci10eXBlcy5odG1sIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9kdW1wLWRhdGF0cmFuc2Zlci10eXBlcy5odG1s
CmluZGV4IGQ2ZTM1NDI4ZjljNDk2ZTdhOTg4YmZiNzM4ZGE2ZDQ0MDRmNjViNDIuLmVjZWIxMTQ3
M2E1NjM1OTZiYjY2MGM5YWE3Y2NjY2Y2ZjQzN2Y4YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvZHVtcC1kYXRhdHJhbnNmZXItdHlwZXMuaHRtbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2R1bXAtZGF0YXRyYW5z
ZmVyLXR5cGVzLmh0bWwKQEAgLTEwMCw2ICsxMDAsNyBAQCBmdW5jdGlvbiBzZXRDdXN0b21EYXRh
KGV2ZW50KSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY29uc3QgcGFzdGVib2FyZCA9
IGV2ZW50LmRhdGFUcmFuc2ZlciB8fCBldmVudC5jbGlwYm9hcmREYXRhOworICAgIHBhc3RlYm9h
cmQuY2xlYXJEYXRhKCk7CiAgICAgZm9yIChjb25zdCB0eXBlIGluIGN1c3RvbURhdGEpCiAgICAg
ICAgIHBhc3RlYm9hcmQuc2V0RGF0YSh0eXBlLCBjdXN0b21EYXRhW3R5cGVdKTsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0K
aW5kZXggYzg0NGRkMDM4MzVmNDRmZWYzZjFjZWQwMGE1YTQ3NDI0MzRiNTIyZS4uNDNiNTg4OGNm
MDBlM2RlODExYWFjZTBmMDlhZGVkM2VkMjQ2MDZiYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCkBAIC03OCw3ICs3OCw3
IEBAIHN0YXRpYyBOU0RhdGEgKnRlc3RaSVBBcmNoaXZlKCkKICAgICByZXR1cm4gW05TRGF0YSBk
YXRhV2l0aENvbnRlbnRzT2ZVUkw6emlwRmlsZVVSTF07CiB9CiAKLUBpbXBsZW1lbnRhdGlvbiBU
ZXN0V0tXZWJWaWV3IChEcmFnQW5kRHJvcFRlc3RzKQorQGltcGxlbWVudGF0aW9uIFRlc3RXS1dl
YlZpZXcgKERyYWdBbmREcm9wVGVzdHNJT1MpCiAKIC0gKEJPT0wpZWRpdG9yQ29udGFpbnNJbWFn
ZUVsZW1lbnQKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5k
ZXggYTYxMmNjMGNkYTUwMDA3YzFjMzUzMDZjMTZjZWJjZTI0MDUzYjkwYy4uNDU4NzQyOTFkYWZl
OTkzMDU5NDJmYzExNjNmOGNlMDIyZjhjYzY5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3LmgKQEAgLTEzMCw2ICsxMzAsOCBAQAogLSAoTlNXaW5kb3cgKilob3N0
V2luZG93OwogLSAodm9pZCl0eXBlQ2hhcmFjdGVyOihjaGFyKWNoYXJhY3RlcjsKIC0gKHZvaWQp
d2FpdEZvclBlbmRpbmdNb3VzZUV2ZW50czsKKy0gKHZvaWQpc2V0RXZlbnRUaW1lc3RhbXBPZmZz
ZXQ6KE5TVGltZUludGVydmFsKW9mZnNldDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNUaW1lSW50ZXJ2YWwgZXZlbnRUaW1lc3RhbXA7CiBAZW5kCiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDhiZTJkZjBkYzU2YTRl
ZGIwMjdlMjhmNGQ3OTYzMmYwNjVmNTYyOGUuLmUyMzU3YTlhYmQzMGVkMzdmMjQ3YmQ3NDk1NTIy
NWEzMDA1ZWUxZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW0KQEAgLTI3MSw5ICsyNzEsMTEgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gVGVzdFdLV2Vi
Vmlld0hvc3RXaW5kb3cgewogICAgIEJPT0wgX2ZvcmNlS2V5V2luZG93OworICAgIF9fd2VhayBU
ZXN0V0tXZWJWaWV3ICpfd2ViVmlldzsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKKwogc3RhdGlj
IGludCBnRXZlbnROdW1iZXIgPSAxOwogCiBOU0V2ZW50TWFzayBfX3NpbXVsYXRlZF9mb3JjZUNs
aWNrQXNzb2NpYXRlZEV2ZW50c01hc2soaWQgc2VsZiwgU0VMIF9jbWQpCkBAIC0yODEsNiArMjgz
LDEzIEBAIE5TRXZlbnRNYXNrIF9fc2ltdWxhdGVkX2ZvcmNlQ2xpY2tBc3NvY2lhdGVkRXZlbnRz
TWFzayhpZCBzZWxmLCBTRUwgX2NtZCkKICAgICByZXR1cm4gTlNFdmVudE1hc2tQcmVzc3VyZSB8
IE5TRXZlbnRNYXNrTGVmdE1vdXNlRG93biB8IE5TRXZlbnRNYXNrTGVmdE1vdXNlVXAgfCBOU0V2
ZW50TWFza0xlZnRNb3VzZURyYWdnZWQ7CiB9CiAKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdl
YlZpZXc6KFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbnRlbnRSZWN0OihOU1JlY3QpY29udGVu
dFJlY3Qgc3R5bGVNYXNrOihOU1dpbmRvd1N0eWxlTWFzaylzdHlsZSBiYWNraW5nOihOU0JhY2tp
bmdTdG9yZVR5cGUpYmFja2luZ1N0b3JlVHlwZSBkZWZlcjooQk9PTClmbGFnCit7CisgICAgaWYg
KHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhDb250ZW50UmVjdDpjb250ZW50UmVjdCBzdHlsZU1hc2s6
c3R5bGUgYmFja2luZzpiYWNraW5nU3RvcmVUeXBlIGRlZmVyOmZsYWddKQorICAgICAgICBfd2Vi
VmlldyA9IHdlYlZpZXc7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKIC0gKHZvaWQpX21vdXNlRG93
bkF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgc2ltdWxhdGVQcmVzc3VyZTooQk9PTClzaW11bGF0ZVBy
ZXNzdXJlIGNsaWNrQ291bnQ6KE5TVUludGVnZXIpY2xpY2tDb3VudAogewogICAgIE5TRXZlbnRU
eXBlIG1vdXNlRXZlbnRUeXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VEb3duOwpAQCAtMjg5LDcg
KzI5OCw3IEBAIC0gKHZvaWQpX21vdXNlRG93bkF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgc2ltdWxh
dGVQcmVzc3VyZTooQk9PTClzaW11bGF0ZVByZXNzdXJlCiAgICAgaWYgKHNpbXVsYXRlUHJlc3N1
cmUpCiAgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1hc2tQcmVzc3VyZTsKIAotICAg
IE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOm1vdXNlRXZlbnRU
eXBlIGxvY2F0aW9uOnBvaW50IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncyB0aW1lc3RhbXA6
R2V0Q3VycmVudEV2ZW50VGltZSgpIHdpbmRvd051bWJlcjpzZWxmLndpbmRvd051bWJlciBjb250
ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZXZlbnROdW1iZXI6KytnRXZl
bnROdW1iZXIgY2xpY2tDb3VudDpjbGlja0NvdW50IHByZXNzdXJlOnNpbXVsYXRlUHJlc3N1cmVd
OworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOm1vdXNl
RXZlbnRUeXBlIGxvY2F0aW9uOnBvaW50IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncyB0aW1l
c3RhbXA6X3dlYlZpZXcuZXZlbnRUaW1lc3RhbXAgd2luZG93TnVtYmVyOnNlbGYud2luZG93TnVt
YmVyIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBldmVudE51bWJl
cjorK2dFdmVudE51bWJlciBjbGlja0NvdW50OmNsaWNrQ291bnQgcHJlc3N1cmU6c2ltdWxhdGVQ
cmVzc3VyZV07CiAgICAgaWYgKCFzaW11bGF0ZVByZXNzdXJlKSB7CiAgICAgICAgIFtzZWxmIHNl
bmRFdmVudDpldmVudF07CiAgICAgICAgIHJldHVybjsKQEAgLTMwOSw5ICszMTgsMTAgQEAgLSAo
dm9pZClfbW91c2VEb3duQXRQb2ludDooTlNQb2ludClwb2ludCBzaW11bGF0ZVByZXNzdXJlOihC
T09MKXNpbXVsYXRlUHJlc3N1cmUKIAogLSAodm9pZClfbW91c2VVcEF0UG9pbnQ6KE5TUG9pbnQp
cG9pbnQgY2xpY2tDb3VudDooTlNVSW50ZWdlciljbGlja0NvdW50CiB7Ci0gICAgW3NlbGYgc2Vu
ZEV2ZW50OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUxlZnRNb3VzZVVw
IGxvY2F0aW9uOnBvaW50IG1vZGlmaWVyRmxhZ3M6MCB0aW1lc3RhbXA6R2V0Q3VycmVudEV2ZW50
VGltZSgpIHdpbmRvd051bWJlcjpzZWxmLndpbmRvd051bWJlciBjb250ZXh0OltOU0dyYXBoaWNz
Q29udGV4dCBjdXJyZW50Q29udGV4dF0gZXZlbnROdW1iZXI6KytnRXZlbnROdW1iZXIgY2xpY2tD
b3VudDpjbGlja0NvdW50IHByZXNzdXJlOjBdXTsKKyAgICBbc2VsZiBzZW5kRXZlbnQ6W05TRXZl
bnQgbW91c2VFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlTGVmdE1vdXNlVXAgbG9jYXRpb246cG9p
bnQgbW9kaWZpZXJGbGFnczowIHRpbWVzdGFtcDpfd2ViVmlldy5ldmVudFRpbWVzdGFtcCB3aW5k
b3dOdW1iZXI6c2VsZi53aW5kb3dOdW1iZXIgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3Vy
cmVudENvbnRleHRdIGV2ZW50TnVtYmVyOisrZ0V2ZW50TnVtYmVyIGNsaWNrQ291bnQ6Y2xpY2tD
b3VudCBwcmVzc3VyZTowXV07CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCisjZW5kaWYK
IAogLSAoQk9PTClpc0tleVdpbmRvdwogewpAQCAtMzE5LDYgKzMyOSw3IEBAIC0gKEJPT0wpaXNL
ZXlXaW5kb3cKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8VUlXaW5kb3c+PiBnT3ZlcnJpZGRlbkFwcGxpY2F0aW9uS2V5V2lu
ZG93Owogc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVlX3B0cjxJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyPj4gZ0FwcGxpY2F0aW9uS2V5V2luZG93U3dpenpsZXI7CiBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+PiBnU2hhcmVk
QXBwbGljYXRpb25Td2l6emxlcjsKQEAgLTM0NSw2ICszNTYsMTQgQEAgc3RhdGljIFVJV2luZG93
ICphcHBsaWNhdGlvbktleVdpbmRvd092ZXJyaWRlKGlkLCBTRUwpCiB7CiAgICAgcmV0dXJuIGdP
dmVycmlkZGVuQXBwbGljYXRpb25LZXlXaW5kb3cuZ2V0KCkuZ2V0KCk7CiB9CisKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3IGZyYW1lOihD
R1JlY3QpZnJhbWUKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1l
XSkKKyAgICAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OworICAgIHJldHVybiBzZWxmOworfQorCiAj
ZW5kaWYKIAogLSAodm9pZCltYWtlS2V5V2luZG93CkBAIC0zODgsNiArNDA3LDkgQEAgQGltcGxl
bWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxDbGFzc01ldGhv
ZFN3aXp6bGVyPiBfc2hhcmVkQ2FsbG91dEJhclN3aXp6bGVyOwogICAgIElucHV0U2Vzc2lvbkNo
YW5nZUNvdW50IF9pbnB1dFNlc3Npb25DaGFuZ2VDb3VudDsKICNlbmRpZgorI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBOU1RpbWVJbnRlcnZhbCBfZXZlbnRUaW1lc3RhbXBPZmZzZXQ7CisjZW5kaWYK
IH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZQpAQCAtNDM3
LDE0ICs0NTksMTQgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFt
ZSBjb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW8KIC0gKHZvaWQpX3NldFVwVGVz
dFdpbmRvdzooTlNSZWN0KWZyYW1lCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIF9ob3N0V2lu
ZG93ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXdIb3N0V2luZG93IGFsbG9jXSBpbml0V2l0aENv
bnRlbnRSZWN0OmZyYW1lIHN0eWxlTWFzazooTlNXaW5kb3dTdHlsZU1hc2tCb3JkZXJsZXNzIHwg
TlNXaW5kb3dTdHlsZU1hc2tNaW5pYXR1cml6YWJsZSkgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1
ZmZlcmVkIGRlZmVyOk5PXSk7CisgICAgX2hvc3RXaW5kb3cgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
Vmlld0hvc3RXaW5kb3cgYWxsb2NdIGluaXRXaXRoV2ViVmlldzpzZWxmIGNvbnRlbnRSZWN0OmZy
YW1lIHN0eWxlTWFzazooTlNXaW5kb3dTdHlsZU1hc2tCb3JkZXJsZXNzIHwgTlNXaW5kb3dTdHls
ZU1hc2tNaW5pYXR1cml6YWJsZSkgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVy
Ok5PXSk7CiAgICAgW19ob3N0V2luZG93IHNldEZyYW1lT3JpZ2luOk5TTWFrZVBvaW50KDAsIDAp
XTsKICAgICBbX2hvc3RXaW5kb3cgc2V0SXNWaXNpYmxlOllFU107CiAgICAgW19ob3N0V2luZG93
IGNvbnRlbnRWaWV3XS53YW50c0xheWVyID0gWUVTOwogICAgIFtbX2hvc3RXaW5kb3cgY29udGVu
dFZpZXddIGFkZFN1YnZpZXc6c2VsZl07CiAgICAgW19ob3N0V2luZG93IG1ha2VLZXlBbmRPcmRl
ckZyb250OnNlbGZdOwogI2Vsc2UKLSAgICBfaG9zdFdpbmRvdyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3SG9zdFdpbmRvdyBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZV0pOworICAgIF9ob3N0
V2luZG93ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXdIb3N0V2luZG93IGFsbG9jXSBpbml0V2l0
aFdlYlZpZXc6c2VsZiBmcmFtZTpmcmFtZV0pOwogICAgIFtfaG9zdFdpbmRvdyBzZXRIaWRkZW46
Tk9dOwogICAgIFtfaG9zdFdpbmRvdyBhZGRTdWJ2aWV3OnNlbGZdOwogI2VuZGlmCkBAIC02ODQs
NyArNzA2LDE5IEBAIEBlbmQKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQorCiBAaW1wbGVt
ZW50YXRpb24gVGVzdFdLV2ViVmlldyAoTWFjT25seSkKKworLSAodm9pZClzZXRFdmVudFRpbWVz
dGFtcE9mZnNldDooTlNUaW1lSW50ZXJ2YWwpb2Zmc2V0Cit7CisgICAgX2V2ZW50VGltZXN0YW1w
T2Zmc2V0ICs9IG9mZnNldDsKK30KKworLSAoTlNUaW1lSW50ZXJ2YWwpZXZlbnRUaW1lc3RhbXAK
K3sKKyAgICByZXR1cm4gR2V0Q3VycmVudEV2ZW50VGltZSgpICsgX2V2ZW50VGltZXN0YW1wT2Zm
c2V0OworfQorCiAtICh2b2lkKW1vdXNlRG93bkF0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRv
dyBzaW11bGF0ZVByZXNzdXJlOihCT09MKXNpbXVsYXRlUHJlc3N1cmUKIHsKICAgICBbX2hvc3RX
aW5kb3cgX21vdXNlRG93bkF0UG9pbnQ6cG9pbnRJbldpbmRvdyBzaW11bGF0ZVByZXNzdXJlOnNp
bXVsYXRlUHJlc3N1cmUgY2xpY2tDb3VudDoxXTsKQEAgLTY5Nyw3ICs3MzEsNyBAQCAtICh2b2lk
KW1vdXNlVXBBdFBvaW50OihOU1BvaW50KXBvaW50SW5XaW5kb3cKIAogLSAodm9pZCltb3VzZU1v
dmVUb1BvaW50OihOU1BvaW50KXBvaW50SW5XaW5kb3cgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZp
ZXJGbGFncylmbGFncwogewotICAgIFtzZWxmIG1vdXNlTW92ZWQ6W3NlbGYgX21vdXNlRXZlbnRX
aXRoVHlwZTpOU0V2ZW50VHlwZU1vdXNlTW92ZWQgYXRMb2NhdGlvbjpwb2ludEluV2luZG93IGZs
YWdzOmZsYWdzIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1lKCkgY2xpY2tDb3VudDowXV07
CisgICAgW3NlbGYgbW91c2VNb3ZlZDpbc2VsZiBfbW91c2VFdmVudFdpdGhUeXBlOk5TRXZlbnRU
eXBlTW91c2VNb3ZlZCBhdExvY2F0aW9uOnBvaW50SW5XaW5kb3cgZmxhZ3M6ZmxhZ3MgdGltZXN0
YW1wOnNlbGYuZXZlbnRUaW1lc3RhbXAgY2xpY2tDb3VudDowXV07CiB9CiAKIC0gKHZvaWQpc2Vu
ZENsaWNrc0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdyBudW1iZXJPZkNsaWNrczooTlNV
SW50ZWdlciludW1iZXJPZkNsaWNrcwpAQCAtNzI1LDcgKzc1OSw3IEBAIC0gKHZvaWQpbW91c2VE
cmFnVG9Qb2ludDooTlNQb2ludClwb2ludEluV2luZG93CiAKIC0gKE5TRXZlbnQgKilfbW91c2VF
dmVudFdpdGhUeXBlOihOU0V2ZW50VHlwZSl0eXBlIGF0TG9jYXRpb246KE5TUG9pbnQpcG9pbnRJ
bldpbmRvdwogewotICAgIHJldHVybiBbc2VsZiBfbW91c2VFdmVudFdpdGhUeXBlOnR5cGUgYXRM
b2NhdGlvbjpwb2ludEluV2luZG93IGZsYWdzOjAgdGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRp
bWUoKSBjbGlja0NvdW50OjBdOworICAgIHJldHVybiBbc2VsZiBfbW91c2VFdmVudFdpdGhUeXBl
OnR5cGUgYXRMb2NhdGlvbjpwb2ludEluV2luZG93IGZsYWdzOjAgdGltZXN0YW1wOnNlbGYuZXZl
bnRUaW1lc3RhbXAgY2xpY2tDb3VudDowXTsKIH0KIAogLSAoTlNFdmVudCAqKV9tb3VzZUV2ZW50
V2l0aFR5cGU6KE5TRXZlbnRUeXBlKXR5cGUgYXRMb2NhdGlvbjooTlNQb2ludClsb2NhdGlvbklu
V2luZG93IGZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylmbGFncyB0aW1lc3RhbXA6KE5TVGlt
ZUludGVydmFsKXRpbWVzdGFtcCBjbGlja0NvdW50OihOU1VJbnRlZ2VyKWNsaWNrQ291bnQKQEAg
LTc0OSw4ICs3ODMsOCBAQCAtICh2b2lkKXR5cGVDaGFyYWN0ZXI6KGNoYXIpY2hhcmFjdGVyCiAg
ICAgTlNTdHJpbmcgKmNoYXJhY3RlckFzU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlYyIgLCBjaGFyYWN0ZXJdOwogICAgIE5TRXZlbnRUeXBlIGtleURvd25FdmVudFR5cGUg
PSBOU0V2ZW50VHlwZUtleURvd247CiAgICAgTlNFdmVudFR5cGUga2V5VXBFdmVudFR5cGUgPSBO
U0V2ZW50VHlwZUtleVVwOwotICAgIFtzZWxmIGtleURvd246W05TRXZlbnQga2V5RXZlbnRXaXRo
VHlwZTprZXlEb3duRXZlbnRUeXBlIGxvY2F0aW9uOk5TWmVyb1BvaW50IG1vZGlmaWVyRmxhZ3M6
MCB0aW1lc3RhbXA6R2V0Q3VycmVudEV2ZW50VGltZSgpIHdpbmRvd051bWJlcjpbX2hvc3RXaW5k
b3cgd2luZG93TnVtYmVyXSBjb250ZXh0Om5pbCBjaGFyYWN0ZXJzOmNoYXJhY3RlckFzU3RyaW5n
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJBc1N0cmluZyBpc0FSZXBlYXQ6
Tk8ga2V5Q29kZTpjaGFyYWN0ZXJdXTsKLSAgICBbc2VsZiBrZXlVcDpbTlNFdmVudCBrZXlFdmVu
dFdpdGhUeXBlOmtleVVwRXZlbnRUeXBlIGxvY2F0aW9uOk5TWmVyb1BvaW50IG1vZGlmaWVyRmxh
Z3M6MCB0aW1lc3RhbXA6R2V0Q3VycmVudEV2ZW50VGltZSgpIHdpbmRvd051bWJlcjpbX2hvc3RX
aW5kb3cgd2luZG93TnVtYmVyXSBjb250ZXh0Om5pbCBjaGFyYWN0ZXJzOmNoYXJhY3RlckFzU3Ry
aW5nIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJBc1N0cmluZyBpc0FSZXBl
YXQ6Tk8ga2V5Q29kZTpjaGFyYWN0ZXJdXTsKKyAgICBbc2VsZiBrZXlEb3duOltOU0V2ZW50IGtl
eUV2ZW50V2l0aFR5cGU6a2V5RG93bkV2ZW50VHlwZSBsb2NhdGlvbjpOU1plcm9Qb2ludCBtb2Rp
ZmllckZsYWdzOjAgdGltZXN0YW1wOnNlbGYuZXZlbnRUaW1lc3RhbXAgd2luZG93TnVtYmVyOltf
aG9zdFdpbmRvdyB3aW5kb3dOdW1iZXJdIGNvbnRleHQ6bmlsIGNoYXJhY3RlcnM6Y2hhcmFjdGVy
QXNTdHJpbmcgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlckFzU3RyaW5nIGlz
QVJlcGVhdDpOTyBrZXlDb2RlOmNoYXJhY3Rlcl1dOworICAgIFtzZWxmIGtleVVwOltOU0V2ZW50
IGtleUV2ZW50V2l0aFR5cGU6a2V5VXBFdmVudFR5cGUgbG9jYXRpb246TlNaZXJvUG9pbnQgbW9k
aWZpZXJGbGFnczowIHRpbWVzdGFtcDpzZWxmLmV2ZW50VGltZXN0YW1wIHdpbmRvd051bWJlcjpb
X2hvc3RXaW5kb3cgd2luZG93TnVtYmVyXSBjb250ZXh0Om5pbCBjaGFyYWN0ZXJzOmNoYXJhY3Rl
ckFzU3RyaW5nIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJBc1N0cmluZyBp
c0FSZXBlYXQ6Tk8ga2V5Q29kZTpjaGFyYWN0ZXJdXTsKIH0KIAogLSAodm9pZCl3YWl0Rm9yUGVu
ZGluZ01vdXNlRXZlbnRzCkBAIC03NjMsNiArNzk3LDcgQEAgLSAodm9pZCl3YWl0Rm9yUGVuZGlu
Z01vdXNlRXZlbnRzCiB9CiAKIEBlbmQKKwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21h
Yy9EcmFnQW5kRHJvcFNpbXVsYXRvck1hYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0Ry
YWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tCmluZGV4IDA3OGVhMTEwMGM1ZmVjNWZjNWJiZjZmZGU5
NmJiZTA2NDI0ZWQ3Y2EuLjcwNzFmN2IxMTY5MDZjNDllNjE5ZjZhMmRjMTNiNGIwNTY0ZmJkYzIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9y
TWFjLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9y
TWFjLm1tCkBAIC0xNzcsNiArMTc3LDggQEAgLSAodm9pZClydW5Gcm9tOihDR1BvaW50KWZsaXBw
ZWRTdGFydExvY2F0aW9uIHRvOihDR1BvaW50KWZsaXBwZWRFbmRMb2NhdGlvbgogICAgIFtfd2Vi
VmlldyBtb3VzZUVudGVyQXRQb2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93XTsKICAgICBbX3dl
YlZpZXcgbW91c2VNb3ZlVG9Qb2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93IHdpdGhGbGFnczow
XTsKICAgICBbX3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93
IHNpbXVsYXRlUHJlc3N1cmU6Tk9dOworICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIGV4Y2VlZCB0
aGUgbWluaW11bSAxNTBtcyBkZWxheSBiZXR3ZWVuIGhhbmRsaW5nIG1vdXNlZG93biBhbmQgZHJh
ZyB3aGVuIGRyYWdnaW5nIGEgdGV4dCBzZWxlY3Rpb24uCisgICAgW193ZWJWaWV3IHNldEV2ZW50
VGltZXN0YW1wT2Zmc2V0OjAuMjVdOwogICAgIFtfd2ViVmlldyBtb3VzZURyYWdUb1BvaW50Oltz
ZWxmIGxvY2F0aW9uSW5WaWV3Rm9yQ3VycmVudFByb2dyZXNzXV07CiAgICAgW193ZWJWaWV3IHdh
aXRGb3JQZW5kaW5nTW91c2VFdmVudHNdOwogCkBAIC0xODYsNiArMTg4LDcgQEAgLSAodm9pZCly
dW5Gcm9tOihDR1BvaW50KWZsaXBwZWRTdGFydExvY2F0aW9uIHRvOihDR1BvaW50KWZsaXBwZWRF
bmRMb2NhdGlvbgogICAgIFtfd2ViVmlldyB3YWl0Rm9yUGVuZGluZ01vdXNlRXZlbnRzXTsKIAog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmX2RvbmVXYWl0aW5nRm9yRHJvcCk7CisgICAg
W193ZWJWaWV3IHNldEV2ZW50VGltZXN0YW1wT2Zmc2V0OjBdOwogfQogCiAtICh2b2lkKWJlZ2lu
RHJhZ2dpbmdTZXNzaW9uSW5XZWJWaWV3OihEcmFnQW5kRHJvcFRlc3RXS1dlYlZpZXcgKil3ZWJW
aWV3IHdpdGhJdGVtczooTlNBcnJheTxOU0RyYWdnaW5nSXRlbSAqPiAqKWl0ZW1zIHNvdXJjZToo
aWQ8TlNEcmFnZ2luZ1NvdXJjZT4pc291cmNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>