<?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>181074</bug_id>
          
          <creation_ts>2017-12-20 19:00:45 -0800</creation_ts>
          <short_desc>Clean up context menu code</short_desc>
          <delta_ts>2018-01-02 12:58:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1383985</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-20 19:00:45 -0800</bug_when>
    <thetext>Clean up context menu code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383986</commentid>
    <comment_count>1</comment_count>
      <attachid>329993</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-20 19:02:53 -0800</bug_when>
    <thetext>Created attachment 329993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383988</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-20 19:04:24 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383994</commentid>
    <comment_count>3</comment_count>
      <attachid>329997</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-20 19:31:43 -0800</bug_when>
    <thetext>Created attachment 329997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384017</commentid>
    <comment_count>4</comment_count>
      <attachid>330001</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-20 20:42:48 -0800</bug_when>
    <thetext>Created attachment 330001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384019</commentid>
    <comment_count>5</comment_count>
      <attachid>330002</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-20 20:48:08 -0800</bug_when>
    <thetext>Created attachment 330002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384022</commentid>
    <comment_count>6</comment_count>
      <attachid>330004</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-20 21:16:05 -0800</bug_when>
    <thetext>Created attachment 330004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384891</commentid>
    <comment_count>7</comment_count>
      <attachid>330004</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-12-28 14:01:34 -0800</bug_when>
    <thetext>Comment on attachment 330004
Patch

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

Nice cleanup! r=me.

&gt; Source/WebKit/ChangeLog:10
&gt; +        Remove dead iOS code.  Reduce allocations.  Add stub for WPE.

Yay!

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4732
&gt; +    m_activeContextMenu = m_pageClient.createContextMenuProxy(*this, WTFMove(contextMenuContextData), userData);

Is it okay to move &apos;contextMenuContextData&apos; here, after also assigning it above? I guess the assignment is copying, so never mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385146</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-02 09:17:31 -0800</bug_when>
    <thetext>http://trac.webkit.org/r226323</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385209</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-02 12:58:04 -0800</bug_when>
    <thetext>&lt;rdar://problem/36260857&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329993</attachid>
            <date>2017-12-20 19:02:53 -0800</date>
            <delta_ts>2017-12-20 19:31:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181074-20171220190252.patch</filename>
            <type>text/plain</type>
            <size>27135</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjYyMTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE3LTEyLTIwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAgY29u
dGV4dCBtZW51IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MTA3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBSZWYgaW5zdGVhZCBvZiBSZWZQdHIgd2hlcmUgcG9zc2libGUuCisgICAgICAg
IFVzZSBtb3ZlIHNlbWFudGljcyBpbnN0ZWFkIG9mIGNvcHlpbmcgZnJvbSBjb25zdCByZWZlcmVu
Y2VzIHdoZW4gcG9zc2libGUuCisgICAgICAgIFJlbW92ZSBkZWFkIGlPUyBjb2RlLiAgUmVkdWNl
IGFsbG9jYXRpb25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNs
aWVudC5oOgorICAgICAgICAoQVBJOjpDb250ZXh0TWVudUNsaWVudDo6Z2V0Q29udGV4dE1lbnVG
cm9tUHJvcG9zZWRNZW51KToKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGllbnQ6OmdldENv
bnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5jKToKKyAgICAgICAgKEFQSTo6Q29udGV4dE1l
bnVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVMaXN0ZW5l
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5
Ojp1c2VDb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dE1l
bnVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHk6OldlYkNv
bnRleHRNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudSk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29u
dGV4dE1lbnVQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHlHdGs6OnNob3dDb250ZXh0TWVudVdpdGhJdGVtcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHRNZW51UHJveHlHdGs6OldlYkNvbnRleHRNZW51UHJveHlHdGspOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudVByb3h5R3RrOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4
dE1lbnVQcm94eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6OldlYkNvbnRleHRNZW51UHJveHlNYWMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29udGV4dE1lbnVXaXRo
SXRlbXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29u
dGV4dE1lbnUpOgorCiAyMDE3LTEyLTIwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gQWRkIHNjcmVlbiBjYXB0dXJlIElETCBh
bmQgc3R1YiBmdW5jdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJ
KHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDcgKzIxNyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdl
UHJveHkmKSA9IDA7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgdmlydHVhbCBSZWZQ
dHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJv
eHkmLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwgY29uc3QgVXNlckRhdGEmKSA9IDA7
CisgICAgdmlydHVhbCBSZWY8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQ
cm94eShXZWJQYWdlUHJveHkmLCBDb250ZXh0TWVudUNvbnRleHREYXRhJiYsIGNvbnN0IFVzZXJE
YXRhJikgPSAwOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVMaXN0
ZW5lclByb3h5LmNwcAkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMs
MTggKzUzLDE4IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5Ojp1c2VDb24KICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IGFycmF5ID0gdG9JbXBsKGl0
ZW1zKTsKLSAgICBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gZGF0YUl0ZW1zOwotCiAg
ICAgc2l6ZV90IG5ld1NpemUgPSBhcnJheSA/IGFycmF5LT5zaXplKCkgOiAwOworICAgIFZlY3Rv
cjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBkYXRhSXRlbXM7CisgICAgZGF0YUl0ZW1zLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobmV3U2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
ZXdTaXplOyArK2kpIHsKICAgICAgICAgV2ViQ29udGV4dE1lbnVJdGVtKiBpdGVtID0gYXJyYXkt
PmF0PFdlYkNvbnRleHRNZW51SXRlbT4oaSk7CiAgICAgICAgIGlmICghaXRlbSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRhdGFJdGVtcy5hcHBlbmQoaXRlbS0+ZGF0YSgpKTsK
KyAgICAgICAgZGF0YUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChpdGVtLT5kYXRhKCkpOwogICAgIH0K
IAotICAgIG1fY29udGV4dE1lbnVNYWMtPnNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhkYXRhSXRl
bXMpOworICAgIG1fY29udGV4dE1lbnVNYWMtPnNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhXVEZN
b3ZlKGRhdGFJdGVtcykpOwogfQogCiB2b2lkIFdlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eTo6
aW52YWxpZGF0ZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVu
dVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250
ZXh0TWVudVByb3h5LmNwcAkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMw
LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkNvbnRleHRNZW51UHJveHk6OldlYkNv
bnRleHRNZW51UHJveHkoY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYgY29udGV4dCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitXZWJDb250
ZXh0TWVudVByb3h5OjpXZWJDb250ZXh0TWVudVByb3h5KENvbnRleHRNZW51Q29udGV4dERhdGEm
JiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCisgICAgOiBtX2NvbnRleHQoV1RG
TW92ZShjb250ZXh0KSkKICAgICAsIG1fdXNlckRhdGEodXNlckRhdGEpCiB7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5oCShyZXZpc2lv
biAyMjYxOTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2hvdygpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnVX
aXRoSXRlbXMoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcykgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFdlYkNv
bnRleHRNZW51SXRlbURhdGE+JiYpID0gMDsKIAogcHJvdGVjdGVkOgotICAgIFdlYkNvbnRleHRN
ZW51UHJveHkoY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRhJik7
CisgICAgV2ViQ29udGV4dE1lbnVQcm94eShDb250ZXh0TWVudUNvbnRleHREYXRhJiYsIGNvbnN0
IFVzZXJEYXRhJik7CiAKICAgICBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhIG1fY29udGV4
dDsKICAgICBjb25zdCBVc2VyRGF0YSBtX3VzZXJEYXRhOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMjYxOTUpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzIyLDMx
ICs0NzIyLDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlUG9wdXBNZW51KCkKIH0KIAogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQotdm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVu
dShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiBjb250ZXh0TWVudUNvbnRleHREYXRhLCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRN
ZW51KENvbnRleHRNZW51Q29udGV4dERhdGEmJiBjb250ZXh0TWVudUNvbnRleHREYXRhLCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgLy8gU2hvd2luZyBhIGNvbnRleHQgbWVudSBy
dW5zIGEgbmVzdGVkIHJ1bmxvb3AsIHdoaWNoIGNhbiBoYW5kbGUgbWVzc2FnZXMgdGhhdCBjYXVz
ZSB8dGhpc3wgdG8gZ2V0IGNsb3NlZC4KICAgICBSZWY8V2ViUGFnZVByb3h5PiBwcm90ZWN0KCp0
aGlzKTsKIAotICAgIGludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnRleHRNZW51Q29udGV4dERh
dGEsIHVzZXJEYXRhKTsKLSAgICAKLSAgICAvLyBObyBtYXR0ZXIgdGhlIHJlc3VsdCBvZiBpbnRl
cm5hbFNob3dDb250ZXh0TWVudSwgYWx3YXlzIG5vdGlmeSB0aGUgV2ViUHJvY2VzcyB0aGF0IHRo
ZSBtZW51IGlzIGhpZGRlbiBzbyBpdCBzdGFydHMgaGFuZGxpbmcgbW91c2UgZXZlbnRzIGFnYWlu
LgotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGV4dE1lbnVIaWRk
ZW4oKSwgbV9wYWdlSUQpOwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29u
dGV4dE1lbnUoY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYgY29udGV4dE1lbnVDb250ZXh0
RGF0YSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQotewogICAgIG1fYWN0aXZlQ29udGV4dE1l
bnVDb250ZXh0RGF0YSA9IGNvbnRleHRNZW51Q29udGV4dERhdGE7Ci0KLSAgICBtX2FjdGl2ZUNv
bnRleHRNZW51ID0gbV9wYWdlQ2xpZW50LmNyZWF0ZUNvbnRleHRNZW51UHJveHkoKnRoaXMsIGNv
bnRleHRNZW51Q29udGV4dERhdGEsIHVzZXJEYXRhKTsKLSAgICBpZiAoIW1fYWN0aXZlQ29udGV4
dE1lbnUpCi0gICAgICAgIHJldHVybjsKLQorICAgIAorICAgIG1fYWN0aXZlQ29udGV4dE1lbnUg
PSBtX3BhZ2VDbGllbnQuY3JlYXRlQ29udGV4dE1lbnVQcm94eSgqdGhpcywgV1RGTW92ZShjb250
ZXh0TWVudUNvbnRleHREYXRhKSwgdXNlckRhdGEpOworICAgIAogICAgIC8vIFNpbmNlIHNob3dD
b250ZXh0TWVudSgpIGNhbiBzcGluIGEgbmVzdGVkIHJ1biBsb29wIHdlIG5lZWQgdG8gdHVybiBv
ZmYgdGhlIHJlc3BvbnNpdmVuZXNzIHRpbWVyLgogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5l
c3NUaW1lcigpLnN0b3AoKTsKLQorICAgIAogICAgIC8vIG1fYWN0aXZlQ29udGV4dE1lbnUgbWln
aHQgZ2V0IGNsZWFyZWQgaWYgV2ViUGFnZVByb3h5IGNvZGUgaXMgcmUtZW50ZXJlZCBmcm9tIHRo
ZSBtZW51IHJ1bmxvb3Agb3IgZGVsZWdhdGVzLgogICAgIFJlZjxXZWJDb250ZXh0TWVudVByb3h5
PiBwcm90ZWN0b3IoKm1fYWN0aXZlQ29udGV4dE1lbnUpOwogICAgIG1fYWN0aXZlQ29udGV4dE1l
bnUtPnNob3coKTsKKworICAgIC8vIE5vIG1hdHRlciB0aGUgcmVzdWx0IG9mIGludGVybmFsU2hv
d0NvbnRleHRNZW51LCBhbHdheXMgbm90aWZ5IHRoZSBXZWJQcm9jZXNzIHRoYXQgdGhlIG1lbnUg
aXMgaGlkZGVuIHNvIGl0IHN0YXJ0cyBoYW5kbGluZyBtb3VzZSBldmVudHMgYWdhaW4uCisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUhpZGRlbigpLCBt
X3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU5LDggKzE0
NTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGlkZVBvcHVwTWVudSgpOwogCiAjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpCi0gICAgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgQ29udGV4dE1l
bnVDb250ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBpbnRlcm5hbFNob3dD
b250ZXh0TWVudShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwgY29uc3QgVXNlckRhdGEm
KTsKKyAgICB2b2lkIHNob3dDb250ZXh0TWVudShDb250ZXh0TWVudUNvbnRleHREYXRhJiYsIGNv
bnN0IFVzZXJEYXRhJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RF
VEVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVu
dUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZXh0TWVudUNsaWVudC5oCShyZXZpc2lvbiAyMjYxOTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
OCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgQVBJQ29udGV4dE1lbnVDbGllbnRfaAotI2RlZmluZSBBUElDb250ZXh0TWVudUNsaWVu
dF9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCkBAIC01Miwx
MCArNTEsMTAgQEAgY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1
YWwgfkNvbnRleHRNZW51Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29udGV4
dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgVmVjdG9y
PFJlZlB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiAvKiBwcm9wb3NlZE1lbnUgKi8s
IFZlY3RvcjxSZWZQdHI8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgLyogY3VzdG9tTWVu
dSAqLywgY29uc3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIEFQSTo6T2JqZWN0KiAv
KiB1c2VyRGF0YSAqLykgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29u
dGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5bmMoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25z
dCBWZWN0b3I8UmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mIC8qIHByb3Bvc2Vk
TWVudSAqLywgV2ViS2l0OjpXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkqLCBjb25zdCBXZWJL
aXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhJiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6
V2ViQ29udGV4dE1lbnVJdGVtPj4mIC8qIHByb3Bvc2VkTWVudSAqLywgVmVjdG9yPFJlZjxXZWJL
aXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiAvKiBjdXN0b21NZW51ICovLCBjb25zdCBXZWJLaXQ6
OldlYkhpdFRlc3RSZXN1bHREYXRhJiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3Nl
ZE1lbnVBc3luYyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFZlY3RvcjxSZWY8V2ViS2l0
OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgLyogcHJvcG9zZWRNZW51ICovLCBXZWJLaXQ6OldlYkNv
bnRleHRNZW51TGlzdGVuZXJQcm94eSosIGNvbnN0IFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERh
dGEmLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCB2b2lkIGN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJikgeyB9Ci0gICAg
dmlydHVhbCBib29sIHNob3dDb250ZXh0TWVudShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJLaXQ6OldlYkNvbnRl
eHRNZW51SXRlbT4+JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvd0Nv
bnRleHRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBoaWRlQ29udGV4dE1lbnUoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjYs
NCArNjUsMyBAQCBwdWJsaWM6CiB9IC8vIG5hbWVzcGFjZSBBUEkKIAogI2VuZGlmIC8vIEVOQUJM
RShDT05URVhUX01FTlVTKQotI2VuZGlmIC8vIEFQSUNvbnRleHRNZW51Q2xpZW50X2gKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMjI2MTk1
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODE4LDcgKzgxOCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xp
ZW50KFdLUGEKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBnZXRDb250
ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0b3I8
UmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudVZlY3Rvciwg
VmVjdG9yPFJlZlB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiBjdXN0b21NZW51LCBj
b25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudVZlY3RvciwgVmVjdG9yPFJlZjxXZWJLaXQ6
OldlYkNvbnRleHRNZW51SXRlbT4+JiBjdXN0b21NZW51LCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0
RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Q
cm9wb3NlZE1lbnUgJiYgIW1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYwKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTgzMCwxMiArODMwLDEyIEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdL
UGEKICAgICAgICAgICAgIHByb3Bvc2VkTWVudUl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
cHJvcG9zZWRNZW51VmVjdG9yLnNpemUoKSk7CiAKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgbWVudUl0ZW0gOiBwcm9wb3NlZE1lbnVWZWN0b3IpCi0gICAgICAgICAgICAgICAgcHJvcG9z
ZWRNZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKG1lbnVJdGVtKTsKKyAgICAgICAgICAgICAgICBw
cm9wb3NlZE1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQobWVudUl0ZW0ucHRyKCkpOwogCiAgICAg
ICAgICAgICBXS0FycmF5UmVmIG5ld01lbnUgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKG1f
Y2xpZW50LmJhc2UudmVyc2lvbiA+PSAyKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6
SGl0VGVzdFJlc3VsdD4gd2ViSGl0VGVzdFJlc3VsdCA9IEFQSTo6SGl0VGVzdFJlc3VsdDo6Y3Jl
YXRlKGhpdFRlc3RSZXN1bHREYXRhKTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5nZXRDb250
ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodG9BUEkoJnBhZ2UpLCB0b0FQSShBUEk6OkFycmF5Ojpj
cmVhdGUoV1RGTW92ZShwcm9wb3NlZE1lbnVJdGVtcykpLnB0cigpKSwgJm5ld01lbnUsIHRvQVBJ
KHdlYkhpdFRlc3RSZXN1bHQuZ2V0KCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgYXV0byB3ZWJIaXRUZXN0UmVzdWx0ID0gQVBJ
OjpIaXRUZXN0UmVzdWx0OjpjcmVhdGUoaGl0VGVzdFJlc3VsdERhdGEpOworICAgICAgICAgICAg
ICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0b0FQSSgmcGFnZSks
IHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHByb3Bvc2VkTWVudUl0ZW1zKSkucHRy
KCkpLCAmbmV3TWVudSwgdG9BUEkod2ViSGl0VGVzdFJlc3VsdC5wdHIoKSksIHRvQVBJKHVzZXJE
YXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRl
KFdURk1vdmUocHJvcG9zZWRNZW51SXRlbXMpKS5wdHIoKSksICZuZXdNZW51LCB0b0FQSSh1c2Vy
RGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAKQEAgLTg1MSwxMyArODUxLDEzIEBA
IHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgY3Vz
dG9tTWVudS5hcHBlbmQoaXRlbSk7CisgICAgICAgICAgICAgICAgY3VzdG9tTWVudS5hcHBlbmQo
Kml0ZW0pOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogCi0gICAgICAgIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5bmMo
V2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYktpdDo6V2ViQ29udGV4
dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudVZlY3RvciwgV2ViS2l0OjpXZWJDb250ZXh0TWVudUxp
c3RlbmVyUHJveHkqIGNvbnRleHRNZW51TGlzdGVuZXIsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHRE
YXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQor
ICAgICAgICBib29sIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5jKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgY29uc3QgVmVjdG9yPFJlZjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+
JiBwcm9wb3NlZE1lbnVWZWN0b3IsIFdlYktpdDo6V2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5
KiBjb250ZXh0TWVudUxpc3RlbmVyLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0VGVz
dFJlc3VsdERhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKG1fY2xpZW50LmJhc2UudmVyc2lvbiA8IDQgfHwgIW1fY2xpZW50Lmdl
dENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5jKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTg2Niw3ICs4NjYsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVu
dUNsaWVudChXS1BhCiAgICAgICAgICAgICBwcm9wb3NlZE1lbnVJdGVtcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHByb3Bvc2VkTWVudVZlY3Rvci5zaXplKCkpOwogCiAgICAgICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIG1lbnVJdGVtIDogcHJvcG9zZWRNZW51VmVjdG9yKQotICAgICAgICAgICAg
ICAgIHByb3Bvc2VkTWVudUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChtZW51SXRlbSk7CisgICAgICAg
ICAgICAgICAgcHJvcG9zZWRNZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKG1lbnVJdGVtLnB0cigp
KTsKIAogICAgICAgICAgICAgUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4gd2ViSGl0VGVzdFJl
c3VsdCA9IEFQSTo6SGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1bHREYXRhKTsKICAg
ICAgICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5jKHRv
QVBJKCZwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUocHJvcG9zZWRNZW51
SXRlbXMpKS5wdHIoKSksIHRvQVBJKGNvbnRleHRNZW51TGlzdGVuZXIpLCB0b0FQSSh3ZWJIaXRU
ZXN0UmVzdWx0LmdldCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwpAQCAtODgyLDcgKzg4Miw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xp
ZW50KFdLUGEKICAgICAgICAgICAgIG1fY2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKHRvQVBJKCZwYWdlKSwgdG9BUEkoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbURh
dGEpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGJvb2wgc2hvd0NvbnRleHRNZW51KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0
TWVudUl0ZW0+PiYgbWVudUl0ZW1zVmVjdG9yKSBvdmVycmlkZQorICAgICAgICBib29sIHNob3dD
b250ZXh0TWVudShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBt
ZW51TG9jYXRpb24sIGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mIG1lbnVJ
dGVtc1ZlY3Rvcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5zaG93Q29udGV4dE1lbnUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODkx
LDcgKzg5MSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEKICAg
ICAgICAgICAgIG1lbnVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1lbnVJdGVtc1ZlY3Rv
ci5zaXplKCkpOwogCiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG1lbnVJdGVtIDogbWVu
dUl0ZW1zVmVjdG9yKQotICAgICAgICAgICAgICAgIG1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQo
bWVudUl0ZW0pOworICAgICAgICAgICAgICAgIG1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQobWVu
dUl0ZW0ucHRyKCkpOwogCiAgICAgICAgICAgICBtX2NsaWVudC5zaG93Q29udGV4dE1lbnUodG9B
UEkoJnBhZ2UpLCB0b0FQSShtZW51TG9jYXRpb24pLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUo
V1RGTW92ZShtZW51SXRlbXMpKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuY3BwCShyZXZpc2lvbiAyMjYxOTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDkgKzIxMSw5
IEBAIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGwKICAgICByZXR1cm4g
V2ViUG9wdXBNZW51UHJveHlHdGs6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCi1S
ZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRN
ZW51UHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRh
JiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCitSZWY8V2ViQ29udGV4dE1lbnVQ
cm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5
JiBwYWdlLCBDb250ZXh0TWVudUNvbnRleHREYXRhJiYgY29udGV4dCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQogewotICAgIHJldHVybiBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpjcmVhdGUo
bV92aWV3V2lkZ2V0LCBwYWdlLCBjb250ZXh0LCB1c2VyRGF0YSk7CisgICAgcmV0dXJuIFdlYkNv
bnRleHRNZW51UHJveHlHdGs6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UsIFdURk1vdmUoY29u
dGV4dCksIHVzZXJEYXRhKTsKIH0KIAogUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBQYWdlQ2xpZW50
SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3Jl
OjpDb2xvciYgY29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCShyZXZp
c2lvbiAyMjYxOTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXli
b2FyZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxX
ZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Jikgb3Zl
cnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51
UHJveHkoV2ViUGFnZVByb3h5JiwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0
IFVzZXJEYXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0
ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5JiwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0
RGF0YSYsIGNvbnN0IFVzZXJEYXRhJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCiAgICAgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQ
YWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW50aWFsQ29sb3IsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcAkocmV2aXNp
b24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51
UHJveHlHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsMTIgKzE3NSwxMiBAQCB2b2lkIFdl
YkNvbnRleHRNZW51UHJveHlHdGs6OnNob3coKQogICAgICAgICAgICAgICAgICAgIGV2ZW50ID8g
ZXZlbnQtPmJ1dHRvbi5idXR0b24gOiAzLCBldmVudCA/IGV2ZW50LT5idXR0b24udGltZSA6IEdE
S19DVVJSRU5UX1RJTUUpOwogfQogCi12b2lkIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OnNob3dD
b250ZXh0TWVudVdpdGhJdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4m
IGl0ZW1zKQordm9pZCBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpzaG93Q29udGV4dE1lbnVXaXRo
SXRlbXMoVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiYpCiB7CiB9CiAKLVdlYkNvbnRl
eHRNZW51UHJveHlHdGs6OldlYkNvbnRleHRNZW51UHJveHlHdGsoR3RrV2lkZ2V0KiB3ZWJWaWV3
LCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNvbnRl
eHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKLSAgICA6IFdlYkNvbnRleHRNZW51UHJveHko
Y29udGV4dCwgdXNlckRhdGEpCitXZWJDb250ZXh0TWVudVByb3h5R3RrOjpXZWJDb250ZXh0TWVu
dVByb3h5R3RrKEd0a1dpZGdldCogd2ViVmlldywgV2ViUGFnZVByb3h5JiBwYWdlLCBDb250ZXh0
TWVudUNvbnRleHREYXRhJiYgY29udGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQorICAg
IDogV2ViQ29udGV4dE1lbnVQcm94eShXVEZNb3ZlKGNvbnRleHQpLCB1c2VyRGF0YSkKICAgICAs
IG1fd2ViVmlldyh3ZWJWaWV3KQogICAgICwgbV9wYWdlKCZwYWdlKQogICAgICwgbV9tZW51KEdU
S19NRU5VKGd0a19tZW51X25ldygpKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaAkocmV2aXNpb24gMjI2MTk1KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29udGV4dE1lbnVQcm94eUd0a19oCi0jZGVm
aW5lIFdlYkNvbnRleHRNZW51UHJveHlHdGtfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKIApAQCAtNDQsOSArNDMsOSBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiAK
IGNsYXNzIFdlYkNvbnRleHRNZW51UHJveHlHdGsgOiBwdWJsaWMgV2ViQ29udGV4dE1lbnVQcm94
eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKEd0a1dpZGdldCogd2lkZ2V0LCBX
ZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNvbnRleHQs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoR3RrV2lk
Z2V0KiB3aWRnZXQsIFdlYlBhZ2VQcm94eSYgcGFnZSwgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYm
IGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYkNvbnRleHRNZW51UHJveHlHdGsod2lkZ2V0LCBwYWdlLCBjb250
ZXh0LCB1c2VyRGF0YSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb250ZXh0
TWVudVByb3h5R3RrKHdpZGdldCwgcGFnZSwgV1RGTW92ZShjb250ZXh0KSwgdXNlckRhdGEpKTsK
ICAgICB9CiAgICAgfldlYkNvbnRleHRNZW51UHJveHlHdGsoKTsKIApAQCAtNTQsOSArNTMsOSBA
QCBwdWJsaWM6CiAgICAgR3RrTWVudSogZ3RrTWVudSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVudTsg
fQogCiBwcml2YXRlOgotICAgIFdlYkNvbnRleHRNZW51UHJveHlHdGsoR3RrV2lkZ2V0KiwgV2Vi
UGFnZVByb3h5JiwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRh
Jik7CisgICAgV2ViQ29udGV4dE1lbnVQcm94eUd0ayhHdGtXaWRnZXQqLCBXZWJQYWdlUHJveHkm
LCBDb250ZXh0TWVudUNvbnRleHREYXRhJiYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBz
aG93KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoY29uc3Qg
VmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93
Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgYXBwZW5kKEdNZW51KiwgY29uc3QgV2ViQ29udGV4dE1lbnVJdGVt
R2xpYiYpOwogICAgIEdSZWZQdHI8R01lbnU+IGJ1aWxkTWVudShjb25zdCBWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtR2xpYj4mKTsKICAgICB2b2lkIHBvcHVsYXRlKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8V2ViQ29udGV4dE1lbnVJdGVtPj4mKTsKQEAgLTczLDQgKzcyLDMgQEAgcHJpdmF0ZToKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0j
ZW5kaWYgLy8gV2ViQ29udGV4dE1lbnVQcm94eUd0a19oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAkocmV2aXNpb24gMjI2MTk1KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk0LDkgKzk0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvbmVXaXRoVG91
Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQp
IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQ
b3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKLSNpZiBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKLSAgICBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1l
bnVQcm94eShXZWJQYWdlUHJveHkmLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwgY29u
c3QgVXNlckRhdGEmKSBvdmVycmlkZTsKLSNlbmRpZgogICAgIFJlZjxXZWJDb3JlOjpWYWxpZGF0
aW9uQnViYmxlPiBjcmVhdGVWYWxpZGF0aW9uQnViYmxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
Y29uc3QgV2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZTo6U2V0dGluZ3MmKSBmaW5hbDsKIAogICAg
IHZvaWQgc2V0VGV4dEluZGljYXRvcihSZWY8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNv
cmU6OlRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZSkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCShyZXZpc2lv
biAyMjYxOTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0OCwxMyArNDQ4LDYgQEAgUmVmUHRyPFdlYlBvcHVw
TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbAogICAgIHJldHVybiBudWxscHRyOwogfQogCi0jaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCi1SZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5JiwgY29uc3QgVXNl
ckRhdGEmKQotewotICAgIHJldHVybiBudWxscHRyOwotfQotI2VuZGlmCi0KIHZvaWQgUGFnZUNs
aWVudEltcGw6OnNldFRleHRJbmRpY2F0b3IoUmVmPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0
b3IsIFRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCShyZXZpc2lvbiAyMjYx
OTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8
V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSYpIG92
ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIFJlZlB0cjxXZWJDb250ZXh0
TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENv
bnRleHRNZW51Q29udGV4dERhdGEmLCBjb25zdCBVc2VyRGF0YSYpIG92ZXJyaWRlOworICAgIFJl
ZjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94
eSYsIENvbnRleHRNZW51Q29udGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEmKSBvdmVycmlkZTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCShyZXZpc2lvbiAy
MjYxOTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0OCw5ICs0NDgsOSBAQCBSZWZQdHI8V2ViUG9wdXBNZW51
UHJveHk+IFBhZ2VDbGllbnRJbXBsCiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLVJl
ZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1l
bnVQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEm
IGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK1JlZjxXZWJDb250ZXh0TWVudVBy
b3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkm
IHBhZ2UsIENvbnRleHRNZW51Q29udGV4dERhdGEmJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCiB7Ci0gICAgcmV0dXJuIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OmNyZWF0ZSht
X3ZpZXcsIHBhZ2UsIGNvbnRleHQsIHVzZXJEYXRhKTsKKyAgICByZXR1cm4gV2ViQ29udGV4dE1l
bnVQcm94eU1hYzo6Y3JlYXRlKG1fdmlldywgcGFnZSwgV1RGTW92ZShjb250ZXh0KSwgdXNlckRh
dGEpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWVudVByb3h5TWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaAkocmV2aXNpb24gMjI2MTk1KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsMTQgKzQ3LDE0IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3Mg
V2ViQ29udGV4dE1lbnVQcm94eU1hYyA6IHB1YmxpYyBXZWJDb250ZXh0TWVudVByb3h5IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgYXV0byBjcmVhdGUoTlNWaWV3KiB2aWV3LCBXZWJQYWdlUHJveHkm
IHBhZ2UsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNvbnRleHQsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoTlNWaWV3KiB2aWV3LCBXZWJQ
YWdlUHJveHkmIHBhZ2UsIENvbnRleHRNZW51Q29udGV4dERhdGEmJiBjb250ZXh0LCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJDb250ZXh0TWVudVByb3h5TWFjKHZpZXcsIHBhZ2UsIGNvbnRleHQsIHVzZXJEYXRhKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvbnRleHRNZW51UHJveHlNYWModmlldywg
cGFnZSwgV1RGTW92ZShjb250ZXh0KSwgdXNlckRhdGEpKTsKICAgICB9CiAgICAgfldlYkNvbnRl
eHRNZW51UHJveHlNYWMoKTsKIAogICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29u
c3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYpOwotICAgIHZvaWQgc2hvd0NvbnRleHRNZW51V2l0
aEl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKFZlY3RvcjxXZWJDb250ZXh0TWVudUl0
ZW1EYXRhPiYmKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAg
IHZvaWQgY2xlYXJTZXJ2aWNlc01lbnUoKTsKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAg
IE5TV2luZG93ICp3aW5kb3coKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBXZWJDb250ZXh0TWVu
dVByb3h5TWFjKE5TVmlldyosIFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4
dERhdGEmLCBjb25zdCBVc2VyRGF0YSYpOworICAgIFdlYkNvbnRleHRNZW51UHJveHlNYWMoTlNW
aWV3KiwgV2ViUGFnZVByb3h5JiwgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmLCBjb25zdCBVc2Vy
RGF0YSYpOwogICAgIHZvaWQgc2hvdygpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFdlYkNvbnRl
eHRNZW51TGlzdGVuZXJQcm94eT4gbV9jb250ZXh0TWVudUxpc3RlbmVyOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMu
bW0JKHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWVudVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsOCArMTUyLDggQEAg
LSAodm9pZClmb3J3YXJkQ29udGV4dE1lbnVBY3Rpb246KGlkKXNlbgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyhO
U1ZpZXcqIHdlYlZpZXcsIFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQ29udGV4dE1lbnVDb250
ZXh0RGF0YSYgY29udGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQotICAgIDogV2ViQ29u
dGV4dE1lbnVQcm94eShjb250ZXh0LCB1c2VyRGF0YSkKK1dlYkNvbnRleHRNZW51UHJveHlNYWM6
OldlYkNvbnRleHRNZW51UHJveHlNYWMoTlNWaWV3KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkmIHBh
Z2UsIENvbnRleHRNZW51Q29udGV4dERhdGEmJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCisgICAgOiBXZWJDb250ZXh0TWVudVByb3h5KFdURk1vdmUoY29udGV4dCksIHVzZXJE
YXRhKQogICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBtX3BhZ2UocGFnZSkKIHsKQEAg
LTQ1MSw3ICs0NTEsNyBAQCBSZXRhaW5QdHI8TlNNZW51SXRlbT4gV2ViQ29udGV4dE1lbnVQcm94
CiAgICAgfQogfQogCi12b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnNob3dDb250ZXh0TWVu
dVdpdGhJdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQor
dm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVj
dG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiYgaXRlbXMpCiB7CiAgICAgYXV0byBtZW51ID0g
Y3JlYXRlQ29udGV4dE1lbnVGcm9tSXRlbXMoaXRlbXMpOwogICAgIFtbV0tNZW51VGFyZ2V0IHNo
YXJlZE1lbnVUYXJnZXRdIHNldE1lbnVQcm94eTp0aGlzXTsKQEAgLTQ2OSwxMSArNDY5LDExIEBA
IHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2hvd0NvbnRleHQKIAogdm9pZCBXZWJDb250
ZXh0TWVudVByb3h5TWFjOjpzaG93Q29udGV4dE1lbnUoKQogewotICAgIFZlY3RvcjxSZWZQdHI8
V2ViQ29udGV4dE1lbnVJdGVtPj4gcHJvcG9zZWRBUElJdGVtczsKKyAgICBWZWN0b3I8UmVmPFdl
YkNvbnRleHRNZW51SXRlbT4+IHByb3Bvc2VkQVBJSXRlbXM7CiAgICAgZm9yIChhdXRvJiBpdGVt
IDogbV9jb250ZXh0Lm1lbnVJdGVtcygpKQogICAgICAgICBwcm9wb3NlZEFQSUl0ZW1zLmFwcGVu
ZChXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShpdGVtKSk7CiAKLSAgICBWZWN0b3I8UmVmUHRy
PFdlYkNvbnRleHRNZW51SXRlbT4+IGNsaWVudEl0ZW1zOworICAgIFZlY3RvcjxSZWY8V2ViQ29u
dGV4dE1lbnVJdGVtPj4gY2xpZW50SXRlbXM7CiAgICAgYm9vbCB1c2VQcm9wb3NlZEl0ZW1zID0g
dHJ1ZTsKIAogICAgIGlmIChtX2NvbnRleHRNZW51TGlzdGVuZXIpIHsKQEAgLTUwMCw3ICs1MDAs
NyBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnNob3dDb250ZXh0CiAgICAgaWYgKGl0
ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2hvd0NvbnRleHRNZW51V2l0
aEl0ZW1zKGl0ZW1zKTsKKyAgICBzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoV1RGTW92ZShpdGVt
cykpOwogfQogCiBOU1dpbmRvdyAqV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6d2luZG93KCkgY29u
c3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329997</attachid>
            <date>2017-12-20 19:31:43 -0800</date>
            <delta_ts>2017-12-20 20:42:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181074-20171220193142.patch</filename>
            <type>text/plain</type>
            <size>32651</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjUzODQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE3LTEyLTIwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAgY29u
dGV4dCBtZW51IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MTA3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBSZWYgaW5zdGVhZCBvZiBSZWZQdHIgd2hlcmUgcG9zc2libGUuCisgICAgICAg
IFVzZSBtb3ZlIHNlbWFudGljcyBpbnN0ZWFkIG9mIGNvcHlpbmcgZnJvbSBjb25zdCByZWZlcmVu
Y2VzIHdoZW4gcG9zc2libGUuCisgICAgICAgIFJlbW92ZSBkZWFkIGlPUyBjb2RlLiAgUmVkdWNl
IGFsbG9jYXRpb25zLiAgQWRkIHN0dWIgZm9yIFdQRS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGll
bnQ6OmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSk6CisgICAgICAgIChBUEk6OkNvbnRl
eHRNZW51Q2xpZW50OjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVBc3luYyk6CisgICAg
ICAgIChBUEk6OkNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUNvbnRl
eHRNZW51Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVu
dVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRl
eHRNZW51TGlzdGVuZXJQcm94eTo6dXNlQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0TWVudVByb3h5OjpXZWJDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQ29udGV4dE1lbnVQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudVByb3h5R3RrOjpzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5R3RrOjpXZWJDb250ZXh0TWVudVByb3h5
R3RrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUd0azo6Y3JlYXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0
TWVudVByb3h5TWFjLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6
OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpXZWJDb250ZXh0
TWVudVByb3h5TWFjKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eU1hYzo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxNy0xMS0zMCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIy
MjQ3OTEpOiBjb29raWVzIGFyZSBzaGFyZWQgYmV0d2VlbiBlcGhlbWVyYWwgc2Vzc2lvbnMgaW4g
dGhlIHNhbWUgcHJvY2VzcyBwb29sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNt
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UJKHJldmlz
aW9uIDIyNjIxMSkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTQyMSw2ICs0MjEsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJF
Q1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9nc3RyZWFtZXIiCiAgICAgIiR7
V0VCS0lUX0RJUn0vVUlQcm9jZXNzL2xpbnV4IgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vz
cy9zb3VwIgorICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy93cGUiCiAgICAgIiR7V0VCS0lU
X0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYiIKICAgICAiJHtXRUJLSVRf
RElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vV2ViUHJvY2Vzcy9zb3VwIgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAkocmV2aXNpb24gMjI2MjExKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBh
Z2VQcm94eSYpID0gMDsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQ
cm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25zdCBVc2VyRGF0YSYpID0g
MDsKKyAgICB2aXJ0dWFsIFJlZjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVu
dVByb3h5KFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51Q29udGV4dERhdGEmJiwgY29uc3QgVXNl
ckRhdGEmKSA9IDA7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudUxp
c3RlbmVyUHJveHkuY3BwCShyZXZpc2lvbiAyMjYyMTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MywxOCArNTMsMTggQEAgdm9pZCBXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHk6OnVzZUNvbgog
ICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8QVBJOjpBcnJheT4gYXJyYXkgPSB0b0ltcGwo
aXRlbXMpOwotICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBkYXRhSXRlbXM7Ci0K
ICAgICBzaXplX3QgbmV3U2l6ZSA9IGFycmF5ID8gYXJyYXktPnNpemUoKSA6IDA7CisgICAgVmVj
dG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGRhdGFJdGVtczsKKyAgICBkYXRhSXRlbXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShuZXdTaXplKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG5ld1NpemU7ICsraSkgewogICAgICAgICBXZWJDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBhcnJh
eS0+YXQ8V2ViQ29udGV4dE1lbnVJdGVtPihpKTsKICAgICAgICAgaWYgKCFpdGVtKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgZGF0YUl0ZW1zLmFwcGVuZChpdGVtLT5kYXRhKCkp
OworICAgICAgICBkYXRhSXRlbXMudW5jaGVja2VkQXBwZW5kKGl0ZW0tPmRhdGEoKSk7CiAgICAg
fQogCi0gICAgbV9jb250ZXh0TWVudU1hYy0+c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKGRhdGFJ
dGVtcyk7CisgICAgbV9jb250ZXh0TWVudU1hYy0+c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKFdU
Rk1vdmUoZGF0YUl0ZW1zKSk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5
OjppbnZhbGlkYXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRN
ZW51UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNv
bnRleHRNZW51UHJveHkuY3BwCShyZXZpc2lvbiAyMjYyMTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCAr
MzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViQ29udGV4dE1lbnVQcm94eTo6V2Vi
Q29udGV4dE1lbnVQcm94eShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiBjb250ZXh0LCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKK1dlYkNv
bnRleHRNZW51UHJveHk6OldlYkNvbnRleHRNZW51UHJveHkoQ29udGV4dE1lbnVDb250ZXh0RGF0
YSYmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAgICA6IG1fY29udGV4dChX
VEZNb3ZlKGNvbnRleHQpKQogICAgICwgbV91c2VyRGF0YSh1c2VyRGF0YSkKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmgJKHJldmlz
aW9uIDIyNjIxMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBzaG93KCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVu
dVdpdGhJdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhWZWN0b3I8V2Vi
Q29udGV4dE1lbnVJdGVtRGF0YT4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViQ29udGV4
dE1lbnVQcm94eShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwgY29uc3QgVXNlckRhdGEm
KTsKKyAgICBXZWJDb250ZXh0TWVudVByb3h5KENvbnRleHRNZW51Q29udGV4dERhdGEmJiwgY29u
c3QgVXNlckRhdGEmKTsKIAogICAgIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEgbV9jb250
ZXh0OwogICAgIGNvbnN0IFVzZXJEYXRhIG1fdXNlckRhdGE7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIyNjIxMSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MjIs
MjQgKzQ3MjIsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVQb3B1cE1lbnUoKQogfQogCiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi12b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRN
ZW51KGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNvbnRleHRNZW51Q29udGV4dERhdGEs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzaG93Q29udGV4
dE1lbnUoQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHRNZW51Q29udGV4dERhdGEsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICAvLyBTaG93aW5nIGEgY29udGV4dCBtZW51
IHJ1bnMgYSBuZXN0ZWQgcnVubG9vcCwgd2hpY2ggY2FuIGhhbmRsZSBtZXNzYWdlcyB0aGF0IGNh
dXNlIHx0aGlzfCB0byBnZXQgY2xvc2VkLgogICAgIFJlZjxXZWJQYWdlUHJveHk+IHByb3RlY3Qo
KnRoaXMpOwogCi0gICAgaW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29udGV4dE1lbnVDb250ZXh0
RGF0YSwgdXNlckRhdGEpOwotICAgIAotICAgIC8vIE5vIG1hdHRlciB0aGUgcmVzdWx0IG9mIGlu
dGVybmFsU2hvd0NvbnRleHRNZW51LCBhbHdheXMgbm90aWZ5IHRoZSBXZWJQcm9jZXNzIHRoYXQg
dGhlIG1lbnUgaXMgaGlkZGVuIHNvIGl0IHN0YXJ0cyBoYW5kbGluZyBtb3VzZSBldmVudHMgYWdh
aW4uCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUhp
ZGRlbigpLCBtX3BhZ2VJRCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dD
b250ZXh0TWVudShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiBjb250ZXh0TWVudUNvbnRl
eHREYXRhLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCi17CiAgICAgbV9hY3RpdmVDb250ZXh0
TWVudUNvbnRleHREYXRhID0gY29udGV4dE1lbnVDb250ZXh0RGF0YTsKIAotICAgIG1fYWN0aXZl
Q29udGV4dE1lbnUgPSBtX3BhZ2VDbGllbnQuY3JlYXRlQ29udGV4dE1lbnVQcm94eSgqdGhpcywg
Y29udGV4dE1lbnVDb250ZXh0RGF0YSwgdXNlckRhdGEpOwotICAgIGlmICghbV9hY3RpdmVDb250
ZXh0TWVudSkKLSAgICAgICAgcmV0dXJuOworICAgIG1fYWN0aXZlQ29udGV4dE1lbnUgPSBtX3Bh
Z2VDbGllbnQuY3JlYXRlQ29udGV4dE1lbnVQcm94eSgqdGhpcywgV1RGTW92ZShjb250ZXh0TWVu
dUNvbnRleHREYXRhKSwgdXNlckRhdGEpOwogCiAgICAgLy8gU2luY2Ugc2hvd0NvbnRleHRNZW51
KCkgY2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxvb3Agd2UgbmVlZCB0byB0dXJuIG9mZiB0aGUgcmVz
cG9uc2l2ZW5lc3MgdGltZXIuCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCku
c3RvcCgpOwpAQCAtNDc0Nyw2ICs0NzM3LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmludGVybmFs
U2hvd0NvbnRleHRNZQogICAgIC8vIG1fYWN0aXZlQ29udGV4dE1lbnUgbWlnaHQgZ2V0IGNsZWFy
ZWQgaWYgV2ViUGFnZVByb3h5IGNvZGUgaXMgcmUtZW50ZXJlZCBmcm9tIHRoZSBtZW51IHJ1bmxv
b3Agb3IgZGVsZWdhdGVzLgogICAgIFJlZjxXZWJDb250ZXh0TWVudVByb3h5PiBwcm90ZWN0b3Io
Km1fYWN0aXZlQ29udGV4dE1lbnUpOwogICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPnNob3coKTsK
KworICAgIC8vIE5vIG1hdHRlciB0aGUgcmVzdWx0IG9mIGludGVybmFsU2hvd0NvbnRleHRNZW51
LCBhbHdheXMgbm90aWZ5IHRoZSBXZWJQcm9jZXNzIHRoYXQgdGhlIG1lbnUgaXMgaGlkZGVuIHNv
IGl0IHN0YXJ0cyBoYW5kbGluZyBtb3VzZSBldmVudHMgYWdhaW4uCisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUhpZGRlbigpLCBtX3BhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJD
b250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgJKHJldmlzaW9uIDIyNjIxMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU5LDggKzE0NTksNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgaGlkZVBvcHVwTWVudSgpOwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCi0gICAgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0
YSYsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBpbnRlcm5hbFNob3dDb250ZXh0TWVudShj
b25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lk
IHNob3dDb250ZXh0TWVudShDb250ZXh0TWVudUNvbnRleHREYXRhJiYsIGNvbnN0IFVzZXJEYXRh
Jik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNs
aWVudC5oCShyZXZpc2lvbiAyMjYyMTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGV4dE1lbnVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQVBJQ29u
dGV4dE1lbnVDbGllbnRfaAotI2RlZmluZSBBUElDb250ZXh0TWVudUNsaWVudF9oCisjcHJhZ21h
IG9uY2UKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCkBAIC01MiwxMCArNTEsMTAgQEAg
Y2xhc3MgQ29udGV4dE1lbnVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbnRleHRN
ZW51Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJv
cG9zZWRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJL
aXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiAvKiBwcm9wb3NlZE1lbnUgKi8sIFZlY3RvcjxSZWZQ
dHI8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgLyogY3VzdG9tTWVudSAqLywgY29uc3Qg
V2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIEFQSTo6T2JqZWN0KiAvKiB1c2VyRGF0YSAq
LykgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9t
UHJvcG9zZWRNZW51QXN5bmMoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBWZWN0b3I8UmVm
UHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mIC8qIHByb3Bvc2VkTWVudSAqLywgV2Vi
S2l0OjpXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkqLCBjb25zdCBXZWJLaXQ6OldlYkhpdFRl
c3RSZXN1bHREYXRhJiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6V2ViQ29udGV4dE1l
bnVJdGVtPj4mIC8qIHByb3Bvc2VkTWVudSAqLywgVmVjdG9yPFJlZjxXZWJLaXQ6OldlYkNvbnRl
eHRNZW51SXRlbT4+JiAvKiBjdXN0b21NZW51ICovLCBjb25zdCBXZWJLaXQ6OldlYkhpdFRlc3RS
ZXN1bHREYXRhJiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVBc3luYyhX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFZlY3RvcjxSZWY8V2ViS2l0OjpXZWJDb250ZXh0
TWVudUl0ZW0+PiYgLyogcHJvcG9zZWRNZW51ICovLCBXZWJLaXQ6OldlYkNvbnRleHRNZW51TGlz
dGVuZXJQcm94eSosIGNvbnN0IFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERhdGEmLCBBUEk6Ok9i
amVjdCogLyogdXNlckRhdGEgKi8pIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IGN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29u
c3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJikgeyB9Ci0gICAgdmlydHVhbCBib29s
IHNob3dDb250ZXh0TWVudShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+
JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvd0NvbnRleHRNZW51KFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0
b3I8UmVmPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mKSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBoaWRlQ29udGV4dE1lbnUoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7
IHJldHVybiBmYWxzZTsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjYsNCArNjUsMyBAQCBw
dWJsaWM6CiB9IC8vIG5hbWVzcGFjZSBBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01F
TlVTKQotI2VuZGlmIC8vIEFQSUNvbnRleHRNZW51Q2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMjI2MjExKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODE4
LDcgKzgxOCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEKICAg
ICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Q
cm9wb3NlZE1lbnUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYktp
dDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudVZlY3RvciwgVmVjdG9yPFJlZlB0
cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiBjdXN0b21NZW51LCBjb25zdCBXZWJIaXRU
ZXN0UmVzdWx0RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkg
b3ZlcnJpZGUKKyAgICAgICAgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV2Vi
UGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJ
dGVtPj4mIHByb3Bvc2VkTWVudVZlY3RvciwgVmVjdG9yPFJlZjxXZWJLaXQ6OldlYkNvbnRleHRN
ZW51SXRlbT4+JiBjdXN0b21NZW51LCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0VGVz
dFJlc3VsdERhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUg
JiYgIW1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9kZXByZWNhdGVkRm9y
VXNlV2l0aFYwKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgzMCwxMiArODMw
LDEyIEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEKICAgICAgICAg
ICAgIHByb3Bvc2VkTWVudUl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocHJvcG9zZWRNZW51
VmVjdG9yLnNpemUoKSk7CiAKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgbWVudUl0ZW0g
OiBwcm9wb3NlZE1lbnVWZWN0b3IpCi0gICAgICAgICAgICAgICAgcHJvcG9zZWRNZW51SXRlbXMu
dW5jaGVja2VkQXBwZW5kKG1lbnVJdGVtKTsKKyAgICAgICAgICAgICAgICBwcm9wb3NlZE1lbnVJ
dGVtcy51bmNoZWNrZWRBcHBlbmQobWVudUl0ZW0ucHRyKCkpOwogCiAgICAgICAgICAgICBXS0Fy
cmF5UmVmIG5ld01lbnUgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmJhc2Uu
dmVyc2lvbiA+PSAyKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3Vs
dD4gd2ViSGl0VGVzdFJlc3VsdCA9IEFQSTo6SGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RS
ZXN1bHREYXRhKTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Q
cm9wb3NlZE1lbnUodG9BUEkoJnBhZ2UpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92
ZShwcm9wb3NlZE1lbnVJdGVtcykpLnB0cigpKSwgJm5ld01lbnUsIHRvQVBJKHdlYkhpdFRlc3RS
ZXN1bHQuZ2V0KCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CisgICAgICAgICAgICAgICAgYXV0byB3ZWJIaXRUZXN0UmVzdWx0ID0gQVBJOjpIaXRUZXN0UmVz
dWx0OjpjcmVhdGUoaGl0VGVzdFJlc3VsdERhdGEpOworICAgICAgICAgICAgICAgIG1fY2xpZW50
LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0b0FQSSgmcGFnZSksIHRvQVBJKEFQSTo6
QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHByb3Bvc2VkTWVudUl0ZW1zKSkucHRyKCkpLCAmbmV3TWVu
dSwgdG9BUEkod2ViSGl0VGVzdFJlc3VsdC5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
IG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwKHRvQVBJKCZwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUocHJv
cG9zZWRNZW51SXRlbXMpKS5wdHIoKSksICZuZXdNZW51LCB0b0FQSSh1c2VyRGF0YSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiAKQEAgLTg1MSwxMyArODUxLDEzIEBAIHZvaWQgV0tQYWdl
U2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgY3VzdG9tTWVudS5hcHBl
bmQoaXRlbSk7CisgICAgICAgICAgICAgICAgY3VzdG9tTWVudS5hcHBlbmQoKml0ZW0pOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAg
ICAgIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5bmMoV2ViUGFnZVByb3h5
JiBwYWdlLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4m
IHByb3Bvc2VkTWVudVZlY3RvciwgV2ViS2l0OjpXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkq
IGNvbnRleHRNZW51TGlzdGVuZXIsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiBoaXRUZXN0
UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAgICBib29s
IGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5jKFdlYlBhZ2VQcm94eSYgcGFnZSwg
Y29uc3QgVmVjdG9yPFJlZjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiBwcm9wb3NlZE1l
bnVWZWN0b3IsIFdlYktpdDo6V2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5KiBjb250ZXh0TWVu
dUxpc3RlbmVyLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKG1fY2xpZW50LmJhc2UudmVyc2lvbiA8IDQgfHwgIW1fY2xpZW50LmdldENvbnRleHRNZW51
RnJvbVByb3Bvc2VkTWVudUFzeW5jKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTg2Niw3ICs4NjYsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1Bh
CiAgICAgICAgICAgICBwcm9wb3NlZE1lbnVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBy
b3Bvc2VkTWVudVZlY3Rvci5zaXplKCkpOwogCiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IG1lbnVJdGVtIDogcHJvcG9zZWRNZW51VmVjdG9yKQotICAgICAgICAgICAgICAgIHByb3Bvc2Vk
TWVudUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChtZW51SXRlbSk7CisgICAgICAgICAgICAgICAgcHJv
cG9zZWRNZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKG1lbnVJdGVtLnB0cigpKTsKIAogICAgICAg
ICAgICAgUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4gd2ViSGl0VGVzdFJlc3VsdCA9IEFQSTo6
SGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1bHREYXRhKTsKICAgICAgICAgICAgIG1f
Y2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5jKHRvQVBJKCZwYWdlKSwg
dG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUocHJvcG9zZWRNZW51SXRlbXMpKS5wdHIo
KSksIHRvQVBJKGNvbnRleHRNZW51TGlzdGVuZXIpLCB0b0FQSSh3ZWJIaXRUZXN0UmVzdWx0Lmdl
dCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwpAQCAtODgy
LDcgKzg4Miw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEKICAg
ICAgICAgICAgIG1fY2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKHRvQVBJKCZw
YWdlKSwgdG9BUEkoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbURhdGEpLnB0cigpKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgc2hv
d0NvbnRleHRNZW51KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IG1lbnVMb2NhdGlvbiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+PiYg
bWVudUl0ZW1zVmVjdG9yKSBvdmVycmlkZQorICAgICAgICBib29sIHNob3dDb250ZXh0TWVudShX
ZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24s
IGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mIG1lbnVJdGVtc1ZlY3Rvcikg
b3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5zaG93Q29udGV4
dE1lbnUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODkxLDcgKzg5MSw3IEBA
IHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEKICAgICAgICAgICAgIG1l
bnVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1lbnVJdGVtc1ZlY3Rvci5zaXplKCkpOwog
CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG1lbnVJdGVtIDogbWVudUl0ZW1zVmVjdG9y
KQotICAgICAgICAgICAgICAgIG1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQobWVudUl0ZW0pOwor
ICAgICAgICAgICAgICAgIG1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQobWVudUl0ZW0ucHRyKCkp
OwogCiAgICAgICAgICAgICBtX2NsaWVudC5zaG93Q29udGV4dE1lbnUodG9BUEkoJnBhZ2UpLCB0
b0FQSShtZW51TG9jYXRpb24pLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShtZW51
SXRlbXMpKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250
ZXh0TWVudUNsaWVudC5jcHAJKHJldmlzaW9uIDIyNjIxMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wg
Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudSwgVmVjdG9yPFJlZlB0
cjxXZWJDb250ZXh0TWVudUl0ZW0+PiYsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiBoaXRU
ZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQorICAgIGJvb2wg
Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFZlY3Rv
cjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudSwgVmVjdG9yPFJlZjxXZWJD
b250ZXh0TWVudUl0ZW0+PiYsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiBoaXRUZXN0UmVz
dWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
R1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudDsKICAgICAgICAgaWYgKHVzZXJEYXRhKSB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcAkocmV2aXNpb24gMjI2MjExKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw5ICsyMTEsOSBAQCBS
ZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsCiAgICAgcmV0dXJuIFdlYlBv
cHVwTWVudVByb3h5R3RrOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlKTsKIH0KIAotUmVmUHRy
PFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVBy
b3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYgY29u
dGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQorUmVmPFdlYkNvbnRleHRNZW51UHJveHk+
IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYgcGFn
ZSwgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSkKIHsKLSAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eUd0azo6Y3JlYXRlKG1fdmll
d1dpZGdldCwgcGFnZSwgY29udGV4dCwgdXNlckRhdGEpOworICAgIHJldHVybiBXZWJDb250ZXh0
TWVudVByb3h5R3RrOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlLCBXVEZNb3ZlKGNvbnRleHQp
LCB1c2VyRGF0YSk7CiB9CiAKIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gUGFnZUNsaWVudEltcGw6
OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6Q29s
b3ImIGNvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24g
MjI2MjExKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViUG9w
dXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRl
OwotICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25zdCBVc2Vy
RGF0YSYpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250
ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEm
LCBjb25zdCBVc2VyRGF0YSYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQogICAgIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVBy
b3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGludGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAyMjYyMTEpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlNjcm9sbEdlc3R1cmVDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiV1BFVmlldy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51
UHJveHkuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5V1BFLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgogCkBAIC0yMzAsOSArMjMxLDkgQEAgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdl
Q2xpZW50SW1wbAogfQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi1SZWZQdHI8V2ViQ29u
dGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2Vi
UGFnZVByb3h5JiwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRh
JikKK1JlZjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4
dE1lbnVQcm94eShXZWJQYWdlUHJveHkmLCBDb250ZXh0TWVudUNvbnRleHREYXRhJiYsIGNvbnN0
IFVzZXJEYXRhJikKIHsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gV2ViQ29udGV4
dE1lbnVQcm94eVdQRTo6Y3JlYXRlKFdURk1vdmUoY29udGV4dCksIHVzZXJEYXRhKTsKIH0KICNl
bmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdl
Q2xpZW50SW1wbC5oCShyZXZpc2lvbiAyMjYyMTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcg
QEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBN
ZW51UHJveHkoV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCi0gICAgUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJv
eHkoV2ViUGFnZVByb3h5JiwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFVz
ZXJEYXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNv
bnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5JiwgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmLCBj
b25zdCBVc2VyRGF0YSYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2b2lkIGVudGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0
TWVudVByb3h5R3RrLmNwcAkocmV2aXNpb24gMjI2MjExKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzUsMTIgKzE3NSwxMiBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OnNob3coKQogICAg
ICAgICAgICAgICAgICAgIGV2ZW50ID8gZXZlbnQtPmJ1dHRvbi5idXR0b24gOiAzLCBldmVudCA/
IGV2ZW50LT5idXR0b24udGltZSA6IEdES19DVVJSRU5UX1RJTUUpOwogfQogCi12b2lkIFdlYkNv
bnRleHRNZW51UHJveHlHdGs6OnNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhjb25zdCBWZWN0b3I8
V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQordm9pZCBXZWJDb250ZXh0TWVudVByb3h5
R3RrOjpzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURh
dGE+JiYpCiB7CiB9CiAKLVdlYkNvbnRleHRNZW51UHJveHlHdGs6OldlYkNvbnRleHRNZW51UHJv
eHlHdGsoR3RrV2lkZ2V0KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IENvbnRl
eHRNZW51Q29udGV4dERhdGEmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKLSAg
ICA6IFdlYkNvbnRleHRNZW51UHJveHkoY29udGV4dCwgdXNlckRhdGEpCitXZWJDb250ZXh0TWVu
dVByb3h5R3RrOjpXZWJDb250ZXh0TWVudVByb3h5R3RrKEd0a1dpZGdldCogd2ViVmlldywgV2Vi
UGFnZVByb3h5JiBwYWdlLCBDb250ZXh0TWVudUNvbnRleHREYXRhJiYgY29udGV4dCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQorICAgIDogV2ViQ29udGV4dE1lbnVQcm94eShXVEZNb3ZlKGNv
bnRleHQpLCB1c2VyRGF0YSkKICAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQogICAgICwgbV9wYWdl
KCZwYWdlKQogICAgICwgbV9tZW51KEdUS19NRU5VKGd0a19tZW51X25ldygpKSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlH
dGsuaAkocmV2aXNpb24gMjI2MjExKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dl
YkNvbnRleHRNZW51UHJveHlHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29u
dGV4dE1lbnVQcm94eUd0a19oCi0jZGVmaW5lIFdlYkNvbnRleHRNZW51UHJveHlHdGtfaAorI3By
YWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIApAQCAtNDQsOSArNDMsOSBA
QCBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkNvbnRleHRNZW51UHJveHlHdGsgOiBw
dWJsaWMgV2ViQ29udGV4dE1lbnVQcm94eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3Jl
YXRlKEd0a1dpZGdldCogd2lkZ2V0LCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IENvbnRleHRN
ZW51Q29udGV4dERhdGEmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAgICBz
dGF0aWMgYXV0byBjcmVhdGUoR3RrV2lkZ2V0KiB3aWRnZXQsIFdlYlBhZ2VQcm94eSYgcGFnZSwg
Q29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvbnRleHRNZW51UHJv
eHlHdGsod2lkZ2V0LCBwYWdlLCBjb250ZXh0LCB1c2VyRGF0YSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJDb250ZXh0TWVudVByb3h5R3RrKHdpZGdldCwgcGFnZSwgV1RGTW92
ZShjb250ZXh0KSwgdXNlckRhdGEpKTsKICAgICB9CiAgICAgfldlYkNvbnRleHRNZW51UHJveHlH
dGsoKTsKIApAQCAtNTQsOSArNTMsOSBAQCBwdWJsaWM6CiAgICAgR3RrTWVudSogZ3RrTWVudSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVudTsgfQogCiBwcml2YXRlOgotICAgIFdlYkNvbnRleHRNZW51
UHJveHlHdGsoR3RrV2lkZ2V0KiwgV2ViUGFnZVByb3h5JiwgY29uc3QgQ29udGV4dE1lbnVDb250
ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgV2ViQ29udGV4dE1lbnVQcm94eUd0ayhH
dGtXaWRnZXQqLCBXZWJQYWdlUHJveHkmLCBDb250ZXh0TWVudUNvbnRleHREYXRhJiYsIGNvbnN0
IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzaG93KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzaG93Q29u
dGV4dE1lbnVXaXRoSXRlbXMoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFdlYkNv
bnRleHRNZW51SXRlbURhdGE+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYXBwZW5kKEdNZW51Kiwg
Y29uc3QgV2ViQ29udGV4dE1lbnVJdGVtR2xpYiYpOwogICAgIEdSZWZQdHI8R01lbnU+IGJ1aWxk
TWVudShjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4mKTsKICAgICB2b2lkIHBv
cHVsYXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVtPj4mKTsKQEAgLTcz
LDQgKzcyLDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
RU5BQkxFKENPTlRFWFRfTUVOVVMpCi0jZW5kaWYgLy8gV2ViQ29udGV4dE1lbnVQcm94eUd0a19o
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaAkocmV2aXNpb24gMjI2MjExKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDkgKzk0LDYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50
JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgUmVmUHRyPFdl
YlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkmKSBvdmVy
cmlkZTsKLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBSZWZQdHI8V2ViQ29udGV4dE1l
bnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkmLCBjb25zdCBDb250
ZXh0TWVudUNvbnRleHREYXRhJiwgY29uc3QgVXNlckRhdGEmKSBvdmVycmlkZTsKLSNlbmRpZgog
ICAgIFJlZjxXZWJDb3JlOjpWYWxpZGF0aW9uQnViYmxlPiBjcmVhdGVWYWxpZGF0aW9uQnViYmxl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgV2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZTo6
U2V0dGluZ3MmKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0VGV4dEluZGljYXRvcihSZWY8V2ViQ29y
ZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZSkg
b3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tCShyZXZpc2lvbiAyMjYyMTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0OCwxMyAr
NDQ4LDYgQEAgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi1SZWZQdHI8V2Vi
Q29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHko
V2ViUGFnZVByb3h5JiwgY29uc3QgVXNlckRhdGEmKQotewotICAgIHJldHVybiBudWxscHRyOwot
fQotI2VuZGlmCi0KIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFRleHRJbmRpY2F0b3IoUmVmPFRl
eHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3IsIFRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZSkK
IHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5oCShyZXZpc2lvbiAyMjYyMTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBA
IHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVu
dVByb3h5KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQotICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25zdCBVc2Vy
RGF0YSYpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250
ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51Q29udGV4dERhdGEmJiwgY29u
c3QgVXNlckRhdGEmKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tCShyZXZpc2lvbiAyMjYyMTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0OCw5ICs0NDgs
OSBAQCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsCiB9CiAKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKLVJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0
IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKK1JlZjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4
dE1lbnVQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIENvbnRleHRNZW51Q29udGV4dERhdGEmJiBj
b250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgcmV0dXJuIFdlYkNvbnRl
eHRNZW51UHJveHlNYWM6OmNyZWF0ZShtX3ZpZXcsIHBhZ2UsIGNvbnRleHQsIHVzZXJEYXRhKTsK
KyAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlKG1fdmlldywgcGFnZSwg
V1RGTW92ZShjb250ZXh0KSwgdXNlckRhdGEpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaAko
cmV2aXNpb24gMjI2MjExKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRl
eHRNZW51UHJveHlNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTQgKzQ3LDE0IEBAIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eU1hYyA6IHB1YmxpYyBX
ZWJDb250ZXh0TWVudVByb3h5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBjcmVhdGUoTlNW
aWV3KiB2aWV3LCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERh
dGEmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAgICBzdGF0aWMgYXV0byBj
cmVhdGUoTlNWaWV3KiB2aWV3LCBXZWJQYWdlUHJveHkmIHBhZ2UsIENvbnRleHRNZW51Q29udGV4
dERhdGEmJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb250ZXh0TWVudVByb3h5TWFjKHZpZXcsIHBhZ2Us
IGNvbnRleHQsIHVzZXJEYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNv
bnRleHRNZW51UHJveHlNYWModmlldywgcGFnZSwgV1RGTW92ZShjb250ZXh0KSwgdXNlckRhdGEp
KTsKICAgICB9CiAgICAgfldlYkNvbnRleHRNZW51UHJveHlNYWMoKTsKIAogICAgIHZvaWQgY29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYpOwotICAg
IHZvaWQgc2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhPiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvd0NvbnRleHRNZW51V2l0aEl0ZW1z
KFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYmKSBvdmVycmlkZTsKIAogI2lmIEVOQUJM
RShTRVJWSUNFX0NPTlRST0xTKQogICAgIHZvaWQgY2xlYXJTZXJ2aWNlc01lbnUoKTsKQEAgLTY0
LDcgKzY0LDcgQEAgcHVibGljOgogICAgIE5TV2luZG93ICp3aW5kb3coKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBXZWJDb250ZXh0TWVudVByb3h5TWFjKE5TVmlldyosIFdlYlBhZ2VQcm94eSYs
IGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25zdCBVc2VyRGF0YSYpOworICAgIFdl
YkNvbnRleHRNZW51UHJveHlNYWMoTlNWaWV3KiwgV2ViUGFnZVByb3h5JiwgQ29udGV4dE1lbnVD
b250ZXh0RGF0YSYmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc2hvdygpIG92ZXJyaWRl
OwogCiAgICAgUmVmUHRyPFdlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eT4gbV9jb250ZXh0TWVu
dUxpc3RlbmVyOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRN
ZW51UHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0JKHJldmlzaW9uIDIyNjIxMSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTIsOCArMTUyLDggQEAgLSAodm9pZClmb3J3YXJkQ29udGV4dE1lbnVBY3Rpb246
KGlkKXNlbgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
V2ViQ29udGV4dE1lbnVQcm94eU1hYyhOU1ZpZXcqIHdlYlZpZXcsIFdlYlBhZ2VQcm94eSYgcGFn
ZSwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYgY29udGV4dCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQotICAgIDogV2ViQ29udGV4dE1lbnVQcm94eShjb250ZXh0LCB1c2VyRGF0YSkK
K1dlYkNvbnRleHRNZW51UHJveHlNYWM6OldlYkNvbnRleHRNZW51UHJveHlNYWMoTlNWaWV3KiB3
ZWJWaWV3LCBXZWJQYWdlUHJveHkmIHBhZ2UsIENvbnRleHRNZW51Q29udGV4dERhdGEmJiBjb250
ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCisgICAgOiBXZWJDb250ZXh0TWVudVByb3h5
KFdURk1vdmUoY29udGV4dCksIHVzZXJEYXRhKQogICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCiAg
ICAgLCBtX3BhZ2UocGFnZSkKIHsKQEAgLTQ1MSw3ICs0NTEsNyBAQCBSZXRhaW5QdHI8TlNNZW51
SXRlbT4gV2ViQ29udGV4dE1lbnVQcm94CiAgICAgfQogfQogCi12b2lkIFdlYkNvbnRleHRNZW51
UHJveHlNYWM6OnNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29udGV4
dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQordm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93
Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiYgaXRl
bXMpCiB7CiAgICAgYXV0byBtZW51ID0gY3JlYXRlQ29udGV4dE1lbnVGcm9tSXRlbXMoaXRlbXMp
OwogICAgIFtbV0tNZW51VGFyZ2V0IHNoYXJlZE1lbnVUYXJnZXRdIHNldE1lbnVQcm94eTp0aGlz
XTsKQEAgLTQ2OSwxMSArNDY5LDExIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2hv
d0NvbnRleHQKIAogdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29udGV4dE1lbnUo
KQogewotICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVtPj4gcHJvcG9zZWRBUElJ
dGVtczsKKyAgICBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+IHByb3Bvc2VkQVBJSXRl
bXM7CiAgICAgZm9yIChhdXRvJiBpdGVtIDogbV9jb250ZXh0Lm1lbnVJdGVtcygpKQogICAgICAg
ICBwcm9wb3NlZEFQSUl0ZW1zLmFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShpdGVt
KSk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4+IGNsaWVudEl0ZW1z
OworICAgIFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4gY2xpZW50SXRlbXM7CiAgICAg
Ym9vbCB1c2VQcm9wb3NlZEl0ZW1zID0gdHJ1ZTsKIAogICAgIGlmIChtX2NvbnRleHRNZW51TGlz
dGVuZXIpIHsKQEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6
OnNob3dDb250ZXh0CiAgICAgaWYgKGl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKGl0ZW1zKTsKKyAgICBzaG93Q29udGV4dE1l
bnVXaXRoSXRlbXMoV1RGTW92ZShpdGVtcykpOwogfQogCiBOU1dpbmRvdyAqV2ViQ29udGV4dE1l
bnVQcm94eU1hYzo6d2luZG93KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dwZS9XZWJDb250ZXh0TWVudVByb3h5V1BFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd3BlL1dlYkNvbnRleHRNZW51UHJveHlXUEUuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViQ29udGV4dE1lbnVQcm94eVdQRS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJveHlXUEUgOiBwdWJsaWMgV2ViQ29udGV4dE1lbnVQ
cm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIGF1dG8gY3JlYXRlKENvbnRleHRNZW51Q29udGV4
dERhdGEmJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb250ZXh0TWVudVByb3h5V1BFKFdURk1vdmUoY29u
dGV4dCksIHVzZXJEYXRhKSk7CisgICAgfQorCisgICAgdm9pZCBzaG93Q29udGV4dE1lbnVXaXRo
SXRlbXMoVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiYpIGZpbmFsIHsgfQorICAgIHZv
aWQgc2hvdygpIGZpbmFsIHsgfTsKKworcHJpdmF0ZToKKyAgICBXZWJDb250ZXh0TWVudVByb3h5
V1BFKENvbnRleHRNZW51Q29udGV4dERhdGEmJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCisgICAgICAgIDogV2ViQ29udGV4dE1lbnVQcm94eShXVEZNb3ZlKGNvbnRleHQpLCB1
c2VyRGF0YSkKKyAgICB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330001</attachid>
            <date>2017-12-20 20:42:48 -0800</date>
            <delta_ts>2017-12-20 20:48:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181074-20171220204247.patch</filename>
            <type>text/plain</type>
            <size>33382</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjYyMTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE3LTEyLTIwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAgY29u
dGV4dCBtZW51IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MTA3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBSZWYgaW5zdGVhZCBvZiBSZWZQdHIgd2hlcmUgcG9zc2libGUuCisgICAgICAg
IFVzZSBtb3ZlIHNlbWFudGljcyBpbnN0ZWFkIG9mIGNvcHlpbmcgZnJvbSBjb25zdCByZWZlcmVu
Y2VzIHdoZW4gcG9zc2libGUuCisgICAgICAgIFJlbW92ZSBkZWFkIGlPUyBjb2RlLiAgUmVkdWNl
IGFsbG9jYXRpb25zLiAgQWRkIHN0dWIgZm9yIFdQRS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGll
bnQ6OmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSk6CisgICAgICAgIChBUEk6OkNvbnRl
eHRNZW51Q2xpZW50OjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVBc3luYyk6CisgICAg
ICAgIChBUEk6OkNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUNvbnRl
eHRNZW51Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVu
dVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRl
eHRNZW51TGlzdGVuZXJQcm94eTo6dXNlQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0TWVudVByb3h5OjpXZWJDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQ29udGV4dE1lbnVQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudVByb3h5R3RrOjpzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5R3RrOjpXZWJDb250ZXh0TWVudVByb3h5
R3RrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUd0azo6Y3JlYXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0
TWVudVByb3h5TWFjLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6
OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpXZWJDb250ZXh0
TWVudVByb3h5TWFjKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eU1hYzo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxNy0xMi0yMCAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1dIEFkZCBz
Y3JlZW4gY2FwdHVyZSBJREwgYW5kIHN0dWIgZnVuY3Rpb25zCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtV1BFLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
UEUuY21ha2UJKHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUu
Y21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQyMSw2ICs0MjEsNyBAQCBsaXN0KEFQUEVORCBXZWJL
aXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9nc3Ry
ZWFtZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL2xpbnV4IgogICAgICIke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgorICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy93cGUi
CiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYiIK
ICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUiCiAg
ICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9zb3VwIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVw
TWVudVByb3h5KFdlYlBhZ2VQcm94eSYpID0gMDsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
LSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVu
dVByb3h5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25z
dCBVc2VyRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxXZWJDb250ZXh0TWVudVByb3h5PiBj
cmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51Q29udGV4dERh
dGEmJiwgY29uc3QgVXNlckRhdGEmKSA9IDA7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVM
aXN0ZW5lclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuY3BwCShyZXZpc2lvbiAyMjYxOTUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MywxOCArNTMsMTggQEAgdm9pZCBXZWJDb250ZXh0TWVudUxpc3RlbmVy
UHJveHk6OnVzZUNvbgogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8QVBJOjpBcnJheT4g
YXJyYXkgPSB0b0ltcGwoaXRlbXMpOwotICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRh
PiBkYXRhSXRlbXM7Ci0KICAgICBzaXplX3QgbmV3U2l6ZSA9IGFycmF5ID8gYXJyYXktPnNpemUo
KSA6IDA7CisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGRhdGFJdGVtczsKKyAg
ICBkYXRhSXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuZXdTaXplKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG5ld1NpemU7ICsraSkgewogICAgICAgICBXZWJDb250ZXh0TWVudUl0
ZW0qIGl0ZW0gPSBhcnJheS0+YXQ8V2ViQ29udGV4dE1lbnVJdGVtPihpKTsKICAgICAgICAgaWYg
KCFpdGVtKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZGF0YUl0ZW1zLmFwcGVu
ZChpdGVtLT5kYXRhKCkpOworICAgICAgICBkYXRhSXRlbXMudW5jaGVja2VkQXBwZW5kKGl0ZW0t
PmRhdGEoKSk7CiAgICAgfQogCi0gICAgbV9jb250ZXh0TWVudU1hYy0+c2hvd0NvbnRleHRNZW51
V2l0aEl0ZW1zKGRhdGFJdGVtcyk7CisgICAgbV9jb250ZXh0TWVudU1hYy0+c2hvd0NvbnRleHRN
ZW51V2l0aEl0ZW1zKFdURk1vdmUoZGF0YUl0ZW1zKSk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1l
bnVMaXN0ZW5lclByb3h5OjppbnZhbGlkYXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkNvbnRleHRNZW51UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuY3BwCShyZXZpc2lvbiAyMjYxOTUpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViQ29udGV4
dE1lbnVQcm94eTo6V2ViQ29udGV4dE1lbnVQcm94eShjb25zdCBDb250ZXh0TWVudUNvbnRleHRE
YXRhJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCi0gICAgOiBtX2NvbnRleHQo
Y29udGV4dCkKK1dlYkNvbnRleHRNZW51UHJveHk6OldlYkNvbnRleHRNZW51UHJveHkoQ29udGV4
dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAg
ICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogICAgICwgbV91c2VyRGF0YSh1c2VyRGF0
YSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVu
dVByb3h5LmgJKHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkNvbnRleHRNZW51UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93KCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lk
IHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVt
RGF0YT4mIGl0ZW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudVdpdGhJ
dGVtcyhWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgV2ViQ29udGV4dE1lbnVQcm94eShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwg
Y29uc3QgVXNlckRhdGEmKTsKKyAgICBXZWJDb250ZXh0TWVudVByb3h5KENvbnRleHRNZW51Q29u
dGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEmKTsKIAogICAgIGNvbnN0IENvbnRleHRNZW51Q29u
dGV4dERhdGEgbV9jb250ZXh0OwogICAgIGNvbnN0IFVzZXJEYXRhIG1fdXNlckRhdGE7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIyNjE5
NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3MjIsMjQgKzQ3MjIsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVQb3B1
cE1lbnUoKQogfQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2hvd0NvbnRleHRNZW51KGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNvbnRleHRN
ZW51Q29udGV4dERhdGEsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzaG93Q29udGV4dE1lbnUoQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHRNZW51
Q29udGV4dERhdGEsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICAvLyBTaG93aW5n
IGEgY29udGV4dCBtZW51IHJ1bnMgYSBuZXN0ZWQgcnVubG9vcCwgd2hpY2ggY2FuIGhhbmRsZSBt
ZXNzYWdlcyB0aGF0IGNhdXNlIHx0aGlzfCB0byBnZXQgY2xvc2VkLgogICAgIFJlZjxXZWJQYWdl
UHJveHk+IHByb3RlY3QoKnRoaXMpOwogCi0gICAgaW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29u
dGV4dE1lbnVDb250ZXh0RGF0YSwgdXNlckRhdGEpOwotICAgIAotICAgIC8vIE5vIG1hdHRlciB0
aGUgcmVzdWx0IG9mIGludGVybmFsU2hvd0NvbnRleHRNZW51LCBhbHdheXMgbm90aWZ5IHRoZSBX
ZWJQcm9jZXNzIHRoYXQgdGhlIG1lbnUgaXMgaGlkZGVuIHNvIGl0IHN0YXJ0cyBoYW5kbGluZyBt
b3VzZSBldmVudHMgYWdhaW4uCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDb250ZXh0TWVudUhpZGRlbigpLCBtX3BhZ2VJRCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5
OjppbnRlcm5hbFNob3dDb250ZXh0TWVudShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiBj
b250ZXh0TWVudUNvbnRleHREYXRhLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCi17CiAgICAg
bV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhID0gY29udGV4dE1lbnVDb250ZXh0RGF0YTsK
IAotICAgIG1fYWN0aXZlQ29udGV4dE1lbnUgPSBtX3BhZ2VDbGllbnQuY3JlYXRlQ29udGV4dE1l
bnVQcm94eSgqdGhpcywgY29udGV4dE1lbnVDb250ZXh0RGF0YSwgdXNlckRhdGEpOwotICAgIGlm
ICghbV9hY3RpdmVDb250ZXh0TWVudSkKLSAgICAgICAgcmV0dXJuOworICAgIG1fYWN0aXZlQ29u
dGV4dE1lbnUgPSBtX3BhZ2VDbGllbnQuY3JlYXRlQ29udGV4dE1lbnVQcm94eSgqdGhpcywgV1RG
TW92ZShjb250ZXh0TWVudUNvbnRleHREYXRhKSwgdXNlckRhdGEpOwogCiAgICAgLy8gU2luY2Ug
c2hvd0NvbnRleHRNZW51KCkgY2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxvb3Agd2UgbmVlZCB0byB0
dXJuIG9mZiB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuCiAgICAgbV9wcm9jZXNzLT5yZXNwb25z
aXZlbmVzc1RpbWVyKCkuc3RvcCgpOwpAQCAtNDc0Nyw2ICs0NzM3LDkgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZQogICAgIC8vIG1fYWN0aXZlQ29udGV4dE1lbnUg
bWlnaHQgZ2V0IGNsZWFyZWQgaWYgV2ViUGFnZVByb3h5IGNvZGUgaXMgcmUtZW50ZXJlZCBmcm9t
IHRoZSBtZW51IHJ1bmxvb3Agb3IgZGVsZWdhdGVzLgogICAgIFJlZjxXZWJDb250ZXh0TWVudVBy
b3h5PiBwcm90ZWN0b3IoKm1fYWN0aXZlQ29udGV4dE1lbnUpOwogICAgIG1fYWN0aXZlQ29udGV4
dE1lbnUtPnNob3coKTsKKworICAgIC8vIE5vIG1hdHRlciB0aGUgcmVzdWx0IG9mIGludGVybmFs
U2hvd0NvbnRleHRNZW51LCBhbHdheXMgbm90aWZ5IHRoZSBXZWJQcm9jZXNzIHRoYXQgdGhlIG1l
bnUgaXMgaGlkZGVuIHNvIGl0IHN0YXJ0cyBoYW5kbGluZyBtb3VzZSBldmVudHMgYWdhaW4uCisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUhpZGRlbigp
LCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU5LDgg
KzE0NTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGlkZVBvcHVwTWVudSgpOwogCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgQ29udGV4
dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBpbnRlcm5hbFNo
b3dDb250ZXh0TWVudShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwgY29uc3QgVXNlckRh
dGEmKTsKKyAgICB2b2lkIHNob3dDb250ZXh0TWVudShDb250ZXh0TWVudUNvbnRleHREYXRhJiYs
IGNvbnN0IFVzZXJEYXRhJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVS
X0RFVEVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0
TWVudUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElDb250ZXh0TWVudUNsaWVudC5oCShyZXZpc2lvbiAyMjYxOTUpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgQVBJQ29udGV4dE1lbnVDbGllbnRfaAotI2RlZmluZSBBUElDb250ZXh0TWVudUNs
aWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCkBAIC01
MiwxMCArNTEsMTAgQEAgY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgewogcHVibGljOgogICAgIHZp
cnR1YWwgfkNvbnRleHRNZW51Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29u
dGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgVmVj
dG9yPFJlZlB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiAvKiBwcm9wb3NlZE1lbnUg
Ki8sIFZlY3RvcjxSZWZQdHI8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgLyogY3VzdG9t
TWVudSAqLywgY29uc3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIEFQSTo6T2JqZWN0
KiAvKiB1c2VyRGF0YSAqLykgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0
Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5bmMoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBj
b25zdCBWZWN0b3I8UmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mIC8qIHByb3Bv
c2VkTWVudSAqLywgV2ViS2l0OjpXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkqLCBjb25zdCBX
ZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhJiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICov
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Q
cm9wb3NlZE1lbnUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBWZWN0b3I8UmVmPFdlYktp
dDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mIC8qIHByb3Bvc2VkTWVudSAqLywgVmVjdG9yPFJlZjxX
ZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiAvKiBjdXN0b21NZW51ICovLCBjb25zdCBXZWJL
aXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhJiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnVBc3luYyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFZlY3RvcjxSZWY8V2Vi
S2l0OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgLyogcHJvcG9zZWRNZW51ICovLCBXZWJLaXQ6Oldl
YkNvbnRleHRNZW51TGlzdGVuZXJQcm94eSosIGNvbnN0IFdlYktpdDo6V2ViSGl0VGVzdFJlc3Vs
dERhdGEmLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJikgeyB9Ci0g
ICAgdmlydHVhbCBib29sIHNob3dDb250ZXh0TWVudShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJLaXQ6OldlYkNv
bnRleHRNZW51SXRlbT4+JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hv
d0NvbnRleHRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mKSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBoaWRlQ29udGV4dE1lbnUoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAt
NjYsNCArNjUsMyBAQCBwdWJsaWM6CiB9IC8vIG5hbWVzcGFjZSBBUEkKIAogI2VuZGlmIC8vIEVO
QUJMRShDT05URVhUX01FTlVTKQotI2VuZGlmIC8vIEFQSUNvbnRleHRNZW51Q2xpZW50X2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMjI2
MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODE4LDcgKzgxOCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51
Q2xpZW50KFdLUGEKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBnZXRD
b250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudVZlY3Rv
ciwgVmVjdG9yPFJlZlB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiBjdXN0b21NZW51
LCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Q
cm9wb3NlZE1lbnUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6
V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudVZlY3RvciwgVmVjdG9yPFJlZjxXZWJL
aXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiBjdXN0b21NZW51LCBjb25zdCBXZWJIaXRUZXN0UmVz
dWx0RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJp
ZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZy
b21Qcm9wb3NlZE1lbnUgJiYgIW1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVu
dV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTgzMCwxMiArODMwLDEyIEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50
KFdLUGEKICAgICAgICAgICAgIHByb3Bvc2VkTWVudUl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkocHJvcG9zZWRNZW51VmVjdG9yLnNpemUoKSk7CiAKICAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgbWVudUl0ZW0gOiBwcm9wb3NlZE1lbnVWZWN0b3IpCi0gICAgICAgICAgICAgICAgcHJv
cG9zZWRNZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKG1lbnVJdGVtKTsKKyAgICAgICAgICAgICAg
ICBwcm9wb3NlZE1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQobWVudUl0ZW0ucHRyKCkpOwogCiAg
ICAgICAgICAgICBXS0FycmF5UmVmIG5ld01lbnUgPSBudWxscHRyOwogICAgICAgICAgICAgaWYg
KG1fY2xpZW50LmJhc2UudmVyc2lvbiA+PSAyKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQ
STo6SGl0VGVzdFJlc3VsdD4gd2ViSGl0VGVzdFJlc3VsdCA9IEFQSTo6SGl0VGVzdFJlc3VsdDo6
Y3JlYXRlKGhpdFRlc3RSZXN1bHREYXRhKTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5nZXRD
b250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodG9BUEkoJnBhZ2UpLCB0b0FQSShBUEk6OkFycmF5
OjpjcmVhdGUoV1RGTW92ZShwcm9wb3NlZE1lbnVJdGVtcykpLnB0cigpKSwgJm5ld01lbnUsIHRv
QVBJKHdlYkhpdFRlc3RSZXN1bHQuZ2V0KCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgYXV0byB3ZWJIaXRUZXN0UmVzdWx0ID0g
QVBJOjpIaXRUZXN0UmVzdWx0OjpjcmVhdGUoaGl0VGVzdFJlc3VsdERhdGEpOworICAgICAgICAg
ICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0b0FQSSgmcGFn
ZSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHByb3Bvc2VkTWVudUl0ZW1zKSku
cHRyKCkpLCAmbmV3TWVudSwgdG9BUEkod2ViSGl0VGVzdFJlc3VsdC5wdHIoKSksIHRvQVBJKHVz
ZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3Jl
YXRlKFdURk1vdmUocHJvcG9zZWRNZW51SXRlbXMpKS5wdHIoKSksICZuZXdNZW51LCB0b0FQSSh1
c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAKQEAgLTg1MSwxMyArODUxLDEz
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
Y3VzdG9tTWVudS5hcHBlbmQoaXRlbSk7CisgICAgICAgICAgICAgICAgY3VzdG9tTWVudS5hcHBl
bmQoKml0ZW0pOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogCi0gICAgICAgIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5
bmMoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudVZlY3RvciwgV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUxpc3RlbmVyUHJveHkqIGNvbnRleHRNZW51TGlzdGVuZXIsIGNvbnN0IFdlYkhpdFRlc3RSZXN1
bHREYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlk
ZQorICAgICAgICBib29sIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5jKFdlYlBh
Z2VQcm94eSYgcGFnZSwgY29uc3QgVmVjdG9yPFJlZjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRl
bT4+JiBwcm9wb3NlZE1lbnVWZWN0b3IsIFdlYktpdDo6V2ViQ29udGV4dE1lbnVMaXN0ZW5lclBy
b3h5KiBjb250ZXh0TWVudUxpc3RlbmVyLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0
VGVzdFJlc3VsdERhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmJhc2UudmVyc2lvbiA8IDQgfHwgIW1fY2xpZW50
LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5jKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTg2Niw3ICs4NjYsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0
TWVudUNsaWVudChXS1BhCiAgICAgICAgICAgICBwcm9wb3NlZE1lbnVJdGVtcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHByb3Bvc2VkTWVudVZlY3Rvci5zaXplKCkpOwogCiAgICAgICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIG1lbnVJdGVtIDogcHJvcG9zZWRNZW51VmVjdG9yKQotICAgICAgICAg
ICAgICAgIHByb3Bvc2VkTWVudUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChtZW51SXRlbSk7CisgICAg
ICAgICAgICAgICAgcHJvcG9zZWRNZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKG1lbnVJdGVtLnB0
cigpKTsKIAogICAgICAgICAgICAgUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4gd2ViSGl0VGVz
dFJlc3VsdCA9IEFQSTo6SGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1bHREYXRhKTsK
ICAgICAgICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5j
KHRvQVBJKCZwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUocHJvcG9zZWRN
ZW51SXRlbXMpKS5wdHIoKSksIHRvQVBJKGNvbnRleHRNZW51TGlzdGVuZXIpLCB0b0FQSSh3ZWJI
aXRUZXN0UmVzdWx0LmdldCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwpAQCAtODgyLDcgKzg4Miw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51
Q2xpZW50KFdLUGEKICAgICAgICAgICAgIG1fY2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKHRvQVBJKCZwYWdlKSwgdG9BUEkoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRl
bURhdGEpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGJvb2wgc2hvd0NvbnRleHRNZW51KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb250
ZXh0TWVudUl0ZW0+PiYgbWVudUl0ZW1zVmVjdG9yKSBvdmVycmlkZQorICAgICAgICBib29sIHNo
b3dDb250ZXh0TWVudShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBtZW51TG9jYXRpb24sIGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mIG1l
bnVJdGVtc1ZlY3Rvcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5zaG93Q29udGV4dE1lbnUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
ODkxLDcgKzg5MSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEK
ICAgICAgICAgICAgIG1lbnVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1lbnVJdGVtc1Zl
Y3Rvci5zaXplKCkpOwogCiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG1lbnVJdGVtIDog
bWVudUl0ZW1zVmVjdG9yKQotICAgICAgICAgICAgICAgIG1lbnVJdGVtcy51bmNoZWNrZWRBcHBl
bmQobWVudUl0ZW0pOworICAgICAgICAgICAgICAgIG1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQo
bWVudUl0ZW0ucHRyKCkpOwogCiAgICAgICAgICAgICBtX2NsaWVudC5zaG93Q29udGV4dE1lbnUo
dG9BUEkoJnBhZ2UpLCB0b0FQSShtZW51TG9jYXRpb24pLCB0b0FQSShBUEk6OkFycmF5OjpjcmVh
dGUoV1RGTW92ZShtZW51SXRlbXMpKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRN
ZW51Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAJKHJldmlzaW9uIDIyNjE5NSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2
YXRlOgotICAgIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94
eSYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVu
dSwgVmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+PiYsIGNvbnN0IFdlYkhpdFRlc3RS
ZXN1bHREYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVy
cmlkZQorICAgIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94
eSYsIGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudSwg
VmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiYsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHRE
YXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudDsKICAgICAgICAgaWYgKHVz
ZXJEYXRhKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIx
MSw5ICsyMTEsOSBAQCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsCiAg
ICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5R3RrOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdl
KTsKIH0KIAotUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQ29udGV4dE1lbnVD
b250ZXh0RGF0YSYgY29udGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQorUmVmPFdlYkNv
bnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdl
YlBhZ2VQcm94eSYgcGFnZSwgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHQsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eUd0
azo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSwgY29udGV4dCwgdXNlckRhdGEpOworICAgIHJl
dHVybiBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlLCBX
VEZNb3ZlKGNvbnRleHQpLCB1c2VyRGF0YSk7CiB9CiAKIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4g
UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuaAkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBvdmVycmlkZTsKICAg
ICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQ
cm94eSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVD
b250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERh
dGEmLCBjb25zdCBVc2VyRGF0YSYpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb250ZXh0TWVudVBy
b3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51Q29u
dGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKICAgICBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2Vy
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAkocmV2aXNpb24g
MjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTY3JvbGxH
ZXN0dXJlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldQRVZpZXcuaCIKICNpbmNsdWRlICJXZWJD
b250ZXh0TWVudVByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eVdQRS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KIApAQCAtMjMwLDkgKzIzMSw5IEBAIFJlZlB0cjxXZWJQb3B1cE1lbnVQ
cm94eT4gUGFnZUNsaWVudEltcGwKIH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotUmVm
UHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVu
dVByb3h5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25z
dCBVc2VyRGF0YSYpCitSZWY8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNy
ZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5JiwgQ29udGV4dE1lbnVDb250ZXh0RGF0
YSYmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eVdQRTo6Y3JlYXRlKFdURk1vdmUo
Y29udGV4dCksIHVzZXJEYXRhKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAyMjYxOTUp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJQ
b3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Jikgb3ZlcnJp
ZGU7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgUmVmUHRyPFdlYkNvbnRleHRNZW51
UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5JiwgY29uc3QgQ29udGV4
dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFdl
YkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Jiwg
Q29udGV4dE1lbnVDb250ZXh0RGF0YSYmLCBjb25zdCBVc2VyRGF0YSYpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKICAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5
ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcAkocmV2aXNpb24gMjI2
MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlH
dGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMTMgKzE0MywxMyBAQCB2b2lkIFdlYkNvbnRl
eHRNZW51UHJveHlHdGs6OnBvcHVsYXRlKGNvCiAKIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUd0
azo6c2hvdygpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+PiBwcm9w
b3NlZEFQSUl0ZW1zOworICAgIFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4gcHJvcG9z
ZWRBUElJdGVtczsKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2NvbnRleHQubWVudUl0ZW1zKCkp
IHsKICAgICAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgIT0gQ29udGV4dE1lbnVJdGVtVGFnU2hhcmVN
ZW51KQogICAgICAgICAgICAgcHJvcG9zZWRBUElJdGVtcy5hcHBlbmQoV2ViQ29udGV4dE1lbnVJ
dGVtOjpjcmVhdGUoaXRlbSkpOwogICAgIH0KIAotICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29udGV4
dE1lbnVJdGVtPj4gY2xpZW50SXRlbXM7CisgICAgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0
ZW0+PiBjbGllbnRJdGVtczsKICAgICBib29sIHVzZVByb3Bvc2VkSXRlbXMgPSB0cnVlOwogCiAg
ICAgaWYgKG1fcGFnZS0+Y29udGV4dE1lbnVDbGllbnQoKS5nZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnUoKm1fcGFnZSwgcHJvcG9zZWRBUElJdGVtcywgY2xpZW50SXRlbXMsIG1fY29udGV4
dC53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLCBtX3BhZ2UtPnByb2Nlc3MoKS50cmFuc2Zvcm1IYW5k
bGVzVG9PYmplY3RzKG1fdXNlckRhdGEub2JqZWN0KCkpLmdldCgpKSkKQEAgLTE3NSwxMiArMTc1
LDEyIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUd0azo6c2hvdygpCiAgICAgICAgICAgICAg
ICAgICAgZXZlbnQgPyBldmVudC0+YnV0dG9uLmJ1dHRvbiA6IDMsIGV2ZW50ID8gZXZlbnQtPmJ1
dHRvbi50aW1lIDogR0RLX0NVUlJFTlRfVElNRSk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dE1lbnVQ
cm94eUd0azo6c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0
TWVudUl0ZW1EYXRhPiYgaXRlbXMpCit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OnNob3dD
b250ZXh0TWVudVdpdGhJdGVtcyhWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mJikKIHsK
IH0KIAotV2ViQ29udGV4dE1lbnVQcm94eUd0azo6V2ViQ29udGV4dE1lbnVQcm94eUd0ayhHdGtX
aWRnZXQqIHdlYlZpZXcsIFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQ29udGV4dE1lbnVDb250
ZXh0RGF0YSYgY29udGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQotICAgIDogV2ViQ29u
dGV4dE1lbnVQcm94eShjb250ZXh0LCB1c2VyRGF0YSkKK1dlYkNvbnRleHRNZW51UHJveHlHdGs6
OldlYkNvbnRleHRNZW51UHJveHlHdGsoR3RrV2lkZ2V0KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkm
IHBhZ2UsIENvbnRleHRNZW51Q29udGV4dERhdGEmJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCisgICAgOiBXZWJDb250ZXh0TWVudVByb3h5KFdURk1vdmUoY29udGV4dCksIHVz
ZXJEYXRhKQogICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBtX3BhZ2UoJnBhZ2UpCiAg
ICAgLCBtX21lbnUoR1RLX01FTlUoZ3RrX21lbnVfbmV3KCkpKQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oCShyZXZp
c2lvbiAyMjYxOTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1l
bnVQcm94eUd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJDb250ZXh0TWVudVBy
b3h5R3RrX2gKLSNkZWZpbmUgV2ViQ29udGV4dE1lbnVQcm94eUd0a19oCisjcHJhZ21hIG9uY2UK
IAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCkBAIC00NCw5ICs0Myw5IEBAIGNsYXNzIFdl
YlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eUd0ayA6IHB1YmxpYyBXZWJD
b250ZXh0TWVudVByb3h5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBjcmVhdGUoR3RrV2lk
Z2V0KiB3aWRnZXQsIFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0
RGF0YSYgY29udGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQorICAgIHN0YXRpYyBhdXRv
IGNyZWF0ZShHdGtXaWRnZXQqIHdpZGdldCwgV2ViUGFnZVByb3h5JiBwYWdlLCBDb250ZXh0TWVu
dUNvbnRleHREYXRhJiYgY29udGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29udGV4dE1lbnVQcm94eUd0ayh3aWRn
ZXQsIHBhZ2UsIGNvbnRleHQsIHVzZXJEYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkNvbnRleHRNZW51UHJveHlHdGsod2lkZ2V0LCBwYWdlLCBXVEZNb3ZlKGNvbnRleHQp
LCB1c2VyRGF0YSkpOwogICAgIH0KICAgICB+V2ViQ29udGV4dE1lbnVQcm94eUd0aygpOwogCkBA
IC01NCw5ICs1Myw5IEBAIHB1YmxpYzoKICAgICBHdGtNZW51KiBndGtNZW51KCkgY29uc3QgeyBy
ZXR1cm4gbV9tZW51OyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViQ29udGV4dE1lbnVQcm94eUd0ayhH
dGtXaWRnZXQqLCBXZWJQYWdlUHJveHkmLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwg
Y29uc3QgVXNlckRhdGEmKTsKKyAgICBXZWJDb250ZXh0TWVudVByb3h5R3RrKEd0a1dpZGdldCos
IFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51Q29udGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEm
KTsKICAgICB2b2lkIHNob3coKSBvdmVycmlkZTsKLSAgICB2b2lkIHNob3dDb250ZXh0TWVudVdp
dGhJdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhWZWN0b3I8V2ViQ29udGV4dE1lbnVJ
dGVtRGF0YT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcHBlbmQoR01lbnUqLCBjb25zdCBXZWJD
b250ZXh0TWVudUl0ZW1HbGliJik7CiAgICAgR1JlZlB0cjxHTWVudT4gYnVpbGRNZW51KGNvbnN0
IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1HbGliPiYpOwogICAgIHZvaWQgcG9wdWxhdGUoY29u
c3QgVmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+PiYpOwpAQCAtNzMsNCArNzIsMyBA
QCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKLSNlbmRpZiAvLyBXZWJDb250ZXh0TWVudVByb3h5R3RrX2gKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCShyZXZp
c2lvbiAyMjYxOTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsOSArOTQsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdh
c0V2ZW50SGFuZGxlZCkgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBSZWZQdHI8V2ViUG9wdXBNZW51
UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwotI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBj
cmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29u
dGV4dERhdGEmLCBjb25zdCBVc2VyRGF0YSYpIG92ZXJyaWRlOwotI2VuZGlmCiAgICAgUmVmPFdl
YkNvcmU6OlZhbGlkYXRpb25CdWJibGU+IGNyZWF0ZVZhbGlkYXRpb25CdWJibGUoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBXZWJDb3JlOjpWYWxpZGF0aW9uQnViYmxlOjpTZXR0aW5ncyYp
IGZpbmFsOwogCiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFJlZjxXZWJDb3JlOjpUZXh0SW5k
aWNhdG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lKSBvdmVycmlkZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0JKHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDEzICs0NDgsNiBAQCBS
ZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLVJlZlB0cjxXZWJDb250ZXh0TWVu
dVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJv
eHkmLCBjb25zdCBVc2VyRGF0YSYpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0jZW5kaWYK
LQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0VGV4dEluZGljYXRvcihSZWY8VGV4dEluZGljYXRv
cj4gdGV4dEluZGljYXRvciwgVGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lKQogewogfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgJ
KHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToK
IAogICAgIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2Vi
UGFnZVByb3h5Jikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgUmVm
UHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVBy
b3h5JiwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRhJikgb3Zl
cnJpZGU7CisgICAgUmVmPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJv
eHkoV2ViUGFnZVByb3h5JiwgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmLCBjb25zdCBVc2VyRGF0
YSYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
bW0JKHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDkgKzQ0OCw5IEBAIFJlZlB0
cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGwKIH0KIAogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQ29udGV4dE1l
bnVDb250ZXh0RGF0YSYgY29udGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQorUmVmPFdl
YkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcm94eSYgcGFnZSwgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHQsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94
eU1hYzo6Y3JlYXRlKG1fdmlldywgcGFnZSwgY29udGV4dCwgdXNlckRhdGEpOworICAgIHJldHVy
biBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpjcmVhdGUobV92aWV3LCBwYWdlLCBXVEZNb3ZlKGNv
bnRleHQpLCB1c2VyRGF0YSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCShyZXZpc2lvbiAy
MjYxOTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94
eU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNCArNDcsMTQgQEAgY2xhc3MgV2ViUGFnZVBy
b3h5OwogCiBjbGFzcyBXZWJDb250ZXh0TWVudVByb3h5TWFjIDogcHVibGljIFdlYkNvbnRleHRN
ZW51UHJveHkgewogcHVibGljOgotICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShOU1ZpZXcqIHZpZXcs
IFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYgY29udGV4
dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShOU1Zp
ZXcqIHZpZXcsIFdlYlBhZ2VQcm94eSYgcGFnZSwgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNv
bnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkNvbnRleHRNZW51UHJveHlNYWModmlldywgcGFnZSwgY29udGV4dCwg
dXNlckRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29udGV4dE1lbnVQ
cm94eU1hYyh2aWV3LCBwYWdlLCBXVEZNb3ZlKGNvbnRleHQpLCB1c2VyRGF0YSkpOwogICAgIH0K
ICAgICB+V2ViQ29udGV4dE1lbnVQcm94eU1hYygpOwogCiAgICAgdm9pZCBjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7Ci0gICAgdm9pZCBzaG93
Q29udGV4dE1lbnVXaXRoSXRlbXMoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFdl
YkNvbnRleHRNZW51SXRlbURhdGE+JiYpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
Q09OVFJPTFMpCiAgICAgdm9pZCBjbGVhclNlcnZpY2VzTWVudSgpOwpAQCAtNjQsNyArNjQsNyBA
QCBwdWJsaWM6CiAgICAgTlNXaW5kb3cgKndpbmRvdygpIGNvbnN0OwogCiBwcml2YXRlOgotICAg
IFdlYkNvbnRleHRNZW51UHJveHlNYWMoTlNWaWV3KiwgV2ViUGFnZVByb3h5JiwgY29uc3QgQ29u
dGV4dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgV2ViQ29udGV4dE1l
bnVQcm94eU1hYyhOU1ZpZXcqLCBXZWJQYWdlUHJveHkmLCBDb250ZXh0TWVudUNvbnRleHREYXRh
JiYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzaG93KCkgb3ZlcnJpZGU7CiAKICAgICBS
ZWZQdHI8V2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5PiBtX2NvbnRleHRNZW51TGlzdGVuZXI7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4
dE1lbnVQcm94eU1hYy5tbQkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1
Miw4ICsxNTIsOCBAQCAtICh2b2lkKWZvcndhcmRDb250ZXh0TWVudUFjdGlvbjooaWQpc2VuCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJDb250ZXh0TWVudVByb3h5TWFjOjpXZWJDb250ZXh0
TWVudVByb3h5TWFjKE5TVmlldyogd2ViVmlldywgV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBD
b250ZXh0TWVudUNvbnRleHREYXRhJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
Ci0gICAgOiBXZWJDb250ZXh0TWVudVByb3h5KGNvbnRleHQsIHVzZXJEYXRhKQorV2ViQ29udGV4
dE1lbnVQcm94eU1hYzo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyhOU1ZpZXcqIHdlYlZpZXcsIFdl
YlBhZ2VQcm94eSYgcGFnZSwgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHQsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAgICA6IFdlYkNvbnRleHRNZW51UHJveHkoV1RGTW92ZShj
b250ZXh0KSwgdXNlckRhdGEpCiAgICAgLCBtX3dlYlZpZXcod2ViVmlldykKICAgICAsIG1fcGFn
ZShwYWdlKQogewpAQCAtNDUxLDcgKzQ1MSw3IEBAIFJldGFpblB0cjxOU01lbnVJdGVtPiBXZWJD
b250ZXh0TWVudVByb3gKICAgICB9CiB9CiAKLXZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1E
YXRhPiYgaXRlbXMpCit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnNob3dDb250ZXh0TWVu
dVdpdGhJdGVtcyhWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mJiBpdGVtcykKIHsKICAg
ICBhdXRvIG1lbnUgPSBjcmVhdGVDb250ZXh0TWVudUZyb21JdGVtcyhpdGVtcyk7CiAgICAgW1tX
S01lbnVUYXJnZXQgc2hhcmVkTWVudVRhcmdldF0gc2V0TWVudVByb3h5OnRoaXNdOwpAQCAtNDY5
LDExICs0NjksMTEgQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29udGV4dAog
CiB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnNob3dDb250ZXh0TWVudSgpCiB7Ci0gICAg
VmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+PiBwcm9wb3NlZEFQSUl0ZW1zOworICAg
IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4gcHJvcG9zZWRBUElJdGVtczsKICAgICBm
b3IgKGF1dG8mIGl0ZW0gOiBtX2NvbnRleHQubWVudUl0ZW1zKCkpCiAgICAgICAgIHByb3Bvc2Vk
QVBJSXRlbXMuYXBwZW5kKFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKGl0ZW0pKTsKIAotICAg
IFZlY3RvcjxSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVtPj4gY2xpZW50SXRlbXM7CisgICAgVmVj
dG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiBjbGllbnRJdGVtczsKICAgICBib29sIHVzZVBy
b3Bvc2VkSXRlbXMgPSB0cnVlOwogCiAgICAgaWYgKG1fY29udGV4dE1lbnVMaXN0ZW5lcikgewpA
QCAtNTAwLDcgKzUwMCw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2hvd0NvbnRl
eHQKICAgICBpZiAoaXRlbXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzaG93
Q29udGV4dE1lbnVXaXRoSXRlbXMoaXRlbXMpOworICAgIHNob3dDb250ZXh0TWVudVdpdGhJdGVt
cyhXVEZNb3ZlKGl0ZW1zKSk7CiB9CiAKIE5TV2luZG93ICpXZWJDb250ZXh0TWVudVByb3h5TWFj
Ojp3aW5kb3coKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYkNv
bnRleHRNZW51UHJveHlXUEUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93cGUvV2ViQ29udGV4dE1lbnVQcm94eVdQRS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJDb250ZXh0TWVudVByb3h5V1BFLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViQ29udGV4dE1lbnVQcm94eVdQRSA6IHB1YmxpYyBXZWJDb250ZXh0TWVudVByb3h5IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNv
bnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkNvbnRleHRNZW51UHJveHlXUEUoV1RGTW92ZShjb250ZXh0KSwgdXNl
ckRhdGEpKTsKKyAgICB9CisKKyAgICB2b2lkIHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhWZWN0
b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mJikgZmluYWwgeyB9CisgICAgdm9pZCBzaG93KCkg
ZmluYWwgeyB9OworCitwcml2YXRlOgorICAgIFdlYkNvbnRleHRNZW51UHJveHlXUEUoQ29udGV4
dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAg
ICAgICAgOiBXZWJDb250ZXh0TWVudVByb3h5KFdURk1vdmUoY29udGV4dCksIHVzZXJEYXRhKQor
ICAgIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330002</attachid>
            <date>2017-12-20 20:48:08 -0800</date>
            <delta_ts>2017-12-20 21:16:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181074-20171220204807.patch</filename>
            <type>text/plain</type>
            <size>33683</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjYyMTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE3LTEyLTIwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAgY29u
dGV4dCBtZW51IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MTA3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBSZWYgaW5zdGVhZCBvZiBSZWZQdHIgd2hlcmUgcG9zc2libGUuCisgICAgICAg
IFVzZSBtb3ZlIHNlbWFudGljcyBpbnN0ZWFkIG9mIGNvcHlpbmcgZnJvbSBjb25zdCByZWZlcmVu
Y2VzIHdoZW4gcG9zc2libGUuCisgICAgICAgIFJlbW92ZSBkZWFkIGlPUyBjb2RlLiAgUmVkdWNl
IGFsbG9jYXRpb25zLiAgQWRkIHN0dWIgZm9yIFdQRS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGll
bnQ6OmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSk6CisgICAgICAgIChBUEk6OkNvbnRl
eHRNZW51Q2xpZW50OjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVBc3luYyk6CisgICAg
ICAgIChBUEk6OkNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUNvbnRl
eHRNZW51Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVu
dVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRl
eHRNZW51TGlzdGVuZXJQcm94eTo6dXNlQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0TWVudVByb3h5OjpXZWJDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQ29udGV4dE1lbnVQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudVByb3h5R3RrOjpzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5R3RrOjpXZWJDb250ZXh0TWVudVByb3h5
R3RrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUd0azo6Y3JlYXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0
TWVudVByb3h5TWFjLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6
OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpXZWJDb250ZXh0
TWVudVByb3h5TWFjKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eU1hYzo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxNy0xMi0yMCAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1dIEFkZCBz
Y3JlZW4gY2FwdHVyZSBJREwgYW5kIHN0dWIgZnVuY3Rpb25zCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtV1BFLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
UEUuY21ha2UJKHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUu
Y21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQyMSw2ICs0MjEsNyBAQCBsaXN0KEFQUEVORCBXZWJL
aXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9nc3Ry
ZWFtZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL2xpbnV4IgogICAgICIke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgorICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy93cGUi
CiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYiIK
ICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUiCiAg
ICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9zb3VwIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVw
TWVudVByb3h5KFdlYlBhZ2VQcm94eSYpID0gMDsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
LSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVu
dVByb3h5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25z
dCBVc2VyRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxXZWJDb250ZXh0TWVudVByb3h5PiBj
cmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51Q29udGV4dERh
dGEmJiwgY29uc3QgVXNlckRhdGEmKSA9IDA7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVM
aXN0ZW5lclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuY3BwCShyZXZpc2lvbiAyMjYxOTUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MywxOCArNTMsMTggQEAgdm9pZCBXZWJDb250ZXh0TWVudUxpc3RlbmVy
UHJveHk6OnVzZUNvbgogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8QVBJOjpBcnJheT4g
YXJyYXkgPSB0b0ltcGwoaXRlbXMpOwotICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRh
PiBkYXRhSXRlbXM7Ci0KICAgICBzaXplX3QgbmV3U2l6ZSA9IGFycmF5ID8gYXJyYXktPnNpemUo
KSA6IDA7CisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGRhdGFJdGVtczsKKyAg
ICBkYXRhSXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuZXdTaXplKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG5ld1NpemU7ICsraSkgewogICAgICAgICBXZWJDb250ZXh0TWVudUl0
ZW0qIGl0ZW0gPSBhcnJheS0+YXQ8V2ViQ29udGV4dE1lbnVJdGVtPihpKTsKICAgICAgICAgaWYg
KCFpdGVtKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZGF0YUl0ZW1zLmFwcGVu
ZChpdGVtLT5kYXRhKCkpOworICAgICAgICBkYXRhSXRlbXMudW5jaGVja2VkQXBwZW5kKGl0ZW0t
PmRhdGEoKSk7CiAgICAgfQogCi0gICAgbV9jb250ZXh0TWVudU1hYy0+c2hvd0NvbnRleHRNZW51
V2l0aEl0ZW1zKGRhdGFJdGVtcyk7CisgICAgbV9jb250ZXh0TWVudU1hYy0+c2hvd0NvbnRleHRN
ZW51V2l0aEl0ZW1zKFdURk1vdmUoZGF0YUl0ZW1zKSk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1l
bnVMaXN0ZW5lclByb3h5OjppbnZhbGlkYXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkNvbnRleHRNZW51UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuY3BwCShyZXZpc2lvbiAyMjYxOTUpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViQ29udGV4
dE1lbnVQcm94eTo6V2ViQ29udGV4dE1lbnVQcm94eShjb25zdCBDb250ZXh0TWVudUNvbnRleHRE
YXRhJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCi0gICAgOiBtX2NvbnRleHQo
Y29udGV4dCkKK1dlYkNvbnRleHRNZW51UHJveHk6OldlYkNvbnRleHRNZW51UHJveHkoQ29udGV4
dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAg
ICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogICAgICwgbV91c2VyRGF0YSh1c2VyRGF0
YSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVu
dVByb3h5LmgJKHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkNvbnRleHRNZW51UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93KCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lk
IHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVt
RGF0YT4mIGl0ZW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudVdpdGhJ
dGVtcyhWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgV2ViQ29udGV4dE1lbnVQcm94eShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwg
Y29uc3QgVXNlckRhdGEmKTsKKyAgICBXZWJDb250ZXh0TWVudVByb3h5KENvbnRleHRNZW51Q29u
dGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEmKTsKIAogICAgIGNvbnN0IENvbnRleHRNZW51Q29u
dGV4dERhdGEgbV9jb250ZXh0OwogICAgIGNvbnN0IFVzZXJEYXRhIG1fdXNlckRhdGE7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIyNjE5
NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3MjIsMjQgKzQ3MjIsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVQb3B1
cE1lbnUoKQogfQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2hvd0NvbnRleHRNZW51KGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNvbnRleHRN
ZW51Q29udGV4dERhdGEsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzaG93Q29udGV4dE1lbnUoQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHRNZW51
Q29udGV4dERhdGEsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICAvLyBTaG93aW5n
IGEgY29udGV4dCBtZW51IHJ1bnMgYSBuZXN0ZWQgcnVubG9vcCwgd2hpY2ggY2FuIGhhbmRsZSBt
ZXNzYWdlcyB0aGF0IGNhdXNlIHx0aGlzfCB0byBnZXQgY2xvc2VkLgogICAgIFJlZjxXZWJQYWdl
UHJveHk+IHByb3RlY3QoKnRoaXMpOwogCi0gICAgaW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29u
dGV4dE1lbnVDb250ZXh0RGF0YSwgdXNlckRhdGEpOwotICAgIAotICAgIC8vIE5vIG1hdHRlciB0
aGUgcmVzdWx0IG9mIGludGVybmFsU2hvd0NvbnRleHRNZW51LCBhbHdheXMgbm90aWZ5IHRoZSBX
ZWJQcm9jZXNzIHRoYXQgdGhlIG1lbnUgaXMgaGlkZGVuIHNvIGl0IHN0YXJ0cyBoYW5kbGluZyBt
b3VzZSBldmVudHMgYWdhaW4uCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDb250ZXh0TWVudUhpZGRlbigpLCBtX3BhZ2VJRCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5
OjppbnRlcm5hbFNob3dDb250ZXh0TWVudShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiBj
b250ZXh0TWVudUNvbnRleHREYXRhLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCi17CiAgICAg
bV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhID0gY29udGV4dE1lbnVDb250ZXh0RGF0YTsK
IAotICAgIG1fYWN0aXZlQ29udGV4dE1lbnUgPSBtX3BhZ2VDbGllbnQuY3JlYXRlQ29udGV4dE1l
bnVQcm94eSgqdGhpcywgY29udGV4dE1lbnVDb250ZXh0RGF0YSwgdXNlckRhdGEpOwotICAgIGlm
ICghbV9hY3RpdmVDb250ZXh0TWVudSkKLSAgICAgICAgcmV0dXJuOworICAgIG1fYWN0aXZlQ29u
dGV4dE1lbnUgPSBtX3BhZ2VDbGllbnQuY3JlYXRlQ29udGV4dE1lbnVQcm94eSgqdGhpcywgV1RG
TW92ZShjb250ZXh0TWVudUNvbnRleHREYXRhKSwgdXNlckRhdGEpOwogCiAgICAgLy8gU2luY2Ug
c2hvd0NvbnRleHRNZW51KCkgY2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxvb3Agd2UgbmVlZCB0byB0
dXJuIG9mZiB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuCiAgICAgbV9wcm9jZXNzLT5yZXNwb25z
aXZlbmVzc1RpbWVyKCkuc3RvcCgpOwpAQCAtNDc0Nyw2ICs0NzM3LDkgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZQogICAgIC8vIG1fYWN0aXZlQ29udGV4dE1lbnUg
bWlnaHQgZ2V0IGNsZWFyZWQgaWYgV2ViUGFnZVByb3h5IGNvZGUgaXMgcmUtZW50ZXJlZCBmcm9t
IHRoZSBtZW51IHJ1bmxvb3Agb3IgZGVsZWdhdGVzLgogICAgIFJlZjxXZWJDb250ZXh0TWVudVBy
b3h5PiBwcm90ZWN0b3IoKm1fYWN0aXZlQ29udGV4dE1lbnUpOwogICAgIG1fYWN0aXZlQ29udGV4
dE1lbnUtPnNob3coKTsKKworICAgIC8vIE5vIG1hdHRlciB0aGUgcmVzdWx0IG9mIGludGVybmFs
U2hvd0NvbnRleHRNZW51LCBhbHdheXMgbm90aWZ5IHRoZSBXZWJQcm9jZXNzIHRoYXQgdGhlIG1l
bnUgaXMgaGlkZGVuIHNvIGl0IHN0YXJ0cyBoYW5kbGluZyBtb3VzZSBldmVudHMgYWdhaW4uCisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUhpZGRlbigp
LCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU5LDgg
KzE0NTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGlkZVBvcHVwTWVudSgpOwogCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgQ29udGV4
dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBpbnRlcm5hbFNo
b3dDb250ZXh0TWVudShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwgY29uc3QgVXNlckRh
dGEmKTsKKyAgICB2b2lkIHNob3dDb250ZXh0TWVudShDb250ZXh0TWVudUNvbnRleHREYXRhJiYs
IGNvbnN0IFVzZXJEYXRhJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVS
X0RFVEVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0
TWVudUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElDb250ZXh0TWVudUNsaWVudC5oCShyZXZpc2lvbiAyMjYxOTUpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgQVBJQ29udGV4dE1lbnVDbGllbnRfaAotI2RlZmluZSBBUElDb250ZXh0TWVudUNs
aWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCkBAIC01
MiwxMCArNTEsMTAgQEAgY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgewogcHVibGljOgogICAgIHZp
cnR1YWwgfkNvbnRleHRNZW51Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29u
dGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgVmVj
dG9yPFJlZlB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiAvKiBwcm9wb3NlZE1lbnUg
Ki8sIFZlY3RvcjxSZWZQdHI8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgLyogY3VzdG9t
TWVudSAqLywgY29uc3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIEFQSTo6T2JqZWN0
KiAvKiB1c2VyRGF0YSAqLykgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0
Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5bmMoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBj
b25zdCBWZWN0b3I8UmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mIC8qIHByb3Bv
c2VkTWVudSAqLywgV2ViS2l0OjpXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkqLCBjb25zdCBX
ZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhJiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICov
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Q
cm9wb3NlZE1lbnUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBWZWN0b3I8UmVmPFdlYktp
dDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mIC8qIHByb3Bvc2VkTWVudSAqLywgVmVjdG9yPFJlZjxX
ZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiAvKiBjdXN0b21NZW51ICovLCBjb25zdCBXZWJL
aXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhJiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnVBc3luYyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFZlY3RvcjxSZWY8V2Vi
S2l0OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgLyogcHJvcG9zZWRNZW51ICovLCBXZWJLaXQ6Oldl
YkNvbnRleHRNZW51TGlzdGVuZXJQcm94eSosIGNvbnN0IFdlYktpdDo6V2ViSGl0VGVzdFJlc3Vs
dERhdGEmLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJikgeyB9Ci0g
ICAgdmlydHVhbCBib29sIHNob3dDb250ZXh0TWVudShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJLaXQ6OldlYkNv
bnRleHRNZW51SXRlbT4+JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hv
d0NvbnRleHRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mKSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBoaWRlQ29udGV4dE1lbnUoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAt
NjYsNCArNjUsMyBAQCBwdWJsaWM6CiB9IC8vIG5hbWVzcGFjZSBBUEkKIAogI2VuZGlmIC8vIEVO
QUJMRShDT05URVhUX01FTlVTKQotI2VuZGlmIC8vIEFQSUNvbnRleHRNZW51Q2xpZW50X2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMjI2
MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODE4LDcgKzgxOCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51
Q2xpZW50KFdLUGEKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBnZXRD
b250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudVZlY3Rv
ciwgVmVjdG9yPFJlZlB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiBjdXN0b21NZW51
LCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Q
cm9wb3NlZE1lbnUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6
V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudVZlY3RvciwgVmVjdG9yPFJlZjxXZWJL
aXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiBjdXN0b21NZW51LCBjb25zdCBXZWJIaXRUZXN0UmVz
dWx0RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJp
ZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZy
b21Qcm9wb3NlZE1lbnUgJiYgIW1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVu
dV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTgzMCwxMiArODMwLDEyIEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50
KFdLUGEKICAgICAgICAgICAgIHByb3Bvc2VkTWVudUl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkocHJvcG9zZWRNZW51VmVjdG9yLnNpemUoKSk7CiAKICAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgbWVudUl0ZW0gOiBwcm9wb3NlZE1lbnVWZWN0b3IpCi0gICAgICAgICAgICAgICAgcHJv
cG9zZWRNZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKG1lbnVJdGVtKTsKKyAgICAgICAgICAgICAg
ICBwcm9wb3NlZE1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQobWVudUl0ZW0ucHRyKCkpOwogCiAg
ICAgICAgICAgICBXS0FycmF5UmVmIG5ld01lbnUgPSBudWxscHRyOwogICAgICAgICAgICAgaWYg
KG1fY2xpZW50LmJhc2UudmVyc2lvbiA+PSAyKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQ
STo6SGl0VGVzdFJlc3VsdD4gd2ViSGl0VGVzdFJlc3VsdCA9IEFQSTo6SGl0VGVzdFJlc3VsdDo6
Y3JlYXRlKGhpdFRlc3RSZXN1bHREYXRhKTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5nZXRD
b250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodG9BUEkoJnBhZ2UpLCB0b0FQSShBUEk6OkFycmF5
OjpjcmVhdGUoV1RGTW92ZShwcm9wb3NlZE1lbnVJdGVtcykpLnB0cigpKSwgJm5ld01lbnUsIHRv
QVBJKHdlYkhpdFRlc3RSZXN1bHQuZ2V0KCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgYXV0byB3ZWJIaXRUZXN0UmVzdWx0ID0g
QVBJOjpIaXRUZXN0UmVzdWx0OjpjcmVhdGUoaGl0VGVzdFJlc3VsdERhdGEpOworICAgICAgICAg
ICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0b0FQSSgmcGFn
ZSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHByb3Bvc2VkTWVudUl0ZW1zKSku
cHRyKCkpLCAmbmV3TWVudSwgdG9BUEkod2ViSGl0VGVzdFJlc3VsdC5wdHIoKSksIHRvQVBJKHVz
ZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3Jl
YXRlKFdURk1vdmUocHJvcG9zZWRNZW51SXRlbXMpKS5wdHIoKSksICZuZXdNZW51LCB0b0FQSSh1
c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAKQEAgLTg1MSwxMyArODUxLDEz
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
Y3VzdG9tTWVudS5hcHBlbmQoaXRlbSk7CisgICAgICAgICAgICAgICAgY3VzdG9tTWVudS5hcHBl
bmQoKml0ZW0pOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogCi0gICAgICAgIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5
bmMoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudVZlY3RvciwgV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUxpc3RlbmVyUHJveHkqIGNvbnRleHRNZW51TGlzdGVuZXIsIGNvbnN0IFdlYkhpdFRlc3RSZXN1
bHREYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlk
ZQorICAgICAgICBib29sIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5jKFdlYlBh
Z2VQcm94eSYgcGFnZSwgY29uc3QgVmVjdG9yPFJlZjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRl
bT4+JiBwcm9wb3NlZE1lbnVWZWN0b3IsIFdlYktpdDo6V2ViQ29udGV4dE1lbnVMaXN0ZW5lclBy
b3h5KiBjb250ZXh0TWVudUxpc3RlbmVyLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0
VGVzdFJlc3VsdERhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmJhc2UudmVyc2lvbiA8IDQgfHwgIW1fY2xpZW50
LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5jKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTg2Niw3ICs4NjYsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0
TWVudUNsaWVudChXS1BhCiAgICAgICAgICAgICBwcm9wb3NlZE1lbnVJdGVtcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHByb3Bvc2VkTWVudVZlY3Rvci5zaXplKCkpOwogCiAgICAgICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIG1lbnVJdGVtIDogcHJvcG9zZWRNZW51VmVjdG9yKQotICAgICAgICAg
ICAgICAgIHByb3Bvc2VkTWVudUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChtZW51SXRlbSk7CisgICAg
ICAgICAgICAgICAgcHJvcG9zZWRNZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKG1lbnVJdGVtLnB0
cigpKTsKIAogICAgICAgICAgICAgUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4gd2ViSGl0VGVz
dFJlc3VsdCA9IEFQSTo6SGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1bHREYXRhKTsK
ICAgICAgICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5j
KHRvQVBJKCZwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUocHJvcG9zZWRN
ZW51SXRlbXMpKS5wdHIoKSksIHRvQVBJKGNvbnRleHRNZW51TGlzdGVuZXIpLCB0b0FQSSh3ZWJI
aXRUZXN0UmVzdWx0LmdldCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwpAQCAtODgyLDcgKzg4Miw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51
Q2xpZW50KFdLUGEKICAgICAgICAgICAgIG1fY2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKHRvQVBJKCZwYWdlKSwgdG9BUEkoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRl
bURhdGEpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGJvb2wgc2hvd0NvbnRleHRNZW51KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb250
ZXh0TWVudUl0ZW0+PiYgbWVudUl0ZW1zVmVjdG9yKSBvdmVycmlkZQorICAgICAgICBib29sIHNo
b3dDb250ZXh0TWVudShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBtZW51TG9jYXRpb24sIGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mIG1l
bnVJdGVtc1ZlY3Rvcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5zaG93Q29udGV4dE1lbnUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
ODkxLDcgKzg5MSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEK
ICAgICAgICAgICAgIG1lbnVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1lbnVJdGVtc1Zl
Y3Rvci5zaXplKCkpOwogCiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG1lbnVJdGVtIDog
bWVudUl0ZW1zVmVjdG9yKQotICAgICAgICAgICAgICAgIG1lbnVJdGVtcy51bmNoZWNrZWRBcHBl
bmQobWVudUl0ZW0pOworICAgICAgICAgICAgICAgIG1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQo
bWVudUl0ZW0ucHRyKCkpOwogCiAgICAgICAgICAgICBtX2NsaWVudC5zaG93Q29udGV4dE1lbnUo
dG9BUEkoJnBhZ2UpLCB0b0FQSShtZW51TG9jYXRpb24pLCB0b0FQSShBUEk6OkFycmF5OjpjcmVh
dGUoV1RGTW92ZShtZW51SXRlbXMpKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRN
ZW51Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAJKHJldmlzaW9uIDIyNjE5NSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2
YXRlOgotICAgIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94
eSYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVu
dSwgVmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+PiYsIGNvbnN0IFdlYkhpdFRlc3RS
ZXN1bHREYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVy
cmlkZQorICAgIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94
eSYsIGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudSwg
VmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiYsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHRE
YXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudDsKICAgICAgICAgaWYgKHVz
ZXJEYXRhKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIx
MSw5ICsyMTEsOSBAQCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsCiAg
ICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5R3RrOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdl
KTsKIH0KIAotUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQ29udGV4dE1lbnVD
b250ZXh0RGF0YSYgY29udGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQorUmVmPFdlYkNv
bnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdl
YlBhZ2VQcm94eSYgcGFnZSwgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHQsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eUd0
azo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSwgY29udGV4dCwgdXNlckRhdGEpOworICAgIHJl
dHVybiBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlLCBX
VEZNb3ZlKGNvbnRleHQpLCB1c2VyRGF0YSk7CiB9CiAKIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4g
UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuaAkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBvdmVycmlkZTsKICAg
ICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQ
cm94eSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVD
b250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERh
dGEmLCBjb25zdCBVc2VyRGF0YSYpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb250ZXh0TWVudVBy
b3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51Q29u
dGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKICAgICBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2Vy
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAkocmV2aXNpb24g
MjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTY3JvbGxH
ZXN0dXJlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldQRVZpZXcuaCIKICNpbmNsdWRlICJXZWJD
b250ZXh0TWVudVByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eVdQRS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KIApAQCAtMjMwLDkgKzIzMSw5IEBAIFJlZlB0cjxXZWJQb3B1cE1lbnVQ
cm94eT4gUGFnZUNsaWVudEltcGwKIH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotUmVm
UHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVu
dVByb3h5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25z
dCBVc2VyRGF0YSYpCitSZWY8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNy
ZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5JiwgQ29udGV4dE1lbnVDb250ZXh0RGF0
YSYmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eVdQRTo6Y3JlYXRlKFdURk1vdmUo
Y29udGV4dCksIHVzZXJEYXRhKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAyMjYxOTUp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJQ
b3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Jikgb3ZlcnJp
ZGU7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgUmVmUHRyPFdlYkNvbnRleHRNZW51
UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5JiwgY29uc3QgQ29udGV4
dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFdl
YkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Jiwg
Q29udGV4dE1lbnVDb250ZXh0RGF0YSYmLCBjb25zdCBVc2VyRGF0YSYpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKICAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5
ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcAkocmV2aXNpb24gMjI2
MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlH
dGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMTkgKzE0MywxOSBAQCB2b2lkIFdlYkNvbnRl
eHRNZW51UHJveHlHdGs6OnBvcHVsYXRlKGNvCiAKIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUd0
azo6c2hvdygpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+PiBwcm9w
b3NlZEFQSUl0ZW1zOworICAgIFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4gcHJvcG9z
ZWRBUElJdGVtczsKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2NvbnRleHQubWVudUl0ZW1zKCkp
IHsKICAgICAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgIT0gQ29udGV4dE1lbnVJdGVtVGFnU2hhcmVN
ZW51KQogICAgICAgICAgICAgcHJvcG9zZWRBUElJdGVtcy5hcHBlbmQoV2ViQ29udGV4dE1lbnVJ
dGVtOjpjcmVhdGUoaXRlbSkpOwogICAgIH0KIAotICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29udGV4
dE1lbnVJdGVtPj4gY2xpZW50SXRlbXM7CisgICAgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0
ZW0+PiBjbGllbnRJdGVtczsKICAgICBib29sIHVzZVByb3Bvc2VkSXRlbXMgPSB0cnVlOwogCiAg
ICAgaWYgKG1fcGFnZS0+Y29udGV4dE1lbnVDbGllbnQoKS5nZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnUoKm1fcGFnZSwgcHJvcG9zZWRBUElJdGVtcywgY2xpZW50SXRlbXMsIG1fY29udGV4
dC53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLCBtX3BhZ2UtPnByb2Nlc3MoKS50cmFuc2Zvcm1IYW5k
bGVzVG9PYmplY3RzKG1fdXNlckRhdGEub2JqZWN0KCkpLmdldCgpKSkKICAgICAgICAgdXNlUHJv
cG9zZWRJdGVtcyA9IGZhbHNlOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0
TWVudUl0ZW0+PiYgaXRlbXMgPSB1c2VQcm9wb3NlZEl0ZW1zID8gcHJvcG9zZWRBUElJdGVtcyA6
IGNsaWVudEl0ZW1zOworICAgIGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4m
IGl0ZW1zID0gdXNlUHJvcG9zZWRJdGVtcyA/IHByb3Bvc2VkQVBJSXRlbXMgOiBjbGllbnRJdGVt
czsKIAogICAgIGlmICghaXRlbXMuaXNFbXB0eSgpKQogICAgICAgICBwb3B1bGF0ZShpdGVtcyk7
CkBAIC0xNzUsMTIgKzE3NSwxMiBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OnNob3co
KQogICAgICAgICAgICAgICAgICAgIGV2ZW50ID8gZXZlbnQtPmJ1dHRvbi5idXR0b24gOiAzLCBl
dmVudCA/IGV2ZW50LT5idXR0b24udGltZSA6IEdES19DVVJSRU5UX1RJTUUpOwogfQogCi12b2lk
IFdlYkNvbnRleHRNZW51UHJveHlHdGs6OnNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhjb25zdCBW
ZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQordm9pZCBXZWJDb250ZXh0TWVu
dVByb3h5R3RrOjpzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbURhdGE+JiYpCiB7CiB9CiAKLVdlYkNvbnRleHRNZW51UHJveHlHdGs6OldlYkNvbnRleHRN
ZW51UHJveHlHdGsoR3RrV2lkZ2V0KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0
IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKLSAgICA6IFdlYkNvbnRleHRNZW51UHJveHkoY29udGV4dCwgdXNlckRhdGEpCitXZWJDb250
ZXh0TWVudVByb3h5R3RrOjpXZWJDb250ZXh0TWVudVByb3h5R3RrKEd0a1dpZGdldCogd2ViVmll
dywgV2ViUGFnZVByb3h5JiBwYWdlLCBDb250ZXh0TWVudUNvbnRleHREYXRhJiYgY29udGV4dCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQorICAgIDogV2ViQ29udGV4dE1lbnVQcm94eShXVEZN
b3ZlKGNvbnRleHQpLCB1c2VyRGF0YSkKICAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQogICAgICwg
bV9wYWdlKCZwYWdlKQogICAgICwgbV9tZW51KEdUS19NRU5VKGd0a19tZW51X25ldygpKSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51
UHJveHlHdGsuaAkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMs
NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
V2ViQ29udGV4dE1lbnVQcm94eUd0a19oCi0jZGVmaW5lIFdlYkNvbnRleHRNZW51UHJveHlHdGtf
aAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIApAQCAtNDQsOSAr
NDMsOSBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkNvbnRleHRNZW51UHJveHlH
dGsgOiBwdWJsaWMgV2ViQ29udGV4dE1lbnVQcm94eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1
dG8gY3JlYXRlKEd0a1dpZGdldCogd2lkZ2V0LCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IENv
bnRleHRNZW51Q29udGV4dERhdGEmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkK
KyAgICBzdGF0aWMgYXV0byBjcmVhdGUoR3RrV2lkZ2V0KiB3aWRnZXQsIFdlYlBhZ2VQcm94eSYg
cGFnZSwgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvbnRleHRN
ZW51UHJveHlHdGsod2lkZ2V0LCBwYWdlLCBjb250ZXh0LCB1c2VyRGF0YSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb250ZXh0TWVudVByb3h5R3RrKHdpZGdldCwgcGFnZSwg
V1RGTW92ZShjb250ZXh0KSwgdXNlckRhdGEpKTsKICAgICB9CiAgICAgfldlYkNvbnRleHRNZW51
UHJveHlHdGsoKTsKIApAQCAtNTQsOSArNTMsOSBAQCBwdWJsaWM6CiAgICAgR3RrTWVudSogZ3Rr
TWVudSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVudTsgfQogCiBwcml2YXRlOgotICAgIFdlYkNvbnRl
eHRNZW51UHJveHlHdGsoR3RrV2lkZ2V0KiwgV2ViUGFnZVByb3h5JiwgY29uc3QgQ29udGV4dE1l
bnVDb250ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgV2ViQ29udGV4dE1lbnVQcm94
eUd0ayhHdGtXaWRnZXQqLCBXZWJQYWdlUHJveHkmLCBDb250ZXh0TWVudUNvbnRleHREYXRhJiYs
IGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzaG93KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBz
aG93Q29udGV4dE1lbnVXaXRoSXRlbXMoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURh
dGE+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9y
PFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYXBwZW5kKEdN
ZW51KiwgY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtR2xpYiYpOwogICAgIEdSZWZQdHI8R01lbnU+
IGJ1aWxkTWVudShjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4mKTsKICAgICB2
b2lkIHBvcHVsYXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVtPj4mKTsK
QEAgLTczLDQgKzcyLDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0jZW5kaWYgLy8gV2ViQ29udGV4dE1lbnVQcm94
eUd0a19oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaAkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDkgKzk0LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3Vj
aEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkm
KSBvdmVycmlkZTsKLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBSZWZQdHI8V2ViQ29u
dGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkmLCBjb25z
dCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwgY29uc3QgVXNlckRhdGEmKSBvdmVycmlkZTsKLSNl
bmRpZgogICAgIFJlZjxXZWJDb3JlOjpWYWxpZGF0aW9uQnViYmxlPiBjcmVhdGVWYWxpZGF0aW9u
QnViYmxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgV2ViQ29yZTo6VmFsaWRhdGlvbkJ1
YmJsZTo6U2V0dGluZ3MmKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0VGV4dEluZGljYXRvcihSZWY8
V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3dMaWZl
dGltZSkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCShyZXZpc2lvbiAyMjYxOTUpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0
OCwxMyArNDQ4LDYgQEAgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbAog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi1SZWZQ
dHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51
UHJveHkoV2ViUGFnZVByb3h5JiwgY29uc3QgVXNlckRhdGEmKQotewotICAgIHJldHVybiBudWxs
cHRyOwotfQotI2VuZGlmCi0KIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFRleHRJbmRpY2F0b3Io
UmVmPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3IsIFRleHRJbmRpY2F0b3JXaW5kb3dMaWZl
dGltZSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oCShyZXZpc2lvbiAyMjYxOTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEy
Niw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBv
cHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQotICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVu
dVByb3h5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25z
dCBVc2VyRGF0YSYpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51Q29udGV4dERhdGEm
JiwgY29uc3QgVXNlckRhdGEmKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tCShyZXZpc2lvbiAyMjYxOTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0OCw5
ICs0NDgsOSBAQCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsCiB9CiAK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLVJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkmIHBhZ2Us
IGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKK1JlZjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRl
Q29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIENvbnRleHRNZW51Q29udGV4dERh
dGEmJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgcmV0dXJuIFdl
YkNvbnRleHRNZW51UHJveHlNYWM6OmNyZWF0ZShtX3ZpZXcsIHBhZ2UsIGNvbnRleHQsIHVzZXJE
YXRhKTsKKyAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlKG1fdmlldywg
cGFnZSwgV1RGTW92ZShjb250ZXh0KSwgdXNlckRhdGEpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlN
YWMuaAkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNZW51UHJveHlNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTQgKzQ3LDE0IEBA
IGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eU1hYyA6IHB1
YmxpYyBXZWJDb250ZXh0TWVudVByb3h5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBjcmVh
dGUoTlNWaWV3KiB2aWV3LCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IENvbnRleHRNZW51Q29u
dGV4dERhdGEmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAgICBzdGF0aWMg
YXV0byBjcmVhdGUoTlNWaWV3KiB2aWV3LCBXZWJQYWdlUHJveHkmIHBhZ2UsIENvbnRleHRNZW51
Q29udGV4dERhdGEmJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb250ZXh0TWVudVByb3h5TWFjKHZpZXcs
IHBhZ2UsIGNvbnRleHQsIHVzZXJEYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkNvbnRleHRNZW51UHJveHlNYWModmlldywgcGFnZSwgV1RGTW92ZShjb250ZXh0KSwgdXNl
ckRhdGEpKTsKICAgICB9CiAgICAgfldlYkNvbnRleHRNZW51UHJveHlNYWMoKTsKIAogICAgIHZv
aWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYp
OwotICAgIHZvaWQgc2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJDb250
ZXh0TWVudUl0ZW1EYXRhPiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvd0NvbnRleHRNZW51V2l0
aEl0ZW1zKFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYmKSBvdmVycmlkZTsKIAogI2lm
IEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIHZvaWQgY2xlYXJTZXJ2aWNlc01lbnUoKTsK
QEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIE5TV2luZG93ICp3aW5kb3coKSBjb25zdDsK
IAogcHJpdmF0ZToKLSAgICBXZWJDb250ZXh0TWVudVByb3h5TWFjKE5TVmlldyosIFdlYlBhZ2VQ
cm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25zdCBVc2VyRGF0YSYpOwor
ICAgIFdlYkNvbnRleHRNZW51UHJveHlNYWMoTlNWaWV3KiwgV2ViUGFnZVByb3h5JiwgQ29udGV4
dE1lbnVDb250ZXh0RGF0YSYmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc2hvdygpIG92
ZXJyaWRlOwogCiAgICAgUmVmUHRyPFdlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eT4gbV9jb250
ZXh0TWVudUxpc3RlbmVyOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0JKHJldmlzaW9uIDIyNjE5NSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTIsOCArMTUyLDggQEAgLSAodm9pZClmb3J3YXJkQ29udGV4dE1lbnVB
Y3Rpb246KGlkKXNlbgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViQ29udGV4dE1lbnVQcm94
eU1hYzo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyhOU1ZpZXcqIHdlYlZpZXcsIFdlYlBhZ2VQcm94
eSYgcGFnZSwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYgY29udGV4dCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQotICAgIDogV2ViQ29udGV4dE1lbnVQcm94eShjb250ZXh0LCB1c2Vy
RGF0YSkKK1dlYkNvbnRleHRNZW51UHJveHlNYWM6OldlYkNvbnRleHRNZW51UHJveHlNYWMoTlNW
aWV3KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkmIHBhZ2UsIENvbnRleHRNZW51Q29udGV4dERhdGEm
JiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCisgICAgOiBXZWJDb250ZXh0TWVu
dVByb3h5KFdURk1vdmUoY29udGV4dCksIHVzZXJEYXRhKQogICAgICwgbV93ZWJWaWV3KHdlYlZp
ZXcpCiAgICAgLCBtX3BhZ2UocGFnZSkKIHsKQEAgLTQ1MSw3ICs0NTEsNyBAQCBSZXRhaW5QdHI8
TlNNZW51SXRlbT4gV2ViQ29udGV4dE1lbnVQcm94CiAgICAgfQogfQogCi12b2lkIFdlYkNvbnRl
eHRNZW51UHJveHlNYWM6OnNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhjb25zdCBWZWN0b3I8V2Vi
Q29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQordm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFj
OjpzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+
JiYgaXRlbXMpCiB7CiAgICAgYXV0byBtZW51ID0gY3JlYXRlQ29udGV4dE1lbnVGcm9tSXRlbXMo
aXRlbXMpOwogICAgIFtbV0tNZW51VGFyZ2V0IHNoYXJlZE1lbnVUYXJnZXRdIHNldE1lbnVQcm94
eTp0aGlzXTsKQEAgLTQ2OSwxMSArNDY5LDExIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1h
Yzo6c2hvd0NvbnRleHQKIAogdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29udGV4
dE1lbnUoKQogewotICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVtPj4gcHJvcG9z
ZWRBUElJdGVtczsKKyAgICBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+IHByb3Bvc2Vk
QVBJSXRlbXM7CiAgICAgZm9yIChhdXRvJiBpdGVtIDogbV9jb250ZXh0Lm1lbnVJdGVtcygpKQog
ICAgICAgICBwcm9wb3NlZEFQSUl0ZW1zLmFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0
ZShpdGVtKSk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4+IGNsaWVu
dEl0ZW1zOworICAgIFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4gY2xpZW50SXRlbXM7
CiAgICAgYm9vbCB1c2VQcm9wb3NlZEl0ZW1zID0gdHJ1ZTsKIAogICAgIGlmIChtX2NvbnRleHRN
ZW51TGlzdGVuZXIpIHsKQEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJv
eHlNYWM6OnNob3dDb250ZXh0CiAgICAgaWYgKGl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKGl0ZW1zKTsKKyAgICBzaG93Q29u
dGV4dE1lbnVXaXRoSXRlbXMoV1RGTW92ZShpdGVtcykpOwogfQogCiBOU1dpbmRvdyAqV2ViQ29u
dGV4dE1lbnVQcm94eU1hYzo6d2luZG93KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dwZS9XZWJDb250ZXh0TWVudVByb3h5V1BFLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYkNvbnRleHRNZW51UHJveHlXUEUuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViQ29udGV4dE1lbnVQcm94eVdQ
RS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHkuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJveHlXUEUgOiBwdWJsaWMgV2ViQ29udGV4
dE1lbnVQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIGF1dG8gY3JlYXRlKENvbnRleHRNZW51
Q29udGV4dERhdGEmJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb250ZXh0TWVudVByb3h5V1BFKFdURk1v
dmUoY29udGV4dCksIHVzZXJEYXRhKSk7CisgICAgfQorCisgICAgdm9pZCBzaG93Q29udGV4dE1l
bnVXaXRoSXRlbXMoVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiYpIGZpbmFsIHsgfQor
ICAgIHZvaWQgc2hvdygpIGZpbmFsIHsgfTsKKworcHJpdmF0ZToKKyAgICBXZWJDb250ZXh0TWVu
dVByb3h5V1BFKENvbnRleHRNZW51Q29udGV4dERhdGEmJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCisgICAgICAgIDogV2ViQ29udGV4dE1lbnVQcm94eShXVEZNb3ZlKGNvbnRl
eHQpLCB1c2VyRGF0YSkKKyAgICB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330004</attachid>
            <date>2017-12-20 21:16:05 -0800</date>
            <delta_ts>2017-12-28 14:01:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181074-20171220211604.patch</filename>
            <type>text/plain</type>
            <size>34302</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjYyMTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE3LTEyLTIwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAgY29u
dGV4dCBtZW51IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MTA3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBSZWYgaW5zdGVhZCBvZiBSZWZQdHIgd2hlcmUgcG9zc2libGUuCisgICAgICAg
IFVzZSBtb3ZlIHNlbWFudGljcyBpbnN0ZWFkIG9mIGNvcHlpbmcgZnJvbSBjb25zdCByZWZlcmVu
Y2VzIHdoZW4gcG9zc2libGUuCisgICAgICAgIFJlbW92ZSBkZWFkIGlPUyBjb2RlLiAgUmVkdWNl
IGFsbG9jYXRpb25zLiAgQWRkIHN0dWIgZm9yIFdQRS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGll
bnQ6OmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSk6CisgICAgICAgIChBUEk6OkNvbnRl
eHRNZW51Q2xpZW50OjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVBc3luYyk6CisgICAg
ICAgIChBUEk6OkNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUNvbnRl
eHRNZW51Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVu
dVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRl
eHRNZW51TGlzdGVuZXJQcm94eTo6dXNlQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0TWVudVByb3h5OjpXZWJDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQ29udGV4dE1lbnVQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudVByb3h5R3RrOjpzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5R3RrOjpXZWJDb250ZXh0TWVudVByb3h5
R3RrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUd0azo6Y3JlYXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0
TWVudVByb3h5TWFjLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6
OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpXZWJDb250ZXh0
TWVudVByb3h5TWFjKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eU1hYzo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxNy0xMi0yMCAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1dIEFkZCBz
Y3JlZW4gY2FwdHVyZSBJREwgYW5kIHN0dWIgZnVuY3Rpb25zCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtV1BFLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
UEUuY21ha2UJKHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUu
Y21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQyMSw2ICs0MjEsNyBAQCBsaXN0KEFQUEVORCBXZWJL
aXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9nc3Ry
ZWFtZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL2xpbnV4IgogICAgICIke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgorICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy93cGUi
CiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYiIK
ICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUiCiAg
ICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9zb3VwIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVw
TWVudVByb3h5KFdlYlBhZ2VQcm94eSYpID0gMDsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
LSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVu
dVByb3h5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25z
dCBVc2VyRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxXZWJDb250ZXh0TWVudVByb3h5PiBj
cmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51Q29udGV4dERh
dGEmJiwgY29uc3QgVXNlckRhdGEmKSA9IDA7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVM
aXN0ZW5lclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuY3BwCShyZXZpc2lvbiAyMjYxOTUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MywxOCArNTMsMTggQEAgdm9pZCBXZWJDb250ZXh0TWVudUxpc3RlbmVy
UHJveHk6OnVzZUNvbgogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8QVBJOjpBcnJheT4g
YXJyYXkgPSB0b0ltcGwoaXRlbXMpOwotICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRh
PiBkYXRhSXRlbXM7Ci0KICAgICBzaXplX3QgbmV3U2l6ZSA9IGFycmF5ID8gYXJyYXktPnNpemUo
KSA6IDA7CisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGRhdGFJdGVtczsKKyAg
ICBkYXRhSXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuZXdTaXplKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG5ld1NpemU7ICsraSkgewogICAgICAgICBXZWJDb250ZXh0TWVudUl0
ZW0qIGl0ZW0gPSBhcnJheS0+YXQ8V2ViQ29udGV4dE1lbnVJdGVtPihpKTsKICAgICAgICAgaWYg
KCFpdGVtKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZGF0YUl0ZW1zLmFwcGVu
ZChpdGVtLT5kYXRhKCkpOworICAgICAgICBkYXRhSXRlbXMudW5jaGVja2VkQXBwZW5kKGl0ZW0t
PmRhdGEoKSk7CiAgICAgfQogCi0gICAgbV9jb250ZXh0TWVudU1hYy0+c2hvd0NvbnRleHRNZW51
V2l0aEl0ZW1zKGRhdGFJdGVtcyk7CisgICAgbV9jb250ZXh0TWVudU1hYy0+c2hvd0NvbnRleHRN
ZW51V2l0aEl0ZW1zKFdURk1vdmUoZGF0YUl0ZW1zKSk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1l
bnVMaXN0ZW5lclByb3h5OjppbnZhbGlkYXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkNvbnRleHRNZW51UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuY3BwCShyZXZpc2lvbiAyMjYxOTUpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViQ29udGV4
dE1lbnVQcm94eTo6V2ViQ29udGV4dE1lbnVQcm94eShjb25zdCBDb250ZXh0TWVudUNvbnRleHRE
YXRhJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCi0gICAgOiBtX2NvbnRleHQo
Y29udGV4dCkKK1dlYkNvbnRleHRNZW51UHJveHk6OldlYkNvbnRleHRNZW51UHJveHkoQ29udGV4
dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAg
ICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogICAgICwgbV91c2VyRGF0YSh1c2VyRGF0
YSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVu
dVByb3h5LmgJKHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkNvbnRleHRNZW51UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93KCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lk
IHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVt
RGF0YT4mIGl0ZW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudVdpdGhJ
dGVtcyhWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgV2ViQ29udGV4dE1lbnVQcm94eShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwg
Y29uc3QgVXNlckRhdGEmKTsKKyAgICBXZWJDb250ZXh0TWVudVByb3h5KENvbnRleHRNZW51Q29u
dGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEmKTsKIAogICAgIGNvbnN0IENvbnRleHRNZW51Q29u
dGV4dERhdGEgbV9jb250ZXh0OwogICAgIGNvbnN0IFVzZXJEYXRhIG1fdXNlckRhdGE7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIyNjE5
NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3MjIsMjQgKzQ3MjIsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVQb3B1
cE1lbnUoKQogfQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2hvd0NvbnRleHRNZW51KGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNvbnRleHRN
ZW51Q29udGV4dERhdGEsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzaG93Q29udGV4dE1lbnUoQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHRNZW51
Q29udGV4dERhdGEsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICAvLyBTaG93aW5n
IGEgY29udGV4dCBtZW51IHJ1bnMgYSBuZXN0ZWQgcnVubG9vcCwgd2hpY2ggY2FuIGhhbmRsZSBt
ZXNzYWdlcyB0aGF0IGNhdXNlIHx0aGlzfCB0byBnZXQgY2xvc2VkLgogICAgIFJlZjxXZWJQYWdl
UHJveHk+IHByb3RlY3QoKnRoaXMpOwogCi0gICAgaW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29u
dGV4dE1lbnVDb250ZXh0RGF0YSwgdXNlckRhdGEpOwotICAgIAotICAgIC8vIE5vIG1hdHRlciB0
aGUgcmVzdWx0IG9mIGludGVybmFsU2hvd0NvbnRleHRNZW51LCBhbHdheXMgbm90aWZ5IHRoZSBX
ZWJQcm9jZXNzIHRoYXQgdGhlIG1lbnUgaXMgaGlkZGVuIHNvIGl0IHN0YXJ0cyBoYW5kbGluZyBt
b3VzZSBldmVudHMgYWdhaW4uCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDb250ZXh0TWVudUhpZGRlbigpLCBtX3BhZ2VJRCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5
OjppbnRlcm5hbFNob3dDb250ZXh0TWVudShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiBj
b250ZXh0TWVudUNvbnRleHREYXRhLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCi17CiAgICAg
bV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhID0gY29udGV4dE1lbnVDb250ZXh0RGF0YTsK
IAotICAgIG1fYWN0aXZlQ29udGV4dE1lbnUgPSBtX3BhZ2VDbGllbnQuY3JlYXRlQ29udGV4dE1l
bnVQcm94eSgqdGhpcywgY29udGV4dE1lbnVDb250ZXh0RGF0YSwgdXNlckRhdGEpOwotICAgIGlm
ICghbV9hY3RpdmVDb250ZXh0TWVudSkKLSAgICAgICAgcmV0dXJuOworICAgIG1fYWN0aXZlQ29u
dGV4dE1lbnUgPSBtX3BhZ2VDbGllbnQuY3JlYXRlQ29udGV4dE1lbnVQcm94eSgqdGhpcywgV1RG
TW92ZShjb250ZXh0TWVudUNvbnRleHREYXRhKSwgdXNlckRhdGEpOwogCiAgICAgLy8gU2luY2Ug
c2hvd0NvbnRleHRNZW51KCkgY2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxvb3Agd2UgbmVlZCB0byB0
dXJuIG9mZiB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuCiAgICAgbV9wcm9jZXNzLT5yZXNwb25z
aXZlbmVzc1RpbWVyKCkuc3RvcCgpOwpAQCAtNDc0Nyw2ICs0NzM3LDkgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZQogICAgIC8vIG1fYWN0aXZlQ29udGV4dE1lbnUg
bWlnaHQgZ2V0IGNsZWFyZWQgaWYgV2ViUGFnZVByb3h5IGNvZGUgaXMgcmUtZW50ZXJlZCBmcm9t
IHRoZSBtZW51IHJ1bmxvb3Agb3IgZGVsZWdhdGVzLgogICAgIFJlZjxXZWJDb250ZXh0TWVudVBy
b3h5PiBwcm90ZWN0b3IoKm1fYWN0aXZlQ29udGV4dE1lbnUpOwogICAgIG1fYWN0aXZlQ29udGV4
dE1lbnUtPnNob3coKTsKKworICAgIC8vIE5vIG1hdHRlciB0aGUgcmVzdWx0IG9mIGludGVybmFs
U2hvd0NvbnRleHRNZW51LCBhbHdheXMgbm90aWZ5IHRoZSBXZWJQcm9jZXNzIHRoYXQgdGhlIG1l
bnUgaXMgaGlkZGVuIHNvIGl0IHN0YXJ0cyBoYW5kbGluZyBtb3VzZSBldmVudHMgYWdhaW4uCisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUhpZGRlbigp
LCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU5LDgg
KzE0NTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGlkZVBvcHVwTWVudSgpOwogCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgQ29udGV4
dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBpbnRlcm5hbFNo
b3dDb250ZXh0TWVudShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwgY29uc3QgVXNlckRh
dGEmKTsKKyAgICB2b2lkIHNob3dDb250ZXh0TWVudShDb250ZXh0TWVudUNvbnRleHREYXRhJiYs
IGNvbnN0IFVzZXJEYXRhJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVS
X0RFVEVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0
TWVudUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElDb250ZXh0TWVudUNsaWVudC5oCShyZXZpc2lvbiAyMjYxOTUpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgQVBJQ29udGV4dE1lbnVDbGllbnRfaAotI2RlZmluZSBBUElDb250ZXh0TWVudUNs
aWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCkBAIC01
MiwxMCArNTEsMTAgQEAgY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgewogcHVibGljOgogICAgIHZp
cnR1YWwgfkNvbnRleHRNZW51Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29u
dGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgVmVj
dG9yPFJlZlB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiAvKiBwcm9wb3NlZE1lbnUg
Ki8sIFZlY3RvcjxSZWZQdHI8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgLyogY3VzdG9t
TWVudSAqLywgY29uc3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIEFQSTo6T2JqZWN0
KiAvKiB1c2VyRGF0YSAqLykgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0
Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5bmMoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBj
b25zdCBWZWN0b3I8UmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mIC8qIHByb3Bv
c2VkTWVudSAqLywgV2ViS2l0OjpXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkqLCBjb25zdCBX
ZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhJiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICov
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Q
cm9wb3NlZE1lbnUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBWZWN0b3I8UmVmPFdlYktp
dDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mIC8qIHByb3Bvc2VkTWVudSAqLywgVmVjdG9yPFJlZjxX
ZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiAvKiBjdXN0b21NZW51ICovLCBjb25zdCBXZWJL
aXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhJiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnVBc3luYyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFZlY3RvcjxSZWY8V2Vi
S2l0OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgLyogcHJvcG9zZWRNZW51ICovLCBXZWJLaXQ6Oldl
YkNvbnRleHRNZW51TGlzdGVuZXJQcm94eSosIGNvbnN0IFdlYktpdDo6V2ViSGl0VGVzdFJlc3Vs
dERhdGEmLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJikgeyB9Ci0g
ICAgdmlydHVhbCBib29sIHNob3dDb250ZXh0TWVudShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJLaXQ6OldlYkNv
bnRleHRNZW51SXRlbT4+JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hv
d0NvbnRleHRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mKSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBoaWRlQ29udGV4dE1lbnUoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAt
NjYsNCArNjUsMyBAQCBwdWJsaWM6CiB9IC8vIG5hbWVzcGFjZSBBUEkKIAogI2VuZGlmIC8vIEVO
QUJMRShDT05URVhUX01FTlVTKQotI2VuZGlmIC8vIEFQSUNvbnRleHRNZW51Q2xpZW50X2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMjI2
MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODE4LDcgKzgxOCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51
Q2xpZW50KFdLUGEKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBnZXRD
b250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudVZlY3Rv
ciwgVmVjdG9yPFJlZlB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiBjdXN0b21NZW51
LCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Q
cm9wb3NlZE1lbnUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6
V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudVZlY3RvciwgVmVjdG9yPFJlZjxXZWJL
aXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiBjdXN0b21NZW51LCBjb25zdCBXZWJIaXRUZXN0UmVz
dWx0RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJp
ZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZy
b21Qcm9wb3NlZE1lbnUgJiYgIW1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVu
dV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTgzMCwxMiArODMwLDEyIEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50
KFdLUGEKICAgICAgICAgICAgIHByb3Bvc2VkTWVudUl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkocHJvcG9zZWRNZW51VmVjdG9yLnNpemUoKSk7CiAKICAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgbWVudUl0ZW0gOiBwcm9wb3NlZE1lbnVWZWN0b3IpCi0gICAgICAgICAgICAgICAgcHJv
cG9zZWRNZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKG1lbnVJdGVtKTsKKyAgICAgICAgICAgICAg
ICBwcm9wb3NlZE1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQobWVudUl0ZW0ucHRyKCkpOwogCiAg
ICAgICAgICAgICBXS0FycmF5UmVmIG5ld01lbnUgPSBudWxscHRyOwogICAgICAgICAgICAgaWYg
KG1fY2xpZW50LmJhc2UudmVyc2lvbiA+PSAyKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEFQ
STo6SGl0VGVzdFJlc3VsdD4gd2ViSGl0VGVzdFJlc3VsdCA9IEFQSTo6SGl0VGVzdFJlc3VsdDo6
Y3JlYXRlKGhpdFRlc3RSZXN1bHREYXRhKTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5nZXRD
b250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodG9BUEkoJnBhZ2UpLCB0b0FQSShBUEk6OkFycmF5
OjpjcmVhdGUoV1RGTW92ZShwcm9wb3NlZE1lbnVJdGVtcykpLnB0cigpKSwgJm5ld01lbnUsIHRv
QVBJKHdlYkhpdFRlc3RSZXN1bHQuZ2V0KCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgYXV0byB3ZWJIaXRUZXN0UmVzdWx0ID0g
QVBJOjpIaXRUZXN0UmVzdWx0OjpjcmVhdGUoaGl0VGVzdFJlc3VsdERhdGEpOworICAgICAgICAg
ICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0b0FQSSgmcGFn
ZSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHByb3Bvc2VkTWVudUl0ZW1zKSku
cHRyKCkpLCAmbmV3TWVudSwgdG9BUEkod2ViSGl0VGVzdFJlc3VsdC5wdHIoKSksIHRvQVBJKHVz
ZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3Jl
YXRlKFdURk1vdmUocHJvcG9zZWRNZW51SXRlbXMpKS5wdHIoKSksICZuZXdNZW51LCB0b0FQSSh1
c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAKQEAgLTg1MSwxMyArODUxLDEz
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
Y3VzdG9tTWVudS5hcHBlbmQoaXRlbSk7CisgICAgICAgICAgICAgICAgY3VzdG9tTWVudS5hcHBl
bmQoKml0ZW0pOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogCi0gICAgICAgIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5
bmMoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudVZlY3RvciwgV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUxpc3RlbmVyUHJveHkqIGNvbnRleHRNZW51TGlzdGVuZXIsIGNvbnN0IFdlYkhpdFRlc3RSZXN1
bHREYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlk
ZQorICAgICAgICBib29sIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5jKFdlYlBh
Z2VQcm94eSYgcGFnZSwgY29uc3QgVmVjdG9yPFJlZjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRl
bT4+JiBwcm9wb3NlZE1lbnVWZWN0b3IsIFdlYktpdDo6V2ViQ29udGV4dE1lbnVMaXN0ZW5lclBy
b3h5KiBjb250ZXh0TWVudUxpc3RlbmVyLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0
VGVzdFJlc3VsdERhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmJhc2UudmVyc2lvbiA8IDQgfHwgIW1fY2xpZW50
LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5jKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTg2Niw3ICs4NjYsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0
TWVudUNsaWVudChXS1BhCiAgICAgICAgICAgICBwcm9wb3NlZE1lbnVJdGVtcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHByb3Bvc2VkTWVudVZlY3Rvci5zaXplKCkpOwogCiAgICAgICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIG1lbnVJdGVtIDogcHJvcG9zZWRNZW51VmVjdG9yKQotICAgICAgICAg
ICAgICAgIHByb3Bvc2VkTWVudUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChtZW51SXRlbSk7CisgICAg
ICAgICAgICAgICAgcHJvcG9zZWRNZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKG1lbnVJdGVtLnB0
cigpKTsKIAogICAgICAgICAgICAgUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4gd2ViSGl0VGVz
dFJlc3VsdCA9IEFQSTo6SGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1bHREYXRhKTsK
ICAgICAgICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5j
KHRvQVBJKCZwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUocHJvcG9zZWRN
ZW51SXRlbXMpKS5wdHIoKSksIHRvQVBJKGNvbnRleHRNZW51TGlzdGVuZXIpLCB0b0FQSSh3ZWJI
aXRUZXN0UmVzdWx0LmdldCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwpAQCAtODgyLDcgKzg4Miw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51
Q2xpZW50KFdLUGEKICAgICAgICAgICAgIG1fY2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKHRvQVBJKCZwYWdlKSwgdG9BUEkoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRl
bURhdGEpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGJvb2wgc2hvd0NvbnRleHRNZW51KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb250
ZXh0TWVudUl0ZW0+PiYgbWVudUl0ZW1zVmVjdG9yKSBvdmVycmlkZQorICAgICAgICBib29sIHNo
b3dDb250ZXh0TWVudShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBtZW51TG9jYXRpb24sIGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mIG1l
bnVJdGVtc1ZlY3Rvcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5zaG93Q29udGV4dE1lbnUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
ODkxLDcgKzg5MSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEK
ICAgICAgICAgICAgIG1lbnVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1lbnVJdGVtc1Zl
Y3Rvci5zaXplKCkpOwogCiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG1lbnVJdGVtIDog
bWVudUl0ZW1zVmVjdG9yKQotICAgICAgICAgICAgICAgIG1lbnVJdGVtcy51bmNoZWNrZWRBcHBl
bmQobWVudUl0ZW0pOworICAgICAgICAgICAgICAgIG1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQo
bWVudUl0ZW0ucHRyKCkpOwogCiAgICAgICAgICAgICBtX2NsaWVudC5zaG93Q29udGV4dE1lbnUo
dG9BUEkoJnBhZ2UpLCB0b0FQSShtZW51TG9jYXRpb24pLCB0b0FQSShBUEk6OkFycmF5OjpjcmVh
dGUoV1RGTW92ZShtZW51SXRlbXMpKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRN
ZW51Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAJKHJldmlzaW9uIDIyNjE5NSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2
YXRlOgotICAgIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94
eSYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVu
dSwgVmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+PiYsIGNvbnN0IFdlYkhpdFRlc3RS
ZXN1bHREYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVy
cmlkZQorICAgIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94
eSYsIGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudSwg
VmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiYsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHRE
YXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudDsKICAgICAgICAgaWYgKHVz
ZXJEYXRhKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIx
MSw5ICsyMTEsOSBAQCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsCiAg
ICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5R3RrOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdl
KTsKIH0KIAotUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQ29udGV4dE1lbnVD
b250ZXh0RGF0YSYgY29udGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQorUmVmPFdlYkNv
bnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdl
YlBhZ2VQcm94eSYgcGFnZSwgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHQsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eUd0
azo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSwgY29udGV4dCwgdXNlckRhdGEpOworICAgIHJl
dHVybiBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlLCBX
VEZNb3ZlKGNvbnRleHQpLCB1c2VyRGF0YSk7CiB9CiAKIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4g
UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuaAkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBvdmVycmlkZTsKICAg
ICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQ
cm94eSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVD
b250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERh
dGEmLCBjb25zdCBVc2VyRGF0YSYpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb250ZXh0TWVudVBy
b3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51Q29u
dGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKICAgICBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2Vy
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAkocmV2aXNpb24g
MjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTY3JvbGxH
ZXN0dXJlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldQRVZpZXcuaCIKICNpbmNsdWRlICJXZWJD
b250ZXh0TWVudVByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eVdQRS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KIApAQCAtMjMwLDkgKzIzMSw5IEBAIFJlZlB0cjxXZWJQb3B1cE1lbnVQ
cm94eT4gUGFnZUNsaWVudEltcGwKIH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotUmVm
UHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVu
dVByb3h5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25z
dCBVc2VyRGF0YSYpCitSZWY8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNy
ZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5JiwgQ29udGV4dE1lbnVDb250ZXh0RGF0
YSYmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eVdQRTo6Y3JlYXRlKFdURk1vdmUo
Y29udGV4dCksIHVzZXJEYXRhKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAyMjYxOTUp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJQ
b3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Jikgb3ZlcnJp
ZGU7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgUmVmUHRyPFdlYkNvbnRleHRNZW51
UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5JiwgY29uc3QgQ29udGV4
dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFdl
YkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Jiwg
Q29udGV4dE1lbnVDb250ZXh0RGF0YSYmLCBjb25zdCBVc2VyRGF0YSYpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKICAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5
ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcAkocmV2aXNpb24gMjI2
MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlH
dGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBXZWJDb250ZXh0
TWVudVByb3h5R3RrOjpwb3B1bGF0ZShjbwogICAgIGd0a19tZW51X3NoZWxsX2JpbmRfbW9kZWwo
R1RLX01FTlVfU0hFTEwobV9tZW51KSwgR19NRU5VX01PREVMKG1lbnUuZ2V0KCkpLCBudWxscHRy
LCBUUlVFKTsKIH0KIAotdm9pZCBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpwb3B1bGF0ZShjb25z
dCBWZWN0b3I8UmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4+JiBpdGVtcykKK3ZvaWQgV2ViQ29u
dGV4dE1lbnVQcm94eUd0azo6cG9wdWxhdGUoY29uc3QgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVu
dUl0ZW0+PiYgaXRlbXMpCiB7CiAgICAgR1JlZlB0cjxHTWVudT4gbWVudSA9IGFkb3B0R1JlZihn
X21lbnVfbmV3KCkpOwogICAgIEdNZW51KiBzZWN0aW9uTWVudSA9IG1lbnUuZ2V0KCk7CkBAIC0x
NDMsMTkgKzE0MywxOSBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OnBvcHVsYXRlKGNv
CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUd0azo6c2hvdygpCiB7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+PiBwcm9wb3NlZEFQSUl0ZW1zOworICAgIFZlY3RvcjxS
ZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4gcHJvcG9zZWRBUElJdGVtczsKICAgICBmb3IgKGF1dG8m
IGl0ZW0gOiBtX2NvbnRleHQubWVudUl0ZW1zKCkpIHsKICAgICAgICAgaWYgKGl0ZW0uYWN0aW9u
KCkgIT0gQ29udGV4dE1lbnVJdGVtVGFnU2hhcmVNZW51KQogICAgICAgICAgICAgcHJvcG9zZWRB
UElJdGVtcy5hcHBlbmQoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbSkpOwogICAgIH0K
IAotICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVtPj4gY2xpZW50SXRlbXM7Cisg
ICAgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiBjbGllbnRJdGVtczsKICAgICBib29s
IHVzZVByb3Bvc2VkSXRlbXMgPSB0cnVlOwogCiAgICAgaWYgKG1fcGFnZS0+Y29udGV4dE1lbnVD
bGllbnQoKS5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoKm1fcGFnZSwgcHJvcG9zZWRB
UElJdGVtcywgY2xpZW50SXRlbXMsIG1fY29udGV4dC53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLCBt
X3BhZ2UtPnByb2Nlc3MoKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKG1fdXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKSkKICAgICAgICAgdXNlUHJvcG9zZWRJdGVtcyA9IGZhbHNlOwogCi0gICAg
Y29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+PiYgaXRlbXMgPSB1c2VQcm9w
b3NlZEl0ZW1zID8gcHJvcG9zZWRBUElJdGVtcyA6IGNsaWVudEl0ZW1zOworICAgIGNvbnN0IFZl
Y3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mIGl0ZW1zID0gdXNlUHJvcG9zZWRJdGVtcyA/
IHByb3Bvc2VkQVBJSXRlbXMgOiBjbGllbnRJdGVtczsKIAogICAgIGlmICghaXRlbXMuaXNFbXB0
eSgpKQogICAgICAgICBwb3B1bGF0ZShpdGVtcyk7CkBAIC0xNzUsMTIgKzE3NSwxMiBAQCB2b2lk
IFdlYkNvbnRleHRNZW51UHJveHlHdGs6OnNob3coKQogICAgICAgICAgICAgICAgICAgIGV2ZW50
ID8gZXZlbnQtPmJ1dHRvbi5idXR0b24gOiAzLCBldmVudCA/IGV2ZW50LT5idXR0b24udGltZSA6
IEdES19DVVJSRU5UX1RJTUUpOwogfQogCi12b2lkIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OnNo
b3dDb250ZXh0TWVudVdpdGhJdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0
YT4mIGl0ZW1zKQordm9pZCBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpzaG93Q29udGV4dE1lbnVX
aXRoSXRlbXMoVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiYpCiB7CiB9CiAKLVdlYkNv
bnRleHRNZW51UHJveHlHdGs6OldlYkNvbnRleHRNZW51UHJveHlHdGsoR3RrV2lkZ2V0KiB3ZWJW
aWV3LCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNv
bnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKLSAgICA6IFdlYkNvbnRleHRNZW51UHJv
eHkoY29udGV4dCwgdXNlckRhdGEpCitXZWJDb250ZXh0TWVudVByb3h5R3RrOjpXZWJDb250ZXh0
TWVudVByb3h5R3RrKEd0a1dpZGdldCogd2ViVmlldywgV2ViUGFnZVByb3h5JiBwYWdlLCBDb250
ZXh0TWVudUNvbnRleHREYXRhJiYgY29udGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQor
ICAgIDogV2ViQ29udGV4dE1lbnVQcm94eShXVEZNb3ZlKGNvbnRleHQpLCB1c2VyRGF0YSkKICAg
ICAsIG1fd2ViVmlldyh3ZWJWaWV3KQogICAgICwgbV9wYWdlKCZwYWdlKQogICAgICwgbV9tZW51
KEdUS19NRU5VKGd0a19tZW51X25ldygpKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaAkocmV2aXNpb24gMjI2MTk1
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsu
aAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29udGV4dE1lbnVQcm94eUd0a19oCi0j
ZGVmaW5lIFdlYkNvbnRleHRNZW51UHJveHlHdGtfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKIApAQCAtNDQsOSArNDMsOSBAQCBjbGFzcyBXZWJQYWdlUHJveHk7
CiAKIGNsYXNzIFdlYkNvbnRleHRNZW51UHJveHlHdGsgOiBwdWJsaWMgV2ViQ29udGV4dE1lbnVQ
cm94eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKEd0a1dpZGdldCogd2lkZ2V0
LCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNvbnRl
eHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoR3Rr
V2lkZ2V0KiB3aWRnZXQsIFdlYlBhZ2VQcm94eSYgcGFnZSwgQ29udGV4dE1lbnVDb250ZXh0RGF0
YSYmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYkNvbnRleHRNZW51UHJveHlHdGsod2lkZ2V0LCBwYWdlLCBj
b250ZXh0LCB1c2VyRGF0YSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb250
ZXh0TWVudVByb3h5R3RrKHdpZGdldCwgcGFnZSwgV1RGTW92ZShjb250ZXh0KSwgdXNlckRhdGEp
KTsKICAgICB9CiAgICAgfldlYkNvbnRleHRNZW51UHJveHlHdGsoKTsKIApAQCAtNTQsMTIgKzUz
LDEyIEBAIHB1YmxpYzoKICAgICBHdGtNZW51KiBndGtNZW51KCkgY29uc3QgeyByZXR1cm4gbV9t
ZW51OyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViQ29udGV4dE1lbnVQcm94eUd0ayhHdGtXaWRnZXQq
LCBXZWJQYWdlUHJveHkmLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwgY29uc3QgVXNl
ckRhdGEmKTsKKyAgICBXZWJDb250ZXh0TWVudVByb3h5R3RrKEd0a1dpZGdldCosIFdlYlBhZ2VQ
cm94eSYsIENvbnRleHRNZW51Q29udGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2
b2lkIHNob3coKSBvdmVycmlkZTsKLSAgICB2b2lkIHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhj
b25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcHBlbmQoR01lbnUqLCBjb25zdCBXZWJDb250ZXh0TWVu
dUl0ZW1HbGliJik7CiAgICAgR1JlZlB0cjxHTWVudT4gYnVpbGRNZW51KGNvbnN0IFZlY3RvcjxX
ZWJDb250ZXh0TWVudUl0ZW1HbGliPiYpOwotICAgIHZvaWQgcG9wdWxhdGUoY29uc3QgVmVjdG9y
PFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+PiYpOworICAgIHZvaWQgcG9wdWxhdGUoY29uc3Qg
VmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiYpOwogICAgIHN0YXRpYyB2b2lkIG1lbnVQ
b3NpdGlvbkZ1bmN0aW9uKEd0a01lbnUqLCBnaW50KiwgZ2ludCosIGdib29sZWFuKiwgV2ViQ29u
dGV4dE1lbnVQcm94eUd0ayopOwogCiAgICAgR3RrV2lkZ2V0KiBtX3dlYlZpZXc7CkBAIC03Myw0
ICs3MiwzIEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShDT05URVhUX01FTlVTKQotI2VuZGlmIC8vIFdlYkNvbnRleHRNZW51UHJveHlHdGtfaApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
LmgJKHJldmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw5ICs5NCw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYs
IGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBvdmVycmlkZTsKICNlbmRpZgogICAgIFJlZlB0cjxXZWJQ
b3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Jikgb3ZlcnJp
ZGU7Ci0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgUmVmUHRyPFdlYkNvbnRleHRNZW51
UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5JiwgY29uc3QgQ29udGV4
dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRhJikgb3ZlcnJpZGU7Ci0jZW5kaWYKICAg
ICBSZWY8V2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZT4gY3JlYXRlVmFsaWRhdGlvbkJ1YmJsZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdlYkNvcmU6OlZhbGlkYXRpb25CdWJibGU6OlNl
dHRpbmdzJikgZmluYWw7CiAKICAgICB2b2lkIHNldFRleHRJbmRpY2F0b3IoUmVmPFdlYkNvcmU6
OlRleHRJbmRpY2F0b3I+LCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUpIG92
ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbQkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NDgsMTMgKzQ0
OCw2IEBAIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGwKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotUmVmUHRyPFdlYkNv
bnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdl
YlBhZ2VQcm94eSYsIGNvbnN0IFVzZXJEYXRhJikKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0K
LSNlbmRpZgotCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRUZXh0SW5kaWNhdG9yKFJlZjxUZXh0
SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yLCBUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUpCiB7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMuaAkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBw
cml2YXRlOgogCiAgICAgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQ
cm94eShXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
LSAgICBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShX
ZWJQYWdlUHJveHkmLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwgY29uc3QgVXNlckRh
dGEmKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4
dE1lbnVQcm94eShXZWJQYWdlUHJveHkmLCBDb250ZXh0TWVudUNvbnRleHREYXRhJiYsIGNvbnN0
IFVzZXJEYXRhJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbQkocmV2aXNpb24gMjI2MTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NDgsOSArNDQ4LDkg
QEAgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbAogfQogCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi1SZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVu
dEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBD
b250ZXh0TWVudUNvbnRleHREYXRhJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CitSZWY8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRN
ZW51UHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBDb250ZXh0TWVudUNvbnRleHREYXRhJiYgY29u
dGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIHJldHVybiBXZWJDb250ZXh0
TWVudVByb3h5TWFjOjpjcmVhdGUobV92aWV3LCBwYWdlLCBjb250ZXh0LCB1c2VyRGF0YSk7Cisg
ICAgcmV0dXJuIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OmNyZWF0ZShtX3ZpZXcsIHBhZ2UsIFdU
Rk1vdmUoY29udGV4dCksIHVzZXJEYXRhKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgJKHJl
dmlzaW9uIDIyNjE5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0
TWVudVByb3h5TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE0ICs0NywxNCBAQCBjbGFzcyBX
ZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkNvbnRleHRNZW51UHJveHlNYWMgOiBwdWJsaWMgV2Vi
Q29udGV4dE1lbnVQcm94eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKE5TVmll
dyogdmlldywgV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRh
JiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCisgICAgc3RhdGljIGF1dG8gY3Jl
YXRlKE5TVmlldyogdmlldywgV2ViUGFnZVByb3h5JiBwYWdlLCBDb250ZXh0TWVudUNvbnRleHRE
YXRhJiYgY29udGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29udGV4dE1lbnVQcm94eU1hYyh2aWV3LCBwYWdlLCBj
b250ZXh0LCB1c2VyRGF0YSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb250
ZXh0TWVudVByb3h5TWFjKHZpZXcsIHBhZ2UsIFdURk1vdmUoY29udGV4dCksIHVzZXJEYXRhKSk7
CiAgICAgfQogICAgIH5XZWJDb250ZXh0TWVudVByb3h5TWFjKCk7CiAKICAgICB2b2lkIGNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmKTsKLSAgICB2
b2lkIHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJ
dGVtRGF0YT4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhW
ZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mJikgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9DT05UUk9MUykKICAgICB2b2lkIGNsZWFyU2VydmljZXNNZW51KCk7CkBAIC02NCw3
ICs2NCw3IEBAIHB1YmxpYzoKICAgICBOU1dpbmRvdyAqd2luZG93KCkgY29uc3Q7CiAKIHByaXZh
dGU6Ci0gICAgV2ViQ29udGV4dE1lbnVQcm94eU1hYyhOU1ZpZXcqLCBXZWJQYWdlUHJveHkmLCBj
b25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwgY29uc3QgVXNlckRhdGEmKTsKKyAgICBXZWJD
b250ZXh0TWVudVByb3h5TWFjKE5TVmlldyosIFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51Q29u
dGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHNob3coKSBvdmVycmlkZTsK
IAogICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHk+IG1fY29udGV4dE1lbnVM
aXN0ZW5lcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVu
dVByb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCShyZXZpc2lvbiAyMjYxOTUpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTUyLDggKzE1Miw4IEBAIC0gKHZvaWQpZm9yd2FyZENvbnRleHRNZW51QWN0aW9uOihp
ZClzZW4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkNvbnRleHRNZW51UHJveHlNYWM6Oldl
YkNvbnRleHRNZW51UHJveHlNYWMoTlNWaWV3KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkmIHBhZ2Us
IGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKLSAgICA6IFdlYkNvbnRleHRNZW51UHJveHkoY29udGV4dCwgdXNlckRhdGEpCitX
ZWJDb250ZXh0TWVudVByb3h5TWFjOjpXZWJDb250ZXh0TWVudVByb3h5TWFjKE5TVmlldyogd2Vi
VmlldywgV2ViUGFnZVByb3h5JiBwYWdlLCBDb250ZXh0TWVudUNvbnRleHREYXRhJiYgY29udGV4
dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQorICAgIDogV2ViQ29udGV4dE1lbnVQcm94eShX
VEZNb3ZlKGNvbnRleHQpLCB1c2VyRGF0YSkKICAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQogICAg
ICwgbV9wYWdlKHBhZ2UpCiB7CkBAIC00NTEsNyArNDUxLDcgQEAgUmV0YWluUHRyPE5TTWVudUl0
ZW0+IFdlYkNvbnRleHRNZW51UHJveAogICAgIH0KIH0KIAotdm9pZCBXZWJDb250ZXh0TWVudVBy
b3h5TWFjOjpzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbURhdGE+JiBpdGVtcykKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2hvd0Nv
bnRleHRNZW51V2l0aEl0ZW1zKFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYmIGl0ZW1z
KQogewogICAgIGF1dG8gbWVudSA9IGNyZWF0ZUNvbnRleHRNZW51RnJvbUl0ZW1zKGl0ZW1zKTsK
ICAgICBbW1dLTWVudVRhcmdldCBzaGFyZWRNZW51VGFyZ2V0XSBzZXRNZW51UHJveHk6dGhpc107
CkBAIC00NjksMTEgKzQ2OSwxMSBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnNob3dD
b250ZXh0CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2hvd0NvbnRleHRNZW51KCkK
IHsKLSAgICBWZWN0b3I8UmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4+IHByb3Bvc2VkQVBJSXRl
bXM7CisgICAgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiBwcm9wb3NlZEFQSUl0ZW1z
OwogICAgIGZvciAoYXV0byYgaXRlbSA6IG1fY29udGV4dC5tZW51SXRlbXMoKSkKICAgICAgICAg
cHJvcG9zZWRBUElJdGVtcy5hcHBlbmQoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbSkp
OwogCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+PiBjbGllbnRJdGVtczsK
KyAgICBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+IGNsaWVudEl0ZW1zOwogICAgIGJv
b2wgdXNlUHJvcG9zZWRJdGVtcyA9IHRydWU7CiAKICAgICBpZiAobV9jb250ZXh0TWVudUxpc3Rl
bmVyKSB7CkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpz
aG93Q29udGV4dAogICAgIGlmIChpdGVtcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhpdGVtcyk7CisgICAgc2hvd0NvbnRleHRNZW51
V2l0aEl0ZW1zKFdURk1vdmUoaXRlbXMpKTsKIH0KIAogTlNXaW5kb3cgKldlYkNvbnRleHRNZW51
UHJveHlNYWM6OndpbmRvdygpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
cGUvV2ViQ29udGV4dE1lbnVQcm94eVdQRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dwZS9XZWJDb250ZXh0TWVudVByb3h5V1BFLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYkNvbnRleHRNZW51UHJveHlXUEUuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJDb250ZXh0TWVudVByb3h5V1BFIDogcHVibGljIFdlYkNvbnRleHRNZW51UHJv
eHkgeworcHVibGljOgorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShDb250ZXh0TWVudUNvbnRleHRE
YXRhJiYgY29udGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29udGV4dE1lbnVQcm94eVdQRShXVEZNb3ZlKGNvbnRl
eHQpLCB1c2VyRGF0YSkpOworICAgIH0KKworICAgIHZvaWQgc2hvd0NvbnRleHRNZW51V2l0aEl0
ZW1zKFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYmKSBmaW5hbCB7IH0KKyAgICB2b2lk
IHNob3coKSBmaW5hbCB7IH07CisKK3ByaXZhdGU6CisgICAgV2ViQ29udGV4dE1lbnVQcm94eVdQ
RShDb250ZXh0TWVudUNvbnRleHREYXRhJiYgY29udGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhKQorICAgICAgICA6IFdlYkNvbnRleHRNZW51UHJveHkoV1RGTW92ZShjb250ZXh0KSwgdXNl
ckRhdGEpCisgICAgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="349045"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>