<?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>182899</bug_id>
          
          <creation_ts>2018-02-16 19:25:43 -0800</creation_ts>
          <short_desc>[RenderTreeBuilder] Cleanup RenderTreeBuilder</short_desc>
          <delta_ts>2018-02-16 22:02:07 -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>Layout and Rendering</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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1400122</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-02-16 19:25:43 -0800</bug_when>
    <thetext>move functions etc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400125</commentid>
    <comment_count>1</comment_count>
      <attachid>334093</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-02-16 19:27:59 -0800</bug_when>
    <thetext>Created attachment 334093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400126</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-16 19:28:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/37627888&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400127</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-16 19:28:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/37627890&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400128</commentid>
    <comment_count>4</comment_count>
      <attachid>334094</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-02-16 19:30:03 -0800</bug_when>
    <thetext>Created attachment 334094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400151</commentid>
    <comment_count>5</comment_count>
      <attachid>334094</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-16 21:24:29 -0800</bug_when>
    <thetext>Comment on attachment 334094
Patch

Rejecting attachment 334094 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 334094, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
rdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 332, in _call_chain
    result = func(*args)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 1170, in https_open
    return self.do_open(conn_factory, req)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 1118, in do_open
    raise URLError(err)
urllib2.URLError: &lt;urlopen error [Errno 60] Operation timed out&gt;

Full output: http://webkit-queues.webkit.org/results/6547964</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400157</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-02-16 22:02:07 -0800</bug_when>
    <thetext>Committed r228595: &lt;https://trac.webkit.org/changeset/228595&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334093</attachid>
            <date>2018-02-16 19:27:59 -0800</date>
            <delta_ts>2018-02-16 19:28:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182899-20180216192758.patch</filename>
            <type>text/plain</type>
            <size>31222</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjEzNjgxN2UyODZlYzg2
YmFmNzZhYTE0MGVhODVmMjllM2Q5OTU5MC4uNTc4ZDYzYjNkY2M0Zjc2NDczOTY1MmJhODU1MzY0
OGViOWYwZDQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE4LTAyLTE2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1JlbmRlclRyZWVCdWlsZGVy
XSBDbGVhbnVwIFJlbmRlclRyZWVCdWlsZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVC
dWlsZGVyOjp0YWtlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6
Om1vdmVDaGlsZFRvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjptb3Zl
QWxsQ2hpbGRyZW5Ubyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6bW92
ZUNoaWxkcmVuVG8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6Om1vdmVB
bGxDaGlsZHJlbkluY2x1ZGluZ0Zsb2F0c1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRy
ZWVCdWlsZGVyOjptYWtlQ2hpbGRyZW5Ob25JbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVHJlZUJ1aWxkZXI6OnNwbGl0QW5vbnltb3VzQm94ZXNBcm91bmRDaGlsZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6dGFrZUNoaWxkRnJvbVJlbmRlck1lbnVMaXN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjp0YWtlQ2hp
bGRGcm9tUmVuZGVyQnV0dG9uKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWls
ZGVyOjpjdXJyZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6Qmxv
Y2s6OmRyb3BBbm9ueW1vdXNCb3hDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRyZWVCdWlsZGVyOjpCbG9ja0Zsb3c6Om1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zsb2F0c1Rv
KToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGb3JtQ29u
dHJvbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OkZvcm1Db250
cm9sczo6dGFrZUNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZUJ1aWxkZXJGb3JtQ29udHJvbHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
cmVlQnVpbGRlcjo6TXVsdGlDb2x1bW46OmNyZWF0ZUZyYWdtZW50ZWRGbG93KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6ZGVzdHJveUZyYWdtZW50
ZWRGbG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJS
dWJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpSdWJ5Ojptb3Zl
SW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OlJ1
Ynk6Om1vdmVCbG9ja0NoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWls
ZGVyOjpSdWJ5Ojp0YWtlQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWls
ZGVyOjpUYWJsZTo6Y29sbGFwc2VBbmREZXN0cm95QW5vbnltb3VzU2libGluZ1Jvd3MpOgorCiAy
MDE4LTAyLTE2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1Jl
bmRlclRyZWVCdWlsZGVyXSBNb3ZlIFJlbmRlckJveE1vZGVsT2JqZWN0Ojptb3ZlQ2hpbGQqKCkg
dG8gUmVuZGVyVHJlZUJ1aWxkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKaW5kZXggMzM3ZGFjZGVhNGI1Y2Y5MzRjY2JlNjU5ZjkxMWVkNzNlNzhiNGNh
NS4uOTAyYmIyOGRmYjk1YjdlYmYwNGEwMjAyMTQwNTBmYWIxMTlmMjRmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTIwMjMsNyArMjAyMyw3
IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2Ug
ZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sCiAgICAgLy8gRnJlc2ggZmxvYXRzIG5lZWQgdG8g
YmUgcmVwYXJlbnRlZCBpZiB0aGV5IGFjdHVhbGx5IGJlbG9uZyB0byB0aGUgcHJldmlvdXMgYW5v
bnltb3VzIGJsb2NrLgogICAgIC8vIEl0IGNvcGllcyB0aGUgbG9naWMgb2YgUmVuZGVyQmxvY2s6
OmFkZENoaWxkSWdub3JpbmdDb250aW51YXRpb24KICAgICBpZiAobm9Mb25nZXJBZmZlY3RzUGFy
ZW50QmxvY2soKSAmJiBzdHlsZSgpLmlzRmxvYXRpbmcoKSAmJiBwcmV2aW91c1NpYmxpbmcoKSAm
JiBwcmV2aW91c1NpYmxpbmcoKS0+aXNBbm9ueW1vdXNCbG9jaygpKQotICAgICAgICBSZW5kZXJU
cmVlQnVpbGRlcjo6Y3VycmVudCgpLT5tb3ZlQ2hpbGRUbyhkb3duY2FzdDxSZW5kZXJCb3hNb2Rl
bE9iamVjdD4oKnBhcmVudCgpKSwgJmRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PigqcHJl
dmlvdXNTaWJsaW5nKCkpLCB0aGlzLCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXplQWZ0ZXJJ
bnNlcnRpb246Ok5vKTsKKyAgICAgICAgUmVuZGVyVHJlZUJ1aWxkZXI6OmN1cnJlbnQoKS0+bW92
ZUNoaWxkVG8oZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpwYXJlbnQoKSksIGRvd25j
YXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PigqcHJldmlvdXNTaWJsaW5nKCkpLCAqdGhpcywgUmVu
ZGVyVHJlZUJ1aWxkZXI6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpObyk7CiAKICAgICBpZiAo
ZGlmZiA+PSBTdHlsZURpZmZlcmVuY2VSZXBhaW50KSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGNvdWxkIHVzZSBhIGNoZWFwZXIgc3R5bGUtb25seSB0ZXN0IGluc3RlYWQgb2YgU2ltcGxlTGlu
ZUxheW91dDo6Y2FuVXNlRm9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKaW5kZXggNGRlODMzYzE4MmM5Mjk4YmE4
ZTkxZTcwMzU0OGE3Zjg5MDNjYzg4OS4uZmY4MzU4YWUwZTQ1NzlkYjY1OGZmNGU1ODQ5YmY2ZDY1
YWQxMTk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCkBAIC0yODYsMTAgKzI4NiwxMCBAQCBSZW5kZXJQdHI8
UmVuZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVpbGRlcjo6dGFrZUNoaWxkKFJlbmRlckVsZW1lbnQm
IHBhcmVudCwgUmVuZAogICAgICAgICByZXR1cm4gcnVieUJ1aWxkZXIoKS50YWtlQ2hpbGQoZG93
bmNhc3Q8UmVuZGVyUnVieVJ1bj4ocGFyZW50KSwgY2hpbGQpOwogCiAgICAgaWYgKGlzPFJlbmRl
ck1lbnVMaXN0PihwYXJlbnQpKQotICAgICAgICByZXR1cm4gdGFrZUNoaWxkRnJvbVJlbmRlck1l
bnVMaXN0KGRvd25jYXN0PFJlbmRlck1lbnVMaXN0PihwYXJlbnQpLCBjaGlsZCk7CisgICAgICAg
IHJldHVybiBmb3JtQ29udHJvbHNCdWlsZGVyKCkudGFrZUNoaWxkKGRvd25jYXN0PFJlbmRlck1l
bnVMaXN0PihwYXJlbnQpLCBjaGlsZCk7CiAKICAgICBpZiAoaXM8UmVuZGVyQnV0dG9uPihwYXJl
bnQpKQotICAgICAgICByZXR1cm4gdGFrZUNoaWxkRnJvbVJlbmRlckJ1dHRvbihkb3duY2FzdDxS
ZW5kZXJCdXR0b24+KHBhcmVudCksIGNoaWxkKTsKKyAgICAgICAgcmV0dXJuIGZvcm1Db250cm9s
c0J1aWxkZXIoKS50YWtlQ2hpbGQoZG93bmNhc3Q8UmVuZGVyQnV0dG9uPihwYXJlbnQpLCBjaGls
ZCk7CiAKICAgICBpZiAoaXM8UmVuZGVyR3JpZD4ocGFyZW50KSkKICAgICAgICAgcmV0dXJuIHRh
a2VDaGlsZEZyb21SZW5kZXJHcmlkKGRvd25jYXN0PFJlbmRlckdyaWQ+KHBhcmVudCksIGNoaWxk
KTsKQEAgLTM3Nyw0NiArMzc3LDQ2IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6Omluc2VydENo
aWxkVG9SZW5kZXJFbGVtZW50SW50ZXJuYWwoUmVuZGVyRWxlbWVudCYgcGFyZW50CiAgICAgbmV3
Q2hpbGQtPnNldEhhc091dGxpbmVBdXRvQW5jZXN0b3IoKTsKIH0KIAotdm9pZCBSZW5kZXJUcmVl
QnVpbGRlcjo6bW92ZUNoaWxkVG8oUmVuZGVyQm94TW9kZWxPYmplY3QmIGZyb20sIFJlbmRlckJv
eE1vZGVsT2JqZWN0KiB0bywgUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZv
cmVDaGlsZCwgTm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24gbm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24p
Cit2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjptb3ZlQ2hpbGRUbyhSZW5kZXJCb3hNb2RlbE9iamVj
dCYgZnJvbSwgUmVuZGVyQm94TW9kZWxPYmplY3QmIHRvLCBSZW5kZXJPYmplY3QmIGNoaWxkLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkLCBOb3JtYWxpemVBZnRlckluc2VydGlvbiBub3JtYWxp
emVBZnRlckluc2VydGlvbikKIHsKICAgICAvLyBXZSBhc3N1bWUgdGhhdCBjYWxsZXJzIGhhdmUg
Y2xlYXJlZCB0aGVpciBwb3NpdGlvbmVkIG9iamVjdHMgbGlzdCBmb3IgY2hpbGQgbW92ZXMgc28g
dGhlCiAgICAgLy8gcG9zaXRpb25lZCByZW5kZXJlciBtYXBzIGRvbid0IGJlY29tZSBzdGFsZS4g
SXQgd291bGQgYmUgdG9vIHNsb3cgdG8gZG8gdGhlIG1hcCBsb29rdXAgb24gZWFjaCBjYWxsLgog
ICAgIEFTU0VSVChub3JtYWxpemVBZnRlckluc2VydGlvbiA9PSBOb3JtYWxpemVBZnRlckluc2Vy
dGlvbjo6Tm8gfHwgIWlzPFJlbmRlckJsb2NrPihmcm9tKSB8fCAhZG93bmNhc3Q8UmVuZGVyQmxv
Y2s+KGZyb20pLmhhc1Bvc2l0aW9uZWRPYmplY3RzKCkpOwogCi0gICAgQVNTRVJUKCZmcm9tID09
IGNoaWxkLT5wYXJlbnQoKSk7Ci0gICAgQVNTRVJUKCFiZWZvcmVDaGlsZCB8fCB0byA9PSBiZWZv
cmVDaGlsZC0+cGFyZW50KCkpOwotICAgIGlmIChub3JtYWxpemVBZnRlckluc2VydGlvbiA9PSBO
b3JtYWxpemVBZnRlckluc2VydGlvbjo6WWVzICYmICh0by0+aXNSZW5kZXJCbG9jaygpIHx8IHRv
LT5pc1JlbmRlcklubGluZSgpKSkgeworICAgIEFTU0VSVCgmZnJvbSA9PSBjaGlsZC5wYXJlbnQo
KSk7CisgICAgQVNTRVJUKCFiZWZvcmVDaGlsZCB8fCAmdG8gPT0gYmVmb3JlQ2hpbGQtPnBhcmVu
dCgpKTsKKyAgICBpZiAobm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24gPT0gTm9ybWFsaXplQWZ0ZXJJ
bnNlcnRpb246OlllcyAmJiAodG8uaXNSZW5kZXJCbG9jaygpIHx8IHRvLmlzUmVuZGVySW5saW5l
KCkpKSB7CiAgICAgICAgIC8vIFRha2VzIGNhcmUgb2YgYWRkaW5nIHRoZSBuZXcgY2hpbGQgY29y
cmVjdGx5IGlmIHRvQmxvY2sgYW5kIGZyb21CbG9jawogICAgICAgICAvLyBoYXZlIGRpZmZlcmVu
dCBraW5kIG9mIGNoaWxkcmVuIChibG9jayB2cyBpbmxpbmUpLgotICAgICAgICBhdXRvIGNoaWxk
VG9Nb3ZlID0gdGFrZUNoaWxkRnJvbVJlbmRlckVsZW1lbnQoZnJvbSwgKmNoaWxkKTsKLSAgICAg
ICAgaW5zZXJ0Q2hpbGQoKnRvLCBXVEZNb3ZlKGNoaWxkVG9Nb3ZlKSwgYmVmb3JlQ2hpbGQpOwor
ICAgICAgICBhdXRvIGNoaWxkVG9Nb3ZlID0gdGFrZUNoaWxkRnJvbVJlbmRlckVsZW1lbnQoZnJv
bSwgY2hpbGQpOworICAgICAgICBpbnNlcnRDaGlsZCh0bywgV1RGTW92ZShjaGlsZFRvTW92ZSks
IGJlZm9yZUNoaWxkKTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGNoaWxkVG9Nb3ZlID0g
dGFrZUNoaWxkRnJvbVJlbmRlckVsZW1lbnQoZnJvbSwgKmNoaWxkKTsKLSAgICAgICAgaW5zZXJ0
Q2hpbGRUb1JlbmRlckVsZW1lbnRJbnRlcm5hbCgqdG8sIFdURk1vdmUoY2hpbGRUb01vdmUpLCBi
ZWZvcmVDaGlsZCk7CisgICAgICAgIGF1dG8gY2hpbGRUb01vdmUgPSB0YWtlQ2hpbGRGcm9tUmVu
ZGVyRWxlbWVudChmcm9tLCBjaGlsZCk7CisgICAgICAgIGluc2VydENoaWxkVG9SZW5kZXJFbGVt
ZW50SW50ZXJuYWwodG8sIFdURk1vdmUoY2hpbGRUb01vdmUpLCBiZWZvcmVDaGlsZCk7CiAgICAg
fQogfQogCi12b2lkIFJlbmRlclRyZWVCdWlsZGVyOjptb3ZlQ2hpbGRUbyhSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHRvLCBSZW5kZXJPYmplY3QqIGNo
aWxkLCBOb3JtYWxpemVBZnRlckluc2VydGlvbiBub3JtYWxpemVBZnRlckluc2VydGlvbikKK3Zv
aWQgUmVuZGVyVHJlZUJ1aWxkZXI6Om1vdmVDaGlsZFRvKFJlbmRlckJveE1vZGVsT2JqZWN0JiBm
cm9tLCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgdG8sIFJlbmRlck9iamVjdCYgY2hpbGQsIE5vcm1h
bGl6ZUFmdGVySW5zZXJ0aW9uIG5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uKQogewogICAgIG1vdmVD
aGlsZFRvKGZyb20sIHRvLCBjaGlsZCwgbnVsbHB0ciwgbm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24p
OwogfQogCi12b2lkIFJlbmRlclRyZWVCdWlsZGVyOjptb3ZlQWxsQ2hpbGRyZW5UbyhSZW5kZXJC
b3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHRvLCBOb3JtYWxpemVB
ZnRlckluc2VydGlvbiBub3JtYWxpemVBZnRlckluc2VydGlvbikKK3ZvaWQgUmVuZGVyVHJlZUJ1
aWxkZXI6Om1vdmVBbGxDaGlsZHJlblRvKFJlbmRlckJveE1vZGVsT2JqZWN0JiBmcm9tLCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCYgdG8sIE5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uIG5vcm1hbGl6ZUFm
dGVySW5zZXJ0aW9uKQogewogICAgIG1vdmVBbGxDaGlsZHJlblRvKGZyb20sIHRvLCBudWxscHRy
LCBub3JtYWxpemVBZnRlckluc2VydGlvbik7CiB9CiAKLXZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6
Om1vdmVBbGxDaGlsZHJlblRvKFJlbmRlckJveE1vZGVsT2JqZWN0JiBmcm9tLCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogdG8sIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQsIE5vcm1hbGl6ZUFmdGVy
SW5zZXJ0aW9uIG5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uKQordm9pZCBSZW5kZXJUcmVlQnVpbGRl
cjo6bW92ZUFsbENoaWxkcmVuVG8oUmVuZGVyQm94TW9kZWxPYmplY3QmIGZyb20sIFJlbmRlckJv
eE1vZGVsT2JqZWN0JiB0bywgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCwgTm9ybWFsaXplQWZ0
ZXJJbnNlcnRpb24gbm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pCiB7CiAgICAgbW92ZUNoaWxkcmVu
VG8oZnJvbSwgdG8sIGZyb20uZmlyc3RDaGlsZCgpLCBudWxscHRyLCBiZWZvcmVDaGlsZCwgbm9y
bWFsaXplQWZ0ZXJJbnNlcnRpb24pOwogfQogCi12b2lkIFJlbmRlclRyZWVCdWlsZGVyOjptb3Zl
Q2hpbGRyZW5UbyhSZW5kZXJCb3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHRvLCBSZW5kZXJPYmplY3QqIHN0YXJ0Q2hpbGQsIFJlbmRlck9iamVjdCogZW5kQ2hpbGQs
IE5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uIG5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uKQordm9pZCBS
ZW5kZXJUcmVlQnVpbGRlcjo6bW92ZUNoaWxkcmVuVG8oUmVuZGVyQm94TW9kZWxPYmplY3QmIGZy
b20sIFJlbmRlckJveE1vZGVsT2JqZWN0JiB0bywgUmVuZGVyT2JqZWN0KiBzdGFydENoaWxkLCBS
ZW5kZXJPYmplY3QqIGVuZENoaWxkLCBOb3JtYWxpemVBZnRlckluc2VydGlvbiBub3JtYWxpemVB
ZnRlckluc2VydGlvbikKIHsKICAgICBtb3ZlQ2hpbGRyZW5Ubyhmcm9tLCB0bywgc3RhcnRDaGls
ZCwgZW5kQ2hpbGQsIG51bGxwdHIsIG5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uKTsKIH0KIAotdm9p
ZCBSZW5kZXJUcmVlQnVpbGRlcjo6bW92ZUNoaWxkcmVuVG8oUmVuZGVyQm94TW9kZWxPYmplY3Qm
IGZyb20sIFJlbmRlckJveE1vZGVsT2JqZWN0KiB0bywgUmVuZGVyT2JqZWN0KiBzdGFydENoaWxk
LCBSZW5kZXJPYmplY3QqIGVuZENoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkLCBOb3Jt
YWxpemVBZnRlckluc2VydGlvbiBub3JtYWxpemVBZnRlckluc2VydGlvbikKK3ZvaWQgUmVuZGVy
VHJlZUJ1aWxkZXI6Om1vdmVDaGlsZHJlblRvKFJlbmRlckJveE1vZGVsT2JqZWN0JiBmcm9tLCBS
ZW5kZXJCb3hNb2RlbE9iamVjdCYgdG8sIFJlbmRlck9iamVjdCogc3RhcnRDaGlsZCwgUmVuZGVy
T2JqZWN0KiBlbmRDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCwgTm9ybWFsaXplQWZ0
ZXJJbnNlcnRpb24gbm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pCiB7CiAgICAgLy8gVGhpcyBjb25k
aXRpb24gaXMgcmFyZWx5IGhpdCBzaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIHVzdWFsbHkgY2FsbGVk
IG9uCiAgICAgLy8gYW5vbnltb3VzIGJsb2NrcyB3aGljaCBjYW4gbm8gbG9uZ2VyIGNhcnJ5IHBv
c2l0aW9uZWQgb2JqZWN0cyAoc2VlIHIxMjA3NjEpCkBAIC00MjcsNyArNDI3LDcgQEAgdm9pZCBS
ZW5kZXJUcmVlQnVpbGRlcjo6bW92ZUNoaWxkcmVuVG8oUmVuZGVyQm94TW9kZWxPYmplY3QmIGZy
b20sIFJlbmRlckJveE1vZGUKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4o
ZnJvbSkucmVtb3ZlRmxvYXRpbmdPYmplY3RzKCk7CiAgICAgfQogCi0gICAgQVNTRVJUKCFiZWZv
cmVDaGlsZCB8fCB0byA9PSBiZWZvcmVDaGlsZC0+cGFyZW50KCkpOworICAgIEFTU0VSVCghYmVm
b3JlQ2hpbGQgfHwgJnRvID09IGJlZm9yZUNoaWxkLT5wYXJlbnQoKSk7CiAgICAgZm9yIChSZW5k
ZXJPYmplY3QqIGNoaWxkID0gc3RhcnRDaGlsZDsgY2hpbGQgJiYgY2hpbGQgIT0gZW5kQ2hpbGQ7
ICkgewogICAgICAgICAvLyBTYXZlIG91ciBuZXh0IHNpYmxpbmcgYXMgbW92ZUNoaWxkVG8gd2ls
bCBjbGVhciBpdC4KICAgICAgICAgUmVuZGVyT2JqZWN0KiBuZXh0U2libGluZyA9IGNoaWxkLT5u
ZXh0U2libGluZygpOwpAQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6
Om1vdmVDaGlsZHJlblRvKFJlbmRlckJveE1vZGVsT2JqZWN0JiBmcm9tLCBSZW5kZXJCb3hNb2Rl
CiAgICAgICAgICAgICBuZXh0U2libGluZyA9IG5leHRTaWJsaW5nLT5uZXh0U2libGluZygpOwog
ICAgICAgICB9CiAKLSAgICAgICAgbW92ZUNoaWxkVG8oZnJvbSwgdG8sIGNoaWxkLCBiZWZvcmVD
aGlsZCwgbm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pOworICAgICAgICBtb3ZlQ2hpbGRUbyhmcm9t
LCB0bywgKmNoaWxkLCBiZWZvcmVDaGlsZCwgbm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pOwogICAg
ICAgICBjaGlsZCA9IG5leHRTaWJsaW5nOwogICAgIH0KIH0KQEAgLTQ2MCw3ICs0NjAsNyBAQCB2
b2lkIFJlbmRlclRyZWVCdWlsZGVyOjptb3ZlQWxsQ2hpbGRyZW5JbmNsdWRpbmdGbG9hdHNUbyhS
ZW5kZXJCbG9jayYgZnJvbSwgUmVuZAogICAgICAgICBibG9ja0Zsb3dCdWlsZGVyKCkubW92ZUFs
bENoaWxkcmVuSW5jbHVkaW5nRmxvYXRzVG8oZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93Pihmcm9t
KSwgdG8sIG5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBtb3ZlQWxsQ2hpbGRyZW5Ubyhmcm9tLCAmdG8sIG5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9u
KTsKKyAgICBtb3ZlQWxsQ2hpbGRyZW5Ubyhmcm9tLCB0bywgbm9ybWFsaXplQWZ0ZXJJbnNlcnRp
b24pOwogfQogCiB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjptYWtlQ2hpbGRyZW5Ob25JbmxpbmUo
UmVuZGVyQmxvY2smIHBhcmVudCwgUmVuZGVyT2JqZWN0KiBpbnNlcnRpb25Qb2ludCkKQEAgLTQ5
Niw3ICs0OTYsNyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjptYWtlQ2hpbGRyZW5Ob25Jbmxp
bmUoUmVuZGVyQmxvY2smIHBhcmVudCwgUmVuZGVyT2JqZWN0KgogICAgICAgICBhdXRvIG5ld0Js
b2NrID0gcGFyZW50LmNyZWF0ZUFub255bW91c0Jsb2NrKCk7CiAgICAgICAgIGF1dG8mIGJsb2Nr
ID0gKm5ld0Jsb2NrOwogICAgICAgICBpbnNlcnRDaGlsZFRvUmVuZGVyRWxlbWVudEludGVybmFs
KHBhcmVudCwgV1RGTW92ZShuZXdCbG9jayksIGlubGluZVJ1blN0YXJ0KTsKLSAgICAgICAgbW92
ZUNoaWxkcmVuVG8ocGFyZW50LCAmYmxvY2ssIGlubGluZVJ1blN0YXJ0LCBjaGlsZCwgUmVuZGVy
VHJlZUJ1aWxkZXI6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpObyk7CisgICAgICAgIG1vdmVD
aGlsZHJlblRvKHBhcmVudCwgYmxvY2ssIGlubGluZVJ1blN0YXJ0LCBjaGlsZCwgUmVuZGVyVHJl
ZUJ1aWxkZXI6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpObyk7CiAgICAgfQogI2lmbmRlZiBO
REVCVUcKICAgICBmb3IgKFJlbmRlck9iamVjdCogYyA9IHBhcmVudC5maXJzdENoaWxkKCk7IGM7
IGMgPSBjLT5uZXh0U2libGluZygpKQpAQCAtNTI1LDcgKzUyNSw3IEBAIFJlbmRlck9iamVjdCog
UmVuZGVyVHJlZUJ1aWxkZXI6OnNwbGl0QW5vbnltb3VzQm94ZXNBcm91bmRDaGlsZChSZW5kZXJC
b3gmIHBhcmVuCiAgICAgICAgICAgICAvLyBTZWUgZm9yIGV4YW1wbGUgUmVuZGVyVGFibGVDZWxs
OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50LgogICAgICAgICAgICAgbWFya0JveEZvclJl
bGF5b3V0QWZ0ZXJTcGxpdCgqcGFyZW50Qm94KTsKICAgICAgICAgICAgIGluc2VydENoaWxkVG9S
ZW5kZXJFbGVtZW50SW50ZXJuYWwoKnBhcmVudEJveCwgV1RGTW92ZShuZXdQb3N0Qm94KSwgYm94
VG9TcGxpdC5uZXh0U2libGluZygpKTsKLSAgICAgICAgICAgIG1vdmVDaGlsZHJlblRvKGJveFRv
U3BsaXQsICZwb3N0Qm94LCBiZWZvcmVDaGlsZCwgbnVsbHB0ciwgUmVuZGVyVHJlZUJ1aWxkZXI6
Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpZZXMpOworICAgICAgICAgICAgbW92ZUNoaWxkcmVu
VG8oYm94VG9TcGxpdCwgcG9zdEJveCwgYmVmb3JlQ2hpbGQsIG51bGxwdHIsIFJlbmRlclRyZWVC
dWlsZGVyOjpOb3JtYWxpemVBZnRlckluc2VydGlvbjo6WWVzKTsKIAogICAgICAgICAgICAgbWFy
a0JveEZvclJlbGF5b3V0QWZ0ZXJTcGxpdChib3hUb1NwbGl0KTsKICAgICAgICAgICAgIG1hcmtC
b3hGb3JSZWxheW91dEFmdGVyU3BsaXQocG9zdEJveCk7CkBAIC02NTgsMjQgKzY1OCw2IEBAIHZv
aWQgUmVuZGVyVHJlZUJ1aWxkZXI6OnVwZGF0ZUFmdGVyRGVzY2VuZGFudHMoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIpCiAgICAgICAgIG11bHRpQ29sdW1uQnVpbGRlcigpLnVwZGF0ZUFmdGVyRGVz
Y2VuZGFudHMoZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PihyZW5kZXJlcikpOwogfQogCi1SZW5k
ZXJQdHI8UmVuZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVpbGRlcjo6dGFrZUNoaWxkRnJvbVJlbmRl
ck1lbnVMaXN0KFJlbmRlck1lbnVMaXN0JiBwYXJlbnQsIFJlbmRlck9iamVjdCYgY2hpbGQpCi17
Ci0gICAgYXV0byogaW5uZXJSZW5kZXJlciA9IHBhcmVudC5pbm5lclJlbmRlcmVyKCk7Ci0gICAg
aWYgKCFpbm5lclJlbmRlcmVyIHx8ICZjaGlsZCA9PSBpbm5lclJlbmRlcmVyKQotICAgICAgICBy
ZXR1cm4gYmxvY2tCdWlsZGVyKCkudGFrZUNoaWxkKHBhcmVudCwgY2hpbGQpOwotICAgIHJldHVy
biB0YWtlQ2hpbGQoKmlubmVyUmVuZGVyZXIsIGNoaWxkKTsKLX0KLQotUmVuZGVyUHRyPFJlbmRl
ck9iamVjdD4gUmVuZGVyVHJlZUJ1aWxkZXI6OnRha2VDaGlsZEZyb21SZW5kZXJCdXR0b24oUmVu
ZGVyQnV0dG9uJiBwYXJlbnQsIFJlbmRlck9iamVjdCYgY2hpbGQpCi17Ci0gICAgYXV0byogaW5u
ZXJSZW5kZXJlciA9IHBhcmVudC5pbm5lclJlbmRlcmVyKCk7Ci0gICAgaWYgKCFpbm5lclJlbmRl
cmVyIHx8ICZjaGlsZCA9PSBpbm5lclJlbmRlcmVyIHx8IGNoaWxkLnBhcmVudCgpID09ICZwYXJl
bnQpIHsKLSAgICAgICAgQVNTRVJUKCZjaGlsZCA9PSBpbm5lclJlbmRlcmVyIHx8ICFpbm5lclJl
bmRlcmVyKTsKLSAgICAgICAgcmV0dXJuIGJsb2NrQnVpbGRlcigpLnRha2VDaGlsZChwYXJlbnQs
IGNoaWxkKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRha2VDaGlsZCgqaW5uZXJSZW5kZXJlciwgY2hp
bGQpOwotfQotCiBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVpbGRlcjo6dGFr
ZUNoaWxkRnJvbVJlbmRlckdyaWQoUmVuZGVyR3JpZCYgcGFyZW50LCBSZW5kZXJPYmplY3QmIGNo
aWxkKQogewogICAgIGF1dG8gdGFrZW5DaGlsZCA9IGJsb2NrQnVpbGRlcigpLnRha2VDaGlsZChw
YXJlbnQsIGNoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyLmgKaW5kZXggZTJjYjgxMDYyYzkzNzYwN2UyZjExN2VhYjk0
OGIyNjNjMjQzODdiMi4uNTNkMDNiZmEzN2U5MmYzMzM1N2U4OGY5NTQzZDA0NDZlNDEyNDJlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVCdWlsZGVyLmgKQEAgLTI5LDIxICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgUmVuZGVyQnV0dG9uOwogY2xhc3MgUmVuZGVyR3JpZDsKLWNsYXNzIFJlbmRlck1hdGhN
TEZlbmNlZDsKLWNsYXNzIFJlbmRlck1lbnVMaXN0OwotY2xhc3MgUmVuZGVyUnVieUFzQmxvY2s7
Ci1jbGFzcyBSZW5kZXJSdWJ5QXNJbmxpbmU7Ci1jbGFzcyBSZW5kZXJSdWJ5QmFzZTsKLWNsYXNz
IFJlbmRlclJ1YnlSdW47Ci1jbGFzcyBSZW5kZXJTVkdDb250YWluZXI7Ci1jbGFzcyBSZW5kZXJT
VkdJbmxpbmU7Ci1jbGFzcyBSZW5kZXJTVkdSb290OwotY2xhc3MgUmVuZGVyU1ZHVGV4dDsKLWNs
YXNzIFJlbmRlclRhYmxlOwotY2xhc3MgUmVuZGVyVGFibGVSb3c7Ci1jbGFzcyBSZW5kZXJUYWJs
ZVNlY3Rpb247CiBjbGFzcyBSZW5kZXJUcmVlVXBkYXRlcjsKIAogY2xhc3MgUmVuZGVyVHJlZUJ1
aWxkZXIgewpAQCAtNTEsMzkgKzM3LDQ4IEBAIHB1YmxpYzoKICAgICBSZW5kZXJUcmVlQnVpbGRl
cihSZW5kZXJWaWV3Jik7CiAgICAgflJlbmRlclRyZWVCdWlsZGVyKCk7CiAKKyAgICAvLyBUaGlz
IGF2b2lkcyBoYXZpbmcgdG8gY29udmVydCBhbGwgc2l0ZXMgdGhhdCBuZWVkIFJlbmRlclRyZWVC
dWlsZGVyIGluIG9uZSBnby4KKyAgICAvLyBGSVhNRTogUmVtb3ZlLgorICAgIHN0YXRpYyBSZW5k
ZXJUcmVlQnVpbGRlciogY3VycmVudCgpIHsgcmV0dXJuIHNfY3VycmVudDsgfQorCiAgICAgdm9p
ZCBpbnNlcnRDaGlsZChSZW5kZXJUcmVlUG9zaXRpb24mLCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0
Pik7CiAgICAgdm9pZCBpbnNlcnRDaGlsZChSZW5kZXJFbGVtZW50JiBwYXJlbnQsIFJlbmRlclB0
cjxSZW5kZXJPYmplY3Q+LCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gbnVsbHB0cik7Ci0g
ICAgdm9pZCBpbnNlcnRDaGlsZElnbm9yaW5nQ29udGludWF0aW9uKFJlbmRlckVsZW1lbnQmIHBh
cmVudCwgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4sIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQg
PSBudWxscHRyKTsKIAogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IHRha2VDaGlsZChSZW5k
ZXJFbGVtZW50JiwgUmVuZGVyT2JqZWN0JikgV0FSTl9VTlVTRURfUkVUVVJOOwogCi0gICAgdm9p
ZCB1cGRhdGVBZnRlckRlc2NlbmRhbnRzKFJlbmRlckVsZW1lbnQmKTsKLQotICAgIC8vIFRoaXMg
YXZvaWRzIGhhdmluZyB0byBjb252ZXJ0IGFsbCBzaXRlcyB0aGF0IG5lZWQgUmVuZGVyVHJlZUJ1
aWxkZXIgaW4gb25lIGdvLgotICAgIC8vIEZJWE1FOiBSZW1vdmUuCi0gICAgc3RhdGljIFJlbmRl
clRyZWVCdWlsZGVyKiBjdXJyZW50KCkgeyByZXR1cm4gc19jdXJyZW50OyB9CisgICAgLy8gTm9y
bWFsaXplQWZ0ZXJJbnNlcnRpb246OlllcyBlbnN1cmVzIHRoYXQgdGhlIGRlc3RpbmF0aW9uIHN1
YnRyZWUgaXMgY29uc2lzdGVudCBhZnRlciB0aGUgaW5zZXJ0aW9uIChhbm9ueW1vdXMgd3JhcHBl
cnMgZXRjKS4KKyAgICBlbnVtIGNsYXNzIE5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uIHsgTm8sIFll
cyB9OworICAgIHZvaWQgbW92ZUNoaWxkVG8oUmVuZGVyQm94TW9kZWxPYmplY3QmIGZyb20sIFJl
bmRlckJveE1vZGVsT2JqZWN0JiB0bywgUmVuZGVyT2JqZWN0JiBjaGlsZCwgTm9ybWFsaXplQWZ0
ZXJJbnNlcnRpb24pOwogCi0gICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB0ZW1wb3JhcnkgdW50
aWwgYWZ0ZXIgYWxsIGJsb2NrL2lubGluZS9jb250aW51YXRpb24gY29kZSBpcyBtb3ZlZCBvdmVy
LgotICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IHRha2VDaGlsZEZyb21SZW5kZXJFbGVtZW50
KFJlbmRlckVsZW1lbnQmIHBhcmVudCwgUmVuZGVyT2JqZWN0JiBjaGlsZCkgV0FSTl9VTlVTRURf
UkVUVVJOOwotICAgIHZvaWQgaW5zZXJ0Q2hpbGRUb1JlbmRlckVsZW1lbnRJbnRlcm5hbChSZW5k
ZXJFbGVtZW50JiBwYXJlbnQsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkID0gbnVsbHB0cik7CisgICAgdm9pZCB1cGRhdGVBZnRlckRlc2Nl
bmRhbnRzKFJlbmRlckVsZW1lbnQmKTsKKyAgICB2b2lkIHJlbW92ZUZyb21QYXJlbnRBbmREZXN0
cm95Q2xlYW5pbmdVcEFub255bW91c1dyYXBwZXJzKFJlbmRlck9iamVjdCYgY2hpbGQpOwogCiAg
ICAgdm9pZCBjaGlsZEZsb3dTdGF0ZUNoYW5nZXNBbmRBZmZlY3RzUGFyZW50QmxvY2soUmVuZGVy
RWxlbWVudCYgY2hpbGQpOwogICAgIHZvaWQgY2hpbGRGbG93U3RhdGVDaGFuZ2VzQW5kTm9Mb25n
ZXJBZmZlY3RzUGFyZW50QmxvY2soUmVuZGVyRWxlbWVudCYgY2hpbGQpOwotICAgIHZvaWQgcmVt
b3ZlRnJvbVBhcmVudEFuZERlc3Ryb3lDbGVhbmluZ1VwQW5vbnltb3VzV3JhcHBlcnMoUmVuZGVy
T2JqZWN0JiBjaGlsZCk7CiAgICAgdm9pZCBtdWx0aUNvbHVtbkRlc2NlbmRhbnRJbnNlcnRlZChS
ZW5kZXJNdWx0aUNvbHVtbkZsb3cmLCBSZW5kZXJPYmplY3QmIG5ld0Rlc2NlbmRhbnQpOwogCi0g
ICAgLy8gTm9ybWFsaXplQWZ0ZXJJbnNlcnRpb246OlllcyBlbnN1cmVzIHRoYXQgdGhlIGRlc3Rp
bmF0aW9uIHN1YnRyZWUgaXMgY29uc2lzdGVudCBhZnRlciB0aGUgaW5zZXJ0aW9uIChhbm9ueW1v
dXMgd3JhcHBlcnMgZXRjKS4KLSAgICBlbnVtIGNsYXNzIE5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9u
IHsgTm8sIFllcyB9OwotICAgIHZvaWQgbW92ZUNoaWxkVG8oUmVuZGVyQm94TW9kZWxPYmplY3Qm
IGZyb20sIFJlbmRlckJveE1vZGVsT2JqZWN0KiB0bywgUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCwgTm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pOwotICAgIHZv
aWQgbW92ZUNoaWxkVG8oUmVuZGVyQm94TW9kZWxPYmplY3QmIGZyb20sIFJlbmRlckJveE1vZGVs
T2JqZWN0KiB0bywgUmVuZGVyT2JqZWN0KiBjaGlsZCwgTm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24p
OwotICAgIHZvaWQgbW92ZUFsbENoaWxkcmVuVG8oUmVuZGVyQm94TW9kZWxPYmplY3QmIGZyb20s
IFJlbmRlckJveE1vZGVsT2JqZWN0KiB0bywgTm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pOwotICAg
IHZvaWQgbW92ZUFsbENoaWxkcmVuVG8oUmVuZGVyQm94TW9kZWxPYmplY3QmIGZyb20sIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiB0bywgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCwgTm9ybWFsaXpl
QWZ0ZXJJbnNlcnRpb24pOworcHJpdmF0ZToKKyAgICB2b2lkIGluc2VydENoaWxkSWdub3JpbmdD
b250aW51YXRpb24oUmVuZGVyRWxlbWVudCYgcGFyZW50LCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0
PiwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IG51bGxwdHIpOworICAgIHZvaWQgaW5zZXJ0
Q2hpbGRUb1JlbmRlckdyaWQoUmVuZGVyR3JpZCYgcGFyZW50LCBSZW5kZXJQdHI8UmVuZGVyT2Jq
ZWN0PiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IG51bGxwdHIpOworICAgIHZv
aWQgaW5zZXJ0Q2hpbGRUb1JlbmRlckVsZW1lbnQoUmVuZGVyRWxlbWVudCYgcGFyZW50LCBSZW5k
ZXJQdHI8UmVuZGVyT2JqZWN0PiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IG51
bGxwdHIpOworICAgIHZvaWQgaW5zZXJ0Q2hpbGRUb1JlbmRlckVsZW1lbnRJbnRlcm5hbChSZW5k
ZXJFbGVtZW50JiBwYXJlbnQsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkID0gbnVsbHB0cik7CisKKyAgICBSZW5kZXJQdHI8UmVuZGVyT2Jq
ZWN0PiB0YWtlQ2hpbGRGcm9tUmVuZGVyRWxlbWVudChSZW5kZXJFbGVtZW50JiBwYXJlbnQsIFJl
bmRlck9iamVjdCYgY2hpbGQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICBSZW5kZXJQdHI8UmVu
ZGVyT2JqZWN0PiB0YWtlQ2hpbGRGcm9tUmVuZGVyR3JpZChSZW5kZXJHcmlkJiBwYXJlbnQsIFJl
bmRlck9iamVjdCYgY2hpbGQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKworICAgIHZvaWQgbW92ZUNo
aWxkVG8oUmVuZGVyQm94TW9kZWxPYmplY3QmIGZyb20sIFJlbmRlckJveE1vZGVsT2JqZWN0JiB0
bywgUmVuZGVyT2JqZWN0JiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCwgTm9ybWFs
aXplQWZ0ZXJJbnNlcnRpb24pOwogICAgIC8vIE1vdmUgYWxsIG9mIHRoZSBraWRzIGZyb20gfHN0
YXJ0Q2hpbGR8IHVwIHRvIGJ1dCBleGNsdWRpbmcgfGVuZENoaWxkfC4gMCBjYW4gYmUgcGFzc2Vk
IGFzIHRoZSB8ZW5kQ2hpbGR8IHRvIGRlbm90ZQogICAgIC8vIHRoYXQgYWxsIHRoZSBraWRzIGZy
b20gfHN0YXJ0Q2hpbGR8IG9ud2FyZHMgc2hvdWxkIGJlIG1vdmVkLgotICAgIHZvaWQgbW92ZUNo
aWxkcmVuVG8oUmVuZGVyQm94TW9kZWxPYmplY3QmIGZyb20sIFJlbmRlckJveE1vZGVsT2JqZWN0
KiB0bywgUmVuZGVyT2JqZWN0KiBzdGFydENoaWxkLCBSZW5kZXJPYmplY3QqIGVuZENoaWxkLCBO
b3JtYWxpemVBZnRlckluc2VydGlvbik7Ci0gICAgdm9pZCBtb3ZlQ2hpbGRyZW5UbyhSZW5kZXJC
b3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHRvLCBSZW5kZXJPYmpl
Y3QqIHN0YXJ0Q2hpbGQsIFJlbmRlck9iamVjdCogZW5kQ2hpbGQsIFJlbmRlck9iamVjdCogYmVm
b3JlQ2hpbGQsIE5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uKTsKKyAgICB2b2lkIG1vdmVDaGlsZHJl
blRvKFJlbmRlckJveE1vZGVsT2JqZWN0JiBmcm9tLCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgdG8s
IFJlbmRlck9iamVjdCogc3RhcnRDaGlsZCwgUmVuZGVyT2JqZWN0KiBlbmRDaGlsZCwgTm9ybWFs
aXplQWZ0ZXJJbnNlcnRpb24pOworICAgIHZvaWQgbW92ZUNoaWxkcmVuVG8oUmVuZGVyQm94TW9k
ZWxPYmplY3QmIGZyb20sIFJlbmRlckJveE1vZGVsT2JqZWN0JiB0bywgUmVuZGVyT2JqZWN0KiBz
dGFydENoaWxkLCBSZW5kZXJPYmplY3QqIGVuZENoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNo
aWxkLCBOb3JtYWxpemVBZnRlckluc2VydGlvbik7CisgICAgdm9pZCBtb3ZlQWxsQ2hpbGRyZW5J
bmNsdWRpbmdGbG9hdHNUbyhSZW5kZXJCbG9jayYgZnJvbSwgUmVuZGVyQmxvY2smIHRvQmxvY2ss
IFJlbmRlclRyZWVCdWlsZGVyOjpOb3JtYWxpemVBZnRlckluc2VydGlvbik7CisgICAgdm9pZCBt
b3ZlQWxsQ2hpbGRyZW5UbyhSZW5kZXJCb3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9k
ZWxPYmplY3QmIHRvLCBOb3JtYWxpemVBZnRlckluc2VydGlvbik7CisgICAgdm9pZCBtb3ZlQWxs
Q2hpbGRyZW5UbyhSZW5kZXJCb3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxPYmpl
Y3QmIHRvLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkLCBOb3JtYWxpemVBZnRlckluc2VydGlv
bik7CisKKyAgICBSZW5kZXJPYmplY3QqIHNwbGl0QW5vbnltb3VzQm94ZXNBcm91bmRDaGlsZChS
ZW5kZXJCb3gmIHBhcmVudCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CisgICAgdm9pZCBt
YWtlQ2hpbGRyZW5Ob25JbmxpbmUoUmVuZGVyQmxvY2smIHBhcmVudCwgUmVuZGVyT2JqZWN0KiBp
bnNlcnRpb25Qb2ludCA9IG51bGxwdHIpOworICAgIHZvaWQgcmVtb3ZlQW5vbnltb3VzV3JhcHBl
cnNGb3JJbmxpbmVDaGlsZHJlbklmTmVlZGVkKFJlbmRlckVsZW1lbnQmIHBhcmVudCk7CiAKLXBy
aXZhdGU6CiAgICAgY2xhc3MgRmlyc3RMZXR0ZXI7CiAgICAgY2xhc3MgTGlzdDsKICAgICBjbGFz
cyBNdWx0aUNvbHVtbjsKQEAgLTk2LDE4ICs5MSw2IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgU1ZH
OwogICAgIGNsYXNzIE1hdGhNTDsKIAotICAgIFJlbmRlck9iamVjdCogc3BsaXRBbm9ueW1vdXNC
b3hlc0Fyb3VuZENoaWxkKFJlbmRlckJveCYgcGFyZW50LCBSZW5kZXJPYmplY3QqIGJlZm9yZUNo
aWxkKTsKLSAgICB2b2lkIG1ha2VDaGlsZHJlbk5vbklubGluZShSZW5kZXJCbG9jayYgcGFyZW50
LCBSZW5kZXJPYmplY3QqIGluc2VydGlvblBvaW50ID0gbnVsbHB0cik7Ci0gICAgdm9pZCByZW1v
dmVBbm9ueW1vdXNXcmFwcGVyc0ZvcklubGluZUNoaWxkcmVuSWZOZWVkZWQoUmVuZGVyRWxlbWVu
dCYgcGFyZW50KTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiB0YWtlQ2hpbGRGcm9tUmVu
ZGVyTWVudUxpc3QoUmVuZGVyTWVudUxpc3QmIHBhcmVudCwgUmVuZGVyT2JqZWN0JiBjaGlsZCk7
Ci0gICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gdGFrZUNoaWxkRnJvbVJlbmRlckJ1dHRvbihS
ZW5kZXJCdXR0b24mIHBhcmVudCwgUmVuZGVyT2JqZWN0JiBjaGlsZCk7Ci0gICAgUmVuZGVyUHRy
PFJlbmRlck9iamVjdD4gdGFrZUNoaWxkRnJvbVJlbmRlckdyaWQoUmVuZGVyR3JpZCYgcGFyZW50
LCBSZW5kZXJPYmplY3QmIGNoaWxkKTsKLQotICAgIHZvaWQgbW92ZUFsbENoaWxkcmVuSW5jbHVk
aW5nRmxvYXRzVG8oUmVuZGVyQmxvY2smIGZyb20sIFJlbmRlckJsb2NrJiB0b0Jsb2NrLCBSZW5k
ZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pOwotCi0gICAgdm9pZCBpbnNl
cnRDaGlsZFRvUmVuZGVyR3JpZChSZW5kZXJHcmlkJiBwYXJlbnQsIFJlbmRlclB0cjxSZW5kZXJP
YmplY3Q+IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gbnVsbHB0cik7Ci0gICAg
dm9pZCBpbnNlcnRDaGlsZFRvUmVuZGVyRWxlbWVudChSZW5kZXJFbGVtZW50JiBwYXJlbnQsIFJl
bmRlclB0cjxSZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0g
bnVsbHB0cik7Ci0KICAgICBGaXJzdExldHRlciYgZmlyc3RMZXR0ZXJCdWlsZGVyKCkgeyByZXR1
cm4gKm1fZmlyc3RMZXR0ZXJCdWlsZGVyOyB9CiAgICAgTGlzdCYgbGlzdEJ1aWxkZXIoKSB7IHJl
dHVybiAqbV9saXN0QnVpbGRlcjsgfQogICAgIE11bHRpQ29sdW1uJiBtdWx0aUNvbHVtbkJ1aWxk
ZXIoKSB7IHJldHVybiAqbV9tdWx0aUNvbHVtbkJ1aWxkZXI7IH0KQEAgLTEyMSw3ICsxMDQsNiBA
QCBwcml2YXRlOgogICAgIE1hdGhNTCYgbWF0aE1MQnVpbGRlcigpIHsgcmV0dXJuICptX21hdGhN
TEJ1aWxkZXI7IH0KIAogICAgIFJlbmRlclZpZXcmIG1fdmlldzsKLQogICAgIFJlbmRlclRyZWVC
dWlsZGVyKiBtX3ByZXZpb3VzIHsgbnVsbHB0ciB9OwogICAgIHN0YXRpYyBSZW5kZXJUcmVlQnVp
bGRlciogc19jdXJyZW50OwogCkBAIC0xMzksNCArMTIxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0K
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVCdWlsZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVCdWlsZGVyQmxvY2suY3BwCmluZGV4IDExMWExNTI1ZDk2MTM5ZmJhOGEwZmVjN2Mw
ZjE5YzgzMmJhOGIxMzcuLmRjMDE3ZmQ4NGM3NzNkODk3MmY2YTNkMDRkMDgyYzI5ZDM0MTkyODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIFJlbmRl
clRyZWVCdWlsZGVyOjpCbG9jazo6ZHJvcEFub255bW91c0JveENoaWxkKFJlbmRlckJsb2NrJiBw
YXJlbnQsIFJlbmRlcgogICAgIGF1dG8qIG5leHRTaWJsaW5nID0gY2hpbGQubmV4dFNpYmxpbmco
KTsKIAogICAgIGF1dG8gdG9CZURlbGV0ZWQgPSBtX2J1aWxkZXIudGFrZUNoaWxkRnJvbVJlbmRl
ckVsZW1lbnQocGFyZW50LCBjaGlsZCk7Ci0gICAgbV9idWlsZGVyLm1vdmVBbGxDaGlsZHJlblRv
KGNoaWxkLCAmcGFyZW50LCBuZXh0U2libGluZywgUmVuZGVyVHJlZUJ1aWxkZXI6Ok5vcm1hbGl6
ZUFmdGVySW5zZXJ0aW9uOjpObyk7CisgICAgbV9idWlsZGVyLm1vdmVBbGxDaGlsZHJlblRvKGNo
aWxkLCBwYXJlbnQsIG5leHRTaWJsaW5nLCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXplQWZ0
ZXJJbnNlcnRpb246Ok5vKTsKICAgICAvLyBEZWxldGUgdGhlIG5vdy1lbXB0eSBibG9jaydzIGxp
bmVzIGFuZCBudWtlIGl0LgogICAgIGNoaWxkLmRlbGV0ZUxpbmVzKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9j
a0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyQmxvY2tGbG93LmNwcAppbmRleCBiNjZlYThjNzgzOTlkZWI0NjdmNWY0OTU0MGI5ZGQ5
YzEzN2ZmZjE2Li4zMGU0MTk3ZmM5ODk0NGI3ODRmODMzZDM1NDBlYWJhNzM2YWJmODU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlQnVpbGRlckJsb2NrRmxvdy5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBSZW5k
ZXJUcmVlQnVpbGRlcjo6QmxvY2tGbG93OjppbnNlcnRDaGlsZChSZW5kZXJCbG9ja0Zsb3cmIHBh
cmVudCwgUmVuZGVyUHQKIAogdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6QmxvY2tGbG93Ojptb3Zl
QWxsQ2hpbGRyZW5JbmNsdWRpbmdGbG9hdHNUbyhSZW5kZXJCbG9ja0Zsb3cmIGZyb20sIFJlbmRl
ckJsb2NrJiB0bywgUmVuZGVyVHJlZUJ1aWxkZXI6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uIG5v
cm1hbGl6ZUFmdGVySW5zZXJ0aW9uKQogewotICAgIG1fYnVpbGRlci5tb3ZlQWxsQ2hpbGRyZW5U
byhmcm9tLCAmdG8sIG5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uKTsKKyAgICBtX2J1aWxkZXIubW92
ZUFsbENoaWxkcmVuVG8oZnJvbSwgdG8sIG5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uKTsKICAgICBm
cm9tLmFkZEZsb2F0c1RvTmV3UGFyZW50KGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4odG8pKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRl
clRyZWVCdWlsZGVyRm9ybUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckZvcm1Db250cm9scy5jcHAKaW5kZXggOGUzMDA1ODRm
MmRjOWRkYWNmYmYxNDQ4YzM2MWJiZjUxMTVmYTBlMy4uYTQ4OTUzMjc5MDljMjU1NjViMTcxMWE3
NGFjNzlkYmIzNDc5YzNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRm9ybUNvbnRyb2xzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGb3JtQ29udHJvbHMuY3Bw
CkBAIC00OCw2ICs0OCwyNSBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpGb3JtQ29udHJvbHM6
Omluc2VydENoaWxkKFJlbmRlck1lbnVMaXN0JiBwYXJlbnQsIFJlbmRlcgogICAgIHBhcmVudC5k
aWRJbnNlcnRDaGlsZChuZXdDaGlsZCwgYmVmb3JlQ2hpbGQpOwogfQogCitSZW5kZXJQdHI8UmVu
ZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVpbGRlcjo6Rm9ybUNvbnRyb2xzOjp0YWtlQ2hpbGQoUmVu
ZGVyTWVudUxpc3QmIHBhcmVudCwgUmVuZGVyT2JqZWN0JiBjaGlsZCkKK3sKKyAgICBhdXRvKiBp
bm5lclJlbmRlcmVyID0gcGFyZW50LmlubmVyUmVuZGVyZXIoKTsKKyAgICBpZiAoIWlubmVyUmVu
ZGVyZXIgfHwgJmNoaWxkID09IGlubmVyUmVuZGVyZXIpCisgICAgICAgIHJldHVybiBtX2J1aWxk
ZXIuYmxvY2tCdWlsZGVyKCkudGFrZUNoaWxkKHBhcmVudCwgY2hpbGQpOworICAgIHJldHVybiBt
X2J1aWxkZXIudGFrZUNoaWxkKCppbm5lclJlbmRlcmVyLCBjaGlsZCk7Cit9CisKK1JlbmRlclB0
cjxSZW5kZXJPYmplY3Q+IFJlbmRlclRyZWVCdWlsZGVyOjpGb3JtQ29udHJvbHM6OnRha2VDaGls
ZChSZW5kZXJCdXR0b24mIHBhcmVudCwgUmVuZGVyT2JqZWN0JiBjaGlsZCkKK3sKKyAgICBhdXRv
KiBpbm5lclJlbmRlcmVyID0gcGFyZW50LmlubmVyUmVuZGVyZXIoKTsKKyAgICBpZiAoIWlubmVy
UmVuZGVyZXIgfHwgJmNoaWxkID09IGlubmVyUmVuZGVyZXIgfHwgY2hpbGQucGFyZW50KCkgPT0g
JnBhcmVudCkgeworICAgICAgICBBU1NFUlQoJmNoaWxkID09IGlubmVyUmVuZGVyZXIgfHwgIWlu
bmVyUmVuZGVyZXIpOworICAgICAgICByZXR1cm4gbV9idWlsZGVyLmJsb2NrQnVpbGRlcigpLnRh
a2VDaGlsZChwYXJlbnQsIGNoaWxkKTsKKyAgICB9CisgICAgcmV0dXJuIG1fYnVpbGRlci50YWtl
Q2hpbGQoKmlubmVyUmVuZGVyZXIsIGNoaWxkKTsKK30KKworCiBSZW5kZXJCbG9jayYgUmVuZGVy
VHJlZUJ1aWxkZXI6OkZvcm1Db250cm9sczo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yQ2hpbGQoUmVu
ZGVyQnV0dG9uJiBwYXJlbnQpCiB7CiAgICAgYXV0byogaW5uZXJSZW5kZXJlciA9IHBhcmVudC5p
bm5lclJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGb3JtQ29udHJvbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckZvcm1Db250cm9scy5oCmluZGV4IDUz
MzFmMGRkMWYzYTRlNTU0YThhN2ZhZjk3YjBlY2EyYzA1N2M2NGYuLjhmMjZmNDcyYTc3YTA2OGY0
ZjQyZGQ0NGM0NTU0OWM1ZjEyMGZkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckZvcm1Db250cm9scy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckZvcm1Db250cm9s
cy5oCkBAIC00MCw2ICs0MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc2VydENoaWxkKFJlbmRl
ckJ1dHRvbiYgcGFyZW50LCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjaGlsZCwgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCk7CiAgICAgdm9pZCBpbnNlcnRDaGlsZChSZW5kZXJNZW51TGlzdCYg
cGFyZW50LCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZv
cmVDaGlsZCk7CiAKKyAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiB0YWtlQ2hpbGQoUmVuZGVy
QnV0dG9uJiBwYXJlbnQsIFJlbmRlck9iamVjdCYgY2hpbGQpIFdBUk5fVU5VU0VEX1JFVFVSTjsK
KyAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiB0YWtlQ2hpbGQoUmVuZGVyTWVudUxpc3QmIHBh
cmVudCwgUmVuZGVyT2JqZWN0JiBjaGlsZCkgV0FSTl9VTlVTRURfUkVUVVJOOworCiBwcml2YXRl
OgogICAgIFJlbmRlckJsb2NrJiBmaW5kT3JDcmVhdGVQYXJlbnRGb3JDaGlsZChSZW5kZXJCdXR0
b24mKTsKICAgICBSZW5kZXJCbG9jayYgZmluZE9yQ3JlYXRlUGFyZW50Rm9yQ2hpbGQoUmVuZGVy
TWVudUxpc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmNwcAppbmRleCA4MTBh
MDNkNWFhNTVhMzUwODY1MmJiZTJmMDU1NmI2NTI2NjFlNmZkLi4yZDM4M2ZmMjMxZWY5MTI2ZGQ5
YzkwYzk2ZTNiNWE0OTgxYjQyNWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4u
Y3BwCkBAIC0xNzIsMTIgKzE3MiwxMiBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNv
bHVtbjo6Y3JlYXRlRnJhZ21lbnRlZEZsb3coUmVuZGVyQmxvY2tGbG93JiBmbG93KQogICAgIG1f
YnVpbGRlci5ibG9ja0J1aWxkZXIoKS5pbnNlcnRDaGlsZChmbG93LCBXVEZNb3ZlKG5ld0ZyYWdt
ZW50ZWRGbG93KSwgbnVsbHB0cik7CiAKICAgICAvLyBSZXBhcmVudCBjaGlsZHJlbiBwcmVjZWRp
bmcgdGhlIGZyYWdtZW50ZWQgZmxvdyBpbnRvIHRoZSBmcmFnbWVudGVkIGZsb3cuCi0gICAgbV9i
dWlsZGVyLm1vdmVDaGlsZHJlblRvKGZsb3csICZmcmFnbWVudGVkRmxvdywgZmxvdy5maXJzdENo
aWxkKCksICZmcmFnbWVudGVkRmxvdywgUmVuZGVyVHJlZUJ1aWxkZXI6Ok5vcm1hbGl6ZUFmdGVy
SW5zZXJ0aW9uOjpZZXMpOworICAgIG1fYnVpbGRlci5tb3ZlQ2hpbGRyZW5UbyhmbG93LCBmcmFn
bWVudGVkRmxvdywgZmxvdy5maXJzdENoaWxkKCksICZmcmFnbWVudGVkRmxvdywgUmVuZGVyVHJl
ZUJ1aWxkZXI6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpZZXMpOwogICAgIGlmIChmbG93Lmlz
RmllbGRzZXQoKSkgewogICAgICAgICAvLyBLZWVwIGxlZ2VuZHMgb3V0IG9mIHRoZSBmbG93IHRo
cmVhZC4KICAgICAgICAgZm9yIChhdXRvJiBib3ggOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJCb3g+
KGZyYWdtZW50ZWRGbG93KSkgewogICAgICAgICAgICAgaWYgKGJveC5pc0xlZ2VuZCgpKQotICAg
ICAgICAgICAgICAgIG1fYnVpbGRlci5tb3ZlQ2hpbGRUbyhmcmFnbWVudGVkRmxvdywgJmZsb3cs
ICZib3gsIFJlbmRlclRyZWVCdWlsZGVyOjpOb3JtYWxpemVBZnRlckluc2VydGlvbjo6WWVzKTsK
KyAgICAgICAgICAgICAgICBtX2J1aWxkZXIubW92ZUNoaWxkVG8oZnJhZ21lbnRlZEZsb3csIGZs
b3csIGJveCwgUmVuZGVyVHJlZUJ1aWxkZXI6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpZZXMp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBSZW5kZXJUcmVl
QnVpbGRlcjo6TXVsdGlDb2x1bW46OmNyZWF0ZUZyYWdtZW50ZWRGbG93KFJlbmRlckJsb2NrRmxv
dyYgZmxvdykKICAgICAgICAgLy8gS2VlcCB0aGUgbWlkZGxlIGJsb2NrIG91dCBvZiB0aGUgZmxv
dyB0aHJlYWQuCiAgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPFJl
bmRlckVsZW1lbnQ+KGZyYWdtZW50ZWRGbG93KSkgewogICAgICAgICAgICAgaWYgKCFkb3duY2Fz
dDxSZW5kZXJMaW5lc0NsYW1wRmxvdz4oZnJhZ21lbnRlZEZsb3cpLmlzQ2hpbGRBbGxvd2VkSW5G
cmFnbWVudGVkRmxvdyhmbG93LCBlbGVtZW50KSkKLSAgICAgICAgICAgICAgICBtX2J1aWxkZXIu
bW92ZUNoaWxkVG8oZnJhZ21lbnRlZEZsb3csICZmbG93LCAmZWxlbWVudCwgUmVuZGVyVHJlZUJ1
aWxkZXI6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpZZXMpOworICAgICAgICAgICAgICAgIG1f
YnVpbGRlci5tb3ZlQ2hpbGRUbyhmcmFnbWVudGVkRmxvdywgZmxvdywgZWxlbWVudCwgUmVuZGVy
VHJlZUJ1aWxkZXI6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpZZXMpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6TXVsdGlD
b2x1bW46OmRlc3Ryb3lGcmFnbWVudGVkRmxvdyhSZW5kZXJCbG9ja0Zsb3cmIGZsb3cKICAgICAg
ICAgY29sdW1uU2V0LT5yZW1vdmVGcm9tUGFyZW50QW5kRGVzdHJveShtX2J1aWxkZXIpOwogCiAg
ICAgZmxvdy5jbGVhck11bHRpQ29sdW1uRmxvdygpOwotICAgIG1fYnVpbGRlci5tb3ZlQWxsQ2hp
bGRyZW5UbyhtdWx0aUNvbHVtbkZsb3csICZmbG93LCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFs
aXplQWZ0ZXJJbnNlcnRpb246Olllcyk7CisgICAgbV9idWlsZGVyLm1vdmVBbGxDaGlsZHJlblRv
KG11bHRpQ29sdW1uRmxvdywgZmxvdywgUmVuZGVyVHJlZUJ1aWxkZXI6Ok5vcm1hbGl6ZUFmdGVy
SW5zZXJ0aW9uOjpZZXMpOwogICAgIG11bHRpQ29sdW1uRmxvdy5yZW1vdmVGcm9tUGFyZW50QW5k
RGVzdHJveShtX2J1aWxkZXIpOwogICAgIGZvciAoYXV0byYgcGFyZW50QW5kU3Bhbm5lciA6IHBh
cmVudEFuZFNwYW5uZXJMaXN0KQogICAgICAgICBtX2J1aWxkZXIuaW5zZXJ0Q2hpbGQoKnBhcmVu
dEFuZFNwYW5uZXIuZmlyc3QsIFdURk1vdmUocGFyZW50QW5kU3Bhbm5lci5zZWNvbmQpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlclJ1YnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVCdWlsZGVyUnVieS5jcHAKaW5kZXggZWUzMWNmMjFkZmY1NjdmNmFmYzY3ZjQ3MzVjYWRiMDNm
YzhlMGQ1Mi4uMjkxNmMyODYxNTA2NDMzZThhNzViOWIzY2IxY2EzNmI4NzUzMTZkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
UnVieS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVCdWlsZGVyUnVieS5jcHAKQEAgLTE0Miw4ICsxNDIsOSBAQCB2b2lkIFJlbmRlclRyZWVCdWls
ZGVyOjpSdWJ5Ojptb3ZlSW5saW5lQ2hpbGRyZW4oUmVuZGVyUnVieUJhc2UmIGZyb20sIFJlbmRl
clJ1YgogICAgICAgICAgICAgbV9idWlsZGVyLmluc2VydENoaWxkVG9SZW5kZXJFbGVtZW50SW50
ZXJuYWwodG8sIFdURk1vdmUobmV3VG9CbG9jaykpOwogICAgICAgICB9CiAgICAgfQorICAgIEFT
U0VSVCh0b0Jsb2NrKTsKICAgICAvLyBNb3ZlIG91ciBpbmxpbmUgY2hpbGRyZW4gaW50byB0aGUg
dGFyZ2V0IGJsb2NrIHdlIGRldGVybWluZWQgYWJvdmUuCi0gICAgbV9idWlsZGVyLm1vdmVDaGls
ZHJlblRvKGZyb20sIHRvQmxvY2ssIGZyb20uZmlyc3RDaGlsZCgpLCBiZWZvcmVDaGlsZCwgUmVu
ZGVyVHJlZUJ1aWxkZXI6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpObyk7CisgICAgbV9idWls
ZGVyLm1vdmVDaGlsZHJlblRvKGZyb20sICp0b0Jsb2NrLCBmcm9tLmZpcnN0Q2hpbGQoKSwgYmVm
b3JlQ2hpbGQsIFJlbmRlclRyZWVCdWlsZGVyOjpOb3JtYWxpemVBZnRlckluc2VydGlvbjo6Tm8p
OwogfQogCiB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpSdWJ5Ojptb3ZlQmxvY2tDaGlsZHJlbihS
ZW5kZXJSdWJ5QmFzZSYgZnJvbSwgUmVuZGVyUnVieUJhc2UmIHRvLCBSZW5kZXJPYmplY3QqIGJl
Zm9yZUNoaWxkKQpAQCAtMTYzLDEyICsxNjQsMTIgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6
UnVieTo6bW92ZUJsb2NrQ2hpbGRyZW4oUmVuZGVyUnVieUJhc2UmIGZyb20sIFJlbmRlclJ1YnkK
ICAgICAgICAgJiYgbGFzdENoaWxkVGhlcmUgJiYgbGFzdENoaWxkVGhlcmUtPmlzQW5vbnltb3Vz
QmxvY2soKSAmJiBsYXN0Q2hpbGRUaGVyZS0+Y2hpbGRyZW5JbmxpbmUoKSkgewogICAgICAgICBh
dXRvKiBhbm9uQmxvY2tIZXJlID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KGZpcnN0Q2hpbGRIZXJl
KTsKICAgICAgICAgYXV0byogYW5vbkJsb2NrVGhlcmUgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4o
bGFzdENoaWxkVGhlcmUpOwotICAgICAgICBtX2J1aWxkZXIubW92ZUFsbENoaWxkcmVuVG8oKmFu
b25CbG9ja0hlcmUsIGFub25CbG9ja1RoZXJlLCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXpl
QWZ0ZXJJbnNlcnRpb246Olllcyk7CisgICAgICAgIG1fYnVpbGRlci5tb3ZlQWxsQ2hpbGRyZW5U
bygqYW5vbkJsb2NrSGVyZSwgKmFub25CbG9ja1RoZXJlLCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9y
bWFsaXplQWZ0ZXJJbnNlcnRpb246Olllcyk7CiAgICAgICAgIGFub25CbG9ja0hlcmUtPmRlbGV0
ZUxpbmVzKCk7CiAgICAgICAgIGFub25CbG9ja0hlcmUtPnJlbW92ZUZyb21QYXJlbnRBbmREZXN0
cm95KG1fYnVpbGRlcik7CiAgICAgfQogICAgIC8vIE1vdmUgYWxsIHJlbWFpbmluZyBjaGlsZHJl
biBub3JtYWxseS4KLSAgICBtX2J1aWxkZXIubW92ZUNoaWxkcmVuVG8oZnJvbSwgJnRvLCBmcm9t
LmZpcnN0Q2hpbGQoKSwgYmVmb3JlQ2hpbGQsIFJlbmRlclRyZWVCdWlsZGVyOjpOb3JtYWxpemVB
ZnRlckluc2VydGlvbjo6Tm8pOworICAgIG1fYnVpbGRlci5tb3ZlQ2hpbGRyZW5Ubyhmcm9tLCB0
bywgZnJvbS5maXJzdENoaWxkKCksIGJlZm9yZUNoaWxkLCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9y
bWFsaXplQWZ0ZXJJbnNlcnRpb246Ok5vKTsKIH0KIAogdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6
UnVieTo6bW92ZUNoaWxkcmVuKFJlbmRlclJ1YnlCYXNlJiBmcm9tLCBSZW5kZXJSdWJ5QmFzZSYg
dG8pCkBAIC00MzgsOCArNDM5LDggQEAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gUmVuZGVyVHJl
ZUJ1aWxkZXI6OlJ1Ynk6OnRha2VDaGlsZChSZW5kZXJSdWJ5UnVuJiBwYXJlbnQKICAgICAgICAg
ICAgICAgICBSZW5kZXJSdWJ5QmFzZSogcmlnaHRCYXNlID0gcmlnaHRSdW4ucnVieUJhc2UoKTsK
ICAgICAgICAgICAgICAgICAvLyBDb2xsZWN0IGFsbCBjaGlsZHJlbiBpbiBhIHNpbmdsZSBiYXNl
LCB0aGVuIHN3YXAgdGhlIGJhc2VzLgogICAgICAgICAgICAgICAgIG1vdmVDaGlsZHJlbigqcmln
aHRCYXNlLCAqYmFzZSk7Ci0gICAgICAgICAgICAgICAgbV9idWlsZGVyLm1vdmVDaGlsZFRvKHBh
cmVudCwgJnJpZ2h0UnVuLCBiYXNlLCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXplQWZ0ZXJJ
bnNlcnRpb246Ok5vKTsKLSAgICAgICAgICAgICAgICBtX2J1aWxkZXIubW92ZUNoaWxkVG8ocmln
aHRSdW4sICZwYXJlbnQsIHJpZ2h0QmFzZSwgUmVuZGVyVHJlZUJ1aWxkZXI6Ok5vcm1hbGl6ZUFm
dGVySW5zZXJ0aW9uOjpObyk7CisgICAgICAgICAgICAgICAgbV9idWlsZGVyLm1vdmVDaGlsZFRv
KHBhcmVudCwgcmlnaHRSdW4sICpiYXNlLCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXplQWZ0
ZXJJbnNlcnRpb246Ok5vKTsKKyAgICAgICAgICAgICAgICBtX2J1aWxkZXIubW92ZUNoaWxkVG8o
cmlnaHRSdW4sIHBhcmVudCwgKnJpZ2h0QmFzZSwgUmVuZGVyVHJlZUJ1aWxkZXI6Ok5vcm1hbGl6
ZUFmdGVySW5zZXJ0aW9uOjpObyk7CiAgICAgICAgICAgICAgICAgLy8gVGhlIG5vdyBlbXB0eSBy
dWJ5IGJhc2Ugd2lsbCBiZSByZW1vdmVkIGJlbG93LgogICAgICAgICAgICAgICAgIEFTU0VSVCgh
cGFyZW50LnJ1YnlCYXNlKCktPmZpcnN0Q2hpbGQoKSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJU
YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXJUYWJsZS5jcHAKaW5kZXggZGJjMWEyNGJjOTE5NWIyMWI4NWM3NjlmODI3ODkxOWY3MTll
NTk0NS4uYzcwNGZlODhkMWJkYWY2ZjFhMTg5MWE1MTJiMThmN2Y3MDAyZDU2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFi
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlclRhYmxlLmNwcApAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxk
ZXI6OlRhYmxlOjpjb2xsYXBzZUFuZERlc3Ryb3lBbm9ueW1vdXNTaWJsaW5nUm93cyhSZW5kZXJU
YWJsCiAgICAgICAgICAgICBjdXJyZW50Um93ID0gY3VycmVudFJvdy0+bmV4dFJvdygpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgbV9idWlsZGVyLm1vdmVBbGxD
aGlsZHJlblRvKCpjdXJyZW50Um93LCByb3dUb0luc2VydEludG8sIFJlbmRlclRyZWVCdWlsZGVy
OjpOb3JtYWxpemVBZnRlckluc2VydGlvbjo6Tm8pOworICAgICAgICBtX2J1aWxkZXIubW92ZUFs
bENoaWxkcmVuVG8oKmN1cnJlbnRSb3csICpyb3dUb0luc2VydEludG8sIFJlbmRlclRyZWVCdWls
ZGVyOjpOb3JtYWxpemVBZnRlckluc2VydGlvbjo6Tm8pOwogICAgICAgICBhdXRvIHRvRGVzdHJv
eSA9IG1fYnVpbGRlci50YWtlQ2hpbGQoKnNlY3Rpb24sICpjdXJyZW50Um93KTsKICAgICAgICAg
Y3VycmVudFJvdyA9IGN1cnJlbnRSb3ctPm5leHRSb3coKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334094</attachid>
            <date>2018-02-16 19:30:03 -0800</date>
            <delta_ts>2018-02-16 21:24:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182899-20180216193002.patch</filename>
            <type>text/plain</type>
            <size>31257</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjEzNjgxN2UyODZlYzg2
YmFmNzZhYTE0MGVhODVmMjllM2Q5OTU5MC4uNzkyYzZiOTdhOGJmYWVjZDYwYzgxNDc5Mzg2ZTMw
YTgyOWFhNmMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTAyLTE2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1JlbmRlclRyZWVCdWlsZGVy
XSBDbGVhbnVwIFJlbmRlclRyZWVCdWlsZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4OTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3NjI3
ODg4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnN0eWxlRGlk
Q2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OnRha2VDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6bW92ZUNoaWxkVG8pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6Om1vdmVBbGxDaGlsZHJlblRvKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjptb3ZlQ2hpbGRyZW5Ubyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6bW92ZUFsbENoaWxkcmVuSW5jbHVkaW5nRmxv
YXRzVG8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6Om1ha2VDaGlsZHJl
bk5vbklubGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6c3BsaXRB
bm9ueW1vdXNCb3hlc0Fyb3VuZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVC
dWlsZGVyOjp0YWtlQ2hpbGRGcm9tUmVuZGVyTWVudUxpc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OnRha2VDaGlsZEZyb21SZW5kZXJCdXR0b24pOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OmN1cnJlbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckJsb2NrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpCbG9jazo6ZHJvcEFub255bW91c0JveENo
aWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9j
a0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OkJsb2NrRmxv
dzo6bW92ZUFsbENoaWxkcmVuSW5jbHVkaW5nRmxvYXRzVG8pOgorICAgICAgICAqIHJlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckZvcm1Db250cm9scy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6Rm9ybUNvbnRyb2xzOjp0YWtlQ2hpbGQpOgorICAg
ICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckZvcm1Db250cm9scy5o
OgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck11bHRpQ29s
dW1uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVt
bjo6Y3JlYXRlRnJhZ21lbnRlZEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1
aWxkZXI6Ok11bHRpQ29sdW1uOjpkZXN0cm95RnJhZ21lbnRlZEZsb3cpOgorICAgICAgICAqIHJl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1YnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OlJ1Ynk6Om1vdmVJbmxpbmVDaGlsZHJlbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6UnVieTo6bW92ZUJsb2NrQ2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OlJ1Ynk6OnRha2VDaGlsZCk6
CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OlRhYmxlOjpjb2xsYXBzZUFu
ZERlc3Ryb3lBbm9ueW1vdXNTaWJsaW5nUm93cyk6CisKIDIwMTgtMDItMTYgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbUmVuZGVyVHJlZUJ1aWxkZXJdIE1vdmUg
UmVuZGVyQm94TW9kZWxPYmplY3Q6Om1vdmVDaGlsZCooKSB0byBSZW5kZXJUcmVlQnVpbGRlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCAzMzdk
YWNkZWE0YjVjZjkzNGNjYmU2NTlmOTExZWQ3M2U3OGI0Y2E1Li45MDJiYjI4ZGZiOTViN2ViZjA0
YTAyMDIxNDA1MGZhYjExOWYyNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcApAQCAtMjAyMyw3ICsyMDIzLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHls
ZSogb2wKICAgICAvLyBGcmVzaCBmbG9hdHMgbmVlZCB0byBiZSByZXBhcmVudGVkIGlmIHRoZXkg
YWN0dWFsbHkgYmVsb25nIHRvIHRoZSBwcmV2aW91cyBhbm9ueW1vdXMgYmxvY2suCiAgICAgLy8g
SXQgY29waWVzIHRoZSBsb2dpYyBvZiBSZW5kZXJCbG9jazo6YWRkQ2hpbGRJZ25vcmluZ0NvbnRp
bnVhdGlvbgogICAgIGlmIChub0xvbmdlckFmZmVjdHNQYXJlbnRCbG9jaygpICYmIHN0eWxlKCku
aXNGbG9hdGluZygpICYmIHByZXZpb3VzU2libGluZygpICYmIHByZXZpb3VzU2libGluZygpLT5p
c0Fub255bW91c0Jsb2NrKCkpCi0gICAgICAgIFJlbmRlclRyZWVCdWlsZGVyOjpjdXJyZW50KCkt
Pm1vdmVDaGlsZFRvKGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PigqcGFyZW50KCkpLCAm
ZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpwcmV2aW91c1NpYmxpbmcoKSksIHRoaXMs
IFJlbmRlclRyZWVCdWlsZGVyOjpOb3JtYWxpemVBZnRlckluc2VydGlvbjo6Tm8pOworICAgICAg
ICBSZW5kZXJUcmVlQnVpbGRlcjo6Y3VycmVudCgpLT5tb3ZlQ2hpbGRUbyhkb3duY2FzdDxSZW5k
ZXJCb3hNb2RlbE9iamVjdD4oKnBhcmVudCgpKSwgZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmpl
Y3Q+KCpwcmV2aW91c1NpYmxpbmcoKSksICp0aGlzLCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFs
aXplQWZ0ZXJJbnNlcnRpb246Ok5vKTsKIAogICAgIGlmIChkaWZmID49IFN0eWxlRGlmZmVyZW5j
ZVJlcGFpbnQpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgdXNlIGEgY2hlYXBlciBz
dHlsZS1vbmx5IHRlc3QgaW5zdGVhZCBvZiBTaW1wbGVMaW5lTGF5b3V0OjpjYW5Vc2VGb3IuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyLmNwcAppbmRleCA0ZGU4MzNjMTgyYzkyOThiYThlOTFlNzAzNTQ4YTdmODkwM2NjODg5
Li5mZjgzNThhZTBlNDU3OWRiNjU4ZmY0ZTU4NDliZjZkNjVhZDExOTc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5j
cHAKQEAgLTI4NiwxMCArMjg2LDEwIEBAIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IFJlbmRlclRy
ZWVCdWlsZGVyOjp0YWtlQ2hpbGQoUmVuZGVyRWxlbWVudCYgcGFyZW50LCBSZW5kCiAgICAgICAg
IHJldHVybiBydWJ5QnVpbGRlcigpLnRha2VDaGlsZChkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihw
YXJlbnQpLCBjaGlsZCk7CiAKICAgICBpZiAoaXM8UmVuZGVyTWVudUxpc3Q+KHBhcmVudCkpCi0g
ICAgICAgIHJldHVybiB0YWtlQ2hpbGRGcm9tUmVuZGVyTWVudUxpc3QoZG93bmNhc3Q8UmVuZGVy
TWVudUxpc3Q+KHBhcmVudCksIGNoaWxkKTsKKyAgICAgICAgcmV0dXJuIGZvcm1Db250cm9sc0J1
aWxkZXIoKS50YWtlQ2hpbGQoZG93bmNhc3Q8UmVuZGVyTWVudUxpc3Q+KHBhcmVudCksIGNoaWxk
KTsKIAogICAgIGlmIChpczxSZW5kZXJCdXR0b24+KHBhcmVudCkpCi0gICAgICAgIHJldHVybiB0
YWtlQ2hpbGRGcm9tUmVuZGVyQnV0dG9uKGRvd25jYXN0PFJlbmRlckJ1dHRvbj4ocGFyZW50KSwg
Y2hpbGQpOworICAgICAgICByZXR1cm4gZm9ybUNvbnRyb2xzQnVpbGRlcigpLnRha2VDaGlsZChk
b3duY2FzdDxSZW5kZXJCdXR0b24+KHBhcmVudCksIGNoaWxkKTsKIAogICAgIGlmIChpczxSZW5k
ZXJHcmlkPihwYXJlbnQpKQogICAgICAgICByZXR1cm4gdGFrZUNoaWxkRnJvbVJlbmRlckdyaWQo
ZG93bmNhc3Q8UmVuZGVyR3JpZD4ocGFyZW50KSwgY2hpbGQpOwpAQCAtMzc3LDQ2ICszNzcsNDYg
QEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6aW5zZXJ0Q2hpbGRUb1JlbmRlckVsZW1lbnRJbnRl
cm5hbChSZW5kZXJFbGVtZW50JiBwYXJlbnQKICAgICBuZXdDaGlsZC0+c2V0SGFzT3V0bGluZUF1
dG9BbmNlc3RvcigpOwogfQogCi12b2lkIFJlbmRlclRyZWVCdWlsZGVyOjptb3ZlQ2hpbGRUbyhS
ZW5kZXJCb3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHRvLCBSZW5k
ZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkLCBOb3JtYWxpemVBZnRl
ckluc2VydGlvbiBub3JtYWxpemVBZnRlckluc2VydGlvbikKK3ZvaWQgUmVuZGVyVHJlZUJ1aWxk
ZXI6Om1vdmVDaGlsZFRvKFJlbmRlckJveE1vZGVsT2JqZWN0JiBmcm9tLCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgdG8sIFJlbmRlck9iamVjdCYgY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hp
bGQsIE5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uIG5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uKQogewog
ICAgIC8vIFdlIGFzc3VtZSB0aGF0IGNhbGxlcnMgaGF2ZSBjbGVhcmVkIHRoZWlyIHBvc2l0aW9u
ZWQgb2JqZWN0cyBsaXN0IGZvciBjaGlsZCBtb3ZlcyBzbyB0aGUKICAgICAvLyBwb3NpdGlvbmVk
IHJlbmRlcmVyIG1hcHMgZG9uJ3QgYmVjb21lIHN0YWxlLiBJdCB3b3VsZCBiZSB0b28gc2xvdyB0
byBkbyB0aGUgbWFwIGxvb2t1cCBvbiBlYWNoIGNhbGwuCiAgICAgQVNTRVJUKG5vcm1hbGl6ZUFm
dGVySW5zZXJ0aW9uID09IE5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpObyB8fCAhaXM8UmVuZGVy
QmxvY2s+KGZyb20pIHx8ICFkb3duY2FzdDxSZW5kZXJCbG9jaz4oZnJvbSkuaGFzUG9zaXRpb25l
ZE9iamVjdHMoKSk7CiAKLSAgICBBU1NFUlQoJmZyb20gPT0gY2hpbGQtPnBhcmVudCgpKTsKLSAg
ICBBU1NFUlQoIWJlZm9yZUNoaWxkIHx8IHRvID09IGJlZm9yZUNoaWxkLT5wYXJlbnQoKSk7Ci0g
ICAgaWYgKG5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uID09IE5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9u
OjpZZXMgJiYgKHRvLT5pc1JlbmRlckJsb2NrKCkgfHwgdG8tPmlzUmVuZGVySW5saW5lKCkpKSB7
CisgICAgQVNTRVJUKCZmcm9tID09IGNoaWxkLnBhcmVudCgpKTsKKyAgICBBU1NFUlQoIWJlZm9y
ZUNoaWxkIHx8ICZ0byA9PSBiZWZvcmVDaGlsZC0+cGFyZW50KCkpOworICAgIGlmIChub3JtYWxp
emVBZnRlckluc2VydGlvbiA9PSBOb3JtYWxpemVBZnRlckluc2VydGlvbjo6WWVzICYmICh0by5p
c1JlbmRlckJsb2NrKCkgfHwgdG8uaXNSZW5kZXJJbmxpbmUoKSkpIHsKICAgICAgICAgLy8gVGFr
ZXMgY2FyZSBvZiBhZGRpbmcgdGhlIG5ldyBjaGlsZCBjb3JyZWN0bHkgaWYgdG9CbG9jayBhbmQg
ZnJvbUJsb2NrCiAgICAgICAgIC8vIGhhdmUgZGlmZmVyZW50IGtpbmQgb2YgY2hpbGRyZW4gKGJs
b2NrIHZzIGlubGluZSkuCi0gICAgICAgIGF1dG8gY2hpbGRUb01vdmUgPSB0YWtlQ2hpbGRGcm9t
UmVuZGVyRWxlbWVudChmcm9tLCAqY2hpbGQpOwotICAgICAgICBpbnNlcnRDaGlsZCgqdG8sIFdU
Rk1vdmUoY2hpbGRUb01vdmUpLCBiZWZvcmVDaGlsZCk7CisgICAgICAgIGF1dG8gY2hpbGRUb01v
dmUgPSB0YWtlQ2hpbGRGcm9tUmVuZGVyRWxlbWVudChmcm9tLCBjaGlsZCk7CisgICAgICAgIGlu
c2VydENoaWxkKHRvLCBXVEZNb3ZlKGNoaWxkVG9Nb3ZlKSwgYmVmb3JlQ2hpbGQpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGF1dG8gY2hpbGRUb01vdmUgPSB0YWtlQ2hpbGRGcm9tUmVuZGVyRWxl
bWVudChmcm9tLCAqY2hpbGQpOwotICAgICAgICBpbnNlcnRDaGlsZFRvUmVuZGVyRWxlbWVudElu
dGVybmFsKCp0bywgV1RGTW92ZShjaGlsZFRvTW92ZSksIGJlZm9yZUNoaWxkKTsKKyAgICAgICAg
YXV0byBjaGlsZFRvTW92ZSA9IHRha2VDaGlsZEZyb21SZW5kZXJFbGVtZW50KGZyb20sIGNoaWxk
KTsKKyAgICAgICAgaW5zZXJ0Q2hpbGRUb1JlbmRlckVsZW1lbnRJbnRlcm5hbCh0bywgV1RGTW92
ZShjaGlsZFRvTW92ZSksIGJlZm9yZUNoaWxkKTsKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyVHJl
ZUJ1aWxkZXI6Om1vdmVDaGlsZFRvKFJlbmRlckJveE1vZGVsT2JqZWN0JiBmcm9tLCBSZW5kZXJC
b3hNb2RlbE9iamVjdCogdG8sIFJlbmRlck9iamVjdCogY2hpbGQsIE5vcm1hbGl6ZUFmdGVySW5z
ZXJ0aW9uIG5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uKQordm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6
bW92ZUNoaWxkVG8oUmVuZGVyQm94TW9kZWxPYmplY3QmIGZyb20sIFJlbmRlckJveE1vZGVsT2Jq
ZWN0JiB0bywgUmVuZGVyT2JqZWN0JiBjaGlsZCwgTm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24gbm9y
bWFsaXplQWZ0ZXJJbnNlcnRpb24pCiB7CiAgICAgbW92ZUNoaWxkVG8oZnJvbSwgdG8sIGNoaWxk
LCBudWxscHRyLCBub3JtYWxpemVBZnRlckluc2VydGlvbik7CiB9CiAKLXZvaWQgUmVuZGVyVHJl
ZUJ1aWxkZXI6Om1vdmVBbGxDaGlsZHJlblRvKFJlbmRlckJveE1vZGVsT2JqZWN0JiBmcm9tLCBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogdG8sIE5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uIG5vcm1hbGl6
ZUFmdGVySW5zZXJ0aW9uKQordm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6bW92ZUFsbENoaWxkcmVu
VG8oUmVuZGVyQm94TW9kZWxPYmplY3QmIGZyb20sIFJlbmRlckJveE1vZGVsT2JqZWN0JiB0bywg
Tm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24gbm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pCiB7CiAgICAg
bW92ZUFsbENoaWxkcmVuVG8oZnJvbSwgdG8sIG51bGxwdHIsIG5vcm1hbGl6ZUFmdGVySW5zZXJ0
aW9uKTsKIH0KIAotdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6bW92ZUFsbENoaWxkcmVuVG8oUmVu
ZGVyQm94TW9kZWxPYmplY3QmIGZyb20sIFJlbmRlckJveE1vZGVsT2JqZWN0KiB0bywgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCwgTm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24gbm9ybWFsaXplQWZ0
ZXJJbnNlcnRpb24pCit2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjptb3ZlQWxsQ2hpbGRyZW5UbyhS
ZW5kZXJCb3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxPYmplY3QmIHRvLCBSZW5k
ZXJPYmplY3QqIGJlZm9yZUNoaWxkLCBOb3JtYWxpemVBZnRlckluc2VydGlvbiBub3JtYWxpemVB
ZnRlckluc2VydGlvbikKIHsKICAgICBtb3ZlQ2hpbGRyZW5Ubyhmcm9tLCB0bywgZnJvbS5maXJz
dENoaWxkKCksIG51bGxwdHIsIGJlZm9yZUNoaWxkLCBub3JtYWxpemVBZnRlckluc2VydGlvbik7
CiB9CiAKLXZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6Om1vdmVDaGlsZHJlblRvKFJlbmRlckJveE1v
ZGVsT2JqZWN0JiBmcm9tLCBSZW5kZXJCb3hNb2RlbE9iamVjdCogdG8sIFJlbmRlck9iamVjdCog
c3RhcnRDaGlsZCwgUmVuZGVyT2JqZWN0KiBlbmRDaGlsZCwgTm9ybWFsaXplQWZ0ZXJJbnNlcnRp
b24gbm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pCit2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjptb3Zl
Q2hpbGRyZW5UbyhSZW5kZXJCb3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxPYmpl
Y3QmIHRvLCBSZW5kZXJPYmplY3QqIHN0YXJ0Q2hpbGQsIFJlbmRlck9iamVjdCogZW5kQ2hpbGQs
IE5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uIG5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uKQogewogICAg
IG1vdmVDaGlsZHJlblRvKGZyb20sIHRvLCBzdGFydENoaWxkLCBlbmRDaGlsZCwgbnVsbHB0ciwg
bm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pOwogfQogCi12b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpt
b3ZlQ2hpbGRyZW5UbyhSZW5kZXJCb3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxP
YmplY3QqIHRvLCBSZW5kZXJPYmplY3QqIHN0YXJ0Q2hpbGQsIFJlbmRlck9iamVjdCogZW5kQ2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQsIE5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uIG5v
cm1hbGl6ZUFmdGVySW5zZXJ0aW9uKQordm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6bW92ZUNoaWxk
cmVuVG8oUmVuZGVyQm94TW9kZWxPYmplY3QmIGZyb20sIFJlbmRlckJveE1vZGVsT2JqZWN0JiB0
bywgUmVuZGVyT2JqZWN0KiBzdGFydENoaWxkLCBSZW5kZXJPYmplY3QqIGVuZENoaWxkLCBSZW5k
ZXJPYmplY3QqIGJlZm9yZUNoaWxkLCBOb3JtYWxpemVBZnRlckluc2VydGlvbiBub3JtYWxpemVB
ZnRlckluc2VydGlvbikKIHsKICAgICAvLyBUaGlzIGNvbmRpdGlvbiBpcyByYXJlbHkgaGl0IHNp
bmNlIHRoaXMgZnVuY3Rpb24gaXMgdXN1YWxseSBjYWxsZWQgb24KICAgICAvLyBhbm9ueW1vdXMg
YmxvY2tzIHdoaWNoIGNhbiBubyBsb25nZXIgY2FycnkgcG9zaXRpb25lZCBvYmplY3RzIChzZWUg
cjEyMDc2MSkKQEAgLTQyNyw3ICs0MjcsNyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjptb3Zl
Q2hpbGRyZW5UbyhSZW5kZXJCb3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZQogICAg
ICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93Pihmcm9tKS5yZW1vdmVGbG9hdGluZ09i
amVjdHMoKTsKICAgICB9CiAKLSAgICBBU1NFUlQoIWJlZm9yZUNoaWxkIHx8IHRvID09IGJlZm9y
ZUNoaWxkLT5wYXJlbnQoKSk7CisgICAgQVNTRVJUKCFiZWZvcmVDaGlsZCB8fCAmdG8gPT0gYmVm
b3JlQ2hpbGQtPnBhcmVudCgpKTsKICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBzdGFy
dENoaWxkOyBjaGlsZCAmJiBjaGlsZCAhPSBlbmRDaGlsZDsgKSB7CiAgICAgICAgIC8vIFNhdmUg
b3VyIG5leHQgc2libGluZyBhcyBtb3ZlQ2hpbGRUbyB3aWxsIGNsZWFyIGl0LgogICAgICAgICBS
ZW5kZXJPYmplY3QqIG5leHRTaWJsaW5nID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CkBAIC00NDks
NyArNDQ5LDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6bW92ZUNoaWxkcmVuVG8oUmVuZGVy
Qm94TW9kZWxPYmplY3QmIGZyb20sIFJlbmRlckJveE1vZGUKICAgICAgICAgICAgIG5leHRTaWJs
aW5nID0gbmV4dFNpYmxpbmctPm5leHRTaWJsaW5nKCk7CiAgICAgICAgIH0KIAotICAgICAgICBt
b3ZlQ2hpbGRUbyhmcm9tLCB0bywgY2hpbGQsIGJlZm9yZUNoaWxkLCBub3JtYWxpemVBZnRlcklu
c2VydGlvbik7CisgICAgICAgIG1vdmVDaGlsZFRvKGZyb20sIHRvLCAqY2hpbGQsIGJlZm9yZUNo
aWxkLCBub3JtYWxpemVBZnRlckluc2VydGlvbik7CiAgICAgICAgIGNoaWxkID0gbmV4dFNpYmxp
bmc7CiAgICAgfQogfQpAQCAtNDYwLDcgKzQ2MCw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6
Om1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zsb2F0c1RvKFJlbmRlckJsb2NrJiBmcm9tLCBSZW5k
CiAgICAgICAgIGJsb2NrRmxvd0J1aWxkZXIoKS5tb3ZlQWxsQ2hpbGRyZW5JbmNsdWRpbmdGbG9h
dHNUbyhkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KGZyb20pLCB0bywgbm9ybWFsaXplQWZ0ZXJJ
bnNlcnRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1vdmVBbGxDaGlsZHJlblRv
KGZyb20sICZ0bywgbm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pOworICAgIG1vdmVBbGxDaGlsZHJl
blRvKGZyb20sIHRvLCBub3JtYWxpemVBZnRlckluc2VydGlvbik7CiB9CiAKIHZvaWQgUmVuZGVy
VHJlZUJ1aWxkZXI6Om1ha2VDaGlsZHJlbk5vbklubGluZShSZW5kZXJCbG9jayYgcGFyZW50LCBS
ZW5kZXJPYmplY3QqIGluc2VydGlvblBvaW50KQpAQCAtNDk2LDcgKzQ5Niw3IEBAIHZvaWQgUmVu
ZGVyVHJlZUJ1aWxkZXI6Om1ha2VDaGlsZHJlbk5vbklubGluZShSZW5kZXJCbG9jayYgcGFyZW50
LCBSZW5kZXJPYmplY3QqCiAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBwYXJlbnQuY3JlYXRlQW5v
bnltb3VzQmxvY2soKTsKICAgICAgICAgYXV0byYgYmxvY2sgPSAqbmV3QmxvY2s7CiAgICAgICAg
IGluc2VydENoaWxkVG9SZW5kZXJFbGVtZW50SW50ZXJuYWwocGFyZW50LCBXVEZNb3ZlKG5ld0Js
b2NrKSwgaW5saW5lUnVuU3RhcnQpOwotICAgICAgICBtb3ZlQ2hpbGRyZW5UbyhwYXJlbnQsICZi
bG9jaywgaW5saW5lUnVuU3RhcnQsIGNoaWxkLCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXpl
QWZ0ZXJJbnNlcnRpb246Ok5vKTsKKyAgICAgICAgbW92ZUNoaWxkcmVuVG8ocGFyZW50LCBibG9j
aywgaW5saW5lUnVuU3RhcnQsIGNoaWxkLCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXplQWZ0
ZXJJbnNlcnRpb246Ok5vKTsKICAgICB9CiAjaWZuZGVmIE5ERUJVRwogICAgIGZvciAoUmVuZGVy
T2JqZWN0KiBjID0gcGFyZW50LmZpcnN0Q2hpbGQoKTsgYzsgYyA9IGMtPm5leHRTaWJsaW5nKCkp
CkBAIC01MjUsNyArNTI1LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJUcmVlQnVpbGRlcjo6c3Bs
aXRBbm9ueW1vdXNCb3hlc0Fyb3VuZENoaWxkKFJlbmRlckJveCYgcGFyZW4KICAgICAgICAgICAg
IC8vIFNlZSBmb3IgZXhhbXBsZSBSZW5kZXJUYWJsZUNlbGw6Y2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQuCiAgICAgICAgICAgICBtYXJrQm94Rm9yUmVsYXlvdXRBZnRlclNwbGl0KCpwYXJl
bnRCb3gpOwogICAgICAgICAgICAgaW5zZXJ0Q2hpbGRUb1JlbmRlckVsZW1lbnRJbnRlcm5hbCgq
cGFyZW50Qm94LCBXVEZNb3ZlKG5ld1Bvc3RCb3gpLCBib3hUb1NwbGl0Lm5leHRTaWJsaW5nKCkp
OwotICAgICAgICAgICAgbW92ZUNoaWxkcmVuVG8oYm94VG9TcGxpdCwgJnBvc3RCb3gsIGJlZm9y
ZUNoaWxkLCBudWxscHRyLCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXplQWZ0ZXJJbnNlcnRp
b246Olllcyk7CisgICAgICAgICAgICBtb3ZlQ2hpbGRyZW5Ubyhib3hUb1NwbGl0LCBwb3N0Qm94
LCBiZWZvcmVDaGlsZCwgbnVsbHB0ciwgUmVuZGVyVHJlZUJ1aWxkZXI6Ok5vcm1hbGl6ZUFmdGVy
SW5zZXJ0aW9uOjpZZXMpOwogCiAgICAgICAgICAgICBtYXJrQm94Rm9yUmVsYXlvdXRBZnRlclNw
bGl0KGJveFRvU3BsaXQpOwogICAgICAgICAgICAgbWFya0JveEZvclJlbGF5b3V0QWZ0ZXJTcGxp
dChwb3N0Qm94KTsKQEAgLTY1OCwyNCArNjU4LDYgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6
dXBkYXRlQWZ0ZXJEZXNjZW5kYW50cyhSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKICAgICAgICAg
bXVsdGlDb2x1bW5CdWlsZGVyKCkudXBkYXRlQWZ0ZXJEZXNjZW5kYW50cyhkb3duY2FzdDxSZW5k
ZXJCbG9ja0Zsb3c+KHJlbmRlcmVyKSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IFJl
bmRlclRyZWVCdWlsZGVyOjp0YWtlQ2hpbGRGcm9tUmVuZGVyTWVudUxpc3QoUmVuZGVyTWVudUxp
c3QmIHBhcmVudCwgUmVuZGVyT2JqZWN0JiBjaGlsZCkKLXsKLSAgICBhdXRvKiBpbm5lclJlbmRl
cmVyID0gcGFyZW50LmlubmVyUmVuZGVyZXIoKTsKLSAgICBpZiAoIWlubmVyUmVuZGVyZXIgfHwg
JmNoaWxkID09IGlubmVyUmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBibG9ja0J1aWxkZXIoKS50
YWtlQ2hpbGQocGFyZW50LCBjaGlsZCk7Ci0gICAgcmV0dXJuIHRha2VDaGlsZCgqaW5uZXJSZW5k
ZXJlciwgY2hpbGQpOwotfQotCi1SZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVp
bGRlcjo6dGFrZUNoaWxkRnJvbVJlbmRlckJ1dHRvbihSZW5kZXJCdXR0b24mIHBhcmVudCwgUmVu
ZGVyT2JqZWN0JiBjaGlsZCkKLXsKLSAgICBhdXRvKiBpbm5lclJlbmRlcmVyID0gcGFyZW50Lmlu
bmVyUmVuZGVyZXIoKTsKLSAgICBpZiAoIWlubmVyUmVuZGVyZXIgfHwgJmNoaWxkID09IGlubmVy
UmVuZGVyZXIgfHwgY2hpbGQucGFyZW50KCkgPT0gJnBhcmVudCkgewotICAgICAgICBBU1NFUlQo
JmNoaWxkID09IGlubmVyUmVuZGVyZXIgfHwgIWlubmVyUmVuZGVyZXIpOwotICAgICAgICByZXR1
cm4gYmxvY2tCdWlsZGVyKCkudGFrZUNoaWxkKHBhcmVudCwgY2hpbGQpOwotICAgIH0KLSAgICBy
ZXR1cm4gdGFrZUNoaWxkKCppbm5lclJlbmRlcmVyLCBjaGlsZCk7Ci19Ci0KIFJlbmRlclB0cjxS
ZW5kZXJPYmplY3Q+IFJlbmRlclRyZWVCdWlsZGVyOjp0YWtlQ2hpbGRGcm9tUmVuZGVyR3JpZChS
ZW5kZXJHcmlkJiBwYXJlbnQsIFJlbmRlck9iamVjdCYgY2hpbGQpCiB7CiAgICAgYXV0byB0YWtl
bkNoaWxkID0gYmxvY2tCdWlsZGVyKCkudGFrZUNoaWxkKHBhcmVudCwgY2hpbGQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIu
aAppbmRleCBlMmNiODEwNjJjOTM3NjA3ZTJmMTE3ZWFiOTQ4YjI2M2MyNDM4N2IyLi41M2QwM2Jm
YTM3ZTkyZjMzMzU3ZTg4Zjk1NDNkMDQ0NmU0MTI0MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuaApAQCAtMjksMjEg
KzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBSZW5kZXJCdXR0b247CiBj
bGFzcyBSZW5kZXJHcmlkOwotY2xhc3MgUmVuZGVyTWF0aE1MRmVuY2VkOwotY2xhc3MgUmVuZGVy
TWVudUxpc3Q7Ci1jbGFzcyBSZW5kZXJSdWJ5QXNCbG9jazsKLWNsYXNzIFJlbmRlclJ1YnlBc0lu
bGluZTsKLWNsYXNzIFJlbmRlclJ1YnlCYXNlOwotY2xhc3MgUmVuZGVyUnVieVJ1bjsKLWNsYXNz
IFJlbmRlclNWR0NvbnRhaW5lcjsKLWNsYXNzIFJlbmRlclNWR0lubGluZTsKLWNsYXNzIFJlbmRl
clNWR1Jvb3Q7Ci1jbGFzcyBSZW5kZXJTVkdUZXh0OwotY2xhc3MgUmVuZGVyVGFibGU7Ci1jbGFz
cyBSZW5kZXJUYWJsZVJvdzsKLWNsYXNzIFJlbmRlclRhYmxlU2VjdGlvbjsKIGNsYXNzIFJlbmRl
clRyZWVVcGRhdGVyOwogCiBjbGFzcyBSZW5kZXJUcmVlQnVpbGRlciB7CkBAIC01MSwzOSArMzcs
NDggQEAgcHVibGljOgogICAgIFJlbmRlclRyZWVCdWlsZGVyKFJlbmRlclZpZXcmKTsKICAgICB+
UmVuZGVyVHJlZUJ1aWxkZXIoKTsKIAorICAgIC8vIFRoaXMgYXZvaWRzIGhhdmluZyB0byBjb252
ZXJ0IGFsbCBzaXRlcyB0aGF0IG5lZWQgUmVuZGVyVHJlZUJ1aWxkZXIgaW4gb25lIGdvLgorICAg
IC8vIEZJWE1FOiBSZW1vdmUuCisgICAgc3RhdGljIFJlbmRlclRyZWVCdWlsZGVyKiBjdXJyZW50
KCkgeyByZXR1cm4gc19jdXJyZW50OyB9CisKICAgICB2b2lkIGluc2VydENoaWxkKFJlbmRlclRy
ZWVQb3NpdGlvbiYsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+KTsKICAgICB2b2lkIGluc2VydENo
aWxkKFJlbmRlckVsZW1lbnQmIHBhcmVudCwgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4sIFJlbmRl
ck9iamVjdCogYmVmb3JlQ2hpbGQgPSBudWxscHRyKTsKLSAgICB2b2lkIGluc2VydENoaWxkSWdu
b3JpbmdDb250aW51YXRpb24oUmVuZGVyRWxlbWVudCYgcGFyZW50LCBSZW5kZXJQdHI8UmVuZGVy
T2JqZWN0PiwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IG51bGxwdHIpOwogCiAgICAgUmVu
ZGVyUHRyPFJlbmRlck9iamVjdD4gdGFrZUNoaWxkKFJlbmRlckVsZW1lbnQmLCBSZW5kZXJPYmpl
Y3QmKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKLSAgICB2b2lkIHVwZGF0ZUFmdGVyRGVzY2VuZGFu
dHMoUmVuZGVyRWxlbWVudCYpOwotCi0gICAgLy8gVGhpcyBhdm9pZHMgaGF2aW5nIHRvIGNvbnZl
cnQgYWxsIHNpdGVzIHRoYXQgbmVlZCBSZW5kZXJUcmVlQnVpbGRlciBpbiBvbmUgZ28uCi0gICAg
Ly8gRklYTUU6IFJlbW92ZS4KLSAgICBzdGF0aWMgUmVuZGVyVHJlZUJ1aWxkZXIqIGN1cnJlbnQo
KSB7IHJldHVybiBzX2N1cnJlbnQ7IH0KKyAgICAvLyBOb3JtYWxpemVBZnRlckluc2VydGlvbjo6
WWVzIGVuc3VyZXMgdGhhdCB0aGUgZGVzdGluYXRpb24gc3VidHJlZSBpcyBjb25zaXN0ZW50IGFm
dGVyIHRoZSBpbnNlcnRpb24gKGFub255bW91cyB3cmFwcGVycyBldGMpLgorICAgIGVudW0gY2xh
c3MgTm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24geyBObywgWWVzIH07CisgICAgdm9pZCBtb3ZlQ2hp
bGRUbyhSZW5kZXJCb3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxPYmplY3QmIHRv
LCBSZW5kZXJPYmplY3QmIGNoaWxkLCBOb3JtYWxpemVBZnRlckluc2VydGlvbik7CiAKLSAgICAv
LyBUaGVzZSBmdW5jdGlvbnMgYXJlIHRlbXBvcmFyeSB1bnRpbCBhZnRlciBhbGwgYmxvY2svaW5s
aW5lL2NvbnRpbnVhdGlvbiBjb2RlIGlzIG1vdmVkIG92ZXIuCi0gICAgUmVuZGVyUHRyPFJlbmRl
ck9iamVjdD4gdGFrZUNoaWxkRnJvbVJlbmRlckVsZW1lbnQoUmVuZGVyRWxlbWVudCYgcGFyZW50
LCBSZW5kZXJPYmplY3QmIGNoaWxkKSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0gICAgdm9pZCBpbnNl
cnRDaGlsZFRvUmVuZGVyRWxlbWVudEludGVybmFsKFJlbmRlckVsZW1lbnQmIHBhcmVudCwgUmVu
ZGVyUHRyPFJlbmRlck9iamVjdD4gY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSBu
dWxscHRyKTsKKyAgICB2b2lkIHVwZGF0ZUFmdGVyRGVzY2VuZGFudHMoUmVuZGVyRWxlbWVudCYp
OworICAgIHZvaWQgcmVtb3ZlRnJvbVBhcmVudEFuZERlc3Ryb3lDbGVhbmluZ1VwQW5vbnltb3Vz
V3JhcHBlcnMoUmVuZGVyT2JqZWN0JiBjaGlsZCk7CiAKICAgICB2b2lkIGNoaWxkRmxvd1N0YXRl
Q2hhbmdlc0FuZEFmZmVjdHNQYXJlbnRCbG9jayhSZW5kZXJFbGVtZW50JiBjaGlsZCk7CiAgICAg
dm9pZCBjaGlsZEZsb3dTdGF0ZUNoYW5nZXNBbmROb0xvbmdlckFmZmVjdHNQYXJlbnRCbG9jayhS
ZW5kZXJFbGVtZW50JiBjaGlsZCk7Ci0gICAgdm9pZCByZW1vdmVGcm9tUGFyZW50QW5kRGVzdHJv
eUNsZWFuaW5nVXBBbm9ueW1vdXNXcmFwcGVycyhSZW5kZXJPYmplY3QmIGNoaWxkKTsKICAgICB2
b2lkIG11bHRpQ29sdW1uRGVzY2VuZGFudEluc2VydGVkKFJlbmRlck11bHRpQ29sdW1uRmxvdyYs
IFJlbmRlck9iamVjdCYgbmV3RGVzY2VuZGFudCk7CiAKLSAgICAvLyBOb3JtYWxpemVBZnRlcklu
c2VydGlvbjo6WWVzIGVuc3VyZXMgdGhhdCB0aGUgZGVzdGluYXRpb24gc3VidHJlZSBpcyBjb25z
aXN0ZW50IGFmdGVyIHRoZSBpbnNlcnRpb24gKGFub255bW91cyB3cmFwcGVycyBldGMpLgotICAg
IGVudW0gY2xhc3MgTm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24geyBObywgWWVzIH07Ci0gICAgdm9p
ZCBtb3ZlQ2hpbGRUbyhSZW5kZXJCb3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxP
YmplY3QqIHRvLCBSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxk
LCBOb3JtYWxpemVBZnRlckluc2VydGlvbik7Ci0gICAgdm9pZCBtb3ZlQ2hpbGRUbyhSZW5kZXJC
b3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHRvLCBSZW5kZXJPYmpl
Y3QqIGNoaWxkLCBOb3JtYWxpemVBZnRlckluc2VydGlvbik7Ci0gICAgdm9pZCBtb3ZlQWxsQ2hp
bGRyZW5UbyhSZW5kZXJCb3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHRvLCBOb3JtYWxpemVBZnRlckluc2VydGlvbik7Ci0gICAgdm9pZCBtb3ZlQWxsQ2hpbGRyZW5U
byhSZW5kZXJCb3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHRvLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkLCBOb3JtYWxpemVBZnRlckluc2VydGlvbik7Citwcml2
YXRlOgorICAgIHZvaWQgaW5zZXJ0Q2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihSZW5kZXJFbGVt
ZW50JiBwYXJlbnQsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+LCBSZW5kZXJPYmplY3QqIGJlZm9y
ZUNoaWxkID0gbnVsbHB0cik7CisgICAgdm9pZCBpbnNlcnRDaGlsZFRvUmVuZGVyR3JpZChSZW5k
ZXJHcmlkJiBwYXJlbnQsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJPYmpl
Y3QqIGJlZm9yZUNoaWxkID0gbnVsbHB0cik7CisgICAgdm9pZCBpbnNlcnRDaGlsZFRvUmVuZGVy
RWxlbWVudChSZW5kZXJFbGVtZW50JiBwYXJlbnQsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNo
aWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gbnVsbHB0cik7CisgICAgdm9pZCBpbnNl
cnRDaGlsZFRvUmVuZGVyRWxlbWVudEludGVybmFsKFJlbmRlckVsZW1lbnQmIHBhcmVudCwgUmVu
ZGVyUHRyPFJlbmRlck9iamVjdD4gY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSBu
dWxscHRyKTsKKworICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IHRha2VDaGlsZEZyb21SZW5k
ZXJFbGVtZW50KFJlbmRlckVsZW1lbnQmIHBhcmVudCwgUmVuZGVyT2JqZWN0JiBjaGlsZCkgV0FS
Tl9VTlVTRURfUkVUVVJOOworICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IHRha2VDaGlsZEZy
b21SZW5kZXJHcmlkKFJlbmRlckdyaWQmIHBhcmVudCwgUmVuZGVyT2JqZWN0JiBjaGlsZCkgV0FS
Tl9VTlVTRURfUkVUVVJOOworCisgICAgdm9pZCBtb3ZlQ2hpbGRUbyhSZW5kZXJCb3hNb2RlbE9i
amVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxPYmplY3QmIHRvLCBSZW5kZXJPYmplY3QmIGNoaWxk
LCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkLCBOb3JtYWxpemVBZnRlckluc2VydGlvbik7CiAg
ICAgLy8gTW92ZSBhbGwgb2YgdGhlIGtpZHMgZnJvbSB8c3RhcnRDaGlsZHwgdXAgdG8gYnV0IGV4
Y2x1ZGluZyB8ZW5kQ2hpbGR8LiAwIGNhbiBiZSBwYXNzZWQgYXMgdGhlIHxlbmRDaGlsZHwgdG8g
ZGVub3RlCiAgICAgLy8gdGhhdCBhbGwgdGhlIGtpZHMgZnJvbSB8c3RhcnRDaGlsZHwgb253YXJk
cyBzaG91bGQgYmUgbW92ZWQuCi0gICAgdm9pZCBtb3ZlQ2hpbGRyZW5UbyhSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgZnJvbSwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHRvLCBSZW5kZXJPYmplY3QqIHN0
YXJ0Q2hpbGQsIFJlbmRlck9iamVjdCogZW5kQ2hpbGQsIE5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9u
KTsKLSAgICB2b2lkIG1vdmVDaGlsZHJlblRvKFJlbmRlckJveE1vZGVsT2JqZWN0JiBmcm9tLCBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogdG8sIFJlbmRlck9iamVjdCogc3RhcnRDaGlsZCwgUmVuZGVy
T2JqZWN0KiBlbmRDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCwgTm9ybWFsaXplQWZ0
ZXJJbnNlcnRpb24pOworICAgIHZvaWQgbW92ZUNoaWxkcmVuVG8oUmVuZGVyQm94TW9kZWxPYmpl
Y3QmIGZyb20sIFJlbmRlckJveE1vZGVsT2JqZWN0JiB0bywgUmVuZGVyT2JqZWN0KiBzdGFydENo
aWxkLCBSZW5kZXJPYmplY3QqIGVuZENoaWxkLCBOb3JtYWxpemVBZnRlckluc2VydGlvbik7Cisg
ICAgdm9pZCBtb3ZlQ2hpbGRyZW5UbyhSZW5kZXJCb3hNb2RlbE9iamVjdCYgZnJvbSwgUmVuZGVy
Qm94TW9kZWxPYmplY3QmIHRvLCBSZW5kZXJPYmplY3QqIHN0YXJ0Q2hpbGQsIFJlbmRlck9iamVj
dCogZW5kQ2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQsIE5vcm1hbGl6ZUFmdGVySW5z
ZXJ0aW9uKTsKKyAgICB2b2lkIG1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zsb2F0c1RvKFJlbmRl
ckJsb2NrJiBmcm9tLCBSZW5kZXJCbG9jayYgdG9CbG9jaywgUmVuZGVyVHJlZUJ1aWxkZXI6Ok5v
cm1hbGl6ZUFmdGVySW5zZXJ0aW9uKTsKKyAgICB2b2lkIG1vdmVBbGxDaGlsZHJlblRvKFJlbmRl
ckJveE1vZGVsT2JqZWN0JiBmcm9tLCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgdG8sIE5vcm1hbGl6
ZUFmdGVySW5zZXJ0aW9uKTsKKyAgICB2b2lkIG1vdmVBbGxDaGlsZHJlblRvKFJlbmRlckJveE1v
ZGVsT2JqZWN0JiBmcm9tLCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgdG8sIFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQsIE5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uKTsKKworICAgIFJlbmRlck9iamVj
dCogc3BsaXRBbm9ueW1vdXNCb3hlc0Fyb3VuZENoaWxkKFJlbmRlckJveCYgcGFyZW50LCBSZW5k
ZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsKKyAgICB2b2lkIG1ha2VDaGlsZHJlbk5vbklubGluZShS
ZW5kZXJCbG9jayYgcGFyZW50LCBSZW5kZXJPYmplY3QqIGluc2VydGlvblBvaW50ID0gbnVsbHB0
cik7CisgICAgdm9pZCByZW1vdmVBbm9ueW1vdXNXcmFwcGVyc0ZvcklubGluZUNoaWxkcmVuSWZO
ZWVkZWQoUmVuZGVyRWxlbWVudCYgcGFyZW50KTsKIAotcHJpdmF0ZToKICAgICBjbGFzcyBGaXJz
dExldHRlcjsKICAgICBjbGFzcyBMaXN0OwogICAgIGNsYXNzIE11bHRpQ29sdW1uOwpAQCAtOTYs
MTggKzkxLDYgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBTVkc7CiAgICAgY2xhc3MgTWF0aE1MOwog
Ci0gICAgUmVuZGVyT2JqZWN0KiBzcGxpdEFub255bW91c0JveGVzQXJvdW5kQ2hpbGQoUmVuZGVy
Qm94JiBwYXJlbnQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOwotICAgIHZvaWQgbWFrZUNo
aWxkcmVuTm9uSW5saW5lKFJlbmRlckJsb2NrJiBwYXJlbnQsIFJlbmRlck9iamVjdCogaW5zZXJ0
aW9uUG9pbnQgPSBudWxscHRyKTsKLSAgICB2b2lkIHJlbW92ZUFub255bW91c1dyYXBwZXJzRm9y
SW5saW5lQ2hpbGRyZW5JZk5lZWRlZChSZW5kZXJFbGVtZW50JiBwYXJlbnQpOwotICAgIFJlbmRl
clB0cjxSZW5kZXJPYmplY3Q+IHRha2VDaGlsZEZyb21SZW5kZXJNZW51TGlzdChSZW5kZXJNZW51
TGlzdCYgcGFyZW50LCBSZW5kZXJPYmplY3QmIGNoaWxkKTsKLSAgICBSZW5kZXJQdHI8UmVuZGVy
T2JqZWN0PiB0YWtlQ2hpbGRGcm9tUmVuZGVyQnV0dG9uKFJlbmRlckJ1dHRvbiYgcGFyZW50LCBS
ZW5kZXJPYmplY3QmIGNoaWxkKTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiB0YWtlQ2hp
bGRGcm9tUmVuZGVyR3JpZChSZW5kZXJHcmlkJiBwYXJlbnQsIFJlbmRlck9iamVjdCYgY2hpbGQp
OwotCi0gICAgdm9pZCBtb3ZlQWxsQ2hpbGRyZW5JbmNsdWRpbmdGbG9hdHNUbyhSZW5kZXJCbG9j
ayYgZnJvbSwgUmVuZGVyQmxvY2smIHRvQmxvY2ssIFJlbmRlclRyZWVCdWlsZGVyOjpOb3JtYWxp
emVBZnRlckluc2VydGlvbik7Ci0KLSAgICB2b2lkIGluc2VydENoaWxkVG9SZW5kZXJHcmlkKFJl
bmRlckdyaWQmIHBhcmVudCwgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY2hpbGQsIFJlbmRlck9i
amVjdCogYmVmb3JlQ2hpbGQgPSBudWxscHRyKTsKLSAgICB2b2lkIGluc2VydENoaWxkVG9SZW5k
ZXJFbGVtZW50KFJlbmRlckVsZW1lbnQmIHBhcmVudCwgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4g
Y2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSBudWxscHRyKTsKLQogICAgIEZpcnN0
TGV0dGVyJiBmaXJzdExldHRlckJ1aWxkZXIoKSB7IHJldHVybiAqbV9maXJzdExldHRlckJ1aWxk
ZXI7IH0KICAgICBMaXN0JiBsaXN0QnVpbGRlcigpIHsgcmV0dXJuICptX2xpc3RCdWlsZGVyOyB9
CiAgICAgTXVsdGlDb2x1bW4mIG11bHRpQ29sdW1uQnVpbGRlcigpIHsgcmV0dXJuICptX211bHRp
Q29sdW1uQnVpbGRlcjsgfQpAQCAtMTIxLDcgKzEwNCw2IEBAIHByaXZhdGU6CiAgICAgTWF0aE1M
JiBtYXRoTUxCdWlsZGVyKCkgeyByZXR1cm4gKm1fbWF0aE1MQnVpbGRlcjsgfQogCiAgICAgUmVu
ZGVyVmlldyYgbV92aWV3OwotCiAgICAgUmVuZGVyVHJlZUJ1aWxkZXIqIG1fcHJldmlvdXMgeyBu
dWxscHRyIH07CiAgICAgc3RhdGljIFJlbmRlclRyZWVCdWlsZGVyKiBzX2N1cnJlbnQ7CiAKQEAg
LTEzOSw0ICsxMjEsMyBAQCBwcml2YXRlOgogfTsKIAogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5j
cHAKaW5kZXggMTExYTE1MjVkOTYxMzlmYmE4YTBmZWM3YzBmMTljODMyYmE4YjEzNy4uZGMwMTdm
ZDg0Yzc3M2Q4OTcyZjZhM2QwNGQwODJjMjlkMzQxOTI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckJsb2Nr
LmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OkJsb2NrOjpk
cm9wQW5vbnltb3VzQm94Q2hpbGQoUmVuZGVyQmxvY2smIHBhcmVudCwgUmVuZGVyCiAgICAgYXV0
byogbmV4dFNpYmxpbmcgPSBjaGlsZC5uZXh0U2libGluZygpOwogCiAgICAgYXV0byB0b0JlRGVs
ZXRlZCA9IG1fYnVpbGRlci50YWtlQ2hpbGRGcm9tUmVuZGVyRWxlbWVudChwYXJlbnQsIGNoaWxk
KTsKLSAgICBtX2J1aWxkZXIubW92ZUFsbENoaWxkcmVuVG8oY2hpbGQsICZwYXJlbnQsIG5leHRT
aWJsaW5nLCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXplQWZ0ZXJJbnNlcnRpb246Ok5vKTsK
KyAgICBtX2J1aWxkZXIubW92ZUFsbENoaWxkcmVuVG8oY2hpbGQsIHBhcmVudCwgbmV4dFNpYmxp
bmcsIFJlbmRlclRyZWVCdWlsZGVyOjpOb3JtYWxpemVBZnRlckluc2VydGlvbjo6Tm8pOwogICAg
IC8vIERlbGV0ZSB0aGUgbm93LWVtcHR5IGJsb2NrJ3MgbGluZXMgYW5kIG51a2UgaXQuCiAgICAg
Y2hpbGQuZGVsZXRlTGluZXMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9ja0Zsb3cuY3BwCmlu
ZGV4IGI2NmVhOGM3ODM5OWRlYjQ2N2Y1ZjQ5NTQwYjlkZDljMTM3ZmZmMTYuLjMwZTQxOTdmYzk4
OTQ0Yjc4NGY4MzNkMzU0MGVhYmE3MzZhYmY4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckJsb2NrRmxvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2tG
bG93LmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpCbG9ja0Zs
b3c6Omluc2VydENoaWxkKFJlbmRlckJsb2NrRmxvdyYgcGFyZW50LCBSZW5kZXJQdAogCiB2b2lk
IFJlbmRlclRyZWVCdWlsZGVyOjpCbG9ja0Zsb3c6Om1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zs
b2F0c1RvKFJlbmRlckJsb2NrRmxvdyYgZnJvbSwgUmVuZGVyQmxvY2smIHRvLCBSZW5kZXJUcmVl
QnVpbGRlcjo6Tm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24gbm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24p
CiB7Ci0gICAgbV9idWlsZGVyLm1vdmVBbGxDaGlsZHJlblRvKGZyb20sICZ0bywgbm9ybWFsaXpl
QWZ0ZXJJbnNlcnRpb24pOworICAgIG1fYnVpbGRlci5tb3ZlQWxsQ2hpbGRyZW5Ubyhmcm9tLCB0
bywgbm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pOwogICAgIGZyb20uYWRkRmxvYXRzVG9OZXdQYXJl
bnQoZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93Pih0bykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGb3JtQ29udHJv
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWls
ZGVyRm9ybUNvbnRyb2xzLmNwcAppbmRleCA4ZTMwMDU4NGYyZGM5ZGRhY2ZiZjE0NDhjMzYxYmJm
NTExNWZhMGUzLi5hNDg5NTMyNzkwOWMyNTU2NWIxNzExYTc0YWM3OWRiYjM0NzljM2IzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJGb3JtQ29udHJvbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlckZvcm1Db250cm9scy5jcHAKQEAgLTQ4LDYgKzQ4LDI1IEBAIHZv
aWQgUmVuZGVyVHJlZUJ1aWxkZXI6OkZvcm1Db250cm9sczo6aW5zZXJ0Q2hpbGQoUmVuZGVyTWVu
dUxpc3QmIHBhcmVudCwgUmVuZGVyCiAgICAgcGFyZW50LmRpZEluc2VydENoaWxkKG5ld0NoaWxk
LCBiZWZvcmVDaGlsZCk7CiB9CiAKK1JlbmRlclB0cjxSZW5kZXJPYmplY3Q+IFJlbmRlclRyZWVC
dWlsZGVyOjpGb3JtQ29udHJvbHM6OnRha2VDaGlsZChSZW5kZXJNZW51TGlzdCYgcGFyZW50LCBS
ZW5kZXJPYmplY3QmIGNoaWxkKQoreworICAgIGF1dG8qIGlubmVyUmVuZGVyZXIgPSBwYXJlbnQu
aW5uZXJSZW5kZXJlcigpOworICAgIGlmICghaW5uZXJSZW5kZXJlciB8fCAmY2hpbGQgPT0gaW5u
ZXJSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG1fYnVpbGRlci5ibG9ja0J1aWxkZXIoKS50YWtl
Q2hpbGQocGFyZW50LCBjaGlsZCk7CisgICAgcmV0dXJuIG1fYnVpbGRlci50YWtlQ2hpbGQoKmlu
bmVyUmVuZGVyZXIsIGNoaWxkKTsKK30KKworUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gUmVuZGVy
VHJlZUJ1aWxkZXI6OkZvcm1Db250cm9sczo6dGFrZUNoaWxkKFJlbmRlckJ1dHRvbiYgcGFyZW50
LCBSZW5kZXJPYmplY3QmIGNoaWxkKQoreworICAgIGF1dG8qIGlubmVyUmVuZGVyZXIgPSBwYXJl
bnQuaW5uZXJSZW5kZXJlcigpOworICAgIGlmICghaW5uZXJSZW5kZXJlciB8fCAmY2hpbGQgPT0g
aW5uZXJSZW5kZXJlciB8fCBjaGlsZC5wYXJlbnQoKSA9PSAmcGFyZW50KSB7CisgICAgICAgIEFT
U0VSVCgmY2hpbGQgPT0gaW5uZXJSZW5kZXJlciB8fCAhaW5uZXJSZW5kZXJlcik7CisgICAgICAg
IHJldHVybiBtX2J1aWxkZXIuYmxvY2tCdWlsZGVyKCkudGFrZUNoaWxkKHBhcmVudCwgY2hpbGQp
OworICAgIH0KKyAgICByZXR1cm4gbV9idWlsZGVyLnRha2VDaGlsZCgqaW5uZXJSZW5kZXJlciwg
Y2hpbGQpOworfQorCisKIFJlbmRlckJsb2NrJiBSZW5kZXJUcmVlQnVpbGRlcjo6Rm9ybUNvbnRy
b2xzOjpmaW5kT3JDcmVhdGVQYXJlbnRGb3JDaGlsZChSZW5kZXJCdXR0b24mIHBhcmVudCkKIHsK
ICAgICBhdXRvKiBpbm5lclJlbmRlcmVyID0gcGFyZW50LmlubmVyUmVuZGVyZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRl
ckZvcm1Db250cm9scy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRl
clRyZWVCdWlsZGVyRm9ybUNvbnRyb2xzLmgKaW5kZXggNTMzMWYwZGQxZjNhNGU1NTRhOGE3ZmFm
OTdiMGVjYTJjMDU3YzY0Zi4uOGYyNmY0NzJhNzdhMDY4ZjRmNDJkZDQ0YzQ1NTQ5YzVmMTIwZmQw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVCdWlsZGVyRm9ybUNvbnRyb2xzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRm9ybUNvbnRyb2xzLmgKQEAgLTQwLDYgKzQwLDkgQEAg
cHVibGljOgogICAgIHZvaWQgaW5zZXJ0Q2hpbGQoUmVuZGVyQnV0dG9uJiBwYXJlbnQsIFJlbmRl
clB0cjxSZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsKICAg
ICB2b2lkIGluc2VydENoaWxkKFJlbmRlck1lbnVMaXN0JiBwYXJlbnQsIFJlbmRlclB0cjxSZW5k
ZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsKIAorICAgIFJlbmRl
clB0cjxSZW5kZXJPYmplY3Q+IHRha2VDaGlsZChSZW5kZXJCdXR0b24mIHBhcmVudCwgUmVuZGVy
T2JqZWN0JiBjaGlsZCkgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIFJlbmRlclB0cjxSZW5kZXJP
YmplY3Q+IHRha2VDaGlsZChSZW5kZXJNZW51TGlzdCYgcGFyZW50LCBSZW5kZXJPYmplY3QmIGNo
aWxkKSBXQVJOX1VOVVNFRF9SRVRVUk47CisKIHByaXZhdGU6CiAgICAgUmVuZGVyQmxvY2smIGZp
bmRPckNyZWF0ZVBhcmVudEZvckNoaWxkKFJlbmRlckJ1dHRvbiYpOwogICAgIFJlbmRlckJsb2Nr
JiBmaW5kT3JDcmVhdGVQYXJlbnRGb3JDaGlsZChSZW5kZXJNZW51TGlzdCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVs
dGlDb2x1bW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVCdWlsZGVyTXVsdGlDb2x1bW4uY3BwCmluZGV4IDgxMGEwM2Q1YWE1NWEzNTA4NjUyYmJlMmYw
NTU2YjY1MjY2MWU2ZmQuLjJkMzgzZmYyMzFlZjkxMjZkZDljOTBjOTZlM2I1YTQ5ODFiNDI1YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlck11bHRpQ29sdW1uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5jcHAKQEAgLTE3MiwxMiArMTcyLDEy
IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjpjcmVhdGVGcmFnbWVudGVk
RmxvdyhSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiAgICAgbV9idWlsZGVyLmJsb2NrQnVpbGRlcigp
Lmluc2VydENoaWxkKGZsb3csIFdURk1vdmUobmV3RnJhZ21lbnRlZEZsb3cpLCBudWxscHRyKTsK
IAogICAgIC8vIFJlcGFyZW50IGNoaWxkcmVuIHByZWNlZGluZyB0aGUgZnJhZ21lbnRlZCBmbG93
IGludG8gdGhlIGZyYWdtZW50ZWQgZmxvdy4KLSAgICBtX2J1aWxkZXIubW92ZUNoaWxkcmVuVG8o
ZmxvdywgJmZyYWdtZW50ZWRGbG93LCBmbG93LmZpcnN0Q2hpbGQoKSwgJmZyYWdtZW50ZWRGbG93
LCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXplQWZ0ZXJJbnNlcnRpb246Olllcyk7CisgICAg
bV9idWlsZGVyLm1vdmVDaGlsZHJlblRvKGZsb3csIGZyYWdtZW50ZWRGbG93LCBmbG93LmZpcnN0
Q2hpbGQoKSwgJmZyYWdtZW50ZWRGbG93LCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXplQWZ0
ZXJJbnNlcnRpb246Olllcyk7CiAgICAgaWYgKGZsb3cuaXNGaWVsZHNldCgpKSB7CiAgICAgICAg
IC8vIEtlZXAgbGVnZW5kcyBvdXQgb2YgdGhlIGZsb3cgdGhyZWFkLgogICAgICAgICBmb3IgKGF1
dG8mIGJveCA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlckJveD4oZnJhZ21lbnRlZEZsb3cpKSB7CiAg
ICAgICAgICAgICBpZiAoYm94LmlzTGVnZW5kKCkpCi0gICAgICAgICAgICAgICAgbV9idWlsZGVy
Lm1vdmVDaGlsZFRvKGZyYWdtZW50ZWRGbG93LCAmZmxvdywgJmJveCwgUmVuZGVyVHJlZUJ1aWxk
ZXI6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpZZXMpOworICAgICAgICAgICAgICAgIG1fYnVp
bGRlci5tb3ZlQ2hpbGRUbyhmcmFnbWVudGVkRmxvdywgZmxvdywgYm94LCBSZW5kZXJUcmVlQnVp
bGRlcjo6Tm9ybWFsaXplQWZ0ZXJJbnNlcnRpb246Olllcyk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6
Y3JlYXRlRnJhZ21lbnRlZEZsb3coUmVuZGVyQmxvY2tGbG93JiBmbG93KQogICAgICAgICAvLyBL
ZWVwIHRoZSBtaWRkbGUgYmxvY2sgb3V0IG9mIHRoZSBmbG93IHRocmVhZC4KICAgICAgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyRWxlbWVudD4oZnJhZ21lbnRl
ZEZsb3cpKSB7CiAgICAgICAgICAgICBpZiAoIWRvd25jYXN0PFJlbmRlckxpbmVzQ2xhbXBGbG93
PihmcmFnbWVudGVkRmxvdykuaXNDaGlsZEFsbG93ZWRJbkZyYWdtZW50ZWRGbG93KGZsb3csIGVs
ZW1lbnQpKQotICAgICAgICAgICAgICAgIG1fYnVpbGRlci5tb3ZlQ2hpbGRUbyhmcmFnbWVudGVk
RmxvdywgJmZsb3csICZlbGVtZW50LCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXplQWZ0ZXJJ
bnNlcnRpb246Olllcyk7CisgICAgICAgICAgICAgICAgbV9idWlsZGVyLm1vdmVDaGlsZFRvKGZy
YWdtZW50ZWRGbG93LCBmbG93LCBlbGVtZW50LCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXpl
QWZ0ZXJJbnNlcnRpb246Olllcyk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIxNSw3ICsyMTUs
NyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6ZGVzdHJveUZyYWdtZW50
ZWRGbG93KFJlbmRlckJsb2NrRmxvdyYgZmxvdwogICAgICAgICBjb2x1bW5TZXQtPnJlbW92ZUZy
b21QYXJlbnRBbmREZXN0cm95KG1fYnVpbGRlcik7CiAKICAgICBmbG93LmNsZWFyTXVsdGlDb2x1
bW5GbG93KCk7Ci0gICAgbV9idWlsZGVyLm1vdmVBbGxDaGlsZHJlblRvKG11bHRpQ29sdW1uRmxv
dywgJmZsb3csIFJlbmRlclRyZWVCdWlsZGVyOjpOb3JtYWxpemVBZnRlckluc2VydGlvbjo6WWVz
KTsKKyAgICBtX2J1aWxkZXIubW92ZUFsbENoaWxkcmVuVG8obXVsdGlDb2x1bW5GbG93LCBmbG93
LCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXplQWZ0ZXJJbnNlcnRpb246Olllcyk7CiAgICAg
bXVsdGlDb2x1bW5GbG93LnJlbW92ZUZyb21QYXJlbnRBbmREZXN0cm95KG1fYnVpbGRlcik7CiAg
ICAgZm9yIChhdXRvJiBwYXJlbnRBbmRTcGFubmVyIDogcGFyZW50QW5kU3Bhbm5lckxpc3QpCiAg
ICAgICAgIG1fYnVpbGRlci5pbnNlcnRDaGlsZCgqcGFyZW50QW5kU3Bhbm5lci5maXJzdCwgV1RG
TW92ZShwYXJlbnRBbmRTcGFubmVyLnNlY29uZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJSdWJ5LmNwcAppbmRl
eCBlZTMxY2YyMWRmZjU2N2Y2YWZjNjdmNDczNWNhZGIwM2ZjOGUwZDUyLi4yOTE2YzI4NjE1MDY0
MzNlOGE3NWI5YjNjYjFjYTM2Yjg3NTMxNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJSdWJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJSdWJ5LmNwcApAQCAt
MTQyLDggKzE0Miw5IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OlJ1Ynk6Om1vdmVJbmxpbmVD
aGlsZHJlbihSZW5kZXJSdWJ5QmFzZSYgZnJvbSwgUmVuZGVyUnViCiAgICAgICAgICAgICBtX2J1
aWxkZXIuaW5zZXJ0Q2hpbGRUb1JlbmRlckVsZW1lbnRJbnRlcm5hbCh0bywgV1RGTW92ZShuZXdU
b0Jsb2NrKSk7CiAgICAgICAgIH0KICAgICB9CisgICAgQVNTRVJUKHRvQmxvY2spOwogICAgIC8v
IE1vdmUgb3VyIGlubGluZSBjaGlsZHJlbiBpbnRvIHRoZSB0YXJnZXQgYmxvY2sgd2UgZGV0ZXJt
aW5lZCBhYm92ZS4KLSAgICBtX2J1aWxkZXIubW92ZUNoaWxkcmVuVG8oZnJvbSwgdG9CbG9jaywg
ZnJvbS5maXJzdENoaWxkKCksIGJlZm9yZUNoaWxkLCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFs
aXplQWZ0ZXJJbnNlcnRpb246Ok5vKTsKKyAgICBtX2J1aWxkZXIubW92ZUNoaWxkcmVuVG8oZnJv
bSwgKnRvQmxvY2ssIGZyb20uZmlyc3RDaGlsZCgpLCBiZWZvcmVDaGlsZCwgUmVuZGVyVHJlZUJ1
aWxkZXI6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpObyk7CiB9CiAKIHZvaWQgUmVuZGVyVHJl
ZUJ1aWxkZXI6OlJ1Ynk6Om1vdmVCbG9ja0NoaWxkcmVuKFJlbmRlclJ1YnlCYXNlJiBmcm9tLCBS
ZW5kZXJSdWJ5QmFzZSYgdG8sIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCkBAIC0xNjMsMTIg
KzE2NCwxMiBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpSdWJ5Ojptb3ZlQmxvY2tDaGlsZHJl
bihSZW5kZXJSdWJ5QmFzZSYgZnJvbSwgUmVuZGVyUnVieQogICAgICAgICAmJiBsYXN0Q2hpbGRU
aGVyZSAmJiBsYXN0Q2hpbGRUaGVyZS0+aXNBbm9ueW1vdXNCbG9jaygpICYmIGxhc3RDaGlsZFRo
ZXJlLT5jaGlsZHJlbklubGluZSgpKSB7CiAgICAgICAgIGF1dG8qIGFub25CbG9ja0hlcmUgPSBk
b3duY2FzdDxSZW5kZXJCbG9jaz4oZmlyc3RDaGlsZEhlcmUpOwogICAgICAgICBhdXRvKiBhbm9u
QmxvY2tUaGVyZSA9IGRvd25jYXN0PFJlbmRlckJsb2NrPihsYXN0Q2hpbGRUaGVyZSk7Ci0gICAg
ICAgIG1fYnVpbGRlci5tb3ZlQWxsQ2hpbGRyZW5UbygqYW5vbkJsb2NrSGVyZSwgYW5vbkJsb2Nr
VGhlcmUsIFJlbmRlclRyZWVCdWlsZGVyOjpOb3JtYWxpemVBZnRlckluc2VydGlvbjo6WWVzKTsK
KyAgICAgICAgbV9idWlsZGVyLm1vdmVBbGxDaGlsZHJlblRvKCphbm9uQmxvY2tIZXJlLCAqYW5v
bkJsb2NrVGhlcmUsIFJlbmRlclRyZWVCdWlsZGVyOjpOb3JtYWxpemVBZnRlckluc2VydGlvbjo6
WWVzKTsKICAgICAgICAgYW5vbkJsb2NrSGVyZS0+ZGVsZXRlTGluZXMoKTsKICAgICAgICAgYW5v
bkJsb2NrSGVyZS0+cmVtb3ZlRnJvbVBhcmVudEFuZERlc3Ryb3kobV9idWlsZGVyKTsKICAgICB9
CiAgICAgLy8gTW92ZSBhbGwgcmVtYWluaW5nIGNoaWxkcmVuIG5vcm1hbGx5LgotICAgIG1fYnVp
bGRlci5tb3ZlQ2hpbGRyZW5Ubyhmcm9tLCAmdG8sIGZyb20uZmlyc3RDaGlsZCgpLCBiZWZvcmVD
aGlsZCwgUmVuZGVyVHJlZUJ1aWxkZXI6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpObyk7Cisg
ICAgbV9idWlsZGVyLm1vdmVDaGlsZHJlblRvKGZyb20sIHRvLCBmcm9tLmZpcnN0Q2hpbGQoKSwg
YmVmb3JlQ2hpbGQsIFJlbmRlclRyZWVCdWlsZGVyOjpOb3JtYWxpemVBZnRlckluc2VydGlvbjo6
Tm8pOwogfQogCiB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpSdWJ5Ojptb3ZlQ2hpbGRyZW4oUmVu
ZGVyUnVieUJhc2UmIGZyb20sIFJlbmRlclJ1YnlCYXNlJiB0bykKQEAgLTQzOCw4ICs0MzksOCBA
QCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVpbGRlcjo6UnVieTo6dGFrZUNo
aWxkKFJlbmRlclJ1YnlSdW4mIHBhcmVudAogICAgICAgICAgICAgICAgIFJlbmRlclJ1YnlCYXNl
KiByaWdodEJhc2UgPSByaWdodFJ1bi5ydWJ5QmFzZSgpOwogICAgICAgICAgICAgICAgIC8vIENv
bGxlY3QgYWxsIGNoaWxkcmVuIGluIGEgc2luZ2xlIGJhc2UsIHRoZW4gc3dhcCB0aGUgYmFzZXMu
CiAgICAgICAgICAgICAgICAgbW92ZUNoaWxkcmVuKCpyaWdodEJhc2UsICpiYXNlKTsKLSAgICAg
ICAgICAgICAgICBtX2J1aWxkZXIubW92ZUNoaWxkVG8ocGFyZW50LCAmcmlnaHRSdW4sIGJhc2Us
IFJlbmRlclRyZWVCdWlsZGVyOjpOb3JtYWxpemVBZnRlckluc2VydGlvbjo6Tm8pOwotICAgICAg
ICAgICAgICAgIG1fYnVpbGRlci5tb3ZlQ2hpbGRUbyhyaWdodFJ1biwgJnBhcmVudCwgcmlnaHRC
YXNlLCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXplQWZ0ZXJJbnNlcnRpb246Ok5vKTsKKyAg
ICAgICAgICAgICAgICBtX2J1aWxkZXIubW92ZUNoaWxkVG8ocGFyZW50LCByaWdodFJ1biwgKmJh
c2UsIFJlbmRlclRyZWVCdWlsZGVyOjpOb3JtYWxpemVBZnRlckluc2VydGlvbjo6Tm8pOworICAg
ICAgICAgICAgICAgIG1fYnVpbGRlci5tb3ZlQ2hpbGRUbyhyaWdodFJ1biwgcGFyZW50LCAqcmln
aHRCYXNlLCBSZW5kZXJUcmVlQnVpbGRlcjo6Tm9ybWFsaXplQWZ0ZXJJbnNlcnRpb246Ok5vKTsK
ICAgICAgICAgICAgICAgICAvLyBUaGUgbm93IGVtcHR5IHJ1YnkgYmFzZSB3aWxsIGJlIHJlbW92
ZWQgYmVsb3cuCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFwYXJlbnQucnVieUJhc2UoKS0+Zmly
c3RDaGlsZCgpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNwcAppbmRleCBk
YmMxYTI0YmM5MTk1YjIxYjg1Yzc2OWY4Mjc4OTE5ZjcxOWU1OTQ1Li5jNzA0ZmU4OGQxYmRhZjZm
MWExODkxYTUxMmIxOGY3ZjcwMDJkNTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFibGUuY3BwCkBAIC0y
NDgsNyArMjQ4LDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6VGFibGU6OmNvbGxhcHNlQW5k
RGVzdHJveUFub255bW91c1NpYmxpbmdSb3dzKFJlbmRlclRhYmwKICAgICAgICAgICAgIGN1cnJl
bnRSb3cgPSBjdXJyZW50Um93LT5uZXh0Um93KCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQotICAgICAgICBtX2J1aWxkZXIubW92ZUFsbENoaWxkcmVuVG8oKmN1cnJlbnRSb3cs
IHJvd1RvSW5zZXJ0SW50bywgUmVuZGVyVHJlZUJ1aWxkZXI6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0
aW9uOjpObyk7CisgICAgICAgIG1fYnVpbGRlci5tb3ZlQWxsQ2hpbGRyZW5UbygqY3VycmVudFJv
dywgKnJvd1RvSW5zZXJ0SW50bywgUmVuZGVyVHJlZUJ1aWxkZXI6Ok5vcm1hbGl6ZUFmdGVySW5z
ZXJ0aW9uOjpObyk7CiAgICAgICAgIGF1dG8gdG9EZXN0cm95ID0gbV9idWlsZGVyLnRha2VDaGls
ZCgqc2VjdGlvbiwgKmN1cnJlbnRSb3cpOwogICAgICAgICBjdXJyZW50Um93ID0gY3VycmVudFJv
dy0+bmV4dFJvdygpOwogICAgIH0K
</data>
<flag name="review"
          id="352899"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="352903"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>