<?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>134174</bug_id>
          
          <creation_ts>2014-06-22 11:05:45 -0700</creation_ts>
          <short_desc>REGRESSION(r170265): Broke editing tests (Requested by litherum on #webkit).</short_desc>
          <delta_ts>2014-06-22 11:10:04 -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>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>133592</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>mmaxfield</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1017408</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-22 11:05:45 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/170265 broke the build:
Broke editing tests (Requested by litherum on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017410</commentid>
    <comment_count>1</comment_count>
      <attachid>233571</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-22 11:06:21 -0700</bug_when>
    <thetext>Created attachment 233571
ROLLOUT of r170265

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017412</commentid>
    <comment_count>2</comment_count>
      <attachid>233571</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-22 11:10:01 -0700</bug_when>
    <thetext>Comment on attachment 233571
ROLLOUT of r170265

Clearing flags on attachment: 233571

Committed r170268: &lt;http://trac.webkit.org/changeset/170268&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017413</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-22 11:10:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233571</attachid>
            <date>2014-06-22 11:06:21 -0700</date>
            <delta_ts>2014-06-22 11:10:01 -0700</delta_ts>
            <desc>ROLLOUT of r170265</desc>
            <filename>bug-134174-20140622110559.patch</filename>
            <type>text/plain</type>
            <size>85588</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwMjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FmM2FmNzIxYzBhMWE4
MDE4NTg5MzZhYTFmYjM2ZjU5Y2MwMDBjMC4uNmQ2MzI2NTcwMjAwMjVjZWRkNjFlZGRlMmUwOGVh
YmU0YmEwMzY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA2LTIyICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTcwMjY1LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM0MTc0CisKKyAgICAgICAgQnJva2UgZWRpdGluZyB0ZXN0cyAoUmVx
dWVzdGVkIGJ5IGxpdGhlcnVtIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5n
ZXNldDoKKworICAgICAgICAiVXNlIHVuc2lnbmVkcyBpbnN0ZWFkIG9mIGludHMgZm9yIGluZGV4
ZXMgaW50byBhIHN0cmluZyBpbgorICAgICAgICB0ZXh0IGxheW91dCBjb2RlIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNTkyCisgICAgICAgIGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE3MDI2NQorCiAyMDE0LTA2LTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHVuc2ln
bmVkcyBpbnN0ZWFkIG9mIGludHMgZm9yIGluZGV4ZXMgaW50byBhIHN0cmluZyBpbiB0ZXh0IGxh
eW91dCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGJlOTM4MjBjMGM3Zjg2NGUxNzNjNzM5
ZmNiOWIwMTgxNzRhZjRiYmYuLjdjYTg3YjhhNTE2YTY1NzAwMzVkYzc3NTE4ZThkZjc4ZmViYjQ5
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xODU1LDcgKzE4NTUsNyBAQCBfX1pOSzdXZWJD
b3JlM1VSTDVxdWVyeUV2CiBfX1pOSzdXZWJDb3JlM1VSTDhwcm90b2NvbEV2CiBfX1pOSzdXZWJD
b3JlM1VSTGN2UDVOU1VSTEV2CiBfX1pOSzdXZWJDb3JlNEZvbnQ1d2lkdGhFUktOU183VGV4dFJ1
bkVQTjNXVEY3SGFzaFNldElQS05TXzE0U2ltcGxlRm9udERhdGFFTlM0XzdQdHJIYXNoSVM4X0VF
TlM0XzEwSGFzaFRyYWl0c0lTOF9FRUVFUE5TXzEzR2x5cGhPdmVyZmxvd0UKLV9fWk5LN1dlYkNv
cmU0Rm9udDhkcmF3VGV4dEVQTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU183VGV4dFJ1bkVSS05T
XzEwRmxvYXRQb2ludEVqaU5TMF8yNEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbkUKK19fWk5LN1dl
YkNvcmU0Rm9udDhkcmF3VGV4dEVQTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU183VGV4dFJ1bkVS
S05TXzEwRmxvYXRQb2ludEVpaU5TMF8yNEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbkUKIF9fWk5L
N1dlYkNvcmU0Rm9udGVxRVJLUzBfCiBfX1pOSzdXZWJDb3JlNE5vZGUxMXRleHRDb250ZW50RWIK
IF9fWk5LN1dlYkNvcmU0Tm9kZTEzb3duZXJEb2N1bWVudEV2CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDczOWE1YjNhY2M5YjZkYjU0ZTBhMjY2MjU0N2I1
NDI0YzU0YTMzZTguLmNkNjIzZjM4OTVhNTA5ODUwYzY4OGM0ZDY4MDUyOWM3ZmEzYWE1ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0zMjksNyArMzI5
LDcgQEAgdm9pZCBGb250Ojp1cGRhdGUoUGFzc1JlZlB0cjxGb250U2VsZWN0b3I+IGZvbnRTZWxl
Y3RvcikgY29uc3QKICAgICBtX3R5cGVzZXR0aW5nRmVhdHVyZXMgPSBjb21wdXRlVHlwZXNldHRp
bmdGZWF0dXJlcygpOwogfQogCi1mbG9hdCBGb250OjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVu
c2lnbmVkIGZyb20sIGludCBpbml0aWFsVG8sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0
b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CitmbG9hdCBGb250OjpkcmF3VGV4dChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIGludCBmcm9tLCBpbnQgdG8sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21G
b250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CiB7CiAgICAgLy8gRG9uJ3QgZHJhdyBhbnl0aGluZyB3
aGlsZSB3ZSBhcmUgdXNpbmcgY3VzdG9tIGZvbnRzIHRoYXQgYXJlIGluIHRoZSBwcm9jZXNzIG9m
IGxvYWRpbmcsCiAgICAgLy8gZXhjZXB0IGlmIHRoZSAnZm9yY2UnIGFyZ3VtZW50IGlzIHNldCB0
byB0cnVlIChpbiB3aGljaCBjYXNlIGl0IHdpbGwgdXNlIGEgZmFsbGJhY2sKQEAgLTMzNyw3ICsz
MzcsNyBAQCBmbG9hdCBGb250OjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQbwogICAgIGlmIChsb2FkaW5nQ3VzdG9tRm9u
dHMoKSAmJiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPT0gRG9Ob3RQYWludElmRm9udE5vdFJl
YWR5KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHVuc2lnbmVkIHRvID0gaW5pdGlhbFRvIDwg
MCA/IHJ1bi5sZW5ndGgoKSA6IGluaXRpYWxUbzsKKyAgICB0byA9ICh0byA9PSAtMSA/IHJ1bi5s
ZW5ndGgoKSA6IHRvKTsKIAogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChy
dW4pOwogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxl
cyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Vi
a2l0Lm9yZy9iLzEwMDA1MApAQCAtMzUwLDEyICszNTAsMTMgQEAgZmxvYXQgRm9udDo6ZHJhd1Rl
eHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZs
b2F0UG8KICAgICByZXR1cm4gZHJhd0NvbXBsZXhUZXh0KGNvbnRleHQsIHJ1biwgcG9pbnQsIGZy
b20sIHRvKTsKIH0KIAotdm9pZCBGb250OjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJr
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgaW50IGluaXRpYWxUbykg
Y29uc3QKK3ZvaWQgRm9udDo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgaWYgKGxv
YWRpbmdDdXN0b21Gb250cygpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgdW5zaWduZWQg
dG8gPSBpbml0aWFsVG8gPCAwID8gcnVuLmxlbmd0aCgpIDogaW5pdGlhbFRvOworCisgICAgaWYg
KHRvIDwgMCkKKyAgICAgICAgdG8gPSBydW4ubGVuZ3RoKCk7CiAKICAgICBDb2RlUGF0aCBjb2Rl
UGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBmYXN0IGNv
ZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBhbmQgbGln
YXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKQEAgLTUwNiw5ICs1MDcsOSBA
QCBib29sIEZvbnQ6OmZhc3RBdmVyYWdlQ2hhcldpZHRoSWZBdmFpbGFibGUoZmxvYXQmIHdpZHRo
KSBjb25zdAogICAgIHJldHVybiBzdWNjZXNzOwogfQogCi12b2lkIEZvbnQ6OmFkanVzdFNlbGVj
dGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9u
UmVjdCwgdW5zaWduZWQgZnJvbSwgaW50IGluaXRpYWxUbykgY29uc3QKK3ZvaWQgRm9udDo6YWRq
dXN0U2VsZWN0aW9uUmVjdEZvclRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBz
ZWxlY3Rpb25SZWN0LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewotICAgIHVuc2lnbmVkIHRv
ID0gaW5pdGlhbFRvIDwgMCA/IHJ1bi5sZW5ndGgoKSA6IGluaXRpYWxUbzsKKyAgICB0byA9ICh0
byA9PSAtMSA/IHJ1bi5sZW5ndGgoKSA6IHRvKTsKIAogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9V
c2UgPSBjb2RlUGF0aChydW4pOwogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRo
IG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMu
IFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1MApAQCAtMTA1MywyNSArMTA1NCwyMyBAQCBi
b29sIEZvbnQ6OmNhblJlY2VpdmVUZXh0RW1waGFzaXMoVUNoYXIzMiBjKQogICAgIHJldHVybiB0
cnVlOwogfQogICAgIAotR2x5cGhUb1BhdGhUcmFuc2xhdG9yOjpHbHlwaFVuZGVybGluZVR5cGUg
Y29tcHV0ZVVuZGVybGluZVR5cGUoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgR2x5cGhC
dWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBpbmRleCkKK0dseXBoVG9QYXRoVHJhbnNsYXRv
cjo6R2x5cGhVbmRlcmxpbmVUeXBlIGNvbXB1dGVVbmRlcmxpbmVUeXBlKGNvbnN0IFRleHRSdW4m
IHRleHRSdW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgaW50IGluZGV4KQogewog
ICAgIC8vIEluIGdlbmVyYWwsIHdlIHdhbnQgdG8gc2tpcCBkZXNjZW5kZXJzLiBIb3dldmVyLCBz
a2lwcGluZyBkZXNjZW5kZXJzIG9uIENKSyBjaGFyYWN0ZXJzIGxlYWRzIHRvIHVuZGVzaXJhYmxl
IHJlbmRlcmluZ3MsCiAgICAgLy8gc28gd2Ugd2FudCB0byBkcmF3IHRocm91Z2ggQ0pLIGNoYXJh
Y3RlcnMgKG9uIGEgY2hhcmFjdGVyLWJ5LWNoYXJhY3RlciBiYXNpcykuCiAgICAgVUNoYXIzMiBi
YXNlQ2hhcmFjdGVyOwotICAgIGludCBpbml0aWFsT2Zmc2V0SW5TdHJpbmcgPSBnbHlwaEJ1ZmZl
ci5vZmZzZXRJblN0cmluZyhpbmRleCk7CisgICAgaW50IG9mZnNldEluU3RyaW5nID0gZ2x5cGhC
dWZmZXIub2Zmc2V0SW5TdHJpbmcoaW5kZXgpOwogCi0gICAgaWYgKGluaXRpYWxPZmZzZXRJblN0
cmluZyA9PSBHbHlwaEJ1ZmZlcjo6a05vT2Zmc2V0KSB7CisgICAgaWYgKG9mZnNldEluU3RyaW5n
ID09IEdseXBoQnVmZmVyOjprTm9PZmZzZXQpIHsKICAgICAgICAgLy8gV2UgaGF2ZSBubyBpZGVh
IHdoaWNoIGNoYXJhY3RlciBzcGF3bmVkIHRoaXMgZ2x5cGguIEJhaWwuCiAgICAgICAgIHJldHVy
biBHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OkdseXBoVW5kZXJsaW5lVHlwZTo6RHJhd092ZXJHbHlw
aDsKICAgICB9CiAgICAgCi0gICAgQVNTRVJUKGluaXRpYWxPZmZzZXRJblN0cmluZyA+PSAwKTsK
LSAgICB1bnNpZ25lZCBvZmZzZXRJblN0cmluZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0
aWFsT2Zmc2V0SW5TdHJpbmcpOwotICAgIAogICAgIGlmICh0ZXh0UnVuLmlzOEJpdCgpKQogICAg
ICAgICBiYXNlQ2hhcmFjdGVyID0gdGV4dFJ1bi5jaGFyYWN0ZXJzOCgpW29mZnNldEluU3RyaW5n
XTsKLSAgICBlbHNlCisgICAgZWxzZSB7CiAgICAgICAgIFUxNl9ORVhUKHRleHRSdW4uY2hhcmFj
dGVyczE2KCksIG9mZnNldEluU3RyaW5nLCB0ZXh0UnVuLmxlbmd0aCgpLCBiYXNlQ2hhcmFjdGVy
KTsKKyAgICB9CiAgICAgCiAgICAgLy8gdV9nZXRJbnRQcm9wZXJ0eVZhbHVlIHdpdGggVUNIQVJf
SURFT0dSQVBISUMgZG9lc24ndCByZXR1cm4gdHJ1ZSBmb3IgSmFwYW5lc2Ugb3IgS29yZWFuIGNv
ZGVwb2ludHMuCiAgICAgLy8gSW5zdGVhZCwgd2UgY2FuIHVzZSB0aGUgIlVuaWNvZGUgYWxsb2Nh
dGlvbiBibG9jayIgZm9yIHRoZSBjaGFyYWN0ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmgKaW5kZXggOGQyZDc0Y2UzZjBkOWM2Y2VmM2NkZGUwMzVkZjhiNjA3MDljZTE2
YS4uMWFkZmYwYTU1ODk1MmI4ZWYwZDIwMTA4MGUyYTk0ZjI5MzViYTdjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZSgpID0gMDsKICAgICB2aXJ0dWFsIH5HbHlwaFRvUGF0
aFRyYW5zbGF0b3IoKSB7IH0KIH07Ci1HbHlwaFRvUGF0aFRyYW5zbGF0b3I6OkdseXBoVW5kZXJs
aW5lVHlwZSBjb21wdXRlVW5kZXJsaW5lVHlwZShjb25zdCBUZXh0UnVuJiwgY29uc3QgR2x5cGhC
dWZmZXImLCB1bnNpZ25lZCBpbmRleCk7CitHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OkdseXBoVW5k
ZXJsaW5lVHlwZSBjb21wdXRlVW5kZXJsaW5lVHlwZShjb25zdCBUZXh0UnVuJiwgY29uc3QgR2x5
cGhCdWZmZXImLCBpbnQgaW5kZXgpOwogCiBjbGFzcyBGb250IHsKIHB1YmxpYzoKQEAgLTEzMyw5
ICsxMzMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGUoUGFzc1JlZlB0cjxGb250U2VsZWN0
b3I+KSBjb25zdDsKIAogICAgIGVudW0gQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIHsgRG9Ob3RQ
YWludElmRm9udE5vdFJlYWR5LCBVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5IH07Ci0gICAgZmxv
YXQgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0
UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgaW50IHRvID0gLTEsIEN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbiA9IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkgY29uc3Q7Ci0gICAgdm9pZCBkcmF3
R2x5cGhzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFNpbXBsZUZvbnREYXRhKiwgY29uc3QgR2x5
cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0
UG9pbnQmKSBjb25zdDsKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0
UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgaW50IHRvID0gLTEpIGNvbnN0OworICAgIGZsb2F0
IGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBv
aW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
ID0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBjb25zdDsKKyAgICB2b2lkIGRyYXdHbHlwaHMo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgU2ltcGxlRm9udERhdGEqLCBjb25zdCBHbHlwaEJ1ZmZl
ciYsIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7Cisg
ICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBUZXh0UnVu
JiwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20g
PSAwLCBpbnQgdG8gPSAtMSkgY29uc3Q7CiAKICAgICBEYXNoQXJyYXkgZGFzaGVzRm9ySW50ZXJz
ZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3Jp
Z2luLCBjb25zdCBGbG9hdFJlY3QmIGxpbmVFeHRlbnRzKSBjb25zdDsKIApAQCAtMTQ3LDcgKzE0
Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgZmxvYXQgd2lkdGgoVGV4dExheW91dCYsIHVuc2ln
bmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0YSo+KiBm
YWxsYmFja0ZvbnRzID0gMCk7CiAKICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb24oY29uc3QgVGV4
dFJ1biYsIGZsb2F0IHBvc2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdDsK
LSAgICB2b2lkIGFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlv
dXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tID0gMCwgaW50IHRvID0gLTEpIGNv
bnN0OworICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQoY29uc3QgVGV4dFJ1biYs
IExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIGludCBmcm9tID0gMCwgaW50IHRvID0gLTEpIGNv
bnN0OwogCiAgICAgYm9vbCBpc1NtYWxsQ2FwcygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2Ny
aXB0aW9uLnNtYWxsQ2FwcygpOyB9CiAKQEAgLTIxOSwxNCArMjE5LDE0IEBAIHByaXZhdGU6CiAg
ICAgZW51bSBGb3JUZXh0RW1waGFzaXNPck5vdCB7IE5vdEZvclRleHRFbXBoYXNpcywgRm9yVGV4
dEVtcGhhc2lzIH07CiAKICAgICAvLyBSZXR1cm5zIHRoZSBpbml0aWFsIGluLXN0cmVhbSBhZHZh
bmNlLgotICAgIGZsb2F0IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBU
ZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4
dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwotICAgIGZsb2F0IGRy
YXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9h
dFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwotICAgIHZvaWQgZHJh
d0VtcGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRS
dW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3Q7CisgICAgZmxvYXQgZ2V0R2x5cGhzQW5kQWR2YW5j
ZXNGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBpbnQgZnJvbSwgaW50IHRvLCBHbHlwaEJ1
ZmZlciYsIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsK
KyAgICBmbG9hdCBkcmF3U2ltcGxlVGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBUZXh0UnVu
JiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OworICAgIHZvaWQg
ZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRl
eHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQg
ZnJvbSwgaW50IHRvKSBjb25zdDsKICAgICB2b2lkIGRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgR2x5cGhCdWZmZXImLCBGbG9hdFBvaW50Jikg
Y29uc3Q7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBUZXh0UnVuJiwgY29uc3QgR2x5cGhCdWZmZXImLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25z
dCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgZmxvYXQgZmxvYXRXaWR0aEZvclNpbXBsZVRleHQo
Y29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiogZmFsbGJhY2tG
b250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7CiAgICAgaW50IG9mZnNldEZvclBv
c2l0aW9uRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgZmxvYXQgcG9zaXRpb24sIGJvb2wg
aW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0OwotICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uUmVj
dEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3Qs
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdDsKKyAgICB2b2lkIGFkanVzdFNlbGVj
dGlvblJlY3RGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rp
b25SZWN0LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKIAogICAgIGJvb2wgZ2V0RW1waGFzaXNN
YXJrR2x5cGhEYXRhKGNvbnN0IEF0b21pY1N0cmluZyYsIEdseXBoRGF0YSYpIGNvbnN0OwogCkBA
IC0yMzQsMTIgKzIzNCwxMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGNhbkV4cGFuZEFy
b3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0KCk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBpbml0
aWFsIGluLXN0cmVhbSBhZHZhbmNlLgotICAgIGZsb2F0IGdldEdseXBoc0FuZEFkdmFuY2VzRm9y
Q29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBH
bHlwaEJ1ZmZlciYsIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBj
b25zdDsKLSAgICBmbG9hdCBkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykg
Y29uc3Q7Ci0gICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0
IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3Q7CisgICAgZmxv
YXQgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgaW50
IGZyb20sIGludCB0bywgR2x5cGhCdWZmZXImLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZv
clRleHRFbXBoYXNpcykgY29uc3Q7CisgICAgZmxvYXQgZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20sIGlu
dCB0bykgY29uc3Q7CisgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmss
IGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKICAgICBmbG9hdCBm
bG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3QgU2lt
cGxlRm9udERhdGEqPiogZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29u
c3Q7CiAgICAgaW50IG9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1
biYsIGZsb2F0IHBvc2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdDsKLSAg
ICB2b2lkIGFkanVzdFNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwg
TGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNv
bnN0OworICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRl
eHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCBpbnQgZnJvbSwgaW50IHRvKSBjb25z
dDsKIAogICAgIGZyaWVuZCBzdHJ1Y3QgV2lkdGhJdGVyYXRvcjsKICAgICBmcmllbmQgY2xhc3Mg
U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcAppbmRleCA3ZjIwZTBiMzY1MjFkOWNkY2QzZjc2
ZjcwYzNlZWJmZjQ3OWRkODIxLi5iYmVkM2QwZGRkMjdhNGQ3NDA4ZDRlZDcyZDI2NDFhMTRkZTA3
N2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFz
dFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0
UGF0aC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBpbnQgRm9udDo6ZW1waGFzaXNNYXJrSGVpZ2h0
KGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaykgY29uc3QKICAgICByZXR1cm4gbWFya0ZvbnREYXRh
LT5mb250TWV0cmljcygpLmhlaWdodCgpOwogfQogCi1mbG9hdCBGb250OjpnZXRHbHlwaHNBbmRB
ZHZhbmNlc0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1
bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFzaXNPck5v
dCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CitmbG9hdCBGb250OjpnZXRHbHlwaHNBbmRBZHZhbmNl
c0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBpbnQgZnJvbSwgaW50IHRvLCBHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBoYXNp
cykgY29uc3QKIHsKICAgICBmbG9hdCBpbml0aWFsQWR2YW5jZTsKIApAQCAtMTU2LDcgKzE1Niw3
IEBAIGZsb2F0IEZvbnQ6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBU
ZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sCiAgICAgcmV0dXJuIGluaXRpYWxBZHZhbmNlOwog
fQogCi1mbG9hdCBGb250OjpkcmF3U2ltcGxlVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZy
b20sIHVuc2lnbmVkIHRvKSBjb25zdAorZmxvYXQgRm9udDo6ZHJhd1NpbXBsZVRleHQoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewogICAgIC8vIFRoaXMgZ2x5cGggYnVm
ZmVyIGhvbGRzIG91ciBnbHlwaHMrYWR2YW5jZXMrZm9udCBkYXRhIGZvciBlYWNoIGdseXBoLgog
ICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwpAQCAtMTcyLDcgKzE3Miw3IEBAIGZsb2F0IEZv
bnQ6OmRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1
biYgcnVuLCBjb25zdCBGCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRYOwogfQog
Ci12b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yU2ltcGxlVGV4dChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJr
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNv
bnN0Cit2b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yU2ltcGxlVGV4dChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBt
YXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKIHsK
ICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBmbG9hdCBpbml0aWFsQWR2YW5jZSA9
IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1
ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKQEAgLTE5NSw4ICsxOTUsOCBAQCB2b2lkIEZvbnQ6OmRy
YXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1
biwgY29uc3QgRwogICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChwb2ludC54KCksIHBvaW50Lnko
KSAtIGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkpOwogICAgIGZsb2F0IG5l
eHRYID0gc3RhcnRQb2ludC54KCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKTsK
ICAgICBmbG9hdCBuZXh0WSA9IHN0YXJ0UG9pbnQueSgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDApLmhlaWdodCgpOwotICAgIHVuc2lnbmVkIGxhc3RGcm9tID0gMDsKLSAgICB1bnNpZ25lZCBu
ZXh0R2x5cGggPSAxOworICAgIGludCBsYXN0RnJvbSA9IDA7CisgICAgaW50IG5leHRHbHlwaCA9
IDE7CiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICBUZXh0UnVuOjpSZW5kZXJpbmdDb250ZXh0
KiByZW5kZXJpbmdDb250ZXh0ID0gcnVuLnJlbmRlcmluZ0NvbnRleHQoKTsKICNlbmRpZgpAQCAt
MjEwLDEwICsyMTAsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRwogICAgICAgICAgICAgICAg
IHJlbmRlcmluZ0NvbnRleHQtPmRyYXdTVkdHbHlwaHMoY29udGV4dCwgZm9udERhdGEsIGdseXBo
QnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOwogICAg
ICAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKG5leHRHbHlwaCA+PSBsYXN0RnJvbSk7CiAgICAgICAgICAgICAgICAgZHJhd0dseXBocyhj
b250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0
RnJvbSwgc3RhcnRQb2ludCk7Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGxhc3RGcm9t
ID0gbmV4dEdseXBoOwogICAgICAgICAgICAgZm9udERhdGEgPSBuZXh0Rm9udERhdGE7CkBAIC0y
NzIsNyArMjY5LDcgQEAgdm9pZCBGb250OjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICAgICBGbG9hdFBvaW50IHN0
YXJ0UG9pbnQocG9pbnQueCgpICsgbWlkZGxlT2ZMYXN0R2x5cGggLSBvZmZzZXRUb01pZGRsZU9m
R2x5cGgobWFya0ZvbnREYXRhLCBtYXJrR2x5cGgpLCBwb2ludC55KCkpOwogCiAgICAgR2x5cGhC
dWZmZXIgbWFya0J1ZmZlcjsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICsgMSA8IGdseXBo
QnVmZmVyLnNpemUoKTsgKytpKSB7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgKyAxIDwgZ2x5cGhC
dWZmZXIuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgZmxvYXQgbWlkZGxlT2ZOZXh0R2x5cGggPSBv
ZmZzZXRUb01pZGRsZU9mR2x5cGhBdEluZGV4KGdseXBoQnVmZmVyLCBpICsgMSk7CiAgICAgICAg
IGZsb2F0IGFkdmFuY2UgPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkud2lkdGgoKSAtIG1pZGRs
ZU9mTGFzdEdseXBoICsgbWlkZGxlT2ZOZXh0R2x5cGg7CiAgICAgICAgIG1hcmtCdWZmZXIuYWRk
KGdseXBoQnVmZmVyLmdseXBoQXQoaSkgPyBtYXJrR2x5cGggOiBzcGFjZUdseXBoLCBtYXJrRm9u
dERhdGEsIGFkdmFuY2UpOwpAQCAtMjk5LDcgKzI5Niw3IEBAIGZsb2F0IEZvbnQ6OmZsb2F0V2lk
dGhGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBTaW1wbGVG
b250CiAgICAgcmV0dXJuIGl0Lm1fcnVuV2lkdGhTb0ZhcjsKIH0KIAotdm9pZCBGb250OjphZGp1
c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91dFJl
Y3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdAordm9p
ZCBGb250OjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBy
dW4sIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7
CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAgICAgV2lkdGhJdGVyYXRvciBpdCh0aGlz
LCBydW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVy
LmgKaW5kZXggN2EyODFhZDJkNGVhNjlmYTRjZTk4NDZhZWM5ZTMxODA4OWExZjQzMS4uM2M1OTM1
ZmM2ZDJjMDI0NzYwN2UzMzMyNGQzOTBiMDVkN2Y4OWI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC03Niw3ICs3Niw3IEBAIHR5cGVk
ZWYgRmxvYXRTaXplIEdseXBoQnVmZmVyQWR2YW5jZTsKIGNsYXNzIEdseXBoQnVmZmVyIHsKIHB1
YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREYXRhLmlzRW1w
dHkoKTsgfQotICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREYXRhLnNp
emUoKTsgfQorICAgIGludCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9mb250RGF0YS5zaXplKCk7
IH0KICAgICAKICAgICB2b2lkIGNsZWFyKCkKICAgICB7CkBAIC05MCwxMiArOTAsMTIgQEAgcHVi
bGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzKHVuc2ln
bmVkIGZyb20pIHsgcmV0dXJuIG1fZ2x5cGhzLmRhdGEoKSArIGZyb207IH0KLSAgICBHbHlwaEJ1
ZmZlckFkdmFuY2UqIGFkdmFuY2VzKHVuc2lnbmVkIGZyb20pIHsgcmV0dXJuIG1fYWR2YW5jZXMu
ZGF0YSgpICsgZnJvbTsgfQotICAgIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocyh1bnNp
Z25lZCBmcm9tKSBjb25zdCB7IHJldHVybiBtX2dseXBocy5kYXRhKCkgKyBmcm9tOyB9Ci0gICAg
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcyh1bnNpZ25lZCBmcm9tKSBjb25zdCB7
IHJldHVybiBtX2FkdmFuY2VzLmRhdGEoKSArIGZyb207IH0KKyAgICBHbHlwaEJ1ZmZlckdseXBo
KiBnbHlwaHMoaW50IGZyb20pIHsgcmV0dXJuIG1fZ2x5cGhzLmRhdGEoKSArIGZyb207IH0KKyAg
ICBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzKGludCBmcm9tKSB7IHJldHVybiBtX2FkdmFu
Y2VzLmRhdGEoKSArIGZyb207IH0KKyAgICBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMo
aW50IGZyb20pIGNvbnN0IHsgcmV0dXJuIG1fZ2x5cGhzLmRhdGEoKSArIGZyb207IH0KKyAgICBj
b25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzKGludCBmcm9tKSBjb25zdCB7IHJldHVy
biBtX2FkdmFuY2VzLmRhdGEoKSArIGZyb207IH0KIAotICAgIGNvbnN0IFNpbXBsZUZvbnREYXRh
KiBmb250RGF0YUF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2ZvbnREYXRhW2lu
ZGV4XTsgfQorICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YUF0KGludCBpbmRleCkg
Y29uc3QgeyByZXR1cm4gbV9mb250RGF0YVtpbmRleF07IH0KIAogICAgIHZvaWQgc2V0SW5pdGlh
bEFkdmFuY2UoR2x5cGhCdWZmZXJBZHZhbmNlIGluaXRpYWxBZHZhbmNlKSB7IG1faW5pdGlhbEFk
dmFuY2UgPSBpbml0aWFsQWR2YW5jZTsgfQogICAgIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYg
aW5pdGlhbEFkdmFuY2UoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxBZHZhbmNlOyB9CkBAIC0x
MDksMTIgKzEwOSwxMiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBHbHlwaEJ1ZmZl
ckFkdmFuY2UgYWR2YW5jZUF0KHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIEdseXBoQnVmZmVy
QWR2YW5jZSBhZHZhbmNlQXQoaW50IGluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fYWR2YW5jZXNbaW5kZXhdOwogICAgIH0KIAotICAgIEZsb2F0U2l6ZSBvZmZzZXRBdCh1bnNp
Z25lZCBpbmRleCkgY29uc3QKKyAgICBGbG9hdFNpemUgb2Zmc2V0QXQoaW50IGluZGV4KSBjb25z
dAogICAgIHsKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIHJldHVybiBtX29mZnNldHNbaW5k
ZXhdOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIHZv
aWQgcmV2ZXJzZSh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgdm9pZCByZXZl
cnNlKGludCBmcm9tLCBpbnQgbGVuZ3RoKQogICAgIHsKICAgICAgICAgZm9yIChpbnQgaSA9IGZy
b20sIGVuZCA9IGZyb20gKyBsZW5ndGggLSAxOyBpIDwgZW5kOyArK2ksIC0tZW5kKQogICAgICAg
ICAgICAgc3dhcChpLCBlbmQpOwpAQCAtMTk0LDE0ICsxOTQsMTQgQEAgcHVibGljOgogICAgICAg
ICBtX29mZnNldHNJblN0cmluZy5yZXNldChuZXcgVmVjdG9yPGludCwgMjA0OD4oKSk7CiAgICAg
fQogICAgIAotICAgIGludCBvZmZzZXRJblN0cmluZyh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAg
ICBpbnQgb2Zmc2V0SW5TdHJpbmcoaW50IGluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKG1fb2Zmc2V0c0luU3RyaW5nKTsKICAgICAgICAgcmV0dXJuICgqbV9vZmZzZXRzSW5TdHJp
bmcpW2luZGV4XTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzd2FwKHVuc2lnbmVkIGlu
ZGV4MSwgdW5zaWduZWQgaW5kZXgyKQorICAgIHZvaWQgc3dhcChpbnQgaW5kZXgxLCBpbnQgaW5k
ZXgyKQogICAgIHsKICAgICAgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIGYgPSBtX2ZvbnREYXRh
W2luZGV4MV07CiAgICAgICAgIG1fZm9udERhdGFbaW5kZXgxXSA9IG1fZm9udERhdGFbaW5kZXgy
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCmluZGV4IGUwOTY0NGQ0NThmZWQ4YTJmNzY4ODU5OTc0YWQ3OTUwMWI1ZGMzZGUu
LjBlNDAwZWM4MDczOWQ3Yzk1YjJjM2ExMmVmYTQwNzIxYzRiYTZhZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAt
NzQsNyArNzQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3QgVGV4dFJ1biogbV90
ZXh0UnVuOwotICAgIHVuc2lnbmVkIG1fb2Zmc2V0OworICAgIGludCBtX29mZnNldDsKIH07CiAK
IGNsYXNzIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXRpbjFUZXh0SXRlcmF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xhdGluMVRleHRJdGVyYXRvci5oCmluZGV4IDZi
N2U1OTlkMDAyM2Y5OGIzMjYwNjgyMDlmOWM2MDI3Mjc3ZWRiYWUuLmM0MDE4OWJmZTkzMzJhMGRl
YjQwNjQzYzE0ZDFlMjgwNzdkYWQzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0xhdGluMVRleHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0xhdGluMVRleHRJdGVyYXRvci5oCkBAIC0zMCw3ICszMCw3IEBAIGNs
YXNzIExhdGluMVRleHRJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgLy8gVGhlIHBhc3NlZCBpbiBM
Q2hhciBwb2ludGVyIHN0YXJ0cyBhdCAnY3VycmVudENoYXJhY3RlcicuIFRoZSBpdGVyYXRvciBv
cGVyYXRlcyBvbiB0aGUgcmFuZ2UgW2N1cnJlbnRDaGFyYWN0ZXIsIGxhc3RDaGFyYWN0ZXJdLgog
ICAgIC8vICdlbmRDaGFyYWN0ZXInIGRlbm90ZXMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBV
Q2hhciBhcnJheSwgd2hpY2ggbWlnaHQgZXhjZWVkICdsYXN0Q2hhcmFjdGVyJy4KLSAgICBMYXRp
bjFUZXh0SXRlcmF0b3IoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGN1cnJlbnRD
aGFyYWN0ZXIsIHVuc2lnbmVkIGxhc3RDaGFyYWN0ZXIsIHVuc2lnbmVkIC8qZW5kQ2hhcmFjdGVy
Ki8pCisgICAgTGF0aW4xVGV4dEl0ZXJhdG9yKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBpbnQg
Y3VycmVudENoYXJhY3RlciwgaW50IGxhc3RDaGFyYWN0ZXIsIGludCAvKmVuZENoYXJhY3Rlciov
KQogICAgICAgICA6IG1fY2hhcmFjdGVycyhjaGFyYWN0ZXJzKQogICAgICAgICAsIG1fY3VycmVu
dENoYXJhY3RlcihjdXJyZW50Q2hhcmFjdGVyKQogICAgICAgICAsIG1fbGFzdENoYXJhY3Rlcihs
YXN0Q2hhcmFjdGVyKQpAQCAtNTMsMTMgKzUzLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9jdXJy
ZW50Q2hhcmFjdGVyICs9IGFkdmFuY2VMZW5ndGg7CiAgICAgfQogCi0gICAgdW5zaWduZWQgY3Vy
cmVudENoYXJhY3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudENoYXJhY3RlcjsgfQorICAg
IGludCBjdXJyZW50Q2hhcmFjdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q2hhcmFjdGVy
OyB9CiAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NoYXJh
Y3RlcnM7IH0KIAogcHJpdmF0ZToKICAgICBjb25zdCBMQ2hhciogbV9jaGFyYWN0ZXJzOwotICAg
IHVuc2lnbmVkIG1fY3VycmVudENoYXJhY3RlcjsKLSAgICB1bnNpZ25lZCBtX2xhc3RDaGFyYWN0
ZXI7CisgICAgaW50IG1fY3VycmVudENoYXJhY3RlcjsKKyAgICBpbnQgbV9sYXN0Q2hhcmFjdGVy
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2ltcGxlRm9udERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBs
ZUZvbnREYXRhLmgKaW5kZXggODZiOTViMTI5YmJhNmIyOWQzNTZmYTBiNWU4NGU5ZDIwNGMxYzQ3
Ni4uOWRmOGM1N2Q2MGE3NDIwMmE3OTI0MzY3YWIzOTM5NzY3Njc1MDc2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCkBAIC04OSw3
ICs4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVGb250RGF0
YShTaW1wbGVGb250RGF0YSosIGZsb2F0IGZvbnRTaXplKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
ZmxvYXQgd2lkdGhGb3JTVkdHbHlwaChHbHlwaCwgZmxvYXQgZm9udFNpemUpIGNvbnN0ID0gMDsK
ICAgICAgICAgdmlydHVhbCBib29sIGZpbGxTVkdHbHlwaFBhZ2UoR2x5cGhQYWdlKiwgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZl
ckxlbmd0aCwgY29uc3QgU2ltcGxlRm9udERhdGEqKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBhcHBseVNWR0dseXBoU2VsZWN0aW9uKFdpZHRoSXRlcmF0b3ImLCBHbHlwaERhdGEm
LCBib29sIG1pcnJvciwgdW5zaWduZWQgY3VycmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFu
Y2VMZW5ndGgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIGFwcGx5U1ZHR2x5cGhT
ZWxlY3Rpb24oV2lkdGhJdGVyYXRvciYsIEdseXBoRGF0YSYsIGJvb2wgbWlycm9yLCBpbnQgY3Vy
cmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgpIGNvbnN0ID0gMDsKICAgICB9
OwogCiAgICAgLy8gVXNlZCB0byBjcmVhdGUgcGxhdGZvcm0gZm9udHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRl
cmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3Vycm9nYXRlUGFp
ckF3YXJlVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBjZTcwNGJlM2YyMzYwM2M4MmY4OGQxMTVjZGQ2
YmVjMGY1NDE2N2VlLi45MTU1ZTcxMWE4ZGE4MGQ0ZWIzZGNmNWRhNWFjMzA1YTI4Y2JlYTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWly
QXdhcmVUZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHAKQEAgLTI3LDcgKzI3LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3I6
OlN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvcihjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgY3VycmVudENoYXJhY3RlciwgdW5zaWduZWQgbGFzdENoYXJhY3RlciwgdW5zaWdu
ZWQgZW5kQ2hhcmFjdGVyKQorU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yOjpTdXJyb2dh
dGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBjdXJy
ZW50Q2hhcmFjdGVyLCBpbnQgbGFzdENoYXJhY3RlciwgaW50IGVuZENoYXJhY3RlcikKICAgICA6
IG1fY2hhcmFjdGVycyhjaGFyYWN0ZXJzKQogICAgICwgbV9jdXJyZW50Q2hhcmFjdGVyKGN1cnJl
bnRDaGFyYWN0ZXIpCiAgICAgLCBtX2xhc3RDaGFyYWN0ZXIobGFzdENoYXJhY3RlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2Fy
ZVRleHRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3Vycm9n
YXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmgKaW5kZXggMWE3MTVjMGNhMmQyNDgzYjI0NzI5OTc1
ZWI3NWM5ZmEyMjM2ZWQ0OS4uODVjOTY5NGM3NmEyMmNkZWFlZWIzYmE4NDFiMTBhMGE1MDMxNjgx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3Vycm9nYXRl
UGFpckF3YXJlVGV4dEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmgKQEAgLTMwLDcgKzMwLDcgQEAg
Y2xhc3MgU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICAvLyBU
aGUgcGFzc2VkIGluIFVDaGFyIHBvaW50ZXIgc3RhcnRzIGF0ICdjdXJyZW50Q2hhcmFjdGVyJy4g
VGhlIGl0ZXJhdG9yIG9wZXJhdG9lcyBvbiB0aGUgcmFuZ2UgW2N1cnJlbnRDaGFyYWN0ZXIsIGxh
c3RDaGFyYWN0ZXJdLgogICAgIC8vICdlbmRDaGFyYWN0ZXInIGRlbm90ZXMgdGhlIG1heGltdW0g
bGVuZ3RoIG9mIHRoZSBVQ2hhciBhcnJheSwgd2hpY2ggbWlnaHQgZXhjZWVkICdsYXN0Q2hhcmFj
dGVyJy4KLSAgICBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBjdXJyZW50Q2hhcmFjdGVyLCB1bnNpZ25lZCBsYXN0Q2hhcmFjdGVyLCB1bnNpZ25l
ZCBlbmRDaGFyYWN0ZXIpOworICAgIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvcihjb25z
dCBVQ2hhciosIGludCBjdXJyZW50Q2hhcmFjdGVyLCBpbnQgbGFzdENoYXJhY3RlciwgaW50IGVu
ZENoYXJhY3Rlcik7CiAKICAgICBpbmxpbmUgYm9vbCBjb25zdW1lKFVDaGFyMzImIGNoYXJhY3Rl
ciwgdW5zaWduZWQmIGNsdXN0ZXJMZW5ndGgpCiAgICAgewpAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fY3VycmVudENoYXJhY3RlciArPSBhZHZhbmNlTGVuZ3RoOwogICAgIH0K
IAotICAgIHVuc2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXIoKSBjb25zdCB7IHJldHVybiBtX2N1cnJl
bnRDaGFyYWN0ZXI7IH0KKyAgICBpbnQgY3VycmVudENoYXJhY3RlcigpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudENoYXJhY3RlcjsgfQogICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9CiAKIHByaXZhdGU6CkBAIC02MCw5ICs2MCw5IEBA
IHByaXZhdGU6CiAgICAgVUNoYXIzMiBub3JtYWxpemVWb2ljaW5nTWFya3MoKTsKIAogICAgIGNv
bnN0IFVDaGFyKiBtX2NoYXJhY3RlcnM7Ci0gICAgdW5zaWduZWQgbV9jdXJyZW50Q2hhcmFjdGVy
OwotICAgIHVuc2lnbmVkIG1fbGFzdENoYXJhY3RlcjsKLSAgICB1bnNpZ25lZCBtX2VuZENoYXJh
Y3RlcjsKKyAgICBpbnQgbV9jdXJyZW50Q2hhcmFjdGVyOworICAgIGludCBtX2xhc3RDaGFyYWN0
ZXI7CisgICAgaW50IG1fZW5kQ2hhcmFjdGVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCmluZGV4IDViYTRjZGY3OThhZGNlZGNkYjAzM2VjNzdi
YmNlZjY5ZjM1YjdmMGIuLjNlMWZmNzM2MGEzMGFiZGVhMjYxMjc3OTFjYzRiMGMwMzdhM2Y1NmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTE3MSw4
ICsxNzEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0
IHsgQVNTRVJUKCFpczhCaXQoKSk7IHJldHVybiBtX2RhdGEuY2hhcmFjdGVyczE2OyB9CiAgICAg
CiAgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX2lzOEJpdDsgfQotICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuOyB9Ci0gICAgdW5zaWduZWQgY2hhcmFj
dGVyc0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyc0xlbmd0aDsgfQorICAgIGlu
dCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbjsgfQorICAgIGludCBjaGFyYWN0ZXJzTGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzTGVuZ3RoOyB9CiAgICAgU3RyaW5nIHN0
cmluZygpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXM4Qml0KCkpCkBAIC0yMTcsNyArMjE3
LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5SZW5kZXJpbmdDb250ZXh0KCkgeyB9CiAK
ICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQotICAgICAgICB2aXJ0dWFsIEdseXBoRGF0YSBnbHlwaERh
dGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9udCYsIFdpZHRoSXRlcmF0b3ImLCBVQ2hhcjMyIGNoYXJh
Y3RlciwgYm9vbCBtaXJyb3IsIHVuc2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXIsIHVuc2lnbmVkJiBh
ZHZhbmNlTGVuZ3RoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgR2x5cGhEYXRhIGdseXBoRGF0YUZv
ckNoYXJhY3Rlcihjb25zdCBGb250JiwgV2lkdGhJdGVyYXRvciYsIFVDaGFyMzIgY2hhcmFjdGVy
LCBib29sIG1pcnJvciwgaW50IGN1cnJlbnRDaGFyYWN0ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVu
Z3RoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IFNpbXBsZUZvbnREYXRhKiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJv
bSwgaW50IHRvLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFs
IGZsb2F0IGZsb2F0V2lkdGhVc2luZ1NWR0ZvbnQoY29uc3QgRm9udCYsIGNvbnN0IFRleHRSdW4m
LCBpbnQmIGNoYXJzQ29uc3VtZWQsIFN0cmluZyYgZ2x5cGhOYW1lKSBjb25zdCA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBhcHBseVNWR0tlcm5pbmcoY29uc3QgU2ltcGxlRm9udERhdGEqLCBX
aWR0aEl0ZXJhdG9yJiwgR2x5cGhCdWZmZXIqLCBpbnQgZnJvbSkgY29uc3QgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAppbmRl
eCA5ODg5YmQwZWQ2MzllNmRjODQ2MWQxMjc0MzAzYzEyYzFhNjQ4NTIwLi43NzdkYzI5NzhkYmY5
N2NiZDE3NzNmZjZhMGNiZmIwMDUzYzZjYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcApAQCAtNjgsNyArNjgsNyBAQCBXaWR0
aEl0ZXJhdG9yOjpXaWR0aEl0ZXJhdG9yKGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IFRleHRSdW4m
IHJ1biwgSGFzaFNldDxjb25zdAogICAgIH0KIH0KIAotR2x5cGhEYXRhIFdpZHRoSXRlcmF0b3I6
OmdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlciwgYm9vbCBtaXJyb3IsIHVu
c2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVuZ3RoKQorR2x5cGhE
YXRhIFdpZHRoSXRlcmF0b3I6OmdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3Rl
ciwgYm9vbCBtaXJyb3IsIGludCBjdXJyZW50Q2hhcmFjdGVyLCB1bnNpZ25lZCYgYWR2YW5jZUxl
bmd0aCkKIHsKICAgICBBU1NFUlQobV9mb250KTsKIApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6
CiAKIHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxpbnQsIE9yaWdpbmFsQWR2YW5jZXNGb3JDaGFy
YWN0ZXJUcmVhdGVkQXNTcGFjZT4sIDY0PiBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2U7CiAKLXN0
YXRpYyBpbmxpbmUgZmxvYXQgYXBwbHlGb250VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciogZ2x5cGhC
dWZmZXIsIGJvb2wgbHRyLCB1bnNpZ25lZCYgbGFzdEdseXBoQ291bnQsIGNvbnN0IFNpbXBsZUZv
bnREYXRhKiBmb250RGF0YSwgV2lkdGhJdGVyYXRvciYgaXRlcmF0b3IsIFR5cGVzZXR0aW5nRmVh
dHVyZXMgdHlwZXNldHRpbmdGZWF0dXJlcywgQ2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlJiBjaGFy
YWN0ZXJzVHJlYXRlZEFzU3BhY2UpCitzdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5Rm9udFRyYW5z
Zm9ybXMoR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBib29sIGx0ciwgaW50JiBsYXN0R2x5cGhD
b3VudCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhLCBXaWR0aEl0ZXJhdG9yJiBpdGVy
YXRvciwgVHlwZXNldHRpbmdGZWF0dXJlcyB0eXBlc2V0dGluZ0ZlYXR1cmVzLCBDaGFyYWN0ZXJz
VHJlYXRlZEFzU3BhY2UmIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSkKIHsKICAgICBBU1NFUlQo
dHlwZXNldHRpbmdGZWF0dXJlcyAmIChLZXJuaW5nIHwgTGlnYXR1cmVzKSk7CiAKQEAgLTE2NSwx
NCArMTY1LDE0IEBAIGlubGluZSB1bnNpZ25lZCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlSW50ZXJu
YWwoVGV4dEl0ZXJhdG9yJiB0ZXh0SXRlcmF0b3IsIEdseXBoCiAKICAgICBjb25zdCBTaW1wbGVG
b250RGF0YSogcHJpbWFyeUZvbnQgPSBtX2ZvbnQtPnByaW1hcnlGb250KCk7CiAgICAgY29uc3Qg
U2ltcGxlRm9udERhdGEqIGxhc3RGb250RGF0YSA9IHByaW1hcnlGb250OwotICAgIHVuc2lnbmVk
IGxhc3RHbHlwaENvdW50ID0gZ2x5cGhCdWZmZXIgPyBnbHlwaEJ1ZmZlci0+c2l6ZSgpIDogMDsK
KyAgICBpbnQgbGFzdEdseXBoQ291bnQgPSBnbHlwaEJ1ZmZlciA/IGdseXBoQnVmZmVyLT5zaXpl
KCkgOiAwOwogCiAgICAgVUNoYXIzMiBjaGFyYWN0ZXIgPSAwOwogICAgIHVuc2lnbmVkIGNsdXN0
ZXJMZW5ndGggPSAwOwogICAgIENoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSBjaGFyYWN0ZXJzVHJl
YXRlZEFzU3BhY2U7CiAgICAgd2hpbGUgKHRleHRJdGVyYXRvci5jb25zdW1lKGNoYXJhY3Rlciwg
Y2x1c3Rlckxlbmd0aCkpIHsKICAgICAgICAgdW5zaWduZWQgYWR2YW5jZUxlbmd0aCA9IGNsdXN0
ZXJMZW5ndGg7Ci0gICAgICAgIHVuc2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXIgPSB0ZXh0SXRlcmF0
b3IuY3VycmVudENoYXJhY3RlcigpOworICAgICAgICBpbnQgY3VycmVudENoYXJhY3RlciA9IHRl
eHRJdGVyYXRvci5jdXJyZW50Q2hhcmFjdGVyKCk7CiAgICAgICAgIGNvbnN0IEdseXBoRGF0YSYg
Z2x5cGhEYXRhID0gZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlciwgcnRsLCBjdXJyZW50
Q2hhcmFjdGVyLCBhZHZhbmNlTGVuZ3RoKTsKICAgICAgICAgR2x5cGggZ2x5cGggPSBnbHlwaERh
dGEuZ2x5cGg7CiAgICAgICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSA9IGdseXBo
RGF0YS5mb250RGF0YTsKQEAgLTMyNywxNCArMzI3LDE0IEBAIGlubGluZSB1bnNpZ25lZCBXaWR0
aEl0ZXJhdG9yOjphZHZhbmNlSW50ZXJuYWwoVGV4dEl0ZXJhdG9yJiB0ZXh0SXRlcmF0b3IsIEds
eXBoCiAgICAgcmV0dXJuIGNvbnN1bWVkQ2hhcmFjdGVyczsKIH0KIAotdW5zaWduZWQgV2lkdGhJ
dGVyYXRvcjo6YWR2YW5jZSh1bnNpZ25lZCBvZmZzZXQsIEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZl
cikKK3Vuc2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2UoaW50IG9mZnNldCwgR2x5cGhCdWZm
ZXIqIGdseXBoQnVmZmVyKQogewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fcnVuLmxlbmd0aCgp
OworICAgIGludCBsZW5ndGggPSBtX3J1bi5sZW5ndGgoKTsKIAogICAgIGlmIChvZmZzZXQgPiBs
ZW5ndGgpCiAgICAgICAgIG9mZnNldCA9IGxlbmd0aDsKIAotICAgIGlmIChtX2N1cnJlbnRDaGFy
YWN0ZXIgPj0gb2Zmc2V0KQorICAgIGlmIChtX2N1cnJlbnRDaGFyYWN0ZXIgPj0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG9mZnNldCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKG1fcnVu
LmlzOEJpdCgpKSB7CkBAIC0zNDgsMTAgKzM0OCwxMCBAQCB1bnNpZ25lZCBXaWR0aEl0ZXJhdG9y
OjphZHZhbmNlKHVuc2lnbmVkIG9mZnNldCwgR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyKQogCiBi
b29sIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2VPbmVDaGFyYWN0ZXIoZmxvYXQmIHdpZHRoLCBHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgb2xkU2l6ZSA9IGdseXBoQnVm
ZmVyLnNpemUoKTsKKyAgICBpbnQgb2xkU2l6ZSA9IGdseXBoQnVmZmVyLnNpemUoKTsKICAgICBh
ZHZhbmNlKG1fY3VycmVudENoYXJhY3RlciArIDEsICZnbHlwaEJ1ZmZlcik7CiAgICAgZmxvYXQg
dyA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gb2xkU2l6ZTsgaSA8IGdseXBoQnVmZmVyLnNp
emUoKTsgKytpKQorICAgIGZvciAoaW50IGkgPSBvbGRTaXplOyBpIDwgZ2x5cGhCdWZmZXIuc2l6
ZSgpOyArK2kpCiAgICAgICAgIHcgKz0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7
CiAgICAgd2lkdGggPSB3OwogICAgIHJldHVybiBnbHlwaEJ1ZmZlci5zaXplKCkgPiBvbGRTaXpl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVy
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5o
CmluZGV4IGZkYzRiYTRjZTM1NjFhMTVkNDExM2EzZjEyOWRkYmU1ZjExMTE4ZDAuLmNkMDZkN2M0
ZGNjNDEyMGE2NmEzZDA0NDg3YWU4OGZkY2ExMzk4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3Ry
dWN0IFdpZHRoSXRlcmF0b3IgewogcHVibGljOgogICAgIFdpZHRoSXRlcmF0b3IoY29uc3QgRm9u
dCosIGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qIGZhbGxi
YWNrRm9udHMgPSAwLCBib29sIGFjY291bnRGb3JHbHlwaEJvdW5kcyA9IGZhbHNlLCBib29sIGZv
clRleHRFbXBoYXNpcyA9IGZhbHNlKTsKIAotICAgIHVuc2lnbmVkIGFkdmFuY2UodW5zaWduZWQg
dG8sIEdseXBoQnVmZmVyKik7CisgICAgdW5zaWduZWQgYWR2YW5jZShpbnQgdG8sIEdseXBoQnVm
ZmVyKik7CiAgICAgYm9vbCBhZHZhbmNlT25lQ2hhcmFjdGVyKGZsb2F0JiB3aWR0aCwgR2x5cGhC
dWZmZXImKTsKIAogICAgIGZsb2F0IG1heEdseXBoQm91bmRpbmdCb3hZKCkgY29uc3QgeyBBU1NF
UlQobV9hY2NvdW50Rm9yR2x5cGhCb3VuZHMpOyByZXR1cm4gbV9tYXhHbHlwaEJvdW5kaW5nQm94
WTsgfQpAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBH
bHlwaERhdGEgZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIsIGJvb2wgbWlycm9yLCB1bnNp
Z25lZCBjdXJyZW50Q2hhcmFjdGVyLCB1bnNpZ25lZCYgYWR2YW5jZUxlbmd0aCk7CisgICAgR2x5
cGhEYXRhIGdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyLCBib29sIG1pcnJvciwgaW50IGN1
cnJlbnRDaGFyYWN0ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVuZ3RoKTsKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGV4dEl0ZXJhdG9yPgogICAgIGlubGluZSB1bnNpZ25lZCBhZHZhbmNlSW50ZXJu
YWwoVGV4dEl0ZXJhdG9yJiwgR2x5cGhCdWZmZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKaW5kZXggMjkxNzFiZjBj
MWU5YTM3MDVkOTNjNzBlNmE3ZTU3YWI2MDE0MGYzZC4uYzE5MGFiYTIzZmNlYTM5ZjRiOTQ4ZDIy
NzMxNWVmNWJmMzExMTVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lk
IGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0UG9pbnQmCiB9CiAKIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYg
Z2x5cGhCdWZmZXIsCi0gICAgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJv
bSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAg
aWYgKCFmb250LT5wbGF0Zm9ybURhdGEoKS5zaXplKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEw
Miw3ICsxMDIsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogICAgIEdseXBoQnVmZmVyR2x5
cGgqIGdseXBocyA9IGNvbnN0X2Nhc3Q8R2x5cGhCdWZmZXJHbHlwaCo+KGdseXBoQnVmZmVyLmds
eXBocyhmcm9tKSk7CiAKICAgICBmbG9hdCBvZmZzZXQgPSBwb2ludC54KCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bUdseXBoczsgaSsrKSB7CisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1HbHlwaHM7IGkrKykgewogICAgICAgICBnbHlwaHNbaV0ueCA9IG9mZnNldDsKICAg
ICAgICAgZ2x5cGhzW2ldLnkgPSBwb2ludC55KCk7CiAgICAgICAgIG9mZnNldCArPSBnbHlwaEJ1
ZmZlci5hZHZhbmNlQXQoZnJvbSArIGkpLndpZHRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6Tkcu
Y3BwCmluZGV4IGNiMDhjY2FkMzVmOTg4YzExZTRkMWE3OGU0YjhiMWE2YTQ4ZDI5MjIuLmU4NDc4
MTBhMzlhYjhmMmZmNWZmZWZiZWYzMmI1MTJkYjBmZTliZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZi
dXp6TkcuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZmxv
YXQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQsIHVuc2lnbmVk
KSBjb25zdAorZmxvYXQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50LCBp
bnQpIGNvbnN0CiB7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAgICAgSGFyZkJ1enpT
aGFwZXIgc2hhcGVyKHRoaXMsIHJ1bik7CkBAIC01Miw3ICs1Miw3IEBAIGZsb2F0IEZvbnQ6OmRy
YXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1
biwgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBGb250OjpkcmF3RW1waGFzaXNNYXJr
c0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogLyogY29udGV4dCAqLywgY29uc3QgVGV4
dFJ1biYgLyogcnVuICovLCBjb25zdCBBdG9taWNTdHJpbmcmIC8qIG1hcmsgKi8sIGNvbnN0IEZs
b2F0UG9pbnQmIC8qIHBvaW50ICovLCB1bnNpZ25lZCAvKiBmcm9tICovLCB1bnNpZ25lZCAvKiB0
byAqLykgY29uc3QKK3ZvaWQgRm9udDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChH
cmFwaGljc0NvbnRleHQqIC8qIGNvbnRleHQgKi8sIGNvbnN0IFRleHRSdW4mIC8qIHJ1biAqLywg
Y29uc3QgQXRvbWljU3RyaW5nJiAvKiBtYXJrICovLCBjb25zdCBGbG9hdFBvaW50JiAvKiBwb2lu
dCAqLywgaW50IC8qIGZyb20gKi8sIGludCAvKiB0byAqLykgY29uc3QKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQpAQCAtODUsNyArODUsNyBAQCBpbnQgRm9udDo6b2Zmc2V0Rm9yUG9zaXRp
b25Gb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvb2wpIGNvbgog
ICAgIHJldHVybiAwOwogfQogCi12b2lkIEZvbnQ6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JDb21w
bGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVu
c2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdAordm9pZCBGb250OjphZGp1c3RTZWxlY3Rp
b25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxl
Y3Rpb25SZWN0LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewogICAgIEhhcmZCdXp6U2hhcGVy
IHNoYXBlcih0aGlzLCBydW4pOwogICAgIGlmIChzaGFwZXIuc2hhcGUoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFw
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1
enpTaGFwZXIuY3BwCmluZGV4IDQyMzRkNmExNGUyYjhkN2UyZTAxZDNiZDY4ZmExMjc0NmFlMDBk
M2QuLjliOGU0ZTBhOWQyMTNiNTI1NmQ3N2MwYjNmZGI4NTJjYzM2YTU2ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJm
QnV6elNoYXBlci5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIEhhcmZCdXp6U2hhcGVyOjpz
ZXROb3JtYWxpemVkQnVmZmVyKE5vcm1hbGl6ZU1vZGUgbm9ybWFsaXplTW9kZSkKICAgICB9IGVs
c2UKICAgICAgICAgcnVuQ2hhcmFjdGVycyA9IG1fcnVuLmNoYXJhY3RlcnMxNigpOwogCi0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcnVuLmxlbmd0aCgpOyArK2kpIHsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG1fcnVuLmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgVUNoYXIgY2gg
PSBydW5DaGFyYWN0ZXJzW2ldOwogICAgICAgICBpZiAoOjp1YmxvY2tfZ2V0Q29kZShjaCkgPT0g
VUJMT0NLX0NPTUJJTklOR19ESUFDUklUSUNBTF9NQVJLUykgewogICAgICAgICAgICAgaWN1OjpO
b3JtYWxpemVyOjpub3JtYWxpemUoaWN1OjpVbmljb2RlU3RyaW5nKHJ1bkNoYXJhY3RlcnMsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENvbXBs
ZXhUZXh0TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q29tcGxleFRleHRNYWMuY3BwCmluZGV4IGZiZTEyNWE3OWVkNTg3NzQ4Yzg5MzU2ZDRiMWEwZjI4
YTY2ZTc5YTYuLjgzMjViMmY1ZGU3YTQ0ZGU3YjZhODYwMWE2N2QxMTJkNWUwMThmNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q29tcGxleFRl
eHRNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q29tcGxleFRleHRNYWMuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdm9pZCBGb250OjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3Qg
VGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tLCB1
bnNpZ25lZCB0bykgY29uc3QKK3ZvaWQgRm9udDo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBs
ZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgaW50
IGZyb20sIGludCB0bykgY29uc3QKIHsKICAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIgY29udHJv
bGxlcih0aGlzLCBydW4pOwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZShmcm9tKTsKQEAgLTUyLDcg
KzUyLDcgQEAgdm9pZCBGb250OjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29u
c3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWwKICAgICBzZWxlY3Rpb25SZWN0LnNldFdp
ZHRoKGFmdGVyV2lkdGggLSBiZWZvcmVXaWR0aCk7CiB9CiAKLWZsb2F0IEZvbnQ6OmdldEdseXBo
c0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFz
aXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CitmbG9hdCBGb250OjpnZXRHbHlwaHNBbmRB
ZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgaW50IGZyb20sIGludCB0
bywgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JUZXh0
RW1waGFzaXMpIGNvbnN0CiB7CiAgICAgZmxvYXQgaW5pdGlhbEFkdmFuY2U7CiAKQEAgLTc1LDcg
Kzc1LDcgQEAgZmxvYXQgRm9udDo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChj
b25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20KICAgICByZXR1cm4gaW5pdGlhbEFkdmFu
Y2U7CiB9CiAKLWZsb2F0IEZvbnQ6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2ln
bmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdAorZmxvYXQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKIHsKICAgICAvLyBUaGlzIGds
eXBoIGJ1ZmZlciBob2xkcyBvdXIgZ2x5cGhzICsgYWR2YW5jZXMgKyBmb250IGRhdGEgZm9yIGVh
Y2ggZ2x5cGguCiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBAIC05Myw3ICs5Myw3IEBA
IGZsb2F0IEZvbnQ6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICAgICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBzdGFy
dFg7CiB9CiAKLXZvaWQgRm9udDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3Ry
aW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgdG8pIGNvbnN0Cit2b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21p
Y1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8p
IGNvbnN0CiB7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAgICAgZmxvYXQgaW5pdGlh
bEFkdmFuY2UgPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgZnJvbSwg
dG8sIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFzaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udE1hYy5tbQppbmRleCAwNTllMWZlY2VjNDc2ZjI5MzQ4
NzZiNDg0ZmViYWQ5ZDI3YzZiMjdiLi5jNzcxZWU5ZTliNWM5MGE0YTNlOWUwYjc4ZjkyYmU3MGUy
OGU3MzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dE1hYy5tbQpAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyB2b2lkIHNob3dHbHlwaHNXaXRoQWR2
YW5jZXMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IFNpbXBsZUZvbnREYXRhCiAgICAg
fQogfQogCi12b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVy
LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFu
Y2hvclBvaW50KSBjb25zdAordm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBn
bHlwaEJ1ZmZlciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFu
Y2hvclBvaW50KSBjb25zdAogewogICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3Jt
RGF0YSA9IGZvbnQtPnBsYXRmb3JtRGF0YSgpOwogICAgIGlmICghcGxhdGZvcm1EYXRhLnNpemUo
KSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNl
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtb3ZlVG9OZXh0VmFsaWRHbHlwaCgpOwogCi0gICAgdW5z
aWduZWQgbV9pbmRleDsKKyAgICBpbnQgbV9pbmRleDsKICAgICBjb25zdCBUZXh0UnVuJiBtX3Rl
eHRSdW47CiAgICAgY29uc3QgR2x5cGhCdWZmZXImIG1fZ2x5cGhCdWZmZXI7CiAgICAgY29uc3Qg
U2ltcGxlRm9udERhdGEqIG1fZm9udERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCmluZGV4IDc2Yjg2ODU1NWQ1ZmQ5OWI0ZTMy
MGIxYjE0YjYzZDE5N2RiOGU2NGQuLmJhMTNkZDBkMTVkYzI3Mjc2ZTUyNTA0YmU2MDkxZjMzZGEx
NGU3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q0dXaW4uY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIENHUGF0aFJlZiBjcmVhdGVQ
YXRoRm9yR2x5cGgoSERDIGhkYywgR2x5cGggZ2x5cGgpCiB9CiAKIHZvaWQgRm9udDo6ZHJhd0ds
eXBocyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgU2ltcGxlRm9udERh
dGEqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgCi0gICAgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QK
KyAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGdy
YXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgYm9vbCBzaG91bGRVc2VGb250
U21vb3RoaW5nID0gV2ViQ29yZVNob3VsZFVzZUZvbnRTbW9vdGhpbmcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcAppbmRleCAwNmM2YzAw
MmMwYWI5Y2MyYzM4ODA4MTk1NjE0ZWMyNzdkMTkzNmMwLi5jNjZiMmM0MGY2Nzc2NjI5NTBmNTIy
ZjhmY2QzZTM5NWQ2NTI5NDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRXaW4uY3BwCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wgRm9udDo6Y2FuRXhw
YW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBGb250OjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4
dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tLCB1bnNp
Z25lZCB0bykgY29uc3QKK3ZvaWQgRm9udDo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhU
ZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgaW50IGZy
b20sIGludCB0bykgY29uc3QKIHsKICAgICBVbmlzY3JpYmVDb250cm9sbGVyIGl0KHRoaXMsIHJ1
bik7CiAgICAgaXQuYWR2YW5jZShmcm9tKTsKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBGb250Ojph
ZGp1c3RTZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlv
dXRSZWN0JiBzZWwKICAgICBzZWxlY3Rpb25SZWN0LnNldFdpZHRoKGFmdGVyV2lkdGggLSBiZWZv
cmVXaWR0aCk7CiB9CiAKLWZsb2F0IEZvbnQ6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxl
eFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5
cGhCdWZmZXImIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JUZXh0RW1waGFz
aXMpIGNvbnN0CitmbG9hdCBGb250OjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0
KGNvbnN0IFRleHRSdW4mIHJ1biwgaW50IGZyb20sIGludCB0bywgR2x5cGhCdWZmZXImIGdseXBo
QnVmZmVyLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CiB7CiAg
ICAgaWYgKGZvclRleHRFbXBoYXNpcykgewogICAgICAgICAvLyBGSVhNRTogQWRkIGZvclRleHRF
bXBoYXNpcyBwYXJlbWV0ZXIgdG8gVW5pc2NyaWJlQ29udHJvbGxlciBhbmQgdXNlIGl0LgpAQCAt
OTIsNyArOTIsNyBAQCBmbG9hdCBGb250OjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhU
ZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbQogICAgIHJldHVybiBiZWZvcmVX
aWR0aDsKIH0KIAotZmxvYXQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0CitmbG9hdCBGb250OjpkcmF3Q29tcGxleFRl
eHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewogICAgIC8vIFRoaXMg
Z2x5cGggYnVmZmVyIGhvbGRzIG91ciBnbHlwaHMgKyBhZHZhbmNlcyArIGZvbnQgZGF0YSBmb3Ig
ZWFjaCBnbHlwaC4KICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKQEAgLTEwOSw3ICsxMDks
NyBAQCBmbG9hdCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0CiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0g
c3RhcnRYOwogfQogCi12b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21p
Y1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHVu
c2lnbmVkIHRvKSBjb25zdAordm9pZCBGb250OjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhU
ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBB
dG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50
IHRvKSBjb25zdAogewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwogICAgIGZsb2F0IGlu
aXRpYWxBZHZhbmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZy
b20sIHRvLCBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRXaW5DRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250V2luQ0UuY3BwCmluZGV4IGUwYjNm
NjMwZWJkYjkzZDc2NmMxNzMxYTA2OTk1NzVkYmY0NGRlZDEuLmVkNzI2MjdjM2U5ODY2YWI5MTli
MGRiYjQ5NjEzMTFjZGI1ZDc2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbmNlL0ZvbnRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvRm9udFdpbkNFLmNwcApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6
CiBTY3JlZW5EY1JlbGVhc2VyIHJlbGVhc2VTY3JlZW5EYzsKIAogdm9pZCBGb250OjpkcmF3R2x5
cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0
YSogZm9udERhdGEsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKLSAgICB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25z
dAorICAgICAgICAgICAgICAgICAgICAgIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUZXh0
KGZvbnREYXRhLCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7CiB9CkBAIC0y
MDYsNyArMjA2LDcgQEAgc3RhdGljIGludCBnZW5lcmF0ZUNvbXBvbmVudHMoVGV4dFJ1bkNvbXBv
bmVudHMqIGNvbXBvbmVudHMsIGNvbnN0IEZvbnQgJmZvbnQsIGMKICAgICByZXR1cm4gb2Zmc2V0
OwogfQogCi1mbG9hdCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3QKK2Zsb2F0IEZvbnQ6OmRyYXdDb21wbGV4VGV4dChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgaWYgKHRvIDwgMCkK
ICAgICAgICAgdG8gPSBydW4ubGVuZ3RoKCk7CkBAIC0yMzcsNyArMjM3LDcgQEAgZmxvYXQgRm9u
dDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1
biYgcnVuLCBjb25zdAogICAgIHJldHVybiB3aWR0aE9mRHJhd25UZXh0OwogfQogCi12b2lkIEZv
bnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiAvKiBj
b250ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21pY1N0cmluZyYg
LyogbWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIHVuc2lnbmVkIC8qIGZy
b20gKi8sIHVuc2lnbmVkIC8qIHRvICovKSBjb25zdAordm9pZCBGb250OjpkcmF3RW1waGFzaXNN
YXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogLyogY29udGV4dCAqLywgY29uc3Qg
VGV4dFJ1biYgLyogcnVuICovLCBjb25zdCBBdG9taWNTdHJpbmcmIC8qIG1hcmsgKi8sIGNvbnN0
IEZsb2F0UG9pbnQmIC8qIHBvaW50ICovLCBpbnQgLyogZnJvbSAqLywgaW50IC8qIHRvICovKSBj
b25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC0zMjEsNyArMzIxLDcgQEAgc3Rh
dGljIGZsb2F0IGN1cnNvclRvWChjb25zdCBGb250KiBmb250LCBjb25zdCBUZXh0UnVuQ29tcG9u
ZW50cyYgY29tcG9uZW50cywgaW4KIH0KIAogRmxvYXRSZWN0IEZvbnQ6OnNlbGVjdGlvblJlY3RG
b3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHB0LAot
ICAgIGludCBoLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3QKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaCwgaW50IGZyb20sIGludCB0bykgY29uc3QK
IHsKICAgICBUZXh0UnVuQ29tcG9uZW50cyBjb21wb25lbnRzOwogICAgIGludCB3ID0gZ2VuZXJh
dGVDb21wb25lbnRzKCZjb21wb25lbnRzLCAqdGhpcywgcnVuKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAxMmZkNTFjYWI1Yjg2MmU4NDNlNmUyM2Vl
Mzc3NzAxMzlmMzVhOGQ3Li5hYTQ0ZGNlN2M0YjAzMmMwNDVkZGNmN2MyYWUxZWNlMWZjNDM1NGQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0xOTYs
MjYgKzE5NiwyMSBAQCBMYXlvdXRVbml0IElubGluZVRleHRCb3g6OnNlbGVjdGlvbkhlaWdodCgp
IGNvbnN0CiAgICAgcmV0dXJuIHJvb3QoKS5zZWxlY3Rpb25IZWlnaHQoKTsKIH0KIAotYm9vbCBJ
bmxpbmVUZXh0Qm94Ojppc1NlbGVjdGVkKHVuc2lnbmVkIHN0YXJ0UG9zLCB1bnNpZ25lZCBlbmRQ
b3MpIGNvbnN0Citib29sIElubGluZVRleHRCb3g6OmlzU2VsZWN0ZWQoaW50IHN0YXJ0UG9zLCBp
bnQgZW5kUG9zKSBjb25zdAogewotICAgIHVuc2lnbmVkIHNQb3MgPSBzdGFydFBvcyA+IG1fc3Rh
cnQgPyBzdGFydFBvcyAtIG1fc3RhcnQgOiAwOwotICAgIGlmIChlbmRQb3MgPD0gbV9zdGFydCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIGVQb3MgPSBzdGQ6Om1pbihlbmRQ
b3MgLSBtX3N0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9sZW4pKTsKLSAgICByZXR1cm4g
c1BvcyA8IGVQb3M7CisgICAgaW50IHNQb3MgPSBzdGQ6Om1heChzdGFydFBvcyAtIG1fc3RhcnQs
IDApOworICAgIGludCBlUG9zID0gc3RkOjptaW4oZW5kUG9zIC0gbV9zdGFydCwgc3RhdGljX2Nh
c3Q8aW50PihtX2xlbikpOworICAgIHJldHVybiAoc1BvcyA8IGVQb3MpOwogfQogCiBSZW5kZXJP
YmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXRlKCkKIHsK
ICAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHN0YXRlID0gcmVuZGVyZXIoKS5zZWxl
Y3Rpb25TdGF0ZSgpOwogICAgIGlmIChzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0
YXJ0IHx8IHN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5kIHx8IHN0YXRlID09IFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uQm90aCkgewotICAgICAgICBpbnQgaW5pdGlhbFN0YXJ0UG9z
LCBpbml0aWFsRW5kUG9zOwotICAgICAgICByZW5kZXJlcigpLnNlbGVjdGlvblN0YXJ0RW5kKGlu
aXRpYWxTdGFydFBvcywgaW5pdGlhbEVuZFBvcyk7Ci0gICAgICAgIEFTU0VSVChpbml0aWFsU3Rh
cnRQb3MgPj0gMCAmJiBpbml0aWFsRW5kUG9zID49IDApOwotICAgICAgICB1bnNpZ25lZCBzdGFy
dFBvcyA9IGluaXRpYWxTdGFydFBvczsKLSAgICAgICAgdW5zaWduZWQgZW5kUG9zID0gaW5pdGlh
bEVuZFBvczsKKyAgICAgICAgaW50IHN0YXJ0UG9zLCBlbmRQb3M7CisgICAgICAgIHJlbmRlcmVy
KCkuc2VsZWN0aW9uU3RhcnRFbmQoc3RhcnRQb3MsIGVuZFBvcyk7CiAgICAgICAgIC8vIFRoZSBw
b3NpdGlvbiBhZnRlciBhIGhhcmQgbGluZSBicmVhayBpcyBjb25zaWRlcmVkIHRvIGJlIHBhc3Qg
aXRzIGVuZC4KLSAgICAgICAgdW5zaWduZWQgbGFzdFNlbGVjdGFibGUgPSBzdGFydCgpICsgbGVu
KCkgLSAoaXNMaW5lQnJlYWsoKSA/IDEgOiAwKTsKKyAgICAgICAgaW50IGxhc3RTZWxlY3RhYmxl
ID0gc3RhcnQoKSArIGxlbigpIC0gKGlzTGluZUJyZWFrKCkgPyAxIDogMCk7CiAKICAgICAgICAg
Ym9vbCBzdGFydCA9IChzdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkVuZCAmJiBzdGFy
dFBvcyA+PSBtX3N0YXJ0ICYmIHN0YXJ0UG9zIDwgbV9zdGFydCArIG1fbGVuKTsKICAgICAgICAg
Ym9vbCBlbmQgPSAoc3RhdGUgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCAmJiBlbmRQ
b3MgPiBtX3N0YXJ0ICYmIGVuZFBvcyA8PSBsYXN0U2VsZWN0YWJsZSk7CkBAIC0yMzYsNyArMjMx
LDcgQEAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rp
b25TdGF0ZSgpCiAgICAgaWYgKG1fdHJ1bmNhdGlvbiAhPSBjTm9UcnVuY2F0aW9uICYmIHJvb3Qo
KS5lbGxpcHNpc0JveCgpKSB7CiAgICAgICAgIEVsbGlwc2lzQm94KiBlbGxpcHNpcyA9IHJvb3Qo
KS5lbGxpcHNpc0JveCgpOwogICAgICAgICBpZiAoc3RhdGUgIT0gUmVuZGVyT2JqZWN0OjpTZWxl
Y3Rpb25Ob25lKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBzdGFydCwgZW5kOworICAgICAgICAg
ICAgaW50IHN0YXJ0LCBlbmQ7CiAgICAgICAgICAgICBzZWxlY3Rpb25TdGFydEVuZChzdGFydCwg
ZW5kKTsKICAgICAgICAgICAgIC8vIFRoZSBlbGxpcHNpcyBzaG91bGQgYmUgY29uc2lkZXJlZCB0
byBiZSBzZWxlY3RlZCBpZiB0aGUgZW5kIG9mCiAgICAgICAgICAgICAvLyB0aGUgc2VsZWN0aW9u
IGlzIHBhc3QgdGhlIGJlZ2lubmluZyBvZiB0aGUgdHJ1bmNhdGlvbiBhbmQgdGhlCkBAIC0yNTEs
NyArMjQ2LDcgQEAgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBJbmxpbmVUZXh0Qm94Ojpz
ZWxlY3Rpb25TdGF0ZSgpCiAgICAgcmV0dXJuIHN0YXRlOwogfQogCi1zdGF0aWMgdm9pZCBhZGp1
c3RDaGFyYWN0ZXJzQW5kTGVuZ3RoRm9ySHlwaGVuKEJ1ZmZlckZvckFwcGVuZGluZ0h5cGhlbiYg
Y2hhcmFjdGVyc1dpdGhIeXBoZW4sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgU3RyaW5nJiBz
dHJpbmcsIHVuc2lnbmVkJiBsZW5ndGgpCitzdGF0aWMgdm9pZCBhZGp1c3RDaGFyYWN0ZXJzQW5k
TGVuZ3RoRm9ySHlwaGVuKEJ1ZmZlckZvckFwcGVuZGluZ0h5cGhlbiYgY2hhcmFjdGVyc1dpdGhI
eXBoZW4sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgU3RyaW5nJiBzdHJpbmcsIGludCYgbGVu
Z3RoKQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaHlwaGVuU3RyaW5nID0gc3R5bGUuaHlw
aGVuU3RyaW5nKCk7CiAgICAgY2hhcmFjdGVyc1dpdGhIeXBoZW4ucmVzZXJ2ZUNhcGFjaXR5KGxl
bmd0aCArIGh5cGhlblN0cmluZy5sZW5ndGgoKSk7CkBAIC0yNzEsMTQgKzI2NiwxMCBAQCBzdGF0
aWMgY29uc3QgRm9udCYgZm9udFRvVXNlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
UmVuZGVyVGV4dCYgcmVuZGVyZQogICAgIHJldHVybiBzdHlsZS5mb250KCk7CiB9CiAKLUxheW91
dFJlY3QgSW5saW5lVGV4dEJveDo6bG9jYWxTZWxlY3Rpb25SZWN0KHVuc2lnbmVkIHN0YXJ0UG9z
LCB1bnNpZ25lZCBlbmRQb3MpIGNvbnN0CitMYXlvdXRSZWN0IElubGluZVRleHRCb3g6OmxvY2Fs
U2VsZWN0aW9uUmVjdChpbnQgc3RhcnRQb3MsIGludCBlbmRQb3MpIGNvbnN0CiB7Ci0gICAgdW5z
aWduZWQgc1BvcyA9IHN0YXJ0UG9zID4gbV9zdGFydCA/IHN0YXJ0UG9zIC0gbV9zdGFydCA6IDA7
Ci0gICAgCi0gICAgaWYgKGVuZFBvcyA8PSBtX3N0YXJ0KQotICAgICAgICByZXR1cm4gTGF5b3V0
UmVjdCgpOwotCi0gICAgdW5zaWduZWQgZVBvcyA9IHN0ZDo6bWluKGVuZFBvcyAtIG1fc3RhcnQs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2xlbikpOworICAgIGludCBzUG9zID0gc3RkOjptYXgo
c3RhcnRQb3MgLSBtX3N0YXJ0LCAwKTsKKyAgICBpbnQgZVBvcyA9IHN0ZDo6bWluKGVuZFBvcyAt
IG1fc3RhcnQsIChpbnQpbV9sZW4pOwogICAgIAogICAgIGlmIChzUG9zID4gZVBvcykKICAgICAg
ICAgcmV0dXJuIExheW91dFJlY3QoKTsKQEAgLTI5MywxMCArMjg0LDEyIEBAIExheW91dFJlY3Qg
SW5saW5lVGV4dEJveDo6bG9jYWxTZWxlY3Rpb25SZWN0KHVuc2lnbmVkIHN0YXJ0UG9zLCB1bnNp
Z25lZCBlbmRQb3MpCiAgICAgQnVmZmVyRm9yQXBwZW5kaW5nSHlwaGVuIGNoYXJhY3RlcnNXaXRo
SHlwaGVuOwogICAgIGJvb2wgcmVzcGVjdEh5cGhlbiA9IGVQb3MgPT0gbV9sZW4gJiYgaGFzSHlw
aGVuKCk7CiAgICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bihsaW5lU3R5bGUs
IGZvbnQsIHJlc3BlY3RIeXBoZW4gPyAmY2hhcmFjdGVyc1dpdGhIeXBoZW4gOiAwKTsKKyAgICBp
ZiAocmVzcGVjdEh5cGhlbikKKyAgICAgICAgZW5kUG9zID0gdGV4dFJ1bi5sZW5ndGgoKTsKIAog
ICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QoTGF5b3V0UG9pbnQobG9n
aWNhbExlZnQoKSwgc2VsZWN0aW9uVG9wKSwgTGF5b3V0U2l6ZShtX2xvZ2ljYWxXaWR0aCwgc2Vs
ZWN0aW9uSGVpZ2h0KSk7CiAgICAgLy8gQXZvaWQgY29tcHV0aW5nIHRoZSBmb250IHdpZHRoIHdo
ZW4gdGhlIGVudGlyZSBsaW5lIGJveCBpcyBzZWxlY3RlZCBhcyBhbiBvcHRpbWl6YXRpb24uCi0g
ICAgaWYgKHNQb3MgfHwgZVBvcyAhPSBtX2xlbikKKyAgICBpZiAoc1BvcyB8fCBlUG9zICE9IHN0
YXRpY19jYXN0PGludD4obV9sZW4pKQogICAgICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RG
b3JUZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIHNQb3MsIGVQb3MpOwogICAgIEludFJlY3Qg
c25hcHBlZFNlbGVjdGlvblJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHNlbGVjdGlvblJlY3QpOwog
ICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoID0gc25hcHBlZFNlbGVjdGlvblJlY3Qud2lkdGgo
KTsKQEAgLTYxMywxNiArNjA2LDE1IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICB9CiAK
ICAgICAvLyAyLiBOb3cgcGFpbnQgdGhlIGZvcmVncm91bmQsIGluY2x1ZGluZyB0ZXh0IGFuZCBk
ZWNvcmF0aW9ucyBsaWtlIHVuZGVybGluZS9vdmVybGluZSAoaW4gcXVpcmtzIG1vZGUgb25seSku
Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gbV9sZW47Ci0gICAgdW5zaWduZWQgbWF4aW11bUxlbmd0
aDsKKyAgICBpbnQgbGVuZ3RoID0gbV9sZW47CisgICAgaW50IG1heGltdW1MZW5ndGg7CiAgICAg
U3RyaW5nIHN0cmluZzsKICAgICBpZiAoIWNvbWJpbmVkVGV4dCkgewogICAgICAgICBzdHJpbmcg
PSByZW5kZXJlcigpLnRleHQoKTsKLSAgICAgICAgaWYgKGxlbmd0aCAhPSBzdHJpbmcubGVuZ3Ro
KCkgfHwgbV9zdGFydCkgewotICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04obV9zdGFydCArIGxlbmd0aCA8PSBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCkgIT0gc3RyaW5nLmxlbmd0aCgpIHx8IG1fc3Rh
cnQpIHsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX3N0YXJ0ICsgbGVuZ3RoKSA8PSBzdHJpbmcubGVuZ3RoKCkpOwog
ICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cmluZ1NoYXJpbmdJbXBsKG1fc3RhcnQs
IGxlbmd0aCk7CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUKHJlbmRlcmVyKCkudGV4dExlbmd0
aCgpID49IG1fc3RhcnQpOwogICAgICAgICBtYXhpbXVtTGVuZ3RoID0gcmVuZGVyZXIoKS50ZXh0
TGVuZ3RoKCkgLSBtX3N0YXJ0OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbWJpbmVkVGV4dC0+
Z2V0U3RyaW5nVG9SZW5kZXIobV9zdGFydCwgc3RyaW5nLCBsZW5ndGgpOwpAQCAtNjM0LDE0ICs2
MjYsMTQgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgIGlmIChoYXNIeXBoZW4oKSkKICAg
ICAgICAgbGVuZ3RoID0gdGV4dFJ1bi5sZW5ndGgoKTsKIAotICAgIHVuc2lnbmVkIHNQb3MgPSAw
OwotICAgIHVuc2lnbmVkIGVQb3MgPSAwOworICAgIGludCBzUG9zID0gMDsKKyAgICBpbnQgZVBv
cyA9IDA7CiAgICAgaWYgKGhhdmVTZWxlY3Rpb24gJiYgKHBhaW50U2VsZWN0ZWRUZXh0T25seSB8
fCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkpKQogICAgICAgICBzZWxlY3Rpb25TdGFydEVu
ZChzUG9zLCBlUG9zKTsKIAogICAgIGlmIChtX3RydW5jYXRpb24gIT0gY05vVHJ1bmNhdGlvbikg
ewotICAgICAgICBzUG9zID0gc3RkOjptaW4oc1Bvcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
dHJ1bmNhdGlvbikpOwotICAgICAgICBlUG9zID0gc3RkOjptaW4oZVBvcywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fdHJ1bmNhdGlvbikpOworICAgICAgICBzUG9zID0gc3RkOjptaW48aW50Pihz
UG9zLCBtX3RydW5jYXRpb24pOworICAgICAgICBlUG9zID0gc3RkOjptaW48aW50PihlUG9zLCBt
X3RydW5jYXRpb24pOwogICAgICAgICBsZW5ndGggPSBtX3RydW5jYXRpb247CiAgICAgfQogCkBA
IC03MDEsMjcgKzY5MywyMiBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgIGNvbnRl
eHQtPmNvbmNhdENUTShyb3RhdGlvbihib3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7CiB9CiAK
LXZvaWQgSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhcnRFbmQodW5zaWduZWQmIHNQb3MsIHVu
c2lnbmVkJiBlUG9zKQordm9pZCBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZChpbnQm
IHNQb3MsIGludCYgZVBvcykKIHsKLSAgICB1bnNpZ25lZCBzdGFydFBvcywgZW5kUG9zOworICAg
IGludCBzdGFydFBvcywgZW5kUG9zOwogICAgIGlmIChyZW5kZXJlcigpLnNlbGVjdGlvblN0YXRl
KCkgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25JbnNpZGUpIHsKICAgICAgICAgc3RhcnRQb3Mg
PSAwOwogICAgICAgICBlbmRQb3MgPSByZW5kZXJlcigpLnRleHRMZW5ndGgoKTsKICAgICB9IGVs
c2UgewotICAgICAgICBpbnQgb3JpZ2luYWxTdGFydFBvcywgb3JpZ2luYWxFbmRQb3M7Ci0gICAg
ICAgIHJlbmRlcmVyKCkuc2VsZWN0aW9uU3RhcnRFbmQob3JpZ2luYWxTdGFydFBvcywgb3JpZ2lu
YWxFbmRQb3MpOwotICAgICAgICBBU1NFUlQob3JpZ2luYWxTdGFydFBvcyA+PSAwICYmIG9yaWdp
bmFsRW5kUG9zID49IDApOwotICAgICAgICBzdGFydFBvcyA9IG9yaWdpbmFsU3RhcnRQb3M7Ci0g
ICAgICAgIGVuZFBvcyA9IG9yaWdpbmFsRW5kUG9zOworICAgICAgICByZW5kZXJlcigpLnNlbGVj
dGlvblN0YXJ0RW5kKHN0YXJ0UG9zLCBlbmRQb3MpOwogICAgICAgICBpZiAocmVuZGVyZXIoKS5z
ZWxlY3Rpb25TdGF0ZSgpID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQpCiAgICAgICAg
ICAgICBlbmRQb3MgPSByZW5kZXJlcigpLnRleHRMZW5ndGgoKTsKICAgICAgICAgZWxzZSBpZiAo
cmVuZGVyZXIoKS5zZWxlY3Rpb25TdGF0ZSgpID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5k
KQogICAgICAgICAgICAgc3RhcnRQb3MgPSAwOwogICAgIH0KLSAgICAKLSAgICBzUG9zID0gc3Rh
cnRQb3MgPiBtX3N0YXJ0ID8gc3RhcnRQb3MgLSBtX3N0YXJ0IDogMDsKLSAgICBlUG9zID0gZW5k
UG9zID4gbV9zdGFydCA/IGVuZFBvcyAtIG1fc3RhcnQgOiAwOwotICAgIGVQb3MgPSBzdGQ6Om1p
bihlUG9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9sZW4pKTsKKworICAgIHNQb3MgPSBzdGQ6
Om1heChzdGFydFBvcyAtIG1fc3RhcnQsIDApOworICAgIGVQb3MgPSBzdGQ6Om1pbihlbmRQb3Mg
LSBtX3N0YXJ0LCAoaW50KW1fbGVuKTsKIH0KIAogdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNl
bGVjdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9y
aWdpbiwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250JiBmb250LCBDb2xvciB0
ZXh0Q29sb3IpCkBAIC03MzEsNyArNzE4LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNl
bGVjdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gU2VlIGlmIHdlIGhhdmUgYSBzZWxlY3Rpb24gdG8gcGFp
bnQgYXQgYWxsLgotICAgIHVuc2lnbmVkIHNQb3MsIGVQb3M7CisgICAgaW50IHNQb3MsIGVQb3M7
CiAgICAgc2VsZWN0aW9uU3RhcnRFbmQoc1BvcywgZVBvcyk7CiAgICAgaWYgKHNQb3MgPj0gZVBv
cykKICAgICAgICAgcmV0dXJuOwpAQCAtNzUwLDcgKzczNyw3IEBAIHZvaWQgSW5saW5lVGV4dEJv
eDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFBv
aW50JiBiCiAgICAgCiAgICAgLy8gSWYgdGhlIHRleHQgaXMgdHJ1bmNhdGVkLCBsZXQgdGhlIHRo
aW5nIGJlaW5nIHBhaW50ZWQgaW4gdGhlIHRydW5jYXRpb24KICAgICAvLyBkcmF3IGl0cyBvd24g
aGlnaGxpZ2h0LgotICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fdHJ1bmNhdGlvbiAhPSBjTm9UcnVu
Y2F0aW9uID8gbV90cnVuY2F0aW9uIDogbV9sZW47CisgICAgaW50IGxlbmd0aCA9IG1fdHJ1bmNh
dGlvbiAhPSBjTm9UcnVuY2F0aW9uID8gbV90cnVuY2F0aW9uIDogbV9sZW47CiAgICAgU3RyaW5n
IHN0cmluZyA9IHJlbmRlcmVyKCkudGV4dCgpOwogCiAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSAh
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKSB8fCBtX3N0YXJ0KSB7CkBAIC03NjAsNyAr
NzQ3LDYgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKIAogICAgIEJ1ZmZlckZvckFwcGVuZGlu
Z0h5cGhlbiBjaGFyYWN0ZXJzV2l0aEh5cGhlbjsKICAgICBib29sIHJlc3BlY3RIeXBoZW4gPSBl
UG9zID09IGxlbmd0aCAmJiBoYXNIeXBoZW4oKTsKLSAgICBBU1NFUlQocmVuZGVyZXIoKS50ZXh0
TGVuZ3RoKCkgPj0gbV9zdGFydCk7CiAgICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3RydWN0VGV4
dFJ1bihzdHlsZSwgZm9udCwgc3RyaW5nLCByZW5kZXJlcigpLnRleHRMZW5ndGgoKSAtIG1fc3Rh
cnQsIHJlc3BlY3RIeXBoZW4gPyAmY2hhcmFjdGVyc1dpdGhIeXBoZW4gOiAwKTsKICAgICBpZiAo
cmVzcGVjdEh5cGhlbikKICAgICAgICAgZVBvcyA9IHRleHRSdW4ubGVuZ3RoKCk7CkBAIC03ODQs
MTIgKzc3MCwxMSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYgogI2VuZGlmCiB9CiAKLXZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvbkJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgY29uc3QgRm9udCYgZm9udCwgdW5zaWduZWQgc3RhcnRQb3MsIHVuc2lnbmVkIGVu
ZFBvcykKK3ZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvbkJhY2tncm91bmQoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udCYgZm9udCwgaW50IHN0YXJ0UG9zLCBpbnQg
ZW5kUG9zKQogewotICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fc3RhcnQ7Ci0gICAgdW5zaWduZWQg
c1BvcyA9IHN0YXJ0UG9zID4gb2Zmc2V0ID8gc3RhcnRQb3MgLSBvZmZzZXQgOiAwOwotICAgIEFT
U0VSVChlbmRQb3MgPj0gb2Zmc2V0KTsKLSAgICB1bnNpZ25lZCBlUG9zID0gc3RkOjptaW4oZW5k
UG9zIC0gb2Zmc2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9sZW4pKTsKKyAgICBpbnQgb2Zm
c2V0ID0gbV9zdGFydDsKKyAgICBpbnQgc1BvcyA9IHN0ZDo6bWF4KHN0YXJ0UG9zIC0gb2Zmc2V0
LCAwKTsKKyAgICBpbnQgZVBvcyA9IHN0ZDo6bWluKGVuZFBvcyAtIG9mZnNldCwgKGludCltX2xl
bik7CiAKICAgICBpZiAoc1BvcyA+PSBlUG9zKQogICAgICAgICByZXR1cm47CkBAIC0xMTI4LDcg
KzExMTMsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RG9jdW1lbnRNYXJrZXIoR3JhcGhp
Y3NDb250ZXh0KiBwdCwgY29uc3QgRmxvYXRQb2ludCYgYgogCiAgICAgLy8gRGV0ZXJtaW5lIHdo
ZXRoZXIgd2UgbmVlZCB0byBtZWFzdXJlIHRleHQKICAgICBib29sIG1hcmtlclNwYW5zV2hvbGVC
b3ggPSB0cnVlOwotICAgIGlmIChtX3N0YXJ0IDw9IG1hcmtlci0+c3RhcnRPZmZzZXQoKSkKKyAg
ICBpZiAobV9zdGFydCA8PSAoaW50KW1hcmtlci0+c3RhcnRPZmZzZXQoKSkKICAgICAgICAgbWFy
a2VyU3BhbnNXaG9sZUJveCA9IGZhbHNlOwogICAgIGlmICgoZW5kKCkgKyAxKSAhPSBtYXJrZXIt
PmVuZE9mZnNldCgpKSAvLyBlbmQgcG9pbnRzIGF0IHRoZSBsYXN0IGNoYXIsIG5vdCBwYXN0IGl0
CiAgICAgICAgIG1hcmtlclNwYW5zV2hvbGVCb3ggPSBmYWxzZTsKQEAgLTExMzcsMTIgKzExMjIs
MTEgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29u
dGV4dCogcHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKIAogICAgIGJvb2wgaXNEaWN0YXRpb25NYXJr
ZXIgPSBtYXJrZXItPnR5cGUoKSA9PSBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRp
dmVzOwogICAgIGlmICghbWFya2VyU3BhbnNXaG9sZUJveCB8fCBncmFtbWFyIHx8IGlzRGljdGF0
aW9uTWFya2VyKSB7Ci0gICAgICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24gPSBtYXJrZXItPnN0
YXJ0T2Zmc2V0KCkgPiBtX3N0YXJ0ID8gbWFya2VyLT5zdGFydE9mZnNldCgpIC0gbV9zdGFydCA6
IDA7Ci0gICAgICAgIEFTU0VSVChtYXJrZXItPmVuZE9mZnNldCgpID49IG1fc3RhcnQpOwotICAg
ICAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IHN0ZDo6bWluKG1hcmtlci0+ZW5kT2Zmc2V0KCkg
LSBtX3N0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9sZW4pKTsKKyAgICAgICAgaW50IHN0
YXJ0UG9zaXRpb24gPSBzdGQ6Om1heDxpbnQ+KG1hcmtlci0+c3RhcnRPZmZzZXQoKSAtIG1fc3Rh
cnQsIDApOworICAgICAgICBpbnQgZW5kUG9zaXRpb24gPSBzdGQ6Om1pbjxpbnQ+KG1hcmtlci0+
ZW5kT2Zmc2V0KCkgLSBtX3N0YXJ0LCBtX2xlbik7CiAgICAgICAgIAogICAgICAgICBpZiAobV90
cnVuY2F0aW9uICE9IGNOb1RydW5jYXRpb24pCi0gICAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0
ZDo6bWluKGVuZFBvc2l0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV90cnVuY2F0aW9uKSk7
CisgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0ZDo6bWluPGludD4oZW5kUG9zaXRpb24sIG1f
dHJ1bmNhdGlvbik7CiAKICAgICAgICAgLy8gQ2FsY3VsYXRlIHN0YXJ0ICYgd2lkdGgKICAgICAg
ICAgaW50IGRlbHRhWSA9IHJlbmRlcmVyKCkuc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdN
b2RlKCkgPyBzZWxlY3Rpb25Cb3R0b20oKSAtIGxvZ2ljYWxCb3R0b20oKSA6IGxvZ2ljYWxUb3Ao
KSAtIHNlbGVjdGlvblRvcCgpOwpAQCAtMTE4OSw5ICsxMTczLDggQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsb2F0UG8KIHsKICAgICBMYXlvdXRVbml0IHNlbGVjdGlvbkhlaWdodCA9IHRoaXMtPnNlbGVj
dGlvbkhlaWdodCgpOwogCi0gICAgdW5zaWduZWQgc1BvcyA9IG1hcmtlci0+c3RhcnRPZmZzZXQo
KSA+IG1fc3RhcnQgPyBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkgLSBtX3N0YXJ0IDogMDsKLSAgICBB
U1NFUlQobWFya2VyLT5lbmRPZmZzZXQoKSA+PSBtX3N0YXJ0KTsKLSAgICB1bnNpZ25lZCBlUG9z
ID0gc3RkOjptaW4obWFya2VyLT5lbmRPZmZzZXQoKSAtIG1fc3RhcnQsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX2xlbikpOworICAgIGludCBzUG9zID0gc3RkOjptYXgobWFya2VyLT5zdGFydE9m
ZnNldCgpIC0gbV9zdGFydCwgKHVuc2lnbmVkKTApOworICAgIGludCBlUG9zID0gc3RkOjptaW4o
bWFya2VyLT5lbmRPZmZzZXQoKSAtIG1fc3RhcnQsICh1bnNpZ25lZCltX2xlbik7CiAgICAgVGV4
dFJ1biBydW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHN0eWxlLCBmb250KTsKIAogICAgIC8vIEFsd2F5
cyBjb21wdXRlIGFuZCBzdG9yZSB0aGUgcmVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBtYXJrZXIu
IFRoZSBjb21wdXRlZCByZWN0IGlzIGluIGFic29sdXRlIGNvb3JkaW5hdGVzLgpAQCAtMTIyMyw5
ICsxMjA2LDggQEAgdm9pZCBJbmxpbmVUZXh0Qm94Ojpjb21wdXRlUmVjdEZvclJlcGxhY2VtZW50
TWFya2VyKERvY3VtZW50TWFya2VyKiBtYXJrZXIsIGNvbnMKICAgICBMYXlvdXRVbml0IHRvcCA9
IHNlbGVjdGlvblRvcCgpOwogICAgIExheW91dFVuaXQgaCA9IHNlbGVjdGlvbkhlaWdodCgpOwog
ICAgIAotICAgIHVuc2lnbmVkIHNQb3MgPSBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkgPiBtX3N0YXJ0
ID8gbWFya2VyLT5zdGFydE9mZnNldCgpIC0gbV9zdGFydCA6IDA7Ci0gICAgQVNTRVJUKG1hcmtl
ci0+ZW5kT2Zmc2V0KCkgPj0gbV9zdGFydCk7Ci0gICAgdW5zaWduZWQgZVBvcyA9IHN0ZDo6bWlu
KG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBtX3N0YXJ0LCAodW5zaWduZWQpbV9sZW4pOworICAgIGlu
dCBzUG9zID0gc3RkOjptYXgobWFya2VyLT5zdGFydE9mZnNldCgpIC0gbV9zdGFydCwgKHVuc2ln
bmVkKTApOworICAgIGludCBlUG9zID0gc3RkOjptaW4obWFya2VyLT5lbmRPZmZzZXQoKSAtIG1f
c3RhcnQsICh1bnNpZ25lZCltX2xlbik7CiAgICAgVGV4dFJ1biBydW4gPSBjb25zdHJ1Y3RUZXh0
UnVuKHN0eWxlLCBmb250KTsKIAogICAgIC8vIENvbXB1dGUgYW5kIHN0b3JlIHRoZSByZWN0IGFz
c29jaWF0ZWQgd2l0aCB0aGlzIG1hcmtlci4KQEAgLTEzMzIsMTEgKzEzMTQsMTEgQEAgdm9pZCBJ
bmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCog
Y3R4LCBjb25zdCBGbG9hdFAKICAgICAgICAgc3RhcnQgPSByZW5kZXJlcigpLndpZHRoKG1fc3Rh
cnQsIHBhaW50U3RhcnQgLSBtX3N0YXJ0LCB0ZXh0UG9zKCksIGlzRmlyc3RMaW5lKCkpOwogICAg
IH0KICAgICBpZiAocGFpbnRFbmQgIT0gdW5kZXJsaW5lLmVuZE9mZnNldCkgeyAgICAgIC8vIGVu
ZCBwb2ludHMgYXQgdGhlIGxhc3QgY2hhciwgbm90IHBhc3QgaXQKLSAgICAgICAgcGFpbnRFbmQg
PSBzdGQ6Om1pbihwYWludEVuZCwgdW5kZXJsaW5lLmVuZE9mZnNldCk7CisgICAgICAgIHBhaW50
RW5kID0gc3RkOjptaW4ocGFpbnRFbmQsICh1bnNpZ25lZCl1bmRlcmxpbmUuZW5kT2Zmc2V0KTsK
ICAgICAgICAgdXNlV2hvbGVXaWR0aCA9IGZhbHNlOwogICAgIH0KICAgICBpZiAobV90cnVuY2F0
aW9uICE9IGNOb1RydW5jYXRpb24pIHsKLSAgICAgICAgcGFpbnRFbmQgPSBzdGQ6Om1pbihwYWlu
dEVuZCwgbV9zdGFydCArIG1fdHJ1bmNhdGlvbik7CisgICAgICAgIHBhaW50RW5kID0gc3RkOjpt
aW4ocGFpbnRFbmQsICh1bnNpZ25lZCltX3N0YXJ0ICsgbV90cnVuY2F0aW9uKTsKICAgICAgICAg
dXNlV2hvbGVXaWR0aCA9IGZhbHNlOwogICAgIH0KICAgICBpZiAoIXVzZVdob2xlV2lkdGgpIHsK
QEAgLTEzOTcsNyArMTM3OSw3IEBAIGludCBJbmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3NpdGlv
bihmbG9hdCBsaW5lT2Zmc2V0LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzCiAgICAgcmV0dXJu
IGZvbnQub2Zmc2V0Rm9yUG9zaXRpb24oY29uc3RydWN0VGV4dFJ1bihsaW5lU3R5bGUsIGZvbnQp
LCBsaW5lT2Zmc2V0IC0gbG9naWNhbExlZnQoKSwgaW5jbHVkZVBhcnRpYWxHbHlwaHMpOwogfQog
Ci1mbG9hdCBJbmxpbmVUZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldCh1bnNpZ25lZCBvZmZzZXQp
IGNvbnN0CitmbG9hdCBJbmxpbmVUZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldChpbnQgb2Zmc2V0
KSBjb25zdAogewogICAgIEFTU0VSVChvZmZzZXQgPj0gbV9zdGFydCk7CiAgICAgQVNTRVJUKG9m
ZnNldCA8PSBtX3N0YXJ0ICsgbV9sZW4pOwpAQCAtMTQwOSw4ICsxMzkxLDggQEAgZmxvYXQgSW5s
aW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQodW5zaWduZWQgb2Zmc2V0KSBjb25zdAogCiAg
ICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSA9IHRoaXMtPmxpbmVTdHlsZSgpOwogICAg
IGNvbnN0IEZvbnQmIGZvbnQgPSBmb250VG9Vc2UobGluZVN0eWxlLCByZW5kZXJlcigpKTsKLSAg
ICB1bnNpZ25lZCBmcm9tID0gIWlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IG9mZnNldCAtIG1f
c3RhcnQgOiAwOwotICAgIHVuc2lnbmVkIHRvID0gIWlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/
IG1fbGVuIDogb2Zmc2V0IC0gbV9zdGFydDsKKyAgICBpbnQgZnJvbSA9ICFpc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKCkgPyBvZmZzZXQgLSBtX3N0YXJ0IDogMDsKKyAgICBpbnQgdG8gPSAhaXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpID8gbV9sZW4gOiBvZmZzZXQgLSBtX3N0YXJ0OwogICAgIC8vIEZJ
WE1FOiBEbyB3ZSBuZWVkIHRvIGFkZCByaWdodEJlYXJpbmcgaGVyZT8KICAgICBMYXlvdXRSZWN0
IHNlbGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0KGxvZ2ljYWxMZWZ0KCksIDAsIDAsIDApOwogICAg
IFRleHRSdW4gcnVuID0gY29uc3RydWN0VGV4dFJ1bihsaW5lU3R5bGUsIGZvbnQpOwpAQCAtMTQy
OCwxNCArMTQxMCwxMyBAQCBUZXh0UnVuIElubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4o
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250JiBmbwogCiAgICAgaWYgKHN0cmlu
Zy5sZW5ndGgoKSAhPSBsZW5ndGggfHwgc3RhcnRQb3MpCiAgICAgICAgIHN0cmluZyA9IHN0cmlu
Zy5zdWJzdHJpbmdTaGFyaW5nSW1wbChzdGFydFBvcywgbGVuZ3RoKTsKLSAgICAKLSAgICBBU1NF
UlQocmVuZGVyZXIoKS50ZXh0TGVuZ3RoKCkgPj0gc3RhcnRQb3MpOworCiAgICAgcmV0dXJuIGNv
bnN0cnVjdFRleHRSdW4oc3R5bGUsIGZvbnQsIHN0cmluZywgcmVuZGVyZXIoKS50ZXh0TGVuZ3Ro
KCkgLSBzdGFydFBvcywgY2hhcmFjdGVyc1dpdGhIeXBoZW4pOwogfQogCi1UZXh0UnVuIElubGlu
ZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBGb250JiBmb250LCBTdHJpbmcgc3RyaW5nLCB1bnNpZ25lZCBtYXhpbXVtTGVuZ3RoLCBCdWZm
ZXJGb3JBcHBlbmRpbmdIeXBoZW4qIGNoYXJhY3RlcnNXaXRoSHlwaGVuKSBjb25zdAorVGV4dFJ1
biBJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgY29uc3QgRm9udCYgZm9udCwgU3RyaW5nIHN0cmluZywgaW50IG1heGltdW1MZW5ndGgsIEJ1
ZmZlckZvckFwcGVuZGluZ0h5cGhlbiogY2hhcmFjdGVyc1dpdGhIeXBoZW4pIGNvbnN0CiB7Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIGludCBsZW5ndGggPSBz
dHJpbmcubGVuZ3RoKCk7CiAKICAgICBpZiAoY2hhcmFjdGVyc1dpdGhIeXBoZW4pIHsKICAgICAg
ICAgYWRqdXN0Q2hhcmFjdGVyc0FuZExlbmd0aEZvckh5cGhlbigqY2hhcmFjdGVyc1dpdGhIeXBo
ZW4sIHN0eWxlLCBzdHJpbmcsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guaAppbmRleCA3ZDNmNWI2NmVmZDgzMTk1NjQ4ZWZiODJiZDNkYmE5MDUzYTJkNGZj
Li5jNDJiNTRlOGQyYjc1OTRmOGFiOWE2Nzg4Zjg5NzlkZmU1NmI4NGIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKQEAgLTExMCwxNSArMTEwLDE1IEBAIHByaXZh
dGU6CiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Cb3R0b20oKSBjb25zdDsKICAgICBMYXlvdXRV
bml0IHNlbGVjdGlvbkhlaWdodCgpIGNvbnN0OwogCi0gICAgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0
UnVuKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udCYsIEJ1ZmZlckZvckFwcGVuZGluZ0h5
cGhlbiogPSBudWxscHRyKSBjb25zdDsKLSAgICBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29u
c3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250JiwgU3RyaW5nLCB1bnNpZ25lZCBtYXhpbXVtTGVu
Z3RoLCBCdWZmZXJGb3JBcHBlbmRpbmdIeXBoZW4qID0gbnVsbHB0cikgY29uc3Q7CisgICAgVGV4
dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udCYsIEJ1
ZmZlckZvckFwcGVuZGluZ0h5cGhlbiogPSAwKSBjb25zdDsKKyAgICBUZXh0UnVuIGNvbnN0cnVj
dFRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250JiwgU3RyaW5nLCBpbnQgbWF4
aW11bUxlbmd0aCwgQnVmZmVyRm9yQXBwZW5kaW5nSHlwaGVuKiA9IDApIGNvbnN0OwogCiBwdWJs
aWM6CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgY2FsY3VsYXRlQm91bmRhcmllcygpIGNvbnN0IHsg
cmV0dXJuIEZsb2F0UmVjdCh4KCksIHkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpOyB9CiAKLSAgICB2
aXJ0dWFsIExheW91dFJlY3QgbG9jYWxTZWxlY3Rpb25SZWN0KHVuc2lnbmVkIHN0YXJ0UG9zLCB1
bnNpZ25lZCBlbmRQb3MpIGNvbnN0OwotICAgIGJvb2wgaXNTZWxlY3RlZCh1bnNpZ25lZCBzdGFy
dFBvcywgdW5zaWduZWQgZW5kUG9zKSBjb25zdDsKLSAgICB2b2lkIHNlbGVjdGlvblN0YXJ0RW5k
KHVuc2lnbmVkJiBzUG9zLCB1bnNpZ25lZCYgZVBvcyk7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0
IGxvY2FsU2VsZWN0aW9uUmVjdChpbnQgc3RhcnRQb3MsIGludCBlbmRQb3MpIGNvbnN0OworICAg
IGJvb2wgaXNTZWxlY3RlZChpbnQgc3RhcnRQb3MsIGludCBlbmRQb3MpIGNvbnN0OworICAgIHZv
aWQgc2VsZWN0aW9uU3RhcnRFbmQoaW50JiBzUG9zLCBpbnQmIGVQb3MpOwogCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jiwg
TGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pOwpAQCAtMTU4LDEzICsx
NTgsMTMgQEAgcHJpdmF0ZToKIAogcHVibGljOgogICAgIHZpcnR1YWwgaW50IG9mZnNldEZvclBv
c2l0aW9uKGZsb2F0IHgsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMgPSB0cnVlKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGZsb2F0IHBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29u
c3Q7CisgICAgdmlydHVhbCBmbG9hdCBwb3NpdGlvbkZvck9mZnNldChpbnQgb2Zmc2V0KSBjb25z
dDsKIAogICAgIC8vIE5lZWRzIHRvIGJlIHB1YmxpYywgc28gdGhlIHN0YXRpYyBwYWludFRleHRX
aXRoU2hhZG93cygpIGZ1bmN0aW9uIGNhbiB1c2UgaXQuCiAgICAgc3RhdGljIEZsb2F0U2l6ZSBh
cHBseVNoYWRvd1RvR3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFNoYWRv
d0RhdGEqLCBjb25zdCBGbG9hdFJlY3QmIHRleHRSZWN0LCBib29sIHN0cm9rZWQsIGJvb2wgb3Bh
cXVlLCBib29sIGhvcml6b250YWwpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBwYWludENvbXBv
c2l0aW9uQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFBvaW50JiBib3hP
cmlnaW4sIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udCYsIHVuc2lnbmVkIHN0YXJ0UG9z
LCB1bnNpZ25lZCBlbmRQb3MpOworICAgIHZvaWQgcGFpbnRDb21wb3NpdGlvbkJhY2tncm91bmQo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBjb25zdCBSZW5k
ZXJTdHlsZSYsIGNvbnN0IEZvbnQmLCBpbnQgc3RhcnRQb3MsIGludCBlbmRQb3MpOwogICAgIHZv
aWQgcGFpbnREb2N1bWVudE1hcmtlcnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRQb2lu
dCYgYm94T3JpZ2luLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnQmLCBib29sIGJhY2tn
cm91bmQpOwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGlvblVuZGVybGluZShHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IENvbXBvc2l0aW9uVW5kZXJs
aW5lJik7CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogICAgIElubGluZVRleHRCb3gq
IG1fcHJldlRleHRCb3g7IC8vIFRoZSBwcmV2aW91cyBib3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJl
bmRlck9iamVjdAogICAgIElubGluZVRleHRCb3gqIG1fbmV4dFRleHRCb3g7IC8vIFRoZSBuZXh0
IGJveCB0aGF0IGFsc28gdXNlcyBvdXIgUmVuZGVyT2JqZWN0CiAKLSAgICB1bnNpZ25lZCBtX3N0
YXJ0OworICAgIGludCBtX3N0YXJ0OwogICAgIHVuc2lnbmVkIHNob3J0IG1fbGVuOwogCiAgICAg
Ly8gV2hlcmUgdG8gdHJ1bmNhdGUgd2hlbiB0ZXh0IG92ZXJmbG93IGlzIGFwcGxpZWQuIFdlIHVz
ZSBzcGVjaWFsIGNvbnN0YW50cyB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb21iaW5lVGV4dC5jcHAKaW5kZXggY2IzNmZmZGJmYTZhMjQ0MzhmYThlMjU1ZDU2MDc4MTU0
MzY4YTIxMi4uM2YwMTNkYjkxZDdmNWM4NzU1ZTUyZDhjNDBlYzk5ZDZhMDZjODNhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCkBAIC03Miw4
ICs3Miw5IEBAIHZvaWQgUmVuZGVyQ29tYmluZVRleHQ6OmFkanVzdFRleHRPcmlnaW4oRmxvYXRQ
b2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRSZWN0CiAgICAgICAgIHRleHRPcmlnaW4ubW92
ZShib3hSZWN0LmhlaWdodCgpIC8gMiAtIGNlaWxmKG1fY29tYmluZWRUZXh0V2lkdGgpIC8gMiwg
c3R5bGUoKS5mb250KCkucGl4ZWxTaXplKCkpOwogfQogCi12b2lkIFJlbmRlckNvbWJpbmVUZXh0
OjpnZXRTdHJpbmdUb1JlbmRlcih1bnNpZ25lZCBzdGFydCwgU3RyaW5nJiBzdHJpbmcsIHVuc2ln
bmVkJiBsZW5ndGgpIGNvbnN0Cit2b2lkIFJlbmRlckNvbWJpbmVUZXh0OjpnZXRTdHJpbmdUb1Jl
bmRlcihpbnQgc3RhcnQsIFN0cmluZyYgc3RyaW5nLCBpbnQmIGxlbmd0aCkgY29uc3QKIHsKKyAg
ICBBU1NFUlQoc3RhcnQgPj0gMCk7CiAgICAgaWYgKG1faXNDb21iaW5lZCkgewogICAgICAgICBz
dHJpbmcgPSBvcmlnaW5hbFRleHQoKTsKICAgICAgICAgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgp
OwpAQCAtODEsNyArODIsNyBAQCB2b2lkIFJlbmRlckNvbWJpbmVUZXh0OjpnZXRTdHJpbmdUb1Jl
bmRlcih1bnNpZ25lZCBzdGFydCwgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbgogICAgIH0KICAKICAg
ICBzdHJpbmcgPSB0ZXh0KCk7Ci0gICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cmluZ1NoYXJpbmdJ
bXBsKHN0YXJ0LCBsZW5ndGgpOworICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHJpbmdTaGFyaW5n
SW1wbChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpLCBsZW5ndGgpOwogfQogCiB2b2lkIFJl
bmRlckNvbWJpbmVUZXh0Ojpjb21iaW5lVGV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJDb21iaW5lVGV4dC5oCmluZGV4IDRjZmY5NjA2OTI2MmEzODM5NTA4YzQyNDI5NzEy
N2EzNDJjMDYzYmYuLjFkZGZlZTkyOWY1YzQ5MDIxYWM5NWJkNzhlOTk0ZGY2OTU1MTM1MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5oCkBAIC0zNiw3
ICszNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tYmluZVRleHQoKTsKICAgICB2b2lkIGFk
anVzdFRleHRPcmlnaW4oRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRSZWN0JiBi
b3hSZWN0KSBjb25zdDsKLSAgICB2b2lkIGdldFN0cmluZ1RvUmVuZGVyKHVuc2lnbmVkLCBTdHJp
bmcmLCB1bnNpZ25lZCYgbGVuZ3RoKSBjb25zdDsKKyAgICB2b2lkIGdldFN0cmluZ1RvUmVuZGVy
KGludCwgU3RyaW5nJiBzdHJpbmcsIGludCYgbGVuZ3RoKSBjb25zdDsKICAgICBib29sIGlzQ29t
YmluZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ29tYmluZWQ7IH0KICAgICBmbG9hdCBjb21iaW5l
ZFRleHRXaWR0aChjb25zdCBGb250JiBmb250KSBjb25zdCB7IHJldHVybiBmb250LnNpemUoKTsg
fQogICAgIGNvbnN0IEZvbnQmIG9yaWdpbmFsRm9udCgpIGNvbnN0IHsgcmV0dXJuIHBhcmVudCgp
LT5zdHlsZSgpLmZvbnQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdJbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHSW5saW5lRmxvd0JveC5jcHAKaW5kZXggNmZiMjc5ZTM0NTgwZDMzNTBmZDlmYmIxMTUzY2U4
YmZmYzFjN2VkZC4uMTdkNDFiZDhmNGJhMTg0YWQxZmY1YjcyN2ExNDA4NzcxMGY0YzYxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guY3Bw
CkBAIC0xMDYsOCArMTA2LDggQEAgdm9pZCBTVkdJbmxpbmVGbG93Qm94Ojpjb21wdXRlVGV4dE1h
dGNoTWFya2VyUmVjdEZvclJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQKICAgICAgICAgICAg
IGlmIChtYXJrZXJTdGFydFBvc2l0aW9uID49IG1hcmtlckVuZFBvc2l0aW9uKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICB1bnNpZ25lZCBmcmFnbWVudFN0YXJ0UG9z
aXRpb24gPSAwOwotICAgICAgICAgICAgdW5zaWduZWQgZnJhZ21lbnRFbmRQb3NpdGlvbiA9IDA7
CisgICAgICAgICAgICBpbnQgZnJhZ21lbnRTdGFydFBvc2l0aW9uID0gMDsKKyAgICAgICAgICAg
IGludCBmcmFnbWVudEVuZFBvc2l0aW9uID0gMDsKIAogICAgICAgICAgICAgY29uc3QgVmVjdG9y
PFNWR1RleHRGcmFnbWVudD4mIGZyYWdtZW50cyA9IHRleHRCb3gtPnRleHRGcmFnbWVudHMoKTsK
ICAgICAgICAgICAgIHVuc2lnbmVkIHRleHRGcmFnbWVudHNTaXplID0gZnJhZ21lbnRzLnNpemUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4
dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3gu
Y3BwCmluZGV4IDFiYjY1YWQ0NmIyYzYwOTg2NDhjODIzNTQyMDhiMzFkMTliM2QxN2EuLmIxOTM2
NzNjODMwNTZmOGY1YmMwYWYwNmI1NjBmMzJmYTgwZTUzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApAQCAtMTAxLDcgKzEwMSw3
IEBAIGludCBTVkdJbmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3NpdGlvbkluRnJhZ21lbnQoY29u
c3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVuCiAgICAgcmV0dXJuIGZyYWdtZW50LmNoYXJhY3Rl
ck9mZnNldCAtIHN0YXJ0KCkgKyByZW5kZXJlcigpLnNjYWxlZEZvbnQoKS5vZmZzZXRGb3JQb3Np
dGlvbih0ZXh0UnVuLCBwb3NpdGlvbiAqIHNjYWxpbmdGYWN0b3IsIGluY2x1ZGVQYXJ0aWFsR2x5
cGhzKTsKIH0KIAotZmxvYXQgU1ZHSW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQodW5z
aWduZWQpIGNvbnN0CitmbG9hdCBTVkdJbmxpbmVUZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldChp
bnQpIGNvbnN0CiB7CiAgICAgLy8gU1ZHIGRvZXNuJ3QgdXNlIHRoZSBvZmZzZXQgPC0+IHBvc2l0
aW9uIHNlbGVjdGlvbiBzeXN0ZW0uIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTM3
LDEyICsxMzcsMTEgQEAgRmxvYXRSZWN0IFNWR0lubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RG
b3JUZXh0RnJhZ21lbnQoY29uc3QgU1ZHVGV4dEZyYWdtZW50JgogICAgIHJldHVybiBzbmFwcGVk
U2VsZWN0aW9uUmVjdDsKIH0KIAotTGF5b3V0UmVjdCBTVkdJbmxpbmVUZXh0Qm94Ojpsb2NhbFNl
bGVjdGlvblJlY3QodW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgZW5kUG9zaXRpb24p
IGNvbnN0CitMYXlvdXRSZWN0IFNWR0lubGluZVRleHRCb3g6OmxvY2FsU2VsZWN0aW9uUmVjdChp
bnQgc3RhcnRQb3NpdGlvbiwgaW50IGVuZFBvc2l0aW9uKSBjb25zdAogewotICAgIHVuc2lnbmVk
IGJveFN0YXJ0ID0gc3RhcnQoKTsKLSAgICBzdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiA+
IGJveFN0YXJ0ID8gc3RhcnRQb3NpdGlvbiAtIGJveFN0YXJ0IDogMDsKLSAgICBBU1NFUlQoZW5k
UG9zaXRpb24gPj0gYm94U3RhcnQpOwotICAgIGVuZFBvc2l0aW9uID0gc3RkOjptaW4oZW5kUG9z
aXRpb24gLSBib3hTdGFydCwgbGVuKCkpOworICAgIGludCBib3hTdGFydCA9IHN0YXJ0KCk7Cisg
ICAgc3RhcnRQb3NpdGlvbiA9IHN0ZDo6bWF4KHN0YXJ0UG9zaXRpb24gLSBib3hTdGFydCwgMCk7
CisgICAgZW5kUG9zaXRpb24gPSBzdGQ6Om1pbihlbmRQb3NpdGlvbiAtIGJveFN0YXJ0LCBzdGF0
aWNfY2FzdDxpbnQ+KGxlbigpKSk7CiAgICAgaWYgKHN0YXJ0UG9zaXRpb24gPj0gZW5kUG9zaXRp
b24pCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAKQEAgLTE1MCw4ICsxNDksOCBAQCBM
YXlvdXRSZWN0IFNWR0lubGluZVRleHRCb3g6OmxvY2FsU2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBz
dGFydFBvc2l0aW9uLCB1bnNpZ25lZAogCiAgICAgQWZmaW5lVHJhbnNmb3JtIGZyYWdtZW50VHJh
bnNmb3JtOwogICAgIEZsb2F0UmVjdCBzZWxlY3Rpb25SZWN0OwotICAgIHVuc2lnbmVkIGZyYWdt
ZW50U3RhcnRQb3NpdGlvbiA9IDA7Ci0gICAgdW5zaWduZWQgZnJhZ21lbnRFbmRQb3NpdGlvbiA9
IDA7CisgICAgaW50IGZyYWdtZW50U3RhcnRQb3NpdGlvbiA9IDA7CisgICAgaW50IGZyYWdtZW50
RW5kUG9zaXRpb24gPSAwOwogCiAgICAgdW5zaWduZWQgdGV4dEZyYWdtZW50c1NpemUgPSBtX3Rl
eHRGcmFnbWVudHMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0ZXh0RnJh
Z21lbnRzU2l6ZTsgKytpKSB7CkBAIC0yMTQsMTEgKzIxMywxMSBAQCB2b2lkIFNWR0lubGluZVRl
eHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChQYWludEluZm8mIHBhaW50SW5mbykKICAg
ICAgICAgICAgIHNlbGVjdGlvblN0eWxlID0gJnN0eWxlOwogICAgIH0KIAotICAgIHVuc2lnbmVk
IHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uOworICAgIGludCBzdGFydFBvc2l0aW9uLCBlbmRQ
b3NpdGlvbjsKICAgICBzZWxlY3Rpb25TdGFydEVuZChzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlv
bik7CiAKLSAgICB1bnNpZ25lZCBmcmFnbWVudFN0YXJ0UG9zaXRpb24gPSAwOwotICAgIHVuc2ln
bmVkIGZyYWdtZW50RW5kUG9zaXRpb24gPSAwOworICAgIGludCBmcmFnbWVudFN0YXJ0UG9zaXRp
b24gPSAwOworICAgIGludCBmcmFnbWVudEVuZFBvc2l0aW9uID0gMDsKICAgICBBZmZpbmVUcmFu
c2Zvcm0gZnJhZ21lbnRUcmFuc2Zvcm07CiAgICAgdW5zaWduZWQgdGV4dEZyYWdtZW50c1NpemUg
PSBtX3RleHRGcmFnbWVudHMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0
ZXh0RnJhZ21lbnRzU2l6ZTsgKytpKSB7CkBAIC00NDEsMjQgKzQ0MCwyMSBAQCBUZXh0UnVuIFNW
R0lubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25z
dCBTVkdUZXh0RnJhZwogICAgIHJldHVybiBydW47CiB9CiAKLWJvb2wgU1ZHSW5saW5lVGV4dEJv
eDo6bWFwU3RhcnRFbmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRDb29yZGluYXRlcyhjb25zdCBTVkdU
ZXh0RnJhZ21lbnQmIGZyYWdtZW50LCB1bnNpZ25lZCYgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQm
IGVuZFBvc2l0aW9uKSBjb25zdAorYm9vbCBTVkdJbmxpbmVUZXh0Qm94OjptYXBTdGFydEVuZFBv
c2l0aW9uc0ludG9GcmFnbWVudENvb3JkaW5hdGVzKGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJh
Z21lbnQsIGludCYgc3RhcnRQb3NpdGlvbiwgaW50JiBlbmRQb3NpdGlvbikgY29uc3QKIHsKICAg
ICBpZiAoc3RhcnRQb3NpdGlvbiA+PSBlbmRQb3NpdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIEFTU0VSVChmcmFnbWVudC5jaGFyYWN0ZXJPZmZzZXQgPj0gc3RhcnQoKSk7
Ci0gICAgdW5zaWduZWQgb2Zmc2V0ID0gZnJhZ21lbnQuY2hhcmFjdGVyT2Zmc2V0IC0gc3RhcnQo
KTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBmcmFnbWVudC5sZW5ndGg7CisKKyAgICBpbnQgb2Zm
c2V0ID0gc3RhdGljX2Nhc3Q8aW50PihmcmFnbWVudC5jaGFyYWN0ZXJPZmZzZXQpIC0gc3RhcnQo
KTsKKyAgICBpbnQgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50PihmcmFnbWVudC5sZW5ndGgpOwog
CiAgICAgaWYgKHN0YXJ0UG9zaXRpb24gPj0gb2Zmc2V0ICsgbGVuZ3RoIHx8IGVuZFBvc2l0aW9u
IDw9IG9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHN0YXJ0UG9zaXRp
b24gPCBvZmZzZXQpCiAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSAwOwotICAgIGVsc2UgewotICAg
ICAgICBBU1NFUlQoc3RhcnRQb3NpdGlvbiA+PSBvZmZzZXQpOworICAgIGVsc2UKICAgICAgICAg
c3RhcnRQb3NpdGlvbiAtPSBvZmZzZXQ7Ci0gICAgfQogCiAgICAgaWYgKGVuZFBvc2l0aW9uID4g
b2Zmc2V0ICsgbGVuZ3RoKQogICAgICAgICBlbmRQb3NpdGlvbiA9IGxlbmd0aDsKQEAgLTYzMCw4
ICs2MjYsOCBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFJlbmRlclN0eWxlKiBzdHlsZSwgUgogICAgIEFTU0VSVChzdHlsZSk7CiAg
ICAgQVNTRVJUKHNlbGVjdGlvblN0eWxlKTsKIAotICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24g
PSAwOwotICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uID0gMDsKKyAgICBpbnQgc3RhcnRQb3NpdGlv
biA9IDA7CisgICAgaW50IGVuZFBvc2l0aW9uID0gMDsKICAgICBpZiAoaGFzU2VsZWN0aW9uKSB7
CiAgICAgICAgIHNlbGVjdGlvblN0YXJ0RW5kKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsK
ICAgICAgICAgaGFzU2VsZWN0aW9uID0gbWFwU3RhcnRFbmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRD
b29yZGluYXRlcyhmcmFnbWVudCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwpAQCAtNjU5
LDcgKzY1NSw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSCiAgICAgICAgIFNWR1Jlc291cmNl
c0NhY2hlOjpjbGllbnRTdHlsZUNoYW5nZWQocGFyZW50KCktPnJlbmRlcmVyKCksIFN0eWxlRGlm
ZmVyZW5jZVJlcGFpbnQsICpzdHlsZSk7CiAKICAgICAvLyBFdmVudHVhbGx5IGRyYXcgdGV4dCB1
c2luZyByZWd1bGFyIHN0eWxlIGZyb20gdGhlIGVuZCBwb3NpdGlvbiBvZiB0aGUgc2VsZWN0aW9u
IHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgY2h1bmsgcGFydAotICAgIGlmIChlbmRQb3NpdGlv
biA8IGZyYWdtZW50Lmxlbmd0aCAmJiAhcGFpbnRTZWxlY3RlZFRleHRPbmx5KQorICAgIGlmIChl
bmRQb3NpdGlvbiA8IHN0YXRpY19jYXN0PGludD4oZnJhZ21lbnQubGVuZ3RoKSAmJiAhcGFpbnRT
ZWxlY3RlZFRleHRPbmx5KQogICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhjb250ZXh0LCBz
dHlsZSwgdGV4dFJ1biwgZnJhZ21lbnQsIGVuZFBvc2l0aW9uLCBmcmFnbWVudC5sZW5ndGgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRl
eHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5o
CmluZGV4IDUxOGVhMWI4NjcyZjMzYWIxMTJiZGQxOTViZTM3Yjc2YTdiZjA2YTMuLmYwODk0ZjBi
NTUzYTlkYjBkNmJhYzVhMWI4NGNmMzRhZWM3ZjE1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCkBAIC00MywxMyArNDMsMTMgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgaW50IHNlbGVjdGlvblRvcCgpIHsgcmV0dXJuIHRvcCgpOyB9CiAg
ICAgdmlydHVhbCBpbnQgc2VsZWN0aW9uSGVpZ2h0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihjZWlsZihtX2xvZ2ljYWxIZWlnaHQpKTsgfQogICAgIHZpcnR1YWwgaW50IG9mZnNldEZvclBv
c2l0aW9uKGZsb2F0IHgsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMgPSB0cnVlKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGZsb2F0IHBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29u
c3Q7CisgICAgdmlydHVhbCBmbG9hdCBwb3NpdGlvbkZvck9mZnNldChpbnQgb2Zmc2V0KSBjb25z
dDsKIAogICAgIHZvaWQgcGFpbnRTZWxlY3Rpb25CYWNrZ3JvdW5kKFBhaW50SW5mbyYpOwogICAg
IHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91
dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKTsKLSAgICB2aXJ0dWFsIExheW91
dFJlY3QgbG9jYWxTZWxlY3Rpb25SZWN0KHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVk
IGVuZFBvc2l0aW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgbG9j
YWxTZWxlY3Rpb25SZWN0KGludCBzdGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRpb24pIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgYm9vbCBtYXBTdGFydEVuZFBvc2l0aW9uc0ludG9GcmFnbWVudENv
b3JkaW5hdGVzKGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIHVuc2lnbmVkJiBzdGFydFBvc2l0aW9u
LCB1bnNpZ25lZCYgZW5kUG9zaXRpb24pIGNvbnN0OworICAgIGJvb2wgbWFwU3RhcnRFbmRQb3Np
dGlvbnNJbnRvRnJhZ21lbnRDb29yZGluYXRlcyhjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBpbnQm
IHN0YXJ0UG9zaXRpb24sIGludCYgZW5kUG9zaXRpb24pIGNvbnN0OwogCiAgICAgdmlydHVhbCBG
bG9hdFJlY3QgY2FsY3VsYXRlQm91bmRhcmllcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKaW5kZXgg
MWNiNWJjMjk1YTIxYjFmYzhhYzU4NGMyYzcyNjczMTMxYTVkYTI0Ny4uZTYwMTAyZGIwOGMzOTYz
OTQ4YjhhNTZjZjE5NmZhNTYzM2RjMDgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcApAQCAtMzcsMTMgKzM3LDEz
IEBAIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyKCkKIAogaW5s
aW5lIGJvb2wgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjpjdXJyZW50Q2hhcmFjdGVyU3RhcnRzU3Vy
cm9nYXRlUGFpcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFUxNl9JU19MRUFEKG1fcnVuW21fdGV4
dFBvc2l0aW9uXSkgJiYgbV90ZXh0UG9zaXRpb24gKyAxIDwgbV9ydW4uY2hhcmFjdGVyc0xlbmd0
aCgpICYmIFUxNl9JU19UUkFJTChtX3J1blttX3RleHRQb3NpdGlvbiArIDFdKTsKKyAgICByZXR1
cm4gVTE2X0lTX0xFQUQobV9ydW5bbV90ZXh0UG9zaXRpb25dKSAmJiBpbnQobV90ZXh0UG9zaXRp
b24gKyAxKSA8IG1fcnVuLmNoYXJhY3RlcnNMZW5ndGgoKSAmJiBVMTZfSVNfVFJBSUwobV9ydW5b
bV90ZXh0UG9zaXRpb24gKyAxXSk7CiB9CiAKIGJvb2wgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjph
ZHZhbmNlKCkKIHsKICAgICBtX3RleHRQb3NpdGlvbiArPSBtX2N1cnJlbnRNZXRyaWNzLmxlbmd0
aCgpOwotICAgIGlmIChtX3RleHRQb3NpdGlvbiA+PSBtX3J1bi5jaGFyYWN0ZXJzTGVuZ3RoKCkp
CisgICAgaWYgKGludChtX3RleHRQb3NpdGlvbikgPj0gbV9ydW4uY2hhcmFjdGVyc0xlbmd0aCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9pc0NvbXBsZXhUZXh0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCmluZGV4IDcxZGRm
ODFkYTE5MzU2ZGRlZjMyN2RlZjE0NjZkOWRkN2FiZmM4N2QuLmU0Njg0MTZlN2VhNjhhZGMxNGZm
OWJhZmM1MDRlMTlhOTYwMWVhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRRdWVyeS5jcHAKQEAgLTEzMywxNSArMTMzLDEzIEBAIGJvb2wgU1ZHVGV4dFF1ZXJ5
OjpleGVjdXRlUXVlcnkoRGF0YSogcXVlcnlEYXRhLCBQcm9jZXNzVGV4dEZyYWdtZW50Q2FsbGJh
Y2sgZnJhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNWR1RleHRRdWVyeTo6bWFwU3Rh
cnRFbmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRDb29yZGluYXRlcyhEYXRhKiBxdWVyeURhdGEsIGNv
bnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIHVuc2lnbmVkJiBzdGFydFBvc2l0aW9uLCB1
bnNpZ25lZCYgZW5kUG9zaXRpb24pIGNvbnN0Citib29sIFNWR1RleHRRdWVyeTo6bWFwU3RhcnRF
bmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRDb29yZGluYXRlcyhEYXRhKiBxdWVyeURhdGEsIGNvbnN0
IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGludCYgc3RhcnRQb3NpdGlvbiwgaW50JiBlbmRQ
b3NpdGlvbikgY29uc3QKIHsKICAgICAvLyBSZXVzZSB0aGUgc2FtZSBsb2dpYyB1c2VkIGZvciB0
ZXh0IHNlbGVjdGlvbiAmIHBhaW50aW5nLCB0byBtYXAgb3VyIHF1ZXJ5IHN0YXJ0L2xlbmd0aCBp
bnRvIHN0YXJ0L2VuZFBvc2l0aW9ucyBvZiB0aGUgY3VycmVudCB0ZXh0IGZyYWdtZW50LgotICAg
IEFTU0VSVChzdGFydFBvc2l0aW9uID49IHF1ZXJ5RGF0YS0+cHJvY2Vzc2VkQ2hhcmFjdGVycyk7
Ci0gICAgQVNTRVJUKGVuZFBvc2l0aW9uID49IHF1ZXJ5RGF0YS0+cHJvY2Vzc2VkQ2hhcmFjdGVy
cyk7CiAgICAgc3RhcnRQb3NpdGlvbiAtPSBxdWVyeURhdGEtPnByb2Nlc3NlZENoYXJhY3RlcnM7
CiAgICAgZW5kUG9zaXRpb24gLT0gcXVlcnlEYXRhLT5wcm9jZXNzZWRDaGFyYWN0ZXJzOwogCi0g
ICAgaWYgKHN0YXJ0UG9zaXRpb24gPj0gZW5kUG9zaXRpb24pCisgICAgaWYgKHN0YXJ0UG9zaXRp
b24gPj0gZW5kUG9zaXRpb24gfHwgc3RhcnRQb3NpdGlvbiA8IDAgfHwgZW5kUG9zaXRpb24gPCAw
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtb2RpZnlTdGFydEVuZFBvc2l0aW9uc1Jl
c3BlY3RpbmdMaWdhdHVyZXMocXVlcnlEYXRhLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7
CkBAIC0xNTIsNyArMTUwLDcgQEAgYm9vbCBTVkdUZXh0UXVlcnk6Om1hcFN0YXJ0RW5kUG9zaXRp
b25zSW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMoRGF0YSogcXVlcnlEYXRhLAogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIFNWR1RleHRRdWVyeTo6bW9kaWZ5U3RhcnRFbmRQb3NpdGlvbnNSZXNw
ZWN0aW5nTGlnYXR1cmVzKERhdGEqIHF1ZXJ5RGF0YSwgdW5zaWduZWQmIHN0YXJ0UG9zaXRpb24s
IHVuc2lnbmVkJiBlbmRQb3NpdGlvbikgY29uc3QKK3ZvaWQgU1ZHVGV4dFF1ZXJ5Ojptb2RpZnlT
dGFydEVuZFBvc2l0aW9uc1Jlc3BlY3RpbmdMaWdhdHVyZXMoRGF0YSogcXVlcnlEYXRhLCBpbnQm
IHN0YXJ0UG9zaXRpb24sIGludCYgZW5kUG9zaXRpb24pIGNvbnN0CiB7CiAgICAgU1ZHVGV4dExh
eW91dEF0dHJpYnV0ZXMqIGxheW91dEF0dHJpYnV0ZXMgPSBxdWVyeURhdGEtPnRleHRSZW5kZXJl
ci0+bGF5b3V0QXR0cmlidXRlcygpOwogICAgIFZlY3RvcjxTVkdUZXh0TWV0cmljcz4mIHRleHRN
ZXRyaWNzVmFsdWVzID0gbGF5b3V0QXR0cmlidXRlcy0+dGV4dE1ldHJpY3NWYWx1ZXMoKTsKQEAg
LTE4MywyMSArMTgxLDIxIEBAIHZvaWQgU1ZHVGV4dFF1ZXJ5Ojptb2RpZnlTdGFydEVuZFBvc2l0
aW9uc1Jlc3BlY3RpbmdMaWdhdHVyZXMoRGF0YSogcXVlcnlEYXRhLCB1CiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICAvLyBJZiB0aGUgc3RhcnQgcG9zaXRpb24gbWFwcyB0byBhIGNoYXJh
Y3RlciBpbiB0aGUgbWV0cmljcyBsaXN0LCB3ZSBkb24ndCBuZWVkIHRvIG1vZGlmeSBpdC4KLSAg
ICAgICAgaWYgKHN0YXJ0UG9zaXRpb24gPT0gcG9zaXRpb25PZmZzZXQpCisgICAgICAgIGlmIChz
dGFydFBvc2l0aW9uID09IHN0YXRpY19jYXN0PGludD4ocG9zaXRpb25PZmZzZXQpKQogICAgICAg
ICAgICAgYWx0ZXJTdGFydFBvc2l0aW9uID0gZmFsc2U7CiAKICAgICAgICAgLy8gSWYgdGhlIHN0
YXJ0IHBvc2l0aW9uIG1hcHMgdG8gYSBjaGFyYWN0ZXIgaW4gdGhlIG1ldHJpY3MgbGlzdCwgd2Ug
ZG9uJ3QgbmVlZCB0byBtb2RpZnkgaXQuCi0gICAgICAgIGlmIChlbmRQb3NpdGlvbiA9PSBwb3Np
dGlvbk9mZnNldCkKKyAgICAgICAgaWYgKGVuZFBvc2l0aW9uID09IHN0YXRpY19jYXN0PGludD4o
cG9zaXRpb25PZmZzZXQpKQogICAgICAgICAgICAgYWx0ZXJFbmRQb3NpdGlvbiA9IGZhbHNlOwog
CiAgICAgICAgIC8vIERldGVjdCBsaWdhdHVyZXMuCiAgICAgICAgIGlmIChsYXN0UG9zaXRpb25P
ZmZzZXQgIT0gLTEgJiYgbGFzdFBvc2l0aW9uT2Zmc2V0IC0gcG9zaXRpb25PZmZzZXQgPiAxKSB7
Ci0gICAgICAgICAgICBpZiAoYWx0ZXJTdGFydFBvc2l0aW9uICYmIHN0YXJ0UG9zaXRpb24gPiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obGFzdFBvc2l0aW9uT2Zmc2V0KSAmJiBzdGFydFBvc2l0aW9u
IDwgcG9zaXRpb25PZmZzZXQpIHsKKyAgICAgICAgICAgIGlmIChhbHRlclN0YXJ0UG9zaXRpb24g
JiYgc3RhcnRQb3NpdGlvbiA+IGxhc3RQb3NpdGlvbk9mZnNldCAmJiBzdGFydFBvc2l0aW9uIDwg
c3RhdGljX2Nhc3Q8aW50Pihwb3NpdGlvbk9mZnNldCkpIHsKICAgICAgICAgICAgICAgICBzdGFy
dFBvc2l0aW9uID0gbGFzdFBvc2l0aW9uT2Zmc2V0OwogICAgICAgICAgICAgICAgIGFsdGVyU3Rh
cnRQb3NpdGlvbiA9IGZhbHNlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoYWx0
ZXJFbmRQb3NpdGlvbiAmJiBlbmRQb3NpdGlvbiA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsYXN0
UG9zaXRpb25PZmZzZXQpICYmIGVuZFBvc2l0aW9uIDwgcG9zaXRpb25PZmZzZXQpIHsKKyAgICAg
ICAgICAgIGlmIChhbHRlckVuZFBvc2l0aW9uICYmIGVuZFBvc2l0aW9uID4gbGFzdFBvc2l0aW9u
T2Zmc2V0ICYmIGVuZFBvc2l0aW9uIDwgc3RhdGljX2Nhc3Q8aW50Pihwb3NpdGlvbk9mZnNldCkp
IHsKICAgICAgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IHBvc2l0aW9uT2Zmc2V0OwogICAgICAg
ICAgICAgICAgIGFsdGVyRW5kUG9zaXRpb24gPSBmYWxzZTsKICAgICAgICAgICAgIH0KQEAgLTIx
NCwxMiArMjEyLDEyIEBAIHZvaWQgU1ZHVGV4dFF1ZXJ5Ojptb2RpZnlTdGFydEVuZFBvc2l0aW9u
c1Jlc3BlY3RpbmdMaWdhdHVyZXMoRGF0YSogcXVlcnlEYXRhLCB1CiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChsYXN0UG9zaXRpb25PZmZzZXQgIT0gLTEgJiYgbGFzdFBvc2l0aW9uT2Zmc2V0
IC0gcG9zaXRpb25PZmZzZXQgPiAxKSB7Ci0gICAgICAgIGlmIChhbHRlclN0YXJ0UG9zaXRpb24g
JiYgc3RhcnRQb3NpdGlvbiA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsYXN0UG9zaXRpb25PZmZz
ZXQpICYmIHN0YXJ0UG9zaXRpb24gPCBwb3NpdGlvbk9mZnNldCkgeworICAgICAgICBpZiAoYWx0
ZXJTdGFydFBvc2l0aW9uICYmIHN0YXJ0UG9zaXRpb24gPiBsYXN0UG9zaXRpb25PZmZzZXQgJiYg
c3RhcnRQb3NpdGlvbiA8IHN0YXRpY19jYXN0PGludD4ocG9zaXRpb25PZmZzZXQpKSB7CiAgICAg
ICAgICAgICBzdGFydFBvc2l0aW9uID0gbGFzdFBvc2l0aW9uT2Zmc2V0OwogICAgICAgICAgICAg
YWx0ZXJTdGFydFBvc2l0aW9uID0gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYWx0
ZXJFbmRQb3NpdGlvbiAmJiBlbmRQb3NpdGlvbiA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsYXN0
UG9zaXRpb25PZmZzZXQpICYmIGVuZFBvc2l0aW9uIDwgcG9zaXRpb25PZmZzZXQpIHsKKyAgICAg
ICAgaWYgKGFsdGVyRW5kUG9zaXRpb24gJiYgZW5kUG9zaXRpb24gPiBsYXN0UG9zaXRpb25PZmZz
ZXQgJiYgZW5kUG9zaXRpb24gPCBzdGF0aWNfY2FzdDxpbnQ+KHBvc2l0aW9uT2Zmc2V0KSkgewog
ICAgICAgICAgICAgZW5kUG9zaXRpb24gPSBwb3NpdGlvbk9mZnNldDsKICAgICAgICAgICAgIGFs
dGVyRW5kUG9zaXRpb24gPSBmYWxzZTsKICAgICAgICAgfQpAQCAtMjg5LDggKzI4Nyw4IEBAIGJv
b2wgU1ZHVGV4dFF1ZXJ5OjpzdWJTdHJpbmdMZW5ndGhDYWxsYmFjayhEYXRhKiBxdWVyeURhdGEs
IGNvbnN0IFNWR1RleHRGcmFnbWVuCiB7CiAgICAgU3ViU3RyaW5nTGVuZ3RoRGF0YSogZGF0YSA9
IHN0YXRpY19jYXN0PFN1YlN0cmluZ0xlbmd0aERhdGEqPihxdWVyeURhdGEpOwogCi0gICAgdW5z
aWduZWQgc3RhcnRQb3NpdGlvbiA9IGRhdGEtPnN0YXJ0UG9zaXRpb247Ci0gICAgdW5zaWduZWQg
ZW5kUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uICsgZGF0YS0+bGVuZ3RoOworICAgIGludCBzdGFy
dFBvc2l0aW9uID0gZGF0YS0+c3RhcnRQb3NpdGlvbjsKKyAgICBpbnQgZW5kUG9zaXRpb24gPSBz
dGFydFBvc2l0aW9uICsgZGF0YS0+bGVuZ3RoOwogICAgIGlmICghbWFwU3RhcnRFbmRQb3NpdGlv
bnNJbnRvRnJhZ21lbnRDb29yZGluYXRlcyhxdWVyeURhdGEsIGZyYWdtZW50LCBzdGFydFBvc2l0
aW9uLCBlbmRQb3NpdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzI0LDggKzMy
Miw4IEBAIGJvb2wgU1ZHVGV4dFF1ZXJ5OjpzdGFydFBvc2l0aW9uT2ZDaGFyYWN0ZXJDYWxsYmFj
ayhEYXRhKiBxdWVyeURhdGEsIGNvbnN0IFNWR1RlCiB7CiAgICAgU3RhcnRQb3NpdGlvbk9mQ2hh
cmFjdGVyRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFN0YXJ0UG9zaXRpb25PZkNoYXJhY3RlckRh
dGEqPihxdWVyeURhdGEpOwogCi0gICAgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiA9IGRhdGEtPnBv
c2l0aW9uOwotICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiArIDE7Cisg
ICAgaW50IHN0YXJ0UG9zaXRpb24gPSBkYXRhLT5wb3NpdGlvbjsKKyAgICBpbnQgZW5kUG9zaXRp
b24gPSBzdGFydFBvc2l0aW9uICsgMTsKICAgICBpZiAoIW1hcFN0YXJ0RW5kUG9zaXRpb25zSW50
b0ZyYWdtZW50Q29vcmRpbmF0ZXMocXVlcnlEYXRhLCBmcmFnbWVudCwgc3RhcnRQb3NpdGlvbiwg
ZW5kUG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM3Myw4ICszNzEsOCBA
QCBib29sIFNWR1RleHRRdWVyeTo6ZW5kUG9zaXRpb25PZkNoYXJhY3RlckNhbGxiYWNrKERhdGEq
IHF1ZXJ5RGF0YSwgY29uc3QgU1ZHVGV4dAogewogICAgIEVuZFBvc2l0aW9uT2ZDaGFyYWN0ZXJE
YXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8RW5kUG9zaXRpb25PZkNoYXJhY3RlckRhdGEqPihxdWVy
eURhdGEpOwogCi0gICAgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiA9IGRhdGEtPnBvc2l0aW9uOwot
ICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiArIDE7CisgICAgaW50IHN0
YXJ0UG9zaXRpb24gPSBkYXRhLT5wb3NpdGlvbjsKKyAgICBpbnQgZW5kUG9zaXRpb24gPSBzdGFy
dFBvc2l0aW9uICsgMTsKICAgICBpZiAoIW1hcFN0YXJ0RW5kUG9zaXRpb25zSW50b0ZyYWdtZW50
Q29vcmRpbmF0ZXMocXVlcnlEYXRhLCBmcmFnbWVudCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRp
b24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQyMSw4ICs0MTksOCBAQCBib29sIFNW
R1RleHRRdWVyeTo6cm90YXRpb25PZkNoYXJhY3RlckNhbGxiYWNrKERhdGEqIHF1ZXJ5RGF0YSwg
Y29uc3QgU1ZHVGV4dEZyYQogewogICAgIFJvdGF0aW9uT2ZDaGFyYWN0ZXJEYXRhKiBkYXRhID0g
c3RhdGljX2Nhc3Q8Um90YXRpb25PZkNoYXJhY3RlckRhdGEqPihxdWVyeURhdGEpOwogCi0gICAg
dW5zaWduZWQgc3RhcnRQb3NpdGlvbiA9IGRhdGEtPnBvc2l0aW9uOwotICAgIHVuc2lnbmVkIGVu
ZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiArIDE7CisgICAgaW50IHN0YXJ0UG9zaXRpb24gPSBk
YXRhLT5wb3NpdGlvbjsKKyAgICBpbnQgZW5kUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uICsgMTsK
ICAgICBpZiAoIW1hcFN0YXJ0RW5kUG9zaXRpb25zSW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMocXVl
cnlEYXRhLCBmcmFnbWVudCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTQ4OSw4ICs0ODcsOCBAQCBib29sIFNWR1RleHRRdWVyeTo6ZXh0
ZW50T2ZDaGFyYWN0ZXJDYWxsYmFjayhEYXRhKiBxdWVyeURhdGEsIGNvbnN0IFNWR1RleHRGcmFn
bQogewogICAgIEV4dGVudE9mQ2hhcmFjdGVyRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEV4dGVu
dE9mQ2hhcmFjdGVyRGF0YSo+KHF1ZXJ5RGF0YSk7CiAKLSAgICB1bnNpZ25lZCBzdGFydFBvc2l0
aW9uID0gZGF0YS0+cG9zaXRpb247Ci0gICAgdW5zaWduZWQgZW5kUG9zaXRpb24gPSBzdGFydFBv
c2l0aW9uICsgMTsKKyAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IGRhdGEtPnBvc2l0aW9uOworICAg
IGludCBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyAxOwogICAgIGlmICghbWFwU3RhcnRF
bmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRDb29yZGluYXRlcyhxdWVyeURhdGEsIGZyYWdtZW50LCBz
dGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
NTI0LDggKzUyMiw4IEBAIGJvb2wgU1ZHVGV4dFF1ZXJ5OjpjaGFyYWN0ZXJOdW1iZXJBdFBvc2l0
aW9uQ2FsbGJhY2soRGF0YSogcXVlcnlEYXRhLCBjb25zdCBTVkdUCiAKICAgICBGbG9hdFJlY3Qg
ZXh0ZW50OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFnbWVudC5sZW5ndGg7ICsr
aSkgewotICAgICAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uID0gZGF0YS0+cHJvY2Vzc2VkQ2hh
cmFjdGVycyArIGk7Ci0gICAgICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlv
biArIDE7CisgICAgICAgIGludCBzdGFydFBvc2l0aW9uID0gZGF0YS0+cHJvY2Vzc2VkQ2hhcmFj
dGVycyArIGk7CisgICAgICAgIGludCBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyAxOwog
ICAgICAgICBpZiAoIW1hcFN0YXJ0RW5kUG9zaXRpb25zSW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMo
cXVlcnlEYXRhLCBmcmFnbWVudCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pKQogICAgICAg
ICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dFF1ZXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRR
dWVyeS5oCmluZGV4IDM4NzMwYTM4ZDA2MWU4MjVjZDkzN2Q3ODE4NGI4ZDNiM2ZhMGZhYWYuLjcy
MWIyZGY4ZTMzMjQ1ZGE4NjQzMzg1YmU2ZWUyYjFkMmIwOTM4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuaApAQCAtNTIsOCArNTIsOCBAQCBwcml2YXRl
OgogICAgIGJvb2wgZXhlY3V0ZVF1ZXJ5KERhdGEqLCBQcm9jZXNzVGV4dEZyYWdtZW50Q2FsbGJh
Y2spIGNvbnN0OwogCiAgICAgdm9pZCBjb2xsZWN0VGV4dEJveGVzSW5GbG93Qm94KElubGluZUZs
b3dCb3gqKTsKLSAgICBib29sIG1hcFN0YXJ0RW5kUG9zaXRpb25zSW50b0ZyYWdtZW50Q29vcmRp
bmF0ZXMoRGF0YSosIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIHVuc2lnbmVkJiBzdGFydFBvc2l0
aW9uLCB1bnNpZ25lZCYgZW5kUG9zaXRpb24pIGNvbnN0OwotICAgIHZvaWQgbW9kaWZ5U3RhcnRF
bmRQb3NpdGlvbnNSZXNwZWN0aW5nTGlnYXR1cmVzKERhdGEqLCB1bnNpZ25lZCYgc3RhcnRQb3Np
dGlvbiwgdW5zaWduZWQmIGVuZFBvc2l0aW9uKSBjb25zdDsKKyAgICBib29sIG1hcFN0YXJ0RW5k
UG9zaXRpb25zSW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMoRGF0YSosIGNvbnN0IFNWR1RleHRGcmFn
bWVudCYsIGludCYgc3RhcnRQb3NpdGlvbiwgaW50JiBlbmRQb3NpdGlvbikgY29uc3Q7CisgICAg
dm9pZCBtb2RpZnlTdGFydEVuZFBvc2l0aW9uc1Jlc3BlY3RpbmdMaWdhdHVyZXMoRGF0YSosIGlu
dCYgc3RhcnRQb3NpdGlvbiwgaW50JiBlbmRQb3NpdGlvbikgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBudW1iZXJPZkNoYXJhY3RlcnNDYWxsYmFjayhEYXRhKiwgY29uc3QgU1ZHVGV4dEZy
YWdtZW50JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDIxMjk4NDhmY2FmZmNl
M2I0NWQ1NWIwODQyZjEyZjUyN2JiZGY5MGQuLjYxNzczODYzYzdjZjQzMzJlMmQ0MzljMTFkZmE5
ZTc3ZmRiN2Q4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
VGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAg
Ym9vbCBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6YXBwbHlTVkdLZXJuaW5nKGNvbnN0IFNp
bXBsZUZvbnREYXRhKiBmb250RGF0YSwKIAogY2xhc3MgU1ZHR2x5cGhUb1BhdGhUcmFuc2xhdG9y
IGZpbmFsIDogcHVibGljIEdseXBoVG9QYXRoVHJhbnNsYXRvciB7CiBwdWJsaWM6Ci0gICAgU1ZH
R2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IFRleHRSdW4qIGNvbnN0LCBjb25zdCBHbHlwaEJ1
ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBTVkdGb250RGF0YSYsIFNWR0ZvbnRFbGVt
ZW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBmbG9hdCBzY2FsZSwgYm9v
bCBpc1ZlcnRpY2FsVGV4dCk7CisgICAgU1ZHR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IFRl
eHRSdW4qIGNvbnN0LCBjb25zdCBHbHlwaEJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBTVkdGb250RGF0YSYsIFNWR0ZvbnRFbGVtZW50JiwgY29uc3QgaW50IGZyb20sIGNvbnN0IGlu
dCBudW1HbHlwaHMsIGZsb2F0IHNjYWxlLCBib29sIGlzVmVydGljYWxUZXh0KTsKIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIGNvbnRhaW5zTW9yZVBhdGhzKCkgb3ZlcnJpZGUKICAgICB7CkBA
IC0xMjMsMTUgKzEyMywxNSBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9jdXJyZW50UG9p
bnQ7CiAgICAgRmxvYXRQb2ludCBtX2dseXBoT3JpZ2luOwogICAgIFNWR0dseXBoIG1fc3ZnR2x5
cGg7Ci0gICAgdW5zaWduZWQgbV9pbmRleDsKKyAgICBpbnQgbV9pbmRleDsKICAgICBHbHlwaCBt
X2dseXBoOwogICAgIFNWR0ZvbnRFbGVtZW50JiBtX2ZvbnRFbGVtZW50OwotICAgIGNvbnN0IHVu
c2lnbmVkIG1fc3RvcHBpbmdQb2ludDsKKyAgICBjb25zdCBmbG9hdCBtX3N0b3BwaW5nUG9pbnQ7
CiAgICAgY29uc3QgZmxvYXQgbV9zY2FsZTsKICAgICBjb25zdCBib29sIG1faXNWZXJ0aWNhbFRl
eHQ7CiB9OwogCi1TVkdHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OlNWR0dseXBoVG9QYXRoVHJhbnNs
YXRvcihjb25zdCBUZXh0UnVuKiBjb25zdCB0ZXh0UnVuLCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5
cGhCdWZmZXIsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBTVkdGb250RGF0YSYgc3Zn
Rm9udERhdGEsIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCwgdW5zaWduZWQgZnJvbSwgdW5z
aWduZWQgbnVtR2x5cGhzLCBmbG9hdCBzY2FsZSwgYm9vbCBpc1ZlcnRpY2FsVGV4dCkKK1NWR0ds
eXBoVG9QYXRoVHJhbnNsYXRvcjo6U1ZHR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IFRleHRS
dW4qIGNvbnN0IHRleHRSdW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IFNWR0ZvbnREYXRhJiBzdmdGb250RGF0YSwgU1ZHRm9u
dEVsZW1lbnQmIGZvbnRFbGVtZW50LCBjb25zdCBpbnQgZnJvbSwgY29uc3QgaW50IG51bUdseXBo
cywgZmxvYXQgc2NhbGUsIGJvb2wgaXNWZXJ0aWNhbFRleHQpCiAgICAgOiBtX3RleHRSdW4odGV4
dFJ1bikKICAgICAsIG1fZ2x5cGhCdWZmZXIoZ2x5cGhCdWZmZXIpCiAgICAgLCBtX3N2Z0ZvbnRE
YXRhKHN2Z0ZvbnREYXRhKQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgU1ZHVGV4dFJ1blJlbmRl
cmluZ0NvbnRleHQ6OmRyYXdTVkdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBTCiAgICAgfQogfQogCi1HbHlwaERhdGEgU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6Omds
eXBoRGF0YUZvckNoYXJhY3Rlcihjb25zdCBGb250JiBmb250LCBXaWR0aEl0ZXJhdG9yJiBpdGVy
YXRvciwgVUNoYXIzMiBjaGFyYWN0ZXIsIGJvb2wgbWlycm9yLCB1bnNpZ25lZCBjdXJyZW50Q2hh
cmFjdGVyLCB1bnNpZ25lZCYgYWR2YW5jZUxlbmd0aCkKK0dseXBoRGF0YSBTVkdUZXh0UnVuUmVu
ZGVyaW5nQ29udGV4dDo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNvbnN0IEZvbnQmIGZvbnQsIFdp
ZHRoSXRlcmF0b3ImIGl0ZXJhdG9yLCBVQ2hhcjMyIGNoYXJhY3RlciwgYm9vbCBtaXJyb3IsIGlu
dCBjdXJyZW50Q2hhcmFjdGVyLCB1bnNpZ25lZCYgYWR2YW5jZUxlbmd0aCkKIHsKICAgICBjb25z
dCBTaW1wbGVGb250RGF0YSogcHJpbWFyeUZvbnQgPSBmb250LnByaW1hcnlGb250KCk7CiAgICAg
QVNTRVJUKHByaW1hcnlGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaAppbmRleCAxZGQ2NDZiNTcwY2Q2
YzU4ZTZkNDZiZjA1NzRmNjkzY2ZhYmI0NzVjLi5kMGI5MWY2Y2IzNDhlZTczY2M2MWQ0OTM4YmEx
NGQ0NjRjMGFjYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICBSZW5kZXJTVkdSZXNvdXJjZSogYWN0aXZlUGFpbnRpbmdSZXNvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYWN0aXZlUGFpbnRpbmdSZXNvdXJjZTsgfQogICAgIHZvaWQgc2V0QWN0aXZl
UGFpbnRpbmdSZXNvdXJjZShSZW5kZXJTVkdSZXNvdXJjZSogb2JqZWN0KSB7IG1fYWN0aXZlUGFp
bnRpbmdSZXNvdXJjZSA9IG9iamVjdDsgfQogCi0gICAgdmlydHVhbCBHbHlwaERhdGEgZ2x5cGhE
YXRhRm9yQ2hhcmFjdGVyKGNvbnN0IEZvbnQmLCBXaWR0aEl0ZXJhdG9yJiwgVUNoYXIzMiBjaGFy
YWN0ZXIsIGJvb2wgbWlycm9yLCB1bnNpZ25lZCBjdXJyZW50Q2hhcmFjdGVyLCB1bnNpZ25lZCYg
YWR2YW5jZUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBHbHlwaERhdGEgZ2x5cGhEYXRh
Rm9yQ2hhcmFjdGVyKGNvbnN0IEZvbnQmLCBXaWR0aEl0ZXJhdG9yJiwgVUNoYXIzMiBjaGFyYWN0
ZXIsIGJvb2wgbWlycm9yLCBpbnQgY3VycmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VM
ZW5ndGgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IFNpbXBsZUZvbnREYXRhKiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQg
ZnJvbSwgaW50IHRvLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBmbG9hdCBmbG9hdFdpZHRoVXNpbmdTVkdGb250KGNvbnN0IEZvbnQmLCBjb25zdCBUZXh0
UnVuJiwgaW50JiBjaGFyc0NvbnN1bWVkLCBTdHJpbmcmIGdseXBoTmFtZSkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIGFwcGx5U1ZHS2VybmluZyhjb25zdCBTaW1wbGVGb250RGF0
YSosIFdpZHRoSXRlcmF0b3ImLCBHbHlwaEJ1ZmZlciosIGludCBmcm9tKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwCmluZGV4IDgyNWU1OWY5YWQwNDg3MjJhNjUy
MTMxZTUzMjIwMWI5NTA5Njg5NWYuLjgwNzEwY2U2Y2ZjYzU4YWJiNmRkYjFmOTFlM2ZkNGQyMmU0
MmMwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmNwcApAQCAtMTMwLDExICsxMzAsMTEg
QEAgZmxvYXQgU1ZHRm9udERhdGE6OndpZHRoRm9yU1ZHR2x5cGgoR2x5cGggZ2x5cGgsIGZsb2F0
IGZvbnRTaXplKSBjb25zdAogICAgIHJldHVybiBzdmdHbHlwaC5ob3Jpem9udGFsQWR2YW5jZVgg
KiBzY2FsZUVtVG9Vbml0cyhmb250U2l6ZSwgc3ZnRm9udEZhY2VFbGVtZW50LT51bml0c1BlckVt
KCkpOwogfQogCi1ib29sIFNWR0ZvbnREYXRhOjphcHBseVNWR0dseXBoU2VsZWN0aW9uKFdpZHRo
SXRlcmF0b3ImIGl0ZXJhdG9yLCBHbHlwaERhdGEmIGdseXBoRGF0YSwgYm9vbCBtaXJyb3IsIHVu
c2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVuZ3RoKSBjb25zdAor
Ym9vbCBTVkdGb250RGF0YTo6YXBwbHlTVkdHbHlwaFNlbGVjdGlvbihXaWR0aEl0ZXJhdG9yJiBp
dGVyYXRvciwgR2x5cGhEYXRhJiBnbHlwaERhdGEsIGJvb2wgbWlycm9yLCBpbnQgY3VycmVudENo
YXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgpIGNvbnN0CiB7CiAgICAgY29uc3QgVGV4
dFJ1biYgcnVuID0gaXRlcmF0b3IucnVuKCk7CiAgICAgVmVjdG9yPFNWR0dseXBoOjpBcmFiaWNG
b3JtPiYgYXJhYmljRm9ybXMgPSBpdGVyYXRvci5hcmFiaWNGb3JtcygpOwotICAgIEFTU0VSVChy
dW4uY2hhcmFjdGVyc0xlbmd0aCgpID49IGN1cnJlbnRDaGFyYWN0ZXIpOworICAgIEFTU0VSVChp
bnQocnVuLmNoYXJhY3RlcnNMZW5ndGgoKSkgPj0gY3VycmVudENoYXJhY3Rlcik7CiAKICAgICAv
LyBBc3NvY2lhdGUgdGV4dCB3aXRoIGFyYWJpYyBmb3JtcywgaWYgbmVlZGVkLgogICAgIFN0cmlu
ZyByZW1haW5pbmdUZXh0SW5SdW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5oCmluZGV4IDMyNTBh
NDVmNmQzNzc3ZjgzMWU4MmIzMmQ2YTIzNDU4ZGRkMzU2ZmEuLjcyNzI4YTE3YWE0NGIzOTZjZDA0
MTI0YjUxMjQ5MjM4MGNmMjI0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5oCkBAIC0zNiw3
ICszNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUZvbnREYXRhKFNp
bXBsZUZvbnREYXRhKiwgZmxvYXQgZm9udFNpemUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgZmxv
YXQgd2lkdGhGb3JTVkdHbHlwaChHbHlwaCwgZmxvYXQgZm9udFNpemUpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBmaWxsU1ZHR2x5cGhQYWdlKEdseXBoUGFnZSosIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJM
ZW5ndGgsIGNvbnN0IFNpbXBsZUZvbnREYXRhKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGFwcGx5U1ZHR2x5cGhTZWxlY3Rpb24oV2lkdGhJdGVyYXRvciYsIEdseXBoRGF0YSYs
IGJvb2wgbWlycm9yLCB1bnNpZ25lZCBjdXJyZW50Q2hhcmFjdGVyLCB1bnNpZ25lZCYgYWR2YW5j
ZUxlbmd0aCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGFwcGx5U1ZHR2x5cGhT
ZWxlY3Rpb24oV2lkdGhJdGVyYXRvciYsIEdseXBoRGF0YSYsIGJvb2wgbWlycm9yLCBpbnQgY3Vy
cmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBzdmdGb250RmFjZUVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX3N2Z0ZvbnRGYWNlRWxlbWVudDsgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>