<?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>213958</bug_id>
          
          <creation_ts>2020-07-04 08:53:46 -0700</creation_ts>
          <short_desc>[LFC][BFC] Store used vertical margin values in the formatting state</short_desc>
          <delta_ts>2020-07-04 13:07:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>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>1668789</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-07-04 08:53:46 -0700</bug_when>
    <thetext>instead of caching them in the Display::Box</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668790</commentid>
    <comment_count>1</comment_count>
      <attachid>403526</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-07-04 08:58:33 -0700</bug_when>
    <thetext>Created attachment 403526
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668793</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-07-04 09:02:34 -0700</bug_when>
    <thetext>m_positiveAndNegativeVerticalMargin and m_usedVerticalMargins will eventually be merged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668826</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-04 13:06:32 -0700</bug_when>
    <thetext>Committed r263943: &lt;https://trac.webkit.org/changeset/263943&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403526.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668828</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-04 13:07:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/65098386&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403526</attachid>
            <date>2020-07-04 08:58:33 -0700</date>
            <delta_ts>2020-07-04 13:06:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213958-20200704085832.patch</filename>
            <type>text/plain</type>
            <size>42303</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThlNWYxY2IyODc3ODFj
ODJmNzA0MjZhYjY5MWU3YzQyNWNiZDM3ZC4uNWM3ZWU4MGM5N2QzMzg2ZjcyYzM5NWU5ZmRlODZl
ODk4NTYzMGZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIwLTA3LTA0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bQkZDXSBTdG9yZSB1
c2VkIHZlcnRpY2FsIG1hcmdpbiB2YWx1ZXMgaW4gdGhlIGZvcm1hdHRpbmcgc3RhdGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzk1OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExheW91dCByZWxhdGVk
IHZlcnRpY2FsIG1hcmdpbiB2YWx1ZXMgKGNvbGxhcHNlZCB2cy4gbm9uLWNvbGxhcHNlZCkgc2hv
dWxkIGFsbCBnbyB0byB0aGUgRm9ybWF0dGluZ1N0YXRlLCB3aGlsZQorICAgICAgICBEaXNwbGF5
OjpCb3ggc2hvdWxkIG9ubHkgaGF2ZSB0aGUgZmluYWwgdmFsdWVzLgorCisgICAgICAgICogbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KToKKyAgICAg
ICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljVmVydGljYWxQ
b3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9N
YXJnaW5UeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjptYXJnaW5CZWZvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjptYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OlVzZWRWZXJ0aWNhbE1hcmdpbjo6YmVmb3JlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6VXNlZFZlcnRpY2FsTWFyZ2luOjphZnRlciBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlVzZWRWZXJ0aWNhbE1hcmdpbjo6
aXNDb2xsYXBzZWRUaHJvdWdoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6VXNlZFZlcnRpY2FsTWFyZ2luOjpub25Db2xsYXBzZWRWYWx1ZXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpVc2VkVmVydGljYWxNYXJnaW46OmNvbGxh
cHNlZFZhbHVlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlVz
ZWRWZXJ0aWNhbE1hcmdpbjo6aGFzQ29sbGFwc2VkVmFsdWVzIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6VXNlZFZlcnRpY2FsTWFyZ2luOjpzZXRDb2xsYXBzZWRW
YWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpVc2VkVmVydGljYWxN
YXJnaW46OlVzZWRWZXJ0aWNhbE1hcmdpbik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L1Zl
cmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNo
aW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVlZGVkKToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpwcmVjb21wdXRlVmVydGljYWxQb3NpdGlv
bkZvckJveEFuZEFuY2VzdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1h
cmdpbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRN
YXJnaW4pOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
U3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nU3RhdGU6
OnNldFVzZWRWZXJ0aWNhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2Nr
Rm9ybWF0dGluZ1N0YXRlOjp1c2VkVmVydGljYWxNYXJnaW4gY29uc3QpOgorICAgICAgICAqIGxh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjp1
cGRhdGVNYXJnaW5BZnRlckZvclByZXZpb3VzU2libGluZyk6CisgICAgICAgICogbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlV3JhcHBlckJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW5Gb3JUYWJsZUJveCk6CisgICAg
ICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6Qm94OjpCb3gpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpu
b25Db2xsYXBzZWRNYXJnaW5Cb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6
OnJlY3RXaXRoTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6
c2V0SGFzVmFsaWRWZXJ0aWNhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpC
b3g6OnNldFZlcnRpY2FsTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6
bWFyZ2luQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6bWFy
Z2luQWZ0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpWZXJ0aWNh
bE1hcmdpbjo6YmVmb3JlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OkJveDo6VmVydGljYWxNYXJnaW46OmFmdGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6VmVydGljYWxNYXJnaW46OmlzQ29sbGFwc2VkVGhyb3Vn
aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OlZlcnRp
Y2FsTWFyZ2luOjpub25Db2xsYXBzZWRWYWx1ZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6Qm94OjpWZXJ0aWNhbE1hcmdpbjo6Y29sbGFwc2VkVmFsdWVzIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6VmVydGljYWxN
YXJnaW46Omhhc0NvbGxhcHNlZFZhbHVlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpCb3g6OlZlcnRpY2FsTWFyZ2luOjpzZXRDb2xsYXBzZWRWYWx1ZXMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpoYXNDb2xsYXBzZWRUaHJv
dWdoTWFyZ2luIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJv
eDo6c2V0SGFzVmFsaWRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OlZlcnRpY2FsTWFyZ2luOjpWZXJ0aWNhbE1hcmdp
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OlZlcnRpY2FsTWFy
Z2luOjpOb25Db2xsYXBzZWRWYWx1ZXM6Ok5vbkNvbGxhcHNlZFZhbHVlcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OlZlcnRpY2FsTWFyZ2luOjpDb2xsYXBzZWRW
YWx1ZXM6OkNvbGxhcHNlZFZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpCb3g6Om5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6Om5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nQ29udGV4dDo6dmVydGljYWxQb3Np
dGlvbldpdGhDbGVhcmFuY2UgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdo
dEFuZE1hcmdpbik6CisgICAgICAgICogbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0
aW5nQ29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yUm93cyk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvclNlY3Rpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5
b3V0Q2VsbCk6CisKIDIwMjAtMDctMDQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbTEZDXSBSZW1vdmUgcmVkdW5kYW50IERpc3BsYXk6OkJveDo6SG9yaXpvbnRh
bE1hcmdpbiBjJ3RvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCmluZGV4IDBmMTQzNjJmNjY5OTg2MDY0YjAwNGY2ZTUzNzlhYWFkMmJlYjc1Y2EuLmUyZDQ5
ZDc5ZGZlMWZlNzQ4MjBhNjAyZGI3NGVlY2ZlYjI5NDYwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTIyLDggKzEyMiw4IEBAIHZvaWQgRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJv
eCYgbGF5b3V0Qm94LCBjCiAgICAgYXV0byBub25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpbiA9IHZl
cnRpY2FsR2VvbWV0cnkuY29udGVudEhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW47
CiAgICAgZGlzcGxheUJveC5zZXRUb3AodmVydGljYWxHZW9tZXRyeS50b3AgKyBub25Db2xsYXBz
ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUpOwogICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhl
aWdodCh2ZXJ0aWNhbEdlb21ldHJ5LmNvbnRlbnRIZWlnaHRBbmRNYXJnaW4uY29udGVudEhlaWdo
dCk7Ci0gICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90
IGNvbGxhcHNlCi0gICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbihub25Db2xsYXBzZWRW
ZXJ0aWNhbE1hcmdpbik7CisgICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQg
Ym94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4o
eyBub25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUsIG5vbkNvbGxhcHNlZFZlcnRpY2Fs
TWFyZ2luLmFmdGVyIH0pOwogfQogCiB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlQm9y
ZGVyQW5kUGFkZGluZyhjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0
cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBlYjEzOTU5MTM1MzBhY2Iw
ZWVjMjRmY2Y1NGYxOTI4NzI3YTEwZDJhLi5jNDNkY2Q4NzM1NmVlMWIxYWYxYzMzZGQxZGIwNDNh
MmNiZjcwOWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0Nv
bnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAorI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0YXRlLmgi
CiAjaW5jbHVkZSAiRmxvYXRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdT
dGF0ZS5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKQEAgLTI4MSw4ICsyODIsMTIgQEAg
TGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1ZlcnRpY2FsUG9z
aXRpb25Gb3JPdXRPZkZsb3dQb3NpdGkKICAgICBMYXlvdXRVbml0IHRvcDsKICAgICBpZiAobGF5
b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpICYmIGxheW91dEJveC5wcmV2aW91c0luRmxv
d1NpYmxpbmcoKS0+aXNCbG9ja0xldmVsQm94KCkpIHsKICAgICAgICAgLy8gQWRkIHNpYmxpbmcg
b2Zmc2V0Ci0gICAgICAgIGF1dG8mIHByZXZpb3VzSW5GbG93Qm94R2VvbWV0cnkgPSBmb3JtYXR0
aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveCgqbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGlu
ZygpLCBFc2NhcGVSZWFzb246Ok91dE9mRmxvd0JveE5lZWRzSW5GbG93R2VvbWV0cnkpOwotICAg
ICAgICB0b3AgKz0gcHJldmlvdXNJbkZsb3dCb3hHZW9tZXRyeS5ib3R0b20oKSArIHByZXZpb3Vz
SW5GbG93Qm94R2VvbWV0cnkubm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoKTsKKyAgICAgICAgYXV0
byYgcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gKmxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxp
bmcoKTsKKyAgICAgICAgYXV0byYgcHJldmlvdXNJbkZsb3dCb3hHZW9tZXRyeSA9IGZvcm1hdHRp
bmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KHByZXZpb3VzSW5GbG93U2libGluZywgRXNjYXBlUmVh
c29uOjpPdXRPZkZsb3dCb3hOZWVkc0luRmxvd0dlb21ldHJ5KTsKKyAgICAgICAgYXV0byYgZm9y
bWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRl
KCkuZm9ybWF0dGluZ1N0YXRlRm9yQm94KHByZXZpb3VzSW5GbG93U2libGluZykpOworICAgICAg
ICBhdXRvIHVzZWRWZXJ0aWNhbE1hcmdpbkZvclByZXZpb3VzQm94ID0gZm9ybWF0dGluZ1N0YXRl
LnVzZWRWZXJ0aWNhbE1hcmdpbihwcmV2aW91c0luRmxvd1NpYmxpbmcpOworCisgICAgICAgIHRv
cCArPSBwcmV2aW91c0luRmxvd0JveEdlb21ldHJ5LmJvdHRvbSgpICsgdXNlZFZlcnRpY2FsTWFy
Z2luRm9yUHJldmlvdXNCb3gubm9uQ29sbGFwc2VkVmFsdWVzLmFmdGVyOwogICAgIH0gZWxzZQog
ICAgICAgICB0b3AgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gu
cGFyZW50KCksIEVzY2FwZVJlYXNvbjo6T3V0T2ZGbG93Qm94TmVlZHNJbkZsb3dHZW9tZXRyeSku
Y29udGVudEJveFRvcCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTWFy
Z2luVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCmluZGV4IDg1
MmMzMWY0OGIxY2ZkNjBkOWY0MmY3MTc4YWE4ZjYxMzAxNjFjMDQuLjhiZTdiOWY1ODI5ZjlkZjU1
OWE3ZjU1MDhkMGU0NWViNDc3Y2MyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9NYXJnaW5UeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5o
CkBAIC0zOCwzMiArMzgsMzEgQEAgc3RydWN0IENvbXB1dGVkVmVydGljYWxNYXJnaW4gewogfTsK
IAogc3RydWN0IFVzZWRWZXJ0aWNhbE1hcmdpbiB7Ci0gICAgTGF5b3V0VW5pdCBiZWZvcmUoKSBj
b25zdCB7IHJldHVybiBtX2NvbGxhcHNlZFZhbHVlcy5iZWZvcmUudmFsdWVPcihtX25vbkNvbGxh
cHNlZFZhbHVlcy5iZWZvcmUpOyB9Ci0gICAgTGF5b3V0VW5pdCBhZnRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fY29sbGFwc2VkVmFsdWVzLmFmdGVyLnZhbHVlT3IobV9ub25Db2xsYXBzZWRWYWx1ZXMu
YWZ0ZXIpOyB9Ci0gICAgYm9vbCBpc0NvbGxhcHNlZFRocm91Z2goKSBjb25zdCB7IHJldHVybiBt
X2NvbGxhcHNlZFZhbHVlcy5pc0NvbGxhcHNlZFRocm91Z2g7IH0KLQogICAgIHN0cnVjdCBOb25D
b2xsYXBzZWRWYWx1ZXMgewogICAgICAgICBMYXlvdXRVbml0IGJlZm9yZTsKICAgICAgICAgTGF5
b3V0VW5pdCBhZnRlcjsKICAgICB9OwotICAgIE5vbkNvbGxhcHNlZFZhbHVlcyBub25Db2xsYXBz
ZWRWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX25vbkNvbGxhcHNlZFZhbHVlczsgfQorICAgIE5v
bkNvbGxhcHNlZFZhbHVlcyBub25Db2xsYXBzZWRWYWx1ZXM7CiAKICAgICBzdHJ1Y3QgQ29sbGFw
c2VkVmFsdWVzIHsKICAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYmVmb3JlOwogICAgICAg
ICBPcHRpb25hbDxMYXlvdXRVbml0PiBhZnRlcjsKICAgICAgICAgYm9vbCBpc0NvbGxhcHNlZFRo
cm91Z2ggeyBmYWxzZSB9OwogICAgIH07Ci0gICAgQ29sbGFwc2VkVmFsdWVzIGNvbGxhcHNlZFZh
bHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29sbGFwc2VkVmFsdWVzOyB9Ci0gICAgYm9vbCBoYXND
b2xsYXBzZWRWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX2NvbGxhcHNlZFZhbHVlcy5iZWZvcmUg
fHwgbV9jb2xsYXBzZWRWYWx1ZXMuYWZ0ZXI7IH0KLSAgICB2b2lkIHNldENvbGxhcHNlZFZhbHVl
cyhDb2xsYXBzZWRWYWx1ZXMgY29sbGFwc2VkVmFsdWVzKSB7IG1fY29sbGFwc2VkVmFsdWVzID0g
Y29sbGFwc2VkVmFsdWVzOyB9CisgICAgQ29sbGFwc2VkVmFsdWVzIGNvbGxhcHNlZFZhbHVlczsK
K307CiAKLSAgICBVc2VkVmVydGljYWxNYXJnaW4oTm9uQ29sbGFwc2VkVmFsdWVzLCBDb2xsYXBz
ZWRWYWx1ZXMpOwotICAgIFVzZWRWZXJ0aWNhbE1hcmdpbigpID0gZGVmYXVsdDsKK3N0YXRpYyBp
bmxpbmUgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoY29uc3QgVXNlZFZlcnRpY2FsTWFyZ2luJiB1
c2VkVmVydGljYWxNYXJnaW4pCit7CisgICAgcmV0dXJuIHVzZWRWZXJ0aWNhbE1hcmdpbi5jb2xs
YXBzZWRWYWx1ZXMuYmVmb3JlLnZhbHVlT3IodXNlZFZlcnRpY2FsTWFyZ2luLm5vbkNvbGxhcHNl
ZFZhbHVlcy5iZWZvcmUpOworfQogCi1wcml2YXRlOgotICAgIE5vbkNvbGxhcHNlZFZhbHVlcyBt
X25vbkNvbGxhcHNlZFZhbHVlczsKLSAgICBDb2xsYXBzZWRWYWx1ZXMgbV9jb2xsYXBzZWRWYWx1
ZXM7Ci19Oworc3RhdGljIGlubGluZSBMYXlvdXRVbml0IG1hcmdpbkFmdGVyKGNvbnN0IFVzZWRW
ZXJ0aWNhbE1hcmdpbiYgdXNlZFZlcnRpY2FsTWFyZ2luKQoreworICAgIGlmICh1c2VkVmVydGlj
YWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzLmlzQ29sbGFwc2VkVGhyb3VnaCkKKyAgICAgICAgcmV0
dXJuIDBfbHU7CisgICAgcmV0dXJuIHVzZWRWZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMu
YWZ0ZXIudmFsdWVPcih1c2VkVmVydGljYWxNYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzLmFmdGVy
KTsKK30KIAogc3RydWN0IENvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB7CiAgICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gc3RhcnQ7CkBAIC0xMDAsMTIgKzk5LDYgQEAgc3RydWN0IFByZWNvbXB1dGVk
TWFyZ2luQmVmb3JlIHsKICAgICBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZh
bHVlcyBwb3NpdGl2ZUFuZE5lZ2F0aXZlTWFyZ2luQmVmb3JlOwogfTsKIAotaW5saW5lIFVzZWRW
ZXJ0aWNhbE1hcmdpbjo6VXNlZFZlcnRpY2FsTWFyZ2luKFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9u
Q29sbGFwc2VkVmFsdWVzIG5vbkNvbGxhcHNlZFZhbHVlcywgVXNlZFZlcnRpY2FsTWFyZ2luOjpD
b2xsYXBzZWRWYWx1ZXMgY29sbGFwc2VkVmFsdWVzKQotICAgIDogbV9ub25Db2xsYXBzZWRWYWx1
ZXMobm9uQ29sbGFwc2VkVmFsdWVzKQotICAgICwgbV9jb2xsYXBzZWRWYWx1ZXMoY29sbGFwc2Vk
VmFsdWVzKQotewotfQotCiB9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9WZXJpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNh
dGlvbi5jcHAKaW5kZXggNjkwNzVmMzYxN2QwZTk3NGZmYTM0ODE1MDUyYWY0NGE4ZmI3M2EyZC4u
YWQ3OTBhNzY0NWYwOTQ3NzE1OTcxZTI3MTU4ZjFmOWRmNzcxNTc5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoTEFZ
T1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2lmbmRlZiBOREVCVUcKKyNpbmNsdWRlICJCbG9j
a0Zvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKICNpbmNsdWRlICJJ
bmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCkBAIC0y
MTcsNyArMjE4LDcgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUlu
Zm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLAogICAgIHJldHVybiBtaXNtYXRj
aGVkOwogfQogCi1zdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94SW5mb3JtYXRp
b25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRlJiBjb250ZXh0
LCBjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBCb3gmIGxheW91dEJveCkKK3N0YXRp
YyBib29sIG91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRT
dHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBSZW5k
ZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBib29sIGZpcnN0
TWlzbWF0Y2hpbmdSZWN0ID0gdHJ1ZTsKICAgICBhdXRvIG91dHB1dFJlY3QgPSBbJl0gKGNvbnN0
IFN0cmluZyYgcHJlZml4LCBjb25zdCBMYXlvdXRSZWN0JiByZW5kZXJlclJlY3QsIGNvbnN0IExh
eW91dFJlY3QmIGxheW91dFJlY3QpIHsKQEAgLTIzNyw3ICsyMzgsNyBAQCBzdGF0aWMgYm9vbCBv
dXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBz
dHJlYW0sIGNvbgogICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlCb3gucmVjdCgpOwogCiAgICAg
ICAgIC8vIFByb2R1Y2UgYSBSZW5kZXJCb3ggbWF0Y2hpbmcgbWFyZ2luIGJveC4KLSAgICAgICAg
YXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGNvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJv
eChsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgpOworICAgICAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveChsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgpOwog
ICAgICAgICBhdXRvIG1hcmdpblN0YXJ0ID0gTGF5b3V0VW5pdCB7IH07CiAgICAgICAgIGF1dG8m
IG1hcmdpblN0YXJ0U3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKS5tYXJnaW5TdGFydCgpOwogICAg
ICAgICBpZiAobWFyZ2luU3RhcnRTdHlsZS5pc0ZpeGVkKCkgfHwgbWFyZ2luU3RhcnRTdHlsZS5p
c1BlcmNlbnQoKSB8fCBtYXJnaW5TdGFydFN0eWxlLmlzQ2FsY3VsYXRlZCgpKQpAQCAtMjQ4LDEy
ICsyNDksMjAgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0
aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb24KICAgICAgICAgaWYgKG1hcmdpbkVu
ZFN0eWxlLmlzRml4ZWQoKSB8fCBtYXJnaW5FbmRTdHlsZS5pc1BlcmNlbnQoKSB8fCBtYXJnaW5F
bmRTdHlsZS5pc0NhbGN1bGF0ZWQoKSkKICAgICAgICAgICAgIG1hcmdpbkVuZCA9IHZhbHVlRm9y
TGVuZ3RoKG1hcmdpbkVuZFN0eWxlLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAKKyAgICAgICAg
YXV0byBtYXJnaW5CZWZvcmUgPSBkaXNwbGF5Qm94Lm1hcmdpbkJlZm9yZSgpOworICAgICAgICBh
dXRvIG1hcmdpbkFmdGVyID0gZGlzcGxheUJveC5tYXJnaW5BZnRlcigpOworICAgICAgICBpZiAo
bGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKSB7CisgICAgICAgICAgICBhdXRvJiBmb3JtYXR0
aW5nU3RhdGUgPSBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZm9y
bWF0dGluZ1N0YXRlRm9yQm94KGxheW91dEJveCkpOworICAgICAgICAgICAgYXV0byB2ZXJ0aWNh
bE1hcmdpbiA9IGZvcm1hdHRpbmdTdGF0ZS51c2VkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94KTsK
KyAgICAgICAgICAgIG1hcmdpbkJlZm9yZSA9IHZlcnRpY2FsTWFyZ2luLm5vbkNvbGxhcHNlZFZh
bHVlcy5iZWZvcmU7CisgICAgICAgICAgICBtYXJnaW5BZnRlciA9IHZlcnRpY2FsTWFyZ2luLm5v
bkNvbGxhcHNlZFZhbHVlcy5hZnRlcjsKKyAgICAgICAgfQogICAgICAgICBhdXRvIGJvcmRlckJv
eCA9IGRpc3BsYXlCb3guYm9yZGVyQm94KCk7CiAgICAgICAgIHJldHVybiBEaXNwbGF5OjpSZWN0
IHsKLSAgICAgICAgICAgIGJvcmRlckJveC50b3AoKSAtIGRpc3BsYXlCb3gubm9uQ29sbGFwc2Vk
TWFyZ2luQmVmb3JlKCksCisgICAgICAgICAgICBib3JkZXJCb3gudG9wKCkgLSBtYXJnaW5CZWZv
cmUsCiAgICAgICAgICAgICBib3JkZXJCb3gubGVmdCgpIC0gbWFyZ2luU3RhcnQsCiAgICAgICAg
ICAgICBtYXJnaW5TdGFydCArIGJvcmRlckJveC53aWR0aCgpICsgbWFyZ2luRW5kLAotICAgICAg
ICAgICAgZGlzcGxheUJveC5ub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoKSArIGJvcmRlckJveC5o
ZWlnaHQoKSArIGRpc3BsYXlCb3gubm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoKQorICAgICAgICAg
ICAgbWFyZ2luQmVmb3JlICsgYm9yZGVyQm94LmhlaWdodCgpICsgbWFyZ2luQWZ0ZXIKICAgICAg
ICAgfTsKICAgICB9OwogCkBAIC0yNjIsMTEgKzI3MSwxMSBAQCBzdGF0aWMgYm9vbCBvdXRwdXRN
aXNtYXRjaGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0s
IGNvbgogICAgIGlmIChyZW5kZXJlci5pc0luRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgZnJh
bWVSZWN0Lm1vdmUocmVuZGVyZXIub2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24oKSk7CiAKLSAgICBh
dXRvIGRpc3BsYXlCb3ggPSBEaXNwbGF5OjpCb3ggeyBjb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3gobGF5b3V0Qm94KSB9OworICAgIGF1dG8gZGlzcGxheUJveCA9IERpc3BsYXk6OkJveCB7
IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KSB9OwogICAgIGlm
IChsYXlvdXRCb3guaXNUYWJsZUJveCgpKSB7CiAgICAgICAgIC8vIFdoZW4gdGhlIDx0YWJsZT4g
aXMgb3V0LW9mLWZsb3cgcG9zaXRpb25lZCwgdGhlIHdyYXBwZXIgdGFibGUgYm94IGhhcyB0aGUg
b2Zmc2V0CiAgICAgICAgIC8vIHdoaWxlIHRoZSBhY3R1YWwgdGFibGUgYm94IGlzIHN0YXRpYywg
aW5mbG93LgotICAgICAgICBhdXRvJiB0YWJsZVdyYXBwZXJEaXNwbGF5Qm94ID0gY29udGV4dC5k
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7CisgICAg
ICAgIGF1dG8mIHRhYmxlV3JhcHBlckRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7CiAgICAgICAgIGRpc3Bs
YXlCb3gubW92ZUJ5KHRhYmxlV3JhcHBlckRpc3BsYXlCb3gudG9wTGVmdCgpKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGRiOGYyMjI5Mjk5NDhhZTZjOWQx
NDYxZTE5NWE1MmYxNjkyMzQ5NTIuLjlkNThlNDU1MzRiYzllZjIwNWNhMzRmZDI5NjJmYmVhYjNi
NTQ1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjY0LDcgKzI2NCw5
IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRp
b25Gb3JCb3hBbmRBbmNlc3RvcnMoY29uc3QKICAgICAgICAgYXV0byBub25Db2xsYXBzZWRWYWx1
ZXMgPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IHByZWNvbXB1dGVk
TWFyZ2luQmVmb3JlLm5vbkNvbGxhcHNlZFZhbHVlLCB7IH0gfTsKICAgICAgICAgYXV0byBjb2xs
YXBzZWRWYWx1ZXMgPSBVc2VkVmVydGljYWxNYXJnaW46OkNvbGxhcHNlZFZhbHVlcyB7IHByZWNv
bXB1dGVkTWFyZ2luQmVmb3JlLmNvbGxhcHNlZFZhbHVlLCB7IH0sIGZhbHNlIH07CiAgICAgICAg
IGF1dG8gdmVydGljYWxNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW4geyBub25Db2xsYXBzZWRW
YWx1ZXMsIGNvbGxhcHNlZFZhbHVlcyB9OwotICAgICAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2Fs
TWFyZ2luKHZlcnRpY2FsTWFyZ2luKTsKKworICAgICAgICBmb3JtYXR0aW5nU3RhdGUoKS5zZXRV
c2VkVmVydGljYWxNYXJnaW4oKmFuY2VzdG9yLCB2ZXJ0aWNhbE1hcmdpbik7CisgICAgICAgIGRp
c3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4oeyBtYXJnaW5CZWZvcmUodmVydGljYWxNYXJnaW4p
LCBtYXJnaW5BZnRlcih2ZXJ0aWNhbE1hcmdpbikgfSk7CiAgICAgICAgIGRpc3BsYXlCb3guc2V0
VG9wKHZlcnRpY2FsUG9zaXRpb25XaXRoTWFyZ2luKCphbmNlc3RvciwgdmVydGljYWxNYXJnaW4s
IGNvbnN0cmFpbnRzRm9yQW5jZXN0b3IudmVydGljYWwpKTsKICNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgICAgICBzZXRQcmVjb21wdXRlZE1hcmdpbkJlZm9yZSgqYW5jZXN0b3IsIHByZWNvbXB1dGVk
TWFyZ2luQmVmb3JlKTsKQEAgLTM2OSwxOCArMzcxLDE5IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29u
c3QKICAgICAvLyBDYWNoZSB0aGUgY29tcHV0ZWQgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIG1hcmdp
biB2YWx1ZSBwYWlyLgogICAgIGZvcm1hdHRpbmdTdGF0ZSgpLnNldFBvc2l0aXZlQW5kTmVnYXRp
dmVWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gsIGNvbGxhcHNlZEFuZFBvc2l0aXZlTmVnYXRpdmVW
YWx1ZXMucG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsVmFsdWVzKTsKICAgICBhdXRvIHZlcnRp
Y2FsTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luIHsgY29udGVudEhlaWdodEFuZE1hcmdpbi5u
b25Db2xsYXBzZWRNYXJnaW4sIGNvbGxhcHNlZEFuZFBvc2l0aXZlTmVnYXRpdmVWYWx1ZXMuY29s
bGFwc2VkVmFsdWVzIH07CisgICAgZm9ybWF0dGluZ1N0YXRlKCkuc2V0VXNlZFZlcnRpY2FsTWFy
Z2luKGxheW91dEJveCwgdmVydGljYWxNYXJnaW4pOwogCiAgICAgLy8gT3V0IG9mIGZsb3cgYm94
ZXMgZG9uJ3QgbmVlZCB2ZXJ0aWNhbCBhZGp1c3RtZW50IGFmdGVyIG1hcmdpbiBjb2xsYXBzaW5n
LgogICAgIGlmIChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAg
QVNTRVJUKCFoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpKTsKICAgICAgICAg
YXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdTdGF0ZSgpLmRpc3BsYXlCb3gobGF5b3V0Qm94
KTsKICAgICAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KGNvbnRlbnRIZWlnaHRB
bmRNYXJnaW4uY29udGVudEhlaWdodCk7Ci0gICAgICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxN
YXJnaW4odmVydGljYWxNYXJnaW4pOworICAgICAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFy
Z2luKHsgY29udGVudEhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4uYmVmb3JlLCBj
b250ZW50SGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbi5hZnRlciB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgaWYgKGhhc1ByZWNv
bXB1dGVkTWFyZ2luQmVmb3JlKGxheW91dEJveCkgJiYgcHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUo
bGF5b3V0Qm94KS51c2VkVmFsdWUoKSAhPSB2ZXJ0aWNhbE1hcmdpbi5iZWZvcmUoKSkgeworICAg
IGlmIChoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpICYmIHByZWNvbXB1dGVk
TWFyZ2luQmVmb3JlKGxheW91dEJveCkudXNlZFZhbHVlKCkgIT0gbWFyZ2luQmVmb3JlKHZlcnRp
Y2FsTWFyZ2luKSkgewogICAgICAgICAvLyBXaGVuIHRoZSBwcmUtY29tcHV0ZWQgbWFyZ2luIHR1
cm5zIG91dCB0byBiZSBpbmNvcnJlY3QsIHdlIG5lZWQgdG8gcmUtbGF5b3V0IHRoaXMgc3VidHJl
ZSB3aXRoIHRoZSBjb3JyZWN0IG1hcmdpbiB2YWx1ZXMuCiAgICAgICAgIC8vIDxkaXYgc3R5bGU9
ImZsb2F0OiBsZWZ0Ij48L2Rpdj4KICAgICAgICAgLy8gPGRpdj4KQEAgLTM5OCw3ICs0MDEsNyBA
QCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29u
c3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0CiAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wKHZlcnRp
Y2FsUG9zaXRpb25XaXRoTWFyZ2luKGxheW91dEJveCwgdmVydGljYWxNYXJnaW4sIGNvbnN0cmFp
bnRzLnZlcnRpY2FsKSk7CiAgICAgfQogICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdo
dChjb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQpOwotICAgIGRpc3BsYXlCb3gu
c2V0VmVydGljYWxNYXJnaW4odmVydGljYWxNYXJnaW4pOworICAgIGRpc3BsYXlCb3guc2V0VmVy
dGljYWxNYXJnaW4oeyBtYXJnaW5CZWZvcmUodmVydGljYWxNYXJnaW4pLCBtYXJnaW5BZnRlcih2
ZXJ0aWNhbE1hcmdpbikgfSk7CiAgICAgLy8gQWRqdXN0IHRoZSBwcmV2aW91cyBzaWJsaW5nJ3Mg
bWFyZ2luIGJvdHRvbSBub3cgdGhhdCB0aGlzIGJveCdzIHZlcnRpY2FsIG1hcmdpbiBpcyBjb21w
dXRlZC4KICAgICBNYXJnaW5Db2xsYXBzZTo6dXBkYXRlTWFyZ2luQWZ0ZXJGb3JQcmV2aW91c1Np
YmxpbmcoKnRoaXMsIG1hcmdpbkNvbGxhcHNlLCBsYXlvdXRCb3gpOwogfQpAQCAtNDY3LDEyICs0
NzAsMTIgQEAgTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0
aW9uV2l0aE1hcmdpbihjb25zdCBCb3gmIGxheW91dEIKICAgICAgICAgYXV0byYgcHJldmlvdXNJ
bkZsb3dTaWJsaW5nID0gKmN1cnJlbnRMYXlvdXRCb3gtPnByZXZpb3VzSW5GbG93U2libGluZygp
OwogICAgICAgICBpZiAoIW1hcmdpbkNvbGxhcHNlKCkubWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0
aFByZXZpb3VzU2libGluZ01hcmdpbkFmdGVyKCpjdXJyZW50TGF5b3V0Qm94KSkgewogICAgICAg
ICAgICAgYXV0byYgcHJldmlvdXNCb3hHZW9tZXRyeSA9IGdlb21ldHJ5Rm9yQm94KHByZXZpb3Vz
SW5GbG93U2libGluZyk7Ci0gICAgICAgICAgICByZXR1cm4gcHJldmlvdXNCb3hHZW9tZXRyeS5y
ZWN0V2l0aE1hcmdpbigpLmJvdHRvbSgpICsgdmVydGljYWxNYXJnaW4uYmVmb3JlKCk7CisgICAg
ICAgICAgICByZXR1cm4gcHJldmlvdXNCb3hHZW9tZXRyeS5yZWN0V2l0aE1hcmdpbigpLmJvdHRv
bSgpICsgbWFyZ2luQmVmb3JlKHZlcnRpY2FsTWFyZ2luKTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmICghbWFyZ2luQ29sbGFwc2UoKS5tYXJnaW5zQ29sbGFwc2VUaHJvdWdoKHByZXZpb3VzSW5G
bG93U2libGluZykpIHsKICAgICAgICAgICAgIGF1dG8mIHByZXZpb3VzQm94R2VvbWV0cnkgPSBn
ZW9tZXRyeUZvckJveChwcmV2aW91c0luRmxvd1NpYmxpbmcpOwotICAgICAgICAgICAgcmV0dXJu
IHByZXZpb3VzQm94R2VvbWV0cnkuYm90dG9tKCkgKyB2ZXJ0aWNhbE1hcmdpbi5iZWZvcmUoKTsK
KyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0JveEdlb21ldHJ5LmJvdHRvbSgpICsgbWFyZ2lu
QmVmb3JlKHZlcnRpY2FsTWFyZ2luKTsKICAgICAgICAgfQogICAgICAgICBjdXJyZW50TGF5b3V0
Qm94ID0gJnByZXZpb3VzSW5GbG93U2libGluZzsKICAgICB9CkBAIC00ODMsMjAgKzQ4NiwyMCBA
QCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRo
TWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0QgogICAgIGlmIChkaXJlY3RseUFkam9pbnNQYXJlbnQp
IHsKICAgICAgICAgLy8gSWYgdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgb2YgYSBib3ggYXJl
IGFkam9pbmluZywgdGhlbiBpdCBpcyBwb3NzaWJsZSBmb3IgbWFyZ2lucyB0byBjb2xsYXBzZSB0
aHJvdWdoIGl0LgogICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBwb3NpdGlvbiBvZiB0aGUg
ZWxlbWVudCBkZXBlbmRzIG9uIGl0cyByZWxhdGlvbnNoaXAgd2l0aCB0aGUgb3RoZXIgZWxlbWVu
dHMgd2hvc2UgbWFyZ2lucyBhcmUgYmVpbmcgY29sbGFwc2VkLgotICAgICAgICBpZiAodmVydGlj
YWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkuaXNDb2xsYXBzZWRUaHJvdWdoKSB7CisgICAgICAg
IGlmICh2ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMuaXNDb2xsYXBzZWRUaHJvdWdoKSB7
CiAgICAgICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCdzIG1hcmdpbnMgYXJlIGNvbGxhcHNlZCB3
aXRoIGl0cyBwYXJlbnQncyB0b3AgbWFyZ2luLCB0aGUgdG9wIGJvcmRlciBlZGdlIG9mIHRoZSBi
b3ggaXMgZGVmaW5lZCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgcGFyZW50J3MuCiAgICAgICAgICAg
ICBpZiAobWFyZ2luQ29sbGFwc2UoKS5tYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFy
Z2luQmVmb3JlKGxheW91dEJveCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5pbmdC
bG9ja0NvbnRlbnRCb3hUb3A7CiAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGVpdGhlciB0aGUg
ZWxlbWVudCdzIHBhcmVudCBpcyBub3QgdGFraW5nIHBhcnQgaW4gdGhlIG1hcmdpbiBjb2xsYXBz
aW5nLCBvciBvbmx5IHRoZSBwYXJlbnQncyBib3R0b20gbWFyZ2luIGlzIGludm9sdmVkLgogICAg
ICAgICAgICAgLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSBlbGVtZW50J3MgdG9wIGJvcmRlciBlZGdl
IGlzIHRoZSBzYW1lIGFzIGl0IHdvdWxkIGhhdmUgYmVlbiBpZiB0aGUgZWxlbWVudCBoYWQgYSBu
b24temVybyBib3R0b20gYm9yZGVyLgotICAgICAgICAgICAgYXV0byBiZWZvcmVNYXJnaW5XaXRo
Qm90dG9tQm9yZGVyID0gbWFyZ2luQ29sbGFwc2UoKS5tYXJnaW5CZWZvcmVJZ25vcmluZ0NvbGxh
cHNpbmdUaHJvdWdoKGxheW91dEJveCwgdmVydGljYWxNYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVz
KCkpOworICAgICAgICAgICAgYXV0byBiZWZvcmVNYXJnaW5XaXRoQm90dG9tQm9yZGVyID0gbWFy
Z2luQ29sbGFwc2UoKS5tYXJnaW5CZWZvcmVJZ25vcmluZ0NvbGxhcHNpbmdUaHJvdWdoKGxheW91
dEJveCwgdmVydGljYWxNYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzKTsKICAgICAgICAgICAgIHJl
dHVybiBjb250YWluaW5nQmxvY2tDb250ZW50Qm94VG9wICsgYmVmb3JlTWFyZ2luV2l0aEJvdHRv
bUJvcmRlcjsKICAgICAgICAgfQogICAgICAgICAvLyBOb24tY29sbGFwc2VkIHRocm91Z2ggYm94
IHZlcnRpY2FsIHBvc2l0aW9uIGRlcGVuZGluZyB3aGV0aGVyIHRoZSBtYXJnaW4gY29sbGFwc2Vz
LgogICAgICAgICBpZiAobWFyZ2luQ29sbGFwc2UoKS5tYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRo
UGFyZW50TWFyZ2luQmVmb3JlKGxheW91dEJveCkpCiAgICAgICAgICAgICByZXR1cm4gY29udGFp
bmluZ0Jsb2NrQ29udGVudEJveFRvcDsKIAotICAgICAgICByZXR1cm4gY29udGFpbmluZ0Jsb2Nr
Q29udGVudEJveFRvcCArIHZlcnRpY2FsTWFyZ2luLmJlZm9yZSgpOworICAgICAgICByZXR1cm4g
Y29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcCArIG1hcmdpbkJlZm9yZSh2ZXJ0aWNhbE1hcmdp
bik7CiAgICAgfQogICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhpcyBib3ggaW5kaXJlY3RseSAodmlh
IGNvbGxhcHNlZCB0aHJvdWdoIHByZXZpb3VzIGluLWZsb3cgc2libGluZ3MpIGFkam9pbnMgdGhl
IHBhcmVudC4gTGV0J3MgY2hlY2sgaWYgaXQgbWFyZ2luIGNvbGxhcHNlcyB3aXRoIHRoZSBwYXJl
bnQuCiAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9j
aygpOwpAQCAtNTA1LDcgKzUwOCw3IEBAIExheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6dmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCCiAgICAgaWYg
KG1hcmdpbkNvbGxhcHNlKCkubWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJl
Zm9yZSgqY29udGFpbmluZ0Jsb2NrLmZpcnN0SW5GbG93Q2hpbGQoKSkpCiAgICAgICAgIHJldHVy
biBjb250YWluaW5nQmxvY2tDb250ZW50Qm94VG9wOwogCi0gICAgcmV0dXJuIGNvbnRhaW5pbmdC
bG9ja0NvbnRlbnRCb3hUb3AgKyB2ZXJ0aWNhbE1hcmdpbi5iZWZvcmUoKTsKKyAgICByZXR1cm4g
Y29udGFpbmluZ0Jsb2NrQ29udGVudEJveFRvcCArIG1hcmdpbkJlZm9yZSh2ZXJ0aWNhbE1hcmdp
bik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cAppbmRleCA3OTNhYzFlZjM1NDkyNjFmMjI4NWU3ZDE4MGUxZGI4OGM3YTg4MTU3Li5lNmFlYTcx
NDMzZDdjOGMwYjZlYWUzZTNlOTU0MDEwNTEzNGY5YTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC04NCwxNiArODQsMTUgQEAgQ29udGVudEhl
aWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9u
UmVwbGFjZWRIZWlnaHQKICAgICAgICAgfQogCiAgICAgICAgIC8vIDIuIHRoZSBib3R0b20gZWRn
ZSBvZiB0aGUgYm90dG9tIChwb3NzaWJseSBjb2xsYXBzZWQpIG1hcmdpbiBvZiBpdHMgbGFzdCBp
bi1mbG93IGNoaWxkLCBpZiB0aGUgY2hpbGQncyBib3R0b20gbWFyZ2luLi4uCi0gICAgICAgIGF1
dG8qIGxhc3RJbkZsb3dDaGlsZCA9IGxheW91dENvbnRhaW5lci5sYXN0SW5GbG93Q2hpbGQoKTsK
LSAgICAgICAgQVNTRVJUKGxhc3RJbkZsb3dDaGlsZCk7Ci0gICAgICAgIGlmICghZm9ybWF0dGlu
Z0NvbnRleHQoKS5tYXJnaW5Db2xsYXBzZSgpLm1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVu
dE1hcmdpbkFmdGVyKCpsYXN0SW5GbG93Q2hpbGQpKSB7Ci0gICAgICAgICAgICBhdXRvJiBsYXN0
SW5GbG93Qm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KCps
YXN0SW5GbG93Q2hpbGQpOwotICAgICAgICAgICAgYXV0byBib3R0b21FZGdlT2ZCb3R0b21NYXJn
aW4gPSBsYXN0SW5GbG93Qm94R2VvbWV0cnkuYm90dG9tKCkgKyAobGFzdEluRmxvd0JveEdlb21l
dHJ5Lmhhc0NvbGxhcHNlZFRocm91Z2hNYXJnaW4oKSA/IExheW91dFVuaXQoKSA6IGxhc3RJbkZs
b3dCb3hHZW9tZXRyeS5tYXJnaW5BZnRlcigpKTsgCisgICAgICAgIGF1dG8mIGxhc3RJbkZsb3dD
aGlsZCA9ICpsYXlvdXRDb250YWluZXIubGFzdEluRmxvd0NoaWxkKCk7CisgICAgICAgIGlmICgh
Zm9ybWF0dGluZ0NvbnRleHQoKS5tYXJnaW5Db2xsYXBzZSgpLm1hcmdpbkFmdGVyQ29sbGFwc2Vz
V2l0aFBhcmVudE1hcmdpbkFmdGVyKGxhc3RJbkZsb3dDaGlsZCkpIHsKKyAgICAgICAgICAgIGF1
dG8mIGxhc3RJbkZsb3dCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlG
b3JCb3gobGFzdEluRmxvd0NoaWxkKTsKKyAgICAgICAgICAgIGF1dG8gYm90dG9tRWRnZU9mQm90
dG9tTWFyZ2luID0gbGFzdEluRmxvd0JveEdlb21ldHJ5LmJvdHRvbSgpICsgbGFzdEluRmxvd0Jv
eEdlb21ldHJ5Lm1hcmdpbkFmdGVyKCk7IAogICAgICAgICAgICAgcmV0dXJuIHsgYm90dG9tRWRn
ZU9mQm90dG9tTWFyZ2luIC0gYm9yZGVyQW5kUGFkZGluZ1RvcCwgbm9uQ29sbGFwc2VkTWFyZ2lu
IH07CiAgICAgICAgIH0KIAogICAgICAgICAvLyAzLiB0aGUgYm90dG9tIGJvcmRlciBlZGdlIG9m
IHRoZSBsYXN0IGluLWZsb3cgY2hpbGQgd2hvc2UgdG9wIG1hcmdpbiBkb2Vzbid0IGNvbGxhcHNl
IHdpdGggdGhlIGVsZW1lbnQncyBib3R0b20gbWFyZ2luCi0gICAgICAgIGF1dG8qIGluRmxvd0No
aWxkID0gbGFzdEluRmxvd0NoaWxkOworICAgICAgICBhdXRvKiBpbkZsb3dDaGlsZCA9ICZsYXN0
SW5GbG93Q2hpbGQ7CiAgICAgICAgIHdoaWxlIChpbkZsb3dDaGlsZCAmJiBmb3JtYXR0aW5nQ29u
dGV4dCgpLm1hcmdpbkNvbGxhcHNlKCkubWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1h
cmdpbkFmdGVyKCppbkZsb3dDaGlsZCkpCiAgICAgICAgICAgICBpbkZsb3dDaGlsZCA9IGluRmxv
d0NoaWxkLT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsKICAgICAgICAgaWYgKGluRmxvd0NoaWxk
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXggZTYzOTk1MjViZGJlYjNlZmE5ZmU5YzQ4
NmRhMWI5Y2NmZjFhZjNhNi4uZmE0NTdmZTE1MmEwMmUxNmNkZmExM2MwM2U4ZDFlMjAwOGE4M2Yw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a0Zvcm1hdHRpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuaApAQCAtNDQsOCArNDQsMTIgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKGNvbnN0IEJveCYg
bGF5b3V0Qm94KSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1h
cmdpbi5jb250YWlucygmbGF5b3V0Qm94KTsgfQogICAgIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0
aWNhbE1hcmdpbiBwb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4oY29uc3QgQm94JiBs
YXlvdXRCb3gpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFy
Z2luLmdldCgmbGF5b3V0Qm94KTsgfQogCisgICAgdm9pZCBzZXRVc2VkVmVydGljYWxNYXJnaW4o
Y29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRWZXJ0aWNhbE1hcmdpbiYgdXNlZFZlcnRp
Y2FsTWFyZ2luKSB7IG1fdXNlZFZlcnRpY2FsTWFyZ2lucy5zZXQoJmxheW91dEJveCwgdXNlZFZl
cnRpY2FsTWFyZ2luKTsgfQorICAgIFVzZWRWZXJ0aWNhbE1hcmdpbiB1c2VkVmVydGljYWxNYXJn
aW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0IHsgcmV0dXJuIG1fdXNlZFZlcnRpY2FsTWFy
Z2lucy5nZXQoJmxheW91dEJveCk7IH0KKwogcHJpdmF0ZToKICAgICBIYXNoTWFwPGNvbnN0IEJv
eCosIFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbj4gbV9wb3NpdGl2ZUFuZE5lZ2F0
aXZlVmVydGljYWxNYXJnaW47CisgICAgSGFzaE1hcDxjb25zdCBCb3gqLCBVc2VkVmVydGljYWxN
YXJnaW4+IG1fdXNlZFZlcnRpY2FsTWFyZ2luczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFw
c2UuY3BwCmluZGV4IDIyY2VhZmI5ZmNjMmNhYjFjYWEwYTE3YjI4NTg3ZWRjOGQ1OWMxNWYuLjFl
OTU1ZmZhMzZjYTg3NjhlYmQ0ZTZjMWM3Y2ZjYjIyMTkwOTNlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNv
bGxhcHNlLmNwcApAQCAtNDgzLDExICs0ODMsMTAgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpNYXJnaW5Db2xsYXBzZTo6dXBkYXRlTWFyZ2luQWZ0ZXJGb3JQcmV2aW91c1NpYmxpbmcK
ICAgICBhdXRvJiBibG9ja0Zvcm1hdHRpbmdTdGF0ZSA9IGJsb2NrRm9ybWF0dGluZ0NvbnRleHQu
Zm9ybWF0dGluZ1N0YXRlKCk7CiAgICAgd2hpbGUgKG1hcmdpbkNvbGxhcHNlLm1hcmdpbkJlZm9y
ZUNvbGxhcHNlc1dpdGhQcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlcigqY3VycmVudEJveCkpIHsK
ICAgICAgICAgYXV0byYgcHJldmlvdXNTaWJsaW5nID0gKmN1cnJlbnRCb3gtPnByZXZpb3VzSW5G
bG93U2libGluZygpOwotICAgICAgICBhdXRvJiBwcmV2aW91c1NpYmxpbmdEaXNwbGF5Qm94ID0g
YmxvY2tGb3JtYXR0aW5nU3RhdGUuZGlzcGxheUJveChwcmV2aW91c1NpYmxpbmcpOwotICAgICAg
ICBhdXRvIHByZXZpb3VzU2libGluZ1ZlcnRpY2FsTWFyZ2luID0gcHJldmlvdXNTaWJsaW5nRGlz
cGxheUJveC52ZXJ0aWNhbE1hcmdpbigpOworICAgICAgICBhdXRvIHByZXZpb3VzU2libGluZ1Zl
cnRpY2FsTWFyZ2luID0gYmxvY2tGb3JtYXR0aW5nU3RhdGUudXNlZFZlcnRpY2FsTWFyZ2luKHBy
ZXZpb3VzU2libGluZyk7CiAKLSAgICAgICAgYXV0byBjb2xsYXBzZWRWZXJ0aWNhbE1hcmdpbkJl
Zm9yZSA9IHByZXZpb3VzU2libGluZ1ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLmJl
Zm9yZTsKLSAgICAgICAgYXV0byBjb2xsYXBzZWRWZXJ0aWNhbE1hcmdpbkFmdGVyID0gYmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveCgqY3VycmVudEJveCkudmVydGljYWxNYXJn
aW4oKS5iZWZvcmUoKTsKKyAgICAgICAgYXV0byBjb2xsYXBzZWRWZXJ0aWNhbE1hcmdpbkJlZm9y
ZSA9IHByZXZpb3VzU2libGluZ1ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcy5iZWZvcmU7
CisgICAgICAgIGF1dG8gY29sbGFwc2VkVmVydGljYWxNYXJnaW5BZnRlciA9IGJsb2NrRm9ybWF0
dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmN1cnJlbnRCb3gpLm1hcmdpbkJlZm9yZSgpOwog
CiAgICAgICAgIGF1dG8gbWFyZ2luc0NvbGxhcHNlVGhyb3VnaCA9IG1hcmdpbkNvbGxhcHNlLm1h
cmdpbnNDb2xsYXBzZVRocm91Z2gocHJldmlvdXNTaWJsaW5nKTsKICAgICAgICAgaWYgKG1hcmdp
bnNDb2xsYXBzZVRocm91Z2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFw
cGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGUxMTkyN2Ux
MzNmYTc2NWEwZGYwMDA4ZWUxZDdjYTkyZDZhNzBmOTIuLjM0MmYyM2FhZjU3ZmI1Yjc4YTg5OTlh
NGI4YzY0NjE2ZjlhZjY2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3
cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yMjQsMTEg
KzIyNCwxMiBAQCB2b2lkIFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVIZWlnaHRBbmRNYXJnaW5Gb3JUYWJsZUJveChjb25zdAogICAgIC8vIENhY2hlIHRoZSBjb21w
dXRlZCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgbWFyZ2luIHZhbHVlIHBhaXIuCiAgICAgZm9ybWF0
dGluZ1N0YXRlKCkuc2V0UG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luKHRhYmxlQm94
LCBjb2xsYXBzZWRBbmRQb3NpdGl2ZU5lZ2F0aXZlVmFsdWVzLnBvc2l0aXZlQW5kTmVnYXRpdmVW
ZXJ0aWNhbFZhbHVlcyk7CiAgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1h
cmdpbiB7IGhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4sIGNvbGxhcHNlZEFuZFBv
c2l0aXZlTmVnYXRpdmVWYWx1ZXMuY29sbGFwc2VkVmFsdWVzIH07CisgICAgZm9ybWF0dGluZ1N0
YXRlKCkuc2V0VXNlZFZlcnRpY2FsTWFyZ2luKHRhYmxlQm94LCB2ZXJ0aWNhbE1hcmdpbik7CiAK
ICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gZm9ybWF0dGluZ1N0YXRlKCkuZGlzcGxheUJveCh0YWJs
ZUJveCk7CiAgICAgZGlzcGxheUJveC5zZXRUb3AodmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4o
dGFibGVCb3gsIHZlcnRpY2FsTWFyZ2luLCBjb25zdHJhaW50cy52ZXJ0aWNhbCkpOwogICAgIGRp
c3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdodChoZWlnaHRBbmRNYXJnaW4uY29udGVudEhlaWdo
dCk7Ci0gICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih2ZXJ0aWNhbE1hcmdpbik7Cisg
ICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih7IG1hcmdpbkJlZm9yZSh2ZXJ0aWNhbE1h
cmdpbiksIG1hcmdpbkFmdGVyKHZlcnRpY2FsTWFyZ2luKSB9KTsKICAgICAvLyBBZGp1c3QgdGhl
IHByZXZpb3VzIHNpYmxpbmcncyBtYXJnaW4gYm90dG9tIG5vdyB0aGF0IHRoaXMgYm94J3MgdmVy
dGljYWwgbWFyZ2luIGlzIGNvbXB1dGVkLgogICAgIE1hcmdpbkNvbGxhcHNlOjp1cGRhdGVNYXJn
aW5BZnRlckZvclByZXZpb3VzU2libGluZygqdGhpcywgbWFyZ2luQ29sbGFwc2UsIHRhYmxlQm94
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNw
bGF5Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94
LmNwcAppbmRleCAyYjkwOTUxM2MyOGRlZDBjY2YyODBjOWE4NjMxNDNhYjdlMTQyODM5Li43MzE3
ZjZmZDUwMTg5ZmVjMjY3ZDJiMjdhZTkxNDI3MmRiYzBhMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCkBAIC00OSw3ICs0OSw2IEBA
IEJveDo6Qm94KGNvbnN0IEJveCYgb3RoZXIpCiAgICAgLCBtX2hhc1ZhbGlkTGVmdChvdGhlci5t
X2hhc1ZhbGlkTGVmdCkKICAgICAsIG1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luKG90aGVyLm1f
aGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luKQogICAgICwgbV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2lu
KG90aGVyLm1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbikKLSAgICAsIG1faGFzVmFsaWRWZXJ0aWNh
bE5vbkNvbGxhcHNlZE1hcmdpbihvdGhlci5tX2hhc1ZhbGlkVmVydGljYWxOb25Db2xsYXBzZWRN
YXJnaW4pCiAgICAgLCBtX2hhc1ZhbGlkQm9yZGVyKG90aGVyLm1faGFzVmFsaWRCb3JkZXIpCiAg
ICAgLCBtX2hhc1ZhbGlkUGFkZGluZyhvdGhlci5tX2hhc1ZhbGlkUGFkZGluZykKICAgICAsIG1f
aGFzVmFsaWRDb250ZW50SGVpZ2h0KG90aGVyLm1faGFzVmFsaWRDb250ZW50SGVpZ2h0KQpAQCAt
NzUsMTggKzc0LDYgQEAgUmVjdCBCb3g6Om1hcmdpbkJveCgpIGNvbnN0CiAgICAgcmV0dXJuIG1h
cmdpbkJveDsKIH0KIAotUmVjdCBCb3g6Om5vbkNvbGxhcHNlZE1hcmdpbkJveCgpIGNvbnN0Ci17
Ci0gICAgYXV0byBib3JkZXJCb3ggPSB0aGlzLT5ib3JkZXJCb3goKTsKLQotICAgIFJlY3QgbWFy
Z2luQm94OwotICAgIG1hcmdpbkJveC5zZXRUb3AoYm9yZGVyQm94LnRvcCgpIC0gbm9uQ29sbGFw
c2VkTWFyZ2luQmVmb3JlKCkpOwotICAgIG1hcmdpbkJveC5zZXRMZWZ0KGJvcmRlckJveC5sZWZ0
KCkgLSBtYXJnaW5TdGFydCgpKTsKLSAgICBtYXJnaW5Cb3guc2V0SGVpZ2h0KGJvcmRlckJveC5o
ZWlnaHQoKSArIG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpICsgbm9uQ29sbGFwc2VkTWFyZ2lu
QWZ0ZXIoKSk7Ci0gICAgbWFyZ2luQm94LnNldFdpZHRoKGJvcmRlckJveC53aWR0aCgpICsgbWFy
Z2luU3RhcnQoKSArIG1hcmdpbkVuZCgpKTsKLSAgICByZXR1cm4gbWFyZ2luQm94OwotfQotCiBS
ZWN0IEJveDo6Ym9yZGVyQm94KCkgY29uc3QKIHsKICAgICBSZWN0IGJvcmRlckJveDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCmluZGV4IGRhZjEw
YzNkNGM1YTRjZjk3NDJmZmMzYzQxOWQ2Y2FlMzQxNWM3NGQuLmMxZjk0NmFlYWM0N2ZjMjU1ZGI3
ZjBmNGJhZGVjZjlhNjM3MjY3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3Bs
YXl0cmVlL0Rpc3BsYXlCb3guaApAQCAtNTQsNTkgKzU0LDI1IEBAIHB1YmxpYzoKICAgICBMYXlv
dXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlclRvcCgpICsgcGFkZGluZ0JveEhl
aWdodCgpICsgYm9yZGVyQm90dG9tKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiBzaXplKCkuaXNFbXB0eSgpOyB9CiAgICAgUmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4g
eyB0b3AoKSwgbGVmdCgpLCB3aWR0aCgpLCBoZWlnaHQoKSB9OyB9Ci0gICAgUmVjdCByZWN0V2l0
aE1hcmdpbigpIGNvbnN0OworICAgIFJlY3QgcmVjdFdpdGhNYXJnaW4oKSBjb25zdCB7IHJldHVy
biB7IHRvcCgpIC0gbWFyZ2luQmVmb3JlKCksIGxlZnQoKSAtIG1hcmdpblN0YXJ0KCksIG1hcmdp
blN0YXJ0KCkgKyB3aWR0aCgpICsgbWFyZ2luRW5kKCksIG1hcmdpbkJlZm9yZSgpICsgaGVpZ2h0
KCkgKyBtYXJnaW5BZnRlcigpIH07IH0KKworICAgIHN0cnVjdCBWZXJ0aWNhbE1hcmdpbiB7Cisg
ICAgICAgIExheW91dFVuaXQgYmVmb3JlOworICAgICAgICBMYXlvdXRVbml0IGFmdGVyOworICAg
IH07CisgICAgVmVydGljYWxNYXJnaW4gdmVydGljYWxNYXJnaW4oKSBjb25zdDsKIAogICAgIHN0
cnVjdCBIb3Jpem9udGFsTWFyZ2luIHsKICAgICAgICAgTGF5b3V0VW5pdCBzdGFydDsKICAgICAg
ICAgTGF5b3V0VW5pdCBlbmQ7CiAgICAgfTsKLSAgICBzdHJ1Y3QgVmVydGljYWxNYXJnaW4gewot
ICAgICAgICBMYXlvdXRVbml0IGJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sbGFwc2VkVmFs
dWVzLmJlZm9yZS52YWx1ZU9yKG1fbm9uQ29sbGFwc2VkVmFsdWVzLmJlZm9yZSk7IH0KLSAgICAg
ICAgTGF5b3V0VW5pdCBhZnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sbGFwc2VkVmFsdWVzLmFm
dGVyLnZhbHVlT3IobV9ub25Db2xsYXBzZWRWYWx1ZXMuYWZ0ZXIpOyB9Ci0gICAgICAgIGJvb2wg
aXNDb2xsYXBzZWRUaHJvdWdoKCkgY29uc3QgeyByZXR1cm4gbV9jb2xsYXBzZWRWYWx1ZXMuaXND
b2xsYXBzZWRUaHJvdWdoOyB9Ci0KLSAgICAgICAgc3RydWN0IE5vbkNvbGxhcHNlZFZhbHVlcyB7
Ci0gICAgICAgICAgICBOb25Db2xsYXBzZWRWYWx1ZXMoTGF5b3V0OjpVc2VkVmVydGljYWxNYXJn
aW46Ok5vbkNvbGxhcHNlZFZhbHVlcyk7Ci0gICAgICAgICAgICBOb25Db2xsYXBzZWRWYWx1ZXMo
KSA9IGRlZmF1bHQ7Ci0KLSAgICAgICAgICAgIExheW91dFVuaXQgYmVmb3JlOwotICAgICAgICAg
ICAgTGF5b3V0VW5pdCBhZnRlcjsKLSAgICAgICAgfTsKLSAgICAgICAgTm9uQ29sbGFwc2VkVmFs
dWVzIG5vbkNvbGxhcHNlZFZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uQ29sbGFwc2VkVmFs
dWVzOyB9Ci0KLSAgICAgICAgc3RydWN0IENvbGxhcHNlZFZhbHVlcyB7Ci0gICAgICAgICAgICBD
b2xsYXBzZWRWYWx1ZXMoTGF5b3V0OjpVc2VkVmVydGljYWxNYXJnaW46OkNvbGxhcHNlZFZhbHVl
cyk7Ci0gICAgICAgICAgICBDb2xsYXBzZWRWYWx1ZXMoKSA9IGRlZmF1bHQ7Ci0KLSAgICAgICAg
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGJlZm9yZTsKLSAgICAgICAgICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IGFmdGVyOwotICAgICAgICAgICAgYm9vbCBpc0NvbGxhcHNlZFRocm91Z2ggeyBm
YWxzZSB9OwotICAgICAgICB9OwotICAgICAgICBDb2xsYXBzZWRWYWx1ZXMgY29sbGFwc2VkVmFs
dWVzKCkgY29uc3QgeyByZXR1cm4gbV9jb2xsYXBzZWRWYWx1ZXM7IH0KLSAgICAgICAgYm9vbCBo
YXNDb2xsYXBzZWRWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX2NvbGxhcHNlZFZhbHVlcy5iZWZv
cmUgfHwgbV9jb2xsYXBzZWRWYWx1ZXMuYWZ0ZXI7IH0KLSAgICAgICAgdm9pZCBzZXRDb2xsYXBz
ZWRWYWx1ZXMoQ29sbGFwc2VkVmFsdWVzIGNvbGxhcHNlZFZhbHVlcykgeyBtX2NvbGxhcHNlZFZh
bHVlcyA9IGNvbGxhcHNlZFZhbHVlczsgfQotCi0gICAgICAgIFZlcnRpY2FsTWFyZ2luKE5vbkNv
bGxhcHNlZFZhbHVlcywgQ29sbGFwc2VkVmFsdWVzKTsKLSAgICAgICAgVmVydGljYWxNYXJnaW4o
TGF5b3V0OjpVc2VkVmVydGljYWxNYXJnaW4pOwotICAgICAgICBWZXJ0aWNhbE1hcmdpbihMYXlv
dXQ6OlVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzKTsKLSAgICAgICAgVmVy
dGljYWxNYXJnaW4oKSA9IGRlZmF1bHQ7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBOb25Db2xs
YXBzZWRWYWx1ZXMgbV9ub25Db2xsYXBzZWRWYWx1ZXM7Ci0gICAgICAgIENvbGxhcHNlZFZhbHVl
cyBtX2NvbGxhcHNlZFZhbHVlczsKLSAgICB9OwotICAgIFZlcnRpY2FsTWFyZ2luIHZlcnRpY2Fs
TWFyZ2luKCkgY29uc3Q7CiAgICAgSG9yaXpvbnRhbE1hcmdpbiBob3Jpem9udGFsTWFyZ2luKCkg
Y29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoKSBjb25zdDsKICAgICBMYXlvdXRV
bml0IG1hcmdpblN0YXJ0KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5BZnRlcigpIGNv
bnN0OwogICAgIExheW91dFVuaXQgbWFyZ2luRW5kKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNDb2xs
YXBzZWRUaHJvdWdoTWFyZ2luKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNhbE1hcmdpbi5pc0Nv
bGxhcHNlZFRocm91Z2goKTsgfQogICAgIGJvb2wgaGFzQ2xlYXJhbmNlKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNDbGVhcmFuY2U7IH0KIAotICAgIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2lu
QmVmb3JlKCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBub25Db2xsYXBzZWRNYXJnaW5BZnRlcigp
IGNvbnN0OwotCiAgICAgTGF5b3V0VW5pdCBib3JkZXJUb3AoKSBjb25zdDsKICAgICBMYXlvdXRV
bml0IGJvcmRlckxlZnQoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGJvcmRlckJvdHRvbSgpIGNv
bnN0OwpAQCAtMTQ0LDggKzExMCw2IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGhvcml6b250
YWxNYXJnaW5Cb3JkZXJBbmRQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luU3RhcnQoKSAr
IGhvcml6b250YWxCb3JkZXIoKSArIGhvcml6b250YWxQYWRkaW5nKCkudmFsdWVPcigwKSArIG1h
cmdpbkVuZCgpOyB9CiAKICAgICBSZWN0IG1hcmdpbkJveCgpIGNvbnN0OwotICAgIFJlY3Qgbm9u
Q29sbGFwc2VkTWFyZ2luQm94KCkgY29uc3Q7Ci0KICAgICBSZWN0IGJvcmRlckJveCgpIGNvbnN0
OwogICAgIFJlY3QgcGFkZGluZ0JveCgpIGNvbnN0OwogICAgIFJlY3QgY29udGVudEJveCgpIGNv
bnN0OwpAQCAtMTg0LDcgKzE0OCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRIYXNWYWxpZFRv
cCgpIHsgbV9oYXNWYWxpZFRvcCA9IHRydWU7IH0KICAgICB2b2lkIHNldEhhc1ZhbGlkTGVmdCgp
IHsgbV9oYXNWYWxpZExlZnQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRIYXNWYWxpZFZlcnRpY2Fs
TWFyZ2luKCkgeyBtX2hhc1ZhbGlkVmVydGljYWxNYXJnaW4gPSB0cnVlOyB9Ci0gICAgdm9pZCBz
ZXRIYXNWYWxpZFZlcnRpY2FsTm9uQ29sbGFwc2VkTWFyZ2luKCkgeyBtX2hhc1ZhbGlkVmVydGlj
YWxOb25Db2xsYXBzZWRNYXJnaW4gPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRIYXNWYWxpZEhvcml6
b250YWxNYXJnaW4oKSB7IG1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luID0gdHJ1ZTsgfQogCiAg
ICAgdm9pZCBzZXRIYXNWYWxpZEJvcmRlcigpIHsgbV9oYXNWYWxpZEJvcmRlciA9IHRydWU7IH0K
QEAgLTIxMCw3ICsxNzMsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNWYWxpZExlZnQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZEhvcml6b250YWxNYXJnaW4geyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luIHsgZmFsc2UgfTsKLSAgICBib29sIG1f
aGFzVmFsaWRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbiB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2hhc1ZhbGlkQm9yZGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRQYWRkaW5nIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRDb250ZW50SGVpZ2h0IHsgZmFsc2UgfTsKQEAg
LTIxOSwzNiArMTgxLDYgQEAgcHJpdmF0ZToKICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogfTsK
IAotaW5saW5lIEJveDo6VmVydGljYWxNYXJnaW46OlZlcnRpY2FsTWFyZ2luKExheW91dDo6VXNl
ZFZlcnRpY2FsTWFyZ2luIHVzZWRWZXJ0aWNhbE1hcmdpbikKLSAgICA6IG1fbm9uQ29sbGFwc2Vk
VmFsdWVzKHVzZWRWZXJ0aWNhbE1hcmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMoKSkKLSAgICAsIG1f
Y29sbGFwc2VkVmFsdWVzKHVzZWRWZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKSkKLXsK
LX0KLQotaW5saW5lIEJveDo6VmVydGljYWxNYXJnaW46OlZlcnRpY2FsTWFyZ2luKFZlcnRpY2Fs
TWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgbm9uQ29sbGFwc2VkVmFsdWVzLCBWZXJ0aWNhbE1h
cmdpbjo6Q29sbGFwc2VkVmFsdWVzIGNvbGxhcHNlZFZhbHVlcykKLSAgICA6IG1fbm9uQ29sbGFw
c2VkVmFsdWVzKG5vbkNvbGxhcHNlZFZhbHVlcykKLSAgICAsIG1fY29sbGFwc2VkVmFsdWVzKGNv
bGxhcHNlZFZhbHVlcykKLXsKLX0KLQotaW5saW5lIEJveDo6VmVydGljYWxNYXJnaW46OlZlcnRp
Y2FsTWFyZ2luKExheW91dDo6VXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMg
bm9uQ29sbGFwc2VkVmFsdWVzKQotICAgIDogbV9ub25Db2xsYXBzZWRWYWx1ZXMobm9uQ29sbGFw
c2VkVmFsdWVzKQotewotfQotCi1pbmxpbmUgQm94OjpWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFw
c2VkVmFsdWVzOjpOb25Db2xsYXBzZWRWYWx1ZXMoTGF5b3V0OjpVc2VkVmVydGljYWxNYXJnaW46
Ok5vbkNvbGxhcHNlZFZhbHVlcyBub25Db2xsYXBzZWRWYWx1ZXMpCi0gICAgOiBiZWZvcmUobm9u
Q29sbGFwc2VkVmFsdWVzLmJlZm9yZSkKLSAgICAsIGFmdGVyKG5vbkNvbGxhcHNlZFZhbHVlcy5h
ZnRlcikKLXsKLX0KLQotaW5saW5lIEJveDo6VmVydGljYWxNYXJnaW46OkNvbGxhcHNlZFZhbHVl
czo6Q29sbGFwc2VkVmFsdWVzKExheW91dDo6VXNlZFZlcnRpY2FsTWFyZ2luOjpDb2xsYXBzZWRW
YWx1ZXMgY29sbGFwc2VkVmFsdWVzKQotICAgIDogYmVmb3JlKGNvbGxhcHNlZFZhbHVlcy5iZWZv
cmUpCi0gICAgLCBhZnRlcihjb2xsYXBzZWRWYWx1ZXMuYWZ0ZXIpCi0gICAgLCBpc0NvbGxhcHNl
ZFRocm91Z2goY29sbGFwc2VkVmFsdWVzLmlzQ29sbGFwc2VkVGhyb3VnaCkKLXsKLX0KLQogI2lm
IEFTU0VSVF9FTkFCTEVECiBpbmxpbmUgdm9pZCBCb3g6OmludmFsaWRhdGVNYXJnaW4oKQogewpA
QCAtMzQxLDcgKzI3Myw2IEBAIGlubGluZSB2b2lkIEJveDo6c2V0VmVydGljYWxNYXJnaW4oVmVy
dGljYWxNYXJnaW4gbWFyZ2luKQogewogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgc2V0SGFzVmFs
aWRWZXJ0aWNhbE1hcmdpbigpOwotICAgIHNldEhhc1ZhbGlkVmVydGljYWxOb25Db2xsYXBzZWRN
YXJnaW4oKTsKICAgICBpbnZhbGlkYXRlUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoKTsKICNlbmRp
ZgogICAgIG1fdmVydGljYWxNYXJnaW4gPSBtYXJnaW47CkBAIC0zNzEsMTQgKzMwMiw2IEBAIGlu
bGluZSB2b2lkIEJveDo6c2V0VmVydGljYWxQYWRkaW5nKExheW91dDo6VmVydGljYWxFZGdlcyB2
ZXJ0aWNhbFBhZGRpbmcpCiAgICAgbV9wYWRkaW5nID0gTGF5b3V0OjpFZGdlcyB7IG1fcGFkZGlu
ZyA/IG1fcGFkZGluZy0+aG9yaXpvbnRhbCA6IExheW91dDo6SG9yaXpvbnRhbEVkZ2VzKCksIHZl
cnRpY2FsUGFkZGluZyB9OwogfQogCi1pbmxpbmUgUmVjdCBCb3g6OnJlY3RXaXRoTWFyZ2luKCkg
Y29uc3QKLXsKLSAgICBhdXRvIG1hcmdpbkFmdGVyID0gdGhpcy0+bWFyZ2luQWZ0ZXIoKTsKLSAg
ICBpZiAobV92ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS5pc0NvbGxhcHNlZFRocm91
Z2gpCi0gICAgICAgIG1hcmdpbkFmdGVyID0gMDsKLSAgICByZXR1cm4geyB0b3AoKSAtIG1hcmdp
bkJlZm9yZSgpLCBsZWZ0KCkgLSBtYXJnaW5TdGFydCgpLCBtYXJnaW5TdGFydCgpICsgd2lkdGgo
KSArIG1hcmdpbkVuZCgpLCBtYXJnaW5CZWZvcmUoKSArIGhlaWdodCgpICsgbWFyZ2luQWZ0ZXIg
fTsKLX0KLQogaW5saW5lIEJveDo6VmVydGljYWxNYXJnaW4gQm94Ojp2ZXJ0aWNhbE1hcmdpbigp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbik7CkBAIC0zOTQs
NyArMzE3LDcgQEAgaW5saW5lIEJveDo6SG9yaXpvbnRhbE1hcmdpbiBCb3g6Omhvcml6b250YWxN
YXJnaW4oKSBjb25zdAogaW5saW5lIExheW91dFVuaXQgQm94OjptYXJnaW5CZWZvcmUoKSBjb25z
dAogewogICAgIEFTU0VSVChtX2hhc1ZhbGlkVmVydGljYWxNYXJnaW4pOwotICAgIHJldHVybiBt
X3ZlcnRpY2FsTWFyZ2luLmJlZm9yZSgpOworICAgIHJldHVybiBtX3ZlcnRpY2FsTWFyZ2luLmJl
Zm9yZTsKIH0KIAogaW5saW5lIExheW91dFVuaXQgQm94OjptYXJnaW5TdGFydCgpIGNvbnN0CkBA
IC00MDYsNyArMzI5LDcgQEAgaW5saW5lIExheW91dFVuaXQgQm94OjptYXJnaW5TdGFydCgpIGNv
bnN0CiBpbmxpbmUgTGF5b3V0VW5pdCBCb3g6Om1hcmdpbkFmdGVyKCkgY29uc3QKIHsKICAgICBB
U1NFUlQobV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luKTsKLSAgICByZXR1cm4gbV92ZXJ0aWNhbE1h
cmdpbi5hZnRlcigpOworICAgIHJldHVybiBtX3ZlcnRpY2FsTWFyZ2luLmFmdGVyOwogfQogCiBp
bmxpbmUgTGF5b3V0VW5pdCBCb3g6Om1hcmdpbkVuZCgpIGNvbnN0CkBAIC00MTUsMTggKzMzOCw2
IEBAIGlubGluZSBMYXlvdXRVbml0IEJveDo6bWFyZ2luRW5kKCkgY29uc3QKICAgICByZXR1cm4g
bV9ob3Jpem9udGFsTWFyZ2luLmVuZDsKIH0KIAotaW5saW5lIExheW91dFVuaXQgQm94Ojpub25D
b2xsYXBzZWRNYXJnaW5CZWZvcmUoKSBjb25zdAotewotICAgIEFTU0VSVChtX2hhc1ZhbGlkVmVy
dGljYWxOb25Db2xsYXBzZWRNYXJnaW4pOwotICAgIHJldHVybiBtX3ZlcnRpY2FsTWFyZ2luLm5v
bkNvbGxhcHNlZFZhbHVlcygpLmJlZm9yZTsKLX0KLQotaW5saW5lIExheW91dFVuaXQgQm94Ojpu
b25Db2xsYXBzZWRNYXJnaW5BZnRlcigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1faGFzVmFsaWRW
ZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbik7Ci0gICAgcmV0dXJuIG1fdmVydGljYWxNYXJnaW4u
bm9uQ29sbGFwc2VkVmFsdWVzKCkuYWZ0ZXI7Ci19Ci0KIGlubGluZSBPcHRpb25hbDxMYXlvdXRV
bml0PiBCb3g6OnBhZGRpbmdUb3AoKSBjb25zdAogewogICAgIEFTU0VSVChtX2hhc1ZhbGlkUGFk
ZGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4
dC5jcHAKaW5kZXggMmUxZjhjNGZlM2RlMTQyMjBhMzQ0NDNkYmQ1NTk4OTExM2UyYmI3ZC4uMjEz
ZDhkZjBlMjdkNjkzYTA2OTFhNDMxMzBmZTgwZDliZDk4YmYzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcApAQCAtMzA0LDEyICszMDQs
MTMgQEAgRmxvYXRpbmdDb250ZXh0OjpDbGVhcmFuY2VQb3NpdGlvbiBGbG9hdGluZ0NvbnRleHQ6
OnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmMKIAogICAgICAgICAvLyBDbGVhcmFuY2UgaW5o
aWJpdHMgbWFyZ2luIGNvbGxhcHNpbmcuCiAgICAgICAgIGlmIChhdXRvKiBwcmV2aW91c0luRmxv
d1NpYmxpbmcgPSBsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpIHsKLSAgICAgICAg
ICAgIC8vIERvZXMgdGhpcyBib3ggd2l0aCBjbGVhcmFuY2UgYWN0dWFsbHkgY29sbGFwc2UgaXRz
IG1hcmdpbiBiZWZvcmUgd2l0aCB0aGUgcHJldmlvdXMgaW5mbG93IGJveCdzIG1hcmdpbiBhZnRl
cj8gCi0gICAgICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0NvbnRleHQo
KS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpLnZlcnRpY2FsTWFyZ2luKCk7Ci0gICAgICAgICAg
ICBpZiAodmVydGljYWxNYXJnaW4uaGFzQ29sbGFwc2VkVmFsdWVzKCkgJiYgdmVydGljYWxNYXJn
aW4uY29sbGFwc2VkVmFsdWVzKCkuYmVmb3JlKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBwcmV2
aW91c1ZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveCgq
cHJldmlvdXNJbkZsb3dTaWJsaW5nKS52ZXJ0aWNhbE1hcmdpbigpOwotICAgICAgICAgICAgICAg
IGF1dG8gY29sbGFwc2VkTWFyZ2luID0gKnZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygp
LmJlZm9yZTsKLSAgICAgICAgICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IHByZXZp
b3VzVmVydGljYWxNYXJnaW4uYWZ0ZXIoKSArIHZlcnRpY2FsTWFyZ2luLmJlZm9yZSgpOworICAg
ICAgICAgICAgLy8gRG9lcyB0aGlzIGJveCB3aXRoIGNsZWFyYW5jZSBhY3R1YWxseSBjb2xsYXBz
ZSBpdHMgbWFyZ2luIGJlZm9yZSB3aXRoIHRoZSBwcmV2aW91cyBpbmZsb3cgYm94J3MgbWFyZ2lu
IGFmdGVyPworICAgICAgICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8Qmxv
Y2tGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlKCkuZm9ybWF0dGluZ1N0YXRlRm9yQm94KGxh
eW91dEJveCkpOworICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IGZvcm1hdHRpbmdT
dGF0ZS51c2VkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGlmICh2ZXJ0
aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMuYmVmb3JlKSB7CisgICAgICAgICAgICAgICAgYXV0
byBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luQWZ0ZXIgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21l
dHJ5Rm9yQm94KCpwcmV2aW91c0luRmxvd1NpYmxpbmcpLm1hcmdpbkFmdGVyKCk7CisgICAgICAg
ICAgICAgICAgYXV0byBjb2xsYXBzZWRNYXJnaW4gPSAqdmVydGljYWxNYXJnaW4uY29sbGFwc2Vk
VmFsdWVzLmJlZm9yZTsKKyAgICAgICAgICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9
IHByZXZpb3VzVmVydGljYWxNYXJnaW5BZnRlciArIG1hcmdpbkJlZm9yZSh2ZXJ0aWNhbE1hcmdp
bik7CiAgICAgICAgICAgICAgICAgYXV0byBtYXJnaW5EaWZmZXJlbmNlID0gbm9uQ29sbGFwc2Vk
TWFyZ2luIC0gY29sbGFwc2VkTWFyZ2luOwogICAgICAgICAgICAgICAgIC8vIE1vdmUgdGhlIGJv
eCB0byB0aGUgcG9zaXRpb24gd2hlcmUgaXQgd291bGQgYmUgd2l0aCBub24tY29sbGFwc2VkIG1h
cmdpbnMuCiAgICAgICAgICAgICAgICAgcm9vdFJlbGF0aXZlVG9wICs9IG1hcmdpbkRpZmZlcmVu
Y2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggOTFlMzhhMGUwODFk
Yjc0Njg5YzY1ZGMzYmYzOGY5NzgyZTRlNmNhYy4uMTM5Y2M0ZmU2YmEzNmU1Yzc5MGUyOWUxYzAz
NmY0ZDNkODM3ZmI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAt
MTE2LDcgKzExNiw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxv
d0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvCiAgICAgICAgICAgICAgICAg
Ly8gSW5saW5lIGJveGVzICg8c3Bhbj4pIGNhbid0IGdldCBzaXplZC9wb3NpdGlvbmVkIHlldC4g
QXQgdGhpcyBwb2ludCB3ZSBjYW4gb25seSBjb21wdXRlIHRoZWlyIG1hcmdpbnMsIGJvcmRlcnMg
YW5kIHBhZGRpbmdzLgogICAgICAgICAgICAgICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKCps
YXlvdXRCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOwogICAgICAgICAgICAgICAgIGNvbXB1
dGVIb3Jpem9udGFsTWFyZ2luKCpsYXlvdXRCb3gsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOwot
ICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmRpc3BsYXlCb3goKmxheW91dEJveCku
c2V0VmVydGljYWxNYXJnaW4oeyB7IH0sIHsgfSB9KTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0
aW5nU3RhdGUoKS5kaXNwbGF5Qm94KCpsYXlvdXRCb3gpLnNldFZlcnRpY2FsTWFyZ2luKHsgfSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QKICAg
ICB9CiAgICAgYXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdTdGF0ZSgpLmRpc3BsYXlCb3go
bGF5b3V0Qm94KTsKICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoY29udGVudEhl
aWdodEFuZE1hcmdpbi5jb250ZW50SGVpZ2h0KTsKLSAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2Fs
TWFyZ2luKHsgY29udGVudEhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4gfSk7Cisg
ICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih7IGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4u
bm9uQ29sbGFwc2VkTWFyZ2luLmJlZm9yZSwgY29udGVudEhlaWdodEFuZE1hcmdpbi5ub25Db2xs
YXBzZWRNYXJnaW4uYWZ0ZXIgfSk7CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4
dC5jcHAKaW5kZXggM2QyMTlmNjVjNGNiYTA4MjI4M2QyNjFmMDA4NzJkYmNjZWJkOGJhNi4uOWI0
YmJkNWEwNjgwOGJiMGNmMzFiMTJjNjJkMGQxNTJiMDhmMjhmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0
dGluZ0NvbnRleHQuY3BwCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdD
b250ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JSb3dzKExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpv
bnQKICAgICAgICAgcm93RGlzcGxheUJveC5zZXRQYWRkaW5nKGdlb21ldHJ5KCkuY29tcHV0ZWRQ
YWRkaW5nKHJvd0JveCwgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlKSk7CiAgICAgICAgIC8vIElu
dGVybmFsIHRhYmxlIGVsZW1lbnRzIGRvIG5vdCBoYXZlIG1hcmdpbnMuCiAgICAgICAgIHJvd0Rp
c3BsYXlCb3guc2V0SG9yaXpvbnRhbE1hcmdpbih7IH0pOwotICAgICAgICByb3dEaXNwbGF5Qm94
LnNldFZlcnRpY2FsTWFyZ2luKHsgeyB9LCB7IH0gfSk7CisgICAgICAgIHJvd0Rpc3BsYXlCb3gu
c2V0VmVydGljYWxNYXJnaW4oeyB9KTsKIAogICAgICAgICBhdXRvIGNvbXB1dGVkUm93Qm9yZGVy
ID0gWyZdIHsKICAgICAgICAgICAgIGF1dG8gYm9yZGVyID0gZ2VvbWV0cnkoKS5jb21wdXRlZEJv
cmRlcihyb3dCb3gpOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29u
dGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yU2VjdGlvbnMoY29uc3QgQ29uc3RyYWludHNGb3JJbkZs
CiAgICAgICAgIHBhZGRpbmdCZWZvcmUgPSBXVEY6Om51bGxvcHQ7CiAgICAgICAgIC8vIEludGVy
bmFsIHRhYmxlIGVsZW1lbnRzIGRvIG5vdCBoYXZlIG1hcmdpbnMuCiAgICAgICAgIHNlY3Rpb25E
aXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4oeyB9KTsKLSAgICAgICAgc2VjdGlvbkRpc3Bs
YXlCb3guc2V0VmVydGljYWxNYXJnaW4oeyB7IH0sIHsgfSB9KTsKKyAgICAgICAgc2VjdGlvbkRp
c3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4oeyB9KTsKIAogICAgICAgICBzZWN0aW9uRGlzcGxh
eUJveC5zZXRDb250ZW50Qm94V2lkdGgoc2VjdGlvbldpZHRoKTsKICAgICAgICAgYXV0byBzZWN0
aW9uQ29udGVudEhlaWdodCA9IExheW91dFVuaXQgeyB9OwpAQCAtMjY4LDcgKzI2OCw3IEBAIHZv
aWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Q2VsbChjb25zdCBUYWJsZUdyaWQ6OkNl
bGwmIGNlbGwsIExheW91dFVuaXQKICAgICBjZWxsRGlzcGxheUJveC5zZXRQYWRkaW5nKGdlb21l
dHJ5KCkuY29tcHV0ZWRQYWRkaW5nKGNlbGxCb3gsIGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSkp
OwogICAgIC8vIEludGVybmFsIHRhYmxlIGVsZW1lbnRzIGRvIG5vdCBoYXZlIG1hcmdpbnMuCiAg
ICAgY2VsbERpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1hcmdpbih7IH0pOwotICAgIGNlbGxEaXNw
bGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHsgeyB9LCB7IH0gfSk7CisgICAgY2VsbERpc3BsYXlC
b3guc2V0VmVydGljYWxNYXJnaW4oeyB9KTsKIAogICAgIGF1dG8gYXZhaWxhYmxlU3BhY2VGb3JD
b250ZW50ID0gWyZdIHsKICAgICAgICAgYXV0byYgY29sdW1uTGlzdCA9IGdyaWQuY29sdW1ucygp
Lmxpc3QoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>