<?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>210700</bug_id>
          
          <creation_ts>2020-04-18 15:03:55 -0700</creation_ts>
          <short_desc>Fix WebUserContentControllerProxy vs ContentWorld lifetime</short_desc>
          <delta_ts>2020-04-18 19:09:17 -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>WebKit Misc.</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>
          
          <blocked>206398</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1643062</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-18 15:03:55 -0700</bug_when>
    <thetext>UserContentControllerProxy / ContentWorld cleanup

Blocking testing for https://bugs.webkit.org/show_bug.cgi?id=206398</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643070</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-18 15:46:41 -0700</bug_when>
    <thetext>Renaming - I realized there is an actual bug this refactoring is fixing, and wrote an API test for it

&quot;Fix WebUserContentControllerProxy vs ContentWorld lifetime&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643078</commentid>
    <comment_count>2</comment_count>
      <attachid>396868</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-18 16:10:21 -0700</bug_when>
    <thetext>Created attachment 396868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643107</commentid>
    <comment_count>3</comment_count>
      <attachid>396868</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-18 17:36:38 -0700</bug_when>
    <thetext>Comment on attachment 396868
Patch

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

&gt; Source/WebKit/UIProcess/API/APIContentWorld.cpp:38
&gt; +    static HashMap&lt;WTF::String, ContentWorld*&gt;* sharedMap = new HashMap&lt;WTF::String, ContentWorld*&gt;;

NeverDestroyed&lt;HashMap&lt;...&gt;&gt; to be consistent with below.

&gt; Source/WebKit/UIProcess/API/APIContentWorld.h:61
&gt; +    HashSet&lt;WebKit::WebUserContentControllerProxy*&gt; m_associatedContentControllerProxies;

Could we use WeakPtr here instead of storing raw pointers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643118</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-18 18:46:02 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 396868 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=396868&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIContentWorld.cpp:38
&gt; &gt; +    static HashMap&lt;WTF::String, ContentWorld*&gt;* sharedMap = new HashMap&lt;WTF::String, ContentWorld*&gt;;
&gt; 
&gt; NeverDestroyed&lt;HashMap&lt;...&gt;&gt; to be consistent with below.

Fixed
&gt; &gt; Source/WebKit/UIProcess/API/APIContentWorld.h:61
&gt; &gt; +    HashSet&lt;WebKit::WebUserContentControllerProxy*&gt; m_associatedContentControllerProxies;
&gt; 
&gt; Could we use WeakPtr here instead of storing raw pointers?

I&apos;m wondering what the ramifications are of making an API::Object have WeakPtrs.
I&apos;m going to punt for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643119</commentid>
    <comment_count>5</comment_count>
      <attachid>396883</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-18 18:47:59 -0700</bug_when>
    <thetext>Created attachment 396883
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643123</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-18 19:08:56 -0700</bug_when>
    <thetext>Committed r260330: &lt;https://trac.webkit.org/changeset/260330&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396883.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643124</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-18 19:09:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/61992273&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396868</attachid>
            <date>2020-04-18 16:10:21 -0700</date>
            <delta_ts>2020-04-18 17:36:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23873</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZTU0OTAyYWY3OTcuLjU3MzM0OWE1MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDYyIEBACisyMDIwLTA0LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBGaXggV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgdnMgQ29udGVudFdvcmxk
IGxpZmV0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTA3MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0LgorICAgICAgICAKKyAgICAgICAgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkgY3VycmVudGx5IGtlZXBzIGFsbCBvZiBpdHMgYXNzb2NpYXRlZCBBUEk6
OkNvbnRlbnRXb3JsZHMgYWxpdmUgdmlhIFJlZlB0cnMuCisgICAgICAgIAorICAgICAgICBUaGlz
IGlzIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCBhbGwgb2YgdGhlIGFzc29jaWF0ZWQgV2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXJzLCBVc2VyU2NyaXB0cywgYW5kIAorICAgICAgICBVc2VyU3R5bGVTaGVl
dHMgYWxyZWFkeSBrZWVwIHRoZWlyIGFzc29jaWF0ZWQgQVBJOjpDb250ZW50V29ybGRzIGFsaXZl
LgorCisgICAgICAgIEl0IHRoZW4gZGVjaWRlZHMgdG8gdGVsbCBXZWJQcm9jZXNzZXMgdG8gZm9y
Z2V0IGEgY29udGVudCB3b3JsZCBhZnRlciBhbGwgb2YgaXRzIGNsaWVudHMgYXJlIHJlbW92ZWQu
CisgICAgICAgIAorICAgICAgICBVbmZvcnR1bmF0ZWx5LCBjb250ZW50IHdvcmxkcyBhcmUgdXNl
ZCBmb3IgbW9yZSB0aGFuIGp1c3QgY29udGVudCBjb250cm9sbGVyIHN0dWZmLiBUaGV5J3JlIHVz
ZWQgZm9yIGRpcmVjdAorICAgICAgICBKYXZhU2NyaXB0IGV2YWx1YXRpb24gYXMgd2VsbC4KKyAg
ICAgICAgCisgICAgICAgIFNvIGEgY2xpZW50IGNvdWxkOgorICAgICAgICAgIC0gQWRkIGEgc2Ny
aXB0IG1lc3NhZ2UgaGFuZGxlciBpbiBhIGNvbnRlbnQgd29ybGQuCisgICAgICAgICAgLSBFdmFs
dWF0ZSBKYXZhU2NyaXB0IGluIHRoYXQgY29udGVudCB3b3JsZCwgc2V0dGluZyB1cCBzb21lIHBl
cnNpc3RlbnQgc3RhdGUuCisgICAgICAgICAgLSBSZW1vdmUgdGhlIHNjcmlwdCBtZXNzYWdlIGhh
bmRsZXIuCisgICAgICAgICAgLSBGaW5kIHRoYXQgdGhlaXIgcGVyc2lzdGVudCBzdGF0ZSBmcm9t
IHRoZSBKYXZhU2NyaXB0IGV2YWx1YXRpb24gaXMgZ29uZSBmcm9tIHRoYXQgd29ybGQsIGV2ZW4g
dGhvdWdoIHRoZXkKKyAgICAgICAgICAgIHN0aWxsIHJldGFpbiBhIHVzYWJsZSBoYW5kbGUgdG8g
dGhhdCB3b3JsZC4KKyAgICAgICAgCisgICAgICAgIFRoZSBvbmx5IHBhcnR5IHdobyBoYXMgYW55
IGJ1c2luZXNzIG1hbmFnaW5nIHRoZSBsaWZldGltZSBvZiBhbiBBUEk6OkNvbnRlbnRXb3JsZCBp
cyB0aGUgQVBJOjpDb250ZW50V29ybGQgaXRzZWxmLgorICAgICAgICAKKyAgICAgICAgTWFraW5n
IHRoaXMgY2hhbmdlIGlzOgorICAgICAgICAgIDEgLSBOaWNlIGNsZWFudXAKKyAgICAgICAgICAy
IC0gRml4ZXMgdGhlIGFib3ZlIG1lbnRpb25lZCBidWcKKyAgICAgICAgCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50V29ybGQuY3BwOgorICAgICAgICAoQVBJOjpDb250ZW50V29y
bGQ6OndvcmxkRm9ySWRlbnRpZmllcik6CisgICAgICAgIChBUEk6OkNvbnRlbnRXb3JsZDo6Q29u
dGVudFdvcmxkKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkOjpzaGFyZWRXb3JsZFdpdGhO
YW1lKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkOjp+Q29udGVudFdvcmxkKToKKyAgICAg
ICAgKEFQSTo6Q29udGVudFdvcmxkOjphZGRBc3NvY2lhdGVkVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkpOgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGQ6OnVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5RGVzdHJveWVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3Js
ZC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OnBhcmFtZXRlcnMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6YWRkQ29udGVudFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNvbnRlbnRXb3JsZERlc3Ryb3llZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZVVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
QWxsVXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRs
ZXJGb3JOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkQ29udGVudFdvcmxkVXNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnNob3VsZFNl
bmRSZW1vdmVDb250ZW50V29ybGRzTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVDb250ZW50V29ybGRVc2VzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuaDoKKwogMjAyMC0wNC0xOCAgUGFibG8gU2FhdmVkcmEgIDxwc2FhdmVk
cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFJlcGxhY2UgZXZpbCBzdHJ0b2so
KSBjYWxscyB3aXRoIGZzY2FuZigpIGluIE1lbW9yeVByZXNzdXJlTW9uaXRvci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50V29ybGQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5jcHAKaW5kZXggM2U0
OTUxNGZhOWQuLmJjODViNWM0Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFdvcmxkLmNwcApAQCAtMjcsMTEgKzI3LDI5IEBACiAjaW5jbHVkZSAiQVBJ
Q29udGVudFdvcmxkLmgiCiAKICNpbmNsdWRlICJDb250ZW50V29ybGRTaGFyZWQuaCIKKyNpbmNs
dWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgQVBJ
IHsKIAorc3RhdGljIEhhc2hNYXA8V1RGOjpTdHJpbmcsIENvbnRlbnRXb3JsZCo+JiBzaGFyZWRX
b3JsZE5hbWVNYXAoKQoreworICAgIHN0YXRpYyBIYXNoTWFwPFdURjo6U3RyaW5nLCBDb250ZW50
V29ybGQqPiogc2hhcmVkTWFwID0gbmV3IEhhc2hNYXA8V1RGOjpTdHJpbmcsIENvbnRlbnRXb3Js
ZCo+OworICAgIHJldHVybiAqc2hhcmVkTWFwOworfQorCitzdGF0aWMgSGFzaE1hcDxXZWJLaXQ6
OkNvbnRlbnRXb3JsZElkZW50aWZpZXIsIENvbnRlbnRXb3JsZCo+JiBzaGFyZWRXb3JsZElkZW50
aWZpZXJNYXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFdlYktpdDo6
Q29udGVudFdvcmxkSWRlbnRpZmllciwgQ29udGVudFdvcmxkKj4+IHNoYXJlZE1hcDsKKyAgICBy
ZXR1cm4gc2hhcmVkTWFwOworfQorCitDb250ZW50V29ybGQqIENvbnRlbnRXb3JsZDo6d29ybGRG
b3JJZGVudGlmaWVyKFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllciBpZGVudGlmZXIpCit7
CisgICAgcmV0dXJuIHNoYXJlZFdvcmxkSWRlbnRpZmllck1hcCgpLmdldChpZGVudGlmZXIpOwor
fQorCiBDb250ZW50V29ybGQ6OkNvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYgbmFtZSkK
ICAgICA6IG1fbmFtZShuYW1lKQogewpAQCAtNDQsMTcgKzYyLDE5IEBAIENvbnRlbnRXb3JsZDo6
Q29udGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQogICAgIH0pOwogCiAgICAgbV9p
ZGVudGlmaWVyID0gV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwor
ICAgIGF1dG8gYWRkUmVzdWx0ID0gc2hhcmVkV29ybGRJZGVudGlmaWVyTWFwKCkuYWRkKG1faWRl
bnRpZmllciwgdGhpcyk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKIH0KIAotc3RhdGljIEhhc2hNYXA8V1RGOjpTdHJpbmcsIENvbnRlbnRXb3Js
ZCo+JiBzaGFyZWRXb3JsZE1hcCgpCitDb250ZW50V29ybGQ6OkNvbnRlbnRXb3JsZChXZWJLaXQ6
OkNvbnRlbnRXb3JsZElkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQogewotICAgIHN0YXRpYyBIYXNoTWFwPFdURjo6U3RyaW5nLCBDb250ZW50V29y
bGQqPiogc2hhcmVkTWFwID0gbmV3IEhhc2hNYXA8V1RGOjpTdHJpbmcsIENvbnRlbnRXb3JsZCo+
OwotICAgIHJldHVybiAqc2hhcmVkTWFwOworICAgIEFTU0VSVChtX2lkZW50aWZpZXIgPT0gV2Vi
S2l0OjpwYWdlQ29udGVudFdvcmxkSWRlbnRpZmllcigpKTsKIH0KIAogUmVmPENvbnRlbnRXb3Js
ZD4gQ29udGVudFdvcmxkOjpzaGFyZWRXb3JsZFdpdGhOYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBu
YW1lKQogewotICAgIGF1dG8gcmVzdWx0ID0gc2hhcmVkV29ybGRNYXAoKS5hZGQobmFtZSwgbnVs
bHB0cik7CisgICAgYXV0byByZXN1bHQgPSBzaGFyZWRXb3JsZE5hbWVNYXAoKS5hZGQobmFtZSwg
bnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBuZXcgQ29udGVudFdvcmxkKG5hbWUpOwogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKnJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwpAQCAtNzcsMTEgKzk3LDMwIEBAIENv
bnRlbnRXb3JsZCYgQ29udGVudFdvcmxkOjpkZWZhdWx0Q2xpZW50V29ybGQoKQogCiBDb250ZW50
V29ybGQ6On5Db250ZW50V29ybGQoKQogewotICAgIGlmIChuYW1lKCkuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9pZGVudGlmaWVyICE9IFdlYktpdDo6cGFnZUNvbnRl
bnRXb3JsZElkZW50aWZpZXIoKSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IHNoYXJlZFdvcmxkSWRl
bnRpZmllck1hcCgpLnRha2UobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0ID09IHRoaXMgfHwgbV9pZGVudGlmaWVyID09IFdlYktpdDo6cGFnZUNvbnRlbnRX
b3JsZElkZW50aWZpZXIoKSk7CiAKLSAgICBhdXRvIHRha2VuID0gc2hhcmVkV29ybGRNYXAoKS50
YWtlKG5hbWUoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRCh0YWtlbiwgdGFrZW4gPT0gdGhpcyk7Cisg
ICAgaWYgKCFuYW1lKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byB0YWtlbiA9IHNoYXJlZFdv
cmxkTmFtZU1hcCgpLnRha2UobmFtZSgpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRCh0YWtlbiwg
dGFrZW4gPT0gdGhpcyk7CisgICAgfQorCisgICAgZm9yIChhdXRvIHByb3h5IDogbV9hc3NvY2lh
dGVkQ29udGVudENvbnRyb2xsZXJQcm94aWVzKQorICAgICAgICBwcm94eS0+Y29udGVudFdvcmxk
RGVzdHJveWVkKCp0aGlzKTsKK30KKwordm9pZCBDb250ZW50V29ybGQ6OmFkZEFzc29jaWF0ZWRV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5JiBwcm94eSkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXNzb2NpYXRlZENvbnRl
bnRDb250cm9sbGVyUHJveGllcy5hZGQoJnByb3h5KTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIENvbnRlbnRXb3JsZDo6dXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHlEZXN0cm95ZWQoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSYgcHJveHkpCit7CisgICAgYm9vbCByZW1vdmVkID0gbV9hc3NvY2lhdGVk
Q29udGVudENvbnRyb2xsZXJQcm94aWVzLnJlbW92ZSgmcHJveHkpOworICAgIEFTU0VSVF9VTlVT
RUQocmVtb3ZlZCwgcmVtb3ZlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5oCmluZGV4IDQxMTFlNjRiM2E4
Li4yNTg3YTEyZjg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRXb3JsZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50V29ybGQuaApAQCAtMjcsMTIgKzI3LDE4IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlICJDb250ZW50V29ybGRTaGFyZWQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2ViS2l0IHsK
K2NsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OworfQorCiBuYW1lc3BhY2UgQVBJ
IHsKIAogY2xhc3MgQ29udGVudFdvcmxkIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxB
UEk6Ok9iamVjdDo6VHlwZTo6Q29udGVudFdvcmxkPiB7CiBwdWJsaWM6CisgICAgc3RhdGljIENv
bnRlbnRXb3JsZCogd29ybGRGb3JJZGVudGlmaWVyKFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRp
Zmllcik7CiAgICAgc3RhdGljIFJlZjxDb250ZW50V29ybGQ+IHNoYXJlZFdvcmxkV2l0aE5hbWUo
Y29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICBzdGF0aWMgQ29udGVudFdvcmxkJiBwYWdlQ29udGVu
dFdvcmxkKCk7CiAgICAgc3RhdGljIENvbnRlbnRXb3JsZCYgZGVmYXVsdENsaWVudFdvcmxkKCk7
CkBAIC00MywxMyArNDksMTYgQEAgcHVibGljOgogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgc3RkOjpwYWlyPFdlYktpdDo6Q29udGVu
dFdvcmxkSWRlbnRpZmllciwgV1RGOjpTdHJpbmc+IHdvcmxkRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHsgbV9pZGVudGlmaWVyLCBtX25hbWUgfTsgfQogCisgICAgdm9pZCBhZGRBc3NvY2lhdGVkVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eSYpOworICAgIHZvaWQgdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlEZXN0cm95ZWQoV2Vi
S2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYpOworCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IENvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIGV4cGxpY2l0IENv
bnRlbnRXb3JsZChXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIgaWRlbnRpZmllcikKLSAg
ICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikgeyB9CisgICAgZXhwbGljaXQgQ29udGVu
dFdvcmxkKFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcik7CiAKICAgICBXZWJLaXQ6OkNv
bnRlbnRXb3JsZElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFdURjo6U3RyaW5nIG1fbmFt
ZTsKKyAgICBIYXNoU2V0PFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqPiBt
X2Fzc29jaWF0ZWRDb250ZW50Q29udHJvbGxlclByb3hpZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAppbmRleCA0ZTAy
MjMzYzk1OS4uN2RkOGViOTkzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS5jcHAKQEAgLTczLDYgKzczLDEyIEBAIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpCiAKIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5Ojp+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKQogeworICAgIGZvciAo
Y29uc3QgYXV0byYgaWRlbnRpZmllciA6IG1fYXNzb2NpYXRlZENvbnRlbnRXb3JsZHMpIHsKKyAg
ICAgICAgYXV0byogd29ybGQgPSBBUEk6OkNvbnRlbnRXb3JsZDo6d29ybGRGb3JJZGVudGlmaWVy
KGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCh3b3JsZCk7CisgICAgICAgIHdv
cmxkLT51c2VyQ29udGVudENvbnRyb2xsZXJQcm94eURlc3Ryb3llZCgqdGhpcyk7CisgICAgfQor
ICAgIAogICAgIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMoKS5yZW1vdmUobV9pZGVu
dGlmaWVyKTsKICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgewogICAgICAg
ICBwcm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKQEAg
LTExMCw4ICsxMTYsMTIgQEAgVXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycyBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6cGFyYW1ldGVycygpIGNvbnMKIAogICAgIHBhcmFtZXRl
cnMuaWRlbnRpZmllciA9IGlkZW50aWZpZXIoKTsKICAgICAKLSAgICBmb3IgKGNvbnN0IGF1dG8m
IHdvcmxkIDogbV9jb250ZW50V29ybGRzKQotICAgICAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50
V29ybGRzLmFwcGVuZCh3b3JsZC5rZXktPndvcmxkRGF0YSgpKTsKKyAgICBBU1NFUlQocGFyYW1l
dGVycy51c2VyQ29udGVudFdvcmxkcy5pc0VtcHR5KCkpOworICAgIGZvciAoY29uc3QgYXV0byYg
aWRlbnRpZmllciA6IG1fYXNzb2NpYXRlZENvbnRlbnRXb3JsZHMpIHsKKyAgICAgICAgYXV0byog
d29ybGQgPSBBUEk6OkNvbnRlbnRXb3JsZDo6d29ybGRGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIp
OworICAgICAgICBSRUxFQVNFX0FTU0VSVCh3b3JsZCk7CisgICAgICAgIHBhcmFtZXRlcnMudXNl
ckNvbnRlbnRXb3JsZHMuYXBwZW5kKHdvcmxkLT53b3JsZERhdGEoKSk7CisgICAgfQogCiAgICAg
Zm9yIChhdXRvIHVzZXJTY3JpcHQgOiBtX3VzZXJTY3JpcHRzLT5lbGVtZW50c09mVHlwZTxBUEk6
OlVzZXJTY3JpcHQ+KCkpCiAgICAgICAgIHBhcmFtZXRlcnMudXNlclNjcmlwdHMuYXBwZW5kKHsg
dXNlclNjcmlwdC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LT5jb250ZW50V29ybGQoKS5pZGVu
dGlmaWVyKCksIHVzZXJTY3JpcHQtPnVzZXJTY3JpcHQoKSB9KTsKQEAgLTE0OSw1OSArMTU5LDM0
IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiAgICAgd2ViUHJvY2Vzc1Byb3h5LnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6YWRkQ29udGVudFdvcmxkVXNlKEFQSTo6Q29udGVudFdvcmxk
JiB3b3JsZCkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZENvbnRlbnRX
b3JsZChBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiB7Ci0gICAgaWYgKCZ3b3JsZCA9PSAmQVBJ
OjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSkKKyAgICBpZiAod29ybGQuaWRlbnRp
ZmllcigpID09IHBhZ2VDb250ZW50V29ybGRJZGVudGlmaWVyKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jb250ZW50V29ybGRzLmFkZCgmd29ybGQpOwotICAg
IGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3Mg
OiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpBZGRDb250ZW50V29ybGRzKHsgd29ybGQud29ybGREYXRhKCkg
fSksIGlkZW50aWZpZXIoKSk7Ci0gICAgfQotfQotCi1ib29sIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpzaG91bGRTZW5kUmVtb3ZlQ29udGVudFdvcmxkc01lc3NhZ2UoQVBJOjpDb250
ZW50V29ybGQmIHdvcmxkLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSkKLXsKLSAgICBp
ZiAoJndvcmxkID09ICZBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGl0ID0gbV9jb250ZW50V29ybGRzLmZpbmQo
JndvcmxkKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZVc2VzVG9SZW1v
dmU7ICsraSkgewotICAgICAgICBpZiAobV9jb250ZW50V29ybGRzLnJlbW92ZShpdCkpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChpID09IChudW1iZXJPZlVzZXNUb1JlbW92ZSAtIDEpKTsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiBm
YWxzZTsKLX0KKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXNzb2NpYXRlZENvbnRlbnRXb3JsZHMu
YWRkKHdvcmxkLmlkZW50aWZpZXIoKSk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkK
KyAgICAgICAgcmV0dXJuOwogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vdmVDb250ZW50V29ybGRVc2VzKEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCwgdW5zaWduZWQg
bnVtYmVyT2ZVc2VzVG9SZW1vdmUpCi17Ci0gICAgaWYgKHNob3VsZFNlbmRSZW1vdmVDb250ZW50
V29ybGRzTWVzc2FnZSh3b3JsZCwgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpKSB7Ci0gICAgICAgIGZv
ciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgcHJvY2Vzcy5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUNvbnRlbnRXb3JsZHMo
eyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7Ci0gICAgfQorICAgIHdvcmxk
LmFkZEFzc29jaWF0ZWRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgqdGhpcyk7CisgICAgZm9y
IChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Muc2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRDb250ZW50V29ybGRzKHsgd29ybGQu
d29ybGREYXRhKCkgfSksIGlkZW50aWZpZXIoKSk7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZUNvbnRlbnRXb3JsZFVzZXMoSGFzaENvdW50ZWRTZXQ8UmVm
UHRyPEFQSTo6Q29udGVudFdvcmxkPj4mIHdvcmxkcykKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmNvbnRlbnRXb3JsZERlc3Ryb3llZChBUEk6OkNvbnRlbnRXb3JsZCYgd29y
bGQpCiB7Ci0gICAgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkc1RvUmVtb3Zl
OwotICAgIGZvciAoYXV0byYgd29ybGRVc2VQYWlyIDogd29ybGRzKSB7Ci0gICAgICAgIGlmIChz
aG91bGRTZW5kUmVtb3ZlQ29udGVudFdvcmxkc01lc3NhZ2UoKndvcmxkVXNlUGFpci5rZXkuZ2V0
KCksIHdvcmxkVXNlUGFpci52YWx1ZSkpCi0gICAgICAgICAgICB3b3JsZHNUb1JlbW92ZS5hcHBl
bmQod29ybGRVc2VQYWlyLmtleS0+aWRlbnRpZmllcigpKTsKLSAgICB9CisgICAgYm9vbCByZXN1
bHQgPSBtX2Fzc29jaWF0ZWRDb250ZW50V29ybGRzLnJlbW92ZSh3b3JsZC5pZGVudGlmaWVyKCkp
OworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwogCiAgICAgZm9yIChhdXRvJiBw
cm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVDb250ZW50V29ybGRzKHdvcmxkc1RvUmVtb3Zl
KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OlJlbW92ZUNvbnRlbnRXb3JsZHMoeyB3b3JsZC5pZGVudGlmaWVy
KCkgfSksIGlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0LCBJbmplY3RV
c2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpCiB7CiAgICAgUmVmPEFQSTo6Q29udGVu
dFdvcmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQuY29udGVudFdvcmxkKCk7CiAKLSAgICBhZGRDb250
ZW50V29ybGRVc2Uod29ybGQuZ2V0KCkpOworICAgIGFkZENvbnRlbnRXb3JsZCh3b3JsZC5nZXQo
KSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLmFwcGVuZCgmdXNlclNjcmlwdCk7
CiAKQEAgLTIxNyw4ICsyMDIsNiBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdAogICAgICAgICBw
cm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNl
clNjcmlwdCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSksIGlk
ZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLnJlbW92ZUFsbCgm
dXNlclNjcmlwdCk7Ci0KLSAgICByZW1vdmVDb250ZW50V29ybGRVc2VzKHdvcmxkLmdldCgpLCAx
KTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNl
clNjcmlwdHMoQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQpAQCAtMjI2LDExICsyMDksOSBAQCB2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cyhB
UEk6OkNvbnRlbnRXb3JsZCYgd29ybAogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKQogICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50
aWZpZXIoKSk7CiAKLSAgICB1bnNpZ25lZCB1c2VyU2NyaXB0c1JlbW92ZWQgPSBtX3VzZXJTY3Jp
cHRzLT5yZW1vdmVBbGxPZlR5cGVNYXRjaGluZzxBUEk6OlVzZXJTY3JpcHQ+KFsmXShjb25zdCBh
dXRvJiB1c2VyU2NyaXB0KSB7CisgICAgbV91c2VyU2NyaXB0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0
Y2hpbmc8QVBJOjpVc2VyU2NyaXB0PihbJl0oY29uc3QgYXV0byYgdXNlclNjcmlwdCkgewogICAg
ICAgICByZXR1cm4gJnVzZXJTY3JpcHQtPmNvbnRlbnRXb3JsZCgpID09ICZ3b3JsZDsKICAgICB9
KTsKLQotICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMod29ybGQsIHVzZXJTY3JpcHRzUmVtb3Zl
ZCk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVz
ZXJTY3JpcHRzKCkKQEAgLTI0OCwxNSArMjI5LDEzIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKCkKICAgICAgICAgcHJvY2Vzcy5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRz
KHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+
ZWxlbWVudHMoKS5jbGVhcigpOwotCi0gICAgcmVtb3ZlQ29udGVudFdvcmxkVXNlcyh3b3JsZHMp
OwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVT
aGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKIHsKICAgICBSZWY8QVBJ
OjpDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclN0eWxlU2hlZXQuY29udGVudFdvcmxkKCk7CiAK
LSAgICBhZGRDb250ZW50V29ybGRVc2Uod29ybGQuZ2V0KCkpOworICAgIGFkZENvbnRlbnRXb3Js
ZCh3b3JsZC5nZXQoKSk7CiAKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5hcHBl
bmQoJnVzZXJTdHlsZVNoZWV0KTsKIApAQCAtMjcyLDggKzI1MSw2IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxl
U2hlZXQmIHVzCiAgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVVc2VyU3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2Vy
U3R5bGVTaGVldC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU3R5
bGVTaGVldHMtPmVsZW1lbnRzKCkucmVtb3ZlQWxsKCZ1c2VyU3R5bGVTaGVldCk7Ci0KLSAgICBy
ZW1vdmVDb250ZW50V29ybGRVc2VzKHdvcmxkLmdldCgpLCAxKTsKIH0KIAogdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKEFQSTo6Q29u
dGVudFdvcmxkJiB3b3JsZCkKQEAgLTI4MSwxMSArMjU4LDkgQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKEFQSTo6Q29udGVudFdv
cmxkJgogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQogICAgICAgICBwcm9j
ZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNl
clN0eWxlU2hlZXRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogCi0g
ICAgdW5zaWduZWQgdXNlclN0eWxlU2hlZXRzUmVtb3ZlZCA9IG1fdXNlclN0eWxlU2hlZXRzLT5y
ZW1vdmVBbGxPZlR5cGVNYXRjaGluZzxBUEk6OlVzZXJTdHlsZVNoZWV0PihbJl0oY29uc3QgYXV0
byYgdXNlclN0eWxlU2hlZXQpIHsKKyAgICBtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlQWxsT2ZU
eXBlTWF0Y2hpbmc8QVBJOjpVc2VyU3R5bGVTaGVldD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJTdHls
ZVNoZWV0KSB7CiAgICAgICAgIHJldHVybiAmdXNlclN0eWxlU2hlZXQtPmNvbnRlbnRXb3JsZCgp
ID09ICZ3b3JsZDsKICAgICB9KTsKLQotICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMod29ybGQs
IHVzZXJTdHlsZVNoZWV0c1JlbW92ZWQpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQpAQCAtMzAzLDggKzI3OCw2IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTdHlsZVNo
ZWV0cygpCiAgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMod29ybGRJZGVudGlmaWVycyksIGlkZW50
aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5jbGVhcigpOwot
Ci0gICAgcmVtb3ZlQ29udGVudFdvcmxkVXNlcyh3b3JsZHMpOwogfQogCiBib29sIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoV2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXImIGhhbmRsZXIpCkBAIC0zMTYsNyArMjg5LDcgQEAgYm9vbCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdl
YlNjcmlwdE1lc3NhZ2UKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBh
ZGRDb250ZW50V29ybGRVc2Uod29ybGQpOworICAgIGFkZENvbnRlbnRXb3JsZCh3b3JsZCk7CiAK
ICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5hZGQoaGFuZGxlci5pZGVudGlmaWVyKCksICZo
YW5kbGVyKTsKIApAQCAtMzM1LDcgKzMwOCw2IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nCiAK
ICAgICAgICAgICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnJlbW92ZShpdCk7CiAKLSAgICAg
ICAgICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMod29ybGQsIDEpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMzU0LDggKzMyNiw2IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpD
b250ZW50V29yCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0pOwotCi0g
ICAgcmVtb3ZlQ29udGVudFdvcmxkVXNlcyh3b3JsZCwgbnVtYmVyUmVtb3ZlZCk7CiB9CiAKIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwg
RnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDUxYjk4MWQ1YzVkLi4yYzA5NDI4NTBiNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkNvbnRlbnRX
b3JsZFNoYXJlZC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLmgiCkBAIC05Myw4ICs5NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUFs
bFVzZXJTdHlsZVNoZWV0cyhBUEk6OkNvbnRlbnRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlQWxs
VXNlclN0eWxlU2hlZXRzKCk7CiAKLSAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50KEFQSTo6
Q29udGVudFdvcmxkJik7Ci0KICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIHdhcyBhIG5h
bWUgY29uZmxpY3QuCiAgICAgYm9vbCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoV2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXImKTsKICAgICB2b2lkIHJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZv
ck5hbWUoY29uc3QgU3RyaW5nJiwgQVBJOjpDb250ZW50V29ybGQmKTsKQEAgLTExMywyMyArMTEy
LDIyIEBAIHB1YmxpYzoKIAogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCisgICAgdm9pZCBjb250
ZW50V29ybGREZXN0cm95ZWQoQVBJOjpDb250ZW50V29ybGQmKTsKKwogcHJpdmF0ZToKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRQb3N0
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBGcmFtZUlu
Zm9EYXRhJiYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpOwogCi0gICAgdm9pZCBhZGRDb250ZW50V29ybGRVc2UoQVBJOjpDb250ZW50V29ybGQm
KTsKLSAgICB2b2lkIHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMoQVBJOjpDb250ZW50V29ybGQmLCB1
bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSk7Ci0gICAgdm9pZCByZW1vdmVDb250ZW50V29y
bGRVc2VzKEhhc2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OkNvbnRlbnRXb3JsZD4+Jik7Ci0gICAg
Ym9vbCBzaG91bGRTZW5kUmVtb3ZlQ29udGVudFdvcmxkc01lc3NhZ2UoQVBJOjpDb250ZW50V29y
bGQmLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSk7CisgICAgdm9pZCBhZGRDb250ZW50
V29ybGQoQVBJOjpDb250ZW50V29ybGQmKTsKIAogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4g
bV9wcm9jZXNzZXM7CiAgICAgUmVmPEFQSTo6QXJyYXk+IG1fdXNlclNjcmlwdHM7CiAgICAgUmVm
PEFQSTo6QXJyYXk+IG1fdXNlclN0eWxlU2hlZXRzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4+IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzOwot
ICAgIEhhc2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OkNvbnRlbnRXb3JsZD4+IG1fY29udGVudFdv
cmxkczsKKyAgICBIYXNoU2V0PENvbnRlbnRXb3JsZElkZW50aWZpZXI+IG1fYXNzb2NpYXRlZENv
bnRlbnRXb3JsZHM7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFdlYWtI
YXNoU2V0PE5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0d29ya1Byb2Nlc3NlczsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YjhjNDI1ZGJlYy4u
OWRlNmU4NDlmYTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNC0xOCAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
IHZzIENvbnRlbnRXb3JsZCBsaWZldGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vi
Vmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbToKKyAgICAgICAgKC1bRHVtbXlNZXNzYWdlSGFuZGxl
ciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6CisgICAg
ICAgIChURVNUKTogTWFrZSBzdXJlIHJlbW92aW5nIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciBm
cm9tIGEgcGFydGljdWxhciB3b3JsZAorICAgICAgICAgIGRvZXNuJ3QgYWxzbyBkZXN0cm95IHRo
ZSBvdGhlciBKYXZhU2NyaXB0IGNvbnRlbnRzIG9mIHRoYXQgd29ybGQuCisKIDIwMjAtMDQtMTcg
IEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5h
YmxlIHNlcnZpY2Ugd29ya2VycyBmb3IgYXBwLWJvdW5kIGRvbWFpbnMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZh
U2NyaXB0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZp
ZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0KaW5kZXggNTgwOGY5MDM5NzQuLjJiYWQzNDg0ZGEzIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmll
d0V2YWx1YXRlSmF2YVNjcmlwdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbQpAQCAtMzQsMTEgKzM0LDEy
IEBACiAjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgogI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgotI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJL
aXQvV0tDb250ZW50V29ybGQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRXb3JsZFByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1Jl
Zi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oPgor
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0ZyYW1lVHJl
ZU5vZGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTEzMyw2ICsxMzQsMTUgQEAg
VEVTVChXS1dlYlZpZXcsIFdLQ29udGVudFdvcmxkKQogICAgIEVYUEVDVF9FUShuYW1lZFdvcmxk
LCBbV0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIk5hbWUiXSk7CiB9CiAKK0BpbnRlcmZh
Y2UgRHVtbXlNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
PgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gRHVtbXlNZXNzYWdlSGFuZGxlcgorLSAodm9pZCl1
c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRl
bnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKilt
ZXNzYWdlCit7Cit9CitAZW5kCisKIFRFU1QoV0tXZWJWaWV3LCBFdmFsdWF0ZUphdmFTY3JpcHRJ
bldvcmxkcykKIHsKICAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApXSk7CkBAIC0xODUsOCArMTk1LDEyIEBAIFRFU1QoV0tXZWJWaWV3LCBFdmFsdWF0
ZUphdmFTY3JpcHRJbldvcmxkcykKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CiAKLSAgICAvLyBTZXQgYSB2YXJpYmFsZSB2YWx1ZSBp
biBhIG5hbWVkIHdvcmxkLgorICAgIC8vIEFkZCBhIHNjcmlwdE1lc3NhZ2VIYW5kbGVyIGluIGEg
bmFtZWQgd29ybGQuCiAgICAgUmV0YWluUHRyPFdLQ29udGVudFdvcmxkPiBuYW1lZFdvcmxkID0g
W1dLQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJOYW1lZFdvcmxkIl07CisgICAgaWQgaGFu
ZGxlciA9IFtbW0R1bW15TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
KyAgICBbd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBf
YWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlciBuYW1lOkAidGVzdEhhbmRsZXJOYW1lIiB1
c2VyQ29udGVudFdvcmxkOm5hbWVkV29ybGQuZ2V0KCkuX3VzZXJDb250ZW50V29ybGRdOworCisg
ICAgLy8gU2V0IGEgdmFyaWFibGUgdmFsdWUgaW4gdGhhdCBuYW1lZCB3b3JsZC4KICAgICBbd2Vi
VmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ2YXIgYmFyID0gJ2JheiciIGluQ29udGVudFdvcmxk
Om5hbWVkV29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CiAgICAgICAgIGlzRG9uZSA9
IHRydWU7CkBAIC0xOTUsNyArMjA5LDcgQEAgVEVTVChXS1dlYlZpZXcsIEV2YWx1YXRlSmF2YVNj
cmlwdEluV29ybGRzKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAg
ICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIC8vIFNldCBhIGdsb2JhbCB2YXJpYWJsZSB2YWx1ZSBp
biBhIG5hbWVkIHdvcmxkIHZpYSBhIGZ1bmN0aW9uIGNhbGwuCisgICAgLy8gU2V0IGEgZ2xvYmFs
IHZhcmlhYmxlIHZhbHVlIGluIHRoYXQgbmFtZWQgd29ybGQgdmlhIGEgZnVuY3Rpb24gY2FsbC4K
ICAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAid2luZG93LmJheiA9ICdiYXQnIiBh
cmd1bWVudHM6bmlsIGluQ29udGVudFdvcmxkOm5hbWVkV29ybGQuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OVUxM
KHJlc3VsdCk7CiAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKQEAgLTIwNSw3ICsyMTksMTAg
QEAgVEVTVChXS1dlYlZpZXcsIEV2YWx1YXRlSmF2YVNjcmlwdEluV29ybGRzKQogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAg
IC8vIFZlcmlmeSB0aGV5IGFyZSB0aGVyZSBpbiB0aGF0IG5hbWVkIHdvcmxkLgorICAgIC8vIFJl
bW92ZSB0aGUgZHVtbXkgbWVzc2FnZSBoYW5kbGVyCisgICAgW3dlYlZpZXcuZ2V0KCkuY29uZmln
dXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgX3JlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVy
Rm9yTmFtZTpAInRlc3RIYW5kbGVyTmFtZSIgdXNlckNvbnRlbnRXb3JsZDpuYW1lZFdvcmxkLmdl
dCgpLl91c2VyQ29udGVudFdvcmxkXTsKKworICAgIC8vIFZlcmlmeSB0aGUgdmFyaWFibGVzIHdl
IHNldCBhcmUgdGhlcmUgaW4gdGhhdCBuYW1lZCB3b3JsZC4KICAgICBbd2ViVmlldyBldmFsdWF0
ZUphdmFTY3JpcHQ6QCJiYXIiIGluQ29udGVudFdvcmxkOm5hbWVkV29ybGQuZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVD
VF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CiAgICAgICAg
IEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiYmF6Il0pOwo=
</data>
<flag name="review"
          id="412297"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396883</attachid>
            <date>2020-04-18 18:47:59 -0700</date>
            <delta_ts>2020-04-18 19:08:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23849</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZTU0OTAyYWY3OTcuLmZhMjUxMGMzMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDYyIEBACisyMDIwLTA0LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBGaXggV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgdnMgQ29udGVudFdvcmxk
IGxpZmV0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTA3MDAKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAg
ICAgIENvdmVyZWQgYnkgQVBJIHRlc3QuCisgICAgICAgIAorICAgICAgICBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSBjdXJyZW50bHkga2VlcHMgYWxsIG9mIGl0cyBhc3NvY2lhdGVkIEFQ
STo6Q29udGVudFdvcmxkcyBhbGl2ZSB2aWEgUmVmUHRycy4KKyAgICAgICAgCisgICAgICAgIFRo
aXMgaXMgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IGFsbCBvZiB0aGUgYXNzb2NpYXRlZCBXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcnMsIFVzZXJTY3JpcHRzLCBhbmQgCisgICAgICAgIFVzZXJTdHlsZVNo
ZWV0cyBhbHJlYWR5IGtlZXAgdGhlaXIgYXNzb2NpYXRlZCBBUEk6OkNvbnRlbnRXb3JsZHMgYWxp
dmUuCisKKyAgICAgICAgSXQgdGhlbiBkZWNpZGVkcyB0byB0ZWxsIFdlYlByb2Nlc3NlcyB0byBm
b3JnZXQgYSBjb250ZW50IHdvcmxkIGFmdGVyIGFsbCBvZiBpdHMgY2xpZW50cyBhcmUgcmVtb3Zl
ZC4KKyAgICAgICAgCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNvbnRlbnQgd29ybGRzIGFyZSB1
c2VkIGZvciBtb3JlIHRoYW4ganVzdCBjb250ZW50IGNvbnRyb2xsZXIgc3R1ZmYuIFRoZXkncmUg
dXNlZCBmb3IgZGlyZWN0CisgICAgICAgIEphdmFTY3JpcHQgZXZhbHVhdGlvbiBhcyB3ZWxsLgor
ICAgICAgICAKKyAgICAgICAgU28gYSBjbGllbnQgY291bGQ6CisgICAgICAgICAgLSBBZGQgYSBz
Y3JpcHQgbWVzc2FnZSBoYW5kbGVyIGluIGEgY29udGVudCB3b3JsZC4KKyAgICAgICAgICAtIEV2
YWx1YXRlIEphdmFTY3JpcHQgaW4gdGhhdCBjb250ZW50IHdvcmxkLCBzZXR0aW5nIHVwIHNvbWUg
cGVyc2lzdGVudCBzdGF0ZS4KKyAgICAgICAgICAtIFJlbW92ZSB0aGUgc2NyaXB0IG1lc3NhZ2Ug
aGFuZGxlci4KKyAgICAgICAgICAtIEZpbmQgdGhhdCB0aGVpciBwZXJzaXN0ZW50IHN0YXRlIGZy
b20gdGhlIEphdmFTY3JpcHQgZXZhbHVhdGlvbiBpcyBnb25lIGZyb20gdGhhdCB3b3JsZCwgZXZl
biB0aG91Z2ggdGhleQorICAgICAgICAgICAgc3RpbGwgcmV0YWluIGEgdXNhYmxlIGhhbmRsZSB0
byB0aGF0IHdvcmxkLgorICAgICAgICAKKyAgICAgICAgVGhlIG9ubHkgcGFydHkgd2hvIGhhcyBh
bnkgYnVzaW5lc3MgbWFuYWdpbmcgdGhlIGxpZmV0aW1lIG9mIGFuIEFQSTo6Q29udGVudFdvcmxk
IGlzIHRoZSBBUEk6OkNvbnRlbnRXb3JsZCBpdHNlbGYuCisgICAgICAgIAorICAgICAgICBNYWtp
bmcgdGhpcyBjaGFuZ2UgaXM6CisgICAgICAgICAgMSAtIE5pY2UgY2xlYW51cAorICAgICAgICAg
IDIgLSBGaXhlcyB0aGUgYWJvdmUgbWVudGlvbmVkIGJ1ZworICAgICAgICAKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5jcHA6CisgICAgICAgIChBUEk6OkNvbnRlbnRX
b3JsZDo6d29ybGRGb3JJZGVudGlmaWVyKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkOjpD
b250ZW50V29ybGQpOgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGQ6OnNoYXJlZFdvcmxkV2l0
aE5hbWUpOgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGQ6On5Db250ZW50V29ybGQpOgorICAg
ICAgICAoQVBJOjpDb250ZW50V29ybGQ6OmFkZEFzc29jaWF0ZWRVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eSk6CisgICAgICAgIChBUEk6OkNvbnRlbnRXb3JsZDo6dXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHlEZXN0cm95ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFdv
cmxkLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50V29ybGQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y29udGVudFdvcmxkRGVzdHJveWVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJT
Y3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
cmVtb3ZlVXNlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVl
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFu
ZGxlckZvck5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50V29ybGRVc2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6c2hvdWxk
U2VuZFJlbW92ZUNvbnRlbnRXb3JsZHNNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUNvbnRlbnRXb3JsZFVzZXMp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oOgorCiAyMDIwLTA0LTE4ICBQYWJsbyBTYWF2ZWRyYSAgPHBzYWF2
ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gUmVwbGFjZSBldmlsIHN0cnRv
aygpIGNhbGxzIHdpdGggZnNjYW5mKCkgaW4gTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFdvcmxkLmNwcAppbmRleCAz
ZTQ5NTE0ZmE5ZC4uMzI3MDgzZGE4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50V29ybGQuY3BwCkBAIC0yNywxMSArMjcsMjkgQEAKICNpbmNsdWRlICJB
UElDb250ZW50V29ybGQuaCIKIAogI2luY2x1ZGUgIkNvbnRlbnRXb3JsZFNoYXJlZC5oIgorI2lu
Y2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBB
UEkgewogCitzdGF0aWMgSGFzaE1hcDxXVEY6OlN0cmluZywgQ29udGVudFdvcmxkKj4mIHNoYXJl
ZFdvcmxkTmFtZU1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8V1RG
OjpTdHJpbmcsIENvbnRlbnRXb3JsZCo+PiBzaGFyZWRNYXA7CisgICAgcmV0dXJuIHNoYXJlZE1h
cDsKK30KKworc3RhdGljIEhhc2hNYXA8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBD
b250ZW50V29ybGQqPiYgc2hhcmVkV29ybGRJZGVudGlmaWVyTWFwKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIsIENv
bnRlbnRXb3JsZCo+PiBzaGFyZWRNYXA7CisgICAgcmV0dXJuIHNoYXJlZE1hcDsKK30KKworQ29u
dGVudFdvcmxkKiBDb250ZW50V29ybGQ6OndvcmxkRm9ySWRlbnRpZmllcihXZWJLaXQ6OkNvbnRl
bnRXb3JsZElkZW50aWZpZXIgaWRlbnRpZmVyKQoreworICAgIHJldHVybiBzaGFyZWRXb3JsZElk
ZW50aWZpZXJNYXAoKS5nZXQoaWRlbnRpZmVyKTsKK30KKwogQ29udGVudFdvcmxkOjpDb250ZW50
V29ybGQoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpCiAgICAgOiBtX25hbWUobmFtZSkKIHsKQEAg
LTQ0LDE3ICs2MiwxOSBAQCBDb250ZW50V29ybGQ6OkNvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0
cmluZyYgbmFtZSkKICAgICB9KTsKIAogICAgIG1faWRlbnRpZmllciA9IFdlYktpdDo6Q29udGVu
dFdvcmxkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IHNoYXJl
ZFdvcmxkSWRlbnRpZmllck1hcCgpLmFkZChtX2lkZW50aWZpZXIsIHRoaXMpOworICAgIEFTU0VS
VF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXN0YXRpYyBI
YXNoTWFwPFdURjo6U3RyaW5nLCBDb250ZW50V29ybGQqPiYgc2hhcmVkV29ybGRNYXAoKQorQ29u
dGVudFdvcmxkOjpDb250ZW50V29ybGQoV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBzdGF0aWMg
SGFzaE1hcDxXVEY6OlN0cmluZywgQ29udGVudFdvcmxkKj4qIHNoYXJlZE1hcCA9IG5ldyBIYXNo
TWFwPFdURjo6U3RyaW5nLCBDb250ZW50V29ybGQqPjsKLSAgICByZXR1cm4gKnNoYXJlZE1hcDsK
KyAgICBBU1NFUlQobV9pZGVudGlmaWVyID09IFdlYktpdDo6cGFnZUNvbnRlbnRXb3JsZElkZW50
aWZpZXIoKSk7CiB9CiAKIFJlZjxDb250ZW50V29ybGQ+IENvbnRlbnRXb3JsZDo6c2hhcmVkV29y
bGRXaXRoTmFtZShjb25zdCBXVEY6OlN0cmluZyYgbmFtZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9
IHNoYXJlZFdvcmxkTWFwKCkuYWRkKG5hbWUsIG51bGxwdHIpOworICAgIGF1dG8gcmVzdWx0ID0g
c2hhcmVkV29ybGROYW1lTWFwKCkuYWRkKG5hbWUsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQu
aXNOZXdFbnRyeSkgewogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbmV3IENvbnRl
bnRXb3JsZChuYW1lKTsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpyZXN1bHQuaXRlcmF0b3It
PnZhbHVlKTsKQEAgLTc3LDExICs5NywzMCBAQCBDb250ZW50V29ybGQmIENvbnRlbnRXb3JsZDo6
ZGVmYXVsdENsaWVudFdvcmxkKCkKIAogQ29udGVudFdvcmxkOjp+Q29udGVudFdvcmxkKCkKIHsK
LSAgICBpZiAobmFtZSgpLmlzTnVsbCgpKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1f
aWRlbnRpZmllciAhPSBXZWJLaXQ6OnBhZ2VDb250ZW50V29ybGRJZGVudGlmaWVyKCkpOwogCi0g
ICAgYXV0byB0YWtlbiA9IHNoYXJlZFdvcmxkTWFwKCkudGFrZShuYW1lKCkpOwotICAgIEFTU0VS
VF9VTlVTRUQodGFrZW4sIHRha2VuID09IHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0gc2hhcmVk
V29ybGRJZGVudGlmaWVyTWFwKCkudGFrZShtX2lkZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQgPT0gdGhpcyB8fCBtX2lkZW50aWZpZXIgPT0gV2ViS2l0OjpwYWdl
Q29udGVudFdvcmxkSWRlbnRpZmllcigpKTsKKworICAgIGlmICghbmFtZSgpLmlzTnVsbCgpKSB7
CisgICAgICAgIGF1dG8gdGFrZW4gPSBzaGFyZWRXb3JsZE5hbWVNYXAoKS50YWtlKG5hbWUoKSk7
CisgICAgICAgIEFTU0VSVF9VTlVTRUQodGFrZW4sIHRha2VuID09IHRoaXMpOworICAgIH0KKwor
ICAgIGZvciAoYXV0byBwcm94eSA6IG1fYXNzb2NpYXRlZENvbnRlbnRDb250cm9sbGVyUHJveGll
cykKKyAgICAgICAgcHJveHktPmNvbnRlbnRXb3JsZERlc3Ryb3llZCgqdGhpcyk7Cit9CisKK3Zv
aWQgQ29udGVudFdvcmxkOjphZGRBc3NvY2lhdGVkVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHko
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYgcHJveHkpCit7CisgICAgYXV0
byBhZGRSZXN1bHQgPSBtX2Fzc29jaWF0ZWRDb250ZW50Q29udHJvbGxlclByb3hpZXMuYWRkKCZw
cm94eSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKK30KKwordm9pZCBDb250ZW50V29ybGQ6OnVzZXJDb250ZW50Q29udHJvbGxlclByb3h5RGVz
dHJveWVkKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmIHByb3h5KQorewor
ICAgIGJvb2wgcmVtb3ZlZCA9IG1fYXNzb2NpYXRlZENvbnRlbnRDb250cm9sbGVyUHJveGllcy5y
ZW1vdmUoJnByb3h5KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50V29ybGQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50V29ybGQuaAppbmRleCA0MTExZTY0YjNhOC4uMjU4N2ExMmY4NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50V29ybGQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFdvcmxkLmgKQEAgLTI3LDEyICsyNywx
OCBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFdvcmxkU2hh
cmVkLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTsKK30KKwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIENvbnRlbnRXb3JsZCBm
aW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkNvbnRlbnRX
b3JsZD4gewogcHVibGljOgorICAgIHN0YXRpYyBDb250ZW50V29ybGQqIHdvcmxkRm9ySWRlbnRp
ZmllcihXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIpOwogICAgIHN0YXRpYyBSZWY8Q29u
dGVudFdvcmxkPiBzaGFyZWRXb3JsZFdpdGhOYW1lKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAg
c3RhdGljIENvbnRlbnRXb3JsZCYgcGFnZUNvbnRlbnRXb3JsZCgpOwogICAgIHN0YXRpYyBDb250
ZW50V29ybGQmIGRlZmF1bHRDbGllbnRXb3JsZCgpOwpAQCAtNDMsMTMgKzQ5LDE2IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsg
fQogICAgIHN0ZDo6cGFpcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIsIFdURjo6U3Ry
aW5nPiB3b3JsZERhdGEoKSBjb25zdCB7IHJldHVybiB7IG1faWRlbnRpZmllciwgbV9uYW1lIH07
IH0KIAorICAgIHZvaWQgYWRkQXNzb2NpYXRlZFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmKTsKKyAgICB2b2lkIHVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5RGVzdHJveWVkKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDb250ZW50V29ybGQoY29uc3Qg
V1RGOjpTdHJpbmcmKTsKLSAgICBleHBsaWNpdCBDb250ZW50V29ybGQoV2ViS2l0OjpDb250ZW50
V29ybGRJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpIHsgfQorICAgIGV4cGxpY2l0IENvbnRlbnRXb3JsZChXZWJLaXQ6OkNvbnRlbnRXb3Js
ZElkZW50aWZpZXIpOwogCiAgICAgV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKICAgICBXVEY6OlN0cmluZyBtX25hbWU7CisgICAgSGFzaFNldDxXZWJLaXQ6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Kj4gbV9hc3NvY2lhdGVkQ29udGVudENvbnRyb2xs
ZXJQcm94aWVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNGUwMjIzM2M5NTkuLjdkZDhlYjk5MzE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBAIC03Myw2ICs3MywxMiBA
QCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkoKQogCiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KCkKIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGlkZW50aWZpZXIgOiBt
X2Fzc29jaWF0ZWRDb250ZW50V29ybGRzKSB7CisgICAgICAgIGF1dG8qIHdvcmxkID0gQVBJOjpD
b250ZW50V29ybGQ6OndvcmxkRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQod29ybGQpOworICAgICAgICB3b3JsZC0+dXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHlEZXN0cm95ZWQoKnRoaXMpOworICAgIH0KKyAgICAKICAgICB3ZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94aWVzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CiAgICAgZm9yIChhdXRvJiBw
cm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKICAgICAgICAgcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7CkBAIC0xMTAsOCArMTE2LDEyIEBAIFVzZXJDb250
ZW50Q29udHJvbGxlclBhcmFtZXRlcnMgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnBh
cmFtZXRlcnMoKSBjb25zCiAKICAgICBwYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSBpZGVudGlmaWVy
KCk7CiAgICAgCi0gICAgZm9yIChjb25zdCBhdXRvJiB3b3JsZCA6IG1fY29udGVudFdvcmxkcykK
LSAgICAgICAgcGFyYW1ldGVycy51c2VyQ29udGVudFdvcmxkcy5hcHBlbmQod29ybGQua2V5LT53
b3JsZERhdGEoKSk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMudXNlckNvbnRlbnRXb3JsZHMuaXNF
bXB0eSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGlkZW50aWZpZXIgOiBtX2Fzc29jaWF0ZWRD
b250ZW50V29ybGRzKSB7CisgICAgICAgIGF1dG8qIHdvcmxkID0gQVBJOjpDb250ZW50V29ybGQ6
OndvcmxkRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
d29ybGQpOworICAgICAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzLmFwcGVuZCh3b3Js
ZC0+d29ybGREYXRhKCkpOworICAgIH0KIAogICAgIGZvciAoYXV0byB1c2VyU2NyaXB0IDogbV91
c2VyU2NyaXB0cy0+ZWxlbWVudHNPZlR5cGU8QVBJOjpVc2VyU2NyaXB0PigpKQogICAgICAgICBw
YXJhbWV0ZXJzLnVzZXJTY3JpcHRzLmFwcGVuZCh7IHVzZXJTY3JpcHQtPmlkZW50aWZpZXIoKSwg
dXNlclNjcmlwdC0+Y29udGVudFdvcmxkKCkuaWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LT51c2Vy
U2NyaXB0KCkgfSk7CkBAIC0xNDksNTkgKzE1OSwzNCBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjpyZW1vdmVQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1By
bwogICAgIHdlYlByb2Nlc3NQcm94eS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50
aWZpZXIoKSk7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZENv
bnRlbnRXb3JsZFVzZShBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCit2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50V29ybGQoQVBJOjpDb250ZW50V29ybGQmIHdv
cmxkKQogewotICAgIGlmICgmd29ybGQgPT0gJkFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVu
dFdvcmxkKCkpCisgICAgaWYgKHdvcmxkLmlkZW50aWZpZXIoKSA9PSBwYWdlQ29udGVudFdvcmxk
SWRlbnRpZmllcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
Y29udGVudFdvcmxkcy5hZGQoJndvcmxkKTsKLSAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkp
IHsKLSAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAg
ICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkQ29u
dGVudFdvcmxkcyh7IHdvcmxkLndvcmxkRGF0YSgpIH0pLCBpZGVudGlmaWVyKCkpOwotICAgIH0K
LX0KLQotYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6c2hvdWxkU2VuZFJlbW92
ZUNvbnRlbnRXb3JsZHNNZXNzYWdlKEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCwgdW5zaWduZWQg
bnVtYmVyT2ZVc2VzVG9SZW1vdmUpCi17Ci0gICAgaWYgKCZ3b3JsZCA9PSAmQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
YXV0byBpdCA9IG1fY29udGVudFdvcmxkcy5maW5kKCZ3b3JsZCk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bWJlck9mVXNlc1RvUmVtb3ZlOyArK2kpIHsKLSAgICAgICAgaWYgKG1f
Y29udGVudFdvcmxkcy5yZW1vdmUoaXQpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaSA9PSAobnVt
YmVyT2ZVc2VzVG9SZW1vdmUgLSAxKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZmFsc2U7Ci19CisgICAgYXV0byBhZGRSZXN1
bHQgPSBtX2Fzc29jaWF0ZWRDb250ZW50V29ybGRzLmFkZCh3b3JsZC5pZGVudGlmaWVyKCkpOwor
ICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybjsKIAotdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVudFdvcmxkVXNlcyhBUEk6
OkNvbnRlbnRXb3JsZCYgd29ybGQsIHVuc2lnbmVkIG51bWJlck9mVXNlc1RvUmVtb3ZlKQotewot
ICAgIGlmIChzaG91bGRTZW5kUmVtb3ZlQ29udGVudFdvcmxkc01lc3NhZ2Uod29ybGQsIG51bWJl
ck9mVXNlc1RvUmVtb3ZlKSkgewotICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nl
c3NlcykKLSAgICAgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVDb250ZW50V29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBp
ZGVudGlmaWVyKCkpOwotICAgIH0KKyAgICB3b3JsZC5hZGRBc3NvY2lhdGVkVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkoKnRoaXMpOworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKQorICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6QWRkQ29udGVudFdvcmxkcyh7IHdvcmxkLndvcmxkRGF0YSgpIH0pLCBpZGVudGlmaWVy
KCkpOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVDb250
ZW50V29ybGRVc2VzKEhhc2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OkNvbnRlbnRXb3JsZD4+JiB3
b3JsZHMpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpjb250ZW50V29ybGRE
ZXN0cm95ZWQoQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogewotICAgIFZlY3RvcjxDb250ZW50
V29ybGRJZGVudGlmaWVyPiB3b3JsZHNUb1JlbW92ZTsKLSAgICBmb3IgKGF1dG8mIHdvcmxkVXNl
UGFpciA6IHdvcmxkcykgewotICAgICAgICBpZiAoc2hvdWxkU2VuZFJlbW92ZUNvbnRlbnRXb3Js
ZHNNZXNzYWdlKCp3b3JsZFVzZVBhaXIua2V5LmdldCgpLCB3b3JsZFVzZVBhaXIudmFsdWUpKQot
ICAgICAgICAgICAgd29ybGRzVG9SZW1vdmUuYXBwZW5kKHdvcmxkVXNlUGFpci5rZXktPmlkZW50
aWZpZXIoKSk7Ci0gICAgfQorICAgIGJvb2wgcmVzdWx0ID0gbV9hc3NvY2lhdGVkQ29udGVudFdv
cmxkcy5yZW1vdmUod29ybGQuaWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0KTsKIAogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAg
ICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlQ29udGVudFdvcmxkcyh3b3JsZHNUb1JlbW92ZSksIGlkZW50aWZpZXIoKSk7CisgICAgICAg
IHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVD
b250ZW50V29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogfQog
CiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6
VXNlclNjcmlwdCYgdXNlclNjcmlwdCwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5IGltbWVk
aWF0ZWx5KQogewogICAgIFJlZjxBUEk6OkNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU2NyaXB0
LmNvbnRlbnRXb3JsZCgpOwogCi0gICAgYWRkQ29udGVudFdvcmxkVXNlKHdvcmxkLmdldCgpKTsK
KyAgICBhZGRDb250ZW50V29ybGQod29ybGQuZ2V0KCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+
ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTY3JpcHQpOwogCkBAIC0yMTcsOCArMjAyLDYgQEAgdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVz
ZXJTY3JpcHQmIHVzZXJTY3JpcHQKICAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHQod29ybGQtPmlkZW50aWZpZXIo
KSwgdXNlclNjcmlwdC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2Vy
U2NyaXB0cy0+ZWxlbWVudHMoKS5yZW1vdmVBbGwoJnVzZXJTY3JpcHQpOwotCi0gICAgcmVtb3Zl
Q29udGVudFdvcmxkVXNlcyh3b3JsZC5nZXQoKSwgMSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKEFQSTo6Q29udGVudFdvcmxk
JiB3b3JsZCkKQEAgLTIyNiwxMSArMjA5LDkgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMoQVBJOjpDb250ZW50V29ybGQmIHdvcmwKICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKICAgICAgICAgcHJvY2Vzcy5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRz
KHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogCi0gICAgdW5zaWduZWQg
dXNlclNjcmlwdHNSZW1vdmVkID0gbV91c2VyU2NyaXB0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0Y2hp
bmc8QVBJOjpVc2VyU2NyaXB0PihbJl0oY29uc3QgYXV0byYgdXNlclNjcmlwdCkgeworICAgIG1f
dXNlclNjcmlwdHMtPnJlbW92ZUFsbE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNlclNjcmlwdD4oWyZd
KGNvbnN0IGF1dG8mIHVzZXJTY3JpcHQpIHsKICAgICAgICAgcmV0dXJuICZ1c2VyU2NyaXB0LT5j
b250ZW50V29ybGQoKSA9PSAmd29ybGQ7CiAgICAgfSk7Ci0KLSAgICByZW1vdmVDb250ZW50V29y
bGRVc2VzKHdvcmxkLCB1c2VyU2NyaXB0c1JlbW92ZWQpOwogfQogCiB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cygpCkBAIC0yNDgsMTUgKzIy
OSwxMyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2Vy
U2NyaXB0cygpCiAgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRp
ZmllcigpKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKLQotICAg
IHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMod29ybGRzKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYg
dXNlclN0eWxlU2hlZXQpCiB7CiAgICAgUmVmPEFQSTo6Q29udGVudFdvcmxkPiB3b3JsZCA9IHVz
ZXJTdHlsZVNoZWV0LmNvbnRlbnRXb3JsZCgpOwogCi0gICAgYWRkQ29udGVudFdvcmxkVXNlKHdv
cmxkLmdldCgpKTsKKyAgICBhZGRDb250ZW50V29ybGQod29ybGQuZ2V0KCkpOwogCiAgICAgbV91
c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU3R5bGVTaGVldCk7CiAKQEAg
LTI3Miw4ICsyNTEsNiBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1cwogICAgICAgICBwcm9jZXNz
LnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclN0eWxl
U2hlZXQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigpKSwg
aWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLnJlbW92
ZUFsbCgmdXNlclN0eWxlU2hlZXQpOwotCi0gICAgcmVtb3ZlQ29udGVudFdvcmxkVXNlcyh3b3Js
ZC5nZXQoKSwgMSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZUFsbFVzZXJTdHlsZVNoZWV0cyhBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCkBAIC0yODEs
MTEgKzI1OCw5IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFs
bFVzZXJTdHlsZVNoZWV0cyhBUEk6OkNvbnRlbnRXb3JsZCYKICAgICBmb3IgKGF1dG8mIHByb2Nl
c3MgOiBtX3Byb2Nlc3NlcykKICAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50
aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAotICAgIHVuc2lnbmVkIHVzZXJTdHlsZVNoZWV0
c1JlbW92ZWQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0Y2hpbmc8QVBJ
OjpVc2VyU3R5bGVTaGVldD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJTdHlsZVNoZWV0KSB7CisgICAg
bV91c2VyU3R5bGVTaGVldHMtPnJlbW92ZUFsbE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNlclN0eWxl
U2hlZXQ+KFsmXShjb25zdCBhdXRvJiB1c2VyU3R5bGVTaGVldCkgewogICAgICAgICByZXR1cm4g
JnVzZXJTdHlsZVNoZWV0LT5jb250ZW50V29ybGQoKSA9PSAmd29ybGQ7CiAgICAgfSk7Ci0KLSAg
ICByZW1vdmVDb250ZW50V29ybGRVc2VzKHdvcmxkLCB1c2VyU3R5bGVTaGVldHNSZW1vdmVkKTsK
IH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0
eWxlU2hlZXRzKCkKQEAgLTMwMyw4ICsyNzgsNiBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQogICAgICAgICBwcm9jZXNzLnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxl
U2hlZXRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU3R5
bGVTaGVldHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKLQotICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVz
ZXMod29ybGRzKTsKIH0KIAogYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRk
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyJiBoYW5kbGVy
KQpAQCAtMzE2LDcgKzI4OSw3IEBAIGJvb2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYWRkQ29udGVudFdvcmxkVXNlKHdvcmxkKTsK
KyAgICBhZGRDb250ZW50V29ybGQod29ybGQpOwogCiAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxl
cnMuYWRkKGhhbmRsZXIuaWRlbnRpZmllcigpLCAmaGFuZGxlcik7CiAKQEAgLTMzNSw3ICszMDgs
NiBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2Fn
ZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZwogCiAgICAgICAgICAgICBtX3NjcmlwdE1lc3Nh
Z2VIYW5kbGVycy5yZW1vdmUoaXQpOwogCi0gICAgICAgICAgICByZW1vdmVDb250ZW50V29ybGRV
c2VzKHdvcmxkLCAxKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAg
LTM1NCw4ICszMjYsNiBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6Q29udGVudFdvcgogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9KTsKLQotICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMo
d29ybGQsIG51bWJlclJlbW92ZWQpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9E
YXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGFSZWZlcmVuY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRl
eCA1MWI5ODFkNWM1ZC4uMmMwOTQyODUwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJB
UElPYmplY3QuaCIKKyNpbmNsdWRlICJDb250ZW50V29ybGRTaGFyZWQuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgpAQCAtOTMsOCArOTQs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoQVBJOjpDb250
ZW50V29ybGQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpOwogCi0gICAg
dm9pZCByZW1vdmVBbGxVc2VyQ29udGVudChBUEk6OkNvbnRlbnRXb3JsZCYpOwotCiAgICAgLy8g
UmV0dXJucyBmYWxzZSBpZiB0aGVyZSB3YXMgYSBuYW1lIGNvbmZsaWN0LgogICAgIGJvb2wgYWRk
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyJik7CiAgICAg
dm9pZCByZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZyYsIEFQSTo6
Q29udGVudFdvcmxkJik7CkBAIC0xMTMsMjMgKzExMiwyMiBAQCBwdWJsaWM6CiAKICAgICBVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KIAorICAgIHZvaWQgY29udGVudFdvcmxkRGVzdHJveWVkKEFQSTo6Q29u
dGVudFdvcmxkJik7CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBtZXNzYWdl
SGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIAotICAgIHZvaWQgYWRkQ29u
dGVudFdvcmxkVXNlKEFQSTo6Q29udGVudFdvcmxkJik7Ci0gICAgdm9pZCByZW1vdmVDb250ZW50
V29ybGRVc2VzKEFQSTo6Q29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1v
dmUpOwotICAgIHZvaWQgcmVtb3ZlQ29udGVudFdvcmxkVXNlcyhIYXNoQ291bnRlZFNldDxSZWZQ
dHI8QVBJOjpDb250ZW50V29ybGQ+PiYpOwotICAgIGJvb2wgc2hvdWxkU2VuZFJlbW92ZUNvbnRl
bnRXb3JsZHNNZXNzYWdlKEFQSTo6Q29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2Vz
VG9SZW1vdmUpOworICAgIHZvaWQgYWRkQ29udGVudFdvcmxkKEFQSTo6Q29udGVudFdvcmxkJik7
CiAKICAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAg
ICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2Vzc2VzOwogICAgIFJlZjxBUEk6
OkFycmF5PiBtX3VzZXJTY3JpcHRzOwogICAgIFJlZjxBUEk6OkFycmF5PiBtX3VzZXJTdHlsZVNo
ZWV0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXI+PiBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVyczsKLSAgICBIYXNoQ291bnRlZFNldDxSZWZQdHI8
QVBJOjpDb250ZW50V29ybGQ+PiBtX2NvbnRlbnRXb3JsZHM7CisgICAgSGFzaFNldDxDb250ZW50
V29ybGRJZGVudGlmaWVyPiBtX2Fzc29jaWF0ZWRDb250ZW50V29ybGRzOwogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKICAgICBXZWFrSGFzaFNldDxOZXR3b3JrUHJvY2Vzc1Byb3h5
PiBtX25ldHdvcmtQcm9jZXNzZXM7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNWI4YzQyNWRiZWMuLjE1YjY2ZGFhODljIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjAtMDQtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEZp
eCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSB2cyBDb250ZW50V29ybGQgbGlmZXRpbWUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDcwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5t
bToKKyAgICAgICAgKC1bRHVtbXlNZXNzYWdlSGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6
ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6CisgICAgICAgIChURVNUKTogTWFrZSBzdXJlIHJl
bW92aW5nIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciBmcm9tIGEgcGFydGljdWxhciB3b3JsZAor
ICAgICAgICAgIGRvZXNuJ3QgYWxzbyBkZXN0cm95IHRoZSBvdGhlciBKYXZhU2NyaXB0IGNvbnRl
bnRzIG9mIHRoYXQgd29ybGQuCisKIDIwMjAtMDQtMTcgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5l
X2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIHNlcnZpY2Ugd29ya2VycyBmb3Ig
YXBwLWJvdW5kIGRvbWFpbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0K
aW5kZXggNTgwOGY5MDM5NzQuLjJiYWQzNDg0ZGEzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1
YXRlSmF2YVNjcmlwdC5tbQpAQCAtMzQsMTEgKzM0LDEyIEBACiAjaW1wb3J0ICJUZXN0VVJMU2No
ZW1lSGFuZGxlci5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJW
aWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25Qcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tDb250ZW50V29ybGQuaD4KKyNp
bXBvcnQgPFdlYktpdC9XS0NvbnRlbnRXb3JsZFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S0Vycm9yUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZi5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
VXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
d0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0ZyYW1lVHJlZU5vZGUuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KQEAgLTEzMyw2ICsxMzQsMTUgQEAgVEVTVChXS1dlYlZpZXcsIFdLQ29udGVu
dFdvcmxkKQogICAgIEVYUEVDVF9FUShuYW1lZFdvcmxkLCBbV0tDb250ZW50V29ybGQgd29ybGRX
aXRoTmFtZTpAIk5hbWUiXSk7CiB9CiAKK0BpbnRlcmZhY2UgRHVtbXlNZXNzYWdlSGFuZGxlciA6
IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgorQGVuZAorCitAaW1wbGVtZW50YXRp
b24gRHVtbXlNZXNzYWdlSGFuZGxlcgorLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdL
VXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVT
Y3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlCit7Cit9CitAZW5kCisKIFRF
U1QoV0tXZWJWaWV3LCBFdmFsdWF0ZUphdmFTY3JpcHRJbldvcmxkcykKIHsKICAgICBSZXRhaW5Q
dHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CkBAIC0xODUsOCAr
MTk1LDEyIEBAIFRFU1QoV0tXZWJWaWV3LCBFdmFsdWF0ZUphdmFTY3JpcHRJbldvcmxkcykKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7
CiAKLSAgICAvLyBTZXQgYSB2YXJpYmFsZSB2YWx1ZSBpbiBhIG5hbWVkIHdvcmxkLgorICAgIC8v
IEFkZCBhIHNjcmlwdE1lc3NhZ2VIYW5kbGVyIGluIGEgbmFtZWQgd29ybGQuCiAgICAgUmV0YWlu
UHRyPFdLQ29udGVudFdvcmxkPiBuYW1lZFdvcmxkID0gW1dLQ29udGVudFdvcmxkIHdvcmxkV2l0
aE5hbWU6QCJOYW1lZFdvcmxkIl07CisgICAgaWQgaGFuZGxlciA9IFtbW0R1bW15TWVzc2FnZUhh
bmRsZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldy5nZXQoKS5jb25m
aWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6
aGFuZGxlciBuYW1lOkAidGVzdEhhbmRsZXJOYW1lIiB1c2VyQ29udGVudFdvcmxkOm5hbWVkV29y
bGQuZ2V0KCkuX3VzZXJDb250ZW50V29ybGRdOworCisgICAgLy8gU2V0IGEgdmFyaWFibGUgdmFs
dWUgaW4gdGhhdCBuYW1lZCB3b3JsZC4KICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6
QCJ2YXIgYmFyID0gJ2JheiciIGluQ29udGVudFdvcmxkOm5hbWVkV29ybGQuZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVD
VF9OVUxMKHJlc3VsdCk7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CkBAIC0xOTUsNyArMjA5LDcg
QEAgVEVTVChXS1dlYlZpZXcsIEV2YWx1YXRlSmF2YVNjcmlwdEluV29ybGRzKQogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAg
IC8vIFNldCBhIGdsb2JhbCB2YXJpYWJsZSB2YWx1ZSBpbiBhIG5hbWVkIHdvcmxkIHZpYSBhIGZ1
bmN0aW9uIGNhbGwuCisgICAgLy8gU2V0IGEgZ2xvYmFsIHZhcmlhYmxlIHZhbHVlIGluIHRoYXQg
bmFtZWQgd29ybGQgdmlhIGEgZnVuY3Rpb24gY2FsbC4KICAgICBbd2ViVmlldyBjYWxsQXN5bmNK
YXZhU2NyaXB0OkAid2luZG93LmJheiA9ICdiYXQnIiBhcmd1bWVudHM6bmlsIGluQ29udGVudFdv
cmxkOm5hbWVkV29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJy
b3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CiAgICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKQEAgLTIwNSw3ICsyMTksMTAgQEAgVEVTVChXS1dlYlZpZXcsIEV2YWx1
YXRlSmF2YVNjcmlwdEluV29ybGRzKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIC8vIFZlcmlmeSB0aGV5IGFyZSB0aGVy
ZSBpbiB0aGF0IG5hbWVkIHdvcmxkLgorICAgIC8vIFJlbW92ZSB0aGUgZHVtbXkgbWVzc2FnZSBo
YW5kbGVyCisgICAgW3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRy
b2xsZXIgX3JlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpAInRlc3RIYW5kbGVyTmFt
ZSIgdXNlckNvbnRlbnRXb3JsZDpuYW1lZFdvcmxkLmdldCgpLl91c2VyQ29udGVudFdvcmxkXTsK
KworICAgIC8vIFZlcmlmeSB0aGUgdmFyaWFibGVzIHdlIHNldCBhcmUgdGhlcmUgaW4gdGhhdCBu
YW1lZCB3b3JsZC4KICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJiYXIiIGluQ29u
dGVudFdvcmxkOm5hbWVkV29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQs
IE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZD
bGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNF
cXVhbFRvU3RyaW5nOkAiYmF6Il0pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>