<?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>204613</bug_id>
          
          <creation_ts>2019-11-26 05:14:30 -0800</creation_ts>
          <short_desc>[LFC][Render tree] Add LFC line layout path to RenderBlockFlow</short_desc>
          <delta_ts>2019-12-01 07:35:42 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=204725</see_also>
          <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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1593645</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-26 05:14:30 -0800</bug_when>
    <thetext>Basic line layout integration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593651</commentid>
    <comment_count>1</comment_count>
      <attachid>384348</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-26 05:46:00 -0800</bug_when>
    <thetext>Created attachment 384348
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593682</commentid>
    <comment_count>2</comment_count>
      <attachid>384348</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-11-26 08:34:50 -0800</bug_when>
    <thetext>Comment on attachment 384348
patch

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

&gt; Source/WebCore/layout/RenderBlockFlowLineLayout.cpp:91
&gt; +LayoutUnit RenderBlockFlowLineLayout::height() const

Since there are many different types of box height, I think it would be great if this function was named contentBoxHeight() (as opposed to padding/border/margin box height).

&gt; Source/WebCore/layout/invalidation/InvalidationState.cpp:47
&gt; +    if (layoutBox.isInitialContainingBlock()) {
&gt; +        m_formattingContextRoots.add(downcast&lt;Container&gt;(layoutBox));
&gt; +        return;
&gt; +    }

As the comment/assert implies here the ICB should never need an update. It has to have a pre-computed geometry (in full LFC mode, it&apos;s always the view size, in partial LFC mode, I guess it&apos;s the flow&apos;s content box size). It&apos;s only the children that need update (layout).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593727</commentid>
    <comment_count>3</comment_count>
      <attachid>384368</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-26 11:31:38 -0800</bug_when>
    <thetext>Created attachment 384368
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593735</commentid>
    <comment_count>4</comment_count>
      <attachid>384368</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-26 12:15:46 -0800</bug_when>
    <thetext>Comment on attachment 384368
patch

Clearing flags on attachment: 384368

Committed r252893: &lt;https://trac.webkit.org/changeset/252893&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593736</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-26 12:15:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593737</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-26 12:16:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/57494369&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594406</commentid>
    <comment_count>7</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-12-01 06:48:15 -0800</bug_when>
    <thetext>This broke loader/stateobjects/pushstate-size.html test on mac-debug. EWS did indicate this failure on previous version of patch. Tracked in Bug 204725.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594407</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-01 06:51:24 -0800</bug_when>
    <thetext>No(In reply to Aakash Jain from comment #7)
&gt; This broke loader/stateobjects/pushstate-size.html test on mac-debug. EWS
&gt; did indicate this failure on previous version of patch. Tracked in Bug
&gt; 204725.

Very unlikely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594412</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-01 07:35:42 -0800</bug_when>
    <thetext>&gt; Very unlikely.

...but true. Adding enum value caused a bitfield to overflow (though the patch was otherwise no-op without enabling LFC).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384348</attachid>
            <date>2019-11-26 05:46:00 -0800</date>
            <delta_ts>2019-11-26 11:31:38 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-flow.patch</filename>
            <type>text/plain</type>
            <size>29726</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3ZWMwNWJjNTc0YS4uOTZkZjBhMDk5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxOS0xMS0yNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ11bUmVuZGVyIHRyZWVdIEFkZCBMRkMgbGluZSBsYXlvdXQgcGF0aCB0
byBSZW5kZXJCbG9ja0Zsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBhIGJhc2ljIExGQyBsaW5lIGxheW91dCBpbXBsZW1lbnRhdGlvbiBmb3Ig
UmVuZGVyQmxvY2tGbG93LgorICAgICAgICBJdCBjYW4gbGF5b3V0IGxpbmVzIGFuZCBkbyBzaW1w
bGUgcGFpbnRpbmcgYnV0IGRvZXNuJ3QgZG8gYW55dGhpbmcgZWxzZSAobGlrZSBoaXQgdGVzdGlu
ZykgeWV0LgorCisgICAgICAgIEFkZCBhIG5ldyBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJlbmRl
clRyZWVJbnRlZ3JhdGlvbkVuYWJsZWQgZmVhdHVyZSBmbGFnLCBkZWZhdWx0IHRvIGZhbHNlLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGxheW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlbmRlckJsb2NrRmxvd0xp
bmVMYXlvdXQ6OlJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0OjpjYW5Vc2VGb3IpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0OjpsYXlvdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0OjpoZWlnaHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5
b3V0OjpwYWludCk6CisgICAgICAgICogbGF5b3V0L1JlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQ
YWludGVyLmguCisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlBhaW50ZXI6OnBhaW50SW5saW5lRmxvdyk6
CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmg6CisgICAgICAg
ICogbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkludmFsaWRhdGlvblN0YXRlOjptYXJrTmVlZHNVcGRhdGUpOgorICAg
ICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmJ1aWxkTGF5b3V0VHJlZSk6CisgICAgICAg
ICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaDoKKyAgICAgICAgKiBwYWdl
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNldExheW91dEZvcm1hdHRpbmdDb250ZXh0UmVuZGVyVHJlZUludGVncmF0
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjps
YXlvdXRGb3JtYXR0aW5nQ29udGV4dFJlbmRlclRyZWVJbnRlZ3JhdGlvbkVuYWJsZWQgY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxpbmVDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkZE92ZXJmbG93RnJvbUlubGluZUNoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6cGFpbnRJbmxpbmVDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmludmFsaWRhdGVMaW5lTGF5b3V0
UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFNpbXBsZUxp
bmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0TEZDTGluZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpkZWxldGVMaW5lQm94ZXNCZWZv
cmVTaW1wbGVMaW5lTGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Omhhc0xGQ0xpbmVMYXlvdXQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsZmNMaW5lTGF5b3V0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGZjTGluZUxheW91
dCk6CisKIDIwMTktMTEtMjUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBJbnRlcm5hbEZ1bmN0aW9uIHNob3VsZCBiZSBub24tZGVzdHJ1Y3RpYmxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDZhMGQ0NmFjZjViLi5jYTA4Y2RiZDUxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTE0MjEsNiArMTQyMSw3IEBAIGxheW91dC9MYXlvdXRDb250ZXh0LmNwcAogbGF5b3V0
L0xheW91dFBoYXNlLmNwcAogbGF5b3V0L0xheW91dFN0YXRlLmNwcAogbGF5b3V0L0xheW91dFVu
aXRzLmNwcAorbGF5b3V0L1JlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQuY3BwCiBsYXlvdXQvVmVy
aWZpY2F0aW9uLmNwcAogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmNwcAogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggN2UwMTBjMzE2YjkuLjFhNmYxODgwODE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODUxLDYgKzQ4
NTEsNyBAQAogCQlFNEE4MTREQTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52
YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9u
LmggKi87IH07CiAJCUU0QTgxNEUwMUM3MzM4RUIwMEJGODVBQyAvKiBJZENoYW5nZUludmFsaWRh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRB
ODE0REYxQzczMzhFQjAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87IH07CiAJ
CUU0QThEMjE2MjI1NzhEQjcwMEE4NDYzQyAvKiBFdmVudFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBOEQyMTQyMjU3OERBMDAwQTg0NjND
IC8qIEV2ZW50UmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRTRBQkFCREQyMzYwODhGRTAwRkE0MzQ1IC8qIFJlbmRlckJsb2NrRmxvd0xp
bmVMYXlvdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0QUJBQkRCMjM2MDg4RkQwMEZBNDM0NSAvKiBSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0Lmgg
Ki87IH07CiAJCUU0QUJBQkU0MjM2MUEzMjkwMEZBNDM0NSAvKiBQcm9wZXJ0eUNhc2NhZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUJBQkUyMjM2
MUEzMjkwMEZBNDM0NSAvKiBQcm9wZXJ0eUNhc2NhZGUuaCAqLzsgfTsKIAkJRTRBQkFCRjMyMzY4
Qjk1OTAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEFCQUJGMjIzNjhCOTU4MDBGQTQzNDUgLyogU3R5
bGVCdWlsZGVyU3RhdGUuaCAqLzsgfTsKIAkJRTRBQkFCRjUyMzY4QzZFRjAwRkE0MzQ1IC8qIENh
c2NhZGVMZXZlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRBQkFCRjQyMzY4QzZFRjAwRkE0MzQ1IC8qIENhc2NhZGVMZXZlbC5oICovOyB9OwpAQCAt
MTUyMTMsNiArMTUyMTQsOCBAQAogCQlFNEE4MTRERjFDNzMzOEVCMDBCRjg1QUMgLyogSWRDaGFu
Z2VJbnZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRDaGFu
Z2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBOEQyMTQy
MjU3OERBMDAwQTg0NjNDIC8qIEV2ZW50UmVnaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEV2ZW50UmVnaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
QThEMjE1MjI1NzhEQTAwMEE4NDYzQyAvKiBFdmVudFJlZ2lvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudFJlZ2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUU0QUJBQkRCMjM2MDg4RkQwMEZBNDM0NSAvKiBSZW5kZXJCbG9ja0Zsb3dM
aW5lTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckJsb2Nr
Rmxvd0xpbmVMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBQkFCREUy
MzYwODkzRDAwRkE0MzQ1IC8qIFJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QUJBQkUyMjM2MUEzMjkwMEZBNDM0
NSAvKiBQcm9wZXJ0eUNhc2NhZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHJvcGVydHlDYXNjYWRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QUJBQkU1
MjM2MUEzNDIwMEZBNDM0NSAvKiBQcm9wZXJ0eUNhc2NhZGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUHJvcGVydHlDYXNjYWRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRB
QkFCRjAyMzY4QjkxODAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlclN0YXRlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFN0eWxlQnVpbGRlclN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE2NjM1LDYgKzE2NjM4LDggQEAKIAkJCQkxMTVDQTgzMDIzMzI4QjFFMDBGRDNCMDgg
LyogTGF5b3V0VW5pdHMuY3BwICovLAogCQkJCTZGNzM5MThDMjEwNkNFREQwMDZBRjI2MiAvKiBM
YXlvdXRVbml0cy5oICovLAogCQkJCTZGRTdBQTI2MjFDMzdCNjMwMDI5NkRDRCAvKiBNYXJnaW5U
eXBlcy5oICovLAorCQkJCUU0QUJBQkRCMjM2MDg4RkQwMEZBNDM0NSAvKiBSZW5kZXJCbG9ja0Zs
b3dMaW5lTGF5b3V0LmggKi8sCisJCQkJRTRBQkFCREUyMzYwODkzRDAwRkE0MzQ1IC8qIFJlbmRl
ckJsb2NrRmxvd0xpbmVMYXlvdXQuY3BwICovLAogCQkJCTExRkYwMkQ1MjBCQTNDODEwMDgzRjI1
QiAvKiBWZXJpZmljYXRpb24uY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBsYXlvdXQ7CkBAIC0z
MjQ1Nyw2ICszMjQ2Miw3IEBACiAJCQkJMDg4QzJGN0ExMjM5MDA4MTAwM0Q2NUNFIC8qIFNWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODEwOTNEQzEyNTVGMEU3
MDBFRDlEMjkgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwODE2NjhEQTEyNTYwM0Q1MDA2RjI1REUgLyogU1ZHVGV4dExheW91dEVuZ2luZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTRBQkFCREQyMzYwODhGRTAwRkE0MzQ1IC8qIFJlbmRlckJs
b2NrRmxvd0xpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MEU0OTI2MTI1NUYzQkQw
MEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA4MEU0OTI4MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2lu
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhGMEJGQzYxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1Rl
eHRNZXRyaWNzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uNzRhYjhhNWZiNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5jcHAKQEAgLTAsMCArMSwxMTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVuZGVyQmxv
Y2tGbG93TGluZUxheW91dC5oIgorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRF
WFQpCisKKyNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCisjaW5jbHVkZSAiRGlzcGxheVBhaW50ZXIu
aCIKKyNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKKyNpbmNsdWRlICJJbnZhbGlk
YXRpb25TdGF0ZS5oIgorI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKKyNpbmNsdWRlICJMYXlv
dXRUcmVlQnVpbGRlci5oIgorI2luY2x1ZGUgIlBhaW50SW5mby5oIgorI2luY2x1ZGUgIlJlbmRl
ckJsb2NrRmxvdy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNs
dWRlICJTaW1wbGVMaW5lTGF5b3V0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFj
ZSBMYXlvdXQgeworCitSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0OjpSZW5kZXJCbG9ja0Zsb3dM
aW5lTGF5b3V0KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKKyAgICA6IG1fZmxvdyhmbG93
KQoreworICAgIG1fdHJlZUNvbnRlbnQgPSBUcmVlQnVpbGRlcjo6YnVpbGRMYXlvdXRUcmVlKGZs
b3cpOworfQorCitSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0Ojp+UmVuZGVyQmxvY2tGbG93TGlu
ZUxheW91dCgpID0gZGVmYXVsdDsKKworYm9vbCBSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0Ojpj
YW5Vc2VGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93KQoreworICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sYXlvdXRGb3JtYXR0aW5nQ29udGV4
dFJlbmRlclRyZWVJbnRlZ3JhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gSW5pdGlhbGx5IG9ubHkgYSBzdWJzZXQgb2YgU0xMIGZlYXR1cmVzIGlzIHN1cHBv
cnRlZC4KKyAgICBpZiAoIVNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvcihmbG93KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGZsb3cuc3R5bGUoKS50ZXh0VHJhbnNmb3JtKCkg
PT0gVGV4dFRyYW5zZm9ybTo6Q2FwaXRhbGl6ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKGZsb3cuZnJhZ21lbnRlZEZsb3dTdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6Tm90SW5z
aWRlRnJhZ21lbnRlZEZsb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0
cnVlOworfQorCit2b2lkIFJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ6OmxheW91dCgpCit7Cisg
ICAgaWYgKCFtX2xheW91dFN0YXRlKQorICAgICAgICBtX2xheW91dFN0YXRlID0gbWFrZVVuaXF1
ZTxMYXlvdXRTdGF0ZT4oKm1fdHJlZUNvbnRlbnQpOworCisgICAgYXV0byYgcm9vdENvbnRhaW5l
ciA9IG1fbGF5b3V0U3RhdGUtPnJvb3QoKTsKKworICAgIEludmFsaWRhdGlvblN0YXRlIGludmFs
aWRhdGlvblN0YXRlOworICAgIGludmFsaWRhdGlvblN0YXRlLm1hcmtOZWVkc1VwZGF0ZShyb290
Q29udGFpbmVyKTsKKworICAgIExheW91dENvbnRleHQgbGF5b3V0Q29udGV4dCgqbV9sYXlvdXRT
dGF0ZSk7CisgICAgbGF5b3V0Q29udGV4dC5sYXlvdXQobV9mbG93LmNvbnRlbnRTaXplKCksIGlu
dmFsaWRhdGlvblN0YXRlKTsKKworICAgIGF1dG8mIGxpbmVCb3hlcyA9IGRvd25jYXN0PElubGlu
ZUZvcm1hdHRpbmdTdGF0ZT4obV9sYXlvdXRTdGF0ZS0+ZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3Rh
dGUocm9vdENvbnRhaW5lcikpLmxpbmVCb3hlcygpOworICAgIGF1dG8gaGVpZ2h0ID0gbGluZUJv
eGVzLmxhc3QoKS0+bG9naWNhbEJvdHRvbSgpOworCisgICAgYXV0byYgZGlzcGxheUJveCA9IG1f
bGF5b3V0U3RhdGUtPmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocm9vdENvbnRhaW5lcik7CisgICAg
ZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KGhlaWdodCk7Cit9CisKK0xheW91dFVuaXQg
UmVuZGVyQmxvY2tGbG93TGluZUxheW91dDo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9sYXlvdXRTdGF0ZS0+ZGlzcGxheUJveEZvckxheW91dEJveChtX2xheW91dFN0YXRlLT5yb290
KCkpLmNvbnRlbnRCb3hIZWlnaHQoKTsKK30KKwordm9pZCBSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5
b3V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KQoreworICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0
KCk7CisKKyAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOworICAgIGdyYXBoaWNzQ29udGV4dC50
cmFuc2xhdGUocGFpbnRPZmZzZXQpOworCisgICAgRGlzcGxheTo6UGFpbnRlcjo6cGFpbnRJbmxp
bmVGbG93KCptX2xheW91dFN0YXRlLCBwYWludEluZm8uY29udGV4dCgpKTsKKworICAgIGdyYXBo
aWNzQ29udGV4dC5yZXN0b3JlKCk7Cit9CisKK30KK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L1JlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2YxZmYyNDliYzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5oCkBAIC0w
LDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShMQVlP
VVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBSZW5kZXJC
bG9ja0Zsb3c7CitzdHJ1Y3QgUGFpbnRJbmZvOworCituYW1lc3BhY2UgTGF5b3V0IHsKKworY2xh
c3MgTGF5b3V0VHJlZUNvbnRlbnQ7CitjbGFzcyBMYXlvdXRTdGF0ZTsKKworY2xhc3MgUmVuZGVy
QmxvY2tGbG93TGluZUxheW91dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgUmVuZGVyQmxvY2tGbG93TGluZUxheW91dChjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
KTsKKyAgICB+UmVuZGVyQmxvY2tGbG93TGluZUxheW91dCgpOworCisgICAgc3RhdGljIGJvb2wg
Y2FuVXNlRm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYpOworCisgICAgdm9pZCBsYXlvdXQoKTsK
KyAgICBMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0OworCisgICAgdm9pZCBwYWludChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpOworCitwcml2YXRlOgorICAgIGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgbV9mbG93OworICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXlvdXRU
cmVlQ29udGVudD4gbV90cmVlQ29udGVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0U3Rh
dGU+IG1fbGF5b3V0U3RhdGU7Cit9OworCit9Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKaW5kZXggMWRj
YWYzNGU3YmMuLjI0MmE4ZWExYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKQEAgLTE5Niw2ICsxOTYsMTcgQEAgdm9p
ZCBQYWludGVyOjpwYWludChjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
R3JhcGhpY3NDb250ZXh0JiBjb24KICAgICB9CiB9CiAKK3ZvaWQgUGFpbnRlcjo6cGFpbnRJbmxp
bmVGbG93KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCit7CisgICAgYXV0byYgbGF5b3V0Um9vdCA9IGxheW91dFN0YXRlLnJv
b3QoKTsKKworICAgIEFTU0VSVChsYXlvdXRSb290LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQoKSk7CisKKyAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxh
eUJveEZvckxheW91dEJveChsYXlvdXRSb290KTsKKworICAgIHBhaW50SW5saW5lQ29udGVudChj
b250ZXh0LCBkaXNwbGF5Qm94LCBkb3duY2FzdDxMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0
ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUobGF5b3V0Um9vdCkpKTsK
K30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheVBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5UGFpbnRlci5oCmluZGV4IGUyYjJiZjRlNGRjLi4xNzVmMThjZTVmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmgKQEAg
LTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIERpc3BsYXkgewogY2xhc3MgUGFpbnRlciB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgcGFpbnQoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYsIEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CisgICAgc3RhdGljIHZv
aWQgcGFpbnRJbmxpbmVGbG93KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBHcmFwaGljc0Nv
bnRleHQmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnZh
bGlkYXRpb24vSW52YWxpZGF0aW9uU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0ZS5jcHAKaW5kZXggYTlmYjllMGZkMDkuLjhlYWJj
OTUwNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW52YWxpZGF0aW9uL0lu
dmFsaWRhdGlvblN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW52YWxpZGF0
aW9uL0ludmFsaWRhdGlvblN0YXRlLmNwcApAQCAtNDEsOCArNDEsMTAgQEAgSW52YWxpZGF0aW9u
U3RhdGU6OkludmFsaWRhdGlvblN0YXRlKCkKIAogdm9pZCBJbnZhbGlkYXRpb25TdGF0ZTo6bWFy
a05lZWRzVXBkYXRlKGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewotICAgIC8vIFdlIG5ldmVyIGxh
eSBvdXQgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jay4gSXQgYWx3YXlzIGhhcyBwcmUtZGV0
ZXJtaW5lZCBnZW9tZXRyeS4KLSAgICBBU1NFUlQoIWxheW91dEJveC5pc0luaXRpYWxDb250YWlu
aW5nQmxvY2soKSk7CisgICAgaWYgKGxheW91dEJveC5pc0luaXRpYWxDb250YWluaW5nQmxvY2so
KSkgeworICAgICAgICBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdHMuYWRkKGRvd25jYXN0PENvbnRh
aW5lcj4obGF5b3V0Qm94KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgLy8gRklYTUU6
IFRoaXMgaXMganVzdCBhIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uLgogICAgIG1fZm9ybWF0
dGluZ0NvbnRleHRSb290cy5hZGQoJmxheW91dEJveC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRU
cmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRU
cmVlQnVpbGRlci5jcHAKaW5kZXggMTJmNTc4YjRkMTYuLjZjYjRmYjc1MDRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIu
Y3BwCkBAIC0xMzgsNiArMTM4LDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxMYXlvdXQ6OkxheW91dFRy
ZWVDb250ZW50PiBUcmVlQnVpbGRlcjo6YnVpbGRMYXlvdXRUcmVlKGNvbnN0IFJlCiAgICAgcmV0
dXJuIGxheW91dFRyZWVDb250ZW50OwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0OjpMYXlv
dXRUcmVlQ29udGVudD4gVHJlZUJ1aWxkZXI6OmJ1aWxkTGF5b3V0VHJlZShjb25zdCBSZW5kZXJC
bG9ja0Zsb3cmIHJlbmRlckJsb2NrRmxvdykKK3sKKyAgICBQaGFzZVNjb3BlIHNjb3BlKFBoYXNl
OjpUeXBlOjpUcmVlQnVpbGRpbmcpOworCisgICAgYXV0byBzdHlsZSA9IFJlbmRlclN0eWxlOjpj
bG9uZShyZW5kZXJCbG9ja0Zsb3cuc3R5bGUoKSk7CisgICAgYXV0byBsYXlvdXRUcmVlQ29udGVu
dCA9IG1ha2VVbmlxdWU8TGF5b3V0VHJlZUNvbnRlbnQ+KHJlbmRlckJsb2NrRmxvdywgbWFrZVVu
aXF1ZTxDb250YWluZXI+KFdURjo6bnVsbG9wdCwgV1RGTW92ZShzdHlsZSkpKTsKKyAgICBUcmVl
QnVpbGRlcigqbGF5b3V0VHJlZUNvbnRlbnQpLmJ1aWxkVHJlZSgpOworICAgIHJldHVybiBsYXlv
dXRUcmVlQ29udGVudDsKK30KKwogVHJlZUJ1aWxkZXI6OlRyZWVCdWlsZGVyKExheW91dFRyZWVD
b250ZW50JiBsYXlvdXRUcmVlQ29udGVudCkKICAgICA6IG1fbGF5b3V0VHJlZUNvbnRlbnQobGF5
b3V0VHJlZUNvbnRlbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaAppbmRleCA3ZDFhMjI3ZWZmNS4uYzQ4NDc4MTlkNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVC
dWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJl
ZUJ1aWxkZXIuaApAQCAtMzIsNiArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFJlbmRlckJsb2NrRmxvdzsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJP
YmplY3Q7CiBjbGFzcyBSZW5kZXJUYWJsZTsKQEAgLTY1LDYgKzY2LDcgQEAgcHJpdmF0ZToKIGNs
YXNzIFRyZWVCdWlsZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExh
eW91dDo6TGF5b3V0VHJlZUNvbnRlbnQ+IGJ1aWxkTGF5b3V0VHJlZShjb25zdCBSZW5kZXJWaWV3
Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXlvdXQ6OkxheW91dFRyZWVDb250ZW50
PiBidWlsZExheW91dFRyZWUoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CiAKIHByaXZhdGU6CiAg
ICAgVHJlZUJ1aWxkZXIoTGF5b3V0VHJlZUNvbnRlbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5oCmluZGV4IDYzYmI3ZWI0YTI4Li4w
MTUwY2RlZTE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0
dGluZy9UYWJsZUdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0
aW5nL1RhYmxlR3JpZC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZP
Uk1BVFRJTkdfQ09OVEVYVCkKIAorI2luY2x1ZGUgIkZvcm1hdHRpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSW50UG9pbnRIYXNoLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oCmluZGV4IDliZTNiYzVkOTY3Li40Zjg5ODU5OTNiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTE4OCw2ICsxODgsOSBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAgdm9pZCBz
ZXRMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9sYXlv
dXRGb3JtYXR0aW5nQ29udGV4dEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIGxheW91
dEZvcm1hdHRpbmdDb250ZXh0RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHRFbmFibGVkOyB9CisgICAgCisgICAgdm9pZCBzZXRMYXlvdXRGb3JtYXR0aW5n
Q29udGV4dFJlbmRlclRyZWVJbnRlZ3JhdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9s
YXlvdXRGb3JtYXR0aW5nQ29udGV4dFJlbmRlclRyZWVJbnRlZ3JhdGlvbkVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KKyAgICBib29sIGxheW91dEZvcm1hdHRpbmdDb250ZXh0UmVuZGVyVHJlZUludGVn
cmF0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRS
ZW5kZXJUcmVlSW50ZWdyYXRpb25FbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQpAQCAtNDQzLDYgKzQ0Niw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUo
TEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICBib29sIG1fbGF5b3V0Rm9ybWF0dGluZ0Nv
bnRleHRFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbGF5b3V0Rm9ybWF0dGluZ0NvbnRl
eHRSZW5kZXJUcmVlSW50ZWdyYXRpb25FbmFibGVkIHsgZmFsc2UgfTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwCmluZGV4IGNjYWY3ODIwZDllLi4wMWFmYTVlNTYwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVwYWludGVy
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvd0xpbmVM
YXlvdXQuaCIKICNpbmNsdWRlICJSZW5kZXJDb21iaW5lVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRl
ckZsZXhpYmxlQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCkBAIC02NjcsMTQgKzY2
OCwzMSBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0QmxvY2tDaGlsZHJlbihib29sIHJl
bGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIG1heAogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6
bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0JiBy
ZXBhaW50TG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgcmVwYWludExvZ2ljYWxCb3R0b20pCiB7Cisg
ICAgYXV0byBjb21wdXRlTGluZUxheW91dFBhdGggPSBbJl0geworI2lmIEVOQUJMRShMQVlPVVRf
Rk9STUFUVElOR19DT05URVhUKQorICAgICAgICBpZiAoTGF5b3V0OjpSZW5kZXJCbG9ja0Zsb3dM
aW5lTGF5b3V0OjpjYW5Vc2VGb3IoKnRoaXMpKQorICAgICAgICAgICAgcmV0dXJuIExGQ1BhdGg7
CisjZW5kaWYKKyAgICAgICAgaWYgKFNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvcigqdGhpcykp
CisgICAgICAgICAgICByZXR1cm4gU2ltcGxlTGluZXNQYXRoOworICAgICAgICByZXR1cm4gTGlu
ZUJveGVzUGF0aDsKKyAgICB9OworCiAgICAgaWYgKGxpbmVMYXlvdXRQYXRoKCkgPT0gVW5kZXRl
cm1pbmVkUGF0aCkKLSAgICAgICAgc2V0TGluZUxheW91dFBhdGgoU2ltcGxlTGluZUxheW91dDo6
Y2FuVXNlRm9yKCp0aGlzKSA/IFNpbXBsZUxpbmVzUGF0aCA6IExpbmVCb3hlc1BhdGgpOworICAg
ICAgICBzZXRMaW5lTGF5b3V0UGF0aChjb21wdXRlTGluZUxheW91dFBhdGgoKSk7CiAKICAgICBp
ZiAobGluZUxheW91dFBhdGgoKSA9PSBTaW1wbGVMaW5lc1BhdGgpIHsKICAgICAgICAgbGF5b3V0
U2ltcGxlTGluZXMocmVsYXlvdXRDaGlsZHJlbiwgcmVwYWludExvZ2ljYWxUb3AsIHJlcGFpbnRM
b2dpY2FsQm90dG9tKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIEVOQUJMRShMQVlP
VVRfRk9STUFUVElOR19DT05URVhUKQorICAgIGlmIChsaW5lTGF5b3V0UGF0aCgpID09IExGQ1Bh
dGgpIHsKKyAgICAgICAgbGF5b3V0TEZDTGluZXMocmVsYXlvdXRDaGlsZHJlbiwgcmVwYWludExv
Z2ljYWxUb3AsIHJlcGFpbnRMb2dpY2FsQm90dG9tKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZgorCiAgICAgaWYgKCFjb21wbGV4TGluZUxheW91dCgpKQogICAgICAgICBtX2xpbmVM
YXlvdXQgPSBtYWtlVW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CiAKQEAgLTI5NTcs
NyArMjk3NSw4IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGRPdmVyZmxvd0Zyb21JbmxpbmVD
aGlsZHJlbigpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb21wbGV4TGluZUxheW91
dCgpLT5hZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJlbigpOworICAgIGlmIChjb21wbGV4TGlu
ZUxheW91dCgpKQorICAgICAgICBjb21wbGV4TGluZUxheW91dCgpLT5hZGRPdmVyZmxvd0Zyb21J
bmxpbmVDaGlsZHJlbigpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0Rm9yQm9y
ZGVyRml0KExheW91dFVuaXQgeCwgTGF5b3V0VW5pdCYgbGVmdCwgTGF5b3V0VW5pdCYgcmlnaHQp
IGNvbnN0CkBAIC0zNTM1LDYgKzM1NTQsMTMgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnBhaW50
SW5saW5lQ2hpbGRyZW4oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW4KIHsK
ICAgICBBU1NFUlQoY2hpbGRyZW5JbmxpbmUoKSk7CiAKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1B
VFRJTkdfQ09OVEVYVCkKKyAgICBpZiAobGZjTGluZUxheW91dCgpKSB7CisgICAgICAgIGxmY0xp
bmVMYXlvdXQoKS0+cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChhdXRvIHNpbXBsZUxpbmVMYXlvdXQgPSB0aGlz
LT5zaW1wbGVMaW5lTGF5b3V0KCkpIHsKICAgICAgICAgU2ltcGxlTGluZUxheW91dDo6cGFpbnRG
bG93KCp0aGlzLCAqc2ltcGxlTGluZUxheW91dCwgcGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTM2MDcsNiArMzYzMyw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93
OjppbnZhbGlkYXRlTGluZUxheW91dFBhdGgoKQogICAgICAgICBBU1NFUlQoIXNpbXBsZUxpbmVM
YXlvdXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIExpbmVCb3hlc1BhdGg6CisgICAg
Y2FzZSBMRkNQYXRoOgogICAgICAgICBBU1NFUlQoIXNpbXBsZUxpbmVMYXlvdXQoKSk7CiAgICAg
ICAgIHNldExpbmVMYXlvdXRQYXRoKFVuZGV0ZXJtaW5lZFBhdGgpOwogICAgICAgICByZXR1cm47
CkBAIC0zNjQxLDE2ICszNjY4LDM5IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRTaW1w
bGVMaW5lcyhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJlcGFpCiAgICAgICAg
IHJlbmRlcmVyLmNsZWFyTmVlZHNMYXlvdXQoKTsKIAogICAgIExheW91dFVuaXQgbGluZUxheW91
dEhlaWdodCA9IFNpbXBsZUxpbmVMYXlvdXQ6OmNvbXB1dGVGbG93SGVpZ2h0KCp0aGlzLCBzaW1w
bGVMaW5lTGF5b3V0KTsKKwogICAgIExheW91dFVuaXQgbGluZUxheW91dFRvcCA9IGJvcmRlckFu
ZFBhZGRpbmdCZWZvcmUoKTsKICAgICByZXBhaW50TG9naWNhbFRvcCA9IGxpbmVMYXlvdXRUb3A7
CiAgICAgcmVwYWludExvZ2ljYWxCb3R0b20gPSBuZWVkc0xheW91dCA/IHJlcGFpbnRMb2dpY2Fs
VG9wICsgbGluZUxheW91dEhlaWdodCArIGJvcmRlckFuZFBhZGRpbmdBZnRlcigpIDogcmVwYWlu
dExvZ2ljYWxUb3A7CiAgICAgc2V0TG9naWNhbEhlaWdodChsaW5lTGF5b3V0VG9wICsgbGluZUxh
eW91dEhlaWdodCArIGJvcmRlckFuZFBhZGRpbmdBZnRlcigpKTsKIH0KIAotdm9pZCBSZW5kZXJC
bG9ja0Zsb3c6OmRlbGV0ZUxpbmVCb3hlc0JlZm9yZVNpbXBsZUxpbmVMYXlvdXQoKQorI2lmIEVO
QUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQordm9pZCBSZW5kZXJCbG9ja0Zsb3c6Omxh
eW91dExGQ0xpbmVzKGJvb2wsIExheW91dFVuaXQmIHJlcGFpbnRMb2dpY2FsVG9wLCBMYXlvdXRV
bml0JiByZXBhaW50TG9naWNhbEJvdHRvbSkKIHsKLSAgICBBU1NFUlQobGluZUxheW91dFBhdGgo
KSA9PSBTaW1wbGVMaW5lc1BhdGgpOworICAgIGlmICghbGZjTGluZUxheW91dCgpKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBSZW5hbWUgb3IgcmVmYWN0b3IuCisgICAgICAgIGRlbGV0ZUxpbmVCb3hl
c0JlZm9yZVNpbXBsZUxpbmVMYXlvdXQoKTsKKyAgICAgICAgbV9saW5lTGF5b3V0ID0gbWFrZVVu
aXF1ZTxMYXlvdXQ6OlJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ+KCp0aGlzKTsKKyAgICB9CisK
KyAgICBhdXRvJiBsZmNMaW5lTGF5b3V0ID0gKnRoaXMtPmxmY0xpbmVMYXlvdXQoKTsKKworICAg
IGZvciAoYXV0byYgcmVuZGVyZXIgOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJPYmplY3Q+KCp0aGlz
KSkKKyAgICAgICAgcmVuZGVyZXIuY2xlYXJOZWVkc0xheW91dCgpOworCisgICAgbGZjTGluZUxh
eW91dC5sYXlvdXQoKTsKKworICAgIExheW91dFVuaXQgbGluZUxheW91dEhlaWdodCA9IGxmY0xp
bmVMYXlvdXQuaGVpZ2h0KCk7CisgICAgTGF5b3V0VW5pdCBsaW5lTGF5b3V0VG9wID0gYm9yZGVy
QW5kUGFkZGluZ0JlZm9yZSgpOworICAgIHJlcGFpbnRMb2dpY2FsVG9wID0gbGluZUxheW91dFRv
cDsKKyAgICByZXBhaW50TG9naWNhbEJvdHRvbSA9IHJlcGFpbnRMb2dpY2FsVG9wICsgbGluZUxh
eW91dEhlaWdodCArIGJvcmRlckFuZFBhZGRpbmdBZnRlcigpOworICAgIHNldExvZ2ljYWxIZWln
aHQobGluZUxheW91dFRvcCArIGxpbmVMYXlvdXRIZWlnaHQgKyBib3JkZXJBbmRQYWRkaW5nQWZ0
ZXIoKSk7Cit9CisjZW5kaWYKIAordm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmRlbGV0ZUxpbmVCb3hl
c0JlZm9yZVNpbXBsZUxpbmVMYXlvdXQoKQorewogICAgIGlmIChjb21wbGV4TGluZUxheW91dCgp
KQogICAgICAgICBjb21wbGV4TGluZUxheW91dCgpLT5saW5lQm94ZXMoKS5kZWxldGVMaW5lQm94
ZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCmluZGV4
IDk4N2VkZjBmNGUyLi45NGViZTE0ZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuaApAQCAtMzcsNiArMzcsMTIgQEAgY2xhc3MgTGluZUJyZWFrZXI7CiBj
bGFzcyBSZW5kZXJNdWx0aUNvbHVtbkZsb3c7CiBjbGFzcyBSZW5kZXJSdWJ5UnVuOwogCisjaWYg
RU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCituYW1lc3BhY2UgTGF5b3V0IHsKK2Ns
YXNzIFJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShU
RVhUX0FVVE9TSVpJTkcpCiBlbnVtIExpbmVDb3VudCB7CiAgICAgTk9UX1NFVCA9IDAsIE5PX0xJ
TkUgPSAxLCBPTkVfTElORSA9IDIsIE1VTFRJX0xJTkUgPSAzCkBAIC0zMzgsNyArMzQ0LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzTGluZXMoKSBjb25zdDsKICAgICB2b2lkIGludmFsaWRhdGVM
aW5lTGF5b3V0UGF0aCgpIGZpbmFsOwogCi0gICAgZW51bSBMaW5lTGF5b3V0UGF0aCB7IFVuZGV0
ZXJtaW5lZFBhdGggPSAwLCBTaW1wbGVMaW5lc1BhdGgsIExpbmVCb3hlc1BhdGgsIEZvcmNlTGlu
ZUJveGVzUGF0aCB9OworICAgIGVudW0gTGluZUxheW91dFBhdGggeyBVbmRldGVybWluZWRQYXRo
ID0gMCwgU2ltcGxlTGluZXNQYXRoLCBMaW5lQm94ZXNQYXRoLCBMRkNQYXRoLCBGb3JjZUxpbmVC
b3hlc1BhdGggfTsKICAgICBMaW5lTGF5b3V0UGF0aCBsaW5lTGF5b3V0UGF0aCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PExpbmVMYXlvdXRQYXRoPihyZW5kZXJCbG9ja0Zsb3dMaW5lTGF5
b3V0UGF0aCgpKTsgfQogICAgIHZvaWQgc2V0TGluZUxheW91dFBhdGgoTGluZUxheW91dFBhdGgg
cGF0aCkgeyBzZXRSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0UGF0aChwYXRoKTsgfQogCkBAIC0z
NTcsNiArMzYzLDEwIEBAIHB1YmxpYzoKICAgICBTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQqIHNp
bXBsZUxpbmVMYXlvdXQoKTsKICAgICBjb25zdCBDb21wbGV4TGluZUxheW91dCogY29tcGxleExp
bmVMYXlvdXQoKSBjb25zdDsKICAgICBDb21wbGV4TGluZUxheW91dCogY29tcGxleExpbmVMYXlv
dXQoKTsKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKyAgICBjb25zdCBM
YXlvdXQ6OlJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQqIGxmY0xpbmVMYXlvdXQoKSBjb25zdDsK
KyAgICBMYXlvdXQ6OlJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQqIGxmY0xpbmVMYXlvdXQoKTsK
KyNlbmRpZgogCiAgICAgdm9pZCBkZWxldGVMaW5lQm94ZXNCZWZvcmVTaW1wbGVMaW5lTGF5b3V0
KCk7CiAgICAgdm9pZCBlbnN1cmVMaW5lQm94ZXMoKTsKQEAgLTUzNiw2ICs1NDYsMTEgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgbGF5b3V0U2ltcGxlTGluZXMoYm9vbCByZWxheW91dENoaWxkcmVu
LCBMYXlvdXRVbml0JiByZXBhaW50TG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgcmVwYWludExvZ2lj
YWxCb3R0b20pOwogCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAg
Ym9vbCBoYXNMRkNMaW5lTGF5b3V0KCkgY29uc3Q7CisgICAgdm9pZCBsYXlvdXRMRkNMaW5lcyhi
b29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJlcGFpbnRMb2dpY2FsVG9wLCBMYXlv
dXRVbml0JiByZXBhaW50TG9naWNhbEJvdHRvbSk7CisjZW5kaWYKKwogICAgIHZvaWQgYWRqdXN0
SW50cmluc2ljTG9naWNhbFdpZHRoc0ZvckNvbHVtbnMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdp
ZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0
ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRo
LCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0OwogICAgIHZvaWQgYWRqdXN0SW5p
dGlhbExldHRlclBvc2l0aW9uKFJlbmRlckJveCYgY2hpbGRCb3gsIExheW91dFVuaXQmIGxvZ2lj
YWxUb3BPZmZzZXQsIExheW91dFVuaXQmIG1hcmdpbkJlZm9yZU9mZnNldCk7CkBAIC01NzMsNyAr
NTg4LDE0IEBAIHByb3RlY3RlZDoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2tGbG93
UmFyZURhdGE+IG1fcmFyZUJsb2NrRmxvd0RhdGE7CiAKIHByaXZhdGU6Ci0gICAgVmFyaWFudDxz
dGQ6Om51bGxwdHJfdCwgc3RkOjp1bmlxdWVfcHRyPENvbXBsZXhMaW5lTGF5b3V0PiwgUmVmPFNp
bXBsZUxpbmVMYXlvdXQ6OkxheW91dD4+IG1fbGluZUxheW91dDsKKyAgICBWYXJpYW50PAorICAg
ICAgICBzdGQ6Om51bGxwdHJfdCwKKyAgICAgICAgUmVmPFNpbXBsZUxpbmVMYXlvdXQ6OkxheW91
dD4sCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxMYXlvdXQ6OlJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ+LAorI2VuZGlmCisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDb21wbGV4TGluZUxheW91dD4KKyAgICA+IG1fbGluZUxh
eW91dDsKIAogICAgIGZyaWVuZCBjbGFzcyBMaW5lQnJlYWtlcjsKICAgICBmcmllbmQgY2xhc3Mg
TGluZVdpZHRoOyAvLyBOZWVkcyB0byBrbm93IEZsb2F0aW5nT2JqZWN0CkBAIC02MTAsNiArNjMy
LDIzIEBAIGlubGluZSBTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQqIFJlbmRlckJsb2NrRmxvdzo6
c2ltcGxlTGluZUxheW91dCgpCiAgICAgcmV0dXJuIGhhc1NpbXBsZUxpbmVMYXlvdXQoKSA/IFdU
Rjo6Z2V0PFJlZjxTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ+PihtX2xpbmVMYXlvdXQpLnB0cigp
IDogbnVsbHB0cjsKIH0KIAorI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQor
aW5saW5lIGJvb2wgUmVuZGVyQmxvY2tGbG93OjpoYXNMRkNMaW5lTGF5b3V0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0
OjpSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0Pj4obV9saW5lTGF5b3V0KTsKK30KKworaW5saW5l
IGNvbnN0IExheW91dDo6UmVuZGVyQmxvY2tGbG93TGluZUxheW91dCogUmVuZGVyQmxvY2tGbG93
OjpsZmNMaW5lTGF5b3V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzTEZDTGluZUxheW91dCgp
ID8gV1RGOjpnZXQ8c3RkOjp1bmlxdWVfcHRyPExheW91dDo6UmVuZGVyQmxvY2tGbG93TGluZUxh
eW91dD4+KG1fbGluZUxheW91dCkuZ2V0KCkgOiBudWxscHRyOworfQorCitpbmxpbmUgTGF5b3V0
OjpSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0KiBSZW5kZXJCbG9ja0Zsb3c6OmxmY0xpbmVMYXlv
dXQoKQoreworICAgIHJldHVybiBoYXNMRkNMaW5lTGF5b3V0KCkgPyBXVEY6OmdldDxzdGQ6OnVu
aXF1ZV9wdHI8TGF5b3V0OjpSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0Pj4obV9saW5lTGF5b3V0
KS5nZXQoKSA6IG51bGxwdHI7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyQmxvY2tGbG93LCBp
c1JlbmRlckJsb2NrRmxvdygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlNTc5YWViNTBjNS4uMTJlNzJlMDdmNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTEtMjYgIEFudHRpIEtvaXZpc3RvICA8
YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW1JlbmRlciB0cmVlXSBBZGQgTEZDIGxp
bmUgbGF5b3V0IHBhdGggdG8gUmVuZGVyQmxvY2tGbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6b3ZlcnJpZGVCb29sUHJlZmVyZW5jZUZv
clRlc3RSdW5uZXIpOgorCiAyMDE5LTExLTI1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gSW50ZXJuYWxGdW5jdGlvbiBzaG91bGQgYmUgbm9uLWRl
c3RydWN0aWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXgg
MThkYjhjZjQzZDYuLmRjN2VlYjBjYzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZl
cmVuY2VzLnlhbWwKQEAgLTE2NDIsOCArMTY0MiwxNyBAQCBEYXRhTGlzdEVsZW1lbnRFbmFibGVk
OgogTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRFbmFibGVkOgogICB0eXBlOiBib29sCiAgIGRlZmF1
bHRWYWx1ZTogZmFsc2UKLSAgaHVtYW5SZWFkYWJsZU5hbWU6ICJOZXh0LWdlbiBsYXlvdXQiCi0g
IGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkVuYWJsZSBuZXh0LWdlbiBsYXlvdXQiCisgIGh1
bWFuUmVhZGFibGVOYW1lOiAiTmV4dC1nZW5lcmF0aW9uIGxheW91dCIKKyAgaHVtYW5SZWFkYWJs
ZURlc2NyaXB0aW9uOiAiRW5hYmxlIG5leHQtZ2VuZXJhdGlvbiBsYXlvdXQiCisgIGNhdGVnb3J5
OiBpbnRlcm5hbAorICB3ZWJjb3JlQmluZGluZzogUnVudGltZUVuYWJsZWRGZWF0dXJlcworICBj
b25kaXRpb246IEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCitMYXlvdXRGb3Jt
YXR0aW5nQ29udGV4dFJlbmRlclRyZWVJbnRlZ3JhdGlvbkVuYWJsZWQ6CisgIHR5cGU6IGJvb2wK
KyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICBodW1hblJlYWRhYmxlTmFtZTogIk5leHQtZ2VuZXJh
dGlvbiBpbmxpbmUgbGF5b3V0IGluIHJlbmRlciB0cmVlIgorICBodW1hblJlYWRhYmxlRGVzY3Jp
cHRpb246ICJFbmFibGUgbmV4dC1nZW5lcmF0aW9uIGlubGluZSBsYXlvdXQgaW4gcmVuZGVyIHRy
ZWUiCiAgIGNhdGVnb3J5OiBpbnRlcm5hbAogICB3ZWJjb3JlQmluZGluZzogUnVudGltZUVuYWJs
ZWRGZWF0dXJlcwogICBjb25kaXRpb246IEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggMGIyNDlkNmU2ZTkuLjY5MTRkYjc2YWE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKQEAgLTI2MSw2ICsyNjEsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxl
OjpvdmVycmlkZUJvb2xQcmVmZXJlbmNlRm9yVGVzdFJ1bm5lcihXZWJQYWdlR3JvdXBQcm94eSog
cGFnZQogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogICAgIGlmIChwcmVm
ZXJlbmNlID09ICJMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEVuYWJsZWQiKQogICAgICAgICBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldExheW91dEZvcm1hdHRpbmdD
b250ZXh0RW5hYmxlZChlbmFibGVkKTsKKyAgICBpZiAocHJlZmVyZW5jZSA9PSAiTGF5b3V0Rm9y
bWF0dGluZ0NvbnRleHRSZW5kZXJUcmVlSW50ZWdyYXRpb25FbmFibGVkIikKKyAgICAgICAgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRMYXlvdXRGb3JtYXR0aW5n
Q29udGV4dFJlbmRlclRyZWVJbnRlZ3JhdGlvbkVuYWJsZWQoZW5hYmxlZCk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQo=
</data>
<flag name="review"
          id="400157"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384368</attachid>
            <date>2019-11-26 11:31:38 -0800</date>
            <delta_ts>2019-11-26 12:15:46 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-flow-2.patch</filename>
            <type>text/plain</type>
            <size>28051</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNDdhZjNhNWRkYS4uMzUyMmVlNWEwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxOS0xMS0yNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ11bUmVuZGVyIHRyZWVdIEFkZCBMRkMgbGluZSBsYXlvdXQgcGF0aCB0
byBSZW5kZXJCbG9ja0Zsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKwor
ICAgICAgICBBZGQgYSBiYXNpYyBMRkMgbGluZSBsYXlvdXQgaW1wbGVtZW50YXRpb24gZm9yIFJl
bmRlckJsb2NrRmxvdy4KKyAgICAgICAgSXQgY2FuIGxheW91dCBsaW5lcyBhbmQgZG8gc2ltcGxl
IHBhaW50aW5nIGJ1dCBkb2Vzbid0IGRvIGFueXRoaW5nIGVsc2UgKGxpa2UgaGl0IHRlc3Rpbmcp
IHlldC4KKworICAgICAgICBBZGQgYSBuZXcgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSZW5kZXJU
cmVlSW50ZWdyYXRpb25FbmFibGVkIGZlYXR1cmUgZmxhZywgZGVmYXVsdCB0byBmYWxzZS4KKwor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBsYXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSZW5kZXJCbG9ja0Zsb3dMaW5l
TGF5b3V0OjpSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6UmVuZGVyQmxvY2tGbG93TGluZUxheW91dDo6Y2FuVXNlRm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6UmVuZGVyQmxvY2tGbG93TGluZUxheW91dDo6bGF5b3V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6UmVuZGVyQmxvY2tGbG93TGluZUxheW91dDo6aGVpZ2h0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVuZGVyQmxvY2tGbG93TGluZUxheW91
dDo6cGFpbnQpOgorICAgICAgICAqIGxheW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0Lmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFp
bnRlci5oLgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpQYWludGVyOjpwYWludElubGluZUZsb3cpOgor
ICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5oOgorICAgICAgICAq
IGxheW91dC9pbnZhbGlkYXRpb24vSW52YWxpZGF0aW9uU3RhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpJbnZhbGlkYXRpb25TdGF0ZTo6bWFya05lZWRzVXBkYXRlKToKKyAgICAg
ICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpidWlsZExheW91dFRyZWUpOgorICAgICAgICAq
IGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmg6CisgICAgICAgICogcGFnZS9S
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzZXRMYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJlbmRlclRyZWVJbnRlZ3JhdGlv
bkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6bGF5
b3V0Rm9ybWF0dGluZ0NvbnRleHRSZW5kZXJUcmVlSW50ZWdyYXRpb25FbmFibGVkIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93OjphZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnBhaW50SW5saW5lQ2hpbGRyZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjppbnZhbGlkYXRlTGluZUxheW91dFBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRTaW1wbGVMaW5l
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExGQ0xpbmVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZGVsZXRlTGluZUJveGVzQmVmb3Jl
U2ltcGxlTGluZUxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpoYXNMRkNMaW5lTGF5b3V0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGZjTGluZUxheW91dCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxmY0xpbmVMYXlvdXQp
OgorICAgIAogMjAxOS0xMS0yNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRGVzdHJveSBsaW5lYm94IHRyZWUgZnJvbSBDb21wbGV4TGluZUxheW91dCBkZXN0
cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDZhMGQ0NmFjZjViLi5jYTA4Y2RiZDUxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTE0MjEsNiArMTQyMSw3IEBAIGxheW91dC9MYXlvdXRDb250ZXh0LmNwcAog
bGF5b3V0L0xheW91dFBoYXNlLmNwcAogbGF5b3V0L0xheW91dFN0YXRlLmNwcAogbGF5b3V0L0xh
eW91dFVuaXRzLmNwcAorbGF5b3V0L1JlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQuY3BwCiBsYXlv
dXQvVmVyaWZpY2F0aW9uLmNwcAogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmNwcAogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggN2UwMTBjMzE2YjkuLjFhNmYxODgwODE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODUx
LDYgKzQ4NTEsNyBAQAogCQlFNEE4MTREQTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hh
bmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uLmggKi87IH07CiAJCUU0QTgxNEUwMUM3MzM4RUIwMEJGODVBQyAvKiBJZENoYW5nZUlu
dmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRBODE0REYxQzczMzhFQjAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87
IH07CiAJCUU0QThEMjE2MjI1NzhEQjcwMEE4NDYzQyAvKiBFdmVudFJlZ2lvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBOEQyMTQyMjU3OERBMDAw
QTg0NjNDIC8qIEV2ZW50UmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRTRBQkFCREQyMzYwODhGRTAwRkE0MzQ1IC8qIFJlbmRlckJsb2Nr
Rmxvd0xpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0QUJBQkRCMjM2MDg4RkQwMEZBNDM0NSAvKiBSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5
b3V0LmggKi87IH07CiAJCUU0QUJBQkU0MjM2MUEzMjkwMEZBNDM0NSAvKiBQcm9wZXJ0eUNhc2Nh
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUJB
QkUyMjM2MUEzMjkwMEZBNDM0NSAvKiBQcm9wZXJ0eUNhc2NhZGUuaCAqLzsgfTsKIAkJRTRBQkFC
RjMyMzY4Qjk1OTAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlclN0YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEFCQUJGMjIzNjhCOTU4MDBGQTQzNDUg
LyogU3R5bGVCdWlsZGVyU3RhdGUuaCAqLzsgfTsKIAkJRTRBQkFCRjUyMzY4QzZFRjAwRkE0MzQ1
IC8qIENhc2NhZGVMZXZlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTRBQkFCRjQyMzY4QzZFRjAwRkE0MzQ1IC8qIENhc2NhZGVMZXZlbC5oICovOyB9
OwpAQCAtMTUyMTMsNiArMTUyMTQsOCBAQAogCQlFNEE4MTRERjFDNzMzOEVCMDBCRjg1QUMgLyog
SWRDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SWRDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRB
OEQyMTQyMjU3OERBMDAwQTg0NjNDIC8qIEV2ZW50UmVnaW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV2ZW50UmVnaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0QThEMjE1MjI1NzhEQTAwMEE4NDYzQyAvKiBFdmVudFJlZ2lvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudFJlZ2lvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUU0QUJBQkRCMjM2MDg4RkQwMEZBNDM0NSAvKiBSZW5kZXJCbG9j
a0Zsb3dMaW5lTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
ckJsb2NrRmxvd0xpbmVMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRB
QkFCREUyMzYwODkzRDAwRkE0MzQ1IC8qIFJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQmxvY2tGbG93TGluZUxh
eW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QUJBQkUyMjM2MUEzMjkw
MEZBNDM0NSAvKiBQcm9wZXJ0eUNhc2NhZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJvcGVydHlDYXNjYWRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
QUJBQkU1MjM2MUEzNDIwMEZBNDM0NSAvKiBQcm9wZXJ0eUNhc2NhZGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUHJvcGVydHlDYXNjYWRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTRBQkFCRjAyMzY4QjkxODAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlclN0YXRlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFN0eWxlQnVpbGRlclN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE2NjM1LDYgKzE2NjM4LDggQEAKIAkJCQkxMTVDQTgzMDIzMzI4QjFFMDBG
RDNCMDggLyogTGF5b3V0VW5pdHMuY3BwICovLAogCQkJCTZGNzM5MThDMjEwNkNFREQwMDZBRjI2
MiAvKiBMYXlvdXRVbml0cy5oICovLAogCQkJCTZGRTdBQTI2MjFDMzdCNjMwMDI5NkRDRCAvKiBN
YXJnaW5UeXBlcy5oICovLAorCQkJCUU0QUJBQkRCMjM2MDg4RkQwMEZBNDM0NSAvKiBSZW5kZXJC
bG9ja0Zsb3dMaW5lTGF5b3V0LmggKi8sCisJCQkJRTRBQkFCREUyMzYwODkzRDAwRkE0MzQ1IC8q
IFJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQuY3BwICovLAogCQkJCTExRkYwMkQ1MjBCQTNDODEw
MDgzRjI1QiAvKiBWZXJpZmljYXRpb24uY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBsYXlvdXQ7
CkBAIC0zMjQ1Nyw2ICszMjQ2Miw3IEBACiAJCQkJMDg4QzJGN0ExMjM5MDA4MTAwM0Q2NUNFIC8q
IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODEwOTNEQzEy
NTVGMEU3MDBFRDlEMjkgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwODE2NjhEQTEyNTYwM0Q1MDA2RjI1REUgLyogU1ZHVGV4dExheW91dEVu
Z2luZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTRBQkFCREQyMzYwODhGRTAwRkE0MzQ1IC8qIFJl
bmRlckJsb2NrRmxvd0xpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MEU0OTI2MTI1
NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA4MEU0OTI4MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5l
U3BhY2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhGMEJGQzYxMjU1QzUzQzAwMDc1MTg1IC8q
IFNWR1RleHRNZXRyaWNzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uZGRlYzE5MDM1ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5jcHAKQEAgLTAsMCAr
MSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVu
ZGVyQmxvY2tGbG93TGluZUxheW91dC5oIgorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCisKKyNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCisjaW5jbHVkZSAiRGlzcGxheVBh
aW50ZXIuaCIKKyNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKKyNpbmNsdWRlICJJ
bnZhbGlkYXRpb25TdGF0ZS5oIgorI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKKyNpbmNsdWRl
ICJMYXlvdXRUcmVlQnVpbGRlci5oIgorI2luY2x1ZGUgIlBhaW50SW5mby5oIgorI2luY2x1ZGUg
IlJlbmRlckJsb2NrRmxvdy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
KyNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBMYXlvdXQgeworCitSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0OjpSZW5kZXJCbG9j
a0Zsb3dMaW5lTGF5b3V0KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKKyAgICA6IG1fZmxv
dyhmbG93KQoreworICAgIG1fdHJlZUNvbnRlbnQgPSBUcmVlQnVpbGRlcjo6YnVpbGRMYXlvdXRU
cmVlKGZsb3cpOworfQorCitSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0Ojp+UmVuZGVyQmxvY2tG
bG93TGluZUxheW91dCgpID0gZGVmYXVsdDsKKworYm9vbCBSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5
b3V0OjpjYW5Vc2VGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93KQoreworICAgIGlmICgh
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sYXlvdXRGb3JtYXR0aW5n
Q29udGV4dFJlbmRlclRyZWVJbnRlZ3JhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gSW5pdGlhbGx5IG9ubHkgYSBzdWJzZXQgb2YgU0xMIGZlYXR1cmVzIGlz
IHN1cHBvcnRlZC4KKyAgICBpZiAoIVNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvcihmbG93KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGZsb3cuc3R5bGUoKS50ZXh0VHJhbnNm
b3JtKCkgPT0gVGV4dFRyYW5zZm9ybTo6Q2FwaXRhbGl6ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKGZsb3cuZnJhZ21lbnRlZEZsb3dTdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6
Tm90SW5zaWRlRnJhZ21lbnRlZEZsb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIFJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ6OmxheW91dCgp
Cit7CisgICAgaWYgKCFtX2xheW91dFN0YXRlKQorICAgICAgICBtX2xheW91dFN0YXRlID0gbWFr
ZVVuaXF1ZTxMYXlvdXRTdGF0ZT4oKm1fdHJlZUNvbnRlbnQpOworCisgICAgYXV0byYgcm9vdENv
bnRhaW5lciA9IG1fbGF5b3V0U3RhdGUtPnJvb3QoKTsKKworICAgIGlmICghcm9vdENvbnRhaW5l
ci5maXJzdENoaWxkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEludmFsaWRhdGlvblN0YXRl
IGludmFsaWRhdGlvblN0YXRlOworICAgIC8vIEZJWE1FOiBGaW5kIHNvbWUgYmV0dGVyIHdheSB0
byBkbyB0aGlzLgorICAgIGludmFsaWRhdGlvblN0YXRlLm1hcmtOZWVkc1VwZGF0ZSgqcm9vdENv
bnRhaW5lci5maXJzdENoaWxkKCkpOworCisgICAgTGF5b3V0Q29udGV4dCBsYXlvdXRDb250ZXh0
KCptX2xheW91dFN0YXRlKTsKKyAgICBsYXlvdXRDb250ZXh0LmxheW91dChtX2Zsb3cuY29udGVu
dFNpemUoKSwgaW52YWxpZGF0aW9uU3RhdGUpOworCisgICAgYXV0byYgbGluZUJveGVzID0gZG93
bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihtX2xheW91dFN0YXRlLT5lc3RhYmxpc2hlZEZv
cm1hdHRpbmdTdGF0ZShyb290Q29udGFpbmVyKSkubGluZUJveGVzKCk7CisgICAgYXV0byBoZWln
aHQgPSBsaW5lQm94ZXMubGFzdCgpLT5sb2dpY2FsQm90dG9tKCk7CisKKyAgICBhdXRvJiBkaXNw
bGF5Qm94ID0gbV9sYXlvdXRTdGF0ZS0+ZGlzcGxheUJveEZvckxheW91dEJveChyb290Q29udGFp
bmVyKTsKKyAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoaGVpZ2h0KTsKK30KKwor
TGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0Ojpjb250ZW50Qm94SGVpZ2h0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXlvdXRTdGF0ZSA/IG1fbGF5b3V0U3RhdGUtPmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3gobV9sYXlvdXRTdGF0ZS0+cm9vdCgpKS5jb250ZW50Qm94SGVpZ2h0
KCkgOiAwX2x1OworfQorCit2b2lkIFJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCit7Cisg
ICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKworICAgIGdy
YXBoaWNzQ29udGV4dC5zYXZlKCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZShwYWlu
dE9mZnNldCk7CisKKyAgICBEaXNwbGF5OjpQYWludGVyOjpwYWludElubGluZUZsb3coKm1fbGF5
b3V0U3RhdGUsIHBhaW50SW5mby5jb250ZXh0KCkpOworCisgICAgZ3JhcGhpY3NDb250ZXh0LnJl
c3RvcmUoKTsKK30KKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi5jOTcwNDE2ZDQwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmgKQEAgLTAsMCArMSw2NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCisKKyNpbmNsdWRlICJMYXlvdXRQb2ludC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIFJlbmRlckJsb2NrRmxvdzsKK3N0
cnVjdCBQYWludEluZm87CisKK25hbWVzcGFjZSBMYXlvdXQgeworCitjbGFzcyBMYXlvdXRUcmVl
Q29udGVudDsKK2NsYXNzIExheW91dFN0YXRlOworCitjbGFzcyBSZW5kZXJCbG9ja0Zsb3dMaW5l
TGF5b3V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBSZW5k
ZXJCbG9ja0Zsb3dMaW5lTGF5b3V0KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYpOworICAgIH5SZW5k
ZXJCbG9ja0Zsb3dMaW5lTGF5b3V0KCk7CisKKyAgICBzdGF0aWMgYm9vbCBjYW5Vc2VGb3IoY29u
c3QgUmVuZGVyQmxvY2tGbG93Jik7CisKKyAgICB2b2lkIGxheW91dCgpOworICAgIAorICAgIExh
eW91dFVuaXQgY29udGVudEJveEhlaWdodCgpIGNvbnN0OworCisgICAgdm9pZCBwYWludChQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpOworCitwcml2YXRlOgorICAg
IGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgbV9mbG93OworICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXlv
dXRUcmVlQ29udGVudD4gbV90cmVlQ29udGVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0
U3RhdGU+IG1fbGF5b3V0U3RhdGU7Cit9OworCit9Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKaW5kZXgg
MWRjYWYzNGU3YmMuLjI0MmE4ZWExYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKQEAgLTE5Niw2ICsxOTYsMTcgQEAg
dm9pZCBQYWludGVyOjpwYWludChjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgR3JhcGhpY3NDb250ZXh0JiBjb24KICAgICB9CiB9CiAKK3ZvaWQgUGFpbnRlcjo6cGFpbnRJ
bmxpbmVGbG93KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgYXV0byYgbGF5b3V0Um9vdCA9IGxheW91dFN0YXRl
LnJvb3QoKTsKKworICAgIEFTU0VSVChsYXlvdXRSb290LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQoKSk7CisKKyAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlz
cGxheUJveEZvckxheW91dEJveChsYXlvdXRSb290KTsKKworICAgIHBhaW50SW5saW5lQ29udGVu
dChjb250ZXh0LCBkaXNwbGF5Qm94LCBkb3duY2FzdDxMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdT
dGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUobGF5b3V0Um9vdCkp
KTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxh
eXRyZWUvRGlzcGxheVBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJl
ZS9EaXNwbGF5UGFpbnRlci5oCmluZGV4IGUyYjJiZjRlNGRjLi4xNzVmMThjZTVmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmgK
QEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIERpc3BsYXkgewogY2xhc3MgUGFpbnRlciB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcGFpbnQoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CisgICAgc3RhdGlj
IHZvaWQgcGFpbnRJbmxpbmVGbG93KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBHcmFwaGlj
c0NvbnRleHQmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCBjNWVjYzE2YTJiNi4uYmU3ODA5
NmIwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTE0MCw2ICsxNDAsMTYgQEAgc3RkOjp1bmlxdWVfcHRy
PExheW91dDo6TGF5b3V0VHJlZUNvbnRlbnQ+IFRyZWVCdWlsZGVyOjpidWlsZExheW91dFRyZWUo
Y29uc3QgUmUKICAgICByZXR1cm4gbGF5b3V0VHJlZUNvbnRlbnQ7CiB9CiAKK3N0ZDo6dW5pcXVl
X3B0cjxMYXlvdXQ6OkxheW91dFRyZWVDb250ZW50PiBUcmVlQnVpbGRlcjo6YnVpbGRMYXlvdXRU
cmVlKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgcmVuZGVyQmxvY2tGbG93KQoreworICAgIFBoYXNl
U2NvcGUgc2NvcGUoUGhhc2U6OlR5cGU6OlRyZWVCdWlsZGluZyk7CisKKyAgICBhdXRvIHN0eWxl
ID0gUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlckJsb2NrRmxvdy5zdHlsZSgpKTsKKyAgICBhdXRv
IGxheW91dFRyZWVDb250ZW50ID0gbWFrZVVuaXF1ZTxMYXlvdXRUcmVlQ29udGVudD4ocmVuZGVy
QmxvY2tGbG93LCBtYWtlVW5pcXVlPENvbnRhaW5lcj4oV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHN0
eWxlKSkpOworICAgIFRyZWVCdWlsZGVyKCpsYXlvdXRUcmVlQ29udGVudCkuYnVpbGRUcmVlKCk7
CisgICAgcmV0dXJuIGxheW91dFRyZWVDb250ZW50OworfQorCiBUcmVlQnVpbGRlcjo6VHJlZUJ1
aWxkZXIoTGF5b3V0VHJlZUNvbnRlbnQmIGxheW91dFRyZWVDb250ZW50KQogICAgIDogbV9sYXlv
dXRUcmVlQ29udGVudChsYXlvdXRUcmVlQ29udGVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5oCmluZGV4IDkzMTc2MTk3
MWIxLi4yYjE0ZGM2ZDJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5oCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVyQmxvY2tGbG93OwogY2xhc3MgUmVuZGVyRWxlbWVu
dDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclRhYmxlOwpAQCAtNzAsNiArNzEs
NyBAQCBwcml2YXRlOgogY2xhc3MgVHJlZUJ1aWxkZXIgewogcHVibGljOgogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TGF5b3V0OjpMYXlvdXRUcmVlQ29udGVudD4gYnVpbGRMYXlvdXRUcmVl
KGNvbnN0IFJlbmRlclZpZXcmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExheW91dDo6
TGF5b3V0VHJlZUNvbnRlbnQ+IGJ1aWxkTGF5b3V0VHJlZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
KTsKIAogcHJpdmF0ZToKICAgICBUcmVlQnVpbGRlcihMYXlvdXRUcmVlQ29udGVudCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmgKaW5k
ZXggNjNiYjdlYjRhMjguLjAxNTBjZGVlMTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lm
IEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCisjaW5jbHVkZSAiRm9ybWF0dGlu
Z0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRQb2ludEhhc2guaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggOWJlM2JjNWQ5NjcuLjRmODk4NTk5M2I2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApAQCAt
MTg4LDYgKzE4OCw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09O
VEVYVCkKICAgICB2b2lkIHNldExheW91dEZvcm1hdHRpbmdDb250ZXh0RW5hYmxlZChib29sIGlz
RW5hYmxlZCkgeyBtX2xheW91dEZvcm1hdHRpbmdDb250ZXh0RW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQogICAgIGJvb2wgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEVuYWJsZWQ7IH0KKyAgICAKKyAgICB2b2lkIHNl
dExheW91dEZvcm1hdHRpbmdDb250ZXh0UmVuZGVyVHJlZUludGVncmF0aW9uRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBtX2xheW91dEZvcm1hdHRpbmdDb250ZXh0UmVuZGVyVHJlZUludGVncmF0
aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgbGF5b3V0Rm9ybWF0dGluZ0NvbnRl
eHRSZW5kZXJUcmVlSW50ZWdyYXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRG
b3JtYXR0aW5nQ29udGV4dFJlbmRlclRyZWVJbnRlZ3JhdGlvbkVuYWJsZWQ7IH0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCkBAIC00NDMsNiArNDQ2LDcgQEAgcHJpdmF0
ZToKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogICAgIGJvb2wgbV9s
YXlvdXRGb3JtYXR0aW5nQ29udGV4dEVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9sYXlv
dXRGb3JtYXR0aW5nQ29udGV4dFJlbmRlclRyZWVJbnRlZ3JhdGlvbkVuYWJsZWQgeyBmYWxzZSB9
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggN2U3MDY1ODY3MDAuLmU2MWZj
MjZlMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNw
cApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNsdWRl
ICJMYXlvdXRSZXBhaW50ZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVu
ZGVyQmxvY2tGbG93TGluZUxheW91dC5oIgogI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyRmxleGlibGVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUu
aCIKQEAgLTY2NywxNCArNjY4LDMxIEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9j
a0NoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgbWF4CiAKIHZvaWQg
UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxpbmVDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRy
ZW4sIExheW91dFVuaXQmIHJlcGFpbnRMb2dpY2FsVG9wLCBMYXlvdXRVbml0JiByZXBhaW50TG9n
aWNhbEJvdHRvbSkKIHsKKyAgICBhdXRvIGNvbXB1dGVMaW5lTGF5b3V0UGF0aCA9IFsmXSB7Cisj
aWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgICAgIGlmIChMYXlvdXQ6
OlJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ6OmNhblVzZUZvcigqdGhpcykpCisgICAgICAgICAg
ICByZXR1cm4gTEZDUGF0aDsKKyNlbmRpZgorICAgICAgICBpZiAoU2ltcGxlTGluZUxheW91dDo6
Y2FuVXNlRm9yKCp0aGlzKSkKKyAgICAgICAgICAgIHJldHVybiBTaW1wbGVMaW5lc1BhdGg7Cisg
ICAgICAgIHJldHVybiBMaW5lQm94ZXNQYXRoOworICAgIH07CisKICAgICBpZiAobGluZUxheW91
dFBhdGgoKSA9PSBVbmRldGVybWluZWRQYXRoKQotICAgICAgICBzZXRMaW5lTGF5b3V0UGF0aChT
aW1wbGVMaW5lTGF5b3V0OjpjYW5Vc2VGb3IoKnRoaXMpID8gU2ltcGxlTGluZXNQYXRoIDogTGlu
ZUJveGVzUGF0aCk7CisgICAgICAgIHNldExpbmVMYXlvdXRQYXRoKGNvbXB1dGVMaW5lTGF5b3V0
UGF0aCgpKTsKIAogICAgIGlmIChsaW5lTGF5b3V0UGF0aCgpID09IFNpbXBsZUxpbmVzUGF0aCkg
ewogICAgICAgICBsYXlvdXRTaW1wbGVMaW5lcyhyZWxheW91dENoaWxkcmVuLCByZXBhaW50TG9n
aWNhbFRvcCwgcmVwYWludExvZ2ljYWxCb3R0b20pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgaWYgKGxpbmVMYXlv
dXRQYXRoKCkgPT0gTEZDUGF0aCkgeworICAgICAgICBsYXlvdXRMRkNMaW5lcyhyZWxheW91dENo
aWxkcmVuLCByZXBhaW50TG9naWNhbFRvcCwgcmVwYWludExvZ2ljYWxCb3R0b20pOworICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBpZiAoIWNvbXBsZXhMaW5lTGF5b3V0KCkp
CiAgICAgICAgIG1fbGluZUxheW91dCA9IG1ha2VVbmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0
aGlzKTsKIApAQCAtMzUzMCw2ICszNTQ4LDEzIEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpwYWlu
dElubGluZUNoaWxkcmVuKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2luCiB7
CiAgICAgQVNTRVJUKGNoaWxkcmVuSW5saW5lKCkpOwogCisjaWYgRU5BQkxFKExBWU9VVF9GT1JN
QVRUSU5HX0NPTlRFWFQpCisgICAgaWYgKGxmY0xpbmVMYXlvdXQoKSkgeworICAgICAgICBsZmNM
aW5lTGF5b3V0KCktPnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOworICAgICAgICByZXR1
cm47CisgICAgfQorI2VuZGlmCisKICAgICBpZiAoYXV0byBzaW1wbGVMaW5lTGF5b3V0ID0gdGhp
cy0+c2ltcGxlTGluZUxheW91dCgpKSB7CiAgICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50
RmxvdygqdGhpcywgKnNpbXBsZUxpbmVMYXlvdXQsIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwog
ICAgICAgICByZXR1cm47CkBAIC0zNjAyLDYgKzM2MjcsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxv
dzo6aW52YWxpZGF0ZUxpbmVMYXlvdXRQYXRoKCkKICAgICAgICAgQVNTRVJUKCFzaW1wbGVMaW5l
TGF5b3V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBMaW5lQm94ZXNQYXRoOgorICAg
IGNhc2UgTEZDUGF0aDoKICAgICAgICAgQVNTRVJUKCFzaW1wbGVMaW5lTGF5b3V0KCkpOwogICAg
ICAgICBzZXRMaW5lTGF5b3V0UGF0aChVbmRldGVybWluZWRQYXRoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzY0MSw2ICszNjY3LDI3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRTaW1w
bGVMaW5lcyhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJlcGFpCiAgICAgc2V0
TG9naWNhbEhlaWdodChsaW5lTGF5b3V0VG9wICsgbGluZUxheW91dEhlaWdodCArIGJvcmRlckFu
ZFBhZGRpbmdBZnRlcigpKTsKIH0KIAorI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05U
RVhUKQordm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExGQ0xpbmVzKGJvb2wsIExheW91dFVu
aXQmIHJlcGFpbnRMb2dpY2FsVG9wLCBMYXlvdXRVbml0JiByZXBhaW50TG9naWNhbEJvdHRvbSkK
K3sKKyAgICBpZiAoIWxmY0xpbmVMYXlvdXQoKSkKKyAgICAgICAgbV9saW5lTGF5b3V0ID0gbWFr
ZVVuaXF1ZTxMYXlvdXQ6OlJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXQ+KCp0aGlzKTsKKworICAg
IGF1dG8mIGxmY0xpbmVMYXlvdXQgPSAqdGhpcy0+bGZjTGluZUxheW91dCgpOworCisgICAgZm9y
IChhdXRvJiByZW5kZXJlciA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlck9iamVjdD4oKnRoaXMpKQor
ICAgICAgICByZW5kZXJlci5jbGVhck5lZWRzTGF5b3V0KCk7CisKKyAgICBsZmNMaW5lTGF5b3V0
LmxheW91dCgpOworCisgICAgTGF5b3V0VW5pdCBsaW5lTGF5b3V0SGVpZ2h0ID0gbGZjTGluZUxh
eW91dC5jb250ZW50Qm94SGVpZ2h0KCk7CisgICAgTGF5b3V0VW5pdCBsaW5lTGF5b3V0VG9wID0g
Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpOworICAgIHJlcGFpbnRMb2dpY2FsVG9wID0gbGluZUxh
eW91dFRvcDsKKyAgICByZXBhaW50TG9naWNhbEJvdHRvbSA9IHJlcGFpbnRMb2dpY2FsVG9wICsg
bGluZUxheW91dEhlaWdodCArIGJvcmRlckFuZFBhZGRpbmdBZnRlcigpOworICAgIHNldExvZ2lj
YWxIZWlnaHQobGluZUxheW91dFRvcCArIGxpbmVMYXlvdXRIZWlnaHQgKyBib3JkZXJBbmRQYWRk
aW5nQWZ0ZXIoKSk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZUxp
bmVCb3hlcygpCiB7CiAgICAgaWYgKCFjaGlsZHJlbklubGluZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCmluZGV4IGQ5MTljMzMzMTc3Li42Zjg4M2JiMzVk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMzcs
NiArMzcsMTIgQEAgY2xhc3MgTGluZUJyZWFrZXI7CiBjbGFzcyBSZW5kZXJNdWx0aUNvbHVtbkZs
b3c7CiBjbGFzcyBSZW5kZXJSdWJ5UnVuOwogCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCituYW1lc3BhY2UgTGF5b3V0IHsKK2NsYXNzIFJlbmRlckJsb2NrRmxvd0xpbmVM
YXlvdXQ7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiBlbnVtIExp
bmVDb3VudCB7CiAgICAgTk9UX1NFVCA9IDAsIE5PX0xJTkUgPSAxLCBPTkVfTElORSA9IDIsIE1V
TFRJX0xJTkUgPSAzCkBAIC0zMzgsNyArMzQ0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTGlu
ZXMoKSBjb25zdDsKICAgICB2b2lkIGludmFsaWRhdGVMaW5lTGF5b3V0UGF0aCgpIGZpbmFsOwog
Ci0gICAgZW51bSBMaW5lTGF5b3V0UGF0aCB7IFVuZGV0ZXJtaW5lZFBhdGggPSAwLCBTaW1wbGVM
aW5lc1BhdGgsIExpbmVCb3hlc1BhdGgsIEZvcmNlTGluZUJveGVzUGF0aCB9OworICAgIGVudW0g
TGluZUxheW91dFBhdGggeyBVbmRldGVybWluZWRQYXRoID0gMCwgU2ltcGxlTGluZXNQYXRoLCBM
aW5lQm94ZXNQYXRoLCBMRkNQYXRoLCBGb3JjZUxpbmVCb3hlc1BhdGggfTsKICAgICBMaW5lTGF5
b3V0UGF0aCBsaW5lTGF5b3V0UGF0aCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExpbmVM
YXlvdXRQYXRoPihyZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0UGF0aCgpKTsgfQogICAgIHZvaWQg
c2V0TGluZUxheW91dFBhdGgoTGluZUxheW91dFBhdGggcGF0aCkgeyBzZXRSZW5kZXJCbG9ja0Zs
b3dMaW5lTGF5b3V0UGF0aChwYXRoKTsgfQogCkBAIC0zNTcsNiArMzYzLDEwIEBAIHB1YmxpYzoK
ICAgICBTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQqIHNpbXBsZUxpbmVMYXlvdXQoKTsKICAgICBj
b25zdCBDb21wbGV4TGluZUxheW91dCogY29tcGxleExpbmVMYXlvdXQoKSBjb25zdDsKICAgICBD
b21wbGV4TGluZUxheW91dCogY29tcGxleExpbmVMYXlvdXQoKTsKKyNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKKyAgICBjb25zdCBMYXlvdXQ6OlJlbmRlckJsb2NrRmxvd0xp
bmVMYXlvdXQqIGxmY0xpbmVMYXlvdXQoKSBjb25zdDsKKyAgICBMYXlvdXQ6OlJlbmRlckJsb2Nr
Rmxvd0xpbmVMYXlvdXQqIGxmY0xpbmVMYXlvdXQoKTsKKyNlbmRpZgogCiAgICAgdm9pZCBlbnN1
cmVMaW5lQm94ZXMoKTsKICAgICB2b2lkIGdlbmVyYXRlTGluZUJveFRyZWUoKTsKQEAgLTUzNSw2
ICs1NDUsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbGF5b3V0U2ltcGxlTGluZXMoYm9vbCBy
ZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0JiByZXBhaW50TG9naWNhbFRvcCwgTGF5b3V0VW5p
dCYgcmVwYWludExvZ2ljYWxCb3R0b20pOwogCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCisgICAgYm9vbCBoYXNMRkNMaW5lTGF5b3V0KCkgY29uc3Q7CisgICAgdm9pZCBs
YXlvdXRMRkNMaW5lcyhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJlcGFpbnRM
b2dpY2FsVG9wLCBMYXlvdXRVbml0JiByZXBhaW50TG9naWNhbEJvdHRvbSk7CisjZW5kaWYKKwog
ICAgIHZvaWQgYWRqdXN0SW50cmluc2ljTG9naWNhbFdpZHRoc0ZvckNvbHVtbnMoTGF5b3V0VW5p
dCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0Owog
ICAgIHZvaWQgY29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYg
bWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0OwogICAg
IHZvaWQgYWRqdXN0SW5pdGlhbExldHRlclBvc2l0aW9uKFJlbmRlckJveCYgY2hpbGRCb3gsIExh
eW91dFVuaXQmIGxvZ2ljYWxUb3BPZmZzZXQsIExheW91dFVuaXQmIG1hcmdpbkJlZm9yZU9mZnNl
dCk7CkBAIC01NzIsNyArNTg3LDE0IEBAIHByb3RlY3RlZDoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyQmxvY2tGbG93UmFyZURhdGE+IG1fcmFyZUJsb2NrRmxvd0RhdGE7CiAKIHByaXZhdGU6
Ci0gICAgVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgc3RkOjp1bmlxdWVfcHRyPENvbXBsZXhMaW5l
TGF5b3V0PiwgUmVmPFNpbXBsZUxpbmVMYXlvdXQ6OkxheW91dD4+IG1fbGluZUxheW91dDsKKyAg
ICBWYXJpYW50PAorICAgICAgICBzdGQ6Om51bGxwdHJfdCwKKyAgICAgICAgUmVmPFNpbXBsZUxp
bmVMYXlvdXQ6OkxheW91dD4sCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQp
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXlvdXQ6OlJlbmRlckJsb2NrRmxvd0xpbmVMYXlv
dXQ+LAorI2VuZGlmCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDb21wbGV4TGluZUxheW91dD4K
KyAgICA+IG1fbGluZUxheW91dDsKIAogICAgIGZyaWVuZCBjbGFzcyBMaW5lQnJlYWtlcjsKICAg
ICBmcmllbmQgY2xhc3MgTGluZVdpZHRoOyAvLyBOZWVkcyB0byBrbm93IEZsb2F0aW5nT2JqZWN0
CkBAIC02MDksNiArNjMxLDIzIEBAIGlubGluZSBTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQqIFJl
bmRlckJsb2NrRmxvdzo6c2ltcGxlTGluZUxheW91dCgpCiAgICAgcmV0dXJuIGhhc1NpbXBsZUxp
bmVMYXlvdXQoKSA/IFdURjo6Z2V0PFJlZjxTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ+PihtX2xp
bmVMYXlvdXQpLnB0cigpIDogbnVsbHB0cjsKIH0KIAorI2lmIEVOQUJMRShMQVlPVVRfRk9STUFU
VElOR19DT05URVhUKQoraW5saW5lIGJvb2wgUmVuZGVyQmxvY2tGbG93OjpoYXNMRkNMaW5lTGF5
b3V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnVu
aXF1ZV9wdHI8TGF5b3V0OjpSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0Pj4obV9saW5lTGF5b3V0
KTsKK30KKworaW5saW5lIGNvbnN0IExheW91dDo6UmVuZGVyQmxvY2tGbG93TGluZUxheW91dCog
UmVuZGVyQmxvY2tGbG93OjpsZmNMaW5lTGF5b3V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFz
TEZDTGluZUxheW91dCgpID8gV1RGOjpnZXQ8c3RkOjp1bmlxdWVfcHRyPExheW91dDo6UmVuZGVy
QmxvY2tGbG93TGluZUxheW91dD4+KG1fbGluZUxheW91dCkuZ2V0KCkgOiBudWxscHRyOworfQor
CitpbmxpbmUgTGF5b3V0OjpSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0KiBSZW5kZXJCbG9ja0Zs
b3c6OmxmY0xpbmVMYXlvdXQoKQoreworICAgIHJldHVybiBoYXNMRkNMaW5lTGF5b3V0KCkgPyBX
VEY6OmdldDxzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0OjpSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0
Pj4obV9saW5lTGF5b3V0KS5nZXQoKSA6IG51bGxwdHI7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVu
ZGVyQmxvY2tGbG93LCBpc1JlbmRlckJsb2NrRmxvdygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMGVmNmE0MWVj
Zi4uM2FjYTJhOGVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTEtMjYgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW1JlbmRlciB0
cmVlXSBBZGQgTEZDIGxpbmUgbGF5b3V0IHBhdGggdG8gUmVuZGVyQmxvY2tGbG93CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ2MTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVy
ZW5jZXMueWFtbDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6Om92ZXJyaWRlQm9v
bFByZWZlcmVuY2VGb3JUZXN0UnVubmVyKToKKwogMjAxOS0xMS0yNiAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRl
IE9wdGlvbnNHVEsuY21ha2UgYW5kIE5FV1MgZm9yIDIuMjcuMyByZWxlYXNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCAxOGRiOGNmNDNkNi4uZGM3ZWViMGNj
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMTY0Miw4
ICsxNjQyLDE3IEBAIERhdGFMaXN0RWxlbWVudEVuYWJsZWQ6CiBMYXlvdXRGb3JtYXR0aW5nQ29u
dGV4dEVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOiBmYWxzZQotICBodW1h
blJlYWRhYmxlTmFtZTogIk5leHQtZ2VuIGxheW91dCIKLSAgaHVtYW5SZWFkYWJsZURlc2NyaXB0
aW9uOiAiRW5hYmxlIG5leHQtZ2VuIGxheW91dCIKKyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJOZXh0
LWdlbmVyYXRpb24gbGF5b3V0IgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUg
bmV4dC1nZW5lcmF0aW9uIGxheW91dCIKKyAgY2F0ZWdvcnk6IGludGVybmFsCisgIHdlYmNvcmVC
aW5kaW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCisgIGNvbmRpdGlvbjogRU5BQkxFKExBWU9V
VF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKK0xheW91dEZvcm1hdHRpbmdDb250ZXh0UmVuZGVyVHJl
ZUludGVncmF0aW9uRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBkZWZhdWx0VmFsdWU6IGZhbHNl
CisgIGh1bWFuUmVhZGFibGVOYW1lOiAiTmV4dC1nZW5lcmF0aW9uIGlubGluZSBsYXlvdXQgaW4g
cmVuZGVyIHRyZWUiCisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkVuYWJsZSBuZXh0LWdl
bmVyYXRpb24gaW5saW5lIGxheW91dCBpbiByZW5kZXIgdHJlZSIKICAgY2F0ZWdvcnk6IGludGVy
bmFsCiAgIHdlYmNvcmVCaW5kaW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCiAgIGNvbmRpdGlv
bjogRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApp
bmRleCAwYjI0OWQ2ZTZlOS4uNjkxNGRiNzZhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAt
MjYxLDYgKzI2MSw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6Om92ZXJyaWRlQm9vbFByZWZlcmVu
Y2VGb3JUZXN0UnVubmVyKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlCiAjaWYgRU5BQkxFKExBWU9V
VF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAgaWYgKHByZWZlcmVuY2UgPT0gIkxheW91dEZvcm1h
dHRpbmdDb250ZXh0RW5hYmxlZCIpCiAgICAgICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuc2V0TGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRFbmFibGVkKGVuYWJsZWQp
OworICAgIGlmIChwcmVmZXJlbmNlID09ICJMYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJlbmRlclRy
ZWVJbnRlZ3JhdGlvbkVuYWJsZWQiKQorICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnNldExheW91dEZvcm1hdHRpbmdDb250ZXh0UmVuZGVyVHJlZUludGVn
cmF0aW9uRW5hYmxlZChlbmFibGVkKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>