<?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>134250</bug_id>
          
          <creation_ts>2014-06-24 07:19:42 -0700</creation_ts>
          <short_desc>REGRESSION(r170337): caused 3 layout tests to crash on debug. (Requested by zalan on #webkit).</short_desc>
          <delta_ts>2014-06-24 07:24:32 -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>1017936</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-24 07:19:42 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/170337 broke the build:
caused 3 layout tests to crash on debug. (Requested by zalan 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>1017938</commentid>
    <comment_count>1</comment_count>
      <attachid>233701</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-24 07:20:17 -0700</bug_when>
    <thetext>Created attachment 233701
ROLLOUT of r170337

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>1017939</commentid>
    <comment_count>2</comment_count>
      <attachid>233701</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-24 07:24:30 -0700</bug_when>
    <thetext>Comment on attachment 233701
ROLLOUT of r170337

Clearing flags on attachment: 233701

Committed r170360: &lt;http://trac.webkit.org/changeset/170360&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017940</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-24 07:24:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233701</attachid>
            <date>2014-06-24 07:20:17 -0700</date>
            <delta_ts>2014-06-24 07:24:30 -0700</delta_ts>
            <desc>ROLLOUT of r170337</desc>
            <filename>bug-134250-20140624071956.patch</filename>
            <type>text/plain</type>
            <size>85586</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwMzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI1MmI3ZGUwMWIwN2Fk
MTk2OGRlZTgxNTY1ZGZhNzQ1NzYyZWZiNS4uYWM0M2ZmMjkyMmM1ZWVkODllZjBkMWE1NWNjYzZi
YmJhYjA5ZTc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA2LTI0ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTcwMzM3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM0MjUwCisKKyAgICAgICAgY2F1c2VkIDMgbGF5b3V0IHRlc3RzIHRv
IGNyYXNoIG9uIGRlYnVnLiAoUmVxdWVzdGVkIGJ5IHphbGFuCisgICAgICAgIG9uICN3ZWJraXQp
LgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiVXNlIHVuc2lnbmVk
cyBpbnN0ZWFkIG9mIGludHMgZm9yIGluZGV4ZXMgaW50byBhIHN0cmluZyBpbgorICAgICAgICB0
ZXh0IGxheW91dCBjb2RlIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMzNTkyCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzE3MDMzNworCiAyMDE0LTA2LTI0ICBKYXJlayBDemVrYWxza2kgIDxqYXJla2N6ZWtAcG9jenRh
Lm9uZXQucGw+CiAKICAgICAgICAgW0FUS10gRG9uJ3QgaWdub3JlIGxpbmtzIHJlbmRlcmVkIGFz
IGJsb2Nrcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNjJkNmFlYmVkMjJiMzhmMzllNWY3M2U2
OTk3ZWE0OWQ0NjJiZDkxNi4uYmUwNjAwYTAwZGM2M2E5ZGQxYWVhNmI2YmQzYzFiM2QzODczMmZj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE4NTcsNyArMTg1Nyw3IEBAIF9fWk5LN1dlYkNv
cmUzVVJMNXF1ZXJ5RXYKIF9fWk5LN1dlYkNvcmUzVVJMOHByb3RvY29sRXYKIF9fWk5LN1dlYkNv
cmUzVVJMY3ZQNU5TVVJMRXYKIF9fWk5LN1dlYkNvcmU0Rm9udDV3aWR0aEVSS05TXzdUZXh0UnVu
RVBOM1dURjdIYXNoU2V0SVBLTlNfMTRTaW1wbGVGb250RGF0YUVOUzRfN1B0ckhhc2hJUzhfRUVO
UzRfMTBIYXNoVHJhaXRzSVM4X0VFRUVQTlNfMTNHbHlwaE92ZXJmbG93RQotX19aTks3V2ViQ29y
ZTRGb250OGRyYXdUZXh0RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzdUZXh0UnVuRVJLTlNf
MTBGbG9hdFBvaW50RWppTlMwXzI0Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uRQorX19aTks3V2Vi
Q29yZTRGb250OGRyYXdUZXh0RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzdUZXh0UnVuRVJL
TlNfMTBGbG9hdFBvaW50RWlpTlMwXzI0Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uRQogX19aTks3
V2ViQ29yZTRGb250ZXFFUktTMF8KIF9fWk5LN1dlYkNvcmU0Tm9kZTExdGV4dENvbnRlbnRFYgog
X19aTks3V2ViQ29yZTROb2RlMTNvd25lckRvY3VtZW50RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggNzM5YTViM2FjYzliNmRiNTRlMGEyNjYyNTQ3YjU0
MjRjNTRhMzNlOC4uY2Q2MjNmMzg5NWE1MDk4NTBjNjg4YzRkNjgwNTI5YzdmYTNhYTVmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTMyOSw3ICszMjks
NyBAQCB2b2lkIEZvbnQ6OnVwZGF0ZShQYXNzUmVmUHRyPEZvbnRTZWxlY3Rvcj4gZm9udFNlbGVj
dG9yKSBjb25zdAogICAgIG1fdHlwZXNldHRpbmdGZWF0dXJlcyA9IGNvbXB1dGVUeXBlc2V0dGlu
Z0ZlYXR1cmVzKCk7CiB9CiAKLWZsb2F0IEZvbnQ6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5z
aWduZWQgZnJvbSwgaW50IGluaXRpYWxUbywgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1c3Rv
bUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QKK2Zsb2F0IEZvbnQ6OmRyYXdUZXh0KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludCwgaW50IGZyb20sIGludCB0bywgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1c3RvbUZv
bnROb3RSZWFkeUFjdGlvbikgY29uc3QKIHsKICAgICAvLyBEb24ndCBkcmF3IGFueXRoaW5nIHdo
aWxlIHdlIGFyZSB1c2luZyBjdXN0b20gZm9udHMgdGhhdCBhcmUgaW4gdGhlIHByb2Nlc3Mgb2Yg
bG9hZGluZywKICAgICAvLyBleGNlcHQgaWYgdGhlICdmb3JjZScgYXJndW1lbnQgaXMgc2V0IHRv
IHRydWUgKGluIHdoaWNoIGNhc2UgaXQgd2lsbCB1c2UgYSBmYWxsYmFjawpAQCAtMzM3LDcgKzMz
Nyw3IEBAIGZsb2F0IEZvbnQ6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvCiAgICAgaWYgKGxvYWRpbmdDdXN0b21Gb250
cygpICYmIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9PSBEb05vdFBhaW50SWZGb250Tm90UmVh
ZHkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgdW5zaWduZWQgdG8gPSBpbml0aWFsVG8gPCAw
ID8gcnVuLmxlbmd0aCgpIDogaW5pdGlhbFRvOworICAgIHRvID0gKHRvID09IC0xID8gcnVuLmxl
bmd0aCgpIDogdG8pOwogCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1
bik7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVz
IHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJr
aXQub3JnL2IvMTAwMDUwCkBAIC0zNTAsMTIgKzM1MCwxMyBAQCBmbG9hdCBGb250OjpkcmF3VGV4
dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxv
YXRQbwogICAgIHJldHVybiBkcmF3Q29tcGxleFRleHQoY29udGV4dCwgcnVuLCBwb2ludCwgZnJv
bSwgdG8pOwogfQogCi12b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmss
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBpbnQgaW5pdGlhbFRvKSBj
b25zdAordm9pZCBGb250OjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKIHsKICAgICBpZiAobG9h
ZGluZ0N1c3RvbUZvbnRzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICB1bnNpZ25lZCB0
byA9IGluaXRpYWxUbyA8IDAgPyBydW4ubGVuZ3RoKCkgOiBpbml0aWFsVG87CisKKyAgICBpZiAo
dG8gPCAwKQorICAgICAgICB0byA9IHJ1bi5sZW5ndGgoKTsKIAogICAgIENvZGVQYXRoIGNvZGVQ
YXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29k
ZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdh
dHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1MApAQCAtNTA2LDkgKzUwNyw5IEBA
IGJvb2wgRm9udDo6ZmFzdEF2ZXJhZ2VDaGFyV2lkdGhJZkF2YWlsYWJsZShmbG9hdCYgd2lkdGgp
IGNvbnN0CiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKLXZvaWQgRm9udDo6YWRqdXN0U2VsZWN0
aW9uUmVjdEZvclRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25S
ZWN0LCB1bnNpZ25lZCBmcm9tLCBpbnQgaW5pdGlhbFRvKSBjb25zdAordm9pZCBGb250OjphZGp1
c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91dFJlY3QmIHNl
bGVjdGlvblJlY3QsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgdG8g
PSBpbml0aWFsVG8gPCAwID8gcnVuLmxlbmd0aCgpIDogaW5pdGlhbFRvOworICAgIHRvID0gKHRv
ID09IC0xID8gcnVuLmxlbmd0aCgpIDogdG8pOwogCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1Vz
ZSA9IGNvZGVQYXRoKHJ1bik7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGgg
b25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4g
U2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCkBAIC0xMDUzLDI1ICsxMDU0LDIzIEBAIGJv
b2wgRm9udDo6Y2FuUmVjZWl2ZVRleHRFbXBoYXNpcyhVQ2hhcjMyIGMpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAgICAgCi1HbHlwaFRvUGF0aFRyYW5zbGF0b3I6OkdseXBoVW5kZXJsaW5lVHlwZSBj
b21wdXRlVW5kZXJsaW5lVHlwZShjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBHbHlwaEJ1
ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGluZGV4KQorR2x5cGhUb1BhdGhUcmFuc2xhdG9y
OjpHbHlwaFVuZGVybGluZVR5cGUgY29tcHV0ZVVuZGVybGluZVR5cGUoY29uc3QgVGV4dFJ1biYg
dGV4dFJ1biwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBpbnQgaW5kZXgpCiB7CiAg
ICAgLy8gSW4gZ2VuZXJhbCwgd2Ugd2FudCB0byBza2lwIGRlc2NlbmRlcnMuIEhvd2V2ZXIsIHNr
aXBwaW5nIGRlc2NlbmRlcnMgb24gQ0pLIGNoYXJhY3RlcnMgbGVhZHMgdG8gdW5kZXNpcmFibGUg
cmVuZGVyaW5ncywKICAgICAvLyBzbyB3ZSB3YW50IHRvIGRyYXcgdGhyb3VnaCBDSksgY2hhcmFj
dGVycyAob24gYSBjaGFyYWN0ZXItYnktY2hhcmFjdGVyIGJhc2lzKS4KICAgICBVQ2hhcjMyIGJh
c2VDaGFyYWN0ZXI7Ci0gICAgaW50IGluaXRpYWxPZmZzZXRJblN0cmluZyA9IGdseXBoQnVmZmVy
Lm9mZnNldEluU3RyaW5nKGluZGV4KTsKKyAgICBpbnQgb2Zmc2V0SW5TdHJpbmcgPSBnbHlwaEJ1
ZmZlci5vZmZzZXRJblN0cmluZyhpbmRleCk7CiAKLSAgICBpZiAoaW5pdGlhbE9mZnNldEluU3Ry
aW5nID09IEdseXBoQnVmZmVyOjprTm9PZmZzZXQpIHsKKyAgICBpZiAob2Zmc2V0SW5TdHJpbmcg
PT0gR2x5cGhCdWZmZXI6OmtOb09mZnNldCkgewogICAgICAgICAvLyBXZSBoYXZlIG5vIGlkZWEg
d2hpY2ggY2hhcmFjdGVyIHNwYXduZWQgdGhpcyBnbHlwaC4gQmFpbC4KICAgICAgICAgcmV0dXJu
IEdseXBoVG9QYXRoVHJhbnNsYXRvcjo6R2x5cGhVbmRlcmxpbmVUeXBlOjpEcmF3T3ZlckdseXBo
OwogICAgIH0KICAgICAKLSAgICBBU1NFUlQoaW5pdGlhbE9mZnNldEluU3RyaW5nID49IDApOwot
ICAgIHVuc2lnbmVkIG9mZnNldEluU3RyaW5nID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRp
YWxPZmZzZXRJblN0cmluZyk7Ci0gICAgCiAgICAgaWYgKHRleHRSdW4uaXM4Qml0KCkpCiAgICAg
ICAgIGJhc2VDaGFyYWN0ZXIgPSB0ZXh0UnVuLmNoYXJhY3RlcnM4KClbb2Zmc2V0SW5TdHJpbmdd
OwotICAgIGVsc2UKKyAgICBlbHNlIHsKICAgICAgICAgVTE2X05FWFQodGV4dFJ1bi5jaGFyYWN0
ZXJzMTYoKSwgb2Zmc2V0SW5TdHJpbmcsIHRleHRSdW4ubGVuZ3RoKCksIGJhc2VDaGFyYWN0ZXIp
OworICAgIH0KICAgICAKICAgICAvLyB1X2dldEludFByb3BlcnR5VmFsdWUgd2l0aCBVQ0hBUl9J
REVPR1JBUEhJQyBkb2Vzbid0IHJldHVybiB0cnVlIGZvciBKYXBhbmVzZSBvciBLb3JlYW4gY29k
ZXBvaW50cy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBjYW4gdXNlIHRoZSAiVW5pY29kZSBhbGxvY2F0
aW9uIGJsb2NrIiBmb3IgdGhlIGNoYXJhY3Rlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuaAppbmRleCA4ZDJkNzRjZTNmMGQ5YzZjZWYzY2RkZTAzNWRmOGI2MDcwOWNlMTZh
Li4xYWRmZjBhNTU4OTUyYjhlZjBkMjAxMDgwZTJhOTRmMjkzNWJhN2MyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNlKCkgPSAwOwogICAgIHZpcnR1YWwgfkdseXBoVG9QYXRo
VHJhbnNsYXRvcigpIHsgfQogfTsKLUdseXBoVG9QYXRoVHJhbnNsYXRvcjo6R2x5cGhVbmRlcmxp
bmVUeXBlIGNvbXB1dGVVbmRlcmxpbmVUeXBlKGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1
ZmZlciYsIHVuc2lnbmVkIGluZGV4KTsKK0dseXBoVG9QYXRoVHJhbnNsYXRvcjo6R2x5cGhVbmRl
cmxpbmVUeXBlIGNvbXB1dGVVbmRlcmxpbmVUeXBlKGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlw
aEJ1ZmZlciYsIGludCBpbmRleCk7CiAKIGNsYXNzIEZvbnQgewogcHVibGljOgpAQCAtMTMzLDkg
KzEzMyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPEZvbnRTZWxlY3Rv
cj4pIGNvbnN0OwogCiAgICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24geyBEb05vdFBh
aW50SWZGb250Tm90UmVhZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkgfTsKLSAgICBmbG9h
dCBkcmF3VGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQ
b2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBpbnQgdG8gPSAtMSwgQ3VzdG9tRm9udE5vdFJlYWR5
QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBjb25zdDsKLSAgICB2b2lkIGRyYXdH
bHlwaHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgU2ltcGxlRm9udERhdGEqLCBjb25zdCBHbHlw
aEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQ
b2ludCYpIGNvbnN0OwotICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQ
b2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBpbnQgdG8gPSAtMSkgY29uc3Q7CisgICAgZmxvYXQg
ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9p
bnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24g
PSBEb05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OworICAgIHZvaWQgZHJhd0dseXBocyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBTaW1wbGVGb250RGF0YSosIGNvbnN0IEdseXBoQnVmZmVy
JiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAg
ICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4m
LCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9
IDAsIGludCB0byA9IC0xKSBjb25zdDsKIAogICAgIERhc2hBcnJheSBkYXNoZXNGb3JJbnRlcnNl
Y3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmln
aW4sIGNvbnN0IEZsb2F0UmVjdCYgbGluZUV4dGVudHMpIGNvbnN0OwogCkBAIC0xNDcsNyArMTQ3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBmbG9hdCB3aWR0aChUZXh0TGF5b3V0JiwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgbGVuLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qIGZh
bGxiYWNrRm9udHMgPSAwKTsKIAogICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbihjb25zdCBUZXh0
UnVuJiwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0Owot
ICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQoY29uc3QgVGV4dFJ1biYsIExheW91
dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20gPSAwLCBpbnQgdG8gPSAtMSkgY29u
c3Q7CisgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiwg
TGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSkgY29u
c3Q7CiAKICAgICBib29sIGlzU21hbGxDYXBzKCkgY29uc3QgeyByZXR1cm4gbV9mb250RGVzY3Jp
cHRpb24uc21hbGxDYXBzKCk7IH0KIApAQCAtMjE5LDE0ICsyMTksMTQgQEAgcHJpdmF0ZToKICAg
ICBlbnVtIEZvclRleHRFbXBoYXNpc09yTm90IHsgTm90Rm9yVGV4dEVtcGhhc2lzLCBGb3JUZXh0
RW1waGFzaXMgfTsKIAogICAgIC8vIFJldHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFtIGFkdmFu
Y2UuCi0gICAgZmxvYXQgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KGNvbnN0IFRl
eHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImLCBGb3JUZXh0
RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7Ci0gICAgZmxvYXQgZHJh
d1NpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0
UG9pbnQmLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3Q7Ci0gICAgdm9pZCBkcmF3
RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVk
IGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdDsKKyAgICBmbG9hdCBnZXRHbHlwaHNBbmRBZHZhbmNl
c0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIGludCBmcm9tLCBpbnQgdG8sIEdseXBoQnVm
ZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0Owor
ICAgIGZsb2F0IGRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4m
LCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7CisgICAgdm9pZCBk
cmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4
dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIGludCBm
cm9tLCBpbnQgdG8pIGNvbnN0OwogICAgIHZvaWQgZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZlciYsIEZsb2F0UG9pbnQmKSBj
b25zdDsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0
IEZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBmbG9hdCBmbG9hdFdpZHRoRm9yU2ltcGxlVGV4dChj
b25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0YSo+KiBmYWxsYmFja0Zv
bnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKICAgICBpbnQgb2Zmc2V0Rm9yUG9z
aXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBp
bmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7Ci0gICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0
Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwg
dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OworICAgIHZvaWQgYWRqdXN0U2VsZWN0
aW9uUmVjdEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlv
blJlY3QsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwogCiAgICAgYm9vbCBnZXRFbXBoYXNpc01h
cmtHbHlwaERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiwgR2x5cGhEYXRhJikgY29uc3Q7CiAKQEAg
LTIzNCwxMiArMjM0LDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgY2FuRXhwYW5kQXJv
dW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKIAogICAgIC8vIFJldHVybnMgdGhlIGluaXRp
YWwgaW4tc3RyZWFtIGFkdmFuY2UuCi0gICAgZmxvYXQgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JD
b21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEds
eXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNv
bnN0OwotICAgIGZsb2F0IGRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBU
ZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBj
b25zdDsKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3Qg
RmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdDsKKyAgICBmbG9h
dCBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBpbnQg
ZnJvbSwgaW50IHRvLCBHbHlwaEJ1ZmZlciYsIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9y
VGV4dEVtcGhhc2lzKSBjb25zdDsKKyAgICBmbG9hdCBkcmF3Q29tcGxleFRleHQoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50
IHRvKSBjb25zdDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywg
Y29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwogICAgIGZsb2F0IGZs
b2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBTaW1w
bGVGb250RGF0YSo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25z
dDsKICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0OwotICAg
IHZvaWQgYWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBM
YXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykgY29u
c3Q7CisgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4
dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0
OwogCiAgICAgZnJpZW5kIHN0cnVjdCBXaWR0aEl0ZXJhdG9yOwogICAgIGZyaWVuZCBjbGFzcyBT
VkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwCmluZGV4IDdmMjBlMGIzNjUyMWQ5Y2RjZDNmNzZm
NzBjM2VlYmZmNDc5ZGQ4MjEuLmJiZWQzZDBkZGQyN2E0ZDc0MDhkNGVkNzJkMjY0MWExNGRlMDc3
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0
UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQ
YXRoLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIGludCBGb250OjplbXBoYXNpc01hcmtIZWlnaHQo
Y29uc3QgQXRvbWljU3RyaW5nJiBtYXJrKSBjb25zdAogICAgIHJldHVybiBtYXJrRm9udERhdGEt
PmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCk7CiB9CiAKLWZsb2F0IEZvbnQ6OmdldEdseXBoc0FuZEFk
dmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVu
c2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpc09yTm90
IGZvclRleHRFbXBoYXNpcykgY29uc3QKK2Zsb2F0IEZvbnQ6OmdldEdseXBoc0FuZEFkdmFuY2Vz
Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGludCBmcm9tLCBpbnQgdG8sIEdseXBo
QnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lz
KSBjb25zdAogewogICAgIGZsb2F0IGluaXRpYWxBZHZhbmNlOwogCkBAIC0xNTYsNyArMTU2LDcg
QEAgZmxvYXQgRm9udDo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KGNvbnN0IFRl
eHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwKICAgICByZXR1cm4gaW5pdGlhbEFkdmFuY2U7CiB9
CiAKLWZsb2F0IEZvbnQ6OmRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgdG8pIGNvbnN0CitmbG9hdCBGb250OjpkcmF3U2ltcGxlVGV4dChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBnbHlwaCBidWZm
ZXIgaG9sZHMgb3VyIGdseXBocythZHZhbmNlcytmb250IGRhdGEgZm9yIGVhY2ggZ2x5cGguCiAg
ICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBAIC0xNzIsNyArMTcyLDcgQEAgZmxvYXQgRm9u
dDo6ZHJhd1NpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVu
JiBydW4sIGNvbnN0IEYKICAgICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBzdGFydFg7CiB9CiAK
LXZvaWQgRm9udDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmss
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykgY29u
c3QKK3ZvaWQgRm9udDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1h
cmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewog
ICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwogICAgIGZsb2F0IGluaXRpYWxBZHZhbmNlID0g
Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVm
ZmVyLCBGb3JUZXh0RW1waGFzaXMpOwpAQCAtMTk1LDggKzE5NSw4IEBAIHZvaWQgRm9udDo6ZHJh
d0dseXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjb25zdCBHCiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHBvaW50LngoKSwgcG9pbnQueSgp
IC0gZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSk7CiAgICAgZmxvYXQgbmV4
dFggPSBzdGFydFBvaW50LngoKSArIGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpOwog
ICAgIGZsb2F0IG5leHRZID0gc3RhcnRQb2ludC55KCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQo
MCkuaGVpZ2h0KCk7Ci0gICAgdW5zaWduZWQgbGFzdEZyb20gPSAwOwotICAgIHVuc2lnbmVkIG5l
eHRHbHlwaCA9IDE7CisgICAgaW50IGxhc3RGcm9tID0gMDsKKyAgICBpbnQgbmV4dEdseXBoID0g
MTsKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIFRleHRSdW46OlJlbmRlcmluZ0NvbnRleHQq
IHJlbmRlcmluZ0NvbnRleHQgPSBydW4ucmVuZGVyaW5nQ29udGV4dCgpOwogI2VuZGlmCkBAIC0y
MTAsMTAgKzIxMCw3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBHCiAgICAgICAgICAgICAgICAg
cmVuZGVyaW5nQ29udGV4dC0+ZHJhd1NWR0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhC
dWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CiAgICAg
ICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBBU1NF
UlQobmV4dEdseXBoID49IGxhc3RGcm9tKTsKICAgICAgICAgICAgICAgICBkcmF3R2x5cGhzKGNv
bnRleHQsIGZvbnREYXRhLCBnbHlwaEJ1ZmZlciwgbGFzdEZyb20sIG5leHRHbHlwaCAtIGxhc3RG
cm9tLCBzdGFydFBvaW50KTsKLSAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbGFzdEZyb20g
PSBuZXh0R2x5cGg7CiAgICAgICAgICAgICBmb250RGF0YSA9IG5leHRGb250RGF0YTsKQEAgLTI3
Miw3ICsyNjksNyBAQCB2b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdAogICAgIEZsb2F0UG9pbnQgc3Rh
cnRQb2ludChwb2ludC54KCkgKyBtaWRkbGVPZkxhc3RHbHlwaCAtIG9mZnNldFRvTWlkZGxlT2ZH
bHlwaChtYXJrRm9udERhdGEsIG1hcmtHbHlwaCksIHBvaW50LnkoKSk7CiAKICAgICBHbHlwaEJ1
ZmZlciBtYXJrQnVmZmVyOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgKyAxIDwgZ2x5cGhC
dWZmZXIuc2l6ZSgpOyArK2kpIHsKKyAgICBmb3IgKGludCBpID0gMDsgaSArIDEgPCBnbHlwaEJ1
ZmZlci5zaXplKCk7ICsraSkgewogICAgICAgICBmbG9hdCBtaWRkbGVPZk5leHRHbHlwaCA9IG9m
ZnNldFRvTWlkZGxlT2ZHbHlwaEF0SW5kZXgoZ2x5cGhCdWZmZXIsIGkgKyAxKTsKICAgICAgICAg
ZmxvYXQgYWR2YW5jZSA9IGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpIC0gbWlkZGxl
T2ZMYXN0R2x5cGggKyBtaWRkbGVPZk5leHRHbHlwaDsKICAgICAgICAgbWFya0J1ZmZlci5hZGQo
Z2x5cGhCdWZmZXIuZ2x5cGhBdChpKSA/IG1hcmtHbHlwaCA6IHNwYWNlR2x5cGgsIG1hcmtGb250
RGF0YSwgYWR2YW5jZSk7CkBAIC0yOTksNyArMjk2LDcgQEAgZmxvYXQgRm9udDo6ZmxvYXRXaWR0
aEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZv
bnQKICAgICByZXR1cm4gaXQubV9ydW5XaWR0aFNvRmFyOwogfQogCi12b2lkIEZvbnQ6OmFkanVz
dFNlbGVjdGlvblJlY3RGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVj
dCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0Cit2b2lk
IEZvbnQ6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1
biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgaW50IGZyb20sIGludCB0bykgY29uc3QKIHsK
ICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBXaWR0aEl0ZXJhdG9yIGl0KHRoaXMs
IHJ1bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlw
aEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIu
aAppbmRleCA3YTI4MWFkMmQ0ZWE2OWZhNGNlOTg0NmFlYzllMzE4MDg5YTFmNDMxLi4zYzU5MzVm
YzZkMmMwMjQ3NjA3ZTMzMzI0ZDM5MGIwNWQ3Zjg5YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKQEAgLTc2LDcgKzc2LDcgQEAgdHlwZWRl
ZiBGbG9hdFNpemUgR2x5cGhCdWZmZXJBZHZhbmNlOwogY2xhc3MgR2x5cGhCdWZmZXIgewogcHVi
bGljOgogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERhdGEuaXNFbXB0
eSgpOyB9Ci0gICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERhdGEuc2l6
ZSgpOyB9CisgICAgaW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREYXRhLnNpemUoKTsg
fQogICAgIAogICAgIHZvaWQgY2xlYXIoKQogICAgIHsKQEAgLTkwLDEyICs5MCwxMiBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHModW5zaWdu
ZWQgZnJvbSkgeyByZXR1cm4gbV9nbHlwaHMuZGF0YSgpICsgZnJvbTsgfQotICAgIEdseXBoQnVm
ZmVyQWR2YW5jZSogYWR2YW5jZXModW5zaWduZWQgZnJvbSkgeyByZXR1cm4gbV9hZHZhbmNlcy5k
YXRhKCkgKyBmcm9tOyB9Ci0gICAgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzKHVuc2ln
bmVkIGZyb20pIGNvbnN0IHsgcmV0dXJuIG1fZ2x5cGhzLmRhdGEoKSArIGZyb207IH0KLSAgICBj
b25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzKHVuc2lnbmVkIGZyb20pIGNvbnN0IHsg
cmV0dXJuIG1fYWR2YW5jZXMuZGF0YSgpICsgZnJvbTsgfQorICAgIEdseXBoQnVmZmVyR2x5cGgq
IGdseXBocyhpbnQgZnJvbSkgeyByZXR1cm4gbV9nbHlwaHMuZGF0YSgpICsgZnJvbTsgfQorICAg
IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMoaW50IGZyb20pIHsgcmV0dXJuIG1fYWR2YW5j
ZXMuZGF0YSgpICsgZnJvbTsgfQorICAgIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocyhp
bnQgZnJvbSkgY29uc3QgeyByZXR1cm4gbV9nbHlwaHMuZGF0YSgpICsgZnJvbTsgfQorICAgIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMoaW50IGZyb20pIGNvbnN0IHsgcmV0dXJu
IG1fYWR2YW5jZXMuZGF0YSgpICsgZnJvbTsgfQogCi0gICAgY29uc3QgU2ltcGxlRm9udERhdGEq
IGZvbnREYXRhQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERhdGFbaW5k
ZXhdOyB9CisgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhQXQoaW50IGluZGV4KSBj
b25zdCB7IHJldHVybiBtX2ZvbnREYXRhW2luZGV4XTsgfQogCiAgICAgdm9pZCBzZXRJbml0aWFs
QWR2YW5jZShHbHlwaEJ1ZmZlckFkdmFuY2UgaW5pdGlhbEFkdmFuY2UpIHsgbV9pbml0aWFsQWR2
YW5jZSA9IGluaXRpYWxBZHZhbmNlOyB9CiAgICAgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBp
bml0aWFsQWR2YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbEFkdmFuY2U7IH0KQEAgLTEw
OSwxMiArMTA5LDEyIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotICAgIEdseXBoQnVmZmVy
QWR2YW5jZSBhZHZhbmNlQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgR2x5cGhCdWZmZXJB
ZHZhbmNlIGFkdmFuY2VBdChpbnQgaW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
bV9hZHZhbmNlc1tpbmRleF07CiAgICAgfQogCi0gICAgRmxvYXRTaXplIG9mZnNldEF0KHVuc2ln
bmVkIGluZGV4KSBjb25zdAorICAgIEZsb2F0U2l6ZSBvZmZzZXRBdChpbnQgaW5kZXgpIGNvbnN0
CiAgICAgewogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0c1tpbmRl
eF07CkBAIC0xNzYsNyArMTc2LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCi0gICAgdm9p
ZCByZXZlcnNlKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB2b2lkIHJldmVy
c2UoaW50IGZyb20sIGludCBsZW5ndGgpCiAgICAgewogICAgICAgICBmb3IgKGludCBpID0gZnJv
bSwgZW5kID0gZnJvbSArIGxlbmd0aCAtIDE7IGkgPCBlbmQ7ICsraSwgLS1lbmQpCiAgICAgICAg
ICAgICBzd2FwKGksIGVuZCk7CkBAIC0xOTQsMTQgKzE5NCwxNCBAQCBwdWJsaWM6CiAgICAgICAg
IG1fb2Zmc2V0c0luU3RyaW5nLnJlc2V0KG5ldyBWZWN0b3I8aW50LCAyMDQ4PigpKTsKICAgICB9
CiAgICAgCi0gICAgaW50IG9mZnNldEluU3RyaW5nKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAg
IGludCBvZmZzZXRJblN0cmluZyhpbnQgaW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQobV9vZmZzZXRzSW5TdHJpbmcpOwogICAgICAgICByZXR1cm4gKCptX29mZnNldHNJblN0cmlu
ZylbaW5kZXhdOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHN3YXAodW5zaWduZWQgaW5k
ZXgxLCB1bnNpZ25lZCBpbmRleDIpCisgICAgdm9pZCBzd2FwKGludCBpbmRleDEsIGludCBpbmRl
eDIpCiAgICAgewogICAgICAgICBjb25zdCBTaW1wbGVGb250RGF0YSogZiA9IG1fZm9udERhdGFb
aW5kZXgxXTsKICAgICAgICAgbV9mb250RGF0YVtpbmRleDFdID0gbV9mb250RGF0YVtpbmRleDJd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAKaW5kZXggZTA5NjQ0ZDQ1OGZlZDhhMmY3Njg4NTk5NzRhZDc5NTAxYjVkYzNkZS4u
MGU0MDBlYzgwNzM5ZDdjOTViMmMzYTEyZWZhNDA3MjFjNGJhNmFkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03
NCw3ICs3NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBUZXh0UnVuKiBtX3Rl
eHRSdW47Ci0gICAgdW5zaWduZWQgbV9vZmZzZXQ7CisgICAgaW50IG1fb2Zmc2V0OwogfTsKIAog
Y2xhc3MgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xhdGluMVRleHRJdGVyYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJhdG9yLmgKaW5kZXggNmI3
ZTU5OWQwMDIzZjk4YjMyNjA2ODIwOWY5YzYwMjcyNzdlZGJhZS4uYzQwMTg5YmZlOTMzMmEwZGVi
NDA2NDNjMTRkMWUyODA3N2RhZDM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJhdG9yLmgKQEAgLTMwLDcgKzMwLDcgQEAgY2xh
c3MgTGF0aW4xVGV4dEl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICAvLyBUaGUgcGFzc2VkIGluIExD
aGFyIHBvaW50ZXIgc3RhcnRzIGF0ICdjdXJyZW50Q2hhcmFjdGVyJy4gVGhlIGl0ZXJhdG9yIG9w
ZXJhdGVzIG9uIHRoZSByYW5nZSBbY3VycmVudENoYXJhY3RlciwgbGFzdENoYXJhY3Rlcl0uCiAg
ICAgLy8gJ2VuZENoYXJhY3RlcicgZGVub3RlcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgdGhlIFVD
aGFyIGFycmF5LCB3aGljaCBtaWdodCBleGNlZWQgJ2xhc3RDaGFyYWN0ZXInLgotICAgIExhdGlu
MVRleHRJdGVyYXRvcihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgY3VycmVudENo
YXJhY3RlciwgdW5zaWduZWQgbGFzdENoYXJhY3RlciwgdW5zaWduZWQgLyplbmRDaGFyYWN0ZXIq
LykKKyAgICBMYXRpbjFUZXh0SXRlcmF0b3IoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIGludCBj
dXJyZW50Q2hhcmFjdGVyLCBpbnQgbGFzdENoYXJhY3RlciwgaW50IC8qZW5kQ2hhcmFjdGVyKi8p
CiAgICAgICAgIDogbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpCiAgICAgICAgICwgbV9jdXJyZW50
Q2hhcmFjdGVyKGN1cnJlbnRDaGFyYWN0ZXIpCiAgICAgICAgICwgbV9sYXN0Q2hhcmFjdGVyKGxh
c3RDaGFyYWN0ZXIpCkBAIC01MywxMyArNTMsMTMgQEAgcHVibGljOgogICAgICAgICBtX2N1cnJl
bnRDaGFyYWN0ZXIgKz0gYWR2YW5jZUxlbmd0aDsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBjdXJy
ZW50Q2hhcmFjdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q2hhcmFjdGVyOyB9CisgICAg
aW50IGN1cnJlbnRDaGFyYWN0ZXIoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRDaGFyYWN0ZXI7
IH0KICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFj
dGVyczsgfQogCiBwcml2YXRlOgogICAgIGNvbnN0IExDaGFyKiBtX2NoYXJhY3RlcnM7Ci0gICAg
dW5zaWduZWQgbV9jdXJyZW50Q2hhcmFjdGVyOwotICAgIHVuc2lnbmVkIG1fbGFzdENoYXJhY3Rl
cjsKKyAgICBpbnQgbV9jdXJyZW50Q2hhcmFjdGVyOworICAgIGludCBtX2xhc3RDaGFyYWN0ZXI7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aW1wbGVGb250RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxl
Rm9udERhdGEuaAppbmRleCA4NmI5NWIxMjliYmE2YjI5ZDM1NmZhMGI1ZTg0ZTlkMjA0YzFjNDc2
Li45ZGY4YzU3ZDYwYTc0MjAyYTc5MjQzNjdhYjM5Mzk3Njc2NzUwNzYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKQEAgLTg5LDcg
Kzg5LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUZvbnREYXRh
KFNpbXBsZUZvbnREYXRhKiwgZmxvYXQgZm9udFNpemUpID0gMDsKICAgICAgICAgdmlydHVhbCBm
bG9hdCB3aWR0aEZvclNWR0dseXBoKEdseXBoLCBmbG9hdCBmb250U2l6ZSkgY29uc3QgPSAwOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgZmlsbFNWR0dseXBoUGFnZShHbHlwaFBhZ2UqLCB1bnNpZ25l
ZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVy
TGVuZ3RoLCBjb25zdCBTaW1wbGVGb250RGF0YSopIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVh
bCBib29sIGFwcGx5U1ZHR2x5cGhTZWxlY3Rpb24oV2lkdGhJdGVyYXRvciYsIEdseXBoRGF0YSYs
IGJvb2wgbWlycm9yLCB1bnNpZ25lZCBjdXJyZW50Q2hhcmFjdGVyLCB1bnNpZ25lZCYgYWR2YW5j
ZUxlbmd0aCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlTVkdHbHlwaFNl
bGVjdGlvbihXaWR0aEl0ZXJhdG9yJiwgR2x5cGhEYXRhJiwgYm9vbCBtaXJyb3IsIGludCBjdXJy
ZW50Q2hhcmFjdGVyLCB1bnNpZ25lZCYgYWR2YW5jZUxlbmd0aCkgY29uc3QgPSAwOwogICAgIH07
CiAKICAgICAvLyBVc2VkIHRvIGNyZWF0ZSBwbGF0Zm9ybSBmb250cy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVy
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWly
QXdhcmVUZXh0SXRlcmF0b3IuY3BwCmluZGV4IGNlNzA0YmUzZjIzNjAzYzgyZjg4ZDExNWNkZDZi
ZWMwZjU0MTY3ZWUuLjkxNTVlNzExYThkYTgwZDRlYjNkY2Y1ZGE1YWMzMDVhMjhjYmVhNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJB
d2FyZVRleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcApAQCAtMjcsNyArMjcsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvcjo6
U3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBjdXJyZW50Q2hhcmFjdGVyLCB1bnNpZ25lZCBsYXN0Q2hhcmFjdGVyLCB1bnNpZ25l
ZCBlbmRDaGFyYWN0ZXIpCitTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3I6OlN1cnJvZ2F0
ZVBhaXJBd2FyZVRleHRJdGVyYXRvcihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGN1cnJl
bnRDaGFyYWN0ZXIsIGludCBsYXN0Q2hhcmFjdGVyLCBpbnQgZW5kQ2hhcmFjdGVyKQogICAgIDog
bV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpCiAgICAgLCBtX2N1cnJlbnRDaGFyYWN0ZXIoY3VycmVu
dENoYXJhY3RlcikKICAgICAsIG1fbGFzdENoYXJhY3RlcihsYXN0Q2hhcmFjdGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3Vycm9nYXRlUGFpckF3YXJl
VGV4dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dh
dGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaAppbmRleCAxYTcxNWMwY2EyZDI0ODNiMjQ3Mjk5NzVl
Yjc1YzlmYTIyMzZlZDQ5Li44NWM5Njk0Yzc2YTIyY2RlYWVlYjNiYTg0MWIxMGEwYTUwMzE2ODEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQ
YWlyQXdhcmVUZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaApAQCAtMzAsNyArMzAsNyBAQCBj
bGFzcyBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IgewogcHVibGljOgogICAgIC8vIFRo
ZSBwYXNzZWQgaW4gVUNoYXIgcG9pbnRlciBzdGFydHMgYXQgJ2N1cnJlbnRDaGFyYWN0ZXInLiBU
aGUgaXRlcmF0b3Igb3BlcmF0b2VzIG9uIHRoZSByYW5nZSBbY3VycmVudENoYXJhY3RlciwgbGFz
dENoYXJhY3Rlcl0uCiAgICAgLy8gJ2VuZENoYXJhY3RlcicgZGVub3RlcyB0aGUgbWF4aW11bSBs
ZW5ndGggb2YgdGhlIFVDaGFyIGFycmF5LCB3aGljaCBtaWdodCBleGNlZWQgJ2xhc3RDaGFyYWN0
ZXInLgotICAgIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvcihjb25zdCBVQ2hhciosIHVu
c2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXIsIHVuc2lnbmVkIGxhc3RDaGFyYWN0ZXIsIHVuc2lnbmVk
IGVuZENoYXJhY3Rlcik7CisgICAgU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yKGNvbnN0
IFVDaGFyKiwgaW50IGN1cnJlbnRDaGFyYWN0ZXIsIGludCBsYXN0Q2hhcmFjdGVyLCBpbnQgZW5k
Q2hhcmFjdGVyKTsKIAogICAgIGlubGluZSBib29sIGNvbnN1bWUoVUNoYXIzMiYgY2hhcmFjdGVy
LCB1bnNpZ25lZCYgY2x1c3Rlckxlbmd0aCkKICAgICB7CkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9jdXJyZW50Q2hhcmFjdGVyICs9IGFkdmFuY2VMZW5ndGg7CiAgICAgfQog
Ci0gICAgdW5zaWduZWQgY3VycmVudENoYXJhY3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dENoYXJhY3RlcjsgfQorICAgIGludCBjdXJyZW50Q2hhcmFjdGVyKCkgY29uc3QgeyByZXR1cm4g
bV9jdXJyZW50Q2hhcmFjdGVyOyB9CiAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25z
dCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KIAogcHJpdmF0ZToKQEAgLTYwLDkgKzYwLDkgQEAg
cHJpdmF0ZToKICAgICBVQ2hhcjMyIG5vcm1hbGl6ZVZvaWNpbmdNYXJrcygpOwogCiAgICAgY29u
c3QgVUNoYXIqIG1fY2hhcmFjdGVyczsKLSAgICB1bnNpZ25lZCBtX2N1cnJlbnRDaGFyYWN0ZXI7
Ci0gICAgdW5zaWduZWQgbV9sYXN0Q2hhcmFjdGVyOwotICAgIHVuc2lnbmVkIG1fZW5kQ2hhcmFj
dGVyOworICAgIGludCBtX2N1cnJlbnRDaGFyYWN0ZXI7CisgICAgaW50IG1fbGFzdENoYXJhY3Rl
cjsKKyAgICBpbnQgbV9lbmRDaGFyYWN0ZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKaW5kZXggNWJhNGNkZjc5OGFkY2VkY2RiMDMzZWM3N2Ji
Y2VmNjlmMzViN2YwYi4uM2UxZmY3MzYwYTMwYWJkZWEyNjEyNzc5MWNjNGIwYzAzN2EzZjU2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApAQCAtMTcxLDgg
KzE3MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyczE2KCkgY29uc3Qg
eyBBU1NFUlQoIWlzOEJpdCgpKTsgcmV0dXJuIG1fZGF0YS5jaGFyYWN0ZXJzMTY7IH0KICAgICAK
ICAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faXM4Qml0OyB9Ci0gICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW47IH0KLSAgICB1bnNpZ25lZCBjaGFyYWN0
ZXJzTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzTGVuZ3RoOyB9CisgICAgaW50
IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuOyB9CisgICAgaW50IGNoYXJhY3RlcnNMZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnNMZW5ndGg7IH0KICAgICBTdHJpbmcgc3Ry
aW5nKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKQEAgLTIxNyw3ICsyMTcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflJlbmRlcmluZ0NvbnRleHQoKSB7IH0KIAog
I2lmIEVOQUJMRShTVkdfRk9OVFMpCi0gICAgICAgIHZpcnR1YWwgR2x5cGhEYXRhIGdseXBoRGF0
YUZvckNoYXJhY3Rlcihjb25zdCBGb250JiwgV2lkdGhJdGVyYXRvciYsIFVDaGFyMzIgY2hhcmFj
dGVyLCBib29sIG1pcnJvciwgdW5zaWduZWQgY3VycmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFk
dmFuY2VMZW5ndGgpID0gMDsKKyAgICAgICAgdmlydHVhbCBHbHlwaERhdGEgZ2x5cGhEYXRhRm9y
Q2hhcmFjdGVyKGNvbnN0IEZvbnQmLCBXaWR0aEl0ZXJhdG9yJiwgVUNoYXIzMiBjaGFyYWN0ZXIs
IGJvb2wgbWlycm9yLCBpbnQgY3VycmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5n
dGgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRyYXdTVkdHbHlwaHMoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgU2ltcGxlRm9udERhdGEqLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9t
LCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwg
ZmxvYXQgZmxvYXRXaWR0aFVzaW5nU1ZHRm9udChjb25zdCBGb250JiwgY29uc3QgVGV4dFJ1biYs
IGludCYgY2hhcnNDb25zdW1lZCwgU3RyaW5nJiBnbHlwaE5hbWUpIGNvbnN0ID0gMDsKICAgICAg
ICAgdmlydHVhbCBib29sIGFwcGx5U1ZHS2VybmluZyhjb25zdCBTaW1wbGVGb250RGF0YSosIFdp
ZHRoSXRlcmF0b3ImLCBHbHlwaEJ1ZmZlciosIGludCBmcm9tKSBjb25zdCA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCmluZGV4
IDk4ODliZDBlZDYzOWU2ZGM4NDYxZDEyNzQzMDNjMTJjMWE2NDg1MjAuLjc3N2RjMjk3OGRiZjk3
Y2JkMTc3M2ZmNmEwY2JmYjAwNTNjNmNiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFdpZHRo
SXRlcmF0b3I6OldpZHRoSXRlcmF0b3IoY29uc3QgRm9udCogZm9udCwgY29uc3QgVGV4dFJ1biYg
cnVuLCBIYXNoU2V0PGNvbnN0CiAgICAgfQogfQogCi1HbHlwaERhdGEgV2lkdGhJdGVyYXRvcjo6
Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyLCBib29sIG1pcnJvciwgdW5z
aWduZWQgY3VycmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgpCitHbHlwaERh
dGEgV2lkdGhJdGVyYXRvcjo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVy
LCBib29sIG1pcnJvciwgaW50IGN1cnJlbnRDaGFyYWN0ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVu
Z3RoKQogewogICAgIEFTU0VSVChtX2ZvbnQpOwogCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoK
IAogdHlwZWRlZiBWZWN0b3I8c3RkOjpwYWlyPGludCwgT3JpZ2luYWxBZHZhbmNlc0ZvckNoYXJh
Y3RlclRyZWF0ZWRBc1NwYWNlPiwgNjQ+IENoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZTsKIAotc3Rh
dGljIGlubGluZSBmbG9hdCBhcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyKiBnbHlwaEJ1
ZmZlciwgYm9vbCBsdHIsIHVuc2lnbmVkJiBsYXN0R2x5cGhDb3VudCwgY29uc3QgU2ltcGxlRm9u
dERhdGEqIGZvbnREYXRhLCBXaWR0aEl0ZXJhdG9yJiBpdGVyYXRvciwgVHlwZXNldHRpbmdGZWF0
dXJlcyB0eXBlc2V0dGluZ0ZlYXR1cmVzLCBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UmIGNoYXJh
Y3RlcnNUcmVhdGVkQXNTcGFjZSkKK3N0YXRpYyBpbmxpbmUgZmxvYXQgYXBwbHlGb250VHJhbnNm
b3JtcyhHbHlwaEJ1ZmZlciogZ2x5cGhCdWZmZXIsIGJvb2wgbHRyLCBpbnQmIGxhc3RHbHlwaENv
dW50LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGEsIFdpZHRoSXRlcmF0b3ImIGl0ZXJh
dG9yLCBUeXBlc2V0dGluZ0ZlYXR1cmVzIHR5cGVzZXR0aW5nRmVhdHVyZXMsIENoYXJhY3RlcnNU
cmVhdGVkQXNTcGFjZSYgY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlKQogewogICAgIEFTU0VSVCh0
eXBlc2V0dGluZ0ZlYXR1cmVzICYgKEtlcm5pbmcgfCBMaWdhdHVyZXMpKTsKIApAQCAtMTY1LDE0
ICsxNjUsMTQgQEAgaW5saW5lIHVuc2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5h
bChUZXh0SXRlcmF0b3ImIHRleHRJdGVyYXRvciwgR2x5cGgKIAogICAgIGNvbnN0IFNpbXBsZUZv
bnREYXRhKiBwcmltYXJ5Rm9udCA9IG1fZm9udC0+cHJpbWFyeUZvbnQoKTsKICAgICBjb25zdCBT
aW1wbGVGb250RGF0YSogbGFzdEZvbnREYXRhID0gcHJpbWFyeUZvbnQ7Ci0gICAgdW5zaWduZWQg
bGFzdEdseXBoQ291bnQgPSBnbHlwaEJ1ZmZlciA/IGdseXBoQnVmZmVyLT5zaXplKCkgOiAwOwor
ICAgIGludCBsYXN0R2x5cGhDb3VudCA9IGdseXBoQnVmZmVyID8gZ2x5cGhCdWZmZXItPnNpemUo
KSA6IDA7CiAKICAgICBVQ2hhcjMyIGNoYXJhY3RlciA9IDA7CiAgICAgdW5zaWduZWQgY2x1c3Rl
ckxlbmd0aCA9IDA7CiAgICAgQ2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlIGNoYXJhY3RlcnNUcmVh
dGVkQXNTcGFjZTsKICAgICB3aGlsZSAodGV4dEl0ZXJhdG9yLmNvbnN1bWUoY2hhcmFjdGVyLCBj
bHVzdGVyTGVuZ3RoKSkgewogICAgICAgICB1bnNpZ25lZCBhZHZhbmNlTGVuZ3RoID0gY2x1c3Rl
ckxlbmd0aDsKLSAgICAgICAgdW5zaWduZWQgY3VycmVudENoYXJhY3RlciA9IHRleHRJdGVyYXRv
ci5jdXJyZW50Q2hhcmFjdGVyKCk7CisgICAgICAgIGludCBjdXJyZW50Q2hhcmFjdGVyID0gdGV4
dEl0ZXJhdG9yLmN1cnJlbnRDaGFyYWN0ZXIoKTsKICAgICAgICAgY29uc3QgR2x5cGhEYXRhJiBn
bHlwaERhdGEgPSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyLCBydGwsIGN1cnJlbnRD
aGFyYWN0ZXIsIGFkdmFuY2VMZW5ndGgpOwogICAgICAgICBHbHlwaCBnbHlwaCA9IGdseXBoRGF0
YS5nbHlwaDsKICAgICAgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhID0gZ2x5cGhE
YXRhLmZvbnREYXRhOwpAQCAtMzI3LDE0ICszMjcsMTQgQEAgaW5saW5lIHVuc2lnbmVkIFdpZHRo
SXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRleHRJdGVyYXRvciwgR2x5
cGgKICAgICByZXR1cm4gY29uc3VtZWRDaGFyYWN0ZXJzOwogfQogCi11bnNpZ25lZCBXaWR0aEl0
ZXJhdG9yOjphZHZhbmNlKHVuc2lnbmVkIG9mZnNldCwgR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVy
KQordW5zaWduZWQgV2lkdGhJdGVyYXRvcjo6YWR2YW5jZShpbnQgb2Zmc2V0LCBHbHlwaEJ1ZmZl
ciogZ2x5cGhCdWZmZXIpCiB7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gbV9ydW4ubGVuZ3RoKCk7
CisgICAgaW50IGxlbmd0aCA9IG1fcnVuLmxlbmd0aCgpOwogCiAgICAgaWYgKG9mZnNldCA+IGxl
bmd0aCkKICAgICAgICAgb2Zmc2V0ID0gbGVuZ3RoOwogCi0gICAgaWYgKG1fY3VycmVudENoYXJh
Y3RlciA+PSBvZmZzZXQpCisgICAgaWYgKG1fY3VycmVudENoYXJhY3RlciA+PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAobV9ydW4u
aXM4Qml0KCkpIHsKQEAgLTM0OCwxMCArMzQ4LDEwIEBAIHVuc2lnbmVkIFdpZHRoSXRlcmF0b3I6
OmFkdmFuY2UodW5zaWduZWQgb2Zmc2V0LCBHbHlwaEJ1ZmZlciogZ2x5cGhCdWZmZXIpCiAKIGJv
b2wgV2lkdGhJdGVyYXRvcjo6YWR2YW5jZU9uZUNoYXJhY3RlcihmbG9hdCYgd2lkdGgsIEdseXBo
QnVmZmVyJiBnbHlwaEJ1ZmZlcikKIHsKLSAgICB1bnNpZ25lZCBvbGRTaXplID0gZ2x5cGhCdWZm
ZXIuc2l6ZSgpOworICAgIGludCBvbGRTaXplID0gZ2x5cGhCdWZmZXIuc2l6ZSgpOwogICAgIGFk
dmFuY2UobV9jdXJyZW50Q2hhcmFjdGVyICsgMSwgJmdseXBoQnVmZmVyKTsKICAgICBmbG9hdCB3
ID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRTaXplOyBpIDwgZ2x5cGhCdWZmZXIuc2l6
ZSgpOyArK2kpCisgICAgZm9yIChpbnQgaSA9IG9sZFNpemU7IGkgPCBnbHlwaEJ1ZmZlci5zaXpl
KCk7ICsraSkKICAgICAgICAgdyArPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkud2lkdGgoKTsK
ICAgICB3aWR0aCA9IHc7CiAgICAgcmV0dXJuIGdseXBoQnVmZmVyLnNpemUoKSA+IG9sZFNpemU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgK
aW5kZXggZmRjNGJhNGNlMzU2MWExNWQ0MTEzYTNmMTI5ZGRiZTVmMTExMThkMC4uY2QwNmQ3YzRk
Y2M0MTIwYTY2YTNkMDQ0ODdhZTg4ZmRjYTEzOThiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1
Y3QgV2lkdGhJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgV2lkdGhJdGVyYXRvcihjb25zdCBGb250
KiwgY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiogZmFsbGJh
Y2tGb250cyA9IDAsIGJvb2wgYWNjb3VudEZvckdseXBoQm91bmRzID0gZmFsc2UsIGJvb2wgZm9y
VGV4dEVtcGhhc2lzID0gZmFsc2UpOwogCi0gICAgdW5zaWduZWQgYWR2YW5jZSh1bnNpZ25lZCB0
bywgR2x5cGhCdWZmZXIqKTsKKyAgICB1bnNpZ25lZCBhZHZhbmNlKGludCB0bywgR2x5cGhCdWZm
ZXIqKTsKICAgICBib29sIGFkdmFuY2VPbmVDaGFyYWN0ZXIoZmxvYXQmIHdpZHRoLCBHbHlwaEJ1
ZmZlciYpOwogCiAgICAgZmxvYXQgbWF4R2x5cGhCb3VuZGluZ0JveFkoKSBjb25zdCB7IEFTU0VS
VChtX2FjY291bnRGb3JHbHlwaEJvdW5kcyk7IHJldHVybiBtX21heEdseXBoQm91bmRpbmdCb3hZ
OyB9CkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIEds
eXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiwgYm9vbCBtaXJyb3IsIHVuc2ln
bmVkIGN1cnJlbnRDaGFyYWN0ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVuZ3RoKTsKKyAgICBHbHlw
aERhdGEgZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIsIGJvb2wgbWlycm9yLCBpbnQgY3Vy
cmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgpOwogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUZXh0SXRlcmF0b3I+CiAgICAgaW5saW5lIHVuc2lnbmVkIGFkdmFuY2VJbnRlcm5h
bChUZXh0SXRlcmF0b3ImLCBHbHlwaEJ1ZmZlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCAyOTE3MWJmMGMx
ZTlhMzcwNWQ5M2M3MGU2YTdlNTdhYjYwMTQwZjNkLi5jMTkwYWJhMjNmY2VhMzlmNGI5NDhkMjI3
MzE1ZWY1YmYzMTExNWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQg
ZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
RmxvYXRQb2ludCYKIH0KIAogdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBn
bHlwaEJ1ZmZlciwKLSAgICB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAorICAgICAgICAgICAgICAgICAgICAgIGludCBmcm9t
LCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBp
ZiAoIWZvbnQtPnBsYXRmb3JtRGF0YSgpLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTAy
LDcgKzEwMiw3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBjb25zCiAgICAgR2x5cGhCdWZmZXJHbHlw
aCogZ2x5cGhzID0gY29uc3RfY2FzdDxHbHlwaEJ1ZmZlckdseXBoKj4oZ2x5cGhCdWZmZXIuZ2x5
cGhzKGZyb20pKTsKIAogICAgIGZsb2F0IG9mZnNldCA9IHBvaW50LngoKTsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtR2x5cGhzOyBpKyspIHsKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bUdseXBoczsgaSsrKSB7CiAgICAgICAgIGdseXBoc1tpXS54ID0gb2Zmc2V0OwogICAg
ICAgICBnbHlwaHNbaV0ueSA9IHBvaW50LnkoKTsKICAgICAgICAgb2Zmc2V0ICs9IGdseXBoQnVm
ZmVyLmFkdmFuY2VBdChmcm9tICsgaSkud2lkdGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5j
cHAKaW5kZXggY2IwOGNjYWQzNWY5ODhjMTFlNGQxYTc4ZTRiOGIxYTZhNDhkMjkyMi4uZTg0Nzgx
MGEzOWFiOGYyZmY1ZmZlZmJlZjMyYjUxMmRiMGZlOWJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1
enpORy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1mbG9h
dCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCwgdW5zaWduZWQp
IGNvbnN0CitmbG9hdCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQsIGlu
dCkgY29uc3QKIHsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBIYXJmQnV6elNo
YXBlciBzaGFwZXIodGhpcywgcnVuKTsKQEAgLTUyLDcgKzUyLDcgQEAgZmxvYXQgRm9udDo6ZHJh
d0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjb25zdAogICAgIHJldHVybiAwOwogfQogCi12b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtz
Rm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiAvKiBjb250ZXh0ICovLCBjb25zdCBUZXh0
UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21pY1N0cmluZyYgLyogbWFyayAqLywgY29uc3QgRmxv
YXRQb2ludCYgLyogcG9pbnQgKi8sIHVuc2lnbmVkIC8qIGZyb20gKi8sIHVuc2lnbmVkIC8qIHRv
ICovKSBjb25zdAordm9pZCBGb250OjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdy
YXBoaWNzQ29udGV4dCogLyogY29udGV4dCAqLywgY29uc3QgVGV4dFJ1biYgLyogcnVuICovLCBj
b25zdCBBdG9taWNTdHJpbmcmIC8qIG1hcmsgKi8sIGNvbnN0IEZsb2F0UG9pbnQmIC8qIHBvaW50
ICovLCBpbnQgLyogZnJvbSAqLywgaW50IC8qIHRvICovKSBjb25zdAogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CkBAIC04NSw3ICs4NSw3IEBAIGludCBGb250OjpvZmZzZXRGb3JQb3NpdGlv
bkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgZmxvYXQgeCwgYm9vbCkgY29uCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgRm9udDo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBs
ZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0Cit2b2lkIEZvbnQ6OmFkanVzdFNlbGVjdGlv
blJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91dFJlY3QmIHNlbGVj
dGlvblJlY3QsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgSGFyZkJ1enpTaGFwZXIg
c2hhcGVyKHRoaXMsIHJ1bik7CiAgICAgaWYgKHNoYXBlci5zaGFwZSgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6
elNoYXBlci5jcHAKaW5kZXggNDIzNGQ2YTE0ZTJiOGQ3ZTJlMDFkM2JkNjhmYTEyNzQ2YWUwMGQz
ZC4uOWI4ZTRlMGE5ZDIxM2I1MjU2ZDc3YzBiM2ZkYjg1MmNjMzZhNTZlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZC
dXp6U2hhcGVyLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgSGFyZkJ1enpTaGFwZXI6OnNl
dE5vcm1hbGl6ZWRCdWZmZXIoTm9ybWFsaXplTW9kZSBub3JtYWxpemVNb2RlKQogICAgIH0gZWxz
ZQogICAgICAgICBydW5DaGFyYWN0ZXJzID0gbV9ydW4uY2hhcmFjdGVyczE2KCk7CiAKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ydW4ubGVuZ3RoKCk7ICsraSkgeworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbV9ydW4ubGVuZ3RoKCk7ICsraSkgewogICAgICAgICBVQ2hhciBjaCA9
IHJ1bkNoYXJhY3RlcnNbaV07CiAgICAgICAgIGlmICg6OnVibG9ja19nZXRDb2RlKGNoKSA9PSBV
QkxPQ0tfQ09NQklOSU5HX0RJQUNSSVRJQ0FMX01BUktTKSB7CiAgICAgICAgICAgICBpY3U6Ok5v
cm1hbGl6ZXI6Om5vcm1hbGl6ZShpY3U6OlVuaWNvZGVTdHJpbmcocnVuQ2hhcmFjdGVycywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q29tcGxl
eFRleHRNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
b21wbGV4VGV4dE1hYy5jcHAKaW5kZXggZmJlMTI1YTc5ZWQ1ODc3NDhjODkzNTZkNGIxYTBmMjhh
NjZlNzlhNi4uODMyNWIyZjVkZTdhNDRkZTdiNmE4NjAxYTY3ZDExMmQ1ZTAxOGY1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDb21wbGV4VGV4
dE1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
b21wbGV4VGV4dE1hYy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi12b2lkIEZvbnQ6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBU
ZXh0UnVuJiBydW4sIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20sIHVu
c2lnbmVkIHRvKSBjb25zdAordm9pZCBGb250OjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yQ29tcGxl
eFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCBpbnQg
ZnJvbSwgaW50IHRvKSBjb25zdAogewogICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBjb250cm9s
bGVyKHRoaXMsIHJ1bik7CiAgICAgY29udHJvbGxlci5hZHZhbmNlKGZyb20pOwpAQCAtNTIsNyAr
NTIsNyBAQCB2b2lkIEZvbnQ6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25z
dCBUZXh0UnVuJiBydW4sIExheW91dFJlY3QmIHNlbAogICAgIHNlbGVjdGlvblJlY3Quc2V0V2lk
dGgoYWZ0ZXJXaWR0aCAtIGJlZm9yZVdpZHRoKTsKIH0KIAotZmxvYXQgRm9udDo6Z2V0R2x5cGhz
QW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZy
b20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNp
c09yTm90IGZvclRleHRFbXBoYXNpcykgY29uc3QKK2Zsb2F0IEZvbnQ6OmdldEdseXBoc0FuZEFk
dmFuY2VzRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBpbnQgZnJvbSwgaW50IHRv
LCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRF
bXBoYXNpcykgY29uc3QKIHsKICAgICBmbG9hdCBpbml0aWFsQWR2YW5jZTsKIApAQCAtNzUsNyAr
NzUsNyBAQCBmbG9hdCBGb250OjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNv
bnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbQogICAgIHJldHVybiBpbml0aWFsQWR2YW5j
ZTsKIH0KIAotZmxvYXQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0CitmbG9hdCBGb250OjpkcmF3Q29tcGxleFRleHQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewogICAgIC8vIFRoaXMgZ2x5
cGggYnVmZmVyIGhvbGRzIG91ciBnbHlwaHMgKyBhZHZhbmNlcyArIGZvbnQgZGF0YSBmb3IgZWFj
aCBnbHlwaC4KICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKQEAgLTkzLDcgKzkzLDcgQEAg
ZmxvYXQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjb25zdAogICAgIHJldHVybiBzdGFydFBvaW50LngoKSAtIHN0YXJ0
WDsKIH0KIAotdm9pZCBGb250OjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJp
bmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25l
ZCB0bykgY29uc3QKK3ZvaWQgRm9udDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWlj
U3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykg
Y29uc3QKIHsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBmbG9hdCBpbml0aWFs
QWR2YW5jZSA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCBmcm9tLCB0
bywgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFjLm1tCmluZGV4IDA1OWUxZmVjZWM0NzZmMjkzNDg3
NmI0ODRmZWJhZDlkMjdjNmIyN2IuLmM3NzFlZTllOWI1YzkwYTRhM2U5ZTBiNzhmOTJiZTcwZTI4
ZTczMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
TWFjLm1tCkBAIC0xODQsNyArMTg0LDcgQEAgc3RhdGljIHZvaWQgc2hvd0dseXBoc1dpdGhBZHZh
bmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgU2ltcGxlRm9udERhdGEKICAgICB9
CiB9CiAKLXZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIs
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5j
aG9yUG9pbnQpIGNvbnN0Cit2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGds
eXBoQnVmZmVyLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5j
aG9yUG9pbnQpIGNvbnN0CiB7CiAgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhID0gZm9udC0+cGxhdGZvcm1EYXRhKCk7CiAgICAgaWYgKCFwbGF0Zm9ybURhdGEuc2l6ZSgp
KQpAQCAtNDY4LDcgKzQ2OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFkdmFuY2Uo
KSBvdmVycmlkZTsKICAgICB2b2lkIG1vdmVUb05leHRWYWxpZEdseXBoKCk7CiAKLSAgICB1bnNp
Z25lZCBtX2luZGV4OworICAgIGludCBtX2luZGV4OwogICAgIGNvbnN0IFRleHRSdW4mIG1fdGV4
dFJ1bjsKICAgICBjb25zdCBHbHlwaEJ1ZmZlciYgbV9nbHlwaEJ1ZmZlcjsKICAgICBjb25zdCBT
aW1wbGVGb250RGF0YSogbV9mb250RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKaW5kZXggNzZiODY4NTU1ZDVmZDk5YjRlMzIw
YjFiMTRiNjNkMTk3ZGI4ZTY0ZC4uYmExM2RkMGQxNWRjMjcyNzZlNTI1MDRiZTYwOTFmMzNkYTE0
ZTdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDR1dpbi5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgQ0dQYXRoUmVmIGNyZWF0ZVBh
dGhGb3JHbHlwaChIREMgaGRjLCBHbHlwaCBnbHlwaCkKIH0KIAogdm9pZCBGb250OjpkcmF3R2x5
cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0
YSogZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCAKLSAgICB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAor
ICAgICAgICAgICAgICAgICAgICAgIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gZ3Jh
cGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBib29sIHNob3VsZFVzZUZvbnRT
bW9vdGhpbmcgPSBXZWJDb3JlU2hvdWxkVXNlRm9udFNtb290aGluZygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRXaW4uY3BwCmluZGV4IDA2YzZjMDAy
YzBhYjljYzJjMzg4MDgxOTU2MTRlYzI3N2QxOTM2YzAuLmM2NmIyYzQwZjY3NzY2Mjk1MGY1MjJm
OGZjZDNlMzk1ZDY1Mjk0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFdpbi5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgYm9vbCBGb250OjpjYW5FeHBh
bmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIEZvbnQ6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0
UnVuJiBydW4sIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIHRvKSBjb25zdAordm9pZCBGb250OjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRl
eHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCBpbnQgZnJv
bSwgaW50IHRvKSBjb25zdAogewogICAgIFVuaXNjcmliZUNvbnRyb2xsZXIgaXQodGhpcywgcnVu
KTsKICAgICBpdC5hZHZhbmNlKGZyb20pOwpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIEZvbnQ6OmFk
anVzdFNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91
dFJlY3QmIHNlbAogICAgIHNlbGVjdGlvblJlY3Quc2V0V2lkdGgoYWZ0ZXJXaWR0aCAtIGJlZm9y
ZVdpZHRoKTsKIH0KIAotZmxvYXQgRm9udDo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4
VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBoYXNp
cykgY29uc3QKK2Zsb2F0IEZvbnQ6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQo
Y29uc3QgVGV4dFJ1biYgcnVuLCBpbnQgZnJvbSwgaW50IHRvLCBHbHlwaEJ1ZmZlciYgZ2x5cGhC
dWZmZXIsIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29uc3QKIHsKICAg
ICBpZiAoZm9yVGV4dEVtcGhhc2lzKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgZm9yVGV4dEVt
cGhhc2lzIHBhcmVtZXRlciB0byBVbmlzY3JpYmVDb250cm9sbGVyIGFuZCB1c2UgaXQuCkBAIC05
Miw3ICs5Miw3IEBAIGZsb2F0IEZvbnQ6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRl
eHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tCiAgICAgcmV0dXJuIGJlZm9yZVdp
ZHRoOwogfQogCi1mbG9hdCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNp
Z25lZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3QKK2Zsb2F0IEZvbnQ6OmRyYXdDb21wbGV4VGV4
dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBn
bHlwaCBidWZmZXIgaG9sZHMgb3VyIGdseXBocyArIGFkdmFuY2VzICsgZm9udCBkYXRhIGZvciBl
YWNoIGdseXBoLgogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwpAQCAtMTA5LDcgKzEwOSw3
IEBAIGZsb2F0IEZvbnQ6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICAgICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBz
dGFydFg7CiB9CiAKLXZvaWQgRm9udDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWlj
U3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgdW5z
aWduZWQgdG8pIGNvbnN0Cit2b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRl
eHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0
b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQg
dG8pIGNvbnN0CiB7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAgICAgZmxvYXQgaW5p
dGlhbEFkdmFuY2UgPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgZnJv
bSwgdG8sIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFzaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udFdpbkNFLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRXaW5DRS5jcHAKaW5kZXggZTBiM2Y2
MzBlYmRiOTNkNzY2YzE3MzFhMDY5OTU3NWRiZjQ0ZGVkMS4uZWQ3MjYyN2MzZTk4NjZhYjkxOWIw
ZGJiNDk2MTMxMWNkYjVkNzY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luY2UvRm9udFdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW5jZS9Gb250V2luQ0UuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoK
IFNjcmVlbkRjUmVsZWFzZXIgcmVsZWFzZVNjcmVlbkRjOwogCiB2b2lkIEZvbnQ6OmRyYXdHbHlw
aHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRh
KiBmb250RGF0YSwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLAotICAgIHVuc2lnbmVk
IGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0
CisgICAgICAgICAgICAgICAgICAgICAgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RleHQo
Zm9udERhdGEsIGdseXBoQnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBvaW50KTsKIH0KQEAgLTIw
Niw3ICsyMDYsNyBAQCBzdGF0aWMgaW50IGdlbmVyYXRlQ29tcG9uZW50cyhUZXh0UnVuQ29tcG9u
ZW50cyogY29tcG9uZW50cywgY29uc3QgRm9udCAmZm9udCwgYwogICAgIHJldHVybiBvZmZzZXQ7
CiB9CiAKLWZsb2F0IEZvbnQ6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVk
IGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdAorZmxvYXQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKIHsKICAgICBpZiAodG8gPCAwKQog
ICAgICAgICB0byA9IHJ1bi5sZW5ndGgoKTsKQEAgLTIzNyw3ICsyMzcsNyBAQCBmbG9hdCBGb250
OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVu
JiBydW4sIGNvbnN0CiAgICAgcmV0dXJuIHdpZHRoT2ZEcmF3blRleHQ7CiB9CiAKLXZvaWQgRm9u
dDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIC8qIGNv
bnRleHQgKi8sIGNvbnN0IFRleHRSdW4mIC8qIHJ1biAqLywgY29uc3QgQXRvbWljU3RyaW5nJiAv
KiBtYXJrICovLCBjb25zdCBGbG9hdFBvaW50JiAvKiBwb2ludCAqLywgdW5zaWduZWQgLyogZnJv
bSAqLywgdW5zaWduZWQgLyogdG8gKi8pIGNvbnN0Cit2b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01h
cmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiAvKiBjb250ZXh0ICovLCBjb25zdCBU
ZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21pY1N0cmluZyYgLyogbWFyayAqLywgY29uc3Qg
RmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGludCAvKiBmcm9tICovLCBpbnQgLyogdG8gKi8pIGNv
bnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KQEAgLTMyMSw3ICszMjEsNyBAQCBzdGF0
aWMgZmxvYXQgY3Vyc29yVG9YKGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IFRleHRSdW5Db21wb25l
bnRzJiBjb21wb25lbnRzLCBpbgogfQogCiBGbG9hdFJlY3QgRm9udDo6c2VsZWN0aW9uUmVjdEZv
ckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcHQsCi0g
ICAgaW50IGgsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBoLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAog
ewogICAgIFRleHRSdW5Db21wb25lbnRzIGNvbXBvbmVudHM7CiAgICAgaW50IHcgPSBnZW5lcmF0
ZUNvbXBvbmVudHMoJmNvbXBvbmVudHMsICp0aGlzLCBydW4pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IGMzYzk2YTM0OWNmYzk4NzgxMmM5NGQxNjFm
M2VlYTYyZWIxODU4NTEuLmFhNDRkY2U3YzRiMDMyYzA0NWRkY2Y3YzJhZTFlY2UxZmM0MzU0ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTE5Niwy
NiArMTk2LDIxIEBAIExheW91dFVuaXQgSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uSGVpZ2h0KCkg
Y29uc3QKICAgICByZXR1cm4gcm9vdCgpLnNlbGVjdGlvbkhlaWdodCgpOwogfQogCi1ib29sIElu
bGluZVRleHRCb3g6OmlzU2VsZWN0ZWQodW5zaWduZWQgc3RhcnRQb3MsIHVuc2lnbmVkIGVuZFBv
cykgY29uc3QKK2Jvb2wgSW5saW5lVGV4dEJveDo6aXNTZWxlY3RlZChpbnQgc3RhcnRQb3MsIGlu
dCBlbmRQb3MpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgc1BvcyA9IHN0YXJ0UG9zID4gbV9zdGFy
dCA/IHN0YXJ0UG9zIC0gbV9zdGFydCA6IDA7Ci0gICAgaWYgKGVuZFBvcyA8PSBtX3N0YXJ0KQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgZVBvcyA9IHN0ZDo6bWluKGVuZFBv
cyAtIG1fc3RhcnQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2xlbikpOwotICAgIHJldHVybiBz
UG9zIDwgZVBvczsKKyAgICBpbnQgc1BvcyA9IHN0ZDo6bWF4KHN0YXJ0UG9zIC0gbV9zdGFydCwg
MCk7CisgICAgaW50IGVQb3MgPSBzdGQ6Om1pbihlbmRQb3MgLSBtX3N0YXJ0LCBzdGF0aWNfY2Fz
dDxpbnQ+KG1fbGVuKSk7CisgICAgcmV0dXJuIChzUG9zIDwgZVBvcyk7CiB9CiAKIFJlbmRlck9i
amVjdDo6U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhdGUoKQogewog
ICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc3RhdGUgPSByZW5kZXJlcigpLnNlbGVj
dGlvblN0YXRlKCk7CiAgICAgaWYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3Rh
cnQgfHwgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQgfHwgc3RhdGUgPT0gUmVu
ZGVyT2JqZWN0OjpTZWxlY3Rpb25Cb3RoKSB7Ci0gICAgICAgIGludCBpbml0aWFsU3RhcnRQb3Ms
IGluaXRpYWxFbmRQb3M7Ci0gICAgICAgIHJlbmRlcmVyKCkuc2VsZWN0aW9uU3RhcnRFbmQoaW5p
dGlhbFN0YXJ0UG9zLCBpbml0aWFsRW5kUG9zKTsKLSAgICAgICAgQVNTRVJUKGluaXRpYWxTdGFy
dFBvcyA+PSAwICYmIGluaXRpYWxFbmRQb3MgPj0gMCk7Ci0gICAgICAgIHVuc2lnbmVkIHN0YXJ0
UG9zID0gaW5pdGlhbFN0YXJ0UG9zOwotICAgICAgICB1bnNpZ25lZCBlbmRQb3MgPSBpbml0aWFs
RW5kUG9zOworICAgICAgICBpbnQgc3RhcnRQb3MsIGVuZFBvczsKKyAgICAgICAgcmVuZGVyZXIo
KS5zZWxlY3Rpb25TdGFydEVuZChzdGFydFBvcywgZW5kUG9zKTsKICAgICAgICAgLy8gVGhlIHBv
c2l0aW9uIGFmdGVyIGEgaGFyZCBsaW5lIGJyZWFrIGlzIGNvbnNpZGVyZWQgdG8gYmUgcGFzdCBp
dHMgZW5kLgotICAgICAgICB1bnNpZ25lZCBsYXN0U2VsZWN0YWJsZSA9IHN0YXJ0KCkgKyBsZW4o
KSAtIChpc0xpbmVCcmVhaygpID8gMSA6IDApOworICAgICAgICBpbnQgbGFzdFNlbGVjdGFibGUg
PSBzdGFydCgpICsgbGVuKCkgLSAoaXNMaW5lQnJlYWsoKSA/IDEgOiAwKTsKIAogICAgICAgICBi
b29sIHN0YXJ0ID0gKHN0YXRlICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5kICYmIHN0YXJ0
UG9zID49IG1fc3RhcnQgJiYgc3RhcnRQb3MgPCBtX3N0YXJ0ICsgbV9sZW4pOwogICAgICAgICBi
b29sIGVuZCA9IChzdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXJ0ICYmIGVuZFBv
cyA+IG1fc3RhcnQgJiYgZW5kUG9zIDw9IGxhc3RTZWxlY3RhYmxlKTsKQEAgLTIzNiw3ICsyMzEs
NyBAQCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZVRleHRCb3g6OnNlbGVjdGlv
blN0YXRlKCkKICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNOb1RydW5jYXRpb24gJiYgcm9vdCgp
LmVsbGlwc2lzQm94KCkpIHsKICAgICAgICAgRWxsaXBzaXNCb3gqIGVsbGlwc2lzID0gcm9vdCgp
LmVsbGlwc2lzQm94KCk7CiAgICAgICAgIGlmIChzdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVj
dGlvbk5vbmUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0LCBlbmQ7CisgICAgICAgICAg
ICBpbnQgc3RhcnQsIGVuZDsKICAgICAgICAgICAgIHNlbGVjdGlvblN0YXJ0RW5kKHN0YXJ0LCBl
bmQpOwogICAgICAgICAgICAgLy8gVGhlIGVsbGlwc2lzIHNob3VsZCBiZSBjb25zaWRlcmVkIHRv
IGJlIHNlbGVjdGVkIGlmIHRoZSBlbmQgb2YKICAgICAgICAgICAgIC8vIHRoZSBzZWxlY3Rpb24g
aXMgcGFzdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0cnVuY2F0aW9uIGFuZCB0aGUKQEAgLTI1MSw3
ICsyNDYsNyBAQCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZVRleHRCb3g6OnNl
bGVjdGlvblN0YXRlKCkKICAgICByZXR1cm4gc3RhdGU7CiB9CiAKLXN0YXRpYyB2b2lkIGFkanVz
dENoYXJhY3RlcnNBbmRMZW5ndGhGb3JIeXBoZW4oQnVmZmVyRm9yQXBwZW5kaW5nSHlwaGVuJiBj
aGFyYWN0ZXJzV2l0aEh5cGhlbiwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBTdHJpbmcmIHN0
cmluZywgdW5zaWduZWQmIGxlbmd0aCkKK3N0YXRpYyB2b2lkIGFkanVzdENoYXJhY3RlcnNBbmRM
ZW5ndGhGb3JIeXBoZW4oQnVmZmVyRm9yQXBwZW5kaW5nSHlwaGVuJiBjaGFyYWN0ZXJzV2l0aEh5
cGhlbiwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBTdHJpbmcmIHN0cmluZywgaW50JiBsZW5n
dGgpCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBoeXBoZW5TdHJpbmcgPSBzdHlsZS5oeXBo
ZW5TdHJpbmcoKTsKICAgICBjaGFyYWN0ZXJzV2l0aEh5cGhlbi5yZXNlcnZlQ2FwYWNpdHkobGVu
Z3RoICsgaHlwaGVuU3RyaW5nLmxlbmd0aCgpKTsKQEAgLTI3MSwxNCArMjY2LDEwIEBAIHN0YXRp
YyBjb25zdCBGb250JiBmb250VG9Vc2UoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBS
ZW5kZXJUZXh0JiByZW5kZXJlCiAgICAgcmV0dXJuIHN0eWxlLmZvbnQoKTsKIH0KIAotTGF5b3V0
UmVjdCBJbmxpbmVUZXh0Qm94Ojpsb2NhbFNlbGVjdGlvblJlY3QodW5zaWduZWQgc3RhcnRQb3Ms
IHVuc2lnbmVkIGVuZFBvcykgY29uc3QKK0xheW91dFJlY3QgSW5saW5lVGV4dEJveDo6bG9jYWxT
ZWxlY3Rpb25SZWN0KGludCBzdGFydFBvcywgaW50IGVuZFBvcykgY29uc3QKIHsKLSAgICB1bnNp
Z25lZCBzUG9zID0gc3RhcnRQb3MgPiBtX3N0YXJ0ID8gc3RhcnRQb3MgLSBtX3N0YXJ0IDogMDsK
LSAgICAKLSAgICBpZiAoZW5kUG9zIDwgbV9zdGFydCkKLSAgICAgICAgcmV0dXJuIExheW91dFJl
Y3QoKTsKLQotICAgIHVuc2lnbmVkIGVQb3MgPSBzdGQ6Om1pbihlbmRQb3MgLSBtX3N0YXJ0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9sZW4pKTsKKyAgICBpbnQgc1BvcyA9IHN0ZDo6bWF4KHN0
YXJ0UG9zIC0gbV9zdGFydCwgMCk7CisgICAgaW50IGVQb3MgPSBzdGQ6Om1pbihlbmRQb3MgLSBt
X3N0YXJ0LCAoaW50KW1fbGVuKTsKICAgICAKICAgICBpZiAoc1BvcyA+IGVQb3MpCiAgICAgICAg
IHJldHVybiBMYXlvdXRSZWN0KCk7CkBAIC0yOTMsMTAgKzI4NCwxMiBAQCBMYXlvdXRSZWN0IElu
bGluZVRleHRCb3g6OmxvY2FsU2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydFBvcywgdW5zaWdu
ZWQgZW5kUG9zKQogICAgIEJ1ZmZlckZvckFwcGVuZGluZ0h5cGhlbiBjaGFyYWN0ZXJzV2l0aEh5
cGhlbjsKICAgICBib29sIHJlc3BlY3RIeXBoZW4gPSBlUG9zID09IG1fbGVuICYmIGhhc0h5cGhl
bigpOwogICAgIFRleHRSdW4gdGV4dFJ1biA9IGNvbnN0cnVjdFRleHRSdW4obGluZVN0eWxlLCBm
b250LCByZXNwZWN0SHlwaGVuID8gJmNoYXJhY3RlcnNXaXRoSHlwaGVuIDogMCk7CisgICAgaWYg
KHJlc3BlY3RIeXBoZW4pCisgICAgICAgIGVuZFBvcyA9IHRleHRSdW4ubGVuZ3RoKCk7CiAKICAg
ICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0KExheW91dFBvaW50KGxvZ2lj
YWxMZWZ0KCksIHNlbGVjdGlvblRvcCksIExheW91dFNpemUobV9sb2dpY2FsV2lkdGgsIHNlbGVj
dGlvbkhlaWdodCkpOwogICAgIC8vIEF2b2lkIGNvbXB1dGluZyB0aGUgZm9udCB3aWR0aCB3aGVu
IHRoZSBlbnRpcmUgbGluZSBib3ggaXMgc2VsZWN0ZWQgYXMgYW4gb3B0aW1pemF0aW9uLgotICAg
IGlmIChzUG9zIHx8IGVQb3MgIT0gbV9sZW4pCisgICAgaWYgKHNQb3MgfHwgZVBvcyAhPSBzdGF0
aWNfY2FzdDxpbnQ+KG1fbGVuKSkKICAgICAgICAgZm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9y
VGV4dCh0ZXh0UnVuLCBzZWxlY3Rpb25SZWN0LCBzUG9zLCBlUG9zKTsKICAgICBJbnRSZWN0IHNu
YXBwZWRTZWxlY3Rpb25SZWN0ID0gZW5jbG9zaW5nSW50UmVjdChzZWxlY3Rpb25SZWN0KTsKICAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCA9IHNuYXBwZWRTZWxlY3Rpb25SZWN0LndpZHRoKCk7
CkBAIC02MTMsMTYgKzYwNiwxNSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgfQogCiAg
ICAgLy8gMi4gTm93IHBhaW50IHRoZSBmb3JlZ3JvdW5kLCBpbmNsdWRpbmcgdGV4dCBhbmQgZGVj
b3JhdGlvbnMgbGlrZSB1bmRlcmxpbmUvb3ZlcmxpbmUgKGluIHF1aXJrcyBtb2RlIG9ubHkpLgot
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fbGVuOwotICAgIHVuc2lnbmVkIG1heGltdW1MZW5ndGg7
CisgICAgaW50IGxlbmd0aCA9IG1fbGVuOworICAgIGludCBtYXhpbXVtTGVuZ3RoOwogICAgIFN0
cmluZyBzdHJpbmc7CiAgICAgaWYgKCFjb21iaW5lZFRleHQpIHsKICAgICAgICAgc3RyaW5nID0g
cmVuZGVyZXIoKS50ZXh0KCk7Ci0gICAgICAgIGlmIChsZW5ndGggIT0gc3RyaW5nLmxlbmd0aCgp
IHx8IG1fc3RhcnQpIHsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKG1fc3RhcnQgKyBsZW5ndGggPD0gc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgaWYgKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpICE9IHN0cmluZy5sZW5ndGgoKSB8fCBtX3N0YXJ0
KSB7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obV9zdGFydCArIGxlbmd0aCkgPD0gc3RyaW5nLmxlbmd0aCgpKTsKICAg
ICAgICAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHJpbmdTaGFyaW5nSW1wbChtX3N0YXJ0LCBs
ZW5ndGgpOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChyZW5kZXJlcigpLnRleHRMZW5ndGgo
KSA+PSBtX3N0YXJ0KTsKICAgICAgICAgbWF4aW11bUxlbmd0aCA9IHJlbmRlcmVyKCkudGV4dExl
bmd0aCgpIC0gbV9zdGFydDsKICAgICB9IGVsc2UgewogICAgICAgICBjb21iaW5lZFRleHQtPmdl
dFN0cmluZ1RvUmVuZGVyKG1fc3RhcnQsIHN0cmluZywgbGVuZ3RoKTsKQEAgLTYzNCwxNCArNjI2
LDE0IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICBpZiAoaGFzSHlwaGVuKCkpCiAgICAg
ICAgIGxlbmd0aCA9IHRleHRSdW4ubGVuZ3RoKCk7CiAKLSAgICB1bnNpZ25lZCBzUG9zID0gMDsK
LSAgICB1bnNpZ25lZCBlUG9zID0gMDsKKyAgICBpbnQgc1BvcyA9IDA7CisgICAgaW50IGVQb3Mg
PSAwOwogICAgIGlmIChoYXZlU2VsZWN0aW9uICYmIChwYWludFNlbGVjdGVkVGV4dE9ubHkgfHwg
cGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5KSkKICAgICAgICAgc2VsZWN0aW9uU3RhcnRFbmQo
c1BvcywgZVBvcyk7CiAKICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNOb1RydW5jYXRpb24pIHsK
LSAgICAgICAgc1BvcyA9IHN0ZDo6bWluKHNQb3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Ry
dW5jYXRpb24pKTsKLSAgICAgICAgZVBvcyA9IHN0ZDo6bWluKGVQb3MsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3RydW5jYXRpb24pKTsKKyAgICAgICAgc1BvcyA9IHN0ZDo6bWluPGludD4oc1Bv
cywgbV90cnVuY2F0aW9uKTsKKyAgICAgICAgZVBvcyA9IHN0ZDo6bWluPGludD4oZVBvcywgbV90
cnVuY2F0aW9uKTsKICAgICAgICAgbGVuZ3RoID0gbV90cnVuY2F0aW9uOwogICAgIH0KIApAQCAt
NzAxLDI3ICs2OTMsMjIgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgICAgICBjb250ZXh0
LT5jb25jYXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ291bnRlcmNsb2Nrd2lzZSkpOwogfQogCi12
b2lkIElubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kKHVuc2lnbmVkJiBzUG9zLCB1bnNp
Z25lZCYgZVBvcykKK3ZvaWQgSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhcnRFbmQoaW50JiBz
UG9zLCBpbnQmIGVQb3MpCiB7Ci0gICAgdW5zaWduZWQgc3RhcnRQb3MsIGVuZFBvczsKKyAgICBp
bnQgc3RhcnRQb3MsIGVuZFBvczsKICAgICBpZiAocmVuZGVyZXIoKS5zZWxlY3Rpb25TdGF0ZSgp
ID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uSW5zaWRlKSB7CiAgICAgICAgIHN0YXJ0UG9zID0g
MDsKICAgICAgICAgZW5kUG9zID0gcmVuZGVyZXIoKS50ZXh0TGVuZ3RoKCk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgaW50IG9yaWdpbmFsU3RhcnRQb3MsIG9yaWdpbmFsRW5kUG9zOwotICAgICAg
ICByZW5kZXJlcigpLnNlbGVjdGlvblN0YXJ0RW5kKG9yaWdpbmFsU3RhcnRQb3MsIG9yaWdpbmFs
RW5kUG9zKTsKLSAgICAgICAgQVNTRVJUKG9yaWdpbmFsU3RhcnRQb3MgPj0gMCAmJiBvcmlnaW5h
bEVuZFBvcyA+PSAwKTsKLSAgICAgICAgc3RhcnRQb3MgPSBvcmlnaW5hbFN0YXJ0UG9zOwotICAg
ICAgICBlbmRQb3MgPSBvcmlnaW5hbEVuZFBvczsKKyAgICAgICAgcmVuZGVyZXIoKS5zZWxlY3Rp
b25TdGFydEVuZChzdGFydFBvcywgZW5kUG9zKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkuc2Vs
ZWN0aW9uU3RhdGUoKSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXJ0KQogICAgICAgICAg
ICAgZW5kUG9zID0gcmVuZGVyZXIoKS50ZXh0TGVuZ3RoKCk7CiAgICAgICAgIGVsc2UgaWYgKHJl
bmRlcmVyKCkuc2VsZWN0aW9uU3RhdGUoKSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkVuZCkK
ICAgICAgICAgICAgIHN0YXJ0UG9zID0gMDsKICAgICB9Ci0gICAgCi0gICAgc1BvcyA9IHN0YXJ0
UG9zID4gbV9zdGFydCA/IHN0YXJ0UG9zIC0gbV9zdGFydCA6IDA7Ci0gICAgZVBvcyA9IGVuZFBv
cyA+IG1fc3RhcnQgPyBlbmRQb3MgLSBtX3N0YXJ0IDogMDsKLSAgICBlUG9zID0gc3RkOjptaW4o
ZVBvcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fbGVuKSk7CisKKyAgICBzUG9zID0gc3RkOjpt
YXgoc3RhcnRQb3MgLSBtX3N0YXJ0LCAwKTsKKyAgICBlUG9zID0gc3RkOjptaW4oZW5kUG9zIC0g
bV9zdGFydCwgKGludCltX2xlbik7CiB9CiAKIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRTZWxl
Y3Rpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmln
aW4sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udCYgZm9udCwgQ29sb3IgdGV4
dENvbG9yKQpAQCAtNzMxLDcgKzcxOCw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRTZWxl
Y3Rpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBiCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIFNlZSBpZiB3ZSBoYXZlIGEgc2VsZWN0aW9uIHRvIHBhaW50
IGF0IGFsbC4KLSAgICB1bnNpZ25lZCBzUG9zLCBlUG9zOworICAgIGludCBzUG9zLCBlUG9zOwog
ICAgIHNlbGVjdGlvblN0YXJ0RW5kKHNQb3MsIGVQb3MpOwogICAgIGlmIChzUG9zID49IGVQb3Mp
CiAgICAgICAgIHJldHVybjsKQEAgLTc1MCw3ICs3MzcsNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRQb2lu
dCYgYgogICAgIAogICAgIC8vIElmIHRoZSB0ZXh0IGlzIHRydW5jYXRlZCwgbGV0IHRoZSB0aGlu
ZyBiZWluZyBwYWludGVkIGluIHRoZSB0cnVuY2F0aW9uCiAgICAgLy8gZHJhdyBpdHMgb3duIGhp
Z2hsaWdodC4KLSAgICB1bnNpZ25lZCBsZW5ndGggPSBtX3RydW5jYXRpb24gIT0gY05vVHJ1bmNh
dGlvbiA/IG1fdHJ1bmNhdGlvbiA6IG1fbGVuOworICAgIGludCBsZW5ndGggPSBtX3RydW5jYXRp
b24gIT0gY05vVHJ1bmNhdGlvbiA/IG1fdHJ1bmNhdGlvbiA6IG1fbGVuOwogICAgIFN0cmluZyBz
dHJpbmcgPSByZW5kZXJlcigpLnRleHQoKTsKIAogICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgIT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCkgfHwgbV9zdGFydCkgewpAQCAtNzYwLDcgKzc0
Nyw2IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBiCiAKICAgICBCdWZmZXJGb3JBcHBlbmRpbmdI
eXBoZW4gY2hhcmFjdGVyc1dpdGhIeXBoZW47CiAgICAgYm9vbCByZXNwZWN0SHlwaGVuID0gZVBv
cyA9PSBsZW5ndGggJiYgaGFzSHlwaGVuKCk7Ci0gICAgQVNTRVJUKHJlbmRlcmVyKCkudGV4dExl
bmd0aCgpID49IG1fc3RhcnQpOwogICAgIFRleHRSdW4gdGV4dFJ1biA9IGNvbnN0cnVjdFRleHRS
dW4oc3R5bGUsIGZvbnQsIHN0cmluZywgcmVuZGVyZXIoKS50ZXh0TGVuZ3RoKCkgLSBtX3N0YXJ0
LCByZXNwZWN0SHlwaGVuID8gJmNoYXJhY3RlcnNXaXRoSHlwaGVuIDogMCk7CiAgICAgaWYgKHJl
c3BlY3RIeXBoZW4pCiAgICAgICAgIGVQb3MgPSB0ZXh0UnVuLmxlbmd0aCgpOwpAQCAtNzg0LDEy
ICs3NzAsMTEgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKICNlbmRpZgogfQogCi12b2lkIElu
bGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIGNvbnN0IEZvbnQmIGZvbnQsIHVuc2lnbmVkIHN0YXJ0UG9zLCB1bnNpZ25lZCBlbmRQ
b3MpCit2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZvbnQmIGZvbnQsIGludCBzdGFydFBvcywgaW50IGVu
ZFBvcykKIHsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSBtX3N0YXJ0OwotICAgIHVuc2lnbmVkIHNQ
b3MgPSBzdGFydFBvcyA+IG9mZnNldCA/IHN0YXJ0UG9zIC0gb2Zmc2V0IDogMDsKLSAgICBBU1NF
UlQoZW5kUG9zID49IG9mZnNldCk7Ci0gICAgdW5zaWduZWQgZVBvcyA9IHN0ZDo6bWluKGVuZFBv
cyAtIG9mZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fbGVuKSk7CisgICAgaW50IG9mZnNl
dCA9IG1fc3RhcnQ7CisgICAgaW50IHNQb3MgPSBzdGQ6Om1heChzdGFydFBvcyAtIG9mZnNldCwg
MCk7CisgICAgaW50IGVQb3MgPSBzdGQ6Om1pbihlbmRQb3MgLSBvZmZzZXQsIChpbnQpbV9sZW4p
OwogCiAgICAgaWYgKHNQb3MgPj0gZVBvcykKICAgICAgICAgcmV0dXJuOwpAQCAtMTEyOCw3ICsx
MTEzLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERvY3VtZW50TWFya2VyKEdyYXBoaWNz
Q29udGV4dCogcHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKIAogICAgIC8vIERldGVybWluZSB3aGV0
aGVyIHdlIG5lZWQgdG8gbWVhc3VyZSB0ZXh0CiAgICAgYm9vbCBtYXJrZXJTcGFuc1dob2xlQm94
ID0gdHJ1ZTsKLSAgICBpZiAobV9zdGFydCA8PSBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpCisgICAg
aWYgKG1fc3RhcnQgPD0gKGludCltYXJrZXItPnN0YXJ0T2Zmc2V0KCkpCiAgICAgICAgIG1hcmtl
clNwYW5zV2hvbGVCb3ggPSBmYWxzZTsKICAgICBpZiAoKGVuZCgpICsgMSkgIT0gbWFya2VyLT5l
bmRPZmZzZXQoKSkgLy8gZW5kIHBvaW50cyBhdCB0aGUgbGFzdCBjaGFyLCBub3QgcGFzdCBpdAog
ICAgICAgICBtYXJrZXJTcGFuc1dob2xlQm94ID0gZmFsc2U7CkBAIC0xMTM3LDEyICsxMTIyLDEx
IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcihHcmFwaGljc0NvbnRl
eHQqIHB0LCBjb25zdCBGbG9hdFBvaW50JiBiCiAKICAgICBib29sIGlzRGljdGF0aW9uTWFya2Vy
ID0gbWFya2VyLT50eXBlKCkgPT0gRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkFsdGVybmF0aXZl
czsKICAgICBpZiAoIW1hcmtlclNwYW5zV2hvbGVCb3ggfHwgZ3JhbW1hciB8fCBpc0RpY3RhdGlv
bk1hcmtlcikgewotICAgICAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uID0gbWFya2VyLT5zdGFy
dE9mZnNldCgpID4gbV9zdGFydCA/IG1hcmtlci0+c3RhcnRPZmZzZXQoKSAtIG1fc3RhcnQgOiAw
OwotICAgICAgICBBU1NFUlQobWFya2VyLT5lbmRPZmZzZXQoKSA+PSBtX3N0YXJ0KTsKLSAgICAg
ICAgdW5zaWduZWQgZW5kUG9zaXRpb24gPSBzdGQ6Om1pbihtYXJrZXItPmVuZE9mZnNldCgpIC0g
bV9zdGFydCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fbGVuKSk7CisgICAgICAgIGludCBzdGFy
dFBvc2l0aW9uID0gc3RkOjptYXg8aW50PihtYXJrZXItPnN0YXJ0T2Zmc2V0KCkgLSBtX3N0YXJ0
LCAwKTsKKyAgICAgICAgaW50IGVuZFBvc2l0aW9uID0gc3RkOjptaW48aW50PihtYXJrZXItPmVu
ZE9mZnNldCgpIC0gbV9zdGFydCwgbV9sZW4pOwogICAgICAgICAKICAgICAgICAgaWYgKG1fdHJ1
bmNhdGlvbiAhPSBjTm9UcnVuY2F0aW9uKQotICAgICAgICAgICAgZW5kUG9zaXRpb24gPSBzdGQ6
Om1pbihlbmRQb3NpdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fdHJ1bmNhdGlvbikpOwor
ICAgICAgICAgICAgZW5kUG9zaXRpb24gPSBzdGQ6Om1pbjxpbnQ+KGVuZFBvc2l0aW9uLCBtX3Ry
dW5jYXRpb24pOwogCiAgICAgICAgIC8vIENhbGN1bGF0ZSBzdGFydCAmIHdpZHRoCiAgICAgICAg
IGludCBkZWx0YVkgPSByZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9k
ZSgpID8gc2VsZWN0aW9uQm90dG9tKCkgLSBsb2dpY2FsQm90dG9tKCkgOiBsb2dpY2FsVG9wKCkg
LSBzZWxlY3Rpb25Ub3AoKTsKQEAgLTExODksOSArMTE3Myw4IEBAIHZvaWQgSW5saW5lVGV4dEJv
eDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBG
bG9hdFBvCiB7CiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25IZWlnaHQgPSB0aGlzLT5zZWxlY3Rp
b25IZWlnaHQoKTsKIAotICAgIHVuc2lnbmVkIHNQb3MgPSBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkg
PiBtX3N0YXJ0ID8gbWFya2VyLT5zdGFydE9mZnNldCgpIC0gbV9zdGFydCA6IDA7Ci0gICAgQVNT
RVJUKG1hcmtlci0+ZW5kT2Zmc2V0KCkgPj0gbV9zdGFydCk7Ci0gICAgdW5zaWduZWQgZVBvcyA9
IHN0ZDo6bWluKG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBtX3N0YXJ0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9sZW4pKTsKKyAgICBpbnQgc1BvcyA9IHN0ZDo6bWF4KG1hcmtlci0+c3RhcnRPZmZz
ZXQoKSAtIG1fc3RhcnQsICh1bnNpZ25lZCkwKTsKKyAgICBpbnQgZVBvcyA9IHN0ZDo6bWluKG1h
cmtlci0+ZW5kT2Zmc2V0KCkgLSBtX3N0YXJ0LCAodW5zaWduZWQpbV9sZW4pOwogICAgIFRleHRS
dW4gcnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgZm9udCk7CiAKICAgICAvLyBBbHdheXMg
Y29tcHV0ZSBhbmQgc3RvcmUgdGhlIHJlY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWFya2VyLiBU
aGUgY29tcHV0ZWQgcmVjdCBpcyBpbiBhYnNvbHV0ZSBjb29yZGluYXRlcy4KQEAgLTEyMjMsOSAr
MTIwNiw4IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6Y29tcHV0ZVJlY3RGb3JSZXBsYWNlbWVudE1h
cmtlcihEb2N1bWVudE1hcmtlciogbWFya2VyLCBjb25zCiAgICAgTGF5b3V0VW5pdCB0b3AgPSBz
ZWxlY3Rpb25Ub3AoKTsKICAgICBMYXlvdXRVbml0IGggPSBzZWxlY3Rpb25IZWlnaHQoKTsKICAg
ICAKLSAgICB1bnNpZ25lZCBzUG9zID0gbWFya2VyLT5zdGFydE9mZnNldCgpID4gbV9zdGFydCA/
IG1hcmtlci0+c3RhcnRPZmZzZXQoKSAtIG1fc3RhcnQgOiAwOwotICAgIEFTU0VSVChtYXJrZXIt
PmVuZE9mZnNldCgpID49IG1fc3RhcnQpOwotICAgIHVuc2lnbmVkIGVQb3MgPSBzdGQ6Om1pbiht
YXJrZXItPmVuZE9mZnNldCgpIC0gbV9zdGFydCwgKHVuc2lnbmVkKW1fbGVuKTsKKyAgICBpbnQg
c1BvcyA9IHN0ZDo6bWF4KG1hcmtlci0+c3RhcnRPZmZzZXQoKSAtIG1fc3RhcnQsICh1bnNpZ25l
ZCkwKTsKKyAgICBpbnQgZVBvcyA9IHN0ZDo6bWluKG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBtX3N0
YXJ0LCAodW5zaWduZWQpbV9sZW4pOwogICAgIFRleHRSdW4gcnVuID0gY29uc3RydWN0VGV4dFJ1
bihzdHlsZSwgZm9udCk7CiAKICAgICAvLyBDb21wdXRlIGFuZCBzdG9yZSB0aGUgcmVjdCBhc3Nv
Y2lhdGVkIHdpdGggdGhpcyBtYXJrZXIuCkBAIC0xMzMyLDExICsxMzE0LDExIEBAIHZvaWQgSW5s
aW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvblVuZGVybGluZShHcmFwaGljc0NvbnRleHQqIGN0
eCwgY29uc3QgRmxvYXRQCiAgICAgICAgIHN0YXJ0ID0gcmVuZGVyZXIoKS53aWR0aChtX3N0YXJ0
LCBwYWludFN0YXJ0IC0gbV9zdGFydCwgdGV4dFBvcygpLCBpc0ZpcnN0TGluZSgpKTsKICAgICB9
CiAgICAgaWYgKHBhaW50RW5kICE9IHVuZGVybGluZS5lbmRPZmZzZXQpIHsgICAgICAvLyBlbmQg
cG9pbnRzIGF0IHRoZSBsYXN0IGNoYXIsIG5vdCBwYXN0IGl0Ci0gICAgICAgIHBhaW50RW5kID0g
c3RkOjptaW4ocGFpbnRFbmQsIHVuZGVybGluZS5lbmRPZmZzZXQpOworICAgICAgICBwYWludEVu
ZCA9IHN0ZDo6bWluKHBhaW50RW5kLCAodW5zaWduZWQpdW5kZXJsaW5lLmVuZE9mZnNldCk7CiAg
ICAgICAgIHVzZVdob2xlV2lkdGggPSBmYWxzZTsKICAgICB9CiAgICAgaWYgKG1fdHJ1bmNhdGlv
biAhPSBjTm9UcnVuY2F0aW9uKSB7Ci0gICAgICAgIHBhaW50RW5kID0gc3RkOjptaW4ocGFpbnRF
bmQsIG1fc3RhcnQgKyBtX3RydW5jYXRpb24pOworICAgICAgICBwYWludEVuZCA9IHN0ZDo6bWlu
KHBhaW50RW5kLCAodW5zaWduZWQpbV9zdGFydCArIG1fdHJ1bmNhdGlvbik7CiAgICAgICAgIHVz
ZVdob2xlV2lkdGggPSBmYWxzZTsKICAgICB9CiAgICAgaWYgKCF1c2VXaG9sZVdpZHRoKSB7CkBA
IC0xMzk3LDcgKzEzNzksNyBAQCBpbnQgSW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb24o
ZmxvYXQgbGluZU9mZnNldCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocwogICAgIHJldHVybiBm
b250Lm9mZnNldEZvclBvc2l0aW9uKGNvbnN0cnVjdFRleHRSdW4obGluZVN0eWxlLCBmb250KSwg
bGluZU9mZnNldCAtIGxvZ2ljYWxMZWZ0KCksIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKTsKIH0KIAot
ZmxvYXQgSW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQodW5zaWduZWQgb2Zmc2V0KSBj
b25zdAorZmxvYXQgSW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkg
Y29uc3QKIHsKICAgICBBU1NFUlQob2Zmc2V0ID49IG1fc3RhcnQpOwogICAgIEFTU0VSVChvZmZz
ZXQgPD0gbV9zdGFydCArIG1fbGVuKTsKQEAgLTE0MDksOCArMTM5MSw4IEBAIGZsb2F0IElubGlu
ZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29uc3QKIAogICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUgPSB0aGlzLT5saW5lU3R5bGUoKTsKICAgICBj
b25zdCBGb250JiBmb250ID0gZm9udFRvVXNlKGxpbmVTdHlsZSwgcmVuZGVyZXIoKSk7Ci0gICAg
dW5zaWduZWQgZnJvbSA9ICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBvZmZzZXQgLSBtX3N0
YXJ0IDogMDsKLSAgICB1bnNpZ25lZCB0byA9ICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBt
X2xlbiA6IG9mZnNldCAtIG1fc3RhcnQ7CisgICAgaW50IGZyb20gPSAhaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpID8gb2Zmc2V0IC0gbV9zdGFydCA6IDA7CisgICAgaW50IHRvID0gIWlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSA/IG1fbGVuIDogb2Zmc2V0IC0gbV9zdGFydDsKICAgICAvLyBGSVhN
RTogRG8gd2UgbmVlZCB0byBhZGQgcmlnaHRCZWFyaW5nIGhlcmU/CiAgICAgTGF5b3V0UmVjdCBz
ZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdChsb2dpY2FsTGVmdCgpLCAwLCAwLCAwKTsKICAgICBU
ZXh0UnVuIHJ1biA9IGNvbnN0cnVjdFRleHRSdW4obGluZVN0eWxlLCBmb250KTsKQEAgLTE0Mjgs
MTQgKzE0MTAsMTMgQEAgVGV4dFJ1biBJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udCYgZm8KIAogICAgIGlmIChzdHJpbmcu
bGVuZ3RoKCkgIT0gbGVuZ3RoIHx8IHN0YXJ0UG9zKQogICAgICAgICBzdHJpbmcgPSBzdHJpbmcu
c3Vic3RyaW5nU2hhcmluZ0ltcGwoc3RhcnRQb3MsIGxlbmd0aCk7Ci0gICAgCi0gICAgQVNTRVJU
KHJlbmRlcmVyKCkudGV4dExlbmd0aCgpID49IHN0YXJ0UG9zKTsKKwogICAgIHJldHVybiBjb25z
dHJ1Y3RUZXh0UnVuKHN0eWxlLCBmb250LCBzdHJpbmcsIHJlbmRlcmVyKCkudGV4dExlbmd0aCgp
IC0gc3RhcnRQb3MsIGNoYXJhY3RlcnNXaXRoSHlwaGVuKTsKIH0KIAotVGV4dFJ1biBJbmxpbmVU
ZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
Rm9udCYgZm9udCwgU3RyaW5nIHN0cmluZywgdW5zaWduZWQgbWF4aW11bUxlbmd0aCwgQnVmZmVy
Rm9yQXBwZW5kaW5nSHlwaGVuKiBjaGFyYWN0ZXJzV2l0aEh5cGhlbikgY29uc3QKK1RleHRSdW4g
SW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IEZvbnQmIGZvbnQsIFN0cmluZyBzdHJpbmcsIGludCBtYXhpbXVtTGVuZ3RoLCBCdWZm
ZXJGb3JBcHBlbmRpbmdIeXBoZW4qIGNoYXJhY3RlcnNXaXRoSHlwaGVuKSBjb25zdAogewotICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBpbnQgbGVuZ3RoID0gc3Ry
aW5nLmxlbmd0aCgpOwogCiAgICAgaWYgKGNoYXJhY3RlcnNXaXRoSHlwaGVuKSB7CiAgICAgICAg
IGFkanVzdENoYXJhY3RlcnNBbmRMZW5ndGhGb3JIeXBoZW4oKmNoYXJhY3RlcnNXaXRoSHlwaGVu
LCBzdHlsZSwgc3RyaW5nLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmgKaW5kZXggN2QzZjViNjZlZmQ4MzE5NTY0OGVmYjgyYmQzZGJhOTA1M2EyZDRmYy4u
YzQyYjU0ZThkMmI3NTk0ZjhhYjlhNjc4OGY4OTc5ZGZlNTZiODRiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBAIC0xMTAsMTUgKzExMCwxNSBAQCBwcml2YXRl
OgogICAgIExheW91dFVuaXQgc2VsZWN0aW9uQm90dG9tKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5p
dCBzZWxlY3Rpb25IZWlnaHQoKSBjb25zdDsKIAotICAgIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1
bihjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnQmLCBCdWZmZXJGb3JBcHBlbmRpbmdIeXBo
ZW4qID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0
IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udCYsIFN0cmluZywgdW5zaWduZWQgbWF4aW11bUxlbmd0
aCwgQnVmZmVyRm9yQXBwZW5kaW5nSHlwaGVuKiA9IG51bGxwdHIpIGNvbnN0OworICAgIFRleHRS
dW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnQmLCBCdWZm
ZXJGb3JBcHBlbmRpbmdIeXBoZW4qID0gMCkgY29uc3Q7CisgICAgVGV4dFJ1biBjb25zdHJ1Y3RU
ZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udCYsIFN0cmluZywgaW50IG1heGlt
dW1MZW5ndGgsIEJ1ZmZlckZvckFwcGVuZGluZ0h5cGhlbiogPSAwKSBjb25zdDsKIAogcHVibGlj
OgogICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNhbGN1bGF0ZUJvdW5kYXJpZXMoKSBjb25zdCB7IHJl
dHVybiBGbG9hdFJlY3QoeCgpLCB5KCksIHdpZHRoKCksIGhlaWdodCgpKTsgfQogCi0gICAgdmly
dHVhbCBMYXlvdXRSZWN0IGxvY2FsU2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydFBvcywgdW5z
aWduZWQgZW5kUG9zKSBjb25zdDsKLSAgICBib29sIGlzU2VsZWN0ZWQodW5zaWduZWQgc3RhcnRQ
b3MsIHVuc2lnbmVkIGVuZFBvcykgY29uc3Q7Ci0gICAgdm9pZCBzZWxlY3Rpb25TdGFydEVuZCh1
bnNpZ25lZCYgc1BvcywgdW5zaWduZWQmIGVQb3MpOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBs
b2NhbFNlbGVjdGlvblJlY3QoaW50IHN0YXJ0UG9zLCBpbnQgZW5kUG9zKSBjb25zdDsKKyAgICBi
b29sIGlzU2VsZWN0ZWQoaW50IHN0YXJ0UG9zLCBpbnQgZW5kUG9zKSBjb25zdDsKKyAgICB2b2lk
IHNlbGVjdGlvblN0YXJ0RW5kKGludCYgc1BvcywgaW50JiBlUG9zKTsKIAogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExh
eW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKTsKQEAgLTE1OCwxMyArMTU4
LDEzIEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBvZmZzZXRGb3JQb3Np
dGlvbihmbG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzID0gdHJ1ZSkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBmbG9hdCBwb3NpdGlvbkZvck9mZnNldCh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0
OworICAgIHZpcnR1YWwgZmxvYXQgcG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3Q7
CiAKICAgICAvLyBOZWVkcyB0byBiZSBwdWJsaWMsIHNvIHRoZSBzdGF0aWMgcGFpbnRUZXh0V2l0
aFNoYWRvd3MoKSBmdW5jdGlvbiBjYW4gdXNlIGl0LgogICAgIHN0YXRpYyBGbG9hdFNpemUgYXBw
bHlTaGFkb3dUb0dyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBTaGFkb3dE
YXRhKiwgY29uc3QgRmxvYXRSZWN0JiB0ZXh0UmVjdCwgYm9vbCBzdHJva2VkLCBib29sIG9wYXF1
ZSwgYm9vbCBob3Jpem9udGFsKTsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgcGFpbnRDb21wb3Np
dGlvbkJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3Jp
Z2luLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnQmLCB1bnNpZ25lZCBzdGFydFBvcywg
dW5zaWduZWQgZW5kUG9zKTsKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgY29uc3QgUmVuZGVy
U3R5bGUmLCBjb25zdCBGb250JiwgaW50IHN0YXJ0UG9zLCBpbnQgZW5kUG9zKTsKICAgICB2b2lk
IHBhaW50RG9jdW1lbnRNYXJrZXJzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UG9pbnQm
IGJveE9yaWdpbiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250JiwgYm9vbCBiYWNrZ3Jv
dW5kKTsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmUoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBjb25zdCBDb21wb3NpdGlvblVuZGVybGlu
ZSYpOwogCkBAIC0xODcsNyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICBJbmxpbmVUZXh0Qm94KiBt
X3ByZXZUZXh0Qm94OyAvLyBUaGUgcHJldmlvdXMgYm94IHRoYXQgYWxzbyB1c2VzIG91ciBSZW5k
ZXJPYmplY3QKICAgICBJbmxpbmVUZXh0Qm94KiBtX25leHRUZXh0Qm94OyAvLyBUaGUgbmV4dCBi
b3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJlbmRlck9iamVjdAogCi0gICAgdW5zaWduZWQgbV9zdGFy
dDsKKyAgICBpbnQgbV9zdGFydDsKICAgICB1bnNpZ25lZCBzaG9ydCBtX2xlbjsKIAogICAgIC8v
IFdoZXJlIHRvIHRydW5jYXRlIHdoZW4gdGV4dCBvdmVyZmxvdyBpcyBhcHBsaWVkLiBXZSB1c2Ug
c3BlY2lhbCBjb25zdGFudHMgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJDb21iaW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Q29tYmluZVRleHQuY3BwCmluZGV4IGNiMzZmZmRiZmE2YTI0NDM4ZmE4ZTI1NWQ1NjA3ODE1NDM2
OGEyMTIuLjNmMDEzZGI5MWQ3ZjVjODc1NWU1MmQ4YzQwZWM5OWQ2YTA2YzgzYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcApAQCAtNzIsOCAr
NzIsOSBAQCB2b2lkIFJlbmRlckNvbWJpbmVUZXh0OjphZGp1c3RUZXh0T3JpZ2luKEZsb2F0UG9p
bnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdAogICAgICAgICB0ZXh0T3JpZ2luLm1vdmUo
Ym94UmVjdC5oZWlnaHQoKSAvIDIgLSBjZWlsZihtX2NvbWJpbmVkVGV4dFdpZHRoKSAvIDIsIHN0
eWxlKCkuZm9udCgpLnBpeGVsU2l6ZSgpKTsKIH0KIAotdm9pZCBSZW5kZXJDb21iaW5lVGV4dDo6
Z2V0U3RyaW5nVG9SZW5kZXIodW5zaWduZWQgc3RhcnQsIFN0cmluZyYgc3RyaW5nLCB1bnNpZ25l
ZCYgbGVuZ3RoKSBjb25zdAordm9pZCBSZW5kZXJDb21iaW5lVGV4dDo6Z2V0U3RyaW5nVG9SZW5k
ZXIoaW50IHN0YXJ0LCBTdHJpbmcmIHN0cmluZywgaW50JiBsZW5ndGgpIGNvbnN0CiB7CisgICAg
QVNTRVJUKHN0YXJ0ID49IDApOwogICAgIGlmIChtX2lzQ29tYmluZWQpIHsKICAgICAgICAgc3Ry
aW5nID0gb3JpZ2luYWxUZXh0KCk7CiAgICAgICAgIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsK
QEAgLTgxLDcgKzgyLDcgQEAgdm9pZCBSZW5kZXJDb21iaW5lVGV4dDo6Z2V0U3RyaW5nVG9SZW5k
ZXIodW5zaWduZWQgc3RhcnQsIFN0cmluZyYgc3RyaW5nLCB1bnNpZ24KICAgICB9CiAgCiAgICAg
c3RyaW5nID0gdGV4dCgpOwotICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHJpbmdTaGFyaW5nSW1w
bChzdGFydCwgbGVuZ3RoKTsKKyAgICBzdHJpbmcgPSBzdHJpbmcuc3Vic3RyaW5nU2hhcmluZ0lt
cGwoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0KSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBSZW5k
ZXJDb21iaW5lVGV4dDo6Y29tYmluZVRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQ29tYmluZVRleHQuaAppbmRleCA0Y2ZmOTYwNjkyNjJhMzgzOTUwOGM0MjQyOTcxMjdh
MzQyYzA2M2JmLi4xZGRmZWU5MjlmNWM0OTAyMWFjOTViZDc4ZTk5NGRmNjk1NTEzNTI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaApAQCAtMzYsNyAr
MzYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbWJpbmVUZXh0KCk7CiAgICAgdm9pZCBhZGp1
c3RUZXh0T3JpZ2luKEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYgYm94
UmVjdCkgY29uc3Q7Ci0gICAgdm9pZCBnZXRTdHJpbmdUb1JlbmRlcih1bnNpZ25lZCwgU3RyaW5n
JiwgdW5zaWduZWQmIGxlbmd0aCkgY29uc3Q7CisgICAgdm9pZCBnZXRTdHJpbmdUb1JlbmRlcihp
bnQsIFN0cmluZyYgc3RyaW5nLCBpbnQmIGxlbmd0aCkgY29uc3Q7CiAgICAgYm9vbCBpc0NvbWJp
bmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbWJpbmVkOyB9CiAgICAgZmxvYXQgY29tYmluZWRU
ZXh0V2lkdGgoY29uc3QgRm9udCYgZm9udCkgY29uc3QgeyByZXR1cm4gZm9udC5zaXplKCk7IH0K
ICAgICBjb25zdCBGb250JiBvcmlnaW5hbEZvbnQoKSBjb25zdCB7IHJldHVybiBwYXJlbnQoKS0+
c3R5bGUoKS5mb250KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R0lubGluZUZsb3dCb3guY3BwCmluZGV4IDZmYjI3OWUzNDU4MGQzMzUwZmQ5ZmJiMTE1M2NlOGJm
ZmMxYzdlZGQuLjE3ZDQxYmQ4ZjRiYTE4NGFkMWZmNWI3MjdhMTQwODc3MTBmNGM2MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94LmNwcApA
QCAtMTA2LDggKzEwNiw4IEBAIHZvaWQgU1ZHSW5saW5lRmxvd0JveDo6Y29tcHV0ZVRleHRNYXRj
aE1hcmtlclJlY3RGb3JSZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVUZXh0CiAgICAgICAgICAgICBp
ZiAobWFya2VyU3RhcnRQb3NpdGlvbiA+PSBtYXJrZXJFbmRQb3NpdGlvbikKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgdW5zaWduZWQgZnJhZ21lbnRTdGFydFBvc2l0
aW9uID0gMDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGZyYWdtZW50RW5kUG9zaXRpb24gPSAwOwor
ICAgICAgICAgICAgaW50IGZyYWdtZW50U3RhcnRQb3NpdGlvbiA9IDA7CisgICAgICAgICAgICBp
bnQgZnJhZ21lbnRFbmRQb3NpdGlvbiA9IDA7CiAKICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxT
VkdUZXh0RnJhZ21lbnQ+JiBmcmFnbWVudHMgPSB0ZXh0Qm94LT50ZXh0RnJhZ21lbnRzKCk7CiAg
ICAgICAgICAgICB1bnNpZ25lZCB0ZXh0RnJhZ21lbnRzU2l6ZSA9IGZyYWdtZW50cy5zaXplKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNw
cAppbmRleCAxYmI2NWFkNDZiMmM2MDk4NjQ4YzgyMzU0MjA4YjMxZDE5YjNkMTdhLi5iMTkzNjcz
YzgzMDU2ZjhmNWJjMGFmMDZiNTYwZjMyZmE4MGU1MzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBA
QCBpbnQgU1ZHSW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb25JbkZyYWdtZW50KGNvbnN0
IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbgogICAgIHJldHVybiBmcmFnbWVudC5jaGFyYWN0ZXJP
ZmZzZXQgLSBzdGFydCgpICsgcmVuZGVyZXIoKS5zY2FsZWRGb250KCkub2Zmc2V0Rm9yUG9zaXRp
b24odGV4dFJ1biwgcG9zaXRpb24gKiBzY2FsaW5nRmFjdG9yLCBpbmNsdWRlUGFydGlhbEdseXBo
cyk7CiB9CiAKLWZsb2F0IFNWR0lubGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KHVuc2ln
bmVkKSBjb25zdAorZmxvYXQgU1ZHSW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQoaW50
KSBjb25zdAogewogICAgIC8vIFNWRyBkb2Vzbid0IHVzZSB0aGUgb2Zmc2V0IDwtPiBwb3NpdGlv
biBzZWxlY3Rpb24gc3lzdGVtLiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEzNywx
MiArMTM3LDExIEBAIEZsb2F0UmVjdCBTVkdJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25SZWN0Rm9y
VGV4dEZyYWdtZW50KGNvbnN0IFNWR1RleHRGcmFnbWVudCYKICAgICByZXR1cm4gc25hcHBlZFNl
bGVjdGlvblJlY3Q7CiB9CiAKLUxheW91dFJlY3QgU1ZHSW5saW5lVGV4dEJveDo6bG9jYWxTZWxl
Y3Rpb25SZWN0KHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGVuZFBvc2l0aW9uKSBj
b25zdAorTGF5b3V0UmVjdCBTVkdJbmxpbmVUZXh0Qm94Ojpsb2NhbFNlbGVjdGlvblJlY3QoaW50
IHN0YXJ0UG9zaXRpb24sIGludCBlbmRQb3NpdGlvbikgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBi
b3hTdGFydCA9IHN0YXJ0KCk7Ci0gICAgc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gPiBi
b3hTdGFydCA/IHN0YXJ0UG9zaXRpb24gLSBib3hTdGFydCA6IDA7Ci0gICAgQVNTRVJUKGVuZFBv
c2l0aW9uID49IGJveFN0YXJ0KTsKLSAgICBlbmRQb3NpdGlvbiA9IHN0ZDo6bWluKGVuZFBvc2l0
aW9uIC0gYm94U3RhcnQsIGxlbigpKTsKKyAgICBpbnQgYm94U3RhcnQgPSBzdGFydCgpOworICAg
IHN0YXJ0UG9zaXRpb24gPSBzdGQ6Om1heChzdGFydFBvc2l0aW9uIC0gYm94U3RhcnQsIDApOwor
ICAgIGVuZFBvc2l0aW9uID0gc3RkOjptaW4oZW5kUG9zaXRpb24gLSBib3hTdGFydCwgc3RhdGlj
X2Nhc3Q8aW50PihsZW4oKSkpOwogICAgIGlmIChzdGFydFBvc2l0aW9uID49IGVuZFBvc2l0aW9u
KQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogCkBAIC0xNTAsOCArMTQ5LDggQEAgTGF5
b3V0UmVjdCBTVkdJbmxpbmVUZXh0Qm94Ojpsb2NhbFNlbGVjdGlvblJlY3QodW5zaWduZWQgc3Rh
cnRQb3NpdGlvbiwgdW5zaWduZWQKIAogICAgIEFmZmluZVRyYW5zZm9ybSBmcmFnbWVudFRyYW5z
Zm9ybTsKICAgICBGbG9hdFJlY3Qgc2VsZWN0aW9uUmVjdDsKLSAgICB1bnNpZ25lZCBmcmFnbWVu
dFN0YXJ0UG9zaXRpb24gPSAwOwotICAgIHVuc2lnbmVkIGZyYWdtZW50RW5kUG9zaXRpb24gPSAw
OworICAgIGludCBmcmFnbWVudFN0YXJ0UG9zaXRpb24gPSAwOworICAgIGludCBmcmFnbWVudEVu
ZFBvc2l0aW9uID0gMDsKIAogICAgIHVuc2lnbmVkIHRleHRGcmFnbWVudHNTaXplID0gbV90ZXh0
RnJhZ21lbnRzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGV4dEZyYWdt
ZW50c1NpemU7ICsraSkgewpAQCAtMjE0LDExICsyMTMsMTEgQEAgdm9pZCBTVkdJbmxpbmVUZXh0
Qm94OjpwYWludFNlbGVjdGlvbkJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8pCiAgICAg
ICAgICAgICBzZWxlY3Rpb25TdHlsZSA9ICZzdHlsZTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBz
dGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbjsKKyAgICBpbnQgc3RhcnRQb3NpdGlvbiwgZW5kUG9z
aXRpb247CiAgICAgc2VsZWN0aW9uU3RhcnRFbmQoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24p
OwogCi0gICAgdW5zaWduZWQgZnJhZ21lbnRTdGFydFBvc2l0aW9uID0gMDsKLSAgICB1bnNpZ25l
ZCBmcmFnbWVudEVuZFBvc2l0aW9uID0gMDsKKyAgICBpbnQgZnJhZ21lbnRTdGFydFBvc2l0aW9u
ID0gMDsKKyAgICBpbnQgZnJhZ21lbnRFbmRQb3NpdGlvbiA9IDA7CiAgICAgQWZmaW5lVHJhbnNm
b3JtIGZyYWdtZW50VHJhbnNmb3JtOwogICAgIHVuc2lnbmVkIHRleHRGcmFnbWVudHNTaXplID0g
bV90ZXh0RnJhZ21lbnRzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGV4
dEZyYWdtZW50c1NpemU7ICsraSkgewpAQCAtNDQxLDI0ICs0NDAsMjEgQEAgVGV4dFJ1biBTVkdJ
bmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3Qg
U1ZHVGV4dEZyYWcKICAgICByZXR1cm4gcnVuOwogfQogCi1ib29sIFNWR0lubGluZVRleHRCb3g6
Om1hcFN0YXJ0RW5kUG9zaXRpb25zSW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMoY29uc3QgU1ZHVGV4
dEZyYWdtZW50JiBmcmFnbWVudCwgdW5zaWduZWQmIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkJiBl
bmRQb3NpdGlvbikgY29uc3QKK2Jvb2wgU1ZHSW5saW5lVGV4dEJveDo6bWFwU3RhcnRFbmRQb3Np
dGlvbnNJbnRvRnJhZ21lbnRDb29yZGluYXRlcyhjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdt
ZW50LCBpbnQmIHN0YXJ0UG9zaXRpb24sIGludCYgZW5kUG9zaXRpb24pIGNvbnN0CiB7CiAgICAg
aWYgKHN0YXJ0UG9zaXRpb24gPj0gZW5kUG9zaXRpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKLSAgICBBU1NFUlQoZnJhZ21lbnQuY2hhcmFjdGVyT2Zmc2V0ID49IHN0YXJ0KCkpOwot
ICAgIHVuc2lnbmVkIG9mZnNldCA9IGZyYWdtZW50LmNoYXJhY3Rlck9mZnNldCAtIHN0YXJ0KCk7
Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gZnJhZ21lbnQubGVuZ3RoOworCisgICAgaW50IG9mZnNl
dCA9IHN0YXRpY19jYXN0PGludD4oZnJhZ21lbnQuY2hhcmFjdGVyT2Zmc2V0KSAtIHN0YXJ0KCk7
CisgICAgaW50IGxlbmd0aCA9IHN0YXRpY19jYXN0PGludD4oZnJhZ21lbnQubGVuZ3RoKTsKIAog
ICAgIGlmIChzdGFydFBvc2l0aW9uID49IG9mZnNldCArIGxlbmd0aCB8fCBlbmRQb3NpdGlvbiA8
PSBvZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChzdGFydFBvc2l0aW9u
IDwgb2Zmc2V0KQogICAgICAgICBzdGFydFBvc2l0aW9uID0gMDsKLSAgICBlbHNlIHsKLSAgICAg
ICAgQVNTRVJUKHN0YXJ0UG9zaXRpb24gPj0gb2Zmc2V0KTsKKyAgICBlbHNlCiAgICAgICAgIHN0
YXJ0UG9zaXRpb24gLT0gb2Zmc2V0OwotICAgIH0KIAogICAgIGlmIChlbmRQb3NpdGlvbiA+IG9m
ZnNldCArIGxlbmd0aCkKICAgICAgICAgZW5kUG9zaXRpb24gPSBsZW5ndGg7CkBAIC02MzAsOCAr
NjI2LDggQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFRleHQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUsIFIKICAgICBBU1NFUlQoc3R5bGUpOwogICAg
IEFTU0VSVChzZWxlY3Rpb25TdHlsZSk7CiAKLSAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uID0g
MDsKLSAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IDA7CisgICAgaW50IHN0YXJ0UG9zaXRpb24g
PSAwOworICAgIGludCBlbmRQb3NpdGlvbiA9IDA7CiAgICAgaWYgKGhhc1NlbGVjdGlvbikgewog
ICAgICAgICBzZWxlY3Rpb25TdGFydEVuZChzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CiAg
ICAgICAgIGhhc1NlbGVjdGlvbiA9IG1hcFN0YXJ0RW5kUG9zaXRpb25zSW50b0ZyYWdtZW50Q29v
cmRpbmF0ZXMoZnJhZ21lbnQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKQEAgLTY1OSw3
ICs2NTUsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFJlbmRlclN0eWxlKiBzdHlsZSwgUgogICAgICAgICBTVkdSZXNvdXJjZXND
YWNoZTo6Y2xpZW50U3R5bGVDaGFuZ2VkKHBhcmVudCgpLT5yZW5kZXJlcigpLCBTdHlsZURpZmZl
cmVuY2VSZXBhaW50LCAqc3R5bGUpOwogCiAgICAgLy8gRXZlbnR1YWxseSBkcmF3IHRleHQgdXNp
bmcgcmVndWxhciBzdHlsZSBmcm9tIHRoZSBlbmQgcG9zaXRpb24gb2YgdGhlIHNlbGVjdGlvbiB0
byB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGNodW5rIHBhcnQKLSAgICBpZiAoZW5kUG9zaXRpb24g
PCBmcmFnbWVudC5sZW5ndGggJiYgIXBhaW50U2VsZWN0ZWRUZXh0T25seSkKKyAgICBpZiAoZW5k
UG9zaXRpb24gPCBzdGF0aWNfY2FzdDxpbnQ+KGZyYWdtZW50Lmxlbmd0aCkgJiYgIXBhaW50U2Vs
ZWN0ZWRUZXh0T25seSkKICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3MoY29udGV4dCwgc3R5
bGUsIHRleHRSdW4sIGZyYWdtZW50LCBlbmRQb3NpdGlvbiwgZnJhZ21lbnQubGVuZ3RoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaApp
bmRleCA1MThlYTFiODY3MmYzM2FiMTEyYmRkMTk1YmUzN2I3NmE3YmYwNmEzLi5mMDg5NGYwYjU1
M2E5ZGIwZDZiYWM1YTFiODRjZjM0YWVjN2YxNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaApAQCAtNDMsMTMgKzQzLDEzIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGludCBzZWxlY3Rpb25Ub3AoKSB7IHJldHVybiB0b3AoKTsgfQogICAg
IHZpcnR1YWwgaW50IHNlbGVjdGlvbkhlaWdodCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
Y2VpbGYobV9sb2dpY2FsSGVpZ2h0KSk7IH0KICAgICB2aXJ0dWFsIGludCBvZmZzZXRGb3JQb3Np
dGlvbihmbG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzID0gdHJ1ZSkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBmbG9hdCBwb3NpdGlvbkZvck9mZnNldCh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0
OworICAgIHZpcnR1YWwgZmxvYXQgcG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3Q7
CiAKICAgICB2b2lkIHBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChQYWludEluZm8mKTsKICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRV
bml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSk7Ci0gICAgdmlydHVhbCBMYXlvdXRS
ZWN0IGxvY2FsU2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBl
bmRQb3NpdGlvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2Fs
U2VsZWN0aW9uUmVjdChpbnQgc3RhcnRQb3NpdGlvbiwgaW50IGVuZFBvc2l0aW9uKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIGJvb2wgbWFwU3RhcnRFbmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRDb29y
ZGluYXRlcyhjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCB1bnNpZ25lZCYgc3RhcnRQb3NpdGlvbiwg
dW5zaWduZWQmIGVuZFBvc2l0aW9uKSBjb25zdDsKKyAgICBib29sIG1hcFN0YXJ0RW5kUG9zaXRp
b25zSW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMoY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgaW50JiBz
dGFydFBvc2l0aW9uLCBpbnQmIGVuZFBvc2l0aW9uKSBjb25zdDsKIAogICAgIHZpcnR1YWwgRmxv
YXRSZWN0IGNhbGN1bGF0ZUJvdW5kYXJpZXMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCmluZGV4IDFj
YjViYzI5NWEyMWIxZmM4YWM1ODRjMmM3MjY3MzEzMWE1ZGEyNDcuLmU2MDEwMmRiMDhjMzk2Mzk0
OGI4YTU2Y2YxOTZmYTU2MzNkYzA4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKQEAgLTM3LDEzICszNywxMyBA
QCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OlNWR1RleHRNZXRyaWNzQnVpbGRlcigpCiAKIGlubGlu
ZSBib29sIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6Y3VycmVudENoYXJhY3RlclN0YXJ0c1N1cnJv
Z2F0ZVBhaXIoKSBjb25zdAogewotICAgIHJldHVybiBVMTZfSVNfTEVBRChtX3J1blttX3RleHRQ
b3NpdGlvbl0pICYmIG1fdGV4dFBvc2l0aW9uICsgMSA8IG1fcnVuLmNoYXJhY3RlcnNMZW5ndGgo
KSAmJiBVMTZfSVNfVFJBSUwobV9ydW5bbV90ZXh0UG9zaXRpb24gKyAxXSk7CisgICAgcmV0dXJu
IFUxNl9JU19MRUFEKG1fcnVuW21fdGV4dFBvc2l0aW9uXSkgJiYgaW50KG1fdGV4dFBvc2l0aW9u
ICsgMSkgPCBtX3J1bi5jaGFyYWN0ZXJzTGVuZ3RoKCkgJiYgVTE2X0lTX1RSQUlMKG1fcnVuW21f
dGV4dFBvc2l0aW9uICsgMV0pOwogfQogCiBib29sIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6YWR2
YW5jZSgpCiB7CiAgICAgbV90ZXh0UG9zaXRpb24gKz0gbV9jdXJyZW50TWV0cmljcy5sZW5ndGgo
KTsKLSAgICBpZiAobV90ZXh0UG9zaXRpb24gPj0gbV9ydW4uY2hhcmFjdGVyc0xlbmd0aCgpKQor
ICAgIGlmIChpbnQobV90ZXh0UG9zaXRpb24pID49IG1fcnVuLmNoYXJhY3RlcnNMZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1faXNDb21wbGV4VGV4dCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcAppbmRleCA3MWRkZjgx
ZGExOTM1NmRkZWYzMjdkZWYxNDY2ZDlkZDdhYmZjODdkLi5lNDY4NDE2ZTdlYTY4YWRjMTRmZjli
YWZjNTA0ZTE5YTk2MDFlYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0UXVlcnkuY3BwCkBAIC0xMzMsMTUgKzEzMywxMyBAQCBib29sIFNWR1RleHRRdWVyeTo6
ZXhlY3V0ZVF1ZXJ5KERhdGEqIHF1ZXJ5RGF0YSwgUHJvY2Vzc1RleHRGcmFnbWVudENhbGxiYWNr
IGZyYQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTVkdUZXh0UXVlcnk6Om1hcFN0YXJ0
RW5kUG9zaXRpb25zSW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMoRGF0YSogcXVlcnlEYXRhLCBjb25z
dCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCB1bnNpZ25lZCYgc3RhcnRQb3NpdGlvbiwgdW5z
aWduZWQmIGVuZFBvc2l0aW9uKSBjb25zdAorYm9vbCBTVkdUZXh0UXVlcnk6Om1hcFN0YXJ0RW5k
UG9zaXRpb25zSW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMoRGF0YSogcXVlcnlEYXRhLCBjb25zdCBT
VkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBpbnQmIHN0YXJ0UG9zaXRpb24sIGludCYgZW5kUG9z
aXRpb24pIGNvbnN0CiB7CiAgICAgLy8gUmV1c2UgdGhlIHNhbWUgbG9naWMgdXNlZCBmb3IgdGV4
dCBzZWxlY3Rpb24gJiBwYWludGluZywgdG8gbWFwIG91ciBxdWVyeSBzdGFydC9sZW5ndGggaW50
byBzdGFydC9lbmRQb3NpdGlvbnMgb2YgdGhlIGN1cnJlbnQgdGV4dCBmcmFnbWVudC4KLSAgICBB
U1NFUlQoc3RhcnRQb3NpdGlvbiA+PSBxdWVyeURhdGEtPnByb2Nlc3NlZENoYXJhY3RlcnMpOwot
ICAgIEFTU0VSVChlbmRQb3NpdGlvbiA+PSBxdWVyeURhdGEtPnByb2Nlc3NlZENoYXJhY3RlcnMp
OwogICAgIHN0YXJ0UG9zaXRpb24gLT0gcXVlcnlEYXRhLT5wcm9jZXNzZWRDaGFyYWN0ZXJzOwog
ICAgIGVuZFBvc2l0aW9uIC09IHF1ZXJ5RGF0YS0+cHJvY2Vzc2VkQ2hhcmFjdGVyczsKIAotICAg
IGlmIChzdGFydFBvc2l0aW9uID49IGVuZFBvc2l0aW9uKQorICAgIGlmIChzdGFydFBvc2l0aW9u
ID49IGVuZFBvc2l0aW9uIHx8IHN0YXJ0UG9zaXRpb24gPCAwIHx8IGVuZFBvc2l0aW9uIDwgMCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbW9kaWZ5U3RhcnRFbmRQb3NpdGlvbnNSZXNw
ZWN0aW5nTGlnYXR1cmVzKHF1ZXJ5RGF0YSwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwpA
QCAtMTUyLDcgKzE1MCw3IEBAIGJvb2wgU1ZHVGV4dFF1ZXJ5OjptYXBTdGFydEVuZFBvc2l0aW9u
c0ludG9GcmFnbWVudENvb3JkaW5hdGVzKERhdGEqIHF1ZXJ5RGF0YSwKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBTVkdUZXh0UXVlcnk6Om1vZGlmeVN0YXJ0RW5kUG9zaXRpb25zUmVzcGVj
dGluZ0xpZ2F0dXJlcyhEYXRhKiBxdWVyeURhdGEsIHVuc2lnbmVkJiBzdGFydFBvc2l0aW9uLCB1
bnNpZ25lZCYgZW5kUG9zaXRpb24pIGNvbnN0Cit2b2lkIFNWR1RleHRRdWVyeTo6bW9kaWZ5U3Rh
cnRFbmRQb3NpdGlvbnNSZXNwZWN0aW5nTGlnYXR1cmVzKERhdGEqIHF1ZXJ5RGF0YSwgaW50JiBz
dGFydFBvc2l0aW9uLCBpbnQmIGVuZFBvc2l0aW9uKSBjb25zdAogewogICAgIFNWR1RleHRMYXlv
dXRBdHRyaWJ1dGVzKiBsYXlvdXRBdHRyaWJ1dGVzID0gcXVlcnlEYXRhLT50ZXh0UmVuZGVyZXIt
PmxheW91dEF0dHJpYnV0ZXMoKTsKICAgICBWZWN0b3I8U1ZHVGV4dE1ldHJpY3M+JiB0ZXh0TWV0
cmljc1ZhbHVlcyA9IGxheW91dEF0dHJpYnV0ZXMtPnRleHRNZXRyaWNzVmFsdWVzKCk7CkBAIC0x
ODMsMjEgKzE4MSwyMSBAQCB2b2lkIFNWR1RleHRRdWVyeTo6bW9kaWZ5U3RhcnRFbmRQb3NpdGlv
bnNSZXNwZWN0aW5nTGlnYXR1cmVzKERhdGEqIHF1ZXJ5RGF0YSwgdQogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgLy8gSWYgdGhlIHN0YXJ0IHBvc2l0aW9uIG1hcHMgdG8gYSBjaGFyYWN0
ZXIgaW4gdGhlIG1ldHJpY3MgbGlzdCwgd2UgZG9uJ3QgbmVlZCB0byBtb2RpZnkgaXQuCi0gICAg
ICAgIGlmIChzdGFydFBvc2l0aW9uID09IHBvc2l0aW9uT2Zmc2V0KQorICAgICAgICBpZiAoc3Rh
cnRQb3NpdGlvbiA9PSBzdGF0aWNfY2FzdDxpbnQ+KHBvc2l0aW9uT2Zmc2V0KSkKICAgICAgICAg
ICAgIGFsdGVyU3RhcnRQb3NpdGlvbiA9IGZhbHNlOwogCiAgICAgICAgIC8vIElmIHRoZSBzdGFy
dCBwb3NpdGlvbiBtYXBzIHRvIGEgY2hhcmFjdGVyIGluIHRoZSBtZXRyaWNzIGxpc3QsIHdlIGRv
bid0IG5lZWQgdG8gbW9kaWZ5IGl0LgotICAgICAgICBpZiAoZW5kUG9zaXRpb24gPT0gcG9zaXRp
b25PZmZzZXQpCisgICAgICAgIGlmIChlbmRQb3NpdGlvbiA9PSBzdGF0aWNfY2FzdDxpbnQ+KHBv
c2l0aW9uT2Zmc2V0KSkKICAgICAgICAgICAgIGFsdGVyRW5kUG9zaXRpb24gPSBmYWxzZTsKIAog
ICAgICAgICAvLyBEZXRlY3QgbGlnYXR1cmVzLgogICAgICAgICBpZiAobGFzdFBvc2l0aW9uT2Zm
c2V0ICE9IC0xICYmIGxhc3RQb3NpdGlvbk9mZnNldCAtIHBvc2l0aW9uT2Zmc2V0ID4gMSkgewot
ICAgICAgICAgICAgaWYgKGFsdGVyU3RhcnRQb3NpdGlvbiAmJiBzdGFydFBvc2l0aW9uID4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGxhc3RQb3NpdGlvbk9mZnNldCkgJiYgc3RhcnRQb3NpdGlvbiA8
IHBvc2l0aW9uT2Zmc2V0KSB7CisgICAgICAgICAgICBpZiAoYWx0ZXJTdGFydFBvc2l0aW9uICYm
IHN0YXJ0UG9zaXRpb24gPiBsYXN0UG9zaXRpb25PZmZzZXQgJiYgc3RhcnRQb3NpdGlvbiA8IHN0
YXRpY19jYXN0PGludD4ocG9zaXRpb25PZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgc3RhcnRQ
b3NpdGlvbiA9IGxhc3RQb3NpdGlvbk9mZnNldDsKICAgICAgICAgICAgICAgICBhbHRlclN0YXJ0
UG9zaXRpb24gPSBmYWxzZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGFsdGVy
RW5kUG9zaXRpb24gJiYgZW5kUG9zaXRpb24gPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGFzdFBv
c2l0aW9uT2Zmc2V0KSAmJiBlbmRQb3NpdGlvbiA8IHBvc2l0aW9uT2Zmc2V0KSB7CisgICAgICAg
ICAgICBpZiAoYWx0ZXJFbmRQb3NpdGlvbiAmJiBlbmRQb3NpdGlvbiA+IGxhc3RQb3NpdGlvbk9m
ZnNldCAmJiBlbmRQb3NpdGlvbiA8IHN0YXRpY19jYXN0PGludD4ocG9zaXRpb25PZmZzZXQpKSB7
CiAgICAgICAgICAgICAgICAgZW5kUG9zaXRpb24gPSBwb3NpdGlvbk9mZnNldDsKICAgICAgICAg
ICAgICAgICBhbHRlckVuZFBvc2l0aW9uID0gZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC0yMTQs
MTIgKzIxMiwxMiBAQCB2b2lkIFNWR1RleHRRdWVyeTo6bW9kaWZ5U3RhcnRFbmRQb3NpdGlvbnNS
ZXNwZWN0aW5nTGlnYXR1cmVzKERhdGEqIHF1ZXJ5RGF0YSwgdQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAobGFzdFBvc2l0aW9uT2Zmc2V0ICE9IC0xICYmIGxhc3RQb3NpdGlvbk9mZnNldCAt
IHBvc2l0aW9uT2Zmc2V0ID4gMSkgewotICAgICAgICBpZiAoYWx0ZXJTdGFydFBvc2l0aW9uICYm
IHN0YXJ0UG9zaXRpb24gPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGFzdFBvc2l0aW9uT2Zmc2V0
KSAmJiBzdGFydFBvc2l0aW9uIDwgcG9zaXRpb25PZmZzZXQpIHsKKyAgICAgICAgaWYgKGFsdGVy
U3RhcnRQb3NpdGlvbiAmJiBzdGFydFBvc2l0aW9uID4gbGFzdFBvc2l0aW9uT2Zmc2V0ICYmIHN0
YXJ0UG9zaXRpb24gPCBzdGF0aWNfY2FzdDxpbnQ+KHBvc2l0aW9uT2Zmc2V0KSkgewogICAgICAg
ICAgICAgc3RhcnRQb3NpdGlvbiA9IGxhc3RQb3NpdGlvbk9mZnNldDsKICAgICAgICAgICAgIGFs
dGVyU3RhcnRQb3NpdGlvbiA9IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGFsdGVy
RW5kUG9zaXRpb24gJiYgZW5kUG9zaXRpb24gPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGFzdFBv
c2l0aW9uT2Zmc2V0KSAmJiBlbmRQb3NpdGlvbiA8IHBvc2l0aW9uT2Zmc2V0KSB7CisgICAgICAg
IGlmIChhbHRlckVuZFBvc2l0aW9uICYmIGVuZFBvc2l0aW9uID4gbGFzdFBvc2l0aW9uT2Zmc2V0
ICYmIGVuZFBvc2l0aW9uIDwgc3RhdGljX2Nhc3Q8aW50Pihwb3NpdGlvbk9mZnNldCkpIHsKICAg
ICAgICAgICAgIGVuZFBvc2l0aW9uID0gcG9zaXRpb25PZmZzZXQ7CiAgICAgICAgICAgICBhbHRl
ckVuZFBvc2l0aW9uID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTI4OSw4ICsyODcsOCBAQCBib29s
IFNWR1RleHRRdWVyeTo6c3ViU3RyaW5nTGVuZ3RoQ2FsbGJhY2soRGF0YSogcXVlcnlEYXRhLCBj
b25zdCBTVkdUZXh0RnJhZ21lbgogewogICAgIFN1YlN0cmluZ0xlbmd0aERhdGEqIGRhdGEgPSBz
dGF0aWNfY2FzdDxTdWJTdHJpbmdMZW5ndGhEYXRhKj4ocXVlcnlEYXRhKTsKIAotICAgIHVuc2ln
bmVkIHN0YXJ0UG9zaXRpb24gPSBkYXRhLT5zdGFydFBvc2l0aW9uOwotICAgIHVuc2lnbmVkIGVu
ZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiArIGRhdGEtPmxlbmd0aDsKKyAgICBpbnQgc3RhcnRQ
b3NpdGlvbiA9IGRhdGEtPnN0YXJ0UG9zaXRpb247CisgICAgaW50IGVuZFBvc2l0aW9uID0gc3Rh
cnRQb3NpdGlvbiArIGRhdGEtPmxlbmd0aDsKICAgICBpZiAoIW1hcFN0YXJ0RW5kUG9zaXRpb25z
SW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMocXVlcnlEYXRhLCBmcmFnbWVudCwgc3RhcnRQb3NpdGlv
biwgZW5kUG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTMyNCw4ICszMjIs
OCBAQCBib29sIFNWR1RleHRRdWVyeTo6c3RhcnRQb3NpdGlvbk9mQ2hhcmFjdGVyQ2FsbGJhY2so
RGF0YSogcXVlcnlEYXRhLCBjb25zdCBTVkdUZQogewogICAgIFN0YXJ0UG9zaXRpb25PZkNoYXJh
Y3RlckRhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxTdGFydFBvc2l0aW9uT2ZDaGFyYWN0ZXJEYXRh
Kj4ocXVlcnlEYXRhKTsKIAotICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24gPSBkYXRhLT5wb3Np
dGlvbjsKLSAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyAxOworICAg
IGludCBzdGFydFBvc2l0aW9uID0gZGF0YS0+cG9zaXRpb247CisgICAgaW50IGVuZFBvc2l0aW9u
ID0gc3RhcnRQb3NpdGlvbiArIDE7CiAgICAgaWYgKCFtYXBTdGFydEVuZFBvc2l0aW9uc0ludG9G
cmFnbWVudENvb3JkaW5hdGVzKHF1ZXJ5RGF0YSwgZnJhZ21lbnQsIHN0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zNzMsOCArMzcxLDggQEAg
Ym9vbCBTVkdUZXh0UXVlcnk6OmVuZFBvc2l0aW9uT2ZDaGFyYWN0ZXJDYWxsYmFjayhEYXRhKiBx
dWVyeURhdGEsIGNvbnN0IFNWR1RleHQKIHsKICAgICBFbmRQb3NpdGlvbk9mQ2hhcmFjdGVyRGF0
YSogZGF0YSA9IHN0YXRpY19jYXN0PEVuZFBvc2l0aW9uT2ZDaGFyYWN0ZXJEYXRhKj4ocXVlcnlE
YXRhKTsKIAotICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24gPSBkYXRhLT5wb3NpdGlvbjsKLSAg
ICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyAxOworICAgIGludCBzdGFy
dFBvc2l0aW9uID0gZGF0YS0+cG9zaXRpb247CisgICAgaW50IGVuZFBvc2l0aW9uID0gc3RhcnRQ
b3NpdGlvbiArIDE7CiAgICAgaWYgKCFtYXBTdGFydEVuZFBvc2l0aW9uc0ludG9GcmFnbWVudENv
b3JkaW5hdGVzKHF1ZXJ5RGF0YSwgZnJhZ21lbnQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9u
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00MjEsOCArNDE5LDggQEAgYm9vbCBTVkdU
ZXh0UXVlcnk6OnJvdGF0aW9uT2ZDaGFyYWN0ZXJDYWxsYmFjayhEYXRhKiBxdWVyeURhdGEsIGNv
bnN0IFNWR1RleHRGcmEKIHsKICAgICBSb3RhdGlvbk9mQ2hhcmFjdGVyRGF0YSogZGF0YSA9IHN0
YXRpY19jYXN0PFJvdGF0aW9uT2ZDaGFyYWN0ZXJEYXRhKj4ocXVlcnlEYXRhKTsKIAotICAgIHVu
c2lnbmVkIHN0YXJ0UG9zaXRpb24gPSBkYXRhLT5wb3NpdGlvbjsKLSAgICB1bnNpZ25lZCBlbmRQ
b3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyAxOworICAgIGludCBzdGFydFBvc2l0aW9uID0gZGF0
YS0+cG9zaXRpb247CisgICAgaW50IGVuZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiArIDE7CiAg
ICAgaWYgKCFtYXBTdGFydEVuZFBvc2l0aW9uc0ludG9GcmFnbWVudENvb3JkaW5hdGVzKHF1ZXJ5
RGF0YSwgZnJhZ21lbnQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC00ODksOCArNDg3LDggQEAgYm9vbCBTVkdUZXh0UXVlcnk6OmV4dGVu
dE9mQ2hhcmFjdGVyQ2FsbGJhY2soRGF0YSogcXVlcnlEYXRhLCBjb25zdCBTVkdUZXh0RnJhZ20K
IHsKICAgICBFeHRlbnRPZkNoYXJhY3RlckRhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxFeHRlbnRP
ZkNoYXJhY3RlckRhdGEqPihxdWVyeURhdGEpOwogCi0gICAgdW5zaWduZWQgc3RhcnRQb3NpdGlv
biA9IGRhdGEtPnBvc2l0aW9uOwotICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uID0gc3RhcnRQb3Np
dGlvbiArIDE7CisgICAgaW50IHN0YXJ0UG9zaXRpb24gPSBkYXRhLT5wb3NpdGlvbjsKKyAgICBp
bnQgZW5kUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uICsgMTsKICAgICBpZiAoIW1hcFN0YXJ0RW5k
UG9zaXRpb25zSW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMocXVlcnlEYXRhLCBmcmFnbWVudCwgc3Rh
cnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTUy
NCw4ICs1MjIsOCBAQCBib29sIFNWR1RleHRRdWVyeTo6Y2hhcmFjdGVyTnVtYmVyQXRQb3NpdGlv
bkNhbGxiYWNrKERhdGEqIHF1ZXJ5RGF0YSwgY29uc3QgU1ZHVAogCiAgICAgRmxvYXRSZWN0IGV4
dGVudDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJhZ21lbnQubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiA9IGRhdGEtPnByb2Nlc3NlZENoYXJh
Y3RlcnMgKyBpOwotICAgICAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24g
KyAxOworICAgICAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IGRhdGEtPnByb2Nlc3NlZENoYXJhY3Rl
cnMgKyBpOworICAgICAgICBpbnQgZW5kUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uICsgMTsKICAg
ICAgICAgaWYgKCFtYXBTdGFydEVuZFBvc2l0aW9uc0ludG9GcmFnbWVudENvb3JkaW5hdGVzKHF1
ZXJ5RGF0YSwgZnJhZ21lbnQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVl
cnkuaAppbmRleCAzODczMGEzOGQwNjFlODI1Y2Q5MzdkNzgxODRiOGQzYjNmYTBmYWFmLi43MjFi
MmRmOGUzMzI0NWRhODY0MzM4NWJlNmVlMmIxZDJiMDkzOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmgKQEAgLTUyLDggKzUyLDggQEAgcHJpdmF0ZToK
ICAgICBib29sIGV4ZWN1dGVRdWVyeShEYXRhKiwgUHJvY2Vzc1RleHRGcmFnbWVudENhbGxiYWNr
KSBjb25zdDsKIAogICAgIHZvaWQgY29sbGVjdFRleHRCb3hlc0luRmxvd0JveChJbmxpbmVGbG93
Qm94Kik7Ci0gICAgYm9vbCBtYXBTdGFydEVuZFBvc2l0aW9uc0ludG9GcmFnbWVudENvb3JkaW5h
dGVzKERhdGEqLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCB1bnNpZ25lZCYgc3RhcnRQb3NpdGlv
biwgdW5zaWduZWQmIGVuZFBvc2l0aW9uKSBjb25zdDsKLSAgICB2b2lkIG1vZGlmeVN0YXJ0RW5k
UG9zaXRpb25zUmVzcGVjdGluZ0xpZ2F0dXJlcyhEYXRhKiwgdW5zaWduZWQmIHN0YXJ0UG9zaXRp
b24sIHVuc2lnbmVkJiBlbmRQb3NpdGlvbikgY29uc3Q7CisgICAgYm9vbCBtYXBTdGFydEVuZFBv
c2l0aW9uc0ludG9GcmFnbWVudENvb3JkaW5hdGVzKERhdGEqLCBjb25zdCBTVkdUZXh0RnJhZ21l
bnQmLCBpbnQmIHN0YXJ0UG9zaXRpb24sIGludCYgZW5kUG9zaXRpb24pIGNvbnN0OworICAgIHZv
aWQgbW9kaWZ5U3RhcnRFbmRQb3NpdGlvbnNSZXNwZWN0aW5nTGlnYXR1cmVzKERhdGEqLCBpbnQm
IHN0YXJ0UG9zaXRpb24sIGludCYgZW5kUG9zaXRpb24pIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IGJvb2wgbnVtYmVyT2ZDaGFyYWN0ZXJzQ2FsbGJhY2soRGF0YSosIGNvbnN0IFNWR1RleHRGcmFn
bWVudCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAyMTI5ODQ4ZmNhZmZjZTNi
NDVkNTViMDg0MmYxMmY1MjdiYmRmOTBkLi42MTc3Mzg2M2M3Y2Y0MzMyZTJkNDM5YzExZGZhOWU3
N2ZkYjdkODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIGJv
b2wgU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmFwcGx5U1ZHS2VybmluZyhjb25zdCBTaW1w
bGVGb250RGF0YSogZm9udERhdGEsCiAKIGNsYXNzIFNWR0dseXBoVG9QYXRoVHJhbnNsYXRvciBm
aW5hbCA6IHB1YmxpYyBHbHlwaFRvUGF0aFRyYW5zbGF0b3IgewogcHVibGljOgotICAgIFNWR0ds
eXBoVG9QYXRoVHJhbnNsYXRvcihjb25zdCBUZXh0UnVuKiBjb25zdCwgY29uc3QgR2x5cGhCdWZm
ZXImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgU1ZHRm9udERhdGEmLCBTVkdGb250RWxlbWVu
dCYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgZmxvYXQgc2NhbGUsIGJvb2wg
aXNWZXJ0aWNhbFRleHQpOworICAgIFNWR0dseXBoVG9QYXRoVHJhbnNsYXRvcihjb25zdCBUZXh0
UnVuKiBjb25zdCwgY29uc3QgR2x5cGhCdWZmZXImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
U1ZHRm9udERhdGEmLCBTVkdGb250RWxlbWVudCYsIGNvbnN0IGludCBmcm9tLCBjb25zdCBpbnQg
bnVtR2x5cGhzLCBmbG9hdCBzY2FsZSwgYm9vbCBpc1ZlcnRpY2FsVGV4dCk7CiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBjb250YWluc01vcmVQYXRocygpIG92ZXJyaWRlCiAgICAgewpAQCAt
MTIzLDE1ICsxMjMsMTUgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fY3VycmVudFBvaW50
OwogICAgIEZsb2F0UG9pbnQgbV9nbHlwaE9yaWdpbjsKICAgICBTVkdHbHlwaCBtX3N2Z0dseXBo
OwotICAgIHVuc2lnbmVkIG1faW5kZXg7CisgICAgaW50IG1faW5kZXg7CiAgICAgR2x5cGggbV9n
bHlwaDsKICAgICBTVkdGb250RWxlbWVudCYgbV9mb250RWxlbWVudDsKLSAgICBjb25zdCB1bnNp
Z25lZCBtX3N0b3BwaW5nUG9pbnQ7CisgICAgY29uc3QgZmxvYXQgbV9zdG9wcGluZ1BvaW50Owog
ICAgIGNvbnN0IGZsb2F0IG1fc2NhbGU7CiAgICAgY29uc3QgYm9vbCBtX2lzVmVydGljYWxUZXh0
OwogfTsKIAotU1ZHR2x5cGhUb1BhdGhUcmFuc2xhdG9yOjpTVkdHbHlwaFRvUGF0aFRyYW5zbGF0
b3IoY29uc3QgVGV4dFJ1biogY29uc3QgdGV4dFJ1biwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBo
QnVmZmVyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgU1ZHRm9udERhdGEmIHN2Z0Zv
bnREYXRhLCBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQsIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIG51bUdseXBocywgZmxvYXQgc2NhbGUsIGJvb2wgaXNWZXJ0aWNhbFRleHQpCitTVkdHbHlw
aFRvUGF0aFRyYW5zbGF0b3I6OlNWR0dseXBoVG9QYXRoVHJhbnNsYXRvcihjb25zdCBUZXh0UnVu
KiBjb25zdCB0ZXh0UnVuLCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBjb25zdCBTVkdGb250RGF0YSYgc3ZnRm9udERhdGEsIFNWR0ZvbnRF
bGVtZW50JiBmb250RWxlbWVudCwgY29uc3QgaW50IGZyb20sIGNvbnN0IGludCBudW1HbHlwaHMs
IGZsb2F0IHNjYWxlLCBib29sIGlzVmVydGljYWxUZXh0KQogICAgIDogbV90ZXh0UnVuKHRleHRS
dW4pCiAgICAgLCBtX2dseXBoQnVmZmVyKGdseXBoQnVmZmVyKQogICAgICwgbV9zdmdGb250RGF0
YShzdmdGb250RGF0YSkKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIFNWR1RleHRSdW5SZW5kZXJp
bmdDb250ZXh0OjpkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
UwogICAgIH0KIH0KIAotR2x5cGhEYXRhIFNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpnbHlw
aERhdGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9udCYgZm9udCwgV2lkdGhJdGVyYXRvciYgaXRlcmF0
b3IsIFVDaGFyMzIgY2hhcmFjdGVyLCBib29sIG1pcnJvciwgdW5zaWduZWQgY3VycmVudENoYXJh
Y3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgpCitHbHlwaERhdGEgU1ZHVGV4dFJ1blJlbmRl
cmluZ0NvbnRleHQ6OmdseXBoRGF0YUZvckNoYXJhY3Rlcihjb25zdCBGb250JiBmb250LCBXaWR0
aEl0ZXJhdG9yJiBpdGVyYXRvciwgVUNoYXIzMiBjaGFyYWN0ZXIsIGJvb2wgbWlycm9yLCBpbnQg
Y3VycmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgpCiB7CiAgICAgY29uc3Qg
U2ltcGxlRm9udERhdGEqIHByaW1hcnlGb250ID0gZm9udC5wcmltYXJ5Rm9udCgpOwogICAgIEFT
U0VSVChwcmltYXJ5Rm9udCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggMWRkNjQ2YjU3MGNkNmM1
OGU2ZDQ2YmYwNTc0ZjY5M2NmYWJiNDc1Yy4uZDBiOTFmNmNiMzQ4ZWU3M2NjNjFkNDkzOGJhMTRk
NDY0YzBhY2E2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6
CiAgICAgUmVuZGVyU1ZHUmVzb3VyY2UqIGFjdGl2ZVBhaW50aW5nUmVzb3VyY2UoKSBjb25zdCB7
IHJldHVybiBtX2FjdGl2ZVBhaW50aW5nUmVzb3VyY2U7IH0KICAgICB2b2lkIHNldEFjdGl2ZVBh
aW50aW5nUmVzb3VyY2UoUmVuZGVyU1ZHUmVzb3VyY2UqIG9iamVjdCkgeyBtX2FjdGl2ZVBhaW50
aW5nUmVzb3VyY2UgPSBvYmplY3Q7IH0KIAotICAgIHZpcnR1YWwgR2x5cGhEYXRhIGdseXBoRGF0
YUZvckNoYXJhY3Rlcihjb25zdCBGb250JiwgV2lkdGhJdGVyYXRvciYsIFVDaGFyMzIgY2hhcmFj
dGVyLCBib29sIG1pcnJvciwgdW5zaWduZWQgY3VycmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFk
dmFuY2VMZW5ndGgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgR2x5cGhEYXRhIGdseXBoRGF0YUZv
ckNoYXJhY3Rlcihjb25zdCBGb250JiwgV2lkdGhJdGVyYXRvciYsIFVDaGFyMzIgY2hhcmFjdGVy
LCBib29sIG1pcnJvciwgaW50IGN1cnJlbnRDaGFyYWN0ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVu
Z3RoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NWR0dseXBocyhHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBTaW1wbGVGb250RGF0YSosIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZy
b20sIGludCB0bywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgZmxvYXQgZmxvYXRXaWR0aFVzaW5nU1ZHRm9udChjb25zdCBGb250JiwgY29uc3QgVGV4dFJ1
biYsIGludCYgY2hhcnNDb25zdW1lZCwgU3RyaW5nJiBnbHlwaE5hbWUpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBhcHBseVNWR0tlcm5pbmcoY29uc3QgU2ltcGxlRm9udERhdGEq
LCBXaWR0aEl0ZXJhdG9yJiwgR2x5cGhCdWZmZXIqLCBpbnQgZnJvbSkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmNwcAppbmRleCA4MjVlNTlmOWFkMDQ4NzIyYTY1MjEz
MWU1MzIyMDFiOTUwOTY4OTVmLi44MDcxMGNlNmNmY2M1OGFiYjZkZGIxZjkxZTNmZDRkMjJlNDJj
MGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5jcHAKQEAgLTEzMCwxMSArMTMwLDExIEBA
IGZsb2F0IFNWR0ZvbnREYXRhOjp3aWR0aEZvclNWR0dseXBoKEdseXBoIGdseXBoLCBmbG9hdCBm
b250U2l6ZSkgY29uc3QKICAgICByZXR1cm4gc3ZnR2x5cGguaG9yaXpvbnRhbEFkdmFuY2VYICog
c2NhbGVFbVRvVW5pdHMoZm9udFNpemUsIHN2Z0ZvbnRGYWNlRWxlbWVudC0+dW5pdHNQZXJFbSgp
KTsKIH0KIAotYm9vbCBTVkdGb250RGF0YTo6YXBwbHlTVkdHbHlwaFNlbGVjdGlvbihXaWR0aEl0
ZXJhdG9yJiBpdGVyYXRvciwgR2x5cGhEYXRhJiBnbHlwaERhdGEsIGJvb2wgbWlycm9yLCB1bnNp
Z25lZCBjdXJyZW50Q2hhcmFjdGVyLCB1bnNpZ25lZCYgYWR2YW5jZUxlbmd0aCkgY29uc3QKK2Jv
b2wgU1ZHRm9udERhdGE6OmFwcGx5U1ZHR2x5cGhTZWxlY3Rpb24oV2lkdGhJdGVyYXRvciYgaXRl
cmF0b3IsIEdseXBoRGF0YSYgZ2x5cGhEYXRhLCBib29sIG1pcnJvciwgaW50IGN1cnJlbnRDaGFy
YWN0ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVuZ3RoKSBjb25zdAogewogICAgIGNvbnN0IFRleHRS
dW4mIHJ1biA9IGl0ZXJhdG9yLnJ1bigpOwogICAgIFZlY3RvcjxTVkdHbHlwaDo6QXJhYmljRm9y
bT4mIGFyYWJpY0Zvcm1zID0gaXRlcmF0b3IuYXJhYmljRm9ybXMoKTsKLSAgICBBU1NFUlQocnVu
LmNoYXJhY3RlcnNMZW5ndGgoKSA+PSBjdXJyZW50Q2hhcmFjdGVyKTsKKyAgICBBU1NFUlQoaW50
KHJ1bi5jaGFyYWN0ZXJzTGVuZ3RoKCkpID49IGN1cnJlbnRDaGFyYWN0ZXIpOwogCiAgICAgLy8g
QXNzb2NpYXRlIHRleHQgd2l0aCBhcmFiaWMgZm9ybXMsIGlmIG5lZWRlZC4KICAgICBTdHJpbmcg
cmVtYWluaW5nVGV4dEluUnVuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
bnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuaAppbmRleCAzMjUwYTQ1
ZjZkMzc3N2Y4MzFlODJiMzJkNmEyMzQ1OGRkZDM1NmZhLi43MjcyOGExN2FhNDRiMzk2Y2QwNDEy
NGI1MTI0OTIzODBjZjIyNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuaApAQCAtMzYsNyAr
MzYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVGb250RGF0YShTaW1w
bGVGb250RGF0YSosIGZsb2F0IGZvbnRTaXplKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGZsb2F0
IHdpZHRoRm9yU1ZHR2x5cGgoR2x5cGgsIGZsb2F0IGZvbnRTaXplKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgZmlsbFNWR0dseXBoUGFnZShHbHlwaFBhZ2UqLCB1bnNpZ25lZCBv
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVu
Z3RoLCBjb25zdCBTaW1wbGVGb250RGF0YSopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBhcHBseVNWR0dseXBoU2VsZWN0aW9uKFdpZHRoSXRlcmF0b3ImLCBHbHlwaERhdGEmLCBi
b29sIG1pcnJvciwgdW5zaWduZWQgY3VycmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VM
ZW5ndGgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBhcHBseVNWR0dseXBoU2Vs
ZWN0aW9uKFdpZHRoSXRlcmF0b3ImLCBHbHlwaERhdGEmLCBib29sIG1pcnJvciwgaW50IGN1cnJl
bnRDaGFyYWN0ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVuZ3RoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogc3ZnRm9udEZhY2VFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9zdmdGb250RmFjZUVsZW1lbnQ7IH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>