<?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>189652</bug_id>
          
          <creation_ts>2018-09-16 09:04:20 -0700</creation_ts>
          <short_desc>Use OpaqueJSString rather than JSRetainPtr inside WebKit</short_desc>
          <delta_ts>2018-09-23 15:15:09 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1460081</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-09-16 09:04:20 -0700</bug_when>
    <thetext>Use OpaqueJSString rather than JSRetainPtr inside WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460085</commentid>
    <comment_count>1</comment_count>
      <attachid>349873</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-09-16 12:32:11 -0700</bug_when>
    <thetext>Created attachment 349873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460086</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-09-16 12:32:59 -0700</bug_when>
    <thetext>Keith, this patch is a response to a comment you made in my last one about using smart pointers more consistently. I realized that inside WebKit we should use RefPtr and Ref, not JSRetainPtr, for JSStringRef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460174</commentid>
    <comment_count>3</comment_count>
      <attachid>349873</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-09-17 09:29:13 -0700</bug_when>
    <thetext>Comment on attachment 349873
Patch

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

r=me

&gt; Source/JavaScriptCore/API/JSContext.mm:104
&gt; +    auto sourceURLJS = OpaqueJSString::create([sourceURL absoluteString]);

This removes a null check on sourceURL. Is that intended?

&gt; Source/JavaScriptCore/API/JSContext.mm:105
&gt; +    JSValueRef result = JSEvaluateScript(m_context, scriptJS.get(), nullptr, sourceURLJS.get(), 0, &amp;exceptionValue);

Ignore the above comment (I’m on my phone and can’t edit it). I knew that ObjC message send is safe on null, but I didn’t know it’s guaranteed to also return null</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460189</commentid>
    <comment_count>4</comment_count>
      <attachid>349873</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-17 09:55:06 -0700</bug_when>
    <thetext>Comment on attachment 349873
Patch

Clearing flags on attachment: 349873

Committed r236066: &lt;https://trac.webkit.org/changeset/236066&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460190</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-17 09:55:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460192</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-17 09:56:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/44523492&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462574</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-09-23 15:15:09 -0700</bug_when>
    <thetext>Looks like I missed the JavaScriptCore/API/glib directory when making this change. The code in there still uses JSRetainPtr, not OpaqueJSString.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349873</attachid>
            <date>2018-09-16 12:32:11 -0700</date>
            <delta_ts>2018-09-17 09:55:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189652-20180916123210.patch</filename>
            <type>text/plain</type>
            <size>33929</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YWZlYjZlOTk3NjcwZTg4MTdhNjgwZDZjYTk4ZTk2ZjcxMzM4NjllLi4wYWY3NjIyYjIyY2EyZDIy
N2RmYWE0OWNhZWY1NzAwNzVkNTRjZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxOC0wOS0xNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIE9wYXF1ZUpTU3RyaW5nIHJhdGhlciB0aGFuIEpTUmV0YWluUHRyIGluc2lk
ZSBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4OTY1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDogUmVtb3ZlZCBhbiB1bmVlZGVkIGlu
Y2x1ZGUgb2YKKyAgICAgICAgSlNTdHJpbmdSZWYuaC4KKworICAgICAgICAqIEFQSS9KU0NvbnRl
eHQubW06CisgICAgICAgICgtW0pTQ29udGV4dCBldmFsdWF0ZVNjcmlwdDp3aXRoU291cmNlVVJM
Ol0pOiBVc2UgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZSByYXRoZXIKKyAgICAgICAgdGhhbiBKU1N0
cmluZ0NyZWF0ZVdpdGhDRlN0cmluZywgc2ltcGxpZnlpbmcgdGhlIGNvZGUgYW5kIGFsc28gb2J2
aWF0aW5nIHRoZQorICAgICAgICBuZWVkIGZvciBleHBsaWNpdCBKU1N0cmluZ1JlbGVhc2UuCisg
ICAgICAgICgtW0pTQ29udGV4dCBzZXROYW1lOl0pOiBEaXR0by4KKworICAgICAgICAqIEFQSS9K
U1N0cmluZ1JlZi5jcHA6CisgICAgICAgIChKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKTog
VXNlIGFkb3B0UmVmIHJhdGhlciB0aGFuIGV4cGxpY2l0IEpTU3RyaW5nUmVsZWFzZS4KKyAgICAg
ICAgSXQgc2VlbXMgdGhhdCBhZGRpdGlvbmFsIG9wdGltaXphdGlvbiBpcyBwb3NzaWJsZSwgb2J2
aWF0aW5nIHRoZSBuZWVkIHRvIGFsbG9jYXRlCisgICAgICAgIGFuIE9wYXF1ZUpTU3RyaW5nLCBi
dXQgdGhhdCdzIHRydWUgYWxtb3N0IGV2ZXJ5d2hlcmUgZWxzZSBpbiB0aGlzIHBhdGNoLCB0b28u
CisKKyAgICAgICAgKiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdp
dGhOZXdSZWd1bGFyRXhwcmVzc2lvbkZyb21QYXR0ZXJuOmZsYWdzOmluQ29udGV4dDpdKTogVXNl
CisgICAgICAgIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUgYW5kIGFkb3B0UmVmIGFzIGFwcHJvcHJp
YXRlLgorICAgICAgICAoK1tKU1ZhbHVlIHZhbHVlV2l0aE5ld0Vycm9yRnJvbU1lc3NhZ2U6aW5D
b250ZXh0Ol0pOiBEaXR0by4KKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xG
cm9tRGVzY3JpcHRpb246aW5Db250ZXh0Ol0pOiBEaXR0by4KKyAgICAgICAgKHBlcmZvcm1Qcm9w
ZXJ0eU9wZXJhdGlvbik6IERpdHRvLgorICAgICAgICAoLVtKU1ZhbHVlIGludm9rZU1ldGhvZDp3
aXRoQXJndW1lbnRzOl0pOiBEaXR0by4KKyAgICAgICAgKHZhbHVlVG9PYmplY3RXaXRob3V0Q29w
eSk6IERpdHRvLgorICAgICAgICAoY29udGFpbmVyVmFsdWVUb09iamVjdCk6IERpdHRvLgorICAg
ICAgICAodmFsdWVUb1N0cmluZyk6IERpdHRvLgorICAgICAgICAob2JqZWN0VG9WYWx1ZVdpdGhv
dXRDb3B5KTogRGl0dG8uCisgICAgICAgIChvYmplY3RUb1ZhbHVlKTogRGl0dG8uCisKIDIwMTgt
MDktMDggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN0cmVhbWxp
bmUgSlNSZXRhaW5QdHIsIGZpeCBsZWFrcyBvZiBKU1N0cmluZyBhbmQgSlNHbG9iYWxDb250ZXh0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggODJhZGE5ZDM5MDAxMTExODM2ODg5YzVjMjU4ZTQ3ZDgyYTIwYTg3Yi4u
ZWRhMWMwZmQ4M2NmYjA1NjU1YjY4YWI5YWMxNmZiNDQyZGZmYWM3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDE4LTA5LTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBVc2UgT3BhcXVlSlNTdHJpbmcgcmF0aGVyIHRoYW4gSlNSZXRhaW5QdHIgaW5z
aWRlIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg5NjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAg
ICAgIChXZWJDb3JlOjpqc1ZhbHVlV2l0aERpY3Rpb25hcnlJbkNvbnRleHQpOiBVc2UgT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OmpzVmFsdWVXaXRoQVZNZXRhZGF0
YUl0ZW1JbkNvbnRleHQpOiBVc2UgYWRvcHRDRi4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9T
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dCk6IFVzZSBPcGFxdWVKU1N0cmluZzo6Y3Jl
YXRlLgorCiAyMDE4LTA5LTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdHJlYW1saW5lIEpTUmV0YWluUHRyLCBmaXggbGVha3Mgb2YgSlNTdHJpbmcgYW5kIEpT
R2xvYmFsQ29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhZDZlZDUzOWY3ZmMxMTQ1NDMwYWViZTRkNzQyYmUz
MmFhZWZiYmZhLi45ZjdlMGRjYjk1OWY2MjBmNmRhNzU0MGJkN2JkYmEyZDMwZTcxNmUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE4LTA5LTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBVc2UgT3BhcXVlSlNTdHJpbmcgcmF0aGVyIHRoYW4gSlNSZXRh
aW5QdHIgaW5zaWRlIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg5NjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwOiBSZW1vdmVkIHVubmVlZGVk
IGluY2x1ZGUgb2YgSlNTdHJpbmdSZWYuaC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDogUmVtb3ZlZCB1bm5lZWRlZAorICAg
ICAgICBpbmNsdWRlIG9mIEpTUmV0YWluUHRyLgorICAgICAgICAoV2ViS2l0Ojp0b0pTU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6dG9KU1ZhbHVlKTogVXNlIE9wYXF1ZUpTU3Ry
aW5nOjpjcmVhdGUuCisgICAgICAgIChXZWJLaXQ6OmNhbGxQcm9wZXJ0eUZ1bmN0aW9uKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OmV2YWx1YXRlKTogVXNlIGFkb3B0UmVmLgorICAgICAgICAo
V2ViS2l0OjpldmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFjayk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzY3JpcHRPYmplY3RGb3JGcmFtZSk6Cisg
ICAgICAgIFVzZSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlLgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbik6IFVzZQor
ICAgICAgICBTdHJpbmcgcmF0aGVyIHRoYW4gSlNTdHJpbmdSZWYuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbTogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRl
cy4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpydW5TY3JpcHRzSW5QREZEb2N1bWVudCk6
IFVzZSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlLgorCiAyMDE4LTA5LTA4ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJlYW1saW5lIEpTUmV0YWluUHRyLCBmaXgg
bGVha3Mgb2YgSlNTdHJpbmcgYW5kIEpTR2xvYmFsQ29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hh
bmdlTG9nCmluZGV4IGNiY2U1NzBlYjM2OTM1MmZkYzQ3OGZlYjdmOWYyMDk5YjcyNTFiNjEuLjA1
MzI2NzBiNDk0MzgyNzI0NWM4YTIyYjhlMDFkZmQ4YWMwMWIyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wOS0xNiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE9wYXF1ZUpTU3RyaW5nIHJhdGhlciB0aGFu
IEpTUmV0YWluUHRyIGluc2lkZSBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4OTY1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tOgorICAgICAgICAo
LVtXZWJQREZWaWV3IGZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOl0pOiBVc2UgT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZS4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRl
ci5tbToKKyAgICAgICAgKC1bV2ViUERGVmlld1BsYWNlaG9sZGVyIF9ldmFsdWF0ZUpTRm9yRG9j
dW1lbnQ6XSk6IERpdHRvLgorCiAyMDE4LTA4LTI5ICBPbGl2aWEgQmFybmV0dCAgPG9iYXJuZXR0
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgdGhlIFdlYiBTaGFyZSBBUEkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA3Yzk2NDI0NjBjMDI4MzBkYTE1NDg4OWU1MmE4ZDdm
OGZkMmMwYzEzLi5jOTVlNGMzNjVmZTEyMDk3MzE2Nzk0ZWMzYTBlOTlhNzM3NWM0OTE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDktMTYgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBPcGFxdWVKU1N0cmlu
ZyByYXRoZXIgdGhhbiBKU1JldGFpblB0ciBpbnNpZGUgV2ViS2l0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk2NTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGUmVwcmVzZW50
YXRpb24ubW06CisgICAgICAgICgtW1dlYlBERlJlcHJlc2VudGF0aW9uIGZpbmlzaGVkTG9hZGlu
Z1dpdGhEYXRhU291cmNlOl0pOiBVc2UgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZS4KKwogMjAxOC0w
OS0xNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBUdXJuIFNv
dXJjZUJ1ZmZlckNoYW5nZVR5cGVFbmFibGVkIG9uIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXgg
MGIyZjA0ZWY2ZjgxMDM3NTE0MzI5ZWVmODBiMGM2YWM5ZTllNGY4Ni4uMTViODYwODY2ZGVhOTIy
ODRiNzhhMGQ3MDdkODAxNjY1OTg3NzFkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTM0LDcgKzM0LDYgQEAK
ICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU09iamVjdFJlZi5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiSlNTdHJpbmdSZWYuaCIKICNpbmNsdWRlICJPcGFxdWVK
U1N0cmluZy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRl
eHQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQppbmRleCBmNGU4
OGMxNDRlYWExNjkxOTBiNmNhMzM3ZDU0YmEwZGI1ZDYxYjM1Li5iODhjZWFhODUxMjQyYWRmYTA0
YWNlMmIyODBjOWJkYWI0ZWQ1YTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dC5tbQpAQCAtMTAwLDEyICsxMDAsOSBAQCAtIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5T
U3RyaW5nICopc2NyaXB0CiAtIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICop
c2NyaXB0IHdpdGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMCiB7CiAgICAgSlNWYWx1ZVJl
ZiBleGNlcHRpb25WYWx1ZSA9IG51bGxwdHI7Ci0gICAgSlNTdHJpbmdSZWYgc2NyaXB0SlMgPSBK
U1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc2NyaXB0KTsK
LSAgICBKU1N0cmluZ1JlZiBzb3VyY2VVUkxKUyA9IHNvdXJjZVVSTCA/IEpTU3RyaW5nQ3JlYXRl
V2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilbc291cmNlVVJMIGFic29sdXRlU3Ry
aW5nXSkgOiBudWxscHRyOwotICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNFdmFsdWF0ZVNjcmlw
dChtX2NvbnRleHQsIHNjcmlwdEpTLCBudWxscHRyLCBzb3VyY2VVUkxKUywgMCwgJmV4Y2VwdGlv
blZhbHVlKTsKLSAgICBpZiAoc291cmNlVVJMSlMpCi0gICAgICAgIEpTU3RyaW5nUmVsZWFzZShz
b3VyY2VVUkxKUyk7Ci0gICAgSlNTdHJpbmdSZWxlYXNlKHNjcmlwdEpTKTsKKyAgICBhdXRvIHNj
cmlwdEpTID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShzY3JpcHQpOworICAgIGF1dG8gc291cmNl
VVJMSlMgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKFtzb3VyY2VVUkwgYWJzb2x1dGVTdHJpbmdd
KTsKKyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTRXZhbHVhdGVTY3JpcHQobV9jb250ZXh0LCBz
Y3JpcHRKUy5nZXQoKSwgbnVsbHB0ciwgc291cmNlVVJMSlMuZ2V0KCksIDAsICZleGNlcHRpb25W
YWx1ZSk7CiAKICAgICBpZiAoZXhjZXB0aW9uVmFsdWUpCiAgICAgICAgIHJldHVybiBbc2VsZiB2
YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uVmFsdWVdOwpAQCAtMjAyLDEwICsxOTks
NyBAQCAtIChOU1N0cmluZyAqKW5hbWUKIAogLSAodm9pZClzZXROYW1lOihOU1N0cmluZyAqKW5h
bWUKIHsKLSAgICBKU1N0cmluZ1JlZiBuYW1lSlMgPSBuYW1lID8gSlNTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKW5hbWUpIDogbnVsbHB0cjsKLSAgICBKU0ds
b2JhbENvbnRleHRTZXROYW1lKG1fY29udGV4dCwgbmFtZUpTKTsKLSAgICBpZiAobmFtZUpTKQot
ICAgICAgICBKU1N0cmluZ1JlbGVhc2UobmFtZUpTKTsKKyAgICBKU0dsb2JhbENvbnRleHRTZXRO
YW1lKG1fY29udGV4dCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKS5nZXQoKSk7CiB9CiAK
IC0gKEJPT0wpX3JlbW90ZUluc3BlY3Rpb25FbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNTdHJpbmdSZWYuY3BwCmluZGV4IDkwOTU0MDQ4MWRhOTE0ZDhlYTE5YzY0OWJjYmUxNzhh
MjY5YWYwYjAuLjE2ODNhYWU1OTUyOTM5MDI0NWFhZmFjMGJhMzFiYjg3MjAwYjlmMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCkBAIC0xMjUsOSArMTI1LDUg
QEAgYm9vbCBKU1N0cmluZ0lzRXF1YWwoSlNTdHJpbmdSZWYgYSwgSlNTdHJpbmdSZWYgYikKIAog
Ym9vbCBKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKEpTU3RyaW5nUmVmIGEsIGNvbnN0IGNo
YXIqIGIpCiB7Ci0gICAgSlNTdHJpbmdSZWYgYkJ1ZiA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKGIpOwotICAgIGJvb2wgcmVzdWx0ID0gSlNTdHJpbmdJc0VxdWFsKGEsIGJCdWYpOwot
ICAgIEpTU3RyaW5nUmVsZWFzZShiQnVmKTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IHJldHVybiBKU1N0cmluZ0lzRXF1YWwoYSwgYWRvcHRSZWYoSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoYikpLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpp
bmRleCA5ZTQ5YWUyNDcyMzY4ZGU5OWNiNDRhZjc4OTZkYTc5OTAyZGIyOWRlLi5kYzExMjM5NmQz
ODkxY2I5NmZhNzJkZmI0NjA1YzVjMDI4NzliMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZhbHVlLm1tCkBAIC0xMjQsMjEgKzEyNCwxNiBAQCArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3
QXJyYXlJbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKIAogKyAoSlNWYWx1ZSAqKXZhbHVl
V2l0aE5ld1JlZ3VsYXJFeHByZXNzaW9uRnJvbVBhdHRlcm46KE5TU3RyaW5nICopcGF0dGVybiBm
bGFnczooTlNTdHJpbmcgKilmbGFncyBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKIHsK
LSAgICBKU1N0cmluZ1JlZiBwYXR0ZXJuU3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJp
bmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBhdHRlcm4pOwotICAgIEpTU3RyaW5nUmVmIGZsYWdz
U3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVm
KWZsYWdzKTsKLSAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1syXSA9IHsgSlNWYWx1ZU1ha2VTdHJp
bmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgcGF0dGVyblN0cmluZyksIEpTVmFsdWVN
YWtlU3RyaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIGZsYWdzU3RyaW5nKSB9Owot
ICAgIEpTU3RyaW5nUmVsZWFzZShwYXR0ZXJuU3RyaW5nKTsKLSAgICBKU1N0cmluZ1JlbGVhc2Uo
ZmxhZ3NTdHJpbmcpOwotCisgICAgYXV0byBwYXR0ZXJuU3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZShwYXR0ZXJuKTsKKyAgICBhdXRvIGZsYWdzU3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZShmbGFncyk7CisgICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbMl0gPSB7IEpTVmFsdWVN
YWtlU3RyaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHBhdHRlcm5TdHJpbmcuZ2V0
KCkpLCBKU1ZhbHVlTWFrZVN0cmluZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBmbGFn
c1N0cmluZy5nZXQoKSkgfTsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJl
ZjpKU09iamVjdE1ha2VSZWdFeHAoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgMiwgYXJn
dW1lbnRzLCAwKSBpbkNvbnRleHQ6Y29udGV4dF07CiB9CiAKICsgKEpTVmFsdWUgKil2YWx1ZVdp
dGhOZXdFcnJvckZyb21NZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5Db250ZXh0OihKU0Nv
bnRleHQgKiljb250ZXh0CiB7Ci0gICAgSlNTdHJpbmdSZWYgc3RyaW5nID0gSlNTdHJpbmdDcmVh
dGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKW1lc3NhZ2UpOwotICAgIEpTVmFs
dWVSZWYgYXJndW1lbnQgPSBKU1ZhbHVlTWFrZVN0cmluZyhbY29udGV4dCBKU0dsb2JhbENvbnRl
eHRSZWZdLCBzdHJpbmcpOwotICAgIEpTU3RyaW5nUmVsZWFzZShzdHJpbmcpOwotCisgICAgYXV0
byBzdHJpbmcgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKG1lc3NhZ2UpOworICAgIEpTVmFsdWVS
ZWYgYXJndW1lbnQgPSBKU1ZhbHVlTWFrZVN0cmluZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRS
ZWZdLCBzdHJpbmcuZ2V0KCkpOwogICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVl
UmVmOkpTT2JqZWN0TWFrZUVycm9yKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIDEsICZh
cmd1bWVudCwgMCkgaW5Db250ZXh0OmNvbnRleHRdOwogfQogCkBAIC0xNTQsMTMgKzE0OSwxMCBA
QCArIChKU1ZhbHVlICopdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OihKU0NvbnRleHQgKilj
b250ZXh0CiAKICsgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246
KE5TU3RyaW5nICopZGVzY3JpcHRpb24gaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CiB7
Ci0gICAgSlNTdHJpbmdSZWYgc3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9f
YnJpZGdlIENGU3RyaW5nUmVmKWRlc2NyaXB0aW9uKTsKLSAgICBhdXRvIHZhbHVlID0gW0pTVmFs
dWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpKU1ZhbHVlTWFrZVN5bWJvbChbY29udGV4dCBKU0dsb2Jh
bENvbnRleHRSZWZdLCBzdHJpbmcpIGluQ29udGV4dDpjb250ZXh0XTsKLSAgICBKU1N0cmluZ1Jl
bGVhc2Uoc3RyaW5nKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgYXV0byBzdHJpbmcgPSBPcGFx
dWVKU1N0cmluZzo6Y3JlYXRlKGRlc2NyaXB0aW9uKTsKKyAgICByZXR1cm4gW0pTVmFsdWUgdmFs
dWVXaXRoSlNWYWx1ZVJlZjpKU1ZhbHVlTWFrZVN5bWJvbChbY29udGV4dCBKU0dsb2JhbENvbnRl
eHRSZWZdLCBzdHJpbmcuZ2V0KCkpIGluQ29udGV4dDpjb250ZXh0XTsKIH0KIAotCiAtIChpZCl0
b09iamVjdAogewogICAgIHJldHVybiB2YWx1ZVRvT2JqZWN0KF9jb250ZXh0LCBtX3ZhbHVlKTsK
QEAgLTI1Niw5ICsyNDgsOCBAQCBpbmxpbmUgRXhwZWN0ZWQ8UmVzdWx0LCBKU1ZhbHVlUmVmPiBw
ZXJmb3JtUHJvcGVydHlPcGVyYXRpb24oTlNTdHJpbmdGdW5jdGlvbiBzdAogICAgIFJlc3VsdCBy
ZXN1bHQ7CiAgICAgLy8gSWYgaXQncyBhIE5TU3RyaW5nIGFscmVhZHksIHJlZHVjZSBpbmRpcmVj
dGlvbiBhbmQganVzdCBwYXNzIHRoZSBOU1N0cmluZy4KICAgICBpZiAoW3Byb3BlcnR5S2V5IGlz
S2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAgSlNTdHJpbmdSZWYgbmFt
ZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwcm9w
ZXJ0eUtleSk7Ci0gICAgICAgIHJlc3VsdCA9IHN0cmluZ0Z1bmN0aW9uKFtjb250ZXh0IEpTR2xv
YmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSwgYXJndW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsK
LSAgICAgICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOworICAgICAgICBhdXRvIG5hbWUgPSBPcGFx
dWVKU1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAqKXByb3BlcnR5S2V5KTsKKyAgICAgICAgcmVz
dWx0ID0gc3RyaW5nRnVuY3Rpb24oW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0
LCBuYW1lLmdldCgpLCBhcmd1bWVudHMuLi4sICZleGNlcHRpb24pOwogICAgIH0gZWxzZQogICAg
ICAgICByZXN1bHQgPSBqc0Z1bmN0aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9i
amVjdCwgW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpwcm9wZXJ0eUtleSBpbkNvbnRleHQ6Y29u
dGV4dF0gSlNWYWx1ZVJlZl0sIGFyZ3VtZW50cy4uLiwgJmV4Y2VwdGlvbik7CiAgICAgcmV0dXJu
IEV4cGVjdGVkPFJlc3VsdCwgSlNWYWx1ZVJlZj4ocmVzdWx0KTsKQEAgLTQ4NSw5ICs0NzYsOCBA
QCAtIChKU1ZhbHVlICopaW52b2tlTWV0aG9kOihOU1N0cmluZyAqKW1ldGhvZCB3aXRoQXJndW1l
bnRzOihOU0FycmF5ICopYXJndW1lbnRzCiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmV0
dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIAotICAg
IEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2Ug
Q0ZTdHJpbmdSZWYpbWV0aG9kKTsKLSAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9uID0gSlNPYmplY3RH
ZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgdGhpc09iamVjdCwgbmFt
ZSwgJmV4Y2VwdGlvbik7Ci0gICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOworICAgIGF1dG8gbmFt
ZSA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobWV0aG9kKTsKKyAgICBKU1ZhbHVlUmVmIGZ1bmN0
aW9uID0gSlNPYmplY3RHZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwg
dGhpc09iamVjdCwgbmFtZS5nZXQoKSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikK
ICAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0
aW9uXTsKIApAQCAtNjk4LDkgKzY4OCw4IEBAIHN0YXRpYyBKU0NvbnRhaW5lckNvbnZlcnRvcjo6
VGFzayB2YWx1ZVRvT2JqZWN0V2l0aG91dENvcHkoSlNHbG9iYWxDb250ZXh0UmVmIGNvCiAgICAg
ICAgICAgICBwcmltaXRpdmUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpKU1ZhbHVlVG9O
dW1iZXIoY29udGV4dCwgdmFsdWUsIDApXTsKICAgICAgICAgfSBlbHNlIGlmIChKU1ZhbHVlSXNT
dHJpbmcoY29udGV4dCwgdmFsdWUpKSB7CiAgICAgICAgICAgICAvLyBXb3VsZCBiZSBuaWNlIHRv
IHVuaXF1ZSBzdHJpbmdzLCB0b28uCi0gICAgICAgICAgICBKU1N0cmluZ1JlZiBqc3N0cmluZyA9
IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUsIDApOwotICAgICAgICAgICAgcHJp
bWl0aXZlID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwganNzdHJpbmcpKTsKLSAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShqc3N0
cmluZyk7CisgICAgICAgICAgICBhdXRvIGpzc3RyaW5nID0gYWRvcHRSZWYoSlNWYWx1ZVRvU3Ry
aW5nQ29weShjb250ZXh0LCB2YWx1ZSwgMCkpOworICAgICAgICAgICAgcHJpbWl0aXZlID0gQ0ZC
cmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
anNzdHJpbmcuZ2V0KCkpKTsKICAgICAgICAgfSBlbHNlIGlmIChKU1ZhbHVlSXNOdWxsKGNvbnRl
eHQsIHZhbHVlKSkKICAgICAgICAgICAgIHByaW1pdGl2ZSA9IFtOU051bGwgbnVsbF07CiAgICAg
ICAgIGVsc2UgewpAQCAtNzQxLDkgKzczMCw4IEBAIHN0YXRpYyBpZCBjb250YWluZXJWYWx1ZVRv
T2JqZWN0KEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU0NvbnRhaW5lckNvbnZlcnRvCiAg
ICAgICAgICAgICBBU1NFUlQoW2N1cnJlbnQub2JqYyBpc0tpbmRPZkNsYXNzOltOU011dGFibGVB
cnJheSBjbGFzc11dKTsKICAgICAgICAgICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IChOU011
dGFibGVBcnJheSAqKWN1cnJlbnQub2JqYzsKICAgICAgICAgCi0gICAgICAgICAgICBKU1N0cmlu
Z1JlZiBsZW5ndGhTdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3Ro
Iik7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBKU0M6OnRvVUludDMyKEpTVmFsdWVU
b051bWJlcihjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGpzLCBsZW5ndGhT
dHJpbmcsIDApLCAwKSk7Ci0gICAgICAgICAgICBKU1N0cmluZ1JlbGVhc2UobGVuZ3RoU3RyaW5n
KTsKKyAgICAgICAgICAgIGF1dG8gbGVuZ3RoU3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0
ZSgibGVuZ3RoIl9zKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTQzo6dG9VSW50
MzIoSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwg
anMsIGxlbmd0aFN0cmluZy5nZXQoKSwgMCksIDApKTsKIAogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgaWQgb2JqYyA9
IGNvbnZlcnRvci5jb252ZXJ0KEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGpz
LCBpLCAwKSk7CkBAIC04MDMsMTUgKzc5MSwxMyBAQCBpZCB2YWx1ZVRvU3RyaW5nKEpTR2xvYmFs
Q29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcAog
ICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQ7CiAgICAgfQogCi0gICAgSlNTdHJpbmdSZWYganNz
dHJpbmcgPSBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHZhbHVlLCBleGNlcHRpb24pOwor
ICAgIGF1dG8ganNzdHJpbmcgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQs
IHZhbHVlLCBleGNlcHRpb24pKTsKICAgICBpZiAoKmV4Y2VwdGlvbikgewogICAgICAgICBBU1NF
UlQoIWpzc3RyaW5nKTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICBOU1N0cmlu
ZyAqc3RyaW5nID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwganNzdHJpbmcpKTsKLSAgICBKU1N0cmluZ1JlbGVhc2UoanNzdHJpbmcp
OwotICAgIHJldHVybiBzdHJpbmc7CisgICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKEpTU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzc3RyaW5nLmdldCgpKSk7CiB9
CiAKIGlkIHZhbHVlVG9EYXRlKEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVm
IHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC05NTQsMTAgKzk0MCw4IEBAIHN0YXRp
YyBPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrIG9iamVjdFRvVmFsdWVXaXRob3V0Q29weShK
U0NvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICByZXR1cm4geyBvYmplY3QsICgoSlNWYWx1
ZSAqKW9iamVjdCktPm1fdmFsdWUsIENvbnRhaW5lck5vbmUgfTsKIAogICAgICAgICBpZiAoW29i
amVjdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7Ci0gICAgICAgICAgICBKU1N0
cmluZ1JlZiBzdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpb2JqZWN0KTsKLSAgICAgICAgICAgIEpTVmFsdWVSZWYganMgPSBKU1ZhbHVlTWFr
ZVN0cmluZyhjb250ZXh0UmVmLCBzdHJpbmcpOwotICAgICAgICAgICAgSlNTdHJpbmdSZWxlYXNl
KHN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm4geyBvYmplY3QsIGpzLCBDb250YWluZXJOb25l
IH07CisgICAgICAgICAgICBhdXRvIHN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoKE5T
U3RyaW5nICopb2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVybiB7IG9iamVjdCwgSlNWYWx1ZU1h
a2VTdHJpbmcoY29udGV4dFJlZiwgc3RyaW5nLmdldCgpKSwgQ29udGFpbmVyTm9uZSB9OwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xh
c3NdXSkgewpAQCAtMTAxMywxMyArOTk3LDExIEBAIEpTVmFsdWVSZWYgb2JqZWN0VG9WYWx1ZShK
U0NvbnRleHQgKmNvbnRleHQsIGlkIG9iamVjdCkKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAq
ZGljdGlvbmFyeSA9IChOU0RpY3Rpb25hcnkgKiljdXJyZW50Lm9iamM7CiAgICAgICAgICAgICBm
b3IgKGlkIGtleSBpbiBbZGljdGlvbmFyeSBrZXlFbnVtZXJhdG9yXSkgewogICAgICAgICAgICAg
ICAgIGlmIChba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAg
ICAgICAgICAgICAgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleSk7Ci0gICAgICAgICAgICAgICAgICAg
IEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dFJlZiwganMsIHByb3BlcnR5TmFtZSwgY29udmVy
dG9yLmNvbnZlcnQoW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmtleV0pLCAwLCAwKTsKLSAgICAg
ICAgICAgICAgICAgICAgSlNTdHJpbmdSZWxlYXNlKHByb3BlcnR5TmFtZSk7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZSgoTlNT
dHJpbmcgKilrZXkpOworICAgICAgICAgICAgICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KGNv
bnRleHRSZWYsIGpzLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIGNvbnZlcnRvci5jb252ZXJ0KFtkaWN0
aW9uYXJ5IG9iamVjdEZvcktleTprZXldKSwgMCwgMCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAogICAgIH0gd2hpbGUgKCFjb252ZXJ0b3Iu
aXNXb3JrTGlzdEVtcHR5KCkpOwogCiAgICAgcmV0dXJuIHRhc2suanM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQubW0KaW5kZXggY2EzNGQ4MTcyZTI1MzE0YWI4YTM3YmY0OWU4NTA4NWM2ZjhmYjlmNS4u
NzllYzg5MWQ4MTNjZDkxYjcwODcxOWY3NDJkOTY5YTdmZjIxZjcwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5tbQpAQCAtMjU1LDYgKzI1NSw3IEBAIHZvaWQgUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQ6OnBvc3RFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKIH0KIAogI2lmIFBMQVRG
T1JNKElPUykKKwogc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGF0YUluQ29udGV4dChOU0Rh
dGEgKmRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEpTQ29udGV4dCAqY29udGV4dCkKIHsK
ICAgICBWZWN0b3I8Y2hhcj4gYmFzZTY0RGF0YTsKQEAgLTI5MSw3ICsyOTIsNiBAQCBzdGF0aWMg
SlNWYWx1ZSAqanNWYWx1ZVdpdGhBcnJheUluQ29udGV4dChOU0FycmF5ICphcnJheSwgSlNDb250
ZXh0ICpjb250ZXh0KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLQogc3RhdGljIEpTVmFsdWUg
KmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnks
IEpTQ29udGV4dCAqY29udGV4dCkKIHsKICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CkBA
IC0zMDgsOSArMzA4LDggQEAgc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGljdGlvbmFyeUlu
Q29udGV4dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIEpTQ29udGUKICAgICAgICAgaWYgKCF2
YWx1ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEpTU3RyaW5nUmVmIG5hbWUg
PSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5KTsK
LSAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
LCByZXN1bHRPYmplY3QsIG5hbWUsIFt2YWx1ZSBKU1ZhbHVlUmVmXSwgMCwgJmV4Y2VwdGlvbik7
Ci0gICAgICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKKyAgICAgICAgYXV0byBuYW1lID0gT3Bh
cXVlSlNTdHJpbmc6OmNyZWF0ZShrZXkpOworICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KFtj
b250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHJlc3VsdE9iamVjdCwgbmFtZS5nZXQoKSwgW3Zh
bHVlIEpTVmFsdWVSZWZdLCAwLCAmZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgIH0KQEAgLTM1MCwxMiArMzQ5LDggQEAgc3RhdGlj
IEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQoQVZNZXRhZGF0YUl0
ZW1UeXBlICppdGVtLCBKU0MKICAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0Oml0ZW0ubG9j
YWxlIGZvcktleTpAImxvY2FsZSJdOwogCiAgICAgaWYgKENNVElNRV9JU19WQUxJRChpdGVtLnRp
bWUpKSB7Ci0gICAgICAgIENGRGljdGlvbmFyeVJlZiB0aW1lRGljdCA9IFBBTDo6Q01UaW1lQ29w
eUFzRGljdGlvbmFyeShpdGVtLnRpbWUsIGtDRkFsbG9jYXRvckRlZmF1bHQpOwotCi0gICAgICAg
IGlmICh0aW1lRGljdCkgewotICAgICAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OihpZCl0
aW1lRGljdCBmb3JLZXk6QCJ0aW1lc3RhbXAiXTsKLSAgICAgICAgICAgIENGUmVsZWFzZSh0aW1l
RGljdCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGF1dG8gdGltZURpY3Rpb25hcnkgPSBhZG9w
dENGKFBBTDo6Q01UaW1lQ29weUFzRGljdGlvbmFyeShpdGVtLnRpbWUsIGtDRkFsbG9jYXRvckRl
ZmF1bHQpKSkKKyAgICAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDooX19icmlkZ2UgTlNE
aWN0aW9uYXJ5ICopdGltZURpY3Rpb25hcnkuZ2V0KCkgZm9yS2V5OkAidGltZXN0YW1wIl07CiAg
ICAgfQogICAgIAogICAgIGlmIChpdGVtLnZhbHVlKSB7CkBAIC0zNjUsMTMgKzM2MCwxNCBAQCBz
dGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhBVk1ldGFkYXRhSXRlbUluQ29udGV4dChBVk1ldGFk
YXRhSXRlbVR5cGUgKml0ZW0sIEpTQwogICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGJhc2U2NERh
dGE7CiAgICAgICAgICAgICBiYXNlNjRFbmNvZGUoW3ZhbHVlIGJ5dGVzXSwgW3ZhbHVlIGxlbmd0
aF0sIGJhc2U2NERhdGEpOwogICAgICAgICAgICAgU3RyaW5nIGRhdGE2NCA9ICJkYXRhOiIgKyBT
dHJpbmcobWltZVR5cGUpICsgIjtiYXNlNjQsIiArIGJhc2U2NERhdGE7Ci0gICAgICAgICAgICBb
ZGljdGlvbmFyeSBzZXRPYmplY3Q6KGlkKWRhdGE2NC5jcmVhdGVDRlN0cmluZygpLmdldCgpIGZv
cktleTpAInZhbHVlIl07CisgICAgICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6KF9fYnJp
ZGdlIE5TU3RyaW5nICopZGF0YTY0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkgZm9yS2V5OkAidmFs
dWUiXTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6
dmFsdWUgZm9yS2V5OkAidmFsdWUiXTsKICAgICB9CiAKICAgICByZXR1cm4ganNWYWx1ZVdpdGhE
aWN0aW9uYXJ5SW5Db250ZXh0KGRpY3Rpb25hcnksIGNvbnRleHQpOwogfQorCiAjZW5kaWYKIAog
SlNDOjpKU1ZhbHVlIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnRpbWVkTWV0YURhdGEo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlKSBjb25zdApAQCAtMzkxLDcgKzM4Nyw3IEBAIEpTQzo6SlNW
YWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojp0aW1lZE1ldGFEYXRhKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSkKIAogICAgIEpTQ29udGV4dCAqanNDb250ZXh0ID0gZnJhbWUtPnNjcmlw
dCgpLmphdmFTY3JpcHRDb250ZXh0KCk7CiAgICAgSlNWYWx1ZSAqbWV0YURhdGFWYWx1ZSA9IGpz
VmFsdWVXaXRoVmFsdWVJbkNvbnRleHQobWV0YURhdGEsIGpzQ29udGV4dCk7Ci0gICAgCisKICAg
ICByZXR1cm4gdG9KUygmc3RhdGUsIFttZXRhRGF0YVZhbHVlIEpTVmFsdWVSZWZdKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1h
Yy5tbQppbmRleCBkZWQ3ZWMwYzc5ODljMDI0YjUwZTdlZjk0MWE5NWNhYjM0YjRiNjFiLi5kYzBk
NDFjMDFmMGM4MTMzMGM4YjVjZTBiMWFkZGY4YTRkNWU1NzllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJl
cHJlc2VudGF0aW9uTWFjLm1tCkBAIC0xOTAsOSArMTkwLDggQEAgc3RhdGljIEpTVmFsdWUgKmpz
VmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIEpT
Q29udGUKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpa2V5KTsKLSAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShbY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdLCByZXN1bHRPYmplY3QsIG5hbWUsIFt2YWx1ZSBKU1ZhbHVl
UmVmXSwgMCwgJmV4Y2VwdGlvbik7Ci0gICAgICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKKyAg
ICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShrZXkpOworICAgICAgICBK
U09iamVjdFNldFByb3BlcnR5KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHJlc3VsdE9i
amVjdCwgbmFtZS5nZXQoKSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAwLCAmZXhjZXB0aW9uKTsKICAg
ICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcAppbmRleCA2NTAzNjcwNDVhZWU2ZGFkNjQ0
MDYwMzA1MGI3YjYyY2ZkNDIwNDlhLi43OGRlNjFlOThhNzc5Mjc4MmM1MDJhNDA0NzhjYjNhZGQy
MTViMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCkBAIC0yOSw3
ICsyOSw2IEBACiAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNT
dHJpbmdSZWYuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNw
cAppbmRleCBmYTZkZjJhYmU5ZmZjYTNmZTUwYTg5YjgxY2FjYjA5OTVkY2EzYWQ3Li4yOWZiMDFl
MjBjNDAwODRmMzlhOTM5NzYxOTdlZGE4NTU0M2M5ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNPYmplY3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmUHJpdmF0ZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
b29raWVKYXIuaD4KQEAgLTg3LDE0ICs4Niw5IEBAIHN0YXRpYyBKU09iamVjdFJlZiB0b0pTQXJy
YXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxUPiYgZGF0YSwgSlNWYWx1CiAg
ICAgcmV0dXJuIGFycmF5OwogfQogCi1zdGF0aWMgaW5saW5lIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiB0b0pTU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIHJldHVybiBhZG9w
dChPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHN0cmluZykubGVha1JlZigpKTsKLX0KLQogc3RhdGlj
IGlubGluZSBKU1ZhbHVlUmVmIHRvSlNWYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQs
IHRvSlNTdHJpbmcoc3RyaW5nKS5nZXQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5n
KGNvbnRleHQsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoc3RyaW5nKS5nZXQoKSk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZVJlZiBjYWxsUHJvcGVydHlGdW5jdGlvbihKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKQEAgLTEwMiw3ICs5Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZVJlZiBjYWxsUHJvcGVydHlGdW5jdGlvbihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYKICAgICBBU1NFUlRfQVJHKG9iamVjdCwgb2JqZWN0KTsKICAgICBBU1NFUlRfQVJHKG9iamVj
dCwgSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIG9iamVjdCkpOwogCi0gICAgSlNPYmplY3RSZWYg
ZnVuY3Rpb24gPSBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihKU09iamVjdEdldFByb3BlcnR5KGNv
bnRleHQsIG9iamVjdCwgdG9KU1N0cmluZyhwcm9wZXJ0eU5hbWUpLmdldCgpLCBleGNlcHRpb24p
KTsKKyAgICBKU09iamVjdFJlZiBmdW5jdGlvbiA9IGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KEpT
T2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgb2JqZWN0LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRl
KHByb3BlcnR5TmFtZSkuZ2V0KCksIGV4Y2VwdGlvbikpOwogICAgIEFTU0VSVChKU09iamVjdElz
RnVuY3Rpb24oY29udGV4dCwgZnVuY3Rpb24pKTsKIAogICAgIHJldHVybiBKU09iamVjdENhbGxB
c0Z1bmN0aW9uKGNvbnRleHQsIGZ1bmN0aW9uLCBvYmplY3QsIGFyZ3VtZW50Q291bnQsIGFyZ3Vt
ZW50cywgZXhjZXB0aW9uKTsKQEAgLTEyNyw3ICsxMjEsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBl
dmFsdWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UgogICAgIGlmIChhcmd1bWVudENvdW50ICE9IDEpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIGF1dG8gc2NyaXB0ID0gYWRvcHQoSlNWYWx1
ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIGF1
dG8gc2NyaXB0ID0gYWRvcHRSZWYoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVu
dHNbMF0sIGV4Y2VwdGlvbikpOwogICAgIHJldHVybiBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQs
IHNjcmlwdC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgZXhjZXB0aW9uKTsKIH0KIApAQCAt
MTUwLDcgKzE0NCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGV2YWx1YXRlSmF2YVNjcmlwdENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmCiAKICAgICB1aW50NjRfdCBm
cmFtZUlEID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9u
KTsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFy
Z3VtZW50c1sxXSwgZXhjZXB0aW9uKTsKLSAgICBhdXRvIHJlc3VsdCA9IGFkb3B0KEpTVmFsdWVU
b1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzJdLCBleGNlcHRpb24pKTsKKyAgICBhdXRv
IHJlc3VsdCA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRz
WzJdLCBleGNlcHRpb24pKTsKIAogICAgIGJvb2wgcmVzdWx0SXNFcnJvck5hbWUgPSBKU1ZhbHVl
VG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1szXSk7CiAKQEAgLTE4Myw3ICsxNzcsNyBAQCBK
U09iamVjdFJlZiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzY3JpcHRPYmplY3RGb3JGcmFt
ZShXZWJGcmFtZSYgZnJhbWUpCiAKICAgICBTdHJpbmcgc2NyaXB0ID0gU3RyaW5nSW1wbDo6Y3Jl
YXRlV2l0aG91dENvcHlpbmcoV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZSwg
c2l6ZW9mKFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2UpKTsKIAotICAgIEpT
T2JqZWN0UmVmIHNjcmlwdE9iamVjdEZ1bmN0aW9uID0gY29uc3RfY2FzdDxKU09iamVjdFJlZj4o
SlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCB0b0pTU3RyaW5nKHNjcmlwdCkuZ2V0KCksIG51bGxw
dHIsIG51bGxwdHIsIDAsICZleGNlcHRpb24pKTsKKyAgICBKU09iamVjdFJlZiBzY3JpcHRPYmpl
Y3RGdW5jdGlvbiA9IGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KEpTRXZhbHVhdGVTY3JpcHQoY29u
dGV4dCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShzY3JpcHQpLmdldCgpLCBudWxscHRyLCBudWxs
cHRyLCAwLCAmZXhjZXB0aW9uKSk7CiAgICAgQVNTRVJUKEpTVmFsdWVJc09iamVjdChjb250ZXh0
LCBzY3JpcHRPYmplY3RGdW5jdGlvbikpOwogCiAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSA9
IHsgc2Vzc2lvbklkZW50aWZpZXIsIGV2YWx1YXRlRnVuY3Rpb24sIGNyZWF0ZVVVSURGdW5jdGlv
biB9OwpAQCAtMjg0LDI1ICsyNzgsMjUgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQKIAogICAg
IFN0cmluZyBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVy
czo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
RXJyb3JNZXNzYWdlOjpKYXZhU2NyaXB0RXJyb3IpOwogCi0gICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IGV4Y2VwdGlvbk1lc3NhZ2U7CisgICAgU3RyaW5nIGV4Y2VwdGlvbk1lc3NhZ2U7CiAg
ICAgaWYgKEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBleGNlcHRpb24pKSB7Ci0gICAgICAgIEpT
VmFsdWVSZWYgbmFtZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25zdF9j
YXN0PEpTT2JqZWN0UmVmPihleGNlcHRpb24pLCB0b0pTU3RyaW5nKCJuYW1lIl9zKS5nZXQoKSwg
bnVsbHB0cik7Ci0gICAgICAgIGF1dG8gZXhjZXB0aW9uTmFtZSA9IGFkb3B0KEpTVmFsdWVUb1N0
cmluZ0NvcHkoY29udGV4dCwgbmFtZVZhbHVlLCBudWxscHRyKSk7Ci0gICAgICAgIGlmIChleGNl
cHRpb25OYW1lLT5zdHJpbmcoKSA9PSAiTm9kZU5vdEZvdW5kIikKKyAgICAgICAgSlNWYWx1ZVJl
ZiBuYW1lVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGNvbnN0X2Nhc3Q8SlNP
YmplY3RSZWY+KGV4Y2VwdGlvbiksIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoIm5hbWUiX3MpLmdl
dCgpLCBudWxscHRyKTsKKyAgICAgICAgYXV0byBleGNlcHRpb25OYW1lID0gYWRvcHRSZWYoSlNW
YWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBuYW1lVmFsdWUsIG51bGxwdHIpKS0+c3RyaW5nKCk7
CisgICAgICAgIGlmIChleGNlcHRpb25OYW1lID09ICJOb2RlTm90Rm91bmQiKQogICAgICAgICAg
ICAgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6Omdl
dEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9y
TWVzc2FnZTo6Tm9kZU5vdEZvdW5kKTsKLSAgICAgICAgZWxzZSBpZiAoZXhjZXB0aW9uTmFtZS0+
c3RyaW5nKCkgPT0gIkludmFsaWRFbGVtZW50U3RhdGUiKQorICAgICAgICBlbHNlIGlmIChleGNl
cHRpb25OYW1lID09ICJJbnZhbGlkRWxlbWVudFN0YXRlIikKICAgICAgICAgICAgIGVycm9yVHlw
ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3Rh
bnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6Oklu
dmFsaWRFbGVtZW50U3RhdGUpOwotICAgICAgICBlbHNlIGlmIChleGNlcHRpb25OYW1lLT5zdHJp
bmcoKSA9PSAiSW52YWxpZFBhcmFtZXRlciIpCisgICAgICAgIGVsc2UgaWYgKGV4Y2VwdGlvbk5h
bWUgPT0gIkludmFsaWRQYXJhbWV0ZXIiKQogICAgICAgICAgICAgZXJyb3JUeXBlID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW52YWxpZFBhcmFt
ZXRlcik7Ci0gICAgICAgIGVsc2UgaWYgKGV4Y2VwdGlvbk5hbWUtPnN0cmluZygpID09ICJJbnZh
bGlkU2VsZWN0b3IiKQorICAgICAgICBlbHNlIGlmIChleGNlcHRpb25OYW1lID09ICJJbnZhbGlk
U2VsZWN0b3IiKQogICAgICAgICAgICAgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW52YWxpZFNlbGVjdG9yKTsKIAotICAgICAg
ICBKU1ZhbHVlUmVmIG1lc3NhZ2VWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwg
Y29uc3RfY2FzdDxKU09iamVjdFJlZj4oZXhjZXB0aW9uKSwgdG9KU1N0cmluZygibWVzc2FnZSJf
cykuZ2V0KCksIG51bGxwdHIpOwotICAgICAgICBleGNlcHRpb25NZXNzYWdlID0gYWRvcHQoSlNW
YWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBtZXNzYWdlVmFsdWUsIG51bGxwdHIpKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZiBtZXNzYWdlVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQs
IGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGV4Y2VwdGlvbiksIE9wYXF1ZUpTU3RyaW5nOjpjcmVh
dGUoIm1lc3NhZ2UiX3MpLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgZXhjZXB0aW9uTWVzc2Fn
ZSA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgbWVzc2FnZVZhbHVlLCBu
dWxscHRyKSktPnN0cmluZygpOwogICAgIH0gZWxzZQotICAgICAgICBleGNlcHRpb25NZXNzYWdl
ID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBleGNlcHRpb24sIG51bGxwdHIp
KTsKKyAgICAgICAgZXhjZXB0aW9uTWVzc2FnZSA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmluZ0Nv
cHkoY29udGV4dCwgZXhjZXB0aW9uLCBudWxscHRyKSktPnN0cmluZygpOwogCi0gICAgZGlkRXZh
bHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oZnJhbWVJRCwgY2FsbGJhY2tJRCwgZXhjZXB0aW9uTWVz
c2FnZS0+c3RyaW5nKCksIGVycm9yVHlwZSk7CisgICAgZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVu
Y3Rpb24oZnJhbWVJRCwgY2FsbGJhY2tJRCwgZXhjZXB0aW9uTWVzc2FnZSwgZXJyb3JUeXBlKTsK
IH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkaWRFdmFsdWF0ZUphdmFTY3Jp
cHRGdW5jdGlvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBT
dHJpbmcmIHJlc3VsdCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBkYTA0MTA3MmEz
ZDYwY2NiNjFhYTgwYTFjNGMzMmIyNGQ4OTYyOTUwLi43MWI4Y2Y4MzM0M2M2Y2Y4NTJhMGQwOTcy
ODM4ZGZmYWQyNzA2YzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTQ4LDggKzQ4LDYgQEAKICNpbXBvcnQgIldlYlByb2Nl
c3MuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgogI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pT
U3RyaW5nUmVmLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZkNGLmg+CiAj
aW1wb3J0IDxQREZLaXQvUERGS2l0Lmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgpAQCAtMTA5NiwxOSArMTA5NCwx
MyBAQCB2b2lkIFBERlBsdWdpbjo6cnVuU2NyaXB0c0luUERGRG9jdW1lbnQoKQogICAgIFZlY3Rv
cjxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBzY3JpcHRzOwogICAgIGdldEFsbFNjcmlwdHNJblBE
RkRvY3VtZW50KFttX3BkZkRvY3VtZW50IGRvY3VtZW50UmVmXSwgc2NyaXB0cyk7CiAKLSAgICBz
aXplX3Qgc2NyaXB0Q291bnQgPSBzY3JpcHRzLnNpemUoKTsKLSAgICBpZiAoIXNjcmlwdENvdW50
KQorICAgIGlmIChzY3JpcHRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSlNH
bG9iYWxDb250ZXh0UmVmIGN0eCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZSgwKTsKICAgICBKU09i
amVjdFJlZiBqc1BERkRvYyA9IG1ha2VKU1BERkRvYyhjdHgpOwotCi0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzY3JpcHRDb3VudDsgKytpKSB7Ci0gICAgICAgIEpTU3RyaW5nUmVmIHNjcmlw
dCA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKHNjcmlwdHNbaV0uZ2V0KCkpOwotICAgICAg
ICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgc2NyaXB0LCBqc1BERkRvYywgMCwgMCwgMCk7Ci0gICAg
ICAgIEpTU3RyaW5nUmVsZWFzZShzY3JpcHQpOwotICAgIH0KLSAgICAKKyAgICBmb3IgKGF1dG8m
IHNjcmlwdCA6IHNjcmlwdHMpCisgICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBPcGFxdWVK
U1N0cmluZzo6Y3JlYXRlKHNjcmlwdC5nZXQoKSkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRyLCAw
LCBudWxscHRyKTsKICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKGN0eCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQppbmRleCBl
YzFhOGVjNjU2NzliOGJmYzYyNjA2NGZhMmYxYmJmZjA4NTUzM2UyLi4xODQxYjk4NWM4NTBjYWYw
NDM3NGFhODEzYTIwNTBiZGYwMDQ1N2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCkBAIC0zNCw4ICszNCw3IEBACiAjaW1wb3J0ICJX
ZWJQREZEb2N1bWVudEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViUERGVmlld1BsYWNlaG9sZGVyLmgi
CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHRSZWYuaD4KLSNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmlu
Z1JlZkNGLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgpAQCAtMzIxLDE5ICszMjAsMTMgQEAgLSAodm9pZClm
aW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UK
IAogICAgIE5TQXJyYXkgKnNjcmlwdHMgPSBhbGxTY3JpcHRzSW5QREZEb2N1bWVudChfUERGRG9j
dW1lbnQpOwogCi0gICAgTlNVSW50ZWdlciBzY3JpcHRDb3VudCA9IFtzY3JpcHRzIGNvdW50XTsK
LSAgICBpZiAoIXNjcmlwdENvdW50KQorICAgIGlmICghW3NjcmlwdHMgY291bnRdKQogICAgICAg
ICByZXR1cm47CiAKICAgICBKU0dsb2JhbENvbnRleHRSZWYgY3R4ID0gSlNHbG9iYWxDb250ZXh0
Q3JlYXRlKDApOwogICAgIEpTT2JqZWN0UmVmIGpzUERGRG9jID0gbWFrZUpTUERGRG9jKGN0eCwg
ZGF0YVNvdXJjZSk7Ci0KLSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBzY3JpcHRDb3Vu
dDsgKytpKSB7Ci0gICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0
aENGU3RyaW5nKChDRlN0cmluZ1JlZilbc2NyaXB0cyBvYmplY3RBdEluZGV4OmldKTsKLSAgICAg
ICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIHNjcmlwdCwganNQREZEb2MsIDAsIDAsIDApOwotICAg
ICAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0KTsKLSAgICB9Ci0KKyAgICBmb3IgKE5TU3RyaW5n
ICpzY3JpcHQgaW4gc2NyaXB0cykKKyAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIE9wYXF1
ZUpTU3RyaW5nOjpjcmVhdGUoc2NyaXB0KS5nZXQoKSwganNQREZEb2MsIG51bGxwdHIsIDAsIG51
bGxwdHIpOwogICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY3R4KTsKIAogICAgIFtzZWxmIHNl
dE5lZWRzRGlzcGxheTpZRVNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQppbmRleCBiZjY4ZjNhNTA0YmM1MDY1
YzNhNDk4ZGEzNDBhYjY2NmYwM2UzMDBjLi45M2IxNTY2YWEyZWNjZmQwNDUwYmU0MDk4NjMxMjY5
ZDM4MmZlNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dl
YlBERlZpZXdQbGFjZWhvbGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJW
aWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQpAQCAtMzAsOCArMzAsNiBAQAogI2ltcG9ydCAi
V2ViRnJhbWVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViUERGVmlld0lPUy5oIgogI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9K
U1N0cmluZ1JlZi5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZDRi5oPgog
I2ltcG9ydCA8V2ViQ29yZS9EYXRhVHJhbnNmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnRI
YW5kbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4KQEAgLTMwOSwxOCArMzA3
LDExIEBAIC0gKHZvaWQpX2V2YWx1YXRlSlNGb3JEb2N1bWVudDooQ0dQREZEb2N1bWVudFJlZilw
ZGZEb2N1bWVudAogCiAgICAgTlNBcnJheSAqc2NyaXB0cyA9IGFsbFNjcmlwdHNJblBERkRvY3Vt
ZW50KHBkZkRvY3VtZW50KTsKIAotICAgIE5TVUludGVnZXIgc2NyaXB0Q291bnQgPSBbc2NyaXB0
cyBjb3VudF07Ci0gICAgaWYgKHNjcmlwdENvdW50KSB7Ci0KKyAgICBpZiAoW3NjcmlwdHMgY291
bnRdKSB7CiAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHggPSBKU0dsb2JhbENvbnRleHRD
cmVhdGUoMCk7CiAgICAgICAgIEpTT2JqZWN0UmVmIGpzUERGRG9jID0gbWFrZUpTUERGRG9jKGN0
eCwgX2RhdGFTb3VyY2UpOwotCi0gICAgICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IHNj
cmlwdENvdW50OyArK2kpIHsKLSAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3Ry
aW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilbc2NyaXB0cyBvYmplY3RBdEluZGV4
OmldKTsKLSAgICAgICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBzY3JpcHQsIGpzUERGRG9j
LCAwLCAwLCAwKTsKLSAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShzY3JpcHQpOwotICAgICAg
ICB9Ci0KKyAgICAgICAgZm9yIChOU1N0cmluZyAqc2NyaXB0IGluIHNjcmlwdHMpCisgICAgICAg
ICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShzY3JpcHQp
LmdldCgpLCBqc1BERkRvYywgbnVsbHB0ciwgMCwgbnVsbHB0cik7CiAgICAgICAgIEpTR2xvYmFs
Q29udGV4dFJlbGVhc2UoY3R4KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQppbmRleCA3OWRiMzhh
NjY2MGJhZDA2Yjg4MjViYjUzY2IwNGQyZGY2ZjU2NDA4Li5hYWRmZWQyMThmY2VmNGIxMmZiODlh
YTc3N2ExOTRmNWZkMjdhMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW0KQEAgLTM3LDggKzM3LDcgQEAKICNp
bXBvcnQgIldlYlBERlZpZXcuaCIKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKICNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSlNTdHJpbmdSZWYuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmQ0Yu
aD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+CiAjaW1wb3J0IDx3
dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xMjksMTkgKzEyOCwxMyBAQCAtICh2b2lkKWZpbmlz
aGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQogICAg
IFtkb2MgcmVsZWFzZV07CiAgICAgZG9jID0gbmlsOwogCi0gICAgTlNVSW50ZWdlciBzY3JpcHRD
b3VudCA9IFtzY3JpcHRzIGNvdW50XTsKLSAgICBpZiAoIXNjcmlwdENvdW50KQorICAgIGlmICgh
W3NjcmlwdHMgY291bnRdKQogICAgICAgICByZXR1cm47CiAKICAgICBKU0dsb2JhbENvbnRleHRS
ZWYgY3R4ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRlKDApOwogICAgIEpTT2JqZWN0UmVmIGpzUERG
RG9jID0gbWFrZUpTUERGRG9jKGN0eCwgZGF0YVNvdXJjZSk7Ci0KLSAgICBmb3IgKE5TVUludGVn
ZXIgaSA9IDA7IGkgPCBzY3JpcHRDb3VudDsgKytpKSB7Ci0gICAgICAgIEpTU3RyaW5nUmVmIHNj
cmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilbc2NyaXB0cyBv
YmplY3RBdEluZGV4OmldKTsKLSAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIHNjcmlwdCwg
anNQREZEb2MsIDAsIDAsIDApOwotICAgICAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0KTsKLSAg
ICB9Ci0KKyAgICBmb3IgKE5TU3RyaW5nICpzY3JpcHQgaW4gc2NyaXB0cykKKyAgICAgICAgSlNF
dmFsdWF0ZVNjcmlwdChjdHgsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoc2NyaXB0KS5nZXQoKSwg
anNQREZEb2MsIG51bGxwdHIsIDAsIG51bGxwdHIpOwogICAgIEpTR2xvYmFsQ29udGV4dFJlbGVh
c2UoY3R4KTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>