<?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>47584</bug_id>
          
          <creation_ts>2010-10-13 03:19:12 -0700</creation_ts>
          <short_desc>Add wtf/text/StringConcatenate</short_desc>
          <delta_ts>2010-10-14 05:05:49 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>18994</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>293341</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-13 03:19:12 -0700</bug_when>
    <thetext>Move JSC/runtime/StringConcatenate to wtf/text, make it work for Strings too. Add a special JSC/runtime/UStringConcatenate class that inherits from StringConcatenate, and extends it for UString.
Exactly the same design that has been done while refactoring StringBuilder.

The UString variants can all be removed as soon as WTF::String &amp; JSC::UString converge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293343</commentid>
    <comment_count>1</comment_count>
      <attachid>70594</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-13 03:28:11 -0700</bug_when>
    <thetext>Created attachment 70594
Patch

Please wait for EWS before reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293347</commentid>
    <comment_count>2</comment_count>
      <attachid>70596</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-13 03:39:11 -0700</bug_when>
    <thetext>Created attachment 70596
Patch v2

I ran svn-create-patch from within JSC, maybe that&apos;s why the bots can&apos;t apply the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293418</commentid>
    <comment_count>3</comment_count>
      <attachid>70596</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-13 07:19:26 -0700</bug_when>
    <thetext>Comment on attachment 70596
Patch v2

LGTM. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293427</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-13 07:51:16 -0700</bug_when>
    <thetext>Landed in r69663.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70594</attachid>
            <date>2010-10-13 03:28:11 -0700</date>
            <delta_ts>2010-10-13 03:39:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>StringCat.diff</filename>
            <type>text/plain</type>
            <size>57163</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5NjQ3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTAtMTAtMTMgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzU4NAor
CisgICAgICAgIE1vdmUgcnVudGltZS9TdHJpbmdDb25jYXRlbmF0ZS5oIHRvIHd0Zi90ZXh0LCBt
YWtlIGl0IHdvcmsgZm9yIFN0cmluZ3MgdG9vLgorICAgICAgICBBZGQgYSBzcGVjaWFsIHJ1bnRp
bWUvVVN0cmluZ0NvbmNhdGVuYXRlLmggY2xhc3MgdGhhdCBpbmhlcml0cyBmcm9tIFN0cmluZ0Nv
bmNhdGVuYXRlLCBhbmQgZXh0ZW5kcyBpdCBmb3IgdXNlIHdpdGggVVN0cmluZy4KKyAgICAgICAg
RXhhY3RseSB0aGUgc2FtZSBkZXNpZ24gdGhhdCBoYXMgYmVlbiBmb2xsb3dlZCB3aGlsZSByZWZh
Y3RvcmluZyBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgIFRoZSBVU3RyaW5nIHZhcmlhbnRzIGNh
biBhbGwgYmUgcmVtb3ZlZCBhcyBzb29uIGFzIFdURjo6U3RyaW5nICYgSlNDOjpVU3RyaW5nIGNv
bnZlcmdlLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCB3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oIGFuZCBydW50aW1lL1VTdHJpbmdDb25jYXRlbmF0ZS5oLgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6IERpdHRvLgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvajogRGl0dG8uCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAg
ICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDogcy9tYWtlU3RyaW5nL21ha2VVU3RyaW5nLwor
ICAgICAgICAoSlNDOjplc2NhcGVRdW90ZXMpOgorICAgICAgICAoSlNDOjp2YWx1ZVRvU291cmNl
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6Y29uc3RhbnROYW1lKToKKyAgICAgICAgKEpTQzo6aWRO
YW1lKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpyZWdpc3Rlck5hbWUpOgorICAgICAgICAo
SlNDOjpyZWdleHBUb1NvdXJjZVN0cmluZyk6CisgICAgICAgIChKU0M6OnJlZ2V4cE5hbWUpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOiBEaXR0by4KKyAgICAgICAg
KEpTQzo6c3Vic3RpdHV0ZSk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXIuY3BwOiBEaXR0
by4KKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OmNyZWF0ZUNhbGxJZGVudGlmaWVyKToKKyAgICAg
ICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOiBEaXR0by4KKyAgICAgICAgKEpTQzo6
Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUVycm9y
TWVzc2FnZSk6CisgICAgICAgIChKU0M6OmNyZWF0ZUludmFsaWRQYXJhbUVycm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwOiBEaXR0by4KKyAgICAgICAgKEpTQzo6aW5zZXJ0U2VtaWNvbG9uSWZOZWVkZWQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6IERpdHRvLgorICAgICAgICAoSlNDOjpT
dHJpbmdpZmllcjo6aW5kZW50KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nQnVpbGRlci5o
OgorICAgICAgICAoSlNDOjpqc01ha2VOb250cml2aWFsU3RyaW5nKToKKyAgICAgICAgKiBydW50
aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcDogRGl0dG8uCisgICAgICAgIChKU0M6OmNvbnN0cnVj
dFJlZ0V4cCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuY3BwOiBEaXR0by4KKyAg
ICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjptYXRjaCk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwOiBEaXR0by4KKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jQ29t
cGlsZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25jYXRlbmF0ZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHJ1bnRpbWUvVVN0cmluZ0NvbmNhdGVuYXRlLmg6IEFkZGVkLiBPbmx5IGNvbnRh
aW5zIHRoZSBTdHJpbmdUeXBlQWRhcHRlcjxKU0M6OlVTdHJpbmc+IGNvZGUgYW5kIHRoZSBtYWtl
VVN0cmluZyB2YXJpYW50cywgdGhlIHJlc3QgbGl2ZXMgaW4gd3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaAorICAgICAgICAoSlNDOjptYWtlVVN0cmluZyk6CisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaDogQ29waWVkIGZyb20gcnVudGltZS9TdHJpbmdDb25jYXRlbmF0
ZS5oLgorICAgICAgICAoV1RGOjptYWtlU3RyaW5nKToKKwogMjAxMC0xMC0xMiAgR2F2aW4gQmFy
cmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgV2luZG93cyBidWls
ZCBmaXguCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNjk1OTQpCisrKyBKYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMzg4LDEwICszODgs
OCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Njb3BlQ2hhaW5NYXJrLmggXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdz
LmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaCBcCi0JSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHBcCi0JSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oXAotCUphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nQnVpbGRlci5oIFwKLQlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbmNh
dGVuYXRlLmggXAorCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24u
Y3BwIFwKKwlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmggXAog
CUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwIFwKIAlKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmggXAogCUphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBcCkBAIC00MTIsNiArNDEwLDcgQEAgamF2YXNjcmlwdGNv
cmVfc291cmNlcyArPSBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcCBcCiAJ
SmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmggXAogCUphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVVN0cmluZ0J1aWxkZXIuaCBcCisJSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nQ29u
Y2F0ZW5hdGUuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaCBcCiAJSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NQdHIuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrUmFuZG9tLmggXApAQCAtNTEwLDYgKzUwOSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJj
ZXMgKz0gXAogCUphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaCBcCiAJSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nQnVmZmVyLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaCBcCisJSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSGFzaC5oIFwKIAlKYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsQmFzZS5oIFwKIAlKYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5
cGkJKHJldmlzaW9uIDY5NTk0KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lw
aQkod29ya2luZyBjb3B5KQpAQCAtMzQ3LDYgKzM0Nyw3IEBACiAgICAgICAgICAgICAncnVudGlt
ZS9VU3RyaW5nLmNwcCcsCiAgICAgICAgICAgICAncnVudGltZS9VU3RyaW5nLmgnLAogICAgICAg
ICAgICAgJ3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaCcsCisgICAgICAgICAgICAncnVudGltZS9V
U3RyaW5nQ29uY2F0ZW5hdGUuaCcsCiAgICAgICAgICAgICAncnVudGltZS9XZWFrUmFuZG9tLmgn
LAogICAgICAgICAgICAgJ3d0Zi9BbHdheXNJbmxpbmUuaCcsCiAgICAgICAgICAgICAnd3RmL0FT
Q0lJQ1R5cGUuaCcsCkBAIC00NTMsNiArNDU0LDcgQEAKICAgICAgICAgICAgICd3dGYvdGV4dC9D
U3RyaW5nLmgnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oJywKICAgICAg
ICAgICAgICd3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgnLAorICAgICAgICAgICAgJ3d0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmgnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0L1N0cmluZ0hhc2gu
aCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAnLAogICAgICAgICAgICAg
J3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCcsCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDY5NTk0KQorKysgSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI1Nyw2ICsxMjU3LDEwIEBACiAJCQkJPg0KIAkJCTwv
RmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcVVN0cmlu
Z0NvbmNhdGVuYXRlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFVTdHJpbmdJbXBsLmgiDQogCQkJCT4NCiAJCQk8L0Zp
bGU+DQpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9XVEYvV1RGLnZjcHJvagkocmV2aXNpb24gNjk1OTQpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTYxNyw2
ICs2MTcsMTAgQEAKICAJCQk+DQogIAkJPC9GaWxlPg0KICAJCTxGaWxlDQorIAkJCVJlbGF0aXZl
UGF0aD0iLi5cLi5cd3RmXHRleHRcU3RyaW5nQ29uY2F0ZW5hdGUuaCINCisgCQkJPg0KKyAJCTwv
RmlsZT4NCisgCQk8RmlsZQ0KICAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0Zlx0ZXh0XFN0cmlu
Z0hhc2guaCINCiAgCQkJPg0KICAJCTwvRmlsZT4NCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDY5NTk0KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogCQkwODE0Njk0
OTEyNjQzNzg1MDBERkY5MzUgLyogU3RyaW5nQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxNDY5NDgxMjY0Mzc1RTAwREZGOTM1IC8qIFN0
cmluZ0J1aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwODhGQTVCQjBFRjc2RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEZBNUI5MEVGNzZE
NDMwMDU3OEU2RiAvKiBSYW5kb21OdW1iZXIuY3BwICovOyB9OwogCQkwODhGQTVCQzBFRjc2RDQz
MDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODhGQTVCQTBFRjc2RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDhD
QUJCQTYxMjY1QUIzOTAwQjIwNkNFIC8qIFN0cmluZ0NvbmNhdGVuYXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODk2QzI5RTEyNjVBQjA5MDBCMUNE
RDMgLyogU3RyaW5nQ29uY2F0ZW5hdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwOEREQTVDMTEyNjQ2MzE3MDA3NTE3MzIgLyogVVN0cmluZ0J1
aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
RERBNUJCMTI2NDVGMUQwMDc1MTczMiAvKiBVU3RyaW5nQnVpbGRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4RTI3OUU5MEVGODNCMTAwMDdE
QjUyMyAvKiBSYW5kb21OdW1iZXJTZWVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwOEUyNzlFODBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVtYmVy
U2VlZC5oICovOyB9OwogCQkwQjMzMEMyNzBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjMzMEMy
NjBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgKi87IH07CkBAIC0yMjQsNyArMjI1
LDYgQEAKIAkJODZBOTBFRDAwRUU3RDUxRjAwQUIzNTBEIC8qIEpJVEFyaXRobWV0aWMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBOTBFQ0YwRUU3
RDUxRjAwQUIzNTBEIC8qIEpJVEFyaXRobWV0aWMuY3BwICovOyB9OwogCQk4NkFERDE0NTBGRERF
QTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fz
c2VtYmxlci5oICovOyB9OwogCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3Nl
bWJsZXJBUk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLzsg
fTsKLQkJODZCNkRBMDIxMjEzMkI5QTAwMEQzMTZGIC8qIFN0cmluZ0NvbmNhdGVuYXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI2REEwMTEyMTMy
QjlBMDAwRDMxNkYgLyogU3RyaW5nQ29uY2F0ZW5hdGUuaCAqLzsgfTsKIAkJODZCOTlBQjgxMTdF
MzkxRTAwREY1QTkwIC8qIFJvcGVJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUI2MTE3RTM5MUUwMERGNUE5MCAvKiBSb3BlSW1wbC5j
cHAgKi87IH07CiAJCTg2Qjk5QUI5MTE3RTM5MUUwMERGNUE5MCAvKiBSb3BlSW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCOTlBQjcxMTdFMzkx
RTAwREY1QTkwIC8qIFJvcGVJbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODZCOTlBRTMxMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCOTlB
RTExMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02MzMsNiArNjMzLDggQEAKIAkJMDgxNDY5
NDgxMjY0Mzc1RTAwREZGOTM1IC8qIFN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gU3RyaW5nQnVpbGRlci5oOyBwYXRoID0gdGV4dC9TdHJpbmdCdWlsZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEZBNUI5MEVGNzZENDMwMDU3OEU2
RiAvKiBSYW5kb21OdW1iZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmFuZG9tTnVtYmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4RkE1
QkEwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSYW5kb21OdW1iZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDg5NkMyOUIxMjY1QUFGNjAwQjFDREQzIC8qIFVTdHJpbmdDb25jYXRlbmF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVU3RyaW5nQ29uY2F0ZW5hdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDg5NkMyOUUxMjY1QUIwOTAwQjFDREQzIC8qIFN0cmlu
Z0NvbmNhdGVuYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0cmluZ0Nv
bmNhdGVuYXRlLmg7IHBhdGggPSB0ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA4RERBNUJCMTI2NDVGMUQwMDc1MTczMiAvKiBVU3RyaW5nQnVp
bGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVU3RyaW5nQnVpbGRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEUyNzlFODBFRjgzQjEwMDA3REI1MjMg
LyogUmFuZG9tTnVtYmVyU2VlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
YW5kb21OdW1iZXJTZWVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCMzMwQzI2
MEYzOEM2MjMwMDY5MkRFMyAvKiBUeXBlVHJhaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFR5cGVUcmFpdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODMwLDcgKzgzMiw2IEBACiAJCTg2QTkwRUNGMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRB
cml0aG1ldGljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEFy
aXRobWV0aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkFERDE0MzBGRERF
QTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVJNdjdBc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk4NkI2REEwMTEyMTMyQjlBMDAwRDMxNkYgLyogU3RyaW5n
Q29uY2F0ZW5hdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQ29u
Y2F0ZW5hdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCOTlBQjYxMTdFMzkx
RTAwREY1QTkwIC8qIFJvcGVJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJvcGVJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCOTlB
QjcxMTdFMzkxRTAwREY1QTkwIC8qIFJvcGVJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJvcGVJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2Qjk5
QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gU3RyaW5nQnVmZmVyLmg7IHBhdGggPSB0ZXh0L1N0cmluZ0J1ZmZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc5NSw3ICsxNzk2LDYgQEAKIAkJCQk3
RTJDNkM5ODBEMzFDNkI2MDAyRDQ0RTIgLyogU2NvcGVDaGFpbk1hcmsuaCAqLywKIAkJCQk5MzMw
M0ZFODBFNkE3MkI1MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmNwcCAqLywKIAkJCQk5MzMwM0ZF
QTBFNkE3MkMwMDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggKi8sCi0JCQkJODZCNkRBMDExMjEz
MkI5QTAwMEQzMTZGIC8qIFN0cmluZ0NvbmNhdGVuYXRlLmggKi8sCiAJCQkJQkMxOEMzQzAwRTE2
RUUzMzAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzE4QzNDMTBF
MTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nQ29uc3RydWN0b3IuaCAqLywKIAkJCQlCQzE4QzNDMjBF
MTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nT2JqZWN0LmNwcCAqLywKQEAgLTE4MTcsNiArMTgxNyw3
IEBACiAJCQkJRjY5MkE4ODUwMjU1NTk3RDAxRkY2MEY3IC8qIFVTdHJpbmcuY3BwICovLAogCQkJ
CUY2OTJBODg2MDI1NTU5N0QwMUZGNjBGNyAvKiBVU3RyaW5nLmggKi8sCiAJCQkJMDhEREE1QkIx
MjY0NUYxRDAwNzUxNzMyIC8qIFVTdHJpbmdCdWlsZGVyLmggKi8sCisJCQkJMDg5NkMyOUIxMjY1
QUFGNjAwQjFDREQzIC8qIFVTdHJpbmdDb25jYXRlbmF0ZS5oICovLAogCQkJCTE0QkZDRTY4MTBD
REIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLywKIAkJCQkxNDAzNURCMDEwREJGQjJBMDBG
RkZGRTcgLyogV2Vha0dDUHRyLmggKi8sCiAJCQkJMTQyMEJFN0ExMEFBNkREQjAwRjQ1NUQyIC8q
IFdlYWtSYW5kb20uaCAqLywKQEAgLTE4MzcsNiArMTgzOCw3IEBACiAJCQkJODY1NjU3NDExMTVC
RTNEQTAwMjkxRjQwIC8qIENTdHJpbmcuaCAqLywKIAkJCQk4NkI5OUFFMTExN0U1NzgxMDBERjVB
OTAgLyogU3RyaW5nQnVmZmVyLmggKi8sCiAJCQkJMDgxNDY5NDgxMjY0Mzc1RTAwREZGOTM1IC8q
IFN0cmluZ0J1aWxkZXIuaCAqLywKKwkJCQkwODk2QzI5RTEyNjVBQjA5MDBCMUNERDMgLyogU3Ry
aW5nQ29uY2F0ZW5hdGUuaCAqLywKIAkJCQk4NjhCRkEwNTExN0NFRkQxMDBCOTA4QjEgLyogU3Ry
aW5nSGFzaC5oICovLAogCQkJCTg2OEJGQTA2MTE3Q0VGRDEwMEI5MDhCMSAvKiBTdHJpbmdJbXBs
LmNwcCAqLywKIAkJCQk4NjhCRkEwNzExN0NFRkQxMDBCOTA4QjEgLyogU3RyaW5nSW1wbC5oICov
LApAQCAtMjI2MCw2ICsyMjYyLDcgQEAKIAkJCQlGRTFCNDQ3QTBFQ0NENzNCMDA0RjRERDEgLyog
U3RkTGliRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkI5OUFFMzExN0U1NzgxMDBERjVB
OTAgLyogU3RyaW5nQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODE0Njk0OTEyNjQzNzg1
MDBERkY5MzUgLyogU3RyaW5nQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDhDQUJCQTYx
MjY1QUIzOTAwQjIwNkNFIC8qIFN0cmluZ0NvbmNhdGVuYXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQ2NjBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDY3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJpbmdFeHRyYXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2OEJGQTBEMTE3Q0VGRDEwMEI5MDhCMSAvKiBTdHJpbmdIYXNo
LmggaW4gSGVhZGVycyAqLywKQEAgLTIzMTIsNyArMjMxNSw2IEBACiAJCQkJREQyNzI0NjkxMjA4
RDFGRjAwRjlBQkU3IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCURERTgyQUQ4MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODZGMzg4NTkxMjExMzBDQTAwN0E3Q0UzIC8qIEF0b21pY1N0cmluZ0hhc2guaCBpbiBI
ZWFkZXJzICovLAotCQkJCTg2QjZEQTAyMTIxMzJCOUEwMDBEMzE2RiAvKiBTdHJpbmdDb25jYXRl
bmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYyQUY0QjYxMjIzOUM3QjAwMjRFNUI4IC8qIERl
Y2ltYWxOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkJFNjk2MTIyNTYwRTgwMDMwOUU5
RCAvKiBQYXNzT3duQXJyYXlQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkJFNjk4MTIyNTYx
RDIwMDMwOUU5RCAvKiBPd25BcnJheVB0ckNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDY5NTkzKQorKysgSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0YXRpY1Nj
b3BlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgotI2luY2x1ZGUgIlN0cmluZ0NvbmNh
dGVuYXRlLmgiCisjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVkZSA8c3Rk
aW8uaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKQEAgLTUzLDcgKzUzLDcgQEAg
c3RhdGljIFVTdHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFVTdHJpbgogICAgIFVTdHJpbmcgcmVz
dWx0ID0gc3RyOwogICAgIHNpemVfdCBwb3MgPSAwOwogICAgIHdoaWxlICgocG9zID0gcmVzdWx0
LmZpbmQoJ1wiJywgcG9zKSkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgcmVzdWx0ID0gbWFrZVN0
cmluZyhyZXN1bHQuc3Vic3RyaW5nU2hhcmluZ0ltcGwoMCwgcG9zKSwgIlwiXFxcIlwiIiwgcmVz
dWx0LnN1YnN0cmluZ1NoYXJpbmdJbXBsKHBvcyArIDEpKTsKKyAgICAgICAgcmVzdWx0ID0gbWFr
ZVVTdHJpbmcocmVzdWx0LnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIHBvcyksICJcIlxcXCJcIiIs
IHJlc3VsdC5zdWJzdHJpbmdTaGFyaW5nSW1wbChwb3MgKyAxKSk7CiAgICAgICAgIHBvcyArPSA0
OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjUsMTkgKzY1LDE5IEBAIHN0YXRpYyBV
U3RyaW5nIHZhbHVlVG9Tb3VyY2VTdHJpbmcoRXhlY1MKICAgICAgICAgcmV0dXJuICIwIjsKIAog
ICAgIGlmICh2YWwuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlwiIiwg
ZXNjYXBlUXVvdGVzKHZhbC50b1N0cmluZyhleGVjKSksICJcIiIpOworICAgICAgICByZXR1cm4g
bWFrZVVTdHJpbmcoIlwiIiwgZXNjYXBlUXVvdGVzKHZhbC50b1N0cmluZyhleGVjKSksICJcIiIp
OwogCiAgICAgcmV0dXJuIHZhbC50b1N0cmluZyhleGVjKTsKIH0KIAogc3RhdGljIENTdHJpbmcg
Y29uc3RhbnROYW1lKEV4ZWNTdGF0ZSogZXhlYywgaW50IGssIEpTVmFsdWUgdmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIG1ha2VTdHJpbmcodmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCB2YWx1ZSksICIo
QGsiLCBVU3RyaW5nOjpudW1iZXIoayAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSwgIiki
KS51dGY4KCk7CisgICAgcmV0dXJuIG1ha2VVU3RyaW5nKHZhbHVlVG9Tb3VyY2VTdHJpbmcoZXhl
YywgdmFsdWUpLCAiKEBrIiwgVVN0cmluZzo6bnVtYmVyKGsgLSBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCksICIpIikudXRmOCgpOwogfQogCiBzdGF0aWMgQ1N0cmluZyBpZE5hbWUoaW50IGlk
MCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoaWRl
bnQudXN0cmluZygpLCAiKEBpZCIsIFVTdHJpbmc6Om51bWJlcihpZDApLCAiKSIpLnV0ZjgoKTsK
KyAgICByZXR1cm4gbWFrZVVTdHJpbmcoaWRlbnQudXN0cmluZygpLCAiKEBpZCIsIFVTdHJpbmc6
Om51bWJlcihpZDApLCAiKSIpLnV0ZjgoKTsKIH0KIAogQ1N0cmluZyBDb2RlQmxvY2s6OnJlZ2lz
dGVyTmFtZShFeGVjU3RhdGUqIGV4ZWMsIGludCByKSBjb25zdApAQCAtODgsNyArODgsNyBAQCBD
U3RyaW5nIENvZGVCbG9jazo6cmVnaXN0ZXJOYW1lKEV4ZWNTdGF0CiAgICAgaWYgKGlzQ29uc3Rh
bnRSZWdpc3RlckluZGV4KHIpKQogICAgICAgICByZXR1cm4gY29uc3RhbnROYW1lKGV4ZWMsIHIs
IGdldENvbnN0YW50KHIpKTsKIAotICAgIHJldHVybiBtYWtlU3RyaW5nKCJyIiwgVVN0cmluZzo6
bnVtYmVyKHIpKS51dGY4KCk7CisgICAgcmV0dXJuIG1ha2VVU3RyaW5nKCJyIiwgVVN0cmluZzo6
bnVtYmVyKHIpKS51dGY4KCk7CiB9CiAKIHN0YXRpYyBVU3RyaW5nIHJlZ2V4cFRvU291cmNlU3Ry
aW5nKFJlZ0V4cCogcmVnRXhwKQpAQCAtMTAyLDEyICsxMDIsMTIgQEAgc3RhdGljIFVTdHJpbmcg
cmVnZXhwVG9Tb3VyY2VTdHJpbmcoUmVnRQogICAgIGlmIChyZWdFeHAtPm11bHRpbGluZSgpKQog
ICAgICAgICBwb3N0Zml4W2luZGV4XSA9ICdtJzsKIAotICAgIHJldHVybiBtYWtlU3RyaW5nKCIv
IiwgcmVnRXhwLT5wYXR0ZXJuKCksIHBvc3RmaXgpOworICAgIHJldHVybiBtYWtlVVN0cmluZygi
LyIsIHJlZ0V4cC0+cGF0dGVybigpLCBwb3N0Zml4KTsKIH0KIAogc3RhdGljIENTdHJpbmcgcmVn
ZXhwTmFtZShpbnQgcmUsIFJlZ0V4cCogcmVnZXhwKQogewotICAgIHJldHVybiBtYWtlU3RyaW5n
KHJlZ2V4cFRvU291cmNlU3RyaW5nKHJlZ2V4cCksICIoQHJlIiwgVVN0cmluZzo6bnVtYmVyKHJl
KSwgIikiKS51dGY4KCk7CisgICAgcmV0dXJuIG1ha2VVU3RyaW5nKHJlZ2V4cFRvU291cmNlU3Ry
aW5nKHJlZ2V4cCksICIoQHJlIiwgVVN0cmluZzo6bnVtYmVyKHJlKSwgIikiKS51dGY4KCk7CiB9
CiAKIHN0YXRpYyBVU3RyaW5nIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2b2lkKiBwKQpJbmRleDog
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9u
IDY5NTkzKQorKysgSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5o
IgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgot
I2luY2x1ZGUgIlN0cmluZ0NvbmNhdGVuYXRlLmgiCisjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVu
YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtODAsNyAr
ODAsNyBAQCBzdGF0aWMgdm9pZCBzdWJzdGl0dXRlKFVTdHJpbmcmIHN0cmluZywgCiB7CiAgICAg
c2l6ZV90IHBvc2l0aW9uID0gc3RyaW5nLmZpbmQoIiVzIik7CiAgICAgQVNTRVJUKHBvc2l0aW9u
ICE9IG5vdEZvdW5kKTsKLSAgICBzdHJpbmcgPSBtYWtlU3RyaW5nKHN0cmluZy5zdWJzdHJpbmdT
aGFyaW5nSW1wbCgwLCBwb3NpdGlvbiksIHN1YnN0cmluZywgc3RyaW5nLnN1YnN0cmluZ1NoYXJp
bmdJbXBsKHBvc2l0aW9uICsgMikpOworICAgIHN0cmluZyA9IG1ha2VVU3RyaW5nKHN0cmluZy5z
dWJzdHJpbmdTaGFyaW5nSW1wbCgwLCBwb3NpdGlvbiksIHN1YnN0cmluZywgc3RyaW5nLnN1YnN0
cmluZ1NoYXJpbmdJbXBsKHBvc2l0aW9uICsgMikpOwogfQogCiBSZWdpc3RlcklEKiBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YTo6ZW1pdFRocm93RXJyb3IoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgYm9vbCBpc1JlZmVyZW5jZUVycm9yLCBjb25zdCBjaGFyKiBtZXNzYWdlKQpJbmRleDog
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmNwcAkocmV2aXNpb24gNjk1OTMpCisrKyBKYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcg
KzM5LDcgQEAKICNpbmNsdWRlICJQcm9maWxlLmgiCiAjaW5jbHVkZSAiUHJvZmlsZUdlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIlByb2ZpbGVOb2RlLmgiCi0jaW5jbHVkZSAiU3RyaW5nQ29uY2F0ZW5h
dGUuaCIKKyNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTE1Miw3ICsxNTIsNyBAQCBDYWxsSWRlbnRpZmllciBQ
cm9maWxlcjo6Y3JlYXRlQ2FsbElkZW50CiAgICAgICAgIHJldHVybiBDYWxsSWRlbnRpZmllcihz
dGF0aWNfY2FzdDxKU0Z1bmN0aW9uKj4oYXNPYmplY3QoZnVuY3Rpb25WYWx1ZSkpLT5uYW1lKGV4
ZWMpLCBkZWZhdWx0U291cmNlVVJMLCBkZWZhdWx0TGluZU51bWJlcik7CiAgICAgaWYgKGFzT2Jq
ZWN0KGZ1bmN0aW9uVmFsdWUpLT5pbmhlcml0cygmSW50ZXJuYWxGdW5jdGlvbjo6aW5mbykpCiAg
ICAgICAgIHJldHVybiBDYWxsSWRlbnRpZmllcihzdGF0aWNfY2FzdDxJbnRlcm5hbEZ1bmN0aW9u
Kj4oYXNPYmplY3QoZnVuY3Rpb25WYWx1ZSkpLT5uYW1lKGV4ZWMpLCBkZWZhdWx0U291cmNlVVJM
LCBkZWZhdWx0TGluZU51bWJlcik7Ci0gICAgcmV0dXJuIENhbGxJZGVudGlmaWVyKG1ha2VTdHJp
bmcoIigiLCBhc09iamVjdChmdW5jdGlvblZhbHVlKS0+Y2xhc3NOYW1lKCksICIgb2JqZWN0KSIp
LCBkZWZhdWx0U291cmNlVVJMLCBkZWZhdWx0TGluZU51bWJlcik7CisgICAgcmV0dXJuIENhbGxJ
ZGVudGlmaWVyKG1ha2VVU3RyaW5nKCIoIiwgYXNPYmplY3QoZnVuY3Rpb25WYWx1ZSktPmNsYXNz
TmFtZSgpLCAiIG9iamVjdCkiKSwgZGVmYXVsdFNvdXJjZVVSTCwgZGVmYXVsdExpbmVOdW1iZXIp
OwogfQogCiBDYWxsSWRlbnRpZmllciBjcmVhdGVDYWxsSWRlbnRpZmllckZyb21GdW5jdGlvbklt
cChFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uKQpJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCShyZXZpc2lvbiA2OTU5MykKKysr
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgIlN0cmluZ0Nv
bmNhdGVuYXRlLmgiCisjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC05MCw3ICs5MCw3IEBAIEpTVmFsdWUgY3JlYXRlVW5kZWZpbmVkVmFyaWFi
bGVFcnJvcihFeGUKICAgICBpbnQgZW5kT2Zmc2V0ID0gMDsKICAgICBpbnQgZGl2b3RQb2ludCA9
IDA7CiAgICAgaW50IGxpbmUgPSBjb2RlQmxvY2stPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2Rl
T2Zmc2V0KGV4ZWMsIGJ5dGVjb2RlT2Zmc2V0LCBkaXZvdFBvaW50LCBzdGFydE9mZnNldCwgZW5k
T2Zmc2V0KTsKLSAgICBVU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCB2YXJp
YWJsZTogIiwgaWRlbnQudXN0cmluZygpKSk7CisgICAgVVN0cmluZyBtZXNzYWdlKG1ha2VVU3Ry
aW5nKCJDYW4ndCBmaW5kIHZhcmlhYmxlOiAiLCBpZGVudC51c3RyaW5nKCkpKTsKICAgICBKU09i
amVjdCogZXhjZXB0aW9uID0gYWRkRXJyb3JJbmZvKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9y
KGV4ZWMsIG1lc3NhZ2UpLCBsaW5lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3Vy
Y2UoKSwgZGl2b3RQb2ludCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CiAgICAgcmV0dXJuIGV4
Y2VwdGlvbjsKIH0KQEAgLTk4LDkgKzk4LDkgQEAgSlNWYWx1ZSBjcmVhdGVVbmRlZmluZWRWYXJp
YWJsZUVycm9yKEV4ZQogc3RhdGljIFVTdHJpbmcgY3JlYXRlRXJyb3JNZXNzYWdlKEV4ZWNTdGF0
ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCwgaW50IGV4cHJlc3Npb25TdGFydCwg
aW50IGV4cHJlc3Npb25TdG9wLCBKU1ZhbHVlIHZhbHVlLCBVU3RyaW5nIGVycm9yKQogewogICAg
IGlmICghZXhwcmVzc2lvblN0b3AgfHwgZXhwcmVzc2lvblN0YXJ0ID4gY29kZUJsb2NrLT5zb3Vy
Y2UoKS0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHZhbHVlLnRvU3RyaW5n
KGV4ZWMpLCAiIGlzICIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVU3RyaW5nKHZhbHVl
LnRvU3RyaW5nKGV4ZWMpLCAiIGlzICIsIGVycm9yKTsKICAgICBpZiAoZXhwcmVzc2lvblN0YXJ0
IDwgZXhwcmVzc2lvblN0b3ApCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJSZXN1bHQgb2Yg
ZXhwcmVzc2lvbiAnIiwgY29kZUJsb2NrLT5zb3VyY2UoKS0+Z2V0UmFuZ2UoZXhwcmVzc2lvblN0
YXJ0LCBleHByZXNzaW9uU3RvcCksICInIFsiLCB2YWx1ZS50b1N0cmluZyhleGVjKSwgIl0gaXMg
IiwgZXJyb3IsICIuIik7CisgICAgICAgIHJldHVybiBtYWtlVVN0cmluZygiUmVzdWx0IG9mIGV4
cHJlc3Npb24gJyIsIGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKGV4cHJlc3Npb25TdGFy
dCwgZXhwcmVzc2lvblN0b3ApLCAiJyBbIiwgdmFsdWUudG9TdHJpbmcoZXhlYyksICJdIGlzICIs
IGVycm9yLCAiLiIpOwogCiAgICAgLy8gTm8gcmFuZ2UgaW5mb3JtYXRpb24sIHNvIGdpdmUgYSBm
ZXcgY2hhcmFjdGVycyBvZiBjb250ZXh0CiAgICAgY29uc3QgVUNoYXIqIGRhdGEgPSBjb2RlQmxv
Y2stPnNvdXJjZSgpLT5kYXRhKCk7CkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIFVTdHJpbmcg
Y3JlYXRlRXJyb3JNZXNzYWdlKEV4ZWNTdAogICAgICAgICBzdG9wKys7CiAgICAgd2hpbGUgKHN0
b3AgPiBleHByZXNzaW9uU3RhcnQgJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbc3RvcF0pKQogICAg
ICAgICBzdG9wLS07Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIlJlc3VsdCBvZiBleHByZXNzaW9u
IG5lYXIgJy4uLiIsIGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKHN0YXJ0LCBzdG9wKSwg
Ii4uLicgWyIsIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLCAiXSBpcyAiLCBlcnJvciwgIi4iKTsKKyAg
ICByZXR1cm4gbWFrZVVTdHJpbmcoIlJlc3VsdCBvZiBleHByZXNzaW9uIG5lYXIgJy4uLiIsIGNv
ZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKHN0YXJ0LCBzdG9wKSwgIi4uLicgWyIsIHZhbHVl
LnRvU3RyaW5nKGV4ZWMpLCAiXSBpcyAiLCBlcnJvciwgIi4iKTsKIH0KIAogSlNPYmplY3QqIGNy
ZWF0ZUludmFsaWRQYXJhbUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogb3AsIEpT
VmFsdWUgdmFsdWUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBDb2RlQmxvY2sqIGNvZGVCbG9j
aykKQEAgLTEyNiw3ICsxMjYsNyBAQCBKU09iamVjdCogY3JlYXRlSW52YWxpZFBhcmFtRXJyb3Io
RXhlY1N0CiAgICAgaW50IGVuZE9mZnNldCA9IDA7CiAgICAgaW50IGRpdm90UG9pbnQgPSAwOwog
ICAgIGludCBsaW5lID0gY29kZUJsb2NrLT5leHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNl
dChleGVjLCBieXRlY29kZU9mZnNldCwgZGl2b3RQb2ludCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCk7Ci0gICAgVVN0cmluZyBlcnJvck1lc3NhZ2UgPSBjcmVhdGVFcnJvck1lc3NhZ2UoZXhlYywg
Y29kZUJsb2NrLCBsaW5lLCBkaXZvdFBvaW50LCBkaXZvdFBvaW50ICsgZW5kT2Zmc2V0LCB2YWx1
ZSwgbWFrZVN0cmluZygibm90IGEgdmFsaWQgYXJndW1lbnQgZm9yICciLCBvcCwgIiciKSk7Cisg
ICAgVVN0cmluZyBlcnJvck1lc3NhZ2UgPSBjcmVhdGVFcnJvck1lc3NhZ2UoZXhlYywgY29kZUJs
b2NrLCBsaW5lLCBkaXZvdFBvaW50LCBkaXZvdFBvaW50ICsgZW5kT2Zmc2V0LCB2YWx1ZSwgbWFr
ZVVTdHJpbmcoIm5vdCBhIHZhbGlkIGFyZ3VtZW50IGZvciAnIiwgb3AsICInIikpOwogICAgIEpT
T2JqZWN0KiBleGNlcHRpb24gPSBhZGRFcnJvckluZm8oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIGVycm9yTWVzc2FnZSksIGxpbmUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNv
dXJjZSgpLCBkaXZvdFBvaW50LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKICAgICByZXR1cm4g
ZXhjZXB0aW9uOwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA2OTU5NCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlVT
dHJpbmdCdWlsZGVyLmgiCi0jaW5jbHVkZSAiU3RyaW5nQ29uY2F0ZW5hdGUuaCIKKyNpbmNsdWRl
ICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTgxLDcgKzgx
LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZQogICAgIGlmIChh
cmdzLmlzRW1wdHkoKSkKICAgICAgICAgcHJvZ3JhbSA9ICIoZnVuY3Rpb24oKSB7IFxufSkiOwog
ICAgIGVsc2UgaWYgKGFyZ3Muc2l6ZSgpID09IDEpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlU3Ry
aW5nKCIoZnVuY3Rpb24oKSB7ICIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksICJcbn0pIik7
CisgICAgICAgIHByb2dyYW0gPSBtYWtlVVN0cmluZygiKGZ1bmN0aW9uKCkgeyAiLCBhcmdzLmF0
KDApLnRvU3RyaW5nKGV4ZWMpLCAiXG59KSIpOwogICAgIGVsc2UgewogICAgICAgICBVU3RyaW5n
QnVpbGRlciBidWlsZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgiKGZ1bmN0aW9uKCIpOwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDY5NTkzKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIGlubGluZSB2b2lk
IGluc2VydFNlbWljb2xvbklmTmVlZAogICAgICAgICBVQ2hhciBjaCA9IGZ1bmN0aW9uQm9keVtp
XTsKICAgICAgICAgaWYgKCFMZXhlcjo6aXNXaGl0ZVNwYWNlKGNoKSAmJiAhTGV4ZXI6OmlzTGlu
ZVRlcm1pbmF0b3IoY2gpKSB7CiAgICAgICAgICAgICBpZiAoY2ggIT0gJzsnICYmIGNoICE9ICd9
JykKLSAgICAgICAgICAgICAgICBmdW5jdGlvbkJvZHkgPSBtYWtlU3RyaW5nKGZ1bmN0aW9uQm9k
eS5zdWJzdHJpbmdTaGFyaW5nSW1wbCgwLCBpICsgMSksICI7IiwgZnVuY3Rpb25Cb2R5LnN1YnN0
cmluZ1NoYXJpbmdJbXBsKGkgKyAxLCBmdW5jdGlvbkJvZHkubGVuZ3RoKCkgLSAoaSArIDEpKSk7
CisgICAgICAgICAgICAgICAgZnVuY3Rpb25Cb2R5ID0gbWFrZVVTdHJpbmcoZnVuY3Rpb25Cb2R5
LnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIGkgKyAxKSwgIjsiLCBmdW5jdGlvbkJvZHkuc3Vic3Ry
aW5nU2hhcmluZ0ltcGwoaSArIDEsIGZ1bmN0aW9uQm9keS5sZW5ndGgoKSAtIChpICsgMSkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09OT2JqZWN0LmNwcAkocmV2aXNpb24gNjk1OTQpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
CiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNp
bmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgotI2luY2x1ZGUgIlN0cmluZ0NvbmNhdGVuYXRlLmgi
CisjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00NjYsNyArNDY2LDcgQEAgaW5saW5lIHZvaWQg
U3RyaW5naWZpZXI6OmluZGVudCgpCiAgICAgLy8gVXNlIGEgc2luZ2xlIHNoYXJlZCBzdHJpbmcs
IG1fcmVwZWF0ZWRHYXAsIHNvIHdlIGRvbid0IGtlZXAgYWxsb2NhdGluZyBuZXcgb25lcyBhcyB3
ZSBpbmRlbnQgYW5kIHVuaW5kZW50LgogICAgIHVuc2lnbmVkIG5ld1NpemUgPSBtX2luZGVudC5s
ZW5ndGgoKSArIG1fZ2FwLmxlbmd0aCgpOwogICAgIGlmIChuZXdTaXplID4gbV9yZXBlYXRlZEdh
cC5sZW5ndGgoKSkKLSAgICAgICAgbV9yZXBlYXRlZEdhcCA9IG1ha2VTdHJpbmcobV9yZXBlYXRl
ZEdhcCwgbV9nYXApOworICAgICAgICBtX3JlcGVhdGVkR2FwID0gbWFrZVVTdHJpbmcobV9yZXBl
YXRlZEdhcCwgbV9nYXApOwogICAgIEFTU0VSVChuZXdTaXplIDw9IG1fcmVwZWF0ZWRHYXAubGVu
Z3RoKCkpOwogICAgIG1faW5kZW50ID0gbV9yZXBlYXRlZEdhcC5zdWJzdHJpbmdTaGFyaW5nSW1w
bCgwLCBuZXdTaXplKTsKIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdC
dWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0J1
aWxkZXIuaAkocmV2aXNpb24gNjk1OTMpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJT
dHJpbmdDb25jYXRlbmF0ZS5oIgorI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2lu
Y2x1ZGUgIlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTg3LDcgKzg3LDcgQEAgcHJv
dGVjdGVkOgogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5
cGUyPgogaW5saW5lIEpTVmFsdWUganNNYWtlTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIpCiB7Ci0gICAgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHQgPSB0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmlu
ZzIpOworICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0ID0gV1RGOjp0cnlNYWtlU3Ry
aW5nKHN0cmluZzEsIHN0cmluZzIpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4g
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOwogICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgcmVzdWx0KTsKQEAgLTk2LDcgKzk2LDcgQEAgaW5saW5lIEpTVmFsdWUganNNYWtl
Tm9udHJpdmlhbFN0cmluZyhFeAogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVu
YW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMz4KIGlubGluZSBKU1ZhbHVlIGpz
TWFrZU5vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdUeXBlMSBzdHJpbmcx
LCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczKQogewotICAgIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0ID0gdHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcy
LCBzdHJpbmczKTsKKyAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdCA9IFdURjo6dHJ5
TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczKTsKICAgICBpZiAoIXJlc3VsdCkK
ICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKICAgICByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKGV4ZWMsIHJlc3VsdCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgaW5s
aW5lIEpTVmFsdWUganNNYWtlTm9udHJpdmlhbFN0cmluZyhFeAogdGVtcGxhdGU8dHlwZW5hbWUg
U3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywg
dHlwZW5hbWUgU3RyaW5nVHlwZTQ+CiBpbmxpbmUgSlNWYWx1ZSBqc01ha2VOb250cml2aWFsU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3Ry
aW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCkKIHsKLSAgICBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdCA9IHRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3Ry
aW5nMiwgc3RyaW5nMywgc3RyaW5nNCk7CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1
bHQgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5n
NCk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJy
b3IoZXhlYyk7CiAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCByZXN1bHQpOwpA
QCAtMTE0LDcgKzExNCw3IEBAIGlubGluZSBKU1ZhbHVlIGpzTWFrZU5vbnRyaXZpYWxTdHJpbmco
RXgKIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwg
dHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJp
bmdUeXBlNT4KIGlubGluZSBKU1ZhbHVlIGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdU
eXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1KQog
ewotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0ID0gdHJ5TWFrZVN0cmluZyhzdHJp
bmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1KTsKKyAgICBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IHJlc3VsdCA9IFdURjo6dHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcy
LCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1KTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAg
cmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKICAgICByZXR1cm4ganNOb250cml2
aWFsU3RyaW5nKGV4ZWMsIHJlc3VsdCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgaW5saW5lIEpTVmFs
dWUganNNYWtlTm9udHJpdmlhbFN0cmluZyhFeAogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlw
ZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUg
U3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBTdHJpbmdUeXBlNj4K
IGlubGluZSBKU1ZhbHVlIGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBT
dHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJp
bmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBl
NiBzdHJpbmc2KQogewotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0ID0gdHJ5TWFr
ZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJp
bmc2KTsKKyAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdCA9IFdURjo6dHJ5TWFrZVN0
cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJpbmc2
KTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJv
cihleGVjKTsKICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIHJlc3VsdCk7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gNjk1OTMpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIlJlZ0V4cFBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgi
Ci0jaW5jbHVkZSAiU3RyaW5nQ29uY2F0ZW5hdGUuaCIKKyNpbmNsdWRlICJVU3RyaW5nQ29uY2F0
ZW5hdGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTMwNyw3ICszMDcsNyBAQCBKU09iamVjdCogY29uc3RydWN0UmVnRXhwKEV4ZWNTdGF0ZSog
ZXhlCiAKICAgICBSZWZQdHI8UmVnRXhwPiByZWdFeHAgPSBleGVjLT5nbG9iYWxEYXRhKCkucmVn
RXhwQ2FjaGUoKS0+bG9va3VwT3JDcmVhdGUocGF0dGVybiwgZmxhZ3MpOwogICAgIGlmICghcmVn
RXhwLT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVN5
bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiAi
LCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSkpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtYWtlVVN0cmluZygiSW52YWxpZCByZWd1bGFy
IGV4cHJlc3Npb246ICIsIHJlZ0V4cC0+ZXJyb3JNZXNzYWdlKCkpKSk7CiAgICAgcmV0dXJuIG5l
dyAoZXhlYykgUmVnRXhwT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwLnJlbGVhc2Uo
KSk7CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHJl
dmlzaW9uIDY5NTkzKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiTG9va3VwLmgiCiAj
aW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUu
aCIKLSNpbmNsdWRlICJTdHJpbmdDb25jYXRlbmF0ZS5oIgorI2luY2x1ZGUgIlVTdHJpbmdDb25j
YXRlbmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewpAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgUmVnRXhwT2JqZWN0OjptYXRjaChFeGVjU3RhdGUq
IGV4ZWMKIAogICAgIFVTdHJpbmcgaW5wdXQgPSAhZXhlYy0+YXJndW1lbnRDb3VudCgpID8gcmVn
RXhwQ29uc3RydWN0b3ItPmlucHV0KCkgOiBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KTsKICAgICBpZiAoaW5wdXQuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBj
cmVhdGVFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJObyBpbnB1dCB0byAiLCB0b1N0cmluZyhleGVj
KSwgIi4iKSkpOworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIG1h
a2VVU3RyaW5nKCJObyBpbnB1dCB0byAiLCB0b1N0cmluZyhleGVjKSwgIi4iKSkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA2OTU5MykKKysrIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1
ZGUgIlJlZ0V4cENhY2hlLmgiCisjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC05NCw3ICs5NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG8KICAgICB9CiAKICAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMs
IG1ha2VTdHJpbmcoIkludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiAiLCByZWdFeHAtPmVycm9y
TWVzc2FnZSgpKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5
bnRheEVycm9yKGV4ZWMsIG1ha2VVU3RyaW5nKCJJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjog
IiwgcmVnRXhwLT5lcnJvck1lc3NhZ2UoKSkpKTsKIAogICAgIGFzUmVnRXhwT2JqZWN0KHRoaXNW
YWx1ZSktPnNldFJlZ0V4cChyZWdFeHAucmVsZWFzZSgpKTsKICAgICBhc1JlZ0V4cE9iamVjdCh0
aGlzVmFsdWUpLT5zZXRMYXN0SW5kZXgoMCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ0NvbmNhdGVuYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdDb25jYXRlbmF0ZS5oCShyZXZpc2lvbiA2OTU5MykKKysrIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nQ29uY2F0ZW5hdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0MjggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIFN0cmluZ0NvbmNhdGVuYXRlX2gKLSNkZWZpbmUgU3RyaW5nQ29uY2F0ZW5hdGVfaAotCi0j
aW5jbHVkZSAiVVN0cmluZy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotdGVtcGxhdGU8dHlwZW5h
bWUgU3RyaW5nVHlwZT4KLWNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyIHsKLX07Ci0KLXRlbXBsYXRl
PD4KLWNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPGNoYXIqPiB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5n
VHlwZUFkYXB0ZXI8Y2hhcio+KGNoYXIqIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcigodW5z
aWduZWQgY2hhciopYnVmZmVyKQotICAgICAgICAsIG1fbGVuZ3RoKHN0cmxlbihidWZmZXIpKQot
ICAgIHsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGgoKSB7IHJldHVybiBtX2xlbmd0aDsg
fQotCi0gICAgdm9pZCB3cml0ZVRvKFVDaGFyKiBkZXN0aW5hdGlvbikKLSAgICB7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKQotICAgICAgICAgICAgZGVz
dGluYXRpb25baV0gPSBtX2J1ZmZlcltpXTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3Qg
dW5zaWduZWQgY2hhciogbV9idWZmZXI7Ci0gICAgdW5zaWduZWQgbV9sZW5ndGg7Ci19OwotCi10
ZW1wbGF0ZTw+Ci1jbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjb25zdCBjaGFyKj4gewotcHVibGlj
OgotICAgIFN0cmluZ1R5cGVBZGFwdGVyPGNvbnN0IGNoYXIqPihjb25zdCBjaGFyKiBidWZmZXIp
Ci0gICAgICAgIDogbV9idWZmZXIoKHVuc2lnbmVkIGNoYXIqKWJ1ZmZlcikKLSAgICAgICAgLCBt
X2xlbmd0aChzdHJsZW4oYnVmZmVyKSkKLSAgICB7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgbGVu
Z3RoKCkgeyByZXR1cm4gbV9sZW5ndGg7IH0KLQotICAgIHZvaWQgd3JpdGVUbyhVQ2hhciogZGVz
dGluYXRpb24pCi0gICAgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5n
dGg7ICsraSkKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gbV9idWZmZXJbaV07Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1fYnVmZmVyOwotICAgIHVu
c2lnbmVkIG1fbGVuZ3RoOwotfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgU3RyaW5nVHlwZUFkYXB0
ZXI8VVN0cmluZz4gewotcHVibGljOgotICAgIFN0cmluZ1R5cGVBZGFwdGVyPFVTdHJpbmc+KFVT
dHJpbmcmIHN0cmluZykKLSAgICAgICAgOiBtX2RhdGEoc3RyaW5nLmNoYXJhY3RlcnMoKSkKLSAg
ICAgICAgLCBtX2xlbmd0aChzdHJpbmcubGVuZ3RoKCkpCi0gICAgewotICAgIH0KLQotICAgIHVu
c2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0KLSAgICB2b2lkIHdyaXRlVG8o
VUNoYXIqIGRlc3RpbmF0aW9uKQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IG1fZGF0YVtp
XTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgVUNoYXIqIG1fZGF0YTsKLSAgICB1bnNp
Z25lZCBtX2xlbmd0aDsKLX07Ci0KLWlubGluZSB2b2lkIHN1bVdpdGhPdmVyZmxvdyh1bnNpZ25l
ZCYgdG90YWwsIHVuc2lnbmVkIGFkZGVuZCwgYm9vbCYgb3ZlcmZsb3cpCi17Ci0gICAgdW5zaWdu
ZWQgb2xkVG90YWwgPSB0b3RhbDsKLSAgICB0b3RhbCA9IG9sZFRvdGFsICsgYWRkZW5kOwotICAg
IGlmICh0b3RhbCA8IG9sZFRvdGFsKQotICAgICAgICBvdmVyZmxvdyA9IHRydWU7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMj4KLVBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJp
bmdUeXBlMiBzdHJpbmcyKQotewotICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBh
ZGFwdGVyMShzdHJpbmcxKTsKLSAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRh
cHRlcjIoc3RyaW5nMik7Ci0KLSAgICBVQ2hhciogYnVmZmVyOwotICAgIGJvb2wgb3ZlcmZsb3cg
PSBmYWxzZTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBhZGFwdGVyMS5sZW5ndGgoKTsKLSAgICBz
dW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyMi5sZW5ndGgoKSwgb3ZlcmZsb3cpOwotICAg
IGlmIChvdmVyZmxvdykKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiByZXN1bHRJbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5n
dGgsIGJ1ZmZlcik7Ci0gICAgaWYgKCFyZXN1bHRJbXBsKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIFVDaGFyKiByZXN1bHQgPSBidWZmZXI7Ci0gICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQp
OwotICAgIHJlc3VsdCArPSBhZGFwdGVyMS5sZW5ndGgoKTsKLSAgICBhZGFwdGVyMi53cml0ZVRv
KHJlc3VsdCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0SW1wbDsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBl
Mz4KLVBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJp
bmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczKQotewotICAgIFN0
cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShzdHJpbmcxKTsKLSAgICBTdHJp
bmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7Ci0gICAgU3RyaW5n
VHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTM+IGFkYXB0ZXIzKHN0cmluZzMpOwotCi0gICAgVUNoYXIq
IGJ1ZmZlciA9IDA7Ci0gICAgYm9vbCBvdmVyZmxvdyA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGxl
bmd0aCA9IGFkYXB0ZXIxLmxlbmd0aCgpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFk
YXB0ZXIyLmxlbmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwg
YWRhcHRlcjMubGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBpZiAob3ZlcmZsb3cpCi0gICAgICAg
IHJldHVybiAwOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmlu
Z0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAgIGlmICgh
cmVzdWx0SW1wbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBVQ2hhciogcmVzdWx0ID0gYnVm
ZmVyOwotICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKLSAgICByZXN1bHQgKz0gYWRhcHRl
cjEubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOwotICAgIHJlc3VsdCAr
PSBhZGFwdGVyMi5sZW5ndGgoKTsKLSAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7Ci0KLSAg
ICByZXR1cm4gcmVzdWx0SW1wbDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEs
IHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3Ry
aW5nVHlwZTQ+Ci1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlw
ZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3Ry
aW5nVHlwZTQgc3RyaW5nNCkKLXsKLSAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4g
YWRhcHRlcjEoc3RyaW5nMSk7Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFk
YXB0ZXIyKHN0cmluZzIpOwotICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFw
dGVyMyhzdHJpbmczKTsKLSAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRl
cjQoc3RyaW5nNCk7Ci0KLSAgICBVQ2hhciogYnVmZmVyOwotICAgIGJvb2wgb3ZlcmZsb3cgPSBm
YWxzZTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBhZGFwdGVyMS5sZW5ndGgoKTsKLSAgICBzdW1X
aXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyMi5sZW5ndGgoKSwgb3ZlcmZsb3cpOwotICAgIHN1
bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIzLmxlbmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAg
c3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjQubGVuZ3RoKCksIG92ZXJmbG93KTsKLSAg
ICBpZiAob3ZlcmZsb3cpCi0gICAgICAgIHJldHVybiAwOwotICAgIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVu
Z3RoLCBidWZmZXIpOwotICAgIGlmICghcmVzdWx0SW1wbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBVQ2hhciogcmVzdWx0ID0gYnVmZmVyOwotICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0
KTsKLSAgICByZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjIud3JpdGVU
byhyZXN1bHQpOwotICAgIHJlc3VsdCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKLSAgICBhZGFwdGVy
My53cml0ZVRvKHJlc3VsdCk7Ci0gICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOwotICAg
IGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsKLQotICAgIHJldHVybiByZXN1bHRJbXBsOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5
cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5n
VHlwZTU+Ci1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEg
c3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5n
VHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSkKLXsKLSAgICBTdHJpbmdUeXBlQWRh
cHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7Ci0gICAgU3RyaW5nVHlwZUFkYXB0
ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIpOwotICAgIFN0cmluZ1R5cGVBZGFwdGVy
PFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsKLSAgICBTdHJpbmdUeXBlQWRhcHRlcjxT
dHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3Ry
aW5nVHlwZTU+IGFkYXB0ZXI1KHN0cmluZzUpOwotCi0gICAgVUNoYXIqIGJ1ZmZlcjsKLSAgICBi
b29sIG92ZXJmbG93ID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gYWRhcHRlcjEubGVu
Z3RoKCk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjIubGVuZ3RoKCksIG92
ZXJmbG93KTsKLSAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyMy5sZW5ndGgoKSwg
b3ZlcmZsb3cpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI0Lmxlbmd0aCgp
LCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjUubGVuZ3Ro
KCksIG92ZXJmbG93KTsKLSAgICBpZiAob3ZlcmZsb3cpCi0gICAgICAgIHJldHVybiAwOwotICAg
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAgIGlmICghcmVzdWx0SW1wbCkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBVQ2hhciogcmVzdWx0ID0gYnVmZmVyOwotICAgIGFkYXB0
ZXIxLndyaXRlVG8ocmVzdWx0KTsKLSAgICByZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3RoKCk7Ci0g
ICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOwotICAgIHJlc3VsdCArPSBhZGFwdGVyMi5sZW5n
dGgoKTsKLSAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7Ci0gICAgcmVzdWx0ICs9IGFkYXB0
ZXIzLmxlbmd0aCgpOwotICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsKLSAgICByZXN1bHQg
Kz0gYWRhcHRlcjQubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjUud3JpdGVUbyhyZXN1bHQpOwotCi0g
ICAgcmV0dXJuIHJlc3VsdEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUx
LCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0
cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTY+Ci1Q
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwg
U3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3Ry
aW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNikKLXsKLSAgICBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7Ci0gICAgU3Ry
aW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIpOwotICAgIFN0cmlu
Z1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsKLSAgICBTdHJpbmdU
eXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7Ci0gICAgU3RyaW5nVHlw
ZUFkYXB0ZXI8U3RyaW5nVHlwZTU+IGFkYXB0ZXI1KHN0cmluZzUpOwotICAgIFN0cmluZ1R5cGVB
ZGFwdGVyPFN0cmluZ1R5cGU2PiBhZGFwdGVyNihzdHJpbmc2KTsKLQotICAgIFVDaGFyKiBidWZm
ZXI7Ci0gICAgYm9vbCBvdmVyZmxvdyA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFk
YXB0ZXIxLmxlbmd0aCgpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIyLmxl
bmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjMu
bGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVy
NC5sZW5ndGgoKSwgb3ZlcmZsb3cpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0
ZXI1Lmxlbmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRh
cHRlcjYubGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBpZiAob3ZlcmZsb3cpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0lt
cGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAgIGlmICghcmVz
dWx0SW1wbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBVQ2hhciogcmVzdWx0ID0gYnVmZmVy
OwotICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKLSAgICByZXN1bHQgKz0gYWRhcHRlcjEu
bGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOwotICAgIHJlc3VsdCArPSBh
ZGFwdGVyMi5sZW5ndGgoKTsKLSAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7Ci0gICAgcmVz
dWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOwotICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsK
LSAgICByZXN1bHQgKz0gYWRhcHRlcjQubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjUud3JpdGVUbyhy
ZXN1bHQpOwotICAgIHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKLSAgICBhZGFwdGVyNi53
cml0ZVRvKHJlc3VsdCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0SW1wbDsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJp
bmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBl
bmFtZSBTdHJpbmdUeXBlNiwgdHlwZW5hbWUgU3RyaW5nVHlwZTc+Ci1QYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3Ry
aW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlw
ZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNykKLXsK
LSAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7Ci0g
ICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIpOwotICAg
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsKLSAgICBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7Ci0gICAgU3Ry
aW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTU+IGFkYXB0ZXI1KHN0cmluZzUpOwotICAgIFN0cmlu
Z1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU2PiBhZGFwdGVyNihzdHJpbmc2KTsKLSAgICBTdHJpbmdU
eXBlQWRhcHRlcjxTdHJpbmdUeXBlNz4gYWRhcHRlcjcoc3RyaW5nNyk7Ci0KLSAgICBVQ2hhciog
YnVmZmVyOwotICAgIGJvb2wgb3ZlcmZsb3cgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBsZW5ndGgg
PSBhZGFwdGVyMS5sZW5ndGgoKTsKLSAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVy
Mi5sZW5ndGgoKSwgb3ZlcmZsb3cpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0
ZXIzLmxlbmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRh
cHRlcjQubGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBh
ZGFwdGVyNS5sZW5ndGgoKSwgb3ZlcmZsb3cpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgs
IGFkYXB0ZXI2Lmxlbmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0
aCwgYWRhcHRlcjcubGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBpZiAob3ZlcmZsb3cpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0
cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAgIGlm
ICghcmVzdWx0SW1wbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBVQ2hhciogcmVzdWx0ID0g
YnVmZmVyOwotICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKLSAgICByZXN1bHQgKz0gYWRh
cHRlcjEubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOwotICAgIHJlc3Vs
dCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKLSAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7Ci0g
ICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOwotICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVz
dWx0KTsKLSAgICByZXN1bHQgKz0gYWRhcHRlcjQubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjUud3Jp
dGVUbyhyZXN1bHQpOwotICAgIHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKLSAgICBhZGFw
dGVyNi53cml0ZVRvKHJlc3VsdCk7Ci0gICAgcmVzdWx0ICs9IGFkYXB0ZXI2Lmxlbmd0aCgpOwot
ICAgIGFkYXB0ZXI3LndyaXRlVG8ocmVzdWx0KTsKLQotICAgIHJldHVybiByZXN1bHRJbXBsOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIs
IHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3Ry
aW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNywgdHlw
ZW5hbWUgU3RyaW5nVHlwZTg+Ci1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmco
U3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3Ry
aW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlw
ZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNywgU3RyaW5nVHlwZTggc3RyaW5nOCkKLXsK
LSAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7Ci0g
ICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIpOwotICAg
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsKLSAgICBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7Ci0gICAgU3Ry
aW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTU+IGFkYXB0ZXI1KHN0cmluZzUpOwotICAgIFN0cmlu
Z1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU2PiBhZGFwdGVyNihzdHJpbmc2KTsKLSAgICBTdHJpbmdU
eXBlQWRhcHRlcjxTdHJpbmdUeXBlNz4gYWRhcHRlcjcoc3RyaW5nNyk7Ci0gICAgU3RyaW5nVHlw
ZUFkYXB0ZXI8U3RyaW5nVHlwZTg+IGFkYXB0ZXI4KHN0cmluZzgpOwotCi0gICAgVUNoYXIqIGJ1
ZmZlcjsKLSAgICBib29sIG92ZXJmbG93ID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0g
YWRhcHRlcjEubGVuZ3RoKCk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjIu
bGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVy
My5sZW5ndGgoKSwgb3ZlcmZsb3cpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0
ZXI0Lmxlbmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRh
cHRlcjUubGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBh
ZGFwdGVyNi5sZW5ndGgoKSwgb3ZlcmZsb3cpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgs
IGFkYXB0ZXI3Lmxlbmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0
aCwgYWRhcHRlcjgubGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBpZiAob3ZlcmZsb3cpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0
cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAgIGlm
ICghcmVzdWx0SW1wbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBVQ2hhciogcmVzdWx0ID0g
YnVmZmVyOwotICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKLSAgICByZXN1bHQgKz0gYWRh
cHRlcjEubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOwotICAgIHJlc3Vs
dCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKLSAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7Ci0g
ICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOwotICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVz
dWx0KTsKLSAgICByZXN1bHQgKz0gYWRhcHRlcjQubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjUud3Jp
dGVUbyhyZXN1bHQpOwotICAgIHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKLSAgICBhZGFw
dGVyNi53cml0ZVRvKHJlc3VsdCk7Ci0gICAgcmVzdWx0ICs9IGFkYXB0ZXI2Lmxlbmd0aCgpOwot
ICAgIGFkYXB0ZXI3LndyaXRlVG8ocmVzdWx0KTsKLSAgICByZXN1bHQgKz0gYWRhcHRlcjcubGVu
Z3RoKCk7Ci0gICAgYWRhcHRlcjgud3JpdGVUbyhyZXN1bHQpOwotCi0gICAgcmV0dXJuIHJlc3Vs
dEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJp
bmdUeXBlMj4KLVVTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdU
eXBlMiBzdHJpbmcyKQotewotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9
IHRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMik7Ci0gICAgaWYgKCFyZXN1bHRJbXBsKQot
ICAgICAgICBDUkFTSCgpOwotICAgIHJldHVybiByZXN1bHRJbXBsOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmlu
Z1R5cGUzPgotVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5
cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMpCi17Ci0gICAgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJp
bmczKTsKLSAgICBpZiAoIXJlc3VsdEltcGwpCi0gICAgICAgIENSQVNIKCk7Ci0gICAgcmV0dXJu
IHJlc3VsdEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFt
ZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0
PgotVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0
cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQpCi17Ci0gICAg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFrZVN0cmluZyhzdHJpbmcx
LCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0KTsKLSAgICBpZiAoIXJlc3VsdEltcGwpCi0gICAg
ICAgIENSQVNIKCk7Ci0gICAgcmV0dXJuIHJlc3VsdEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlw
ZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNT4KLVVTdHJpbmcg
bWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJp
bmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1
KQotewotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IHRyeU1ha2VTdHJp
bmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSk7Ci0gICAgaWYg
KCFyZXN1bHRJbXBsKQotICAgICAgICBDUkFTSCgpOwotICAgIHJldHVybiByZXN1bHRJbXBsOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIs
IHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3Ry
aW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2PgotVVN0cmluZyBtYWtlU3RyaW5nKFN0cmlu
Z1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMs
IFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0
cmluZzYpCi17Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFr
ZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJp
bmc2KTsKLSAgICBpZiAoIXJlc3VsdEltcGwpCi0gICAgICAgIENSQVNIKCk7Ci0gICAgcmV0dXJu
IHJlc3VsdEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFt
ZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0
LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTYsIHR5cGVuYW1lIFN0
cmluZ1R5cGU3PgotVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmlu
Z1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQs
IFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmluZ1R5cGU3IHN0
cmluZzcpCi17Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFr
ZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJp
bmc2LCBzdHJpbmc3KTsKLSAgICBpZiAoIXJlc3VsdEltcGwpCi0gICAgICAgIENSQVNIKCk7Ci0g
ICAgcmV0dXJuIHJlc3VsdEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUx
LCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0
cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTYsIHR5
cGVuYW1lIFN0cmluZ1R5cGU3LCB0eXBlbmFtZSBTdHJpbmdUeXBlOD4KLVVTdHJpbmcgbWFrZVN0
cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBl
MyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJp
bmdUeXBlNiBzdHJpbmc2LCBTdHJpbmdUeXBlNyBzdHJpbmc3LCBTdHJpbmdUeXBlOCBzdHJpbmc4
KQotewotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IHRyeU1ha2VTdHJp
bmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSwgc3RyaW5nNiwg
c3RyaW5nNywgc3RyaW5nOCk7Ci0gICAgaWYgKCFyZXN1bHRJbXBsKQotICAgICAgICBDUkFTSCgp
OwotICAgIHJldHVybiByZXN1bHRJbXBsOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2Vu
ZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmdDb25jYXRlbmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0NvbmNhdGVuYXRlLmgJ
KHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmdDb25jYXRlbmF0
ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFVTdHJpbmdDb25jYXRlbmF0ZV9oCisj
ZGVmaW5lIFVTdHJpbmdDb25jYXRlbmF0ZV9oCisKKyNpbmNsdWRlICJVU3RyaW5nLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPD4KK2NsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPEpTQzo6VVN0cmluZz4geworcHVi
bGljOgorICAgIFN0cmluZ1R5cGVBZGFwdGVyPEpTQzo6VVN0cmluZz4oSlNDOjpVU3RyaW5nJiBz
dHJpbmcpCisgICAgICAgIDogbV9kYXRhKHN0cmluZy5jaGFyYWN0ZXJzKCkpCisgICAgICAgICwg
bV9sZW5ndGgoc3RyaW5nLmxlbmd0aCgpKQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBs
ZW5ndGgoKSB7IHJldHVybiBtX2xlbmd0aDsgfQorCisgICAgdm9pZCB3cml0ZVRvKFVDaGFyKiBk
ZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xl
bmd0aDsgKytpKQorICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSBtX2RhdGFbaV07CisgICAg
fQorCitwcml2YXRlOgorICAgIGNvbnN0IFVDaGFyKiBtX2RhdGE7CisgICAgdW5zaWduZWQgbV9s
ZW5ndGg7Cit9OworCit9OyAvLyBuYW1lc3BhY2UgV1RGCisKK25hbWVzcGFjZSBKU0MgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTI+CitVU3Ry
aW5nIG1ha2VVU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIp
Cit7CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gV1RGOjp0cnlNYWtl
U3RyaW5nKHN0cmluZzEsIHN0cmluZzIpOworICAgIGlmICghcmVzdWx0SW1wbCkKKyAgICAgICAg
Q1JBU0goKTsKKyAgICByZXR1cm4gcmVzdWx0SW1wbDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
U3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMz4K
K1VTdHJpbmcgbWFrZVVTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3Ry
aW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMykKK3sKKyAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IHJlc3VsdEltcGwgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5n
Myk7CisgICAgaWYgKCFyZXN1bHRJbXBsKQorICAgICAgICBDUkFTSCgpOworICAgIHJldHVybiBy
ZXN1bHRJbXBsOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUg
U3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlND4K
K1VTdHJpbmcgbWFrZVVTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3Ry
aW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCkKK3sKKyAgICBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3Ry
aW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCk7CisgICAgaWYgKCFyZXN1bHRJbXBsKQor
ICAgICAgICBDUkFTSCgpOworICAgIHJldHVybiByZXN1bHRJbXBsOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmlu
Z1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTU+CitVU3Ry
aW5nIG1ha2VVU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIs
IFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0
cmluZzUpCit7CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gV1RGOjp0
cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIsIHN0cmluZzMsIHN0cmluZzQsIHN0cmluZzUp
OworICAgIGlmICghcmVzdWx0SW1wbCkKKyAgICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gcmVz
dWx0SW1wbDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0
cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5
cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBTdHJpbmdUeXBlNj4KK1VTdHJpbmcgbWFrZVVT
dHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlw
ZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3Ry
aW5nVHlwZTYgc3RyaW5nNikKK3sKKyAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdElt
cGwgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5n
NCwgc3RyaW5nNSwgc3RyaW5nNik7CisgICAgaWYgKCFyZXN1bHRJbXBsKQorICAgICAgICBDUkFT
SCgpOworICAgIHJldHVybiByZXN1bHRJbXBsOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJp
bmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBl
bmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5
cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNz4KK1VTdHJpbmcgbWFrZVVTdHJpbmcoU3RyaW5nVHlw
ZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3Ry
aW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5n
NiwgU3RyaW5nVHlwZTcgc3RyaW5nNykKK3sKKyAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJl
c3VsdEltcGwgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywg
c3RyaW5nNCwgc3RyaW5nNSwgc3RyaW5nNiwgc3RyaW5nNyk7CisgICAgaWYgKCFyZXN1bHRJbXBs
KQorICAgICAgICBDUkFTSCgpOworICAgIHJldHVybiByZXN1bHRJbXBsOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0
cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5
cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNywgdHlwZW5hbWUgU3RyaW5n
VHlwZTg+CitVU3RyaW5nIG1ha2VVU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5
cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0
cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmluZ1R5cGU3IHN0cmlu
ZzcsIFN0cmluZ1R5cGU4IHN0cmluZzgpCit7CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBy
ZXN1bHRJbXBsID0gV1RGOjp0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIsIHN0cmluZzMs
IHN0cmluZzQsIHN0cmluZzUsIHN0cmluZzYsIHN0cmluZzcsIHN0cmluZzgpOworICAgIGlmICgh
cmVzdWx0SW1wbCkKKyAgICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gcmVzdWx0SW1wbDsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZgpJbmRleDogd3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCShy
ZXZpc2lvbiA2OTU5MykJKGZyb20gcnVudGltZS9TdHJpbmdDb25jYXRlbmF0ZS5oOjY5NTkzKQor
Kysgd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAkod29ya2luZyBjb3B5KQpJbmRleDogSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCShyZXZpc2lvbiA2OTU5
MykKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpZm5kZWYgU3RyaW5nQ29uY2F0ZW5hdGVfaAog
I2RlZmluZSBTdHJpbmdDb25jYXRlbmF0ZV9oCiAKLSNpbmNsdWRlICJVU3RyaW5nLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNl
IFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGU+CiBjbGFzcyBTdHJpbmdUeXBl
QWRhcHRlciB7CkBAIC03OSw5ICs3OSw5IEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZTw+Ci1j
bGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxVU3RyaW5nPiB7CitjbGFzcyBTdHJpbmdUeXBlQWRhcHRl
cjxTdHJpbmc+IHsKIHB1YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcjxVU3RyaW5nPihVU3Ry
aW5nJiBzdHJpbmcpCisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nPihTdHJpbmcmIHN0cmlu
ZykKICAgICAgICAgOiBtX2RhdGEoc3RyaW5nLmNoYXJhY3RlcnMoKSkKICAgICAgICAgLCBtX2xl
bmd0aChzdHJpbmcubGVuZ3RoKCkpCiAgICAgewpAQCAtMzYxLDcgKzM2MSw3IEBAIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHIKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
U3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyPgotVVN0cmluZyBtYWtlU3RyaW5nKFN0
cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIpCitTdHJpbmcgbWFrZVN0cmlu
ZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyKQogewogICAgIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IHRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3Ry
aW5nMik7CiAgICAgaWYgKCFyZXN1bHRJbXBsKQpAQCAtMzcwLDcgKzM3MCw3IEBAIFVTdHJpbmcg
bWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCAKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
U3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMz4K
LVVTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJp
bmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczKQorU3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlwZTEg
c3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMykKIHsKICAg
ICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSB0cnlNYWtlU3RyaW5nKHN0cmlu
ZzEsIHN0cmluZzIsIHN0cmluZzMpOwogICAgIGlmICghcmVzdWx0SW1wbCkKQEAgLTM3OSw3ICsz
NzksNyBAQCBVU3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5h
bWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0PgotVVN0cmluZyBtYWtlU3RyaW5n
KFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0
cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQpCitTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBl
MSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJp
bmdUeXBlNCBzdHJpbmc0KQogewogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1w
bCA9IHRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCk7CiAg
ICAgaWYgKCFyZXN1bHRJbXBsKQpAQCAtMzg4LDcgKzM4OCw3IEBAIFVTdHJpbmcgbWFrZVN0cmlu
ZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCAKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlw
ZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUg
U3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1PgotVVN0cmluZyBtYWtlU3RyaW5nKFN0
cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmlu
ZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUpCitTdHJpbmcgbWFr
ZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdU
eXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1KQog
ewogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IHRyeU1ha2VTdHJpbmco
c3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSk7CiAgICAgaWYgKCFy
ZXN1bHRJbXBsKQpAQCAtMzk3LDcgKzM5Nyw3IEBAIFVTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdU
eXBlMSBzdHJpbmcxLCAKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVu
YW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlw
ZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBTdHJpbmdUeXBlNj4KLVVTdHJpbmcg
bWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJp
bmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1
LCBTdHJpbmdUeXBlNiBzdHJpbmc2KQorU3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3Ry
aW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlw
ZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNikKIHsK
ICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSB0cnlNYWtlU3RyaW5nKHN0
cmluZzEsIHN0cmluZzIsIHN0cmluZzMsIHN0cmluZzQsIHN0cmluZzUsIHN0cmluZzYpOwogICAg
IGlmICghcmVzdWx0SW1wbCkKQEAgLTQwNiw3ICs0MDYsNyBAQCBVU3RyaW5nIG1ha2VTdHJpbmco
U3RyaW5nVHlwZTEgc3RyaW5nMSwgCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUx
LCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0
cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTYsIHR5
cGVuYW1lIFN0cmluZ1R5cGU3PgotVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmlu
ZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0
IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmlu
Z1R5cGU3IHN0cmluZzcpCitTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBT
dHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJp
bmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2LCBTdHJpbmdUeXBl
NyBzdHJpbmc3KQogewogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IHRy
eU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSwg
c3RyaW5nNiwgc3RyaW5nNyk7CiAgICAgaWYgKCFyZXN1bHRJbXBsKQpAQCAtNDE1LDcgKzQxNSw3
IEBAIFVTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCAKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBT
dHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0
eXBlbmFtZSBTdHJpbmdUeXBlNiwgdHlwZW5hbWUgU3RyaW5nVHlwZTcsIHR5cGVuYW1lIFN0cmlu
Z1R5cGU4PgotVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5
cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0
cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmluZ1R5cGU3IHN0cmlu
ZzcsIFN0cmluZ1R5cGU4IHN0cmluZzgpCitTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBz
dHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdU
eXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2LCBT
dHJpbmdUeXBlNyBzdHJpbmc3LCBTdHJpbmdUeXBlOCBzdHJpbmc4KQogewogICAgIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IHRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5n
Miwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSwgc3RyaW5nNiwgc3RyaW5nNywgc3RyaW5nOCk7
CiAgICAgaWYgKCFyZXN1bHRJbXBsKQpAQCAtNDIzLDYgKzQyMyw2IEBAIFVTdHJpbmcgbWFrZVN0
cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCAKICAgICByZXR1cm4gcmVzdWx0SW1wbDsKIH0KIAot
fSAvLyBuYW1lc3BhY2UgSlNDCit9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70596</attachid>
            <date>2010-10-13 03:39:11 -0700</date>
            <delta_ts>2010-10-13 07:19:26 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>StringCat.diff</filename>
            <type>text/plain</type>
            <size>73086</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5NjQ3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTAtMTAtMTMgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzU4NAor
CisgICAgICAgIE1vdmUgcnVudGltZS9TdHJpbmdDb25jYXRlbmF0ZS5oIHRvIHd0Zi90ZXh0LCBt
YWtlIGl0IHdvcmsgZm9yIFN0cmluZ3MgdG9vLgorICAgICAgICBBZGQgYSBzcGVjaWFsIHJ1bnRp
bWUvVVN0cmluZ0NvbmNhdGVuYXRlLmggY2xhc3MgdGhhdCBpbmhlcml0cyBmcm9tIFN0cmluZ0Nv
bmNhdGVuYXRlLCBhbmQgZXh0ZW5kcyBpdCBmb3IgdXNlIHdpdGggVVN0cmluZy4KKyAgICAgICAg
RXhhY3RseSB0aGUgc2FtZSBkZXNpZ24gdGhhdCBoYXMgYmVlbiBmb2xsb3dlZCB3aGlsZSByZWZh
Y3RvcmluZyBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgIFRoZSBVU3RyaW5nIHZhcmlhbnRzIGNh
biBhbGwgYmUgcmVtb3ZlZCBhcyBzb29uIGFzIFdURjo6U3RyaW5nICYgSlNDOjpVU3RyaW5nIGNv
bnZlcmdlLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCB3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oIGFuZCBydW50aW1lL1VTdHJpbmdDb25jYXRlbmF0ZS5oLgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6IERpdHRvLgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvajogRGl0dG8uCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAg
ICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDogcy9tYWtlU3RyaW5nL21ha2VVU3RyaW5nLwor
ICAgICAgICAoSlNDOjplc2NhcGVRdW90ZXMpOgorICAgICAgICAoSlNDOjp2YWx1ZVRvU291cmNl
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6Y29uc3RhbnROYW1lKToKKyAgICAgICAgKEpTQzo6aWRO
YW1lKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpyZWdpc3Rlck5hbWUpOgorICAgICAgICAo
SlNDOjpyZWdleHBUb1NvdXJjZVN0cmluZyk6CisgICAgICAgIChKU0M6OnJlZ2V4cE5hbWUpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOiBEaXR0by4KKyAgICAgICAg
KEpTQzo6c3Vic3RpdHV0ZSk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXIuY3BwOiBEaXR0
by4KKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OmNyZWF0ZUNhbGxJZGVudGlmaWVyKToKKyAgICAg
ICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOiBEaXR0by4KKyAgICAgICAgKEpTQzo6
Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUVycm9y
TWVzc2FnZSk6CisgICAgICAgIChKU0M6OmNyZWF0ZUludmFsaWRQYXJhbUVycm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwOiBEaXR0by4KKyAgICAgICAgKEpTQzo6aW5zZXJ0U2VtaWNvbG9uSWZOZWVkZWQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6IERpdHRvLgorICAgICAgICAoSlNDOjpT
dHJpbmdpZmllcjo6aW5kZW50KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nQnVpbGRlci5o
OgorICAgICAgICAoSlNDOjpqc01ha2VOb250cml2aWFsU3RyaW5nKToKKyAgICAgICAgKiBydW50
aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcDogRGl0dG8uCisgICAgICAgIChKU0M6OmNvbnN0cnVj
dFJlZ0V4cCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuY3BwOiBEaXR0by4KKyAg
ICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjptYXRjaCk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwOiBEaXR0by4KKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jQ29t
cGlsZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25jYXRlbmF0ZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHJ1bnRpbWUvVVN0cmluZ0NvbmNhdGVuYXRlLmg6IEFkZGVkLiBPbmx5IGNvbnRh
aW5zIHRoZSBTdHJpbmdUeXBlQWRhcHRlcjxKU0M6OlVTdHJpbmc+IGNvZGUgYW5kIHRoZSBtYWtl
VVN0cmluZyB2YXJpYW50cywgdGhlIHJlc3QgbGl2ZXMgaW4gd3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaAorICAgICAgICAoSlNDOjptYWtlVVN0cmluZyk6CisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaDogQ29waWVkIGZyb20gcnVudGltZS9TdHJpbmdDb25jYXRlbmF0
ZS5oLgorICAgICAgICAoV1RGOjptYWtlU3RyaW5nKToKKwogMjAxMC0xMC0xMiAgR2F2aW4gQmFy
cmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgV2luZG93cyBidWls
ZCBmaXguCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNjk1OTQpCisrKyBKYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMzg4LDEwICszODgs
OCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Njb3BlQ2hhaW5NYXJrLmggXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdz
LmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaCBcCi0JSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHBcCi0JSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oXAotCUphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nQnVpbGRlci5oIFwKLQlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbmNh
dGVuYXRlLmggXAorCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24u
Y3BwIFwKKwlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmggXAog
CUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwIFwKIAlKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmggXAogCUphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBcCkBAIC00MTIsNiArNDEwLDcgQEAgamF2YXNjcmlwdGNv
cmVfc291cmNlcyArPSBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcCBcCiAJ
SmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmggXAogCUphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVVN0cmluZ0J1aWxkZXIuaCBcCisJSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nQ29u
Y2F0ZW5hdGUuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaCBcCiAJSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NQdHIuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrUmFuZG9tLmggXApAQCAtNTEwLDYgKzUwOSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJj
ZXMgKz0gXAogCUphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaCBcCiAJSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nQnVmZmVyLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaCBcCisJSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSGFzaC5oIFwKIAlKYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsQmFzZS5oIFwKIAlKYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5
cGkJKHJldmlzaW9uIDY5NTk0KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lw
aQkod29ya2luZyBjb3B5KQpAQCAtMzQ3LDYgKzM0Nyw3IEBACiAgICAgICAgICAgICAncnVudGlt
ZS9VU3RyaW5nLmNwcCcsCiAgICAgICAgICAgICAncnVudGltZS9VU3RyaW5nLmgnLAogICAgICAg
ICAgICAgJ3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaCcsCisgICAgICAgICAgICAncnVudGltZS9V
U3RyaW5nQ29uY2F0ZW5hdGUuaCcsCiAgICAgICAgICAgICAncnVudGltZS9XZWFrUmFuZG9tLmgn
LAogICAgICAgICAgICAgJ3d0Zi9BbHdheXNJbmxpbmUuaCcsCiAgICAgICAgICAgICAnd3RmL0FT
Q0lJQ1R5cGUuaCcsCkBAIC00NTMsNiArNDU0LDcgQEAKICAgICAgICAgICAgICd3dGYvdGV4dC9D
U3RyaW5nLmgnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oJywKICAgICAg
ICAgICAgICd3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgnLAorICAgICAgICAgICAgJ3d0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmgnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0L1N0cmluZ0hhc2gu
aCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAnLAogICAgICAgICAgICAg
J3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCcsCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDY5NTk0KQorKysgSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI1Nyw2ICsxMjU3LDEwIEBACiAJCQkJPg0KIAkJCTwv
RmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcVVN0cmlu
Z0NvbmNhdGVuYXRlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFVTdHJpbmdJbXBsLmgiDQogCQkJCT4NCiAJCQk8L0Zp
bGU+DQpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9XVEYvV1RGLnZjcHJvagkocmV2aXNpb24gNjk1OTQpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTYxNyw2
ICs2MTcsMTAgQEAKICAJCQk+DQogIAkJPC9GaWxlPg0KICAJCTxGaWxlDQorIAkJCVJlbGF0aXZl
UGF0aD0iLi5cLi5cd3RmXHRleHRcU3RyaW5nQ29uY2F0ZW5hdGUuaCINCisgCQkJPg0KKyAJCTwv
RmlsZT4NCisgCQk8RmlsZQ0KICAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0Zlx0ZXh0XFN0cmlu
Z0hhc2guaCINCiAgCQkJPg0KICAJCTwvRmlsZT4NCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDY5NTk0KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogCQkwODE0Njk0
OTEyNjQzNzg1MDBERkY5MzUgLyogU3RyaW5nQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxNDY5NDgxMjY0Mzc1RTAwREZGOTM1IC8qIFN0
cmluZ0J1aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwODhGQTVCQjBFRjc2RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEZBNUI5MEVGNzZE
NDMwMDU3OEU2RiAvKiBSYW5kb21OdW1iZXIuY3BwICovOyB9OwogCQkwODhGQTVCQzBFRjc2RDQz
MDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODhGQTVCQTBFRjc2RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDhD
QUJCQTYxMjY1QUIzOTAwQjIwNkNFIC8qIFN0cmluZ0NvbmNhdGVuYXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODk2QzI5RTEyNjVBQjA5MDBCMUNE
RDMgLyogU3RyaW5nQ29uY2F0ZW5hdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwOEREQTVDMTEyNjQ2MzE3MDA3NTE3MzIgLyogVVN0cmluZ0J1
aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
RERBNUJCMTI2NDVGMUQwMDc1MTczMiAvKiBVU3RyaW5nQnVpbGRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4RTI3OUU5MEVGODNCMTAwMDdE
QjUyMyAvKiBSYW5kb21OdW1iZXJTZWVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwOEUyNzlFODBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVtYmVy
U2VlZC5oICovOyB9OwogCQkwQjMzMEMyNzBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjMzMEMy
NjBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgKi87IH07CkBAIC0yMjQsNyArMjI1
LDYgQEAKIAkJODZBOTBFRDAwRUU3RDUxRjAwQUIzNTBEIC8qIEpJVEFyaXRobWV0aWMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBOTBFQ0YwRUU3
RDUxRjAwQUIzNTBEIC8qIEpJVEFyaXRobWV0aWMuY3BwICovOyB9OwogCQk4NkFERDE0NTBGRERF
QTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fz
c2VtYmxlci5oICovOyB9OwogCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3Nl
bWJsZXJBUk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLzsg
fTsKLQkJODZCNkRBMDIxMjEzMkI5QTAwMEQzMTZGIC8qIFN0cmluZ0NvbmNhdGVuYXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI2REEwMTEyMTMy
QjlBMDAwRDMxNkYgLyogU3RyaW5nQ29uY2F0ZW5hdGUuaCAqLzsgfTsKIAkJODZCOTlBQjgxMTdF
MzkxRTAwREY1QTkwIC8qIFJvcGVJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUI2MTE3RTM5MUUwMERGNUE5MCAvKiBSb3BlSW1wbC5j
cHAgKi87IH07CiAJCTg2Qjk5QUI5MTE3RTM5MUUwMERGNUE5MCAvKiBSb3BlSW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCOTlBQjcxMTdFMzkx
RTAwREY1QTkwIC8qIFJvcGVJbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODZCOTlBRTMxMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCOTlB
RTExMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02MzMsNiArNjMzLDggQEAKIAkJMDgxNDY5
NDgxMjY0Mzc1RTAwREZGOTM1IC8qIFN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gU3RyaW5nQnVpbGRlci5oOyBwYXRoID0gdGV4dC9TdHJpbmdCdWlsZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEZBNUI5MEVGNzZENDMwMDU3OEU2
RiAvKiBSYW5kb21OdW1iZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmFuZG9tTnVtYmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4RkE1
QkEwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSYW5kb21OdW1iZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDg5NkMyOUIxMjY1QUFGNjAwQjFDREQzIC8qIFVTdHJpbmdDb25jYXRlbmF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVU3RyaW5nQ29uY2F0ZW5hdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDg5NkMyOUUxMjY1QUIwOTAwQjFDREQzIC8qIFN0cmlu
Z0NvbmNhdGVuYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0cmluZ0Nv
bmNhdGVuYXRlLmg7IHBhdGggPSB0ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA4RERBNUJCMTI2NDVGMUQwMDc1MTczMiAvKiBVU3RyaW5nQnVp
bGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVU3RyaW5nQnVpbGRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEUyNzlFODBFRjgzQjEwMDA3REI1MjMg
LyogUmFuZG9tTnVtYmVyU2VlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
YW5kb21OdW1iZXJTZWVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCMzMwQzI2
MEYzOEM2MjMwMDY5MkRFMyAvKiBUeXBlVHJhaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFR5cGVUcmFpdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODMwLDcgKzgzMiw2IEBACiAJCTg2QTkwRUNGMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRB
cml0aG1ldGljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEFy
aXRobWV0aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkFERDE0MzBGRERF
QTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVJNdjdBc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk4NkI2REEwMTEyMTMyQjlBMDAwRDMxNkYgLyogU3RyaW5n
Q29uY2F0ZW5hdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQ29u
Y2F0ZW5hdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCOTlBQjYxMTdFMzkx
RTAwREY1QTkwIC8qIFJvcGVJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJvcGVJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCOTlB
QjcxMTdFMzkxRTAwREY1QTkwIC8qIFJvcGVJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJvcGVJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2Qjk5
QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gU3RyaW5nQnVmZmVyLmg7IHBhdGggPSB0ZXh0L1N0cmluZ0J1ZmZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc5NSw3ICsxNzk2LDYgQEAKIAkJCQk3
RTJDNkM5ODBEMzFDNkI2MDAyRDQ0RTIgLyogU2NvcGVDaGFpbk1hcmsuaCAqLywKIAkJCQk5MzMw
M0ZFODBFNkE3MkI1MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmNwcCAqLywKIAkJCQk5MzMwM0ZF
QTBFNkE3MkMwMDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggKi8sCi0JCQkJODZCNkRBMDExMjEz
MkI5QTAwMEQzMTZGIC8qIFN0cmluZ0NvbmNhdGVuYXRlLmggKi8sCiAJCQkJQkMxOEMzQzAwRTE2
RUUzMzAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzE4QzNDMTBF
MTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nQ29uc3RydWN0b3IuaCAqLywKIAkJCQlCQzE4QzNDMjBF
MTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nT2JqZWN0LmNwcCAqLywKQEAgLTE4MTcsNiArMTgxNyw3
IEBACiAJCQkJRjY5MkE4ODUwMjU1NTk3RDAxRkY2MEY3IC8qIFVTdHJpbmcuY3BwICovLAogCQkJ
CUY2OTJBODg2MDI1NTU5N0QwMUZGNjBGNyAvKiBVU3RyaW5nLmggKi8sCiAJCQkJMDhEREE1QkIx
MjY0NUYxRDAwNzUxNzMyIC8qIFVTdHJpbmdCdWlsZGVyLmggKi8sCisJCQkJMDg5NkMyOUIxMjY1
QUFGNjAwQjFDREQzIC8qIFVTdHJpbmdDb25jYXRlbmF0ZS5oICovLAogCQkJCTE0QkZDRTY4MTBD
REIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLywKIAkJCQkxNDAzNURCMDEwREJGQjJBMDBG
RkZGRTcgLyogV2Vha0dDUHRyLmggKi8sCiAJCQkJMTQyMEJFN0ExMEFBNkREQjAwRjQ1NUQyIC8q
IFdlYWtSYW5kb20uaCAqLywKQEAgLTE4MzcsNiArMTgzOCw3IEBACiAJCQkJODY1NjU3NDExMTVC
RTNEQTAwMjkxRjQwIC8qIENTdHJpbmcuaCAqLywKIAkJCQk4NkI5OUFFMTExN0U1NzgxMDBERjVB
OTAgLyogU3RyaW5nQnVmZmVyLmggKi8sCiAJCQkJMDgxNDY5NDgxMjY0Mzc1RTAwREZGOTM1IC8q
IFN0cmluZ0J1aWxkZXIuaCAqLywKKwkJCQkwODk2QzI5RTEyNjVBQjA5MDBCMUNERDMgLyogU3Ry
aW5nQ29uY2F0ZW5hdGUuaCAqLywKIAkJCQk4NjhCRkEwNTExN0NFRkQxMDBCOTA4QjEgLyogU3Ry
aW5nSGFzaC5oICovLAogCQkJCTg2OEJGQTA2MTE3Q0VGRDEwMEI5MDhCMSAvKiBTdHJpbmdJbXBs
LmNwcCAqLywKIAkJCQk4NjhCRkEwNzExN0NFRkQxMDBCOTA4QjEgLyogU3RyaW5nSW1wbC5oICov
LApAQCAtMjI2MCw2ICsyMjYyLDcgQEAKIAkJCQlGRTFCNDQ3QTBFQ0NENzNCMDA0RjRERDEgLyog
U3RkTGliRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkI5OUFFMzExN0U1NzgxMDBERjVB
OTAgLyogU3RyaW5nQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODE0Njk0OTEyNjQzNzg1
MDBERkY5MzUgLyogU3RyaW5nQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDhDQUJCQTYx
MjY1QUIzOTAwQjIwNkNFIC8qIFN0cmluZ0NvbmNhdGVuYXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQ2NjBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDY3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJpbmdFeHRyYXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2OEJGQTBEMTE3Q0VGRDEwMEI5MDhCMSAvKiBTdHJpbmdIYXNo
LmggaW4gSGVhZGVycyAqLywKQEAgLTIzMTIsNyArMjMxNSw2IEBACiAJCQkJREQyNzI0NjkxMjA4
RDFGRjAwRjlBQkU3IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCURERTgyQUQ4MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODZGMzg4NTkxMjExMzBDQTAwN0E3Q0UzIC8qIEF0b21pY1N0cmluZ0hhc2guaCBpbiBI
ZWFkZXJzICovLAotCQkJCTg2QjZEQTAyMTIxMzJCOUEwMDBEMzE2RiAvKiBTdHJpbmdDb25jYXRl
bmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYyQUY0QjYxMjIzOUM3QjAwMjRFNUI4IC8qIERl
Y2ltYWxOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkJFNjk2MTIyNTYwRTgwMDMwOUU5
RCAvKiBQYXNzT3duQXJyYXlQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkJFNjk4MTIyNTYx
RDIwMDMwOUU5RCAvKiBPd25BcnJheVB0ckNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDY5NTkzKQorKysgSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0YXRpY1Nj
b3BlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgotI2luY2x1ZGUgIlN0cmluZ0NvbmNh
dGVuYXRlLmgiCisjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVkZSA8c3Rk
aW8uaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKQEAgLTUzLDcgKzUzLDcgQEAg
c3RhdGljIFVTdHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFVTdHJpbgogICAgIFVTdHJpbmcgcmVz
dWx0ID0gc3RyOwogICAgIHNpemVfdCBwb3MgPSAwOwogICAgIHdoaWxlICgocG9zID0gcmVzdWx0
LmZpbmQoJ1wiJywgcG9zKSkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgcmVzdWx0ID0gbWFrZVN0
cmluZyhyZXN1bHQuc3Vic3RyaW5nU2hhcmluZ0ltcGwoMCwgcG9zKSwgIlwiXFxcIlwiIiwgcmVz
dWx0LnN1YnN0cmluZ1NoYXJpbmdJbXBsKHBvcyArIDEpKTsKKyAgICAgICAgcmVzdWx0ID0gbWFr
ZVVTdHJpbmcocmVzdWx0LnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIHBvcyksICJcIlxcXCJcIiIs
IHJlc3VsdC5zdWJzdHJpbmdTaGFyaW5nSW1wbChwb3MgKyAxKSk7CiAgICAgICAgIHBvcyArPSA0
OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjUsMTkgKzY1LDE5IEBAIHN0YXRpYyBV
U3RyaW5nIHZhbHVlVG9Tb3VyY2VTdHJpbmcoRXhlY1MKICAgICAgICAgcmV0dXJuICIwIjsKIAog
ICAgIGlmICh2YWwuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlwiIiwg
ZXNjYXBlUXVvdGVzKHZhbC50b1N0cmluZyhleGVjKSksICJcIiIpOworICAgICAgICByZXR1cm4g
bWFrZVVTdHJpbmcoIlwiIiwgZXNjYXBlUXVvdGVzKHZhbC50b1N0cmluZyhleGVjKSksICJcIiIp
OwogCiAgICAgcmV0dXJuIHZhbC50b1N0cmluZyhleGVjKTsKIH0KIAogc3RhdGljIENTdHJpbmcg
Y29uc3RhbnROYW1lKEV4ZWNTdGF0ZSogZXhlYywgaW50IGssIEpTVmFsdWUgdmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIG1ha2VTdHJpbmcodmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCB2YWx1ZSksICIo
QGsiLCBVU3RyaW5nOjpudW1iZXIoayAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSwgIiki
KS51dGY4KCk7CisgICAgcmV0dXJuIG1ha2VVU3RyaW5nKHZhbHVlVG9Tb3VyY2VTdHJpbmcoZXhl
YywgdmFsdWUpLCAiKEBrIiwgVVN0cmluZzo6bnVtYmVyKGsgLSBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCksICIpIikudXRmOCgpOwogfQogCiBzdGF0aWMgQ1N0cmluZyBpZE5hbWUoaW50IGlk
MCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoaWRl
bnQudXN0cmluZygpLCAiKEBpZCIsIFVTdHJpbmc6Om51bWJlcihpZDApLCAiKSIpLnV0ZjgoKTsK
KyAgICByZXR1cm4gbWFrZVVTdHJpbmcoaWRlbnQudXN0cmluZygpLCAiKEBpZCIsIFVTdHJpbmc6
Om51bWJlcihpZDApLCAiKSIpLnV0ZjgoKTsKIH0KIAogQ1N0cmluZyBDb2RlQmxvY2s6OnJlZ2lz
dGVyTmFtZShFeGVjU3RhdGUqIGV4ZWMsIGludCByKSBjb25zdApAQCAtODgsNyArODgsNyBAQCBD
U3RyaW5nIENvZGVCbG9jazo6cmVnaXN0ZXJOYW1lKEV4ZWNTdGF0CiAgICAgaWYgKGlzQ29uc3Rh
bnRSZWdpc3RlckluZGV4KHIpKQogICAgICAgICByZXR1cm4gY29uc3RhbnROYW1lKGV4ZWMsIHIs
IGdldENvbnN0YW50KHIpKTsKIAotICAgIHJldHVybiBtYWtlU3RyaW5nKCJyIiwgVVN0cmluZzo6
bnVtYmVyKHIpKS51dGY4KCk7CisgICAgcmV0dXJuIG1ha2VVU3RyaW5nKCJyIiwgVVN0cmluZzo6
bnVtYmVyKHIpKS51dGY4KCk7CiB9CiAKIHN0YXRpYyBVU3RyaW5nIHJlZ2V4cFRvU291cmNlU3Ry
aW5nKFJlZ0V4cCogcmVnRXhwKQpAQCAtMTAyLDEyICsxMDIsMTIgQEAgc3RhdGljIFVTdHJpbmcg
cmVnZXhwVG9Tb3VyY2VTdHJpbmcoUmVnRQogICAgIGlmIChyZWdFeHAtPm11bHRpbGluZSgpKQog
ICAgICAgICBwb3N0Zml4W2luZGV4XSA9ICdtJzsKIAotICAgIHJldHVybiBtYWtlU3RyaW5nKCIv
IiwgcmVnRXhwLT5wYXR0ZXJuKCksIHBvc3RmaXgpOworICAgIHJldHVybiBtYWtlVVN0cmluZygi
LyIsIHJlZ0V4cC0+cGF0dGVybigpLCBwb3N0Zml4KTsKIH0KIAogc3RhdGljIENTdHJpbmcgcmVn
ZXhwTmFtZShpbnQgcmUsIFJlZ0V4cCogcmVnZXhwKQogewotICAgIHJldHVybiBtYWtlU3RyaW5n
KHJlZ2V4cFRvU291cmNlU3RyaW5nKHJlZ2V4cCksICIoQHJlIiwgVVN0cmluZzo6bnVtYmVyKHJl
KSwgIikiKS51dGY4KCk7CisgICAgcmV0dXJuIG1ha2VVU3RyaW5nKHJlZ2V4cFRvU291cmNlU3Ry
aW5nKHJlZ2V4cCksICIoQHJlIiwgVVN0cmluZzo6bnVtYmVyKHJlKSwgIikiKS51dGY4KCk7CiB9
CiAKIHN0YXRpYyBVU3RyaW5nIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2b2lkKiBwKQpJbmRleDog
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9u
IDY5NTkzKQorKysgSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5o
IgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgot
I2luY2x1ZGUgIlN0cmluZ0NvbmNhdGVuYXRlLmgiCisjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVu
YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtODAsNyAr
ODAsNyBAQCBzdGF0aWMgdm9pZCBzdWJzdGl0dXRlKFVTdHJpbmcmIHN0cmluZywgCiB7CiAgICAg
c2l6ZV90IHBvc2l0aW9uID0gc3RyaW5nLmZpbmQoIiVzIik7CiAgICAgQVNTRVJUKHBvc2l0aW9u
ICE9IG5vdEZvdW5kKTsKLSAgICBzdHJpbmcgPSBtYWtlU3RyaW5nKHN0cmluZy5zdWJzdHJpbmdT
aGFyaW5nSW1wbCgwLCBwb3NpdGlvbiksIHN1YnN0cmluZywgc3RyaW5nLnN1YnN0cmluZ1NoYXJp
bmdJbXBsKHBvc2l0aW9uICsgMikpOworICAgIHN0cmluZyA9IG1ha2VVU3RyaW5nKHN0cmluZy5z
dWJzdHJpbmdTaGFyaW5nSW1wbCgwLCBwb3NpdGlvbiksIHN1YnN0cmluZywgc3RyaW5nLnN1YnN0
cmluZ1NoYXJpbmdJbXBsKHBvc2l0aW9uICsgMikpOwogfQogCiBSZWdpc3RlcklEKiBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YTo6ZW1pdFRocm93RXJyb3IoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgYm9vbCBpc1JlZmVyZW5jZUVycm9yLCBjb25zdCBjaGFyKiBtZXNzYWdlKQpJbmRleDog
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmNwcAkocmV2aXNpb24gNjk1OTMpCisrKyBKYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcg
KzM5LDcgQEAKICNpbmNsdWRlICJQcm9maWxlLmgiCiAjaW5jbHVkZSAiUHJvZmlsZUdlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIlByb2ZpbGVOb2RlLmgiCi0jaW5jbHVkZSAiU3RyaW5nQ29uY2F0ZW5h
dGUuaCIKKyNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTE1Miw3ICsxNTIsNyBAQCBDYWxsSWRlbnRpZmllciBQ
cm9maWxlcjo6Y3JlYXRlQ2FsbElkZW50CiAgICAgICAgIHJldHVybiBDYWxsSWRlbnRpZmllcihz
dGF0aWNfY2FzdDxKU0Z1bmN0aW9uKj4oYXNPYmplY3QoZnVuY3Rpb25WYWx1ZSkpLT5uYW1lKGV4
ZWMpLCBkZWZhdWx0U291cmNlVVJMLCBkZWZhdWx0TGluZU51bWJlcik7CiAgICAgaWYgKGFzT2Jq
ZWN0KGZ1bmN0aW9uVmFsdWUpLT5pbmhlcml0cygmSW50ZXJuYWxGdW5jdGlvbjo6aW5mbykpCiAg
ICAgICAgIHJldHVybiBDYWxsSWRlbnRpZmllcihzdGF0aWNfY2FzdDxJbnRlcm5hbEZ1bmN0aW9u
Kj4oYXNPYmplY3QoZnVuY3Rpb25WYWx1ZSkpLT5uYW1lKGV4ZWMpLCBkZWZhdWx0U291cmNlVVJM
LCBkZWZhdWx0TGluZU51bWJlcik7Ci0gICAgcmV0dXJuIENhbGxJZGVudGlmaWVyKG1ha2VTdHJp
bmcoIigiLCBhc09iamVjdChmdW5jdGlvblZhbHVlKS0+Y2xhc3NOYW1lKCksICIgb2JqZWN0KSIp
LCBkZWZhdWx0U291cmNlVVJMLCBkZWZhdWx0TGluZU51bWJlcik7CisgICAgcmV0dXJuIENhbGxJ
ZGVudGlmaWVyKG1ha2VVU3RyaW5nKCIoIiwgYXNPYmplY3QoZnVuY3Rpb25WYWx1ZSktPmNsYXNz
TmFtZSgpLCAiIG9iamVjdCkiKSwgZGVmYXVsdFNvdXJjZVVSTCwgZGVmYXVsdExpbmVOdW1iZXIp
OwogfQogCiBDYWxsSWRlbnRpZmllciBjcmVhdGVDYWxsSWRlbnRpZmllckZyb21GdW5jdGlvbklt
cChFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uKQpJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCShyZXZpc2lvbiA2OTU5MykKKysr
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgIlN0cmluZ0Nv
bmNhdGVuYXRlLmgiCisjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC05MCw3ICs5MCw3IEBAIEpTVmFsdWUgY3JlYXRlVW5kZWZpbmVkVmFyaWFi
bGVFcnJvcihFeGUKICAgICBpbnQgZW5kT2Zmc2V0ID0gMDsKICAgICBpbnQgZGl2b3RQb2ludCA9
IDA7CiAgICAgaW50IGxpbmUgPSBjb2RlQmxvY2stPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2Rl
T2Zmc2V0KGV4ZWMsIGJ5dGVjb2RlT2Zmc2V0LCBkaXZvdFBvaW50LCBzdGFydE9mZnNldCwgZW5k
T2Zmc2V0KTsKLSAgICBVU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCB2YXJp
YWJsZTogIiwgaWRlbnQudXN0cmluZygpKSk7CisgICAgVVN0cmluZyBtZXNzYWdlKG1ha2VVU3Ry
aW5nKCJDYW4ndCBmaW5kIHZhcmlhYmxlOiAiLCBpZGVudC51c3RyaW5nKCkpKTsKICAgICBKU09i
amVjdCogZXhjZXB0aW9uID0gYWRkRXJyb3JJbmZvKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9y
KGV4ZWMsIG1lc3NhZ2UpLCBsaW5lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3Vy
Y2UoKSwgZGl2b3RQb2ludCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CiAgICAgcmV0dXJuIGV4
Y2VwdGlvbjsKIH0KQEAgLTk4LDkgKzk4LDkgQEAgSlNWYWx1ZSBjcmVhdGVVbmRlZmluZWRWYXJp
YWJsZUVycm9yKEV4ZQogc3RhdGljIFVTdHJpbmcgY3JlYXRlRXJyb3JNZXNzYWdlKEV4ZWNTdGF0
ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCwgaW50IGV4cHJlc3Npb25TdGFydCwg
aW50IGV4cHJlc3Npb25TdG9wLCBKU1ZhbHVlIHZhbHVlLCBVU3RyaW5nIGVycm9yKQogewogICAg
IGlmICghZXhwcmVzc2lvblN0b3AgfHwgZXhwcmVzc2lvblN0YXJ0ID4gY29kZUJsb2NrLT5zb3Vy
Y2UoKS0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHZhbHVlLnRvU3RyaW5n
KGV4ZWMpLCAiIGlzICIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVU3RyaW5nKHZhbHVl
LnRvU3RyaW5nKGV4ZWMpLCAiIGlzICIsIGVycm9yKTsKICAgICBpZiAoZXhwcmVzc2lvblN0YXJ0
IDwgZXhwcmVzc2lvblN0b3ApCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJSZXN1bHQgb2Yg
ZXhwcmVzc2lvbiAnIiwgY29kZUJsb2NrLT5zb3VyY2UoKS0+Z2V0UmFuZ2UoZXhwcmVzc2lvblN0
YXJ0LCBleHByZXNzaW9uU3RvcCksICInIFsiLCB2YWx1ZS50b1N0cmluZyhleGVjKSwgIl0gaXMg
IiwgZXJyb3IsICIuIik7CisgICAgICAgIHJldHVybiBtYWtlVVN0cmluZygiUmVzdWx0IG9mIGV4
cHJlc3Npb24gJyIsIGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKGV4cHJlc3Npb25TdGFy
dCwgZXhwcmVzc2lvblN0b3ApLCAiJyBbIiwgdmFsdWUudG9TdHJpbmcoZXhlYyksICJdIGlzICIs
IGVycm9yLCAiLiIpOwogCiAgICAgLy8gTm8gcmFuZ2UgaW5mb3JtYXRpb24sIHNvIGdpdmUgYSBm
ZXcgY2hhcmFjdGVycyBvZiBjb250ZXh0CiAgICAgY29uc3QgVUNoYXIqIGRhdGEgPSBjb2RlQmxv
Y2stPnNvdXJjZSgpLT5kYXRhKCk7CkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIFVTdHJpbmcg
Y3JlYXRlRXJyb3JNZXNzYWdlKEV4ZWNTdAogICAgICAgICBzdG9wKys7CiAgICAgd2hpbGUgKHN0
b3AgPiBleHByZXNzaW9uU3RhcnQgJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbc3RvcF0pKQogICAg
ICAgICBzdG9wLS07Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIlJlc3VsdCBvZiBleHByZXNzaW9u
IG5lYXIgJy4uLiIsIGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKHN0YXJ0LCBzdG9wKSwg
Ii4uLicgWyIsIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLCAiXSBpcyAiLCBlcnJvciwgIi4iKTsKKyAg
ICByZXR1cm4gbWFrZVVTdHJpbmcoIlJlc3VsdCBvZiBleHByZXNzaW9uIG5lYXIgJy4uLiIsIGNv
ZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKHN0YXJ0LCBzdG9wKSwgIi4uLicgWyIsIHZhbHVl
LnRvU3RyaW5nKGV4ZWMpLCAiXSBpcyAiLCBlcnJvciwgIi4iKTsKIH0KIAogSlNPYmplY3QqIGNy
ZWF0ZUludmFsaWRQYXJhbUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogb3AsIEpT
VmFsdWUgdmFsdWUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBDb2RlQmxvY2sqIGNvZGVCbG9j
aykKQEAgLTEyNiw3ICsxMjYsNyBAQCBKU09iamVjdCogY3JlYXRlSW52YWxpZFBhcmFtRXJyb3Io
RXhlY1N0CiAgICAgaW50IGVuZE9mZnNldCA9IDA7CiAgICAgaW50IGRpdm90UG9pbnQgPSAwOwog
ICAgIGludCBsaW5lID0gY29kZUJsb2NrLT5leHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNl
dChleGVjLCBieXRlY29kZU9mZnNldCwgZGl2b3RQb2ludCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCk7Ci0gICAgVVN0cmluZyBlcnJvck1lc3NhZ2UgPSBjcmVhdGVFcnJvck1lc3NhZ2UoZXhlYywg
Y29kZUJsb2NrLCBsaW5lLCBkaXZvdFBvaW50LCBkaXZvdFBvaW50ICsgZW5kT2Zmc2V0LCB2YWx1
ZSwgbWFrZVN0cmluZygibm90IGEgdmFsaWQgYXJndW1lbnQgZm9yICciLCBvcCwgIiciKSk7Cisg
ICAgVVN0cmluZyBlcnJvck1lc3NhZ2UgPSBjcmVhdGVFcnJvck1lc3NhZ2UoZXhlYywgY29kZUJs
b2NrLCBsaW5lLCBkaXZvdFBvaW50LCBkaXZvdFBvaW50ICsgZW5kT2Zmc2V0LCB2YWx1ZSwgbWFr
ZVVTdHJpbmcoIm5vdCBhIHZhbGlkIGFyZ3VtZW50IGZvciAnIiwgb3AsICInIikpOwogICAgIEpT
T2JqZWN0KiBleGNlcHRpb24gPSBhZGRFcnJvckluZm8oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIGVycm9yTWVzc2FnZSksIGxpbmUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNv
dXJjZSgpLCBkaXZvdFBvaW50LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKICAgICByZXR1cm4g
ZXhjZXB0aW9uOwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA2OTU5NCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlVT
dHJpbmdCdWlsZGVyLmgiCi0jaW5jbHVkZSAiU3RyaW5nQ29uY2F0ZW5hdGUuaCIKKyNpbmNsdWRl
ICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTgxLDcgKzgx
LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZQogICAgIGlmIChh
cmdzLmlzRW1wdHkoKSkKICAgICAgICAgcHJvZ3JhbSA9ICIoZnVuY3Rpb24oKSB7IFxufSkiOwog
ICAgIGVsc2UgaWYgKGFyZ3Muc2l6ZSgpID09IDEpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlU3Ry
aW5nKCIoZnVuY3Rpb24oKSB7ICIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksICJcbn0pIik7
CisgICAgICAgIHByb2dyYW0gPSBtYWtlVVN0cmluZygiKGZ1bmN0aW9uKCkgeyAiLCBhcmdzLmF0
KDApLnRvU3RyaW5nKGV4ZWMpLCAiXG59KSIpOwogICAgIGVsc2UgewogICAgICAgICBVU3RyaW5n
QnVpbGRlciBidWlsZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgiKGZ1bmN0aW9uKCIpOwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDY5NTkzKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIGlubGluZSB2b2lk
IGluc2VydFNlbWljb2xvbklmTmVlZAogICAgICAgICBVQ2hhciBjaCA9IGZ1bmN0aW9uQm9keVtp
XTsKICAgICAgICAgaWYgKCFMZXhlcjo6aXNXaGl0ZVNwYWNlKGNoKSAmJiAhTGV4ZXI6OmlzTGlu
ZVRlcm1pbmF0b3IoY2gpKSB7CiAgICAgICAgICAgICBpZiAoY2ggIT0gJzsnICYmIGNoICE9ICd9
JykKLSAgICAgICAgICAgICAgICBmdW5jdGlvbkJvZHkgPSBtYWtlU3RyaW5nKGZ1bmN0aW9uQm9k
eS5zdWJzdHJpbmdTaGFyaW5nSW1wbCgwLCBpICsgMSksICI7IiwgZnVuY3Rpb25Cb2R5LnN1YnN0
cmluZ1NoYXJpbmdJbXBsKGkgKyAxLCBmdW5jdGlvbkJvZHkubGVuZ3RoKCkgLSAoaSArIDEpKSk7
CisgICAgICAgICAgICAgICAgZnVuY3Rpb25Cb2R5ID0gbWFrZVVTdHJpbmcoZnVuY3Rpb25Cb2R5
LnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIGkgKyAxKSwgIjsiLCBmdW5jdGlvbkJvZHkuc3Vic3Ry
aW5nU2hhcmluZ0ltcGwoaSArIDEsIGZ1bmN0aW9uQm9keS5sZW5ndGgoKSAtIChpICsgMSkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09OT2JqZWN0LmNwcAkocmV2aXNpb24gNjk1OTQpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
CiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNp
bmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgotI2luY2x1ZGUgIlN0cmluZ0NvbmNhdGVuYXRlLmgi
CisjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00NjYsNyArNDY2LDcgQEAgaW5saW5lIHZvaWQg
U3RyaW5naWZpZXI6OmluZGVudCgpCiAgICAgLy8gVXNlIGEgc2luZ2xlIHNoYXJlZCBzdHJpbmcs
IG1fcmVwZWF0ZWRHYXAsIHNvIHdlIGRvbid0IGtlZXAgYWxsb2NhdGluZyBuZXcgb25lcyBhcyB3
ZSBpbmRlbnQgYW5kIHVuaW5kZW50LgogICAgIHVuc2lnbmVkIG5ld1NpemUgPSBtX2luZGVudC5s
ZW5ndGgoKSArIG1fZ2FwLmxlbmd0aCgpOwogICAgIGlmIChuZXdTaXplID4gbV9yZXBlYXRlZEdh
cC5sZW5ndGgoKSkKLSAgICAgICAgbV9yZXBlYXRlZEdhcCA9IG1ha2VTdHJpbmcobV9yZXBlYXRl
ZEdhcCwgbV9nYXApOworICAgICAgICBtX3JlcGVhdGVkR2FwID0gbWFrZVVTdHJpbmcobV9yZXBl
YXRlZEdhcCwgbV9nYXApOwogICAgIEFTU0VSVChuZXdTaXplIDw9IG1fcmVwZWF0ZWRHYXAubGVu
Z3RoKCkpOwogICAgIG1faW5kZW50ID0gbV9yZXBlYXRlZEdhcC5zdWJzdHJpbmdTaGFyaW5nSW1w
bCgwLCBuZXdTaXplKTsKIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdC
dWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0J1
aWxkZXIuaAkocmV2aXNpb24gNjk1OTMpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJT
dHJpbmdDb25jYXRlbmF0ZS5oIgorI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2lu
Y2x1ZGUgIlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTg3LDcgKzg3LDcgQEAgcHJv
dGVjdGVkOgogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5
cGUyPgogaW5saW5lIEpTVmFsdWUganNNYWtlTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIpCiB7Ci0gICAgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHQgPSB0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmlu
ZzIpOworICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0ID0gV1RGOjp0cnlNYWtlU3Ry
aW5nKHN0cmluZzEsIHN0cmluZzIpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4g
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOwogICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgcmVzdWx0KTsKQEAgLTk2LDcgKzk2LDcgQEAgaW5saW5lIEpTVmFsdWUganNNYWtl
Tm9udHJpdmlhbFN0cmluZyhFeAogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVu
YW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMz4KIGlubGluZSBKU1ZhbHVlIGpz
TWFrZU5vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdUeXBlMSBzdHJpbmcx
LCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczKQogewotICAgIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0ID0gdHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcy
LCBzdHJpbmczKTsKKyAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdCA9IFdURjo6dHJ5
TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczKTsKICAgICBpZiAoIXJlc3VsdCkK
ICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKICAgICByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKGV4ZWMsIHJlc3VsdCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgaW5s
aW5lIEpTVmFsdWUganNNYWtlTm9udHJpdmlhbFN0cmluZyhFeAogdGVtcGxhdGU8dHlwZW5hbWUg
U3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywg
dHlwZW5hbWUgU3RyaW5nVHlwZTQ+CiBpbmxpbmUgSlNWYWx1ZSBqc01ha2VOb250cml2aWFsU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3Ry
aW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCkKIHsKLSAgICBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdCA9IHRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3Ry
aW5nMiwgc3RyaW5nMywgc3RyaW5nNCk7CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1
bHQgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5n
NCk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJy
b3IoZXhlYyk7CiAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCByZXN1bHQpOwpA
QCAtMTE0LDcgKzExNCw3IEBAIGlubGluZSBKU1ZhbHVlIGpzTWFrZU5vbnRyaXZpYWxTdHJpbmco
RXgKIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwg
dHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJp
bmdUeXBlNT4KIGlubGluZSBKU1ZhbHVlIGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdU
eXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1KQog
ewotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0ID0gdHJ5TWFrZVN0cmluZyhzdHJp
bmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1KTsKKyAgICBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IHJlc3VsdCA9IFdURjo6dHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcy
LCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1KTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAg
cmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKICAgICByZXR1cm4ganNOb250cml2
aWFsU3RyaW5nKGV4ZWMsIHJlc3VsdCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgaW5saW5lIEpTVmFs
dWUganNNYWtlTm9udHJpdmlhbFN0cmluZyhFeAogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlw
ZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUg
U3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBTdHJpbmdUeXBlNj4K
IGlubGluZSBKU1ZhbHVlIGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBT
dHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJp
bmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBl
NiBzdHJpbmc2KQogewotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0ID0gdHJ5TWFr
ZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJp
bmc2KTsKKyAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdCA9IFdURjo6dHJ5TWFrZVN0
cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJpbmc2
KTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJv
cihleGVjKTsKICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIHJlc3VsdCk7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gNjk1OTMpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIlJlZ0V4cFBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgi
Ci0jaW5jbHVkZSAiU3RyaW5nQ29uY2F0ZW5hdGUuaCIKKyNpbmNsdWRlICJVU3RyaW5nQ29uY2F0
ZW5hdGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTMwNyw3ICszMDcsNyBAQCBKU09iamVjdCogY29uc3RydWN0UmVnRXhwKEV4ZWNTdGF0ZSog
ZXhlCiAKICAgICBSZWZQdHI8UmVnRXhwPiByZWdFeHAgPSBleGVjLT5nbG9iYWxEYXRhKCkucmVn
RXhwQ2FjaGUoKS0+bG9va3VwT3JDcmVhdGUocGF0dGVybiwgZmxhZ3MpOwogICAgIGlmICghcmVn
RXhwLT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVN5
bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiAi
LCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSkpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtYWtlVVN0cmluZygiSW52YWxpZCByZWd1bGFy
IGV4cHJlc3Npb246ICIsIHJlZ0V4cC0+ZXJyb3JNZXNzYWdlKCkpKSk7CiAgICAgcmV0dXJuIG5l
dyAoZXhlYykgUmVnRXhwT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwLnJlbGVhc2Uo
KSk7CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHJl
dmlzaW9uIDY5NTkzKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiTG9va3VwLmgiCiAj
aW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUu
aCIKLSNpbmNsdWRlICJTdHJpbmdDb25jYXRlbmF0ZS5oIgorI2luY2x1ZGUgIlVTdHJpbmdDb25j
YXRlbmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewpAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgUmVnRXhwT2JqZWN0OjptYXRjaChFeGVjU3RhdGUq
IGV4ZWMKIAogICAgIFVTdHJpbmcgaW5wdXQgPSAhZXhlYy0+YXJndW1lbnRDb3VudCgpID8gcmVn
RXhwQ29uc3RydWN0b3ItPmlucHV0KCkgOiBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KTsKICAgICBpZiAoaW5wdXQuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBj
cmVhdGVFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJObyBpbnB1dCB0byAiLCB0b1N0cmluZyhleGVj
KSwgIi4iKSkpOworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIG1h
a2VVU3RyaW5nKCJObyBpbnB1dCB0byAiLCB0b1N0cmluZyhleGVjKSwgIi4iKSkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA2OTU5MykKKysrIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1
ZGUgIlJlZ0V4cENhY2hlLmgiCisjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC05NCw3ICs5NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG8KICAgICB9CiAKICAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMs
IG1ha2VTdHJpbmcoIkludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiAiLCByZWdFeHAtPmVycm9y
TWVzc2FnZSgpKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5
bnRheEVycm9yKGV4ZWMsIG1ha2VVU3RyaW5nKCJJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjog
IiwgcmVnRXhwLT5lcnJvck1lc3NhZ2UoKSkpKTsKIAogICAgIGFzUmVnRXhwT2JqZWN0KHRoaXNW
YWx1ZSktPnNldFJlZ0V4cChyZWdFeHAucmVsZWFzZSgpKTsKICAgICBhc1JlZ0V4cE9iamVjdCh0
aGlzVmFsdWUpLT5zZXRMYXN0SW5kZXgoMCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ0NvbmNhdGVuYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdDb25jYXRlbmF0ZS5oCShyZXZpc2lvbiA2OTU5MykKKysrIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nQ29uY2F0ZW5hdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0MjggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIFN0cmluZ0NvbmNhdGVuYXRlX2gKLSNkZWZpbmUgU3RyaW5nQ29uY2F0ZW5hdGVfaAotCi0j
aW5jbHVkZSAiVVN0cmluZy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotdGVtcGxhdGU8dHlwZW5h
bWUgU3RyaW5nVHlwZT4KLWNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyIHsKLX07Ci0KLXRlbXBsYXRl
PD4KLWNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPGNoYXIqPiB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5n
VHlwZUFkYXB0ZXI8Y2hhcio+KGNoYXIqIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcigodW5z
aWduZWQgY2hhciopYnVmZmVyKQotICAgICAgICAsIG1fbGVuZ3RoKHN0cmxlbihidWZmZXIpKQot
ICAgIHsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGgoKSB7IHJldHVybiBtX2xlbmd0aDsg
fQotCi0gICAgdm9pZCB3cml0ZVRvKFVDaGFyKiBkZXN0aW5hdGlvbikKLSAgICB7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKQotICAgICAgICAgICAgZGVz
dGluYXRpb25baV0gPSBtX2J1ZmZlcltpXTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3Qg
dW5zaWduZWQgY2hhciogbV9idWZmZXI7Ci0gICAgdW5zaWduZWQgbV9sZW5ndGg7Ci19OwotCi10
ZW1wbGF0ZTw+Ci1jbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjb25zdCBjaGFyKj4gewotcHVibGlj
OgotICAgIFN0cmluZ1R5cGVBZGFwdGVyPGNvbnN0IGNoYXIqPihjb25zdCBjaGFyKiBidWZmZXIp
Ci0gICAgICAgIDogbV9idWZmZXIoKHVuc2lnbmVkIGNoYXIqKWJ1ZmZlcikKLSAgICAgICAgLCBt
X2xlbmd0aChzdHJsZW4oYnVmZmVyKSkKLSAgICB7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgbGVu
Z3RoKCkgeyByZXR1cm4gbV9sZW5ndGg7IH0KLQotICAgIHZvaWQgd3JpdGVUbyhVQ2hhciogZGVz
dGluYXRpb24pCi0gICAgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5n
dGg7ICsraSkKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gbV9idWZmZXJbaV07Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1fYnVmZmVyOwotICAgIHVu
c2lnbmVkIG1fbGVuZ3RoOwotfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgU3RyaW5nVHlwZUFkYXB0
ZXI8VVN0cmluZz4gewotcHVibGljOgotICAgIFN0cmluZ1R5cGVBZGFwdGVyPFVTdHJpbmc+KFVT
dHJpbmcmIHN0cmluZykKLSAgICAgICAgOiBtX2RhdGEoc3RyaW5nLmNoYXJhY3RlcnMoKSkKLSAg
ICAgICAgLCBtX2xlbmd0aChzdHJpbmcubGVuZ3RoKCkpCi0gICAgewotICAgIH0KLQotICAgIHVu
c2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0KLSAgICB2b2lkIHdyaXRlVG8o
VUNoYXIqIGRlc3RpbmF0aW9uKQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IG1fZGF0YVtp
XTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgVUNoYXIqIG1fZGF0YTsKLSAgICB1bnNp
Z25lZCBtX2xlbmd0aDsKLX07Ci0KLWlubGluZSB2b2lkIHN1bVdpdGhPdmVyZmxvdyh1bnNpZ25l
ZCYgdG90YWwsIHVuc2lnbmVkIGFkZGVuZCwgYm9vbCYgb3ZlcmZsb3cpCi17Ci0gICAgdW5zaWdu
ZWQgb2xkVG90YWwgPSB0b3RhbDsKLSAgICB0b3RhbCA9IG9sZFRvdGFsICsgYWRkZW5kOwotICAg
IGlmICh0b3RhbCA8IG9sZFRvdGFsKQotICAgICAgICBvdmVyZmxvdyA9IHRydWU7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMj4KLVBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJp
bmdUeXBlMiBzdHJpbmcyKQotewotICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBh
ZGFwdGVyMShzdHJpbmcxKTsKLSAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRh
cHRlcjIoc3RyaW5nMik7Ci0KLSAgICBVQ2hhciogYnVmZmVyOwotICAgIGJvb2wgb3ZlcmZsb3cg
PSBmYWxzZTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBhZGFwdGVyMS5sZW5ndGgoKTsKLSAgICBz
dW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyMi5sZW5ndGgoKSwgb3ZlcmZsb3cpOwotICAg
IGlmIChvdmVyZmxvdykKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiByZXN1bHRJbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5n
dGgsIGJ1ZmZlcik7Ci0gICAgaWYgKCFyZXN1bHRJbXBsKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIFVDaGFyKiByZXN1bHQgPSBidWZmZXI7Ci0gICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQp
OwotICAgIHJlc3VsdCArPSBhZGFwdGVyMS5sZW5ndGgoKTsKLSAgICBhZGFwdGVyMi53cml0ZVRv
KHJlc3VsdCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0SW1wbDsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBl
Mz4KLVBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJp
bmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczKQotewotICAgIFN0
cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShzdHJpbmcxKTsKLSAgICBTdHJp
bmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7Ci0gICAgU3RyaW5n
VHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTM+IGFkYXB0ZXIzKHN0cmluZzMpOwotCi0gICAgVUNoYXIq
IGJ1ZmZlciA9IDA7Ci0gICAgYm9vbCBvdmVyZmxvdyA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGxl
bmd0aCA9IGFkYXB0ZXIxLmxlbmd0aCgpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFk
YXB0ZXIyLmxlbmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwg
YWRhcHRlcjMubGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBpZiAob3ZlcmZsb3cpCi0gICAgICAg
IHJldHVybiAwOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmlu
Z0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAgIGlmICgh
cmVzdWx0SW1wbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBVQ2hhciogcmVzdWx0ID0gYnVm
ZmVyOwotICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKLSAgICByZXN1bHQgKz0gYWRhcHRl
cjEubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOwotICAgIHJlc3VsdCAr
PSBhZGFwdGVyMi5sZW5ndGgoKTsKLSAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7Ci0KLSAg
ICByZXR1cm4gcmVzdWx0SW1wbDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEs
IHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3Ry
aW5nVHlwZTQ+Ci1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlw
ZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3Ry
aW5nVHlwZTQgc3RyaW5nNCkKLXsKLSAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4g
YWRhcHRlcjEoc3RyaW5nMSk7Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFk
YXB0ZXIyKHN0cmluZzIpOwotICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFw
dGVyMyhzdHJpbmczKTsKLSAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRl
cjQoc3RyaW5nNCk7Ci0KLSAgICBVQ2hhciogYnVmZmVyOwotICAgIGJvb2wgb3ZlcmZsb3cgPSBm
YWxzZTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBhZGFwdGVyMS5sZW5ndGgoKTsKLSAgICBzdW1X
aXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyMi5sZW5ndGgoKSwgb3ZlcmZsb3cpOwotICAgIHN1
bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIzLmxlbmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAg
c3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjQubGVuZ3RoKCksIG92ZXJmbG93KTsKLSAg
ICBpZiAob3ZlcmZsb3cpCi0gICAgICAgIHJldHVybiAwOwotICAgIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVu
Z3RoLCBidWZmZXIpOwotICAgIGlmICghcmVzdWx0SW1wbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBVQ2hhciogcmVzdWx0ID0gYnVmZmVyOwotICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0
KTsKLSAgICByZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjIud3JpdGVU
byhyZXN1bHQpOwotICAgIHJlc3VsdCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKLSAgICBhZGFwdGVy
My53cml0ZVRvKHJlc3VsdCk7Ci0gICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOwotICAg
IGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsKLQotICAgIHJldHVybiByZXN1bHRJbXBsOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5
cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5n
VHlwZTU+Ci1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEg
c3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5n
VHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSkKLXsKLSAgICBTdHJpbmdUeXBlQWRh
cHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7Ci0gICAgU3RyaW5nVHlwZUFkYXB0
ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIpOwotICAgIFN0cmluZ1R5cGVBZGFwdGVy
PFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsKLSAgICBTdHJpbmdUeXBlQWRhcHRlcjxT
dHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3Ry
aW5nVHlwZTU+IGFkYXB0ZXI1KHN0cmluZzUpOwotCi0gICAgVUNoYXIqIGJ1ZmZlcjsKLSAgICBi
b29sIG92ZXJmbG93ID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gYWRhcHRlcjEubGVu
Z3RoKCk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjIubGVuZ3RoKCksIG92
ZXJmbG93KTsKLSAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyMy5sZW5ndGgoKSwg
b3ZlcmZsb3cpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI0Lmxlbmd0aCgp
LCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjUubGVuZ3Ro
KCksIG92ZXJmbG93KTsKLSAgICBpZiAob3ZlcmZsb3cpCi0gICAgICAgIHJldHVybiAwOwotICAg
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAgIGlmICghcmVzdWx0SW1wbCkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBVQ2hhciogcmVzdWx0ID0gYnVmZmVyOwotICAgIGFkYXB0
ZXIxLndyaXRlVG8ocmVzdWx0KTsKLSAgICByZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3RoKCk7Ci0g
ICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOwotICAgIHJlc3VsdCArPSBhZGFwdGVyMi5sZW5n
dGgoKTsKLSAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7Ci0gICAgcmVzdWx0ICs9IGFkYXB0
ZXIzLmxlbmd0aCgpOwotICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsKLSAgICByZXN1bHQg
Kz0gYWRhcHRlcjQubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjUud3JpdGVUbyhyZXN1bHQpOwotCi0g
ICAgcmV0dXJuIHJlc3VsdEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUx
LCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0
cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTY+Ci1Q
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwg
U3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3Ry
aW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNikKLXsKLSAgICBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7Ci0gICAgU3Ry
aW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIpOwotICAgIFN0cmlu
Z1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsKLSAgICBTdHJpbmdU
eXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7Ci0gICAgU3RyaW5nVHlw
ZUFkYXB0ZXI8U3RyaW5nVHlwZTU+IGFkYXB0ZXI1KHN0cmluZzUpOwotICAgIFN0cmluZ1R5cGVB
ZGFwdGVyPFN0cmluZ1R5cGU2PiBhZGFwdGVyNihzdHJpbmc2KTsKLQotICAgIFVDaGFyKiBidWZm
ZXI7Ci0gICAgYm9vbCBvdmVyZmxvdyA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFk
YXB0ZXIxLmxlbmd0aCgpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIyLmxl
bmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjMu
bGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVy
NC5sZW5ndGgoKSwgb3ZlcmZsb3cpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0
ZXI1Lmxlbmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRh
cHRlcjYubGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBpZiAob3ZlcmZsb3cpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0lt
cGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAgIGlmICghcmVz
dWx0SW1wbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBVQ2hhciogcmVzdWx0ID0gYnVmZmVy
OwotICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKLSAgICByZXN1bHQgKz0gYWRhcHRlcjEu
bGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOwotICAgIHJlc3VsdCArPSBh
ZGFwdGVyMi5sZW5ndGgoKTsKLSAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7Ci0gICAgcmVz
dWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOwotICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsK
LSAgICByZXN1bHQgKz0gYWRhcHRlcjQubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjUud3JpdGVUbyhy
ZXN1bHQpOwotICAgIHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKLSAgICBhZGFwdGVyNi53
cml0ZVRvKHJlc3VsdCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0SW1wbDsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJp
bmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBl
bmFtZSBTdHJpbmdUeXBlNiwgdHlwZW5hbWUgU3RyaW5nVHlwZTc+Ci1QYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3Ry
aW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlw
ZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNykKLXsK
LSAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7Ci0g
ICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIpOwotICAg
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsKLSAgICBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7Ci0gICAgU3Ry
aW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTU+IGFkYXB0ZXI1KHN0cmluZzUpOwotICAgIFN0cmlu
Z1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU2PiBhZGFwdGVyNihzdHJpbmc2KTsKLSAgICBTdHJpbmdU
eXBlQWRhcHRlcjxTdHJpbmdUeXBlNz4gYWRhcHRlcjcoc3RyaW5nNyk7Ci0KLSAgICBVQ2hhciog
YnVmZmVyOwotICAgIGJvb2wgb3ZlcmZsb3cgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBsZW5ndGgg
PSBhZGFwdGVyMS5sZW5ndGgoKTsKLSAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVy
Mi5sZW5ndGgoKSwgb3ZlcmZsb3cpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0
ZXIzLmxlbmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRh
cHRlcjQubGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBh
ZGFwdGVyNS5sZW5ndGgoKSwgb3ZlcmZsb3cpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgs
IGFkYXB0ZXI2Lmxlbmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0
aCwgYWRhcHRlcjcubGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBpZiAob3ZlcmZsb3cpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0
cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAgIGlm
ICghcmVzdWx0SW1wbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBVQ2hhciogcmVzdWx0ID0g
YnVmZmVyOwotICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKLSAgICByZXN1bHQgKz0gYWRh
cHRlcjEubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOwotICAgIHJlc3Vs
dCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKLSAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7Ci0g
ICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOwotICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVz
dWx0KTsKLSAgICByZXN1bHQgKz0gYWRhcHRlcjQubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjUud3Jp
dGVUbyhyZXN1bHQpOwotICAgIHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKLSAgICBhZGFw
dGVyNi53cml0ZVRvKHJlc3VsdCk7Ci0gICAgcmVzdWx0ICs9IGFkYXB0ZXI2Lmxlbmd0aCgpOwot
ICAgIGFkYXB0ZXI3LndyaXRlVG8ocmVzdWx0KTsKLQotICAgIHJldHVybiByZXN1bHRJbXBsOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIs
IHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3Ry
aW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNywgdHlw
ZW5hbWUgU3RyaW5nVHlwZTg+Ci1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmco
U3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3Ry
aW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlw
ZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNywgU3RyaW5nVHlwZTggc3RyaW5nOCkKLXsK
LSAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7Ci0g
ICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIpOwotICAg
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsKLSAgICBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7Ci0gICAgU3Ry
aW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTU+IGFkYXB0ZXI1KHN0cmluZzUpOwotICAgIFN0cmlu
Z1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU2PiBhZGFwdGVyNihzdHJpbmc2KTsKLSAgICBTdHJpbmdU
eXBlQWRhcHRlcjxTdHJpbmdUeXBlNz4gYWRhcHRlcjcoc3RyaW5nNyk7Ci0gICAgU3RyaW5nVHlw
ZUFkYXB0ZXI8U3RyaW5nVHlwZTg+IGFkYXB0ZXI4KHN0cmluZzgpOwotCi0gICAgVUNoYXIqIGJ1
ZmZlcjsKLSAgICBib29sIG92ZXJmbG93ID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0g
YWRhcHRlcjEubGVuZ3RoKCk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjIu
bGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVy
My5sZW5ndGgoKSwgb3ZlcmZsb3cpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0
ZXI0Lmxlbmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRh
cHRlcjUubGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBh
ZGFwdGVyNi5sZW5ndGgoKSwgb3ZlcmZsb3cpOwotICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgs
IGFkYXB0ZXI3Lmxlbmd0aCgpLCBvdmVyZmxvdyk7Ci0gICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0
aCwgYWRhcHRlcjgubGVuZ3RoKCksIG92ZXJmbG93KTsKLSAgICBpZiAob3ZlcmZsb3cpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0
cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAgIGlm
ICghcmVzdWx0SW1wbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBVQ2hhciogcmVzdWx0ID0g
YnVmZmVyOwotICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKLSAgICByZXN1bHQgKz0gYWRh
cHRlcjEubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOwotICAgIHJlc3Vs
dCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKLSAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7Ci0g
ICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOwotICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVz
dWx0KTsKLSAgICByZXN1bHQgKz0gYWRhcHRlcjQubGVuZ3RoKCk7Ci0gICAgYWRhcHRlcjUud3Jp
dGVUbyhyZXN1bHQpOwotICAgIHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKLSAgICBhZGFw
dGVyNi53cml0ZVRvKHJlc3VsdCk7Ci0gICAgcmVzdWx0ICs9IGFkYXB0ZXI2Lmxlbmd0aCgpOwot
ICAgIGFkYXB0ZXI3LndyaXRlVG8ocmVzdWx0KTsKLSAgICByZXN1bHQgKz0gYWRhcHRlcjcubGVu
Z3RoKCk7Ci0gICAgYWRhcHRlcjgud3JpdGVUbyhyZXN1bHQpOwotCi0gICAgcmV0dXJuIHJlc3Vs
dEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJp
bmdUeXBlMj4KLVVTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdU
eXBlMiBzdHJpbmcyKQotewotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9
IHRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMik7Ci0gICAgaWYgKCFyZXN1bHRJbXBsKQot
ICAgICAgICBDUkFTSCgpOwotICAgIHJldHVybiByZXN1bHRJbXBsOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmlu
Z1R5cGUzPgotVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5
cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMpCi17Ci0gICAgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJp
bmczKTsKLSAgICBpZiAoIXJlc3VsdEltcGwpCi0gICAgICAgIENSQVNIKCk7Ci0gICAgcmV0dXJu
IHJlc3VsdEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFt
ZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0
PgotVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0
cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQpCi17Ci0gICAg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFrZVN0cmluZyhzdHJpbmcx
LCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0KTsKLSAgICBpZiAoIXJlc3VsdEltcGwpCi0gICAg
ICAgIENSQVNIKCk7Ci0gICAgcmV0dXJuIHJlc3VsdEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlw
ZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNT4KLVVTdHJpbmcg
bWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJp
bmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1
KQotewotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IHRyeU1ha2VTdHJp
bmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSk7Ci0gICAgaWYg
KCFyZXN1bHRJbXBsKQotICAgICAgICBDUkFTSCgpOwotICAgIHJldHVybiByZXN1bHRJbXBsOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIs
IHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3Ry
aW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2PgotVVN0cmluZyBtYWtlU3RyaW5nKFN0cmlu
Z1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMs
IFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0
cmluZzYpCi17Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFr
ZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJp
bmc2KTsKLSAgICBpZiAoIXJlc3VsdEltcGwpCi0gICAgICAgIENSQVNIKCk7Ci0gICAgcmV0dXJu
IHJlc3VsdEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFt
ZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0
LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTYsIHR5cGVuYW1lIFN0
cmluZ1R5cGU3PgotVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmlu
Z1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQs
IFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmluZ1R5cGU3IHN0
cmluZzcpCi17Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFr
ZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJp
bmc2LCBzdHJpbmc3KTsKLSAgICBpZiAoIXJlc3VsdEltcGwpCi0gICAgICAgIENSQVNIKCk7Ci0g
ICAgcmV0dXJuIHJlc3VsdEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUx
LCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0
cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTYsIHR5
cGVuYW1lIFN0cmluZ1R5cGU3LCB0eXBlbmFtZSBTdHJpbmdUeXBlOD4KLVVTdHJpbmcgbWFrZVN0
cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBl
MyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJp
bmdUeXBlNiBzdHJpbmc2LCBTdHJpbmdUeXBlNyBzdHJpbmc3LCBTdHJpbmdUeXBlOCBzdHJpbmc4
KQotewotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IHRyeU1ha2VTdHJp
bmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSwgc3RyaW5nNiwg
c3RyaW5nNywgc3RyaW5nOCk7Ci0gICAgaWYgKCFyZXN1bHRJbXBsKQotICAgICAgICBDUkFTSCgp
OwotICAgIHJldHVybiByZXN1bHRJbXBsOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2Vu
ZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmdDb25jYXRlbmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0NvbmNhdGVuYXRlLmgJ
KHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmdDb25jYXRlbmF0
ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFVTdHJpbmdDb25jYXRlbmF0ZV9oCisj
ZGVmaW5lIFVTdHJpbmdDb25jYXRlbmF0ZV9oCisKKyNpbmNsdWRlICJVU3RyaW5nLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPD4KK2NsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPEpTQzo6VVN0cmluZz4geworcHVi
bGljOgorICAgIFN0cmluZ1R5cGVBZGFwdGVyPEpTQzo6VVN0cmluZz4oSlNDOjpVU3RyaW5nJiBz
dHJpbmcpCisgICAgICAgIDogbV9kYXRhKHN0cmluZy5jaGFyYWN0ZXJzKCkpCisgICAgICAgICwg
bV9sZW5ndGgoc3RyaW5nLmxlbmd0aCgpKQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBs
ZW5ndGgoKSB7IHJldHVybiBtX2xlbmd0aDsgfQorCisgICAgdm9pZCB3cml0ZVRvKFVDaGFyKiBk
ZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xl
bmd0aDsgKytpKQorICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSBtX2RhdGFbaV07CisgICAg
fQorCitwcml2YXRlOgorICAgIGNvbnN0IFVDaGFyKiBtX2RhdGE7CisgICAgdW5zaWduZWQgbV9s
ZW5ndGg7Cit9OworCit9OyAvLyBuYW1lc3BhY2UgV1RGCisKK25hbWVzcGFjZSBKU0MgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTI+CitVU3Ry
aW5nIG1ha2VVU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIp
Cit7CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gV1RGOjp0cnlNYWtl
U3RyaW5nKHN0cmluZzEsIHN0cmluZzIpOworICAgIGlmICghcmVzdWx0SW1wbCkKKyAgICAgICAg
Q1JBU0goKTsKKyAgICByZXR1cm4gcmVzdWx0SW1wbDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
U3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMz4K
K1VTdHJpbmcgbWFrZVVTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3Ry
aW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMykKK3sKKyAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IHJlc3VsdEltcGwgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5n
Myk7CisgICAgaWYgKCFyZXN1bHRJbXBsKQorICAgICAgICBDUkFTSCgpOworICAgIHJldHVybiBy
ZXN1bHRJbXBsOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUg
U3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlND4K
K1VTdHJpbmcgbWFrZVVTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3Ry
aW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCkKK3sKKyAgICBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3Ry
aW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCk7CisgICAgaWYgKCFyZXN1bHRJbXBsKQor
ICAgICAgICBDUkFTSCgpOworICAgIHJldHVybiByZXN1bHRJbXBsOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmlu
Z1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTU+CitVU3Ry
aW5nIG1ha2VVU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIs
IFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0
cmluZzUpCit7CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gV1RGOjp0
cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIsIHN0cmluZzMsIHN0cmluZzQsIHN0cmluZzUp
OworICAgIGlmICghcmVzdWx0SW1wbCkKKyAgICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gcmVz
dWx0SW1wbDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0
cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5
cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBTdHJpbmdUeXBlNj4KK1VTdHJpbmcgbWFrZVVT
dHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlw
ZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3Ry
aW5nVHlwZTYgc3RyaW5nNikKK3sKKyAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdElt
cGwgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5n
NCwgc3RyaW5nNSwgc3RyaW5nNik7CisgICAgaWYgKCFyZXN1bHRJbXBsKQorICAgICAgICBDUkFT
SCgpOworICAgIHJldHVybiByZXN1bHRJbXBsOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJp
bmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBl
bmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5
cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNz4KK1VTdHJpbmcgbWFrZVVTdHJpbmcoU3RyaW5nVHlw
ZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3Ry
aW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5n
NiwgU3RyaW5nVHlwZTcgc3RyaW5nNykKK3sKKyAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJl
c3VsdEltcGwgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywg
c3RyaW5nNCwgc3RyaW5nNSwgc3RyaW5nNiwgc3RyaW5nNyk7CisgICAgaWYgKCFyZXN1bHRJbXBs
KQorICAgICAgICBDUkFTSCgpOworICAgIHJldHVybiByZXN1bHRJbXBsOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0
cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5
cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNywgdHlwZW5hbWUgU3RyaW5n
VHlwZTg+CitVU3RyaW5nIG1ha2VVU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5
cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0
cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmluZ1R5cGU3IHN0cmlu
ZzcsIFN0cmluZ1R5cGU4IHN0cmluZzgpCit7CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBy
ZXN1bHRJbXBsID0gV1RGOjp0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIsIHN0cmluZzMs
IHN0cmluZzQsIHN0cmluZzUsIHN0cmluZzYsIHN0cmluZzcsIHN0cmluZzgpOworICAgIGlmICgh
cmVzdWx0SW1wbCkKKyAgICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gcmVzdWx0SW1wbDsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCShyZXZpc2lvbiA2OTU5MykJKGZyb20gSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25jYXRlbmF0ZS5oOjY5NTkzKQorKysgSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIFN0cmluZ0NvbmNhdGVuYXRlX2gKKyNkZWZpbmUgU3RyaW5nQ29uY2F0ZW5hdGVf
aAorCisjaW5jbHVkZSAiVVN0cmluZy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8
dHlwZW5hbWUgU3RyaW5nVHlwZT4KK2NsYXNzIFN0cmluZ1R5cGVBZGFwdGVyIHsKK307CisKK3Rl
bXBsYXRlPD4KK2NsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPGNoYXIqPiB7CitwdWJsaWM6CisgICAg
U3RyaW5nVHlwZUFkYXB0ZXI8Y2hhcio+KGNoYXIqIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZl
cigodW5zaWduZWQgY2hhciopYnVmZmVyKQorICAgICAgICAsIG1fbGVuZ3RoKHN0cmxlbihidWZm
ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSB7IHJldHVybiBtX2xl
bmd0aDsgfQorCisgICAgdm9pZCB3cml0ZVRvKFVDaGFyKiBkZXN0aW5hdGlvbikKKyAgICB7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKQorICAgICAgICAg
ICAgZGVzdGluYXRpb25baV0gPSBtX2J1ZmZlcltpXTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
Y29uc3QgdW5zaWduZWQgY2hhciogbV9idWZmZXI7CisgICAgdW5zaWduZWQgbV9sZW5ndGg7Cit9
OworCit0ZW1wbGF0ZTw+CitjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjb25zdCBjaGFyKj4gewor
cHVibGljOgorICAgIFN0cmluZ1R5cGVBZGFwdGVyPGNvbnN0IGNoYXIqPihjb25zdCBjaGFyKiBi
dWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoKHVuc2lnbmVkIGNoYXIqKWJ1ZmZlcikKKyAgICAg
ICAgLCBtX2xlbmd0aChzdHJsZW4oYnVmZmVyKSkKKyAgICB7CisgICAgfQorCisgICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgeyByZXR1cm4gbV9sZW5ndGg7IH0KKworICAgIHZvaWQgd3JpdGVUbyhVQ2hh
ciogZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gbV9idWZmZXJbaV07
CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1fYnVmZmVyOwor
ICAgIHVuc2lnbmVkIG1fbGVuZ3RoOworfTsKKwordGVtcGxhdGU8PgorY2xhc3MgU3RyaW5nVHlw
ZUFkYXB0ZXI8VVN0cmluZz4geworcHVibGljOgorICAgIFN0cmluZ1R5cGVBZGFwdGVyPFVTdHJp
bmc+KFVTdHJpbmcmIHN0cmluZykKKyAgICAgICAgOiBtX2RhdGEoc3RyaW5nLmNoYXJhY3RlcnMo
KSkKKyAgICAgICAgLCBtX2xlbmd0aChzdHJpbmcubGVuZ3RoKCkpCisgICAgeworICAgIH0KKwor
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisKKyAgICB2b2lkIHdy
aXRlVG8oVUNoYXIqIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IG1f
ZGF0YVtpXTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgVUNoYXIqIG1fZGF0YTsKKyAg
ICB1bnNpZ25lZCBtX2xlbmd0aDsKK307CisKK2lubGluZSB2b2lkIHN1bVdpdGhPdmVyZmxvdyh1
bnNpZ25lZCYgdG90YWwsIHVuc2lnbmVkIGFkZGVuZCwgYm9vbCYgb3ZlcmZsb3cpCit7CisgICAg
dW5zaWduZWQgb2xkVG90YWwgPSB0b3RhbDsKKyAgICB0b3RhbCA9IG9sZFRvdGFsICsgYWRkZW5k
OworICAgIGlmICh0b3RhbCA8IG9sZFRvdGFsKQorICAgICAgICBvdmVyZmxvdyA9IHRydWU7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMj4K
K1Bhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcx
LCBTdHJpbmdUeXBlMiBzdHJpbmcyKQoreworICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5
cGUxPiBhZGFwdGVyMShzdHJpbmcxKTsKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBl
Mj4gYWRhcHRlcjIoc3RyaW5nMik7CisKKyAgICBVQ2hhciogYnVmZmVyOworICAgIGJvb2wgb3Zl
cmZsb3cgPSBmYWxzZTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBhZGFwdGVyMS5sZW5ndGgoKTsK
KyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyMi5sZW5ndGgoKSwgb3ZlcmZsb3cp
OworICAgIGlmIChvdmVyZmxvdykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiByZXN1bHRJbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChsZW5ndGgsIGJ1ZmZlcik7CisgICAgaWYgKCFyZXN1bHRJbXBsKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIFVDaGFyKiByZXN1bHQgPSBidWZmZXI7CisgICAgYWRhcHRlcjEud3JpdGVUbyhy
ZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyMS5sZW5ndGgoKTsKKyAgICBhZGFwdGVyMi53
cml0ZVRvKHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVzdWx0SW1wbDsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJp
bmdUeXBlMz4KK1Bhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBl
MSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczKQorewor
ICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShzdHJpbmcxKTsKKyAg
ICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7CisgICAg
U3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTM+IGFkYXB0ZXIzKHN0cmluZzMpOworCisgICAg
VUNoYXIqIGJ1ZmZlciA9IDA7CisgICAgYm9vbCBvdmVyZmxvdyA9IGZhbHNlOworICAgIHVuc2ln
bmVkIGxlbmd0aCA9IGFkYXB0ZXIxLmxlbmd0aCgpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5n
dGgsIGFkYXB0ZXIyLmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxl
bmd0aCwgYWRhcHRlcjMubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBpZiAob3ZlcmZsb3cpCisg
ICAgICAgIHJldHVybiAwOworICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9
IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOworICAg
IGlmICghcmVzdWx0SW1wbCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBVQ2hhciogcmVzdWx0
ID0gYnVmZmVyOworICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0g
YWRhcHRlcjEubGVuZ3RoKCk7CisgICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOworICAgIHJl
c3VsdCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKKyAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7
CisKKyAgICByZXR1cm4gcmVzdWx0SW1wbDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5n
VHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5h
bWUgU3RyaW5nVHlwZTQ+CitQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3Ry
aW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5n
MywgU3RyaW5nVHlwZTQgc3RyaW5nNCkKK3sKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdU
eXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlw
ZTI+IGFkYXB0ZXIyKHN0cmluZzIpOworICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUz
PiBhZGFwdGVyMyhzdHJpbmczKTsKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlND4g
YWRhcHRlcjQoc3RyaW5nNCk7CisKKyAgICBVQ2hhciogYnVmZmVyOworICAgIGJvb2wgb3ZlcmZs
b3cgPSBmYWxzZTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBhZGFwdGVyMS5sZW5ndGgoKTsKKyAg
ICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyMi5sZW5ndGgoKSwgb3ZlcmZsb3cpOwor
ICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIzLmxlbmd0aCgpLCBvdmVyZmxvdyk7
CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjQubGVuZ3RoKCksIG92ZXJmbG93
KTsKKyAgICBpZiAob3ZlcmZsb3cpCisgICAgICAgIHJldHVybiAwOworICAgIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQobGVuZ3RoLCBidWZmZXIpOworICAgIGlmICghcmVzdWx0SW1wbCkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBVQ2hhciogcmVzdWx0ID0gYnVmZmVyOworICAgIGFkYXB0ZXIxLndyaXRlVG8o
cmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3RoKCk7CisgICAgYWRhcHRlcjIu
d3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKKyAgICBh
ZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgp
OworICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsKKworICAgIHJldHVybiByZXN1bHRJbXBs
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlw
ZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUg
U3RyaW5nVHlwZTU+CitQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5n
VHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywg
U3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSkKK3sKKyAgICBTdHJpbmdU
eXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7CisgICAgU3RyaW5nVHlw
ZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIpOworICAgIFN0cmluZ1R5cGVB
ZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsKKyAgICBTdHJpbmdUeXBlQWRh
cHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7CisgICAgU3RyaW5nVHlwZUFkYXB0
ZXI8U3RyaW5nVHlwZTU+IGFkYXB0ZXI1KHN0cmluZzUpOworCisgICAgVUNoYXIqIGJ1ZmZlcjsK
KyAgICBib29sIG92ZXJmbG93ID0gZmFsc2U7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gYWRhcHRl
cjEubGVuZ3RoKCk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjIubGVuZ3Ro
KCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyMy5sZW5n
dGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI0Lmxl
bmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjUu
bGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBpZiAob3ZlcmZsb3cpCisgICAgICAgIHJldHVybiAw
OworICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOworICAgIGlmICghcmVzdWx0SW1w
bCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBVQ2hhciogcmVzdWx0ID0gYnVmZmVyOworICAg
IGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3Ro
KCk7CisgICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVy
Mi5sZW5ndGgoKTsKKyAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9
IGFkYXB0ZXIzLmxlbmd0aCgpOworICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsKKyAgICBy
ZXN1bHQgKz0gYWRhcHRlcjQubGVuZ3RoKCk7CisgICAgYWRhcHRlcjUud3JpdGVUbyhyZXN1bHQp
OworCisgICAgcmV0dXJuIHJlc3VsdEltcGw7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmlu
Z1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVu
YW1lIFN0cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlw
ZTY+CitQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3Ry
aW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlw
ZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNikKK3sK
KyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7Cisg
ICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIpOworICAg
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsKKyAgICBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7CisgICAgU3Ry
aW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTU+IGFkYXB0ZXI1KHN0cmluZzUpOworICAgIFN0cmlu
Z1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU2PiBhZGFwdGVyNihzdHJpbmc2KTsKKworICAgIFVDaGFy
KiBidWZmZXI7CisgICAgYm9vbCBvdmVyZmxvdyA9IGZhbHNlOworICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGFkYXB0ZXIxLmxlbmd0aCgpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0
ZXIyLmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRh
cHRlcjMubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBh
ZGFwdGVyNC5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgs
IGFkYXB0ZXI1Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0
aCwgYWRhcHRlcjYubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBpZiAob3ZlcmZsb3cpCisgICAg
ICAgIHJldHVybiAwOworICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0
cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOworICAgIGlm
ICghcmVzdWx0SW1wbCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBVQ2hhciogcmVzdWx0ID0g
YnVmZmVyOworICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRh
cHRlcjEubGVuZ3RoKCk7CisgICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3Vs
dCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKKyAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7Cisg
ICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOworICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVz
dWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjQubGVuZ3RoKCk7CisgICAgYWRhcHRlcjUud3Jp
dGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKKyAgICBhZGFw
dGVyNi53cml0ZVRvKHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVzdWx0SW1wbDsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFt
ZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1
LCB0eXBlbmFtZSBTdHJpbmdUeXBlNiwgdHlwZW5hbWUgU3RyaW5nVHlwZTc+CitQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlw
ZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3Ry
aW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5n
NykKK3sKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5n
MSk7CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIp
OworICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsK
KyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7Cisg
ICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTU+IGFkYXB0ZXI1KHN0cmluZzUpOworICAg
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU2PiBhZGFwdGVyNihzdHJpbmc2KTsKKyAgICBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlNz4gYWRhcHRlcjcoc3RyaW5nNyk7CisKKyAgICBV
Q2hhciogYnVmZmVyOworICAgIGJvb2wgb3ZlcmZsb3cgPSBmYWxzZTsKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSBhZGFwdGVyMS5sZW5ndGgoKTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBh
ZGFwdGVyMi5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgs
IGFkYXB0ZXIzLmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0
aCwgYWRhcHRlcjQubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVu
Z3RoLCBhZGFwdGVyNS5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhs
ZW5ndGgsIGFkYXB0ZXI2Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93
KGxlbmd0aCwgYWRhcHRlcjcubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBpZiAob3ZlcmZsb3cp
CisgICAgICAgIHJldHVybiAwOworICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1w
bCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwor
ICAgIGlmICghcmVzdWx0SW1wbCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBVQ2hhciogcmVz
dWx0ID0gYnVmZmVyOworICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQg
Kz0gYWRhcHRlcjEubGVuZ3RoKCk7CisgICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOworICAg
IHJlc3VsdCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKKyAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3Vs
dCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOworICAgIGFkYXB0ZXI0LndyaXRl
VG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjQubGVuZ3RoKCk7CisgICAgYWRhcHRl
cjUud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKKyAg
ICBhZGFwdGVyNi53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXI2Lmxlbmd0
aCgpOworICAgIGFkYXB0ZXI3LndyaXRlVG8ocmVzdWx0KTsKKworICAgIHJldHVybiByZXN1bHRJ
bXBsOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5n
VHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5h
bWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBl
NywgdHlwZW5hbWUgU3RyaW5nVHlwZTg+CitQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VT
dHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlw
ZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3Ry
aW5nVHlwZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNywgU3RyaW5nVHlwZTggc3RyaW5n
OCkKK3sKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5n
MSk7CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIp
OworICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsK
KyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7Cisg
ICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTU+IGFkYXB0ZXI1KHN0cmluZzUpOworICAg
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU2PiBhZGFwdGVyNihzdHJpbmc2KTsKKyAgICBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlNz4gYWRhcHRlcjcoc3RyaW5nNyk7CisgICAgU3Ry
aW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTg+IGFkYXB0ZXI4KHN0cmluZzgpOworCisgICAgVUNo
YXIqIGJ1ZmZlcjsKKyAgICBib29sIG92ZXJmbG93ID0gZmFsc2U7CisgICAgdW5zaWduZWQgbGVu
Z3RoID0gYWRhcHRlcjEubGVuZ3RoKCk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRh
cHRlcjIubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBh
ZGFwdGVyMy5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgs
IGFkYXB0ZXI0Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0
aCwgYWRhcHRlcjUubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVu
Z3RoLCBhZGFwdGVyNi5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhs
ZW5ndGgsIGFkYXB0ZXI3Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93
KGxlbmd0aCwgYWRhcHRlcjgubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBpZiAob3ZlcmZsb3cp
CisgICAgICAgIHJldHVybiAwOworICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1w
bCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwor
ICAgIGlmICghcmVzdWx0SW1wbCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBVQ2hhciogcmVz
dWx0ID0gYnVmZmVyOworICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQg
Kz0gYWRhcHRlcjEubGVuZ3RoKCk7CisgICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOworICAg
IHJlc3VsdCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKKyAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3Vs
dCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOworICAgIGFkYXB0ZXI0LndyaXRl
VG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjQubGVuZ3RoKCk7CisgICAgYWRhcHRl
cjUud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKKyAg
ICBhZGFwdGVyNi53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXI2Lmxlbmd0
aCgpOworICAgIGFkYXB0ZXI3LndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRl
cjcubGVuZ3RoKCk7CisgICAgYWRhcHRlcjgud3JpdGVUbyhyZXN1bHQpOworCisgICAgcmV0dXJu
IHJlc3VsdEltcGw7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFt
ZSBTdHJpbmdUeXBlMj4KK1VTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBT
dHJpbmdUeXBlMiBzdHJpbmcyKQoreworICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0
SW1wbCA9IHRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMik7CisgICAgaWYgKCFyZXN1bHRJ
bXBsKQorICAgICAgICBDUkFTSCgpOworICAgIHJldHVybiByZXN1bHRJbXBsOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1l
IFN0cmluZ1R5cGUzPgorVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0
cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMpCit7CisgICAgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcy
LCBzdHJpbmczKTsKKyAgICBpZiAoIXJlc3VsdEltcGwpCisgICAgICAgIENSQVNIKCk7CisgICAg
cmV0dXJuIHJlc3VsdEltcGw7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0
eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmlu
Z1R5cGU0PgorVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5
cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQpCit7
CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFrZVN0cmluZyhz
dHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0KTsKKyAgICBpZiAoIXJlc3VsdEltcGwp
CisgICAgICAgIENSQVNIKCk7CisgICAgcmV0dXJuIHJlc3VsdEltcGw7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3Ry
aW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNT4KK1VT
dHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcy
LCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBz
dHJpbmc1KQoreworICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IHRyeU1h
a2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSk7Cisg
ICAgaWYgKCFyZXN1bHRJbXBsKQorICAgICAgICBDUkFTSCgpOworICAgIHJldHVybiByZXN1bHRJ
bXBsOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5n
VHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5h
bWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2PgorVVN0cmluZyBtYWtlU3RyaW5n
KFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0
cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5
cGU2IHN0cmluZzYpCit7CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0g
dHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1
LCBzdHJpbmc2KTsKKyAgICBpZiAoIXJlc3VsdEltcGwpCisgICAgICAgIENSQVNIKCk7CisgICAg
cmV0dXJuIHJlc3VsdEltcGw7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0
eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmlu
Z1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTYsIHR5cGVu
YW1lIFN0cmluZ1R5cGU3PgorVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEs
IFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0
cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmluZ1R5
cGU3IHN0cmluZzcpCit7CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0g
dHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1
LCBzdHJpbmc2LCBzdHJpbmc3KTsKKyAgICBpZiAoIXJlc3VsdEltcGwpCisgICAgICAgIENSQVNI
KCk7CisgICAgcmV0dXJuIHJlc3VsdEltcGw7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmlu
Z1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVu
YW1lIFN0cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlw
ZTYsIHR5cGVuYW1lIFN0cmluZ1R5cGU3LCB0eXBlbmFtZSBTdHJpbmdUeXBlOD4KK1VTdHJpbmcg
bWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJp
bmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1
LCBTdHJpbmdUeXBlNiBzdHJpbmc2LCBTdHJpbmdUeXBlNyBzdHJpbmc3LCBTdHJpbmdUeXBlOCBz
dHJpbmc4KQoreworICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IHRyeU1h
a2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSwgc3Ry
aW5nNiwgc3RyaW5nNywgc3RyaW5nOCk7CisgICAgaWYgKCFyZXN1bHRJbXBsKQorICAgICAgICBD
UkFTSCgpOworICAgIHJldHVybiByZXN1bHRJbXBsOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmgJKHJldmlzaW9uIDY5NTkzKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQAogI2lmbmRlZiBT
dHJpbmdDb25jYXRlbmF0ZV9oCiAjZGVmaW5lIFN0cmluZ0NvbmNhdGVuYXRlX2gKIAotI2luY2x1
ZGUgIlVTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNw
YWNlIEpTQyB7CituYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlw
ZT4KIGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyIHsKQEAgLTc5LDkgKzc5LDkgQEAgcHJpdmF0ZToK
IH07CiAKIHRlbXBsYXRlPD4KLWNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFVTdHJpbmc+IHsKK2Ns
YXNzIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZz4gewogcHVibGljOgotICAgIFN0cmluZ1R5cGVB
ZGFwdGVyPFVTdHJpbmc+KFVTdHJpbmcmIHN0cmluZykKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxT
dHJpbmc+KFN0cmluZyYgc3RyaW5nKQogICAgICAgICA6IG1fZGF0YShzdHJpbmcuY2hhcmFjdGVy
cygpKQogICAgICAgICAsIG1fbGVuZ3RoKHN0cmluZy5sZW5ndGgoKSkKICAgICB7CkBAIC0zNjEs
NyArMzYxLDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0cgogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTI+Ci1V
U3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5n
MikKK1N0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0
cmluZzIpCiB7CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFr
ZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyKTsKICAgICBpZiAoIXJlc3VsdEltcGwpCkBAIC0zNzAs
NyArMzcwLDcgQEAgVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIAogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5
cGVuYW1lIFN0cmluZ1R5cGUzPgotVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmlu
ZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMpCitTdHJpbmcgbWFr
ZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdU
eXBlMyBzdHJpbmczKQogewogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9
IHRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMyk7CiAgICAgaWYgKCFyZXN1
bHRJbXBsKQpAQCAtMzc5LDcgKzM3OSw3IEBAIFVTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBl
MSBzdHJpbmcxLCAKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1l
IFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQ+
Ci1VU3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3Ry
aW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCkKK1N0cmluZyBt
YWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmlu
Z1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQpCiB7CiAgICAgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBz
dHJpbmczLCBzdHJpbmc0KTsKICAgICBpZiAoIXJlc3VsdEltcGwpCkBAIC0zODgsNyArMzg4LDcg
QEAgVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIAogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0
cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTU+Ci1V
U3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5n
MiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUg
c3RyaW5nNSkKK1N0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5
cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0
cmluZ1R5cGU1IHN0cmluZzUpCiB7CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJ
bXBsID0gdHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBz
dHJpbmc1KTsKICAgICBpZiAoIXJlc3VsdEltcGwpCkBAIC0zOTcsNyArMzk3LDcgQEAgVVN0cmlu
ZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUz
LCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0
cmluZ1R5cGU2PgotVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmlu
Z1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQs
IFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYpCitTdHJpbmcgbWFrZVN0
cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBl
MyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJp
bmdUeXBlNiBzdHJpbmc2KQogewogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1w
bCA9IHRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3Ry
aW5nNSwgc3RyaW5nNik7CiAgICAgaWYgKCFyZXN1bHRJbXBsKQpAQCAtNDA2LDcgKzQwNiw3IEBA
IFVTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCAKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJp
bmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBl
bmFtZSBTdHJpbmdUeXBlNiwgdHlwZW5hbWUgU3RyaW5nVHlwZTc+Ci1VU3RyaW5nIG1ha2VTdHJp
bmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMg
c3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5n
VHlwZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNykKK1N0cmluZyBtYWtlU3RyaW5nKFN0
cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmlu
ZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2
IHN0cmluZzYsIFN0cmluZ1R5cGU3IHN0cmluZzcpCiB7CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiByZXN1bHRJbXBsID0gdHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmcz
LCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJpbmc2LCBzdHJpbmc3KTsKICAgICBpZiAoIXJlc3VsdElt
cGwpCkBAIC00MTUsNyArNDE1LDcgQEAgVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0
cmluZzEsIAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3Ry
aW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlw
ZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdU
eXBlNywgdHlwZW5hbWUgU3RyaW5nVHlwZTg+Ci1VU3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlw
ZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3Ry
aW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5n
NiwgU3RyaW5nVHlwZTcgc3RyaW5nNywgU3RyaW5nVHlwZTggc3RyaW5nOCkKK1N0cmluZyBtYWtl
U3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5
cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0
cmluZ1R5cGU2IHN0cmluZzYsIFN0cmluZ1R5cGU3IHN0cmluZzcsIFN0cmluZ1R5cGU4IHN0cmlu
ZzgpCiB7CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFrZVN0
cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJpbmc2
LCBzdHJpbmc3LCBzdHJpbmc4KTsKICAgICBpZiAoIXJlc3VsdEltcGwpCkBAIC00MjMsNiArNDIz
LDYgQEAgVVN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIAogICAgIHJldHVy
biByZXN1bHRJbXBsOwogfQogCi19IC8vIG5hbWVzcGFjZSBKU0MKK30gLy8gbmFtZXNwYWNlIFdU
RgogCiAjZW5kaWYK
</data>
<flag name="review"
          id="60458"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>