<?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>125423</bug_id>
          
          <creation_ts>2013-12-08 11:30:49 -0800</creation_ts>
          <short_desc>[WK2] Templatize CoreIPC message handling</short_desc>
          <delta_ts>2014-01-05 07:30:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>126469</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>957675</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-08 11:30:49 -0800</bug_when>
    <thetext>[WK2] Templatize CoreIPC message handling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957678</commentid>
    <comment_count>1</comment_count>
      <attachid>218702</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-08 11:35:39 -0800</bug_when>
    <thetext>Created attachment 218702
WIP

Almost ready for reviewing. This instance will be run through the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957679</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-08 11:36:22 -0800</bug_when>
    <thetext>This relies on C++11 template aliases, which aren&apos;t supported in GCC 4.6.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964498</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-05 07:30:43 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 126469 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218702</attachid>
            <date>2013-12-08 11:35:39 -0800</date>
            <delta_ts>2013-12-08 11:35:39 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-125423-20131208203537.patch</filename>
            <type>text/plain</type>
            <size>54463</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTFlOGYwZThjN2IxOGYw
OWFjNjRmZTU4NWRlZDJjNWIwMjEyMjRjMS4uZDFiNjA4NTFlZmY0ZTM3NzZiZDYwODcxMjE1OTVj
ODA0OTZiNDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTEyLTA4ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXSBUZW1wbGF0
aXplIENvcmVJUEMgbWVzc2FnZSBoYW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50cy5oOgorICAg
ICAgICAoQ29yZUlQQzo6TWVzc2FnZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChDb3JlSVBD
OjpNZXNzYWdlSGFuZGxlcjo6UmVwbHlIYW5kbGVyOjpoYW5kbGUpOgorICAgICAgICAoQ29yZUlQ
Qzo6VHVwbGVDb2Rlcjo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJUEM6OlR1cGxlQ29kZXI6OmRl
Y29kZSk6CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudHM6OkFyZ3VtZW50cyk6CisgICAgICAg
IChDb3JlSVBDOjpBcmd1bWVudHM6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVu
dHM6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmg6
CisgICAgICAgIChDb3JlSVBDOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6Omhh
bmRsZU1lc3NhZ2VWYXJpYWRpYyk6CisgICAgICAgIChDb3JlSVBDOjpoYW5kbGVNZXNzYWdlRGVs
YXllZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5OgorICAgICAgICAo
YXJndW1lbnRzX3R5cGVfb2xkKToKKyAgICAgICAgKGRlY29kZV90eXBlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdDIvbWVzc2FnZXNfdW5pdHRlc3QucHk6CisgICAgICAgIChDb3JlSVBDKToK
KwogMjAxMy0xMi0wOCAgQnJpYW4gSG9sdCAgPGJyaWFuLmhvbHRAc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgW1dLMl0gR3VhcmQgaW5jbHVkZSBvZiBTZWNJdGVtU2hpbS5oIHdpdGggRU5BQkxFKFNF
Q19JVEVNX1NISU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0FyZ3VtZW50cy5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudHMu
aAppbmRleCBhYzBmMDcxNDYwNTJmYzM2NWYwMjE4ZWZlMTdiYWNmY2ZiMjkxZWVkLi4zMTYyY2Uw
MmJkY2Y2ZjdkODQ0NjQ0MWNmNzE1OTcxOGI4ZmY4NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnRzLmgKQEAgLTMxLDM1OSArMzEsMTQxIEBACiAKIG5hbWVz
cGFjZSBDb3JlSVBDIHsKIAotdGVtcGxhdGU8c2l6ZV90IGluZGV4LCB0eXBlbmFtZS4uLiBFbGVt
ZW50cz4KLXN0cnVjdCBUdXBsZUNvZGVyIHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1l
bnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiYgdHVwbGUp
Ci0gICAgewotICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PHNpemVvZi4uLihFbGVtZW50cykg
LSBpbmRleD4odHVwbGUpOwotICAgICAgICBUdXBsZUNvZGVyPGluZGV4IC0gMSwgRWxlbWVudHMu
Li4+OjplbmNvZGUoZW5jb2RlciwgdHVwbGUpOwotICAgIH0KK2NsYXNzIENvbm5lY3Rpb247Citj
bGFzcyBNZXNzYWdlRGVjb2RlcjsKIAotICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkKK3RlbXBsYXRl
PGludC4uLiBNZXNzYWdlQXJndW1lbnRzSW5kZXg+CitzdHJ1Y3QgTWVzc2FnZUhhbmRsZXIgewor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZS4uLiBNZXNzYWdl
QXJndW1lbnRzPgorICAgIHN0YXRpYyB2b2lkIGhhbmRsZShDKiBvYmplY3QsIE1GIGZ1bmN0aW9u
LCBzdGQ6OnR1cGxlPE1lc3NhZ2VBcmd1bWVudHMuLi4+JiYgYXJncykKICAgICB7Ci0gICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoc3RkOjpnZXQ8c2l6ZW9mLi4uKEVsZW1lbnRzKSAtIGluZGV4
Pih0dXBsZSkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gVHVw
bGVDb2RlcjxpbmRleCAtIDEsIEVsZW1lbnRzLi4uPjo6ZGVjb2RlKGRlY29kZXIsIHR1cGxlKTsK
KyAgICAgICAgKG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDxNZXNzYWdlQXJndW1lbnRzSW5k
ZXg+KGFyZ3MpLi4uKTsKICAgICB9Ci19OwogCi10ZW1wbGF0ZTx0eXBlbmFtZS4uLiBFbGVtZW50
cz4KLXN0cnVjdCBUdXBsZUNvZGVyPDAsIEVsZW1lbnRzLi4uPiB7Ci0gICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JikK
LSAgICB7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYs
IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBl
bmFtZSBNRiwgdHlwZW5hbWUuLi4gTWVzc2FnZUFyZ3VtZW50cz4KKyAgICBzdGF0aWMgdm9pZCBo
YW5kbGUoQyogb2JqZWN0LCBNRiBmdW5jdGlvbiwgQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgc3Rk
Ojp0dXBsZTxNZXNzYWdlQXJndW1lbnRzLi4uPiYmIGFyZ3MpCiAgICAgewotICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgKG9iamVjdC0+KmZ1bmN0aW9uKShjb25uZWN0aW9uLCBzdGQ6Omdl
dDxNZXNzYWdlQXJndW1lbnRzSW5kZXg+KGFyZ3MpLi4uKTsKICAgICB9Ci19OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBFbGVtZW50cz4gc3RydWN0IEFyZ3VtZW50Q29kZXI8c3RkOjp0dXBsZTxF
bGVtZW50cy4uLj4+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiYgdHVwbGUpCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lLi4uIE1lc3NhZ2VBcmd1bWVudHM+
CisgICAgc3RhdGljIHZvaWQgaGFuZGxlKEMqIG9iamVjdCwgTUYgZnVuY3Rpb24sIHN0ZDo6dHVw
bGU8TWVzc2FnZUFyZ3VtZW50cy4uLj4mJiBhcmdzLCBNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikK
ICAgICB7Ci0gICAgICAgIFR1cGxlQ29kZXI8c2l6ZW9mLi4uKEVsZW1lbnRzKSwgRWxlbWVudHMu
Li4+OjplbmNvZGUoZW5jb2RlciwgdHVwbGUpOworICAgICAgICAob2JqZWN0LT4qZnVuY3Rpb24p
KHN0ZDo6Z2V0PE1lc3NhZ2VBcmd1bWVudHNJbmRleD4oYXJncykuLi4sIGRlY29kZXIpOwogICAg
IH0KIAotICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIHN0
ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0
eXBlbmFtZSBNRiwgdHlwZW5hbWUuLi4gTWVzc2FnZUFyZ3VtZW50cywgdHlwZW5hbWUgUj4KKyAg
ICBzdGF0aWMgdm9pZCBoYW5kbGUoQyogb2JqZWN0LCBNRiBmdW5jdGlvbiwgc3RkOjp0dXBsZTxN
ZXNzYWdlQXJndW1lbnRzLi4uPiYmIGFyZ3MsIFBhc3NSZWZQdHI8Uj4gZGVsYXllZFJlcGx5KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIFR1cGxlQ29kZXI8c2l6ZW9mLi4uKEVsZW1lbnRzKSwgRWxl
bWVudHMuLi4+OjpkZWNvZGUoZGVjb2RlciwgdHVwbGUpOworICAgICAgICAob2JqZWN0LT4qZnVu
Y3Rpb24pKHN0ZDo6Z2V0PE1lc3NhZ2VBcmd1bWVudHNJbmRleD4oYXJncykuLi4sIGRlbGF5ZWRS
ZXBseSk7CiAgICAgfQotfTsKIAotc3RydWN0IEFyZ3VtZW50czAgewotICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTw+IFZhbHVlVHlwZTsKKyAgICB0ZW1wbGF0ZTxpbnQuLi4gUmVwbHlBcmd1bWVudHNJ
bmRleD4KKyAgICBzdHJ1Y3QgUmVwbHlIYW5kbGVyIHsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lLi4uIE1lc3NhZ2VBcmd1bWVudHMsIHR5cGVuYW1l
Li4uIFJlcGx5QXJndW1lbnRzPgorICAgICAgICBzdGF0aWMgdm9pZCBoYW5kbGUoQyogb2JqZWN0
LCBNRiBmdW5jdGlvbiwgc3RkOjp0dXBsZTxNZXNzYWdlQXJndW1lbnRzLi4uPiYmIGFyZ3MsIHN0
ZDo6dHVwbGU8UmVwbHlBcmd1bWVudHMuLi4+JiByZXBseUFyZ3MpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8TWVzc2FnZUFyZ3VtZW50c0luZGV4
PihhcmdzKS4uLiwgc3RkOjpnZXQ8UmVwbHlBcmd1bWVudHNJbmRleD4ocmVwbHlBcmdzKS4uLik7
CisgICAgICAgIH0KIAotICAgIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYpIGNvbnN0IAot
ICAgIHsKLSAgICB9CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0
eXBlbmFtZS4uLiBNZXNzYWdlQXJndW1lbnRzLCB0eXBlbmFtZS4uLiBSZXBseUFyZ3VtZW50cz4K
KyAgICAgICAgc3RhdGljIHZvaWQgaGFuZGxlKEMqIG9iamVjdCwgTUYgZnVuY3Rpb24sIENvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24sIHN0ZDo6dHVwbGU8TWVzc2FnZUFyZ3VtZW50cy4uLj4mJiBhcmdz
LCBzdGQ6OnR1cGxlPFJlcGx5QXJndW1lbnRzLi4uPiYgcmVwbHlBcmdzKQorICAgICAgICB7Cisg
ICAgICAgICAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGNvbm5lY3Rpb24sIHN0ZDo6Z2V0PE1lc3Nh
Z2VBcmd1bWVudHNJbmRleD4oYXJncykuLi4sIHN0ZDo6Z2V0PFJlcGx5QXJndW1lbnRzSW5kZXg+
KHJlcGx5QXJncykuLi4pOworICAgICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJn
dW1lbnREZWNvZGVyJiwgQXJndW1lbnRzMCYpCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFt
ZS4uLiBNZXNzYWdlQXJndW1lbnRzLCB0eXBlbmFtZS4uLiBSZXBseUFyZ3VtZW50cz4KKyAgICAg
ICAgc3RhdGljIHZvaWQgaGFuZGxlKEMqIG9iamVjdCwgTUYgZnVuY3Rpb24sIHN0ZDo6dHVwbGU8
TWVzc2FnZUFyZ3VtZW50cy4uLj4mJiBhcmdzLCBNZXNzYWdlRGVjb2RlciYgZGVjb2Rlciwgc3Rk
Ojp0dXBsZTxSZXBseUFyZ3VtZW50cy4uLj4mIHJlcGx5QXJncykKKyAgICAgICAgeworICAgICAg
ICAgICAgKG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDxNZXNzYWdlQXJndW1lbnRzSW5kZXg+
KGFyZ3MpLi4uLCBkZWNvZGVyLCBzdGQ6OmdldDxSZXBseUFyZ3VtZW50c0luZGV4PihyZXBseUFy
Z3MpLi4uKTsKKyAgICAgICAgfQorICAgIH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUMT4g
c3RydWN0IEFyZ3VtZW50czEgewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VDE+Ojp0eXBlPjo6
dHlwZT4gVmFsdWVUeXBlOwotCi0gICAgQXJndW1lbnRzMSgpCi0gICAgewotICAgIH0KLQotICAg
IEFyZ3VtZW50czEoVDEgdDEpIAotICAgICAgICA6IGFyZ3VtZW50MSh0MSkKLSAgICB7Ci0gICAg
fQordGVtcGxhdGU8aW50IE4sIGludC4uLiBTZXF1ZW5jZVZhbHVlcz4KK3N0cnVjdCBNZXNzYWdl
QXJndW1lbnRzVW5wYWNrZXIgOiBNZXNzYWdlQXJndW1lbnRzVW5wYWNrZXI8TiAtIDEsIE4gLSAx
LCBTZXF1ZW5jZVZhbHVlcy4uLj4geyB9OwogCi0gICAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgZW5jb2RlciA8PCBhcmd1bWVudDE7
Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgQXJndW1lbnRzMSYgcmVzdWx0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZXIuZGVj
b2RlKHJlc3VsdC5hcmd1bWVudDEpOwotICAgIH0KLSAgICAKLSAgICBUMSBhcmd1bWVudDE7Cit0
ZW1wbGF0ZTxpbnQuLi4gU2VxdWVuY2VWYWx1ZXM+CitzdHJ1Y3QgTWVzc2FnZUFyZ3VtZW50c1Vu
cGFja2VyPDAsIFNlcXVlbmNlVmFsdWVzLi4uPiB7CisgICAgdHlwZWRlZiBNZXNzYWdlSGFuZGxl
cjxTZXF1ZW5jZVZhbHVlcy4uLj4gSGFuZGxlcjsKIH07Ci0gICAgCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDI+IHN0cnVjdCBBcmd1bWVudHMyIDogQXJndW1lbnRzMTxUMT4gewot
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDx0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VDE+Ojp0eXBlPjo6dHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVf
cmVmZXJlbmNlPFQyPjo6dHlwZT46OnR5cGU+IFZhbHVlVHlwZTsKIAotICAgIEFyZ3VtZW50czIo
KSAKLSAgICB7Ci0gICAgfQotCi0gICAgQXJndW1lbnRzMihUMSB0MSwgVDIgdDIpIAotICAgICAg
ICA6IEFyZ3VtZW50czE8VDE+KHQxKQotICAgICAgICAsIGFyZ3VtZW50Mih0MikKLSAgICB7Ci0g
ICAgfQotCi0gICAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQXJndW1lbnRzMTxUMT46OmVuY29kZShlbmNvZGVyKTsKLSAgICAgICAg
ZW5jb2RlciA8PCBhcmd1bWVudDI7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFy
Z3VtZW50RGVjb2RlciYgZGVjb2RlciwgQXJndW1lbnRzMiYgcmVzdWx0KQotICAgIHsKLSAgICAg
ICAgaWYgKCFBcmd1bWVudHMxPFQxPjo6ZGVjb2RlKGRlY29kZXIsIHJlc3VsdCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LmFyZ3VtZW50Mik7Ci0gICAgfQordGVtcGxhdGU8Y2xhc3MgTWVzc2FnZUFyZ3Vt
ZW50c1VucGFja2VyQ2xhc3MsIGludCBOLCBpbnQuLi4gU2VxdWVuY2VWYWx1ZXM+CitzdHJ1Y3Qg
UmVwbHlBcmd1bWVudHNVbnBhY2tlciA6IFJlcGx5QXJndW1lbnRzVW5wYWNrZXI8TWVzc2FnZUFy
Z3VtZW50c1VucGFja2VyQ2xhc3MsIE4gLSAxLCBOIC0gMSwgU2VxdWVuY2VWYWx1ZXMuLi4+IHsg
fTsKIAotICAgIFQyIGFyZ3VtZW50MjsKK3RlbXBsYXRlPGNsYXNzIE1lc3NhZ2VBcmd1bWVudHNV
bnBhY2tlckNsYXNzLCBpbnQuLi4gU2VxdWVuY2VWYWx1ZXM+CitzdHJ1Y3QgUmVwbHlBcmd1bWVu
dHNVbnBhY2tlcjxNZXNzYWdlQXJndW1lbnRzVW5wYWNrZXJDbGFzcywgMCwgU2VxdWVuY2VWYWx1
ZXMuLi4+IHsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIE1lc3NhZ2VBcmd1bWVudHNVbnBhY2tlckNs
YXNzOjp0ZW1wbGF0ZSBSZXBseUhhbmRsZXI8U2VxdWVuY2VWYWx1ZXMuLi4+IEhhbmRsZXI7CiB9
OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPiBzdHJ1
Y3QgQXJndW1lbnRzMyA6IEFyZ3VtZW50czI8VDEsIFQyPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVy
ZW5jZTxUMT46OnR5cGU+Ojp0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBz
dGQ6OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VDI+Ojp0eXBl
Pjo6dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29u
c3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQzPjo6dHlwZT46OnR5cGU+IFZhbHVl
VHlwZTsKLQotICAgIEFyZ3VtZW50czMoKQotICAgIHsKLSAgICB9Ci0KLSAgICBBcmd1bWVudHMz
KFQxIHQxLCBUMiB0MiwgVDMgdDMpIAotICAgICAgICA6IEFyZ3VtZW50czI8VDEsIFQyPih0MSwg
dDIpCi0gICAgICAgICwgYXJndW1lbnQzKHQzKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGVu
Y29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBBcmd1
bWVudHMyPFQxLCBUMj46OmVuY29kZShlbmNvZGVyKTsKLSAgICAgICAgZW5jb2RlciA8PCBhcmd1
bWVudDM7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYg
ZGVjb2RlciwgQXJndW1lbnRzMyYgcmVzdWx0KQotICAgIHsKLSAgICAgICAgaWYgKCFBcmd1bWVu
dHMyPFQxLCBUMj46OmRlY29kZShkZWNvZGVyLCByZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHJlc3VsdC5h
cmd1bWVudDMpOwotICAgIH0KLQotICAgIFQzIGFyZ3VtZW50MzsKK3RlbXBsYXRlPHR5cGVuYW1l
Li4uIE1lc3NhZ2VBcmd1bWVudHM+CitzdHJ1Y3QgTWVzc2FnZSB7CisgICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPE1lc3NhZ2VBcmd1bWVudHMuLi4+IEFyZ3VtZW50c1R5cGU7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBNZXNzYWdlQXJndW1lbnRzVW5wYWNrZXI8c2l6ZW9mLi4uKE1lc3NhZ2VBcmd1bWVu
dHMpPjo6SGFuZGxlciBIYW5kbGVyOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+IHN0cnVjdCBBcmd1bWVudHM0IDogQXJn
dW1lbnRzMzxUMSwgVDIsIFQzPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUMT46OnR5cGU+
Ojp0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25z
dDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VDI+Ojp0eXBlPjo6dHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfcmVmZXJlbmNlPFQzPjo6dHlwZT46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVy
ZW5jZTxUND46OnR5cGU+Ojp0eXBlPiBWYWx1ZVR5cGU7Ci0KLSAgICBBcmd1bWVudHM0KCkKLSAg
ICB7Ci0gICAgfQotCi0gICAgQXJndW1lbnRzNChUMSB0MSwgVDIgdDIsIFQzIHQzLCBUNCB0NCkK
LSAgICAgICAgOiBBcmd1bWVudHMzPFQxLCBUMiwgVDM+KHQxLCB0MiwgdDMpCi0gICAgICAgICwg
YXJndW1lbnQ0KHQ0KQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGVuY29kZShBcmd1bWVudEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBBcmd1bWVudHMzPFQxLCBUMiwg
VDM+OjplbmNvZGUoZW5jb2Rlcik7Ci0gICAgICAgIGVuY29kZXIgPDwgYXJndW1lbnQ0OwotICAg
IH0KLSAgICAKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBBcmd1bWVudHM0JiByZXN1bHQpCi0gICAgewotICAgICAgICBpZiAoIUFyZ3VtZW50czM8VDEs
IFQyLCBUMz46OmRlY29kZShkZWNvZGVyLCByZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHJlc3VsdC5hcmd1
bWVudDQpOwotICAgIH0KLQotICAgIFQ0IGFyZ3VtZW50NDsKLX07Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NT4gc3RydWN0IEFyZ3VtZW50czUgOiBBcmd1bWVudHM0PFQxLCBUMiwgVDMsIFQ0PiB7Ci0gICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUMT46OnR5cGU+Ojp0eXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZl
cmVuY2U8VDI+Ojp0eXBlPjo6dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUg
c3RkOjpyZW1vdmVfY29uc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQzPjo6dHlw
ZT46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2Nv
bnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUND46OnR5cGU+Ojp0eXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBz
dGQ6OnJlbW92ZV9yZWZlcmVuY2U8VDU+Ojp0eXBlPjo6dHlwZT4gVmFsdWVUeXBlOwotCi0gICAg
QXJndW1lbnRzNSgpCi0gICAgewotICAgIH0KLQotICAgIEFyZ3VtZW50czUoVDEgdDEsIFQyIHQy
LCBUMyB0MywgVDQgdDQsIFQ1IHQ1KQotICAgICAgICA6IEFyZ3VtZW50czQ8VDEsIFQyLCBUMywg
VDQ+KHQxLCB0MiwgdDMsIHQ0KQotICAgICAgICAsIGFyZ3VtZW50NSh0NSkKLSAgICB7Ci0gICAg
fQotCi0gICAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgQXJndW1lbnRzNDxUMSwgVDIsIFQzLCBUND46OmVuY29kZShlbmNvZGVyKTsK
LSAgICAgICAgZW5jb2RlciA8PCBhcmd1bWVudDU7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEFyZ3VtZW50czUmIHJlc3VsdCkK
LSAgICB7Ci0gICAgICAgIGlmICghQXJndW1lbnRzNDxUMSwgVDIsIFQzLCBUND46OmRlY29kZShk
ZWNvZGVyLCByZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAg
ICAgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHJlc3VsdC5hcmd1bWVudDUpOwotICAgIH0KLQot
ICAgIFQ1IGFyZ3VtZW50NTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDY+IHN0
cnVjdCBBcmd1bWVudHM2IDogQXJndW1lbnRzNTxUMSwgVDIsIFQzLCBUNCwgVDU+IHsKLSAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfcmVmZXJlbmNlPFQxPjo6dHlwZT46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVy
ZW5jZTxUMj46OnR5cGU+Ojp0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBz
dGQ6OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VDM+Ojp0eXBl
Pjo6dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29u
c3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ0Pjo6dHlwZT46OnR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUNT46OnR5cGU+Ojp0eXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZl
cmVuY2U8VDY+Ojp0eXBlPjo6dHlwZT4gVmFsdWVUeXBlOwotCi0gICAgQXJndW1lbnRzNigpCi0g
ICAgewotICAgIH0KLQotICAgIEFyZ3VtZW50czYoVDEgdDEsIFQyIHQyLCBUMyB0MywgVDQgdDQs
IFQ1IHQ1LCBUNiB0NikKLSAgICAgICAgOiBBcmd1bWVudHM1PFQxLCBUMiwgVDMsIFQ0LCBUNT4o
dDEsIHQyLCB0MywgdDQsIHQ1KQotICAgICAgICAsIGFyZ3VtZW50Nih0NikKK3RlbXBsYXRlPHNp
emVfdCBpbmRleCwgdHlwZW5hbWUuLi4gRWxlbWVudHM+CitzdHJ1Y3QgVHVwbGVDb2RlciB7Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3Rk
Ojp0dXBsZTxFbGVtZW50cy4uLj4mIHR1cGxlKQogICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBz
dGQ6OmdldDxzaXplb2YuLi4oRWxlbWVudHMpIC0gaW5kZXg+KHR1cGxlKTsKKyAgICAgICAgVHVw
bGVDb2RlcjxpbmRleCAtIDEsIEVsZW1lbnRzLi4uPjo6ZW5jb2RlKGVuY29kZXIsIHR1cGxlKTsK
ICAgICB9CiAKLSAgICB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICBBcmd1bWVudHM1PFQxLCBUMiwgVDMsIFQ0LCBUNT46OmVuY29kZShl
bmNvZGVyKTsKLSAgICAgICAgZW5jb2RlciA8PCBhcmd1bWVudDY7Ci0gICAgfQotICAgIAotICAg
IHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEFyZ3VtZW50czYm
IHJlc3VsdCkKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiYgdHVwbGUpCiAgICAgewotICAgICAgICBpZiAoIUFy
Z3VtZW50czU8VDEsIFQyLCBUMywgVDQsIFQ1Pjo6ZGVjb2RlKGRlY29kZXIsIHJlc3VsdCkpCisg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RkOjpnZXQ8c2l6ZW9mLi4uKEVsZW1lbnRzKSAt
IGluZGV4Pih0dXBsZSkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAg
ICAgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHJlc3VsdC5hcmd1bWVudDYpOworICAgICAgICBy
ZXR1cm4gVHVwbGVDb2RlcjxpbmRleCAtIDEsIEVsZW1lbnRzLi4uPjo6ZGVjb2RlKGRlY29kZXIs
IHR1cGxlKTsKICAgICB9Ci0KLSAgICBUNiBhcmd1bWVudDY7CiB9OwogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4gc3RydWN0IEFyZ3VtZW50czcgOiBBcmd1bWVu
dHM2PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dHlw
ZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQx
Pjo6dHlwZT46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUMj46OnR5cGU+Ojp0eXBl
LAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VDM+Ojp0eXBlPjo6dHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8dHlwZW5hbWUgc3RkOjpyZW1v
dmVfcmVmZXJlbmNlPFQ0Pjo6dHlwZT46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgIHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxU
NT46OnR5cGU+Ojp0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VDY+Ojp0eXBlPjo6dHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8dHlw
ZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ3Pjo6dHlwZT46OnR5cGU+IFZhbHVlVHlwZTsK
LQotICAgIEFyZ3VtZW50czcoKQotICAgIHsKLSAgICB9Ci0KLSAgICBBcmd1bWVudHM3KFQxIHQx
LCBUMiB0MiwgVDMgdDMsIFQ0IHQ0LCBUNSB0NSwgVDYgdDYsIFQ3IHQ3KQotICAgICAgICA6IEFy
Z3VtZW50czY8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4odDEsIHQyLCB0MywgdDQsIHQ1LCB0NikK
LSAgICAgICAgLCBhcmd1bWVudDcodDcpCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBFbGVtZW50cz4K
K3N0cnVjdCBUdXBsZUNvZGVyPDAsIEVsZW1lbnRzLi4uPiB7CisgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JikKICAg
ICB7CiAgICAgfQogCi0gICAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgQXJndW1lbnRzNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Pjo6
ZW5jb2RlKGVuY29kZXIpOwotICAgICAgICBlbmNvZGVyIDw8IGFyZ3VtZW50NzsKLSAgICB9Ci0g
ICAgCi0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgQXJn
dW1lbnRzNyYgcmVzdWx0KQorICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIm
LCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiYpCiAgICAgewotICAgICAgICBpZiAoIUFyZ3VtZW50
czY8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj46OmRlY29kZShkZWNvZGVyLCByZXN1bHQpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIGRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5hcmd1bWVudDcpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0K
LSAgICBUNyBhcmd1bWVudDc7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0
eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+IHN0cnVjdCBBcmd1bWVudHM4IDogQXJndW1lbnRzNzxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VDE+
Ojp0eXBlPjo6dHlwZSwKLSAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBz
dGQ6OnJlbW92ZV9yZWZlcmVuY2U8VDI+Ojp0eXBlPjo6dHlwZSwKLSAgICB0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VDM+Ojp0eXBlPjo6
dHlwZSwKLSAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9yZWZlcmVuY2U8VDQ+Ojp0eXBlPjo6dHlwZSwKLSAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9j
b25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VDU+Ojp0eXBlPjo6dHlwZSwKLSAg
ICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVu
Y2U8VDY+Ojp0eXBlPjo6dHlwZSwKLSAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VDc+Ojp0eXBlPjo6dHlwZSwKLSAgICB0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VDg+Ojp0
eXBlPjo6dHlwZT4gVmFsdWVUeXBlOwotCi0gICAgQXJndW1lbnRzOCgpIHsgfQotICAgIAotICAg
IEFyZ3VtZW50czgoVDEgdDEsIFQyIHQyLCBUMyB0MywgVDQgdDQsIFQ1IHQ1LCBUNiB0NiwgVDcg
dDcsIFQ4IHQ4KQotICAgICAgICA6IEFyZ3VtZW50czc8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDc+KHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3KQotICAgICAgICAsIGFyZ3VtZW50OCh0OCkK
LSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4mIHR1
cGxlKQogICAgIHsKLSAgICAgICAgQXJndW1lbnRzNzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
Nz46OmVuY29kZShlbmNvZGVyKTsKLSAgICAgICAgZW5jb2RlciA8PCBhcmd1bWVudDg7CisgICAg
ICAgIFR1cGxlQ29kZXI8c2l6ZW9mLi4uKEVsZW1lbnRzKSwgRWxlbWVudHMuLi4+OjplbmNvZGUo
ZW5jb2RlciwgdHVwbGUpOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVu
dERlY29kZXImIGRlY29kZXIsIEFyZ3VtZW50czgmIHJlc3VsdCkKKyAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiYg
dHVwbGUpCiAgICAgewotICAgICAgICBpZiAoIUFyZ3VtZW50czc8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDc+OjpkZWNvZGUoZGVjb2RlciwgcmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUocmVzdWx0LmFyZ3VtZW50OCk7
CisgICAgICAgIHJldHVybiBUdXBsZUNvZGVyPHNpemVvZi4uLihFbGVtZW50cyksIEVsZW1lbnRz
Li4uPjo6ZGVjb2RlKGRlY29kZXIsIHR1cGxlKTsKICAgICB9Ci0KLSAgICBUOCBhcmd1bWVudDg7
CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+IHN0cnVjdCBBcmd1bWVudHMxMCA6IEFy
Z3VtZW50czg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiB7Ci0gICAgdHlwZWRlZiBz
dGQ6OnR1cGxlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X3JlZmVyZW5jZTxUMT46OnR5cGU+Ojp0eXBlLAotICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2Nv
bnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUMj46OnR5cGU+Ojp0eXBlLAotICAg
IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5j
ZTxUMz46OnR5cGU+Ojp0eXBlLAotICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUND46OnR5cGU+Ojp0eXBlLAotICAgIHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUNT46OnR5
cGU+Ojp0eXBlLAotICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3JlZmVyZW5jZTxUNj46OnR5cGU+Ojp0eXBlLAotICAgIHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUNz46OnR5cGU+Ojp0eXBl
LAotICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3Jl
ZmVyZW5jZTxUOD46OnR5cGU+Ojp0eXBlLAotICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0
PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUOT46OnR5cGU+Ojp0eXBlLAotICAgIHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxU
MTA+Ojp0eXBlPjo6dHlwZT4gVmFsdWVUeXBlOwordGVtcGxhdGU8dHlwZW5hbWUuLi4gVHlwZXM+
CitzdHJ1Y3QgQXJndW1lbnRzIHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfY29uc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFR5cGVzPjo6dHlw
ZT46OnR5cGUuLi4+IFZhbHVlVHlwZTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBNZXNzYWdlVW5yb2xs
ZXJDbGFzcz4KKyAgICB1c2luZyBIYW5kbGVyID0gdHlwZW5hbWUgUmVwbHlBcmd1bWVudHNVbnBh
Y2tlcjxNZXNzYWdlVW5yb2xsZXJDbGFzcywgc2l6ZW9mLi4uKFR5cGVzKT46OkhhbmRsZXI7CiAK
LSAgICBBcmd1bWVudHMxMCgpIHsgfQotICAgIAotICAgIEFyZ3VtZW50czEwKFQxIHQxLCBUMiB0
MiwgVDMgdDMsIFQ0IHQ0LCBUNSB0NSwgVDYgdDYsIFQ3IHQ3LCBUOCB0OCwgVDkgdDksIFQxMCB0
MTApCi0gICAgICAgIDogQXJndW1lbnRzODxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+
KHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCkKLSAgICAgICAgLCBhcmd1bWVudDkodDkp
Ci0gICAgICAgICwgYXJndW1lbnQxMCh0MTApCisgICAgQXJndW1lbnRzKFR5cGVzLi4uIHR5cGVz
KQorICAgICAgICA6IGFyZ3VtZW50cyh0eXBlcy4uLikKICAgICB7CiAgICAgfQogCiAgICAgdm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKLSAgICAgICAg
QXJndW1lbnRzODxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+OjplbmNvZGUoZW5jb2Rl
cik7Ci0gICAgICAgIGVuY29kZXIgPDwgYXJndW1lbnQ5OwotICAgICAgICBlbmNvZGVyIDw8IGFy
Z3VtZW50MTA7CisgICAgICAgIGVuY29kZXIuZW5jb2RlKGFyZ3VtZW50cyk7CiAgICAgfQogCi0g
ICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgQXJndW1lbnRz
MTAmIHJlc3VsdCkKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNv
ZGVyLCBBcmd1bWVudHMmIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIGlmICghQXJndW1lbnRzODxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+OjpkZWNvZGUoZGVjb2RlciwgcmVzdWx0KSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBkZWNvZGVyLmRlY29kZShyZXN1
bHQuYXJndW1lbnQ5KTsKLSAgICAgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHJlc3VsdC5hcmd1
bWVudDEwKTsKKyAgICAgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHJlc3VsdC5hcmd1bWVudHMp
OwogICAgIH0KIAotICAgIFQ5IGFyZ3VtZW50OTsKLSAgICBUMTAgYXJndW1lbnQxMDsKKyAgICBz
dGQ6OnR1cGxlPFR5cGVzLi4uPiBhcmd1bWVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBDb3Jl
SVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1l
c3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5o
CmluZGV4IDlkYjM4ZGViOTY5YmVjZDJhN2U3NjZkOTk4NjI5MjU1ODFjYWI4MWEuLjhkY2E0ZWRj
Njc1YjBkMWViOTlhOTM0MTIyN2M5NTE3ZGFmN2ZhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC03LDQzNiArNyw3OCBAQAogCiBu
YW1lc3BhY2UgQ29yZUlQQyB7CiAKLS8vIERpc3BhdGNoIGZ1bmN0aW9ucyB3aXRoIG5vIHJlcGx5
IGFyZ3VtZW50cy4KLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgotdm9pZCBjYWxs
TWVtYmVyRnVuY3Rpb24oc3RkOjp0dXBsZTw+JiYsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCi17
Ci0gICAgKG9iamVjdC0+KmZ1bmN0aW9uKSgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0
eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDE+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihzdGQ6OnR1
cGxlPFAxPiYmIGFyZ3MsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCi17Ci0gICAgKG9iamVjdC0+
KmZ1bmN0aW9uKShzdGQ6OmdldDwwPihhcmdzKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEMs
IHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDI+Ci12b2lkIGNhbGxNZW1iZXJG
dW5jdGlvbihzdGQ6OnR1cGxlPFAxLCBQMj4mJiBhcmdzLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9u
KQotewotICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8MD4oYXJncyksIHN0ZDo6Z2V0
PDE+KGFyZ3MpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVu
YW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDM+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlv
bihzdGQ6OnR1cGxlPFAxLCBQMiwgUDM+JiYgYXJncywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikK
LXsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6Z2V0PDA+KGFyZ3MpLCBzdGQ6OmdldDwx
PihhcmdzKSwgc3RkOjpnZXQ8Mj4oYXJncykpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0
eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5h
bWUgUDQ+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihzdGQ6OnR1cGxlPFAxLCBQMiwgUDMsIFA0
PiYmIGFyZ3MsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCi17Ci0gICAgKG9iamVjdC0+KmZ1bmN0
aW9uKShzdGQ6OmdldDwwPihhcmdzKSwgc3RkOjpnZXQ8MT4oYXJncyksIHN0ZDo6Z2V0PDI+KGFy
Z3MpLCBzdGQ6OmdldDwzPihhcmdzKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVu
YW1lIE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQ
NCwgdHlwZW5hbWUgUDU+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihzdGQ6OnR1cGxlPFAxLCBQ
MiwgUDMsIFA0LCBQNT4mJiBhcmdzLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQotewotICAgIChv
YmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8MD4oYXJncyksIHN0ZDo6Z2V0PDE+KGFyZ3MpLCBz
dGQ6OmdldDwyPihhcmdzKSwgc3RkOjpnZXQ8Mz4oYXJncyksIHN0ZDo6Z2V0PDQ+KGFyZ3MpKTsK
LX0KLSAgICAKLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwg
dHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUsIHR5cGVu
YW1lIFA2Pgotdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oc3RkOjp0dXBsZTxQMSwgUDIsIFAzLCBQ
NCwgUDUsIFA2PiYmIGFyZ3MsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCi17Ci0gICAgKG9iamVj
dC0+KmZ1bmN0aW9uKShzdGQ6OmdldDwwPihhcmdzKSwgc3RkOjpnZXQ8MT4oYXJncyksIHN0ZDo6
Z2V0PDI+KGFyZ3MpLCBzdGQ6OmdldDwzPihhcmdzKSwgc3RkOjpnZXQ8ND4oYXJncyksIHN0ZDo6
Z2V0PDU+KGFyZ3MpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5
cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFt
ZSBQNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIFA3Pgotdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24o
c3RkOjp0dXBsZTxQMSwgUDIsIFAzLCBQNCwgUDUsIFA2LCBQNz4mJiBhcmdzLCBDKiBvYmplY3Qs
IE1GIGZ1bmN0aW9uKQotewotICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8MD4oYXJn
cyksIHN0ZDo6Z2V0PDE+KGFyZ3MpLCBzdGQ6OmdldDwyPihhcmdzKSwgc3RkOjpnZXQ8Mz4oYXJn
cyksIHN0ZDo6Z2V0PDQ+KGFyZ3MpLCBzdGQ6OmdldDw1PihhcmdzKSwgc3RkOjpnZXQ8Nj4oYXJn
cykpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEs
IHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1LCB0eXBl
bmFtZSBQNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIFA4Pgotdm9pZCBjYWxsTWVtYmVyRnVuY3Rp
b24oc3RkOjp0dXBsZTxQMSwgUDIsIFAzLCBQNCwgUDUsIFA2LCBQNywgUDg+JiYgYXJncywgQyog
b2JqZWN0LCBNRiBmdW5jdGlvbikKLXsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6Z2V0
PDA+KGFyZ3MpLCBzdGQ6OmdldDwxPihhcmdzKSwgc3RkOjpnZXQ8Mj4oYXJncyksIHN0ZDo6Z2V0
PDM+KGFyZ3MpLCBzdGQ6OmdldDw0PihhcmdzKSwgc3RkOjpnZXQ8NT4oYXJncyksIHN0ZDo6Z2V0
PDY+KGFyZ3MpLCBzdGQ6OmdldDw3PihhcmdzKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEMs
IHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBl
bmFtZSBQNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUg
UDgsIHR5cGVuYW1lIFA5LCB0eXBlbmFtZSBQMTA+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihz
dGQ6OnR1cGxlPFAxLCBQMiwgUDMsIFA0LCBQNSwgUDYsIFA3LCBQOCwgUDksIFAxMD4mJiBhcmdz
LCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQotewotICAgIChvYmplY3QtPipmdW5jdGlvbikoc3Rk
OjpnZXQ8MD4oYXJncyksIHN0ZDo6Z2V0PDE+KGFyZ3MpLCBzdGQ6OmdldDwyPihhcmdzKSwgc3Rk
OjpnZXQ8Mz4oYXJncyksIHN0ZDo6Z2V0PDQ+KGFyZ3MpLCBzdGQ6OmdldDw1PihhcmdzKSwgc3Rk
OjpnZXQ8Nj4oYXJncyksIHN0ZDo6Z2V0PDc+KGFyZ3MpLCBzdGQ6OmdldDw4PihhcmdzKSwgc3Rk
OjpnZXQ8OT4oYXJncykpOwotfQotCi0vLyBEaXNwYXRjaCBmdW5jdGlvbnMgd2l0aCByZXBseSBh
cmd1bWVudHMuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgotdm9pZCBjYWxs
TWVtYmVyRnVuY3Rpb24oc3RkOjp0dXBsZTw+JiYsIHN0ZDo6dHVwbGU8PiYsIEMqIG9iamVjdCwg
TUYgZnVuY3Rpb24pCi17Ci0gICAgKG9iamVjdC0+KmZ1bmN0aW9uKSgpOwotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUjE+Ci12b2lkIGNhbGxNZW1iZXJG
dW5jdGlvbihzdGQ6OnR1cGxlPD4mJiwgc3RkOjp0dXBsZTxSMT4mIHJlcGx5QXJncywgQyogb2Jq
ZWN0LCBNRiBmdW5jdGlvbikKLXsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6Z2V0PDA+
KHJlcGx5QXJncykpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlw
ZW5hbWUgUjEsIHR5cGVuYW1lIFIyPgotdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oc3RkOjp0dXBs
ZTw+JiYsIHN0ZDo6dHVwbGU8UjEsIFIyPiYgcmVwbHlBcmdzLCBDKiBvYmplY3QsIE1GIGZ1bmN0
aW9uKQotewotICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8MD4ocmVwbHlBcmdzKSwg
c3RkOjpnZXQ8MT4ocmVwbHlBcmdzKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVu
YW1lIE1GLCB0eXBlbmFtZSBQMT4KLXZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKHN0ZDo6dHVwbGU8
UDE+JiYgYXJncywgc3RkOjp0dXBsZTw+JiwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKLXsKLSAg
ICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6Z2V0PDA+KGFyZ3MpKTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBSMT4KLXZvaWQg
Y2FsbE1lbWJlckZ1bmN0aW9uKHN0ZDo6dHVwbGU8UDE+JiYgYXJncywgc3RkOjp0dXBsZTxSMT4m
IHJlcGx5QXJncywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKLXsKLSAgICAob2JqZWN0LT4qZnVu
Y3Rpb24pKHN0ZDo6Z2V0PDA+KGFyZ3MpLCBzdGQ6OmdldDwwPihyZXBseUFyZ3MpKTsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBS
MSwgdHlwZW5hbWUgUjI+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihzdGQ6OnR1cGxlPFAxPiYm
IGFyZ3MsIHN0ZDo6dHVwbGU8UjEsIFIyPiYgcmVwbHlBcmdzLCBDKiBvYmplY3QsIE1GIGZ1bmN0
aW9uKQotewotICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8MD4oYXJncyksIHN0ZDo6
Z2V0PDA+KHJlcGx5QXJncyksIHN0ZDo6Z2V0PDE+KHJlcGx5QXJncykpOwotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFIxLCB0eXBl
bmFtZSBSMiwgdHlwZW5hbWUgUjM+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihzdGQ6OnR1cGxl
PFAxPiYmIGFyZ3MsIHN0ZDo6dHVwbGU8UjEsIFIyLCBSMz4mIHJlcGx5QXJncywgQyogb2JqZWN0
LCBNRiBmdW5jdGlvbikKLXsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6Z2V0PDA+KGFy
Z3MpLCBzdGQ6OmdldDwwPihyZXBseUFyZ3MpLCBzdGQ6OmdldDwxPihyZXBseUFyZ3MpLCBzdGQ6
OmdldDwyPihyZXBseUFyZ3MpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUg
TUYsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMj4KLXZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKHN0
ZDo6dHVwbGU8UDEsIFAyPiYmIGFyZ3MsIHN0ZDo6dHVwbGU8PiYsIEMqIG9iamVjdCwgTUYgZnVu
Y3Rpb24pCi17Ci0gICAgKG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDwwPihhcmdzKSwgc3Rk
OjpnZXQ8MT4oYXJncykpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwg
dHlwZW5hbWUgUDEsIHR5cGVuYW1lIFIxLCB0eXBlbmFtZSBSMiwgdHlwZW5hbWUgUjMsIHR5cGVu
YW1lIFI0Pgotdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oc3RkOjp0dXBsZTxQMT4mJiBhcmdzLCBB
cmd1bWVudHM0PFIxLCBSMiwgUjMsIFI0PiYgcmVwbHlBcmdzLCBDKiBvYmplY3QsIE1GIGZ1bmN0
aW9uKQotewotICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8MD4oYXJncyksIHN0ZDo6
Z2V0PDA+KHJlcGx5QXJncyksIHN0ZDo6Z2V0PDE+KHJlcGx5QXJncyksIHN0ZDo6Z2V0PDI+KHJl
cGx5QXJncyksIHN0ZDo6Z2V0PDM+KHJlcGx5QXJncykpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBSMT4K
LXZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKHN0ZDo6dHVwbGU8UDEsIFAyPiYmIGFyZ3MsIHN0ZDo6
dHVwbGU8UjE+JiByZXBseUFyZ3MsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCi17Ci0gICAgKG9i
amVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDwwPihhcmdzKSwgc3RkOjpnZXQ8MT4oYXJncyksIHN0
ZDo6Z2V0PDA+KHJlcGx5QXJncykpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFt
ZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBSMSwgdHlwZW5hbWUgUjI+
Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihzdGQ6OnR1cGxlPFAxLCBQMj4mJiBhcmdzLCBzdGQ6
OnR1cGxlPFIxLCBSMj4mIHJlcGx5QXJncywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKLXsKLSAg
ICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6Z2V0PDA+KGFyZ3MpLCBzdGQ6OmdldDwxPihhcmdz
KSwgc3RkOjpnZXQ8MD4ocmVwbHlBcmdzKSwgc3RkOjpnZXQ8MT4ocmVwbHlBcmdzKSk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUg
UDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBSMT4KLXZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKHN0
ZDo6dHVwbGU8UDEsIFAyLCBQMz4mJiBhcmdzLCBzdGQ6OnR1cGxlPFIxPiYgcmVwbHlBcmdzLCBD
KiBvYmplY3QsIE1GIGZ1bmN0aW9uKQotewotICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpn
ZXQ8MD4oYXJncyksIHN0ZDo6Z2V0PDE+KGFyZ3MpLCBzdGQ6OmdldDwyPihhcmdzKSwgc3RkOjpn
ZXQ8MD4ocmVwbHlBcmdzKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1G
LCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBSMSwgdHlw
ZW5hbWUgUjI+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihzdGQ6OnR1cGxlPFAxLCBQMiwgUDM+
JiYgYXJncywgc3RkOjp0dXBsZTxSMSwgUjI+JiByZXBseUFyZ3MsIEMqIG9iamVjdCwgTUYgZnVu
Y3Rpb24pCi17Ci0gICAgKG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDwwPihhcmdzKSwgc3Rk
OjpnZXQ8MT4oYXJncyksIHN0ZDo6Z2V0PDI+KGFyZ3MpLCBzdGQ6OmdldDwwPihyZXBseUFyZ3Mp
LCBzdGQ6OmdldDwxPihyZXBseUFyZ3MpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlw
ZW5hbWUgTUYsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1l
IFA0LCB0eXBlbmFtZSBSMT4KLXZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKHN0ZDo6dHVwbGU8UDEs
IFAyLCBQMywgUDQ+JiYgYXJncywgc3RkOjp0dXBsZTxSMT4mIHJlcGx5QXJncywgQyogb2JqZWN0
LCBNRiBmdW5jdGlvbikKLXsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6Z2V0PDA+KGFy
Z3MpLCBzdGQ6OmdldDwxPihhcmdzKSwgc3RkOjpnZXQ8Mj4oYXJncyksIHN0ZDo6Z2V0PDM+KGFy
Z3MpLCBzdGQ6OmdldDwwPihyZXBseUFyZ3MpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQywg
dHlwZW5hbWUgTUYsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVu
YW1lIFA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIFIxPgotdm9pZCBjYWxs
TWVtYmVyRnVuY3Rpb24oc3RkOjp0dXBsZTxQMSwgUDIsIFAzLCBQNCwgUDUsIFA2PiYmIGFyZ3Ms
IHN0ZDo6dHVwbGU8UjE+JiByZXBseUFyZ3MsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCi17Ci0g
ICAgKG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDwwPihhcmdzKSwgc3RkOjpnZXQ8MT4oYXJn
cyksIHN0ZDo6Z2V0PDI+KGFyZ3MpLCBzdGQ6OmdldDwzPihhcmdzKSwgc3RkOjpnZXQ8ND4oYXJn
cyksIHN0ZDo6Z2V0PDU+KGFyZ3MpLCBzdGQ6OmdldDwwPihyZXBseUFyZ3MpKTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwg
dHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgUDYsIHR5cGVu
YW1lIFA3LCB0eXBlbmFtZSBSMT4KLXZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKHN0ZDo6dHVwbGU8
UDEsIFAyLCBQMywgUDQsIFA1LCBQNiwgUDc+JiYgYXJncywgc3RkOjp0dXBsZTxSMT4mIHJlcGx5
QXJncywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKLXsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24p
KHN0ZDo6Z2V0PDA+KGFyZ3MpLCBzdGQ6OmdldDwxPihhcmdzKSwgc3RkOjpnZXQ8Mj4oYXJncyks
IHN0ZDo6Z2V0PDM+KGFyZ3MpLCBzdGQ6OmdldDw0PihhcmdzKSwgc3RkOjpnZXQ8NT4oYXJncyks
IHN0ZDo6Z2V0PDY+KGFyZ3MpLCBzdGQ6OmdldDwwPihyZXBseUFyZ3MpKTsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlw
ZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1l
IFA3LCB0eXBlbmFtZSBQOCwgdHlwZW5hbWUgUjE+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihz
dGQ6OnR1cGxlPFAxLCBQMiwgUDMsIFA0LCBQNSwgUDYsIFA3LCBQOD4mJiBhcmdzLCBzdGQ6OnR1
cGxlPFIxPiYgcmVwbHlBcmdzLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQotewotICAgIChvYmpl
Y3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8MD4oYXJncyksIHN0ZDo6Z2V0PDE+KGFyZ3MpLCBzdGQ6
OmdldDwyPihhcmdzKSwgc3RkOjpnZXQ8Mz4oYXJncyksIHN0ZDo6Z2V0PDQ+KGFyZ3MpLCBzdGQ6
OmdldDw1PihhcmdzKSwgc3RkOjpnZXQ8Nj4oYXJncyksIHN0ZDo6Z2V0PDc+KGFyZ3MpLCBzdGQ6
OmdldDwwPihyZXBseUFyZ3MpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUg
TUYsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0
eXBlbmFtZSBSMSwgdHlwZW5hbWUgUjI+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihzdGQ6OnR1
cGxlPFAxLCBQMiwgUDMsIFA0PiYmIGFyZ3MsIHN0ZDo6dHVwbGU8UjEsIFIyPiYgcmVwbHlBcmdz
LCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQotewotICAgIChvYmplY3QtPipmdW5jdGlvbikoc3Rk
OjpnZXQ8MD4oYXJncyksIHN0ZDo6Z2V0PDE+KGFyZ3MpLCBzdGQ6OmdldDwyPihhcmdzKSwgc3Rk
OjpnZXQ8Mz4oYXJncyksIHN0ZDo6Z2V0PDA+KHJlcGx5QXJncyksIHN0ZDo6Z2V0PDE+KHJlcGx5
QXJncykpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUg
UDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1LCB0
eXBlbmFtZSBSMSwgdHlwZW5hbWUgUjI+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihzdGQ6OnR1
cGxlPFAxLCBQMiwgUDMsIFA0LCBQNT4mJiBhcmdzLCBzdGQ6OnR1cGxlPFIxLCBSMj4mIHJlcGx5
QXJncywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKLXsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24p
KHN0ZDo6Z2V0PDA+KGFyZ3MpLCBzdGQ6OmdldDwxPihhcmdzKSwgc3RkOjpnZXQ8Mj4oYXJncyks
IHN0ZDo6Z2V0PDM+KGFyZ3MpLCBzdGQ6OmdldDw0PihhcmdzKSwgc3RkOjpnZXQ8MD4ocmVwbHlB
cmdzKSwgc3RkOjpnZXQ8MT4ocmVwbHlBcmdzKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEMs
IHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBl
bmFtZSBQNCwgdHlwZW5hbWUgUjEsIHR5cGVuYW1lIFIyLCB0eXBlbmFtZSBSMz4KLXZvaWQgY2Fs
bE1lbWJlckZ1bmN0aW9uKHN0ZDo6dHVwbGU8UDEsIFAyLCBQMywgUDQ+JiYgYXJncywgc3RkOjp0
dXBsZTxSMSwgUjIsIFIzPiYgcmVwbHlBcmdzLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQotewot
ICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8MD4oYXJncyksIHN0ZDo6Z2V0PDE+KGFy
Z3MpLCBzdGQ6OmdldDwyPihhcmdzKSwgc3RkOjpnZXQ8Mz4oYXJncyksIHN0ZDo6Z2V0PDA+KHJl
cGx5QXJncyksIHN0ZDo6Z2V0PDE+KHJlcGx5QXJncyksIHN0ZDo6Z2V0PDI+KHJlcGx5QXJncykp
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEsIHR5
cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFt
ZSBSMSwgdHlwZW5hbWUgUjIsIHR5cGVuYW1lIFIzPgotdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24o
c3RkOjp0dXBsZTxQMSwgUDIsIFAzLCBQNCwgUDU+JiYgYXJncywgc3RkOjp0dXBsZTxSMSwgUjIs
IFIzPiYgcmVwbHlBcmdzLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQotewotICAgIChvYmplY3Qt
PipmdW5jdGlvbikoc3RkOjpnZXQ8MD4oYXJncyksIHN0ZDo6Z2V0PDE+KGFyZ3MpLCBzdGQ6Omdl
dDwyPihhcmdzKSwgc3RkOjpnZXQ8Mz4oYXJncyksIHN0ZDo6Z2V0PDQ+KGFyZ3MpLCBzdGQ6Omdl
dDwwPihyZXBseUFyZ3MpLCBzdGQ6OmdldDwxPihyZXBseUFyZ3MpLCBzdGQ6OmdldDwyPihyZXBs
eUFyZ3MpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1l
IFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSwg
dHlwZW5hbWUgUDYsIHR5cGVuYW1lIFIxLCB0eXBlbmFtZSBSMj4KLXZvaWQgY2FsbE1lbWJlckZ1
bmN0aW9uKHN0ZDo6dHVwbGU8UDEsIFAyLCBQMywgUDQsIFA1LCBQNj4mJiBhcmdzLCBzdGQ6OnR1
cGxlPFIxLCBSMj4mIHJlcGx5QXJncywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKLXsKLSAgICAo
b2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6Z2V0PDA+KGFyZ3MpLCBzdGQ6OmdldDwxPihhcmdzKSwg
c3RkOjpnZXQ8Mj4oYXJncyksIHN0ZDo6Z2V0PDM+KGFyZ3MpLCBzdGQ6OmdldDw0PihhcmdzKSwg
c3RkOjpnZXQ8NT4oYXJncyksIHN0ZDo6Z2V0PDA+KHJlcGx5QXJncyksIHN0ZDo6Z2V0PDE+KHJl
cGx5QXJncykpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5h
bWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1
LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgUjEsIHR5cGVuYW1lIFIyLCB0eXBlbmFtZSBSMz4KLXZv
aWQgY2FsbE1lbWJlckZ1bmN0aW9uKHN0ZDo6dHVwbGU8UDEsIFAyLCBQMywgUDQsIFA1LCBQNj4m
JiBhcmdzLCBzdGQ6OnR1cGxlPFIxLCBSMiwgUjM+JiByZXBseUFyZ3MsIEMqIG9iamVjdCwgTUYg
ZnVuY3Rpb24pCi17Ci0gICAgKG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDwwPihhcmdzKSwg
c3RkOjpnZXQ8MT4oYXJncyksIHN0ZDo6Z2V0PDI+KGFyZ3MpLCBzdGQ6OmdldDwzPihhcmdzKSwg
c3RkOjpnZXQ8ND4oYXJncyksIHN0ZDo6Z2V0PDU+KGFyZ3MpLCBzdGQ6OmdldDwwPihyZXBseUFy
Z3MpLCBzdGQ6OmdldDwxPihyZXBseUFyZ3MpLCBzdGQ6OmdldDwyPihyZXBseUFyZ3MpKTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lIFAxLCB0eXBlbmFt
ZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgUDYs
IHR5cGVuYW1lIFIxLCB0eXBlbmFtZSBSMiwgdHlwZW5hbWUgUjMsIHR5cGVuYW1lIFI0Pgotdm9p
ZCBjYWxsTWVtYmVyRnVuY3Rpb24oc3RkOjp0dXBsZTxQMSwgUDIsIFAzLCBQNCwgUDUsIFA2PiYm
IGFyZ3MsIHN0ZDo6dHVwbGU8UjEsIFIyLCBSMywgUjQ+JiByZXBseUFyZ3MsIEMqIG9iamVjdCwg
TUYgZnVuY3Rpb24pCi17Ci0gICAgKG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDwwPihhcmdz
KSwgc3RkOjpnZXQ8MT4oYXJncyksIHN0ZDo6Z2V0PDI+KGFyZ3MpLCBzdGQ6OmdldDwzPihhcmdz
KSwgc3RkOjpnZXQ8ND4oYXJncyksIHN0ZDo6Z2V0PDU+KGFyZ3MpLCBzdGQ6OmdldDwwPihyZXBs
eUFyZ3MpLCBzdGQ6OmdldDwxPihyZXBseUFyZ3MpLCBzdGQ6OmdldDwyPihyZXBseUFyZ3MpLCBz
dGQ6OmdldDwzPihyZXBseUFyZ3MpKTsKLX0KLQotLy8gRGlzcGF0Y2ggZnVuY3Rpb25zIHdpdGgg
ZGVsYXllZCByZXBseSBhcmd1bWVudHMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBN
RiwgdHlwZW5hbWUgUj4KLXZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKHN0ZDo6dHVwbGU8PiYmLCBQ
YXNzUmVmUHRyPFI+IGRlbGF5ZWRSZXBseSwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKLXsKLSAg
ICAob2JqZWN0LT4qZnVuY3Rpb24pKGRlbGF5ZWRSZXBseSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUj4KLXZvaWQgY2FsbE1l
bWJlckZ1bmN0aW9uKHN0ZDo6dHVwbGU8UDE+JiYgYXJncywgUGFzc1JlZlB0cjxSPiBkZWxheWVk
UmVwbHksIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCi17Ci0gICAgKG9iamVjdC0+KmZ1bmN0aW9u
KShzdGQ6OmdldDwwPihhcmdzKSwgZGVsYXllZFJlcGx5KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUj4K
LXZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKHN0ZDo6dHVwbGU8UDEsIFAyPiYmIGFyZ3MsIFBhc3NS
ZWZQdHI8Uj4gZGVsYXllZFJlcGx5LCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQotewotICAgIChv
YmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8MD4oYXJncyksIHN0ZDo6Z2V0PDE+KGFyZ3MpLCBk
ZWxheWVkUmVwbHkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlw
ZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1l
IFA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIFA4LCB0eXBlbmFtZSBSPgot
dm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oc3RkOjp0dXBsZTxQMSwgUDIsIFAzLCBQNCwgUDUsIFA2
LCBQNywgUDg+JiYgYXJncywgUGFzc1JlZlB0cjxSPiBkZWxheWVkUmVwbHksIEMqIG9iamVjdCwg
TUYgZnVuY3Rpb24pCi17Ci0gICAgKG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDwwPihhcmdz
KSwgc3RkOjpnZXQ8MT4oYXJncyksIHN0ZDo6Z2V0PDI+KGFyZ3MpLCBzdGQ6OmdldDwzPihhcmdz
KSwgc3RkOjpnZXQ8ND4oYXJncyksIHN0ZDo6Z2V0PDU+KGFyZ3MpLCBzdGQ6OmdldDw2Pihhcmdz
KSwgc3RkOjpnZXQ8Nz4oYXJncyksIGRlbGF5ZWRSZXBseSk7Ci19Ci0KLS8vIERpc3BhdGNoIGZ1
bmN0aW9ucyB3aXRoIGNvbm5lY3Rpb24gcGFyYW1ldGVyLgotdGVtcGxhdGU8dHlwZW5hbWUgQywg
dHlwZW5hbWUgTUY+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihDb25uZWN0aW9uKiBjb25uZWN0
aW9uLCBzdGQ6OnR1cGxlPD4mJiwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKLXsKLSAgICAob2Jq
ZWN0LT4qZnVuY3Rpb24pKGNvbm5lY3Rpb24pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0
eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDE+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihDb25uZWN0
aW9uKiBjb25uZWN0aW9uLCBzdGQ6OnR1cGxlPFAxPiYmIGFyZ3MsIEMqIG9iamVjdCwgTUYgZnVu
Y3Rpb24pCi17Ci0gICAgKG9iamVjdC0+KmZ1bmN0aW9uKShjb25uZWN0aW9uLCBzdGQ6OmdldDww
PihhcmdzKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFt
ZSBQMSwgdHlwZW5hbWUgUDI+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihDb25uZWN0aW9uKiBj
b25uZWN0aW9uLCBzdGQ6OnR1cGxlPFAxLCBQMj4mJiBhcmdzLCBDKiBvYmplY3QsIE1GIGZ1bmN0
aW9uKQotewotICAgIChvYmplY3QtPipmdW5jdGlvbikoY29ubmVjdGlvbiwgc3RkOjpnZXQ8MD4o
YXJncyksIHN0ZDo6Z2V0PDE+KGFyZ3MpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlw
ZW5hbWUgTUYsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDM+Ci12b2lkIGNh
bGxNZW1iZXJGdW5jdGlvbihDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBzdGQ6OnR1cGxlPFAxLCBQ
MiwgUDM+JiYgYXJncywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKLXsKLSAgICAob2JqZWN0LT4q
ZnVuY3Rpb24pKGNvbm5lY3Rpb24sIHN0ZDo6Z2V0PDA+KGFyZ3MpLCBzdGQ6OmdldDwxPihhcmdz
KSwgc3RkOjpnZXQ8Mj4oYXJncykpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFt
ZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQ+
Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBzdGQ6OnR1
cGxlPFAxLCBQMiwgUDMsIFA0PiYmIGFyZ3MsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCi17Ci0g
ICAgKG9iamVjdC0+KmZ1bmN0aW9uKShjb25uZWN0aW9uLCBzdGQ6OmdldDwwPihhcmdzKSwgc3Rk
OjpnZXQ8MT4oYXJncyksIHN0ZDo6Z2V0PDI+KGFyZ3MpLCBzdGQ6OmdldDwzPihhcmdzKSk7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5h
bWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDU+Ci12b2lkIGNhbGxN
ZW1iZXJGdW5jdGlvbihDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBzdGQ6OnR1cGxlPFAxLCBQMiwg
UDMsIFA0LCBQNT4mJiBhcmdzLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQotewotICAgIChvYmpl
Y3QtPipmdW5jdGlvbikoY29ubmVjdGlvbiwgc3RkOjpnZXQ8MD4oYXJncyksIHN0ZDo6Z2V0PDE+
KGFyZ3MpLCBzdGQ6OmdldDwyPihhcmdzKSwgc3RkOjpnZXQ8Mz4oYXJncyksIHN0ZDo6Z2V0PDQ+
KGFyZ3MpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1l
IFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSwg
dHlwZW5hbWUgUDY+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihDb25uZWN0aW9uKiBjb25uZWN0
aW9uLCBzdGQ6OnR1cGxlPFAxLCBQMiwgUDMsIFA0LCBQNSwgUDY+JiYgYXJncywgQyogb2JqZWN0
LCBNRiBmdW5jdGlvbikKLXsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGNvbm5lY3Rpb24sIHN0
ZDo6Z2V0PDA+KGFyZ3MpLCBzdGQ6OmdldDwxPihhcmdzKSwgc3RkOjpnZXQ8Mj4oYXJncyksIHN0
ZDo6Z2V0PDM+KGFyZ3MpLCBzdGQ6OmdldDw0PihhcmdzKSwgc3RkOjpnZXQ8NT4oYXJncykpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVu
YW1lIFAyLCB0eXBlbmFtZSBSMT4KLXZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKENvbm5lY3Rpb24q
IGNvbm5lY3Rpb24sIHN0ZDo6dHVwbGU8UDEsIFAyPiYmIGFyZ3MsIHN0ZDo6dHVwbGU8UjE+JiBy
ZXBseUFyZ3MsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCi17Ci0gICAgKG9iamVjdC0+KmZ1bmN0
aW9uKShjb25uZWN0aW9uLCBzdGQ6OmdldDwwPihhcmdzKSwgc3RkOjpnZXQ8MT4oYXJncyksIHN0
ZDo6Z2V0PDA+KHJlcGx5QXJncykpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFt
ZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFIxPgotdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24o
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgc3RkOjp0dXBsZTxQMT4mJiBhcmdzLCBzdGQ6OnR1cGxl
PFIxPiYgcmVwbHlBcmdzLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQotewotICAgIChvYmplY3Qt
PipmdW5jdGlvbikoY29ubmVjdGlvbiwgc3RkOjpnZXQ8MD4oYXJncyksIHN0ZDo6Z2V0PDA+KHJl
cGx5QXJncykpOwotfQotCi0vLyBWYXJpYWRpYyBkaXNwYXRjaCBmdW5jdGlvbnMuCi0KLXRlbXBs
YXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgotdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oc3Rk
Ojp0dXBsZTw+JiYsIE1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0
aW9uKQotewotICAgIChvYmplY3QtPipmdW5jdGlvbikoZGVjb2Rlcik7Ci19Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMT4KLXZvaWQgY2FsbE1lbWJlckZ1
bmN0aW9uKHN0ZDo6dHVwbGU8UDE+JiYgYXJncywgTWVzc2FnZURlY29kZXImIGRlY29kZXIsIEMq
IG9iamVjdCwgTUYgZnVuY3Rpb24pCi17Ci0gICAgKG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6Omdl
dDwwPihhcmdzKSwgZGVjb2Rlcik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1l
IE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDI+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihz
dGQ6OnR1cGxlPFAxLCBQMj4mJiBhcmdzLCBNZXNzYWdlRGVjb2RlciYgZGVjb2RlciwgQyogb2Jq
ZWN0LCBNRiBmdW5jdGlvbikKLXsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6Z2V0PDA+
KGFyZ3MpLCBzdGQ6OmdldDwxPihhcmdzKSwgZGVjb2Rlcik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAz
Pgotdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oc3RkOjp0dXBsZTxQMSwgUDIsIFAzPiYmIGFyZ3Ms
IE1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQotewotICAg
IChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8MD4oYXJncyksIHN0ZDo6Z2V0PDE+KGFyZ3Mp
LCBzdGQ6OmdldDwyPihhcmdzKSwgZGVjb2Rlcik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEMs
IHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBl
bmFtZSBQND4KLXZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKHN0ZDo6dHVwbGU8UDEsIFAyLCBQMywg
UDQ+JiYgYXJncywgTWVzc2FnZURlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rp
b24pCi17Ci0gICAgKG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDwwPihhcmdzKSwgc3RkOjpn
ZXQ8MT4oYXJncyksIHN0ZDo6Z2V0PDI+KGFyZ3MpLCBzdGQ6OmdldDwzPihhcmdzKSwgZGVjb2Rl
cik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwg
dHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDU+Ci12b2lk
IGNhbGxNZW1iZXJGdW5jdGlvbihzdGQ6OnR1cGxlPFAxLCBQMiwgUDMsIFA0LCBQNT4mJiBhcmdz
LCBNZXNzYWdlRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKLXsKLSAg
ICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6Z2V0PDA+KGFyZ3MpLCBzdGQ6OmdldDwxPihhcmdz
KSwgc3RkOjpnZXQ8Mj4oYXJncyksIHN0ZDo6Z2V0PDM+KGFyZ3MpLCBzdGQ6OmdldDw0Pihhcmdz
KSwgZGVjb2Rlcik7Ci19Ci0gICAgCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwg
dHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVu
YW1lIFA1LCB0eXBlbmFtZSBQNj4KLXZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKHN0ZDo6dHVwbGU8
UDEsIFAyLCBQMywgUDQsIFA1LCBQNj4mJiBhcmdzLCBNZXNzYWdlRGVjb2RlciYgZGVjb2Rlciwg
Qyogb2JqZWN0LCBNRiBmdW5jdGlvbikKLXsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6
Z2V0PDA+KGFyZ3MpLCBzdGQ6OmdldDwxPihhcmdzKSwgc3RkOjpnZXQ8Mj4oYXJncyksIHN0ZDo6
Z2V0PDM+KGFyZ3MpLCBzdGQ6OmdldDw0PihhcmdzKSwgc3RkOjpnZXQ8NT4oYXJncyksIGRlY29k
ZXIpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEs
IHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1LCB0eXBl
bmFtZSBQNiwgdHlwZW5hbWUgUDc+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihzdGQ6OnR1cGxl
PFAxLCBQMiwgUDMsIFA0LCBQNSwgUDYsIFA3PiYmIGFyZ3MsIE1lc3NhZ2VEZWNvZGVyJiBkZWNv
ZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQotewotICAgIChvYmplY3QtPipmdW5jdGlvbiko
c3RkOjpnZXQ8MD4oYXJncyksIHN0ZDo6Z2V0PDE+KGFyZ3MpLCBzdGQ6OmdldDwyPihhcmdzKSwg
c3RkOjpnZXQ8Mz4oYXJncyksIHN0ZDo6Z2V0PDQ+KGFyZ3MpLCBzdGQ6OmdldDw1PihhcmdzKSwg
c3RkOjpnZXQ8Nj4oYXJncyksIGRlY29kZXIpOwotfQotCi0vLyBWYXJpYWRpYyBkaXNwYXRjaCBm
dW5jdGlvbnMgd2l0aCBub24tdmFyaWFkaWMgcmVwbHkgYXJndW1lbnRzLgotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFt
ZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBSMSwgdHlwZW5hbWUgUjIs
IHR5cGVuYW1lIFIzPgotdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oc3RkOjp0dXBsZTxQMSwgUDIs
IFAzLCBQNCwgUDU+JiYgYXJncywgTWVzc2FnZURlY29kZXImIGRlY29kZXIsIHN0ZDo6dHVwbGU8
UjEsIFIyLCBSMz4mIHJlcGx5QXJncywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKLXsKLSAgICAo
b2JqZWN0LT4qZnVuY3Rpb24pKHN0ZDo6Z2V0PDA+KGFyZ3MpLCBzdGQ6OmdldDwxPihhcmdzKSwg
c3RkOjpnZXQ8Mj4oYXJncyksIHN0ZDo6Z2V0PDM+KGFyZ3MpLCBzdGQ6OmdldDw0PihhcmdzKSwg
ZGVjb2Rlciwgc3RkOjpnZXQ8MD4ocmVwbHlBcmdzKSwgc3RkOjpnZXQ8MT4ocmVwbHlBcmdzKSwg
c3RkOjpnZXQ8Mj4ocmVwbHlBcmdzKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVu
YW1lIE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQ
NCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBSMSwgdHlwZW5hbWUgUjI+Ci12
b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihzdGQ6OnR1cGxlPFAxLCBQMiwgUDMsIFA0LCBQNSwgUDY+
JiYgYXJncywgTWVzc2FnZURlY29kZXImIGRlY29kZXIsIHN0ZDo6dHVwbGU8UjEsIFIyPiYgcmVw
bHlBcmdzLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQotewotICAgIChvYmplY3QtPipmdW5jdGlv
bikoc3RkOjpnZXQ8MD4oYXJncyksIHN0ZDo6Z2V0PDE+KGFyZ3MpLCBzdGQ6OmdldDwyPihhcmdz
KSwgc3RkOjpnZXQ8Mz4oYXJncyksIHN0ZDo6Z2V0PDQ+KGFyZ3MpLCBzdGQ6OmdldDw1Pihhcmdz
KSwgZGVjb2Rlciwgc3RkOjpnZXQ8MD4ocmVwbHlBcmdzKSwgc3RkOjpnZXQ8MT4ocmVwbHlBcmdz
KSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwg
dHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUsIHR5cGVu
YW1lIFA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgUjEsIHR5cGVuYW1lIFIyLCB0eXBlbmFtZSBS
Mz4KLXZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKHN0ZDo6dHVwbGU8UDEsIFAyLCBQMywgUDQsIFA1
LCBQNiwgUDc+JiYgYXJncywgTWVzc2FnZURlY29kZXImIGRlY29kZXIsIHN0ZDo6dHVwbGU8UjEs
IFIyLCBSMz4mIHJlcGx5QXJncywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgordm9pZCBoYW5kbGVNZXNzYWdlKE1l
c3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQogewotICAgIChv
YmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8MD4oYXJncyksIHN0ZDo6Z2V0PDE+KGFyZ3MpLCBz
dGQ6OmdldDwyPihhcmdzKSwgc3RkOjpnZXQ8Mz4oYXJncyksIHN0ZDo6Z2V0PDQ+KGFyZ3MpLCBz
dGQ6OmdldDw1PihhcmdzKSwgc3RkOjpnZXQ8Nj4oYXJncyksIGRlY29kZXIsIHN0ZDo6Z2V0PDA+
KHJlcGx5QXJncyksIHN0ZDo6Z2V0PDE+KHJlcGx5QXJncyksIHN0ZDo6Z2V0PDI+KHJlcGx5QXJn
cykpOworICAgIHR5cGVuYW1lIFQ6OkRlY29kZVR5cGU6OkFyZ3VtZW50c1R5cGUgYXJndW1lbnRz
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXJndW1lbnRzKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIFQ6OkRlY29kZVR5cGU6OkhhbmRsZXI6OmhhbmRsZShvYmplY3QsIGZ1bmN0aW9uLCBzdGQ6
Om1vdmUoYXJndW1lbnRzKSk7CiB9CiAKLS8vIE1haW4gZGlzcGF0Y2ggZnVuY3Rpb25zCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4KLXZvaWQgaGFuZGxlTWVz
c2FnZShNZXNzYWdlRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3Zv
aWQgaGFuZGxlTWVzc2FnZShDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBNZXNzYWdlRGVjb2RlciYg
ZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKLSAgICB0eXBlbmFtZSBUOjpEZWNv
ZGVUeXBlIGFyZ3VtZW50czsKKyAgICB0eXBlbmFtZSBUOjpEZWNvZGVUeXBlOjpBcmd1bWVudHNU
eXBlIGFyZ3VtZW50czsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFyZ3VtZW50cykpCiAgICAg
ICAgIHJldHVybjsKLSAgICBjYWxsTWVtYmVyRnVuY3Rpb24oc3RkOjptb3ZlKGFyZ3VtZW50cyks
IG9iamVjdCwgZnVuY3Rpb24pOworICAgIFQ6OkRlY29kZVR5cGU6OkhhbmRsZXI6OmhhbmRsZShv
YmplY3QsIGZ1bmN0aW9uLCBjb25uZWN0aW9uLCBzdGQ6Om1vdmUoYXJndW1lbnRzKSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgogdm9pZCBoYW5k
bGVNZXNzYWdlKE1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBNZXNzYWdlRW5jb2RlciYgcmVwbHlF
bmNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQogewotICAgIHR5cGVuYW1lIFQ6OkRlY29k
ZVR5cGUgYXJndW1lbnRzOworICAgIHR5cGVuYW1lIFQ6OkRlY29kZVR5cGU6OkFyZ3VtZW50c1R5
cGUgYXJndW1lbnRzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXJndW1lbnRzKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgdHlwZW5hbWUgVDo6UmVwbHk6OlZhbHVlVHlwZSByZXBseUFyZ3Vt
ZW50czsKLSAgICBjYWxsTWVtYmVyRnVuY3Rpb24oc3RkOjptb3ZlKGFyZ3VtZW50cyksIHJlcGx5
QXJndW1lbnRzLCBvYmplY3QsIGZ1bmN0aW9uKTsKKyAgICBUOjpSZXBseTo6dGVtcGxhdGUgSGFu
ZGxlcjx0eXBlbmFtZSBUOjpEZWNvZGVUeXBlOjpIYW5kbGVyPjo6aGFuZGxlKG9iamVjdCwgZnVu
Y3Rpb24sIHN0ZDo6bW92ZShhcmd1bWVudHMpLCByZXBseUFyZ3VtZW50cyk7CiAgICAgcmVwbHlF
bmNvZGVyIDw8IHJlcGx5QXJndW1lbnRzOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBDLCB0eXBlbmFtZSBNRj4KIHZvaWQgaGFuZGxlTWVzc2FnZShDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLCBNZXNzYWdlRGVjb2RlciYgZGVjb2RlciwgTWVzc2FnZUVuY29kZXImIHJlcGx5RW5j
b2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKLSAgICB0eXBlbmFtZSBUOjpEZWNvZGVU
eXBlIGFyZ3VtZW50czsKKyAgICB0eXBlbmFtZSBUOjpEZWNvZGVUeXBlOjpBcmd1bWVudHNUeXBl
IGFyZ3VtZW50czsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFyZ3VtZW50cykpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHR5cGVuYW1lIFQ6OlJlcGx5OjpWYWx1ZVR5cGUgcmVwbHlBcmd1bWVu
dHM7Ci0gICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbm5lY3Rpb24sIHN0ZDo6bW92ZShhcmd1bWVu
dHMpLCByZXBseUFyZ3VtZW50cywgb2JqZWN0LCBmdW5jdGlvbik7CisgICAgVDo6UmVwbHk6OnRl
bXBsYXRlIEhhbmRsZXI8dHlwZW5hbWUgVDo6RGVjb2RlVHlwZTo6SGFuZGxlcj46OmhhbmRsZShv
YmplY3QsIGZ1bmN0aW9uLCBjb25uZWN0aW9uLCBzdGQ6Om1vdmUoYXJndW1lbnRzKSwgcmVwbHlB
cmd1bWVudHMpOwogICAgIHJlcGx5RW5jb2RlciA8PCByZXBseUFyZ3VtZW50czsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+Ci12b2lkIGhhbmRsZU1l
c3NhZ2UoQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgTWVzc2FnZURlY29kZXImIGRlY29kZXIsIEMq
IG9iamVjdCwgTUYgZnVuY3Rpb24pCi17Ci0gICAgdHlwZW5hbWUgVDo6RGVjb2RlVHlwZSBhcmd1
bWVudHM7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcmd1bWVudHMpKQotICAgICAgICByZXR1
cm47Ci0gICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbm5lY3Rpb24sIHN0ZDo6bW92ZShhcmd1bWVu
dHMpLCBvYmplY3QsIGZ1bmN0aW9uKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgQywgdHlwZW5hbWUgTUY+CiB2b2lkIGhhbmRsZU1lc3NhZ2VWYXJpYWRpYyhNZXNzYWdlRGVj
b2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKLSAgICB0eXBlbmFtZSBU
OjpEZWNvZGVUeXBlIGFyZ3VtZW50czsKKyAgICB0eXBlbmFtZSBUOjpEZWNvZGVUeXBlOjpBcmd1
bWVudHNUeXBlIGFyZ3VtZW50czsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFyZ3VtZW50cykp
CiAgICAgICAgIHJldHVybjsKLSAgICBjYWxsTWVtYmVyRnVuY3Rpb24oc3RkOjptb3ZlKGFyZ3Vt
ZW50cyksIGRlY29kZXIsIG9iamVjdCwgZnVuY3Rpb24pOworICAgIFQ6OkRlY29kZVR5cGU6Okhh
bmRsZXI6OmhhbmRsZShvYmplY3QsIGZ1bmN0aW9uLCBzdGQ6Om1vdmUoYXJndW1lbnRzKSwgZGVj
b2Rlcik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1G
Pgogdm9pZCBoYW5kbGVNZXNzYWdlVmFyaWFkaWMoTWVzc2FnZURlY29kZXImIGRlY29kZXIsIE1l
c3NhZ2VFbmNvZGVyJiByZXBseUVuY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7Ci0g
ICAgdHlwZW5hbWUgVDo6RGVjb2RlVHlwZSBhcmd1bWVudHM7CisgICAgdHlwZW5hbWUgVDo6RGVj
b2RlVHlwZTo6QXJndW1lbnRzVHlwZSBhcmd1bWVudHM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhcmd1bWVudHMpKQogICAgICAgICByZXR1cm47CiAKICAgICB0eXBlbmFtZSBUOjpSZXBseTo6
VmFsdWVUeXBlIHJlcGx5QXJndW1lbnRzOwotICAgIGNhbGxNZW1iZXJGdW5jdGlvbihzdGQ6Om1v
dmUoYXJndW1lbnRzKSwgZGVjb2RlciwgcmVwbHlBcmd1bWVudHMsIG9iamVjdCwgZnVuY3Rpb24p
OworICAgIFQ6OlJlcGx5Ojp0ZW1wbGF0ZSBIYW5kbGVyPHR5cGVuYW1lIFQ6OkRlY29kZVR5cGU6
OkhhbmRsZXI+OjpoYW5kbGUob2JqZWN0LCBmdW5jdGlvbiwgc3RkOjptb3ZlKGFyZ3VtZW50cyks
IGRlY29kZXIsIHJlcGx5QXJndW1lbnRzKTsKICAgICByZXBseUVuY29kZXIgPDwgcmVwbHlBcmd1
bWVudHM7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1G
Pgogdm9pZCBoYW5kbGVNZXNzYWdlRGVsYXllZChDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBNZXNz
YWdlRGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiYgcmVw
bHlFbmNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQogewotICAgIHR5cGVuYW1lIFQ6OkRl
Y29kZVR5cGUgYXJndW1lbnRzOworICAgIHR5cGVuYW1lIFQ6OkRlY29kZVR5cGU6OkFyZ3VtZW50
c1R5cGUgYXJndW1lbnRzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXJndW1lbnRzKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseT4gZGVs
YXllZFJlcGx5ID0gYWRvcHRSZWYobmV3IHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseShjb25uZWN0
aW9uLCBzdGQ6Om1vdmUocmVwbHlFbmNvZGVyKSkpOwotICAgIGNhbGxNZW1iZXJGdW5jdGlvbihz
dGQ6Om1vdmUoYXJndW1lbnRzKSwgZGVsYXllZFJlcGx5LnJlbGVhc2UoKSwgb2JqZWN0LCBmdW5j
dGlvbik7CisgICAgVDo6RGVjb2RlVHlwZTo6SGFuZGxlcjo6aGFuZGxlKG9iamVjdCwgZnVuY3Rp
b24sIHN0ZDo6bW92ZShhcmd1bWVudHMpLCBkZWxheWVkUmVwbHkucmVsZWFzZSgpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgQ29yZUlQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2NyaXB0
cy93ZWJraXQyL21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21l
c3NhZ2VzLnB5CmluZGV4IDY0ZjE5YWM3N2Y3YTcyOWZhZTVmMjczY2VkOWU4ODczZjM0N2M0YzEu
LjNlZmVhZGFiMzQ0YWY0NWFiYWNhOTZiMWE2ZTc2MDFjMjZkMzk1YmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkKQEAgLTk0LDEwICs5NCw3IEBAIGRlZiBy
ZXBseV9wYXJhbWV0ZXJfdHlwZSh0eXBlKToKIAogCiBkZWYgYXJndW1lbnRzX3R5cGVfb2xkKHBh
cmFtZXRlcnMsIHBhcmFtZXRlcl90eXBlX2Z1bmN0aW9uKToKLSAgICBhcmd1bWVudHNfdHlwZSA9
ICdDb3JlSVBDOjpBcmd1bWVudHMlZCcgJSBsZW4ocGFyYW1ldGVycykKLSAgICBpZiBsZW4ocGFy
YW1ldGVycyk6Ci0gICAgICAgIGFyZ3VtZW50c190eXBlID0gJyVzPCVzPicgJSAoYXJndW1lbnRz
X3R5cGUsICcsICcuam9pbihwYXJhbWV0ZXJfdHlwZV9mdW5jdGlvbihwYXJhbWV0ZXIudHlwZSkg
Zm9yIHBhcmFtZXRlciBpbiBwYXJhbWV0ZXJzKSkKLSAgICByZXR1cm4gYXJndW1lbnRzX3R5cGUK
KyAgICByZXR1cm4gJ0NvcmVJUEM6OkFyZ3VtZW50czwlcz4nICUgJywgJy5qb2luKHBhcmFtZXRl
cl90eXBlX2Z1bmN0aW9uKHBhcmFtZXRlci50eXBlKSBmb3IgcGFyYW1ldGVyIGluIHBhcmFtZXRl
cnMpCiAKIAogZGVmIGFyZ3VtZW50c190eXBlKG1lc3NhZ2UpOgpAQCAtMTE3LDEwICsxMTQsNyBA
QCBkZWYgZGVjb2RlX3R5cGUobWVzc2FnZSk6CiAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRl
KFZBUklBRElDX0FUVFJJQlVURSk6CiAgICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzWzot
MV0KIAotICAgIHJldHVybiAnc3RkOjp0dXBsZTwlcz4nICUgJywgJy5qb2luKHBhcmFtZXRlci50
eXBlIGZvciBwYXJhbWV0ZXIgaW4gcGFyYW1ldGVycykKLQotZGVmIGRlbGF5ZWRfcmVwbHlfdHlw
ZShtZXNzYWdlKToKLSAgICByZXR1cm4gYXJndW1lbnRzX3R5cGVfb2xkKG1lc3NhZ2UucmVwbHlf
cGFyYW1ldGVycywgZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUpCisgICAgcmV0dXJuICdDb3JlSVBD
OjpNZXNzYWdlPCVzPicgJSAnLCAnLmpvaW4ocGFyYW1ldGVyLnR5cGUgZm9yIHBhcmFtZXRlciBp
biBwYXJhbWV0ZXJzKQogCiAKIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihtZXNz
YWdlKToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdl
c191bml0dGVzdC5weSBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlc191
bml0dGVzdC5weQppbmRleCBlZDU4NjMzYWU3NDk2YWUxZWQ2OGVkOTZjYzI0ZDY5ZGIyMGViMDU0
Li42NGY5MjY2OWM2ZjdjNGU2MDBkZWY3ZDlkNjkzOGRlODkzNDMzN2U5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXNfdW5pdHRlc3QucHkKKysrIGIv
U291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5CkBAIC0z
ODAsNyArMzgwLDcgQEAgc3RhdGljIGlubGluZSBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSgpCiAKIGNsYXNzIExvYWRVUkwgewogcHVibGljOgotICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTxTdHJpbmc+IERlY29kZVR5cGU7CisgICAgdHlwZWRlZiBDb3JlSVBDOjpN
ZXNzYWdlPFN0cmluZz4gRGVjb2RlVHlwZTsKIAogICAgIHN0YXRpYyBDb3JlSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9
CiAgICAgc3RhdGljIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gQ29y
ZUlQQzo6U3RyaW5nUmVmZXJlbmNlKCJMb2FkVVJMIik7IH0KQEAgLTQwMyw3ICs0MDMsNyBAQCBw
cml2YXRlOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBjbGFzcyBMb2FkU29tZXRoaW5nIHsK
IHB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8U3RyaW5nPiBEZWNvZGVUeXBlOworICAg
IHR5cGVkZWYgQ29yZUlQQzo6TWVzc2FnZTxTdHJpbmc+IERlY29kZVR5cGU7CiAKICAgICBzdGF0
aWMgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKTsgfQogICAgIHN0YXRpYyBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bmFtZSgpIHsgcmV0dXJuIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFNvbWV0aGluZyIp
OyB9CkBAIC00MjcsNyArNDI3LDcgQEAgcHJpdmF0ZToKICNpZiAoRU5BQkxFKFRPVUNIX0VWRU5U
UykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09O
RElUSU9OKSkKIGNsYXNzIFRvdWNoRXZlbnQgewogcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxXZWJLaXQ6OldlYlRvdWNoRXZlbnQ+IERlY29kZVR5cGU7CisgICAgdHlwZWRlZiBDb3Jl
SVBDOjpNZXNzYWdlPFdlYktpdDo6V2ViVG91Y2hFdmVudD4gRGVjb2RlVHlwZTsKIAogICAgIHN0
YXRpYyBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVz
c2FnZVJlY2VpdmVyTmFtZSgpOyB9CiAgICAgc3RhdGljIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBuYW1lKCkgeyByZXR1cm4gQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlKCJUb3VjaEV2ZW50Iik7
IH0KQEAgLTQ1MSw3ICs0NTEsNyBAQCBwcml2YXRlOgogI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRT
KSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05E
SVRJT04pKQogY2xhc3MgQWRkRXZlbnQgewogcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTxXZWJLaXQ6OldlYlRvdWNoRXZlbnQ+IERlY29kZVR5cGU7CisgICAgdHlwZWRlZiBDb3JlSVBD
OjpNZXNzYWdlPFdlYktpdDo6V2ViVG91Y2hFdmVudD4gRGVjb2RlVHlwZTsKIAogICAgIHN0YXRp
YyBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpOyB9CiAgICAgc3RhdGljIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBu
YW1lKCkgeyByZXR1cm4gQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlKCJBZGRFdmVudCIpOyB9CkBA
IC00NzUsNyArNDc1LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogY2xh
c3MgTG9hZFNvbWV0aGluZ0Vsc2UgewogcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxT
dHJpbmc+IERlY29kZVR5cGU7CisgICAgdHlwZWRlZiBDb3JlSVBDOjpNZXNzYWdlPFN0cmluZz4g
RGVjb2RlVHlwZTsKIAogICAgIHN0YXRpYyBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2
ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9CiAgICAgc3RhdGljIENv
cmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gQ29yZUlQQzo6U3RyaW5nUmVm
ZXJlbmNlKCJMb2FkU29tZXRoaW5nRWxzZSIpOyB9CkBAIC00OTgsNyArNDk4LDcgQEAgcHJpdmF0
ZToKIAogY2xhc3MgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uIHsKIHB1YmxpYzoKLSAgICB0eXBl
ZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIHVpbnQ2NF90LCB1aW50MzJfdD4gRGVjb2RlVHlwZTsK
KyAgICB0eXBlZGVmIENvcmVJUEM6Ok1lc3NhZ2U8dWludDY0X3QsIHVpbnQ2NF90LCB1aW50MzJf
dD4gRGVjb2RlVHlwZTsKIAogICAgIHN0YXRpYyBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVj
ZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9CiAgICAgc3RhdGlj
IENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gQ29yZUlQQzo6U3RyaW5n
UmVmZXJlbmNlKCJEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24iKTsgfQpAQCAtNTIwLDcgKzUyMCw3
IEBAIHByaXZhdGU6CiAKIGNsYXNzIENsb3NlIHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8PiBEZWNvZGVUeXBlOworICAgIHR5cGVkZWYgQ29yZUlQQzo6TWVzc2FnZTw+IERlY29k
ZVR5cGU7CiAKICAgICBzdGF0aWMgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFt
ZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQogICAgIHN0YXRpYyBDb3JlSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5j
ZSgiQ2xvc2UiKTsgfQpAQCAtNTM3LDcgKzUzNyw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFByZWZl
cmVuY2VzRGlkQ2hhbmdlIHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlPiBEZWNvZGVUeXBlOworICAgIHR5cGVkZWYgQ29yZUlQQzo6
TWVzc2FnZTxXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU+IERlY29kZVR5cGU7CiAKICAgICBz
dGF0aWMgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfQogICAgIHN0YXRpYyBDb3JlSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbmFtZSgpIHsgcmV0dXJuIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSgiUHJlZmVyZW5jZXNE
aWRDaGFuZ2UiKTsgfQpAQCAtNTU5LDcgKzU1OSw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFNlbmRE
b3VibGVBbmRGbG9hdCB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGRvdWJsZSwg
ZmxvYXQ+IERlY29kZVR5cGU7CisgICAgdHlwZWRlZiBDb3JlSVBDOjpNZXNzYWdlPGRvdWJsZSwg
ZmxvYXQ+IERlY29kZVR5cGU7CiAKICAgICBzdGF0aWMgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNl
IHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQogICAgIHN0
YXRpYyBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIENvcmVJUEM6OlN0
cmluZ1JlZmVyZW5jZSgiU2VuZERvdWJsZUFuZEZsb2F0Iik7IH0KQEAgLTU4MSw3ICs1ODEsNyBA
QCBwcml2YXRlOgogCiBjbGFzcyBTZW5kSW50cyB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPFZlY3Rvcjx1aW50NjRfdD4sIFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+Pj4gRGVjb2Rl
VHlwZTsKKyAgICB0eXBlZGVmIENvcmVJUEM6Ok1lc3NhZ2U8VmVjdG9yPHVpbnQ2NF90PiwgVmVj
dG9yPFZlY3Rvcjx1aW50NjRfdD4+PiBEZWNvZGVUeXBlOwogCiAgICAgc3RhdGljIENvcmVJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KICAgICBzdGF0aWMgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJl
dHVybiBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlNlbmRJbnRzIik7IH0KQEAgLTYwMywxMyAr
NjAzLDEzIEBAIHByaXZhdGU6CiAKIGNsYXNzIENyZWF0ZVBsdWdpbiB7CiBwdWJsaWM6Ci0gICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycz4g
RGVjb2RlVHlwZTsKKyAgICB0eXBlZGVmIENvcmVJUEM6Ok1lc3NhZ2U8dWludDY0X3QsIFdlYktp
dDo6UGx1Z2luOjpQYXJhbWV0ZXJzPiBEZWNvZGVUeXBlOwogCiAgICAgc3RhdGljIENvcmVJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KICAgICBzdGF0aWMgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJl
dHVybiBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkNyZWF0ZVBsdWdpbiIpOyB9CiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAotICAgIHR5cGVkZWYgQ29yZUlQQzo6QXJn
dW1lbnRzMTxib29sJj4gUmVwbHk7CisgICAgdHlwZWRlZiBDb3JlSVBDOjpBcmd1bWVudHM8Ym9v
bCY+IFJlcGx5OwogICAgIENyZWF0ZVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBj
b25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAgICAgOiBt
X2FyZ3VtZW50cyhwbHVnaW5JbnN0YW5jZUlELCBwYXJhbWV0ZXJzKQogICAgIHsKQEAgLTYyNiwx
MyArNjI2LDEzIEBAIHByaXZhdGU6CiAKIGNsYXNzIFJ1bkphdmFTY3JpcHRBbGVydCB7CiBwdWJs
aWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBTdHJpbmc+IERlY29kZVR5cGU7
CisgICAgdHlwZWRlZiBDb3JlSVBDOjpNZXNzYWdlPHVpbnQ2NF90LCBTdHJpbmc+IERlY29kZVR5
cGU7CiAKICAgICBzdGF0aWMgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgp
IHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQogICAgIHN0YXRpYyBDb3JlSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSgi
UnVuSmF2YVNjcmlwdEFsZXJ0Iik7IH0KICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0
cnVlOwogCi0gICAgdHlwZWRlZiBDb3JlSVBDOjpBcmd1bWVudHMwIFJlcGx5OworICAgIHR5cGVk
ZWYgQ29yZUlQQzo6QXJndW1lbnRzPD4gUmVwbHk7CiAgICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgOiBtX2FyZ3Vt
ZW50cyhmcmFtZUlELCBtZXNzYWdlKQogICAgIHsKQEAgLTY0OSwxMyArNjQ5LDEzIEBAIHByaXZh
dGU6CiAKIGNsYXNzIEdldFBsdWdpbnMgewogcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTxib29sPiBEZWNvZGVUeXBlOworICAgIHR5cGVkZWYgQ29yZUlQQzo6TWVzc2FnZTxib29sPiBE
ZWNvZGVUeXBlOwogCiAgICAgc3RhdGljIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZl
ck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KICAgICBzdGF0aWMgQ29y
ZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBDb3JlSVBDOjpTdHJpbmdSZWZl
cmVuY2UoIkdldFBsdWdpbnMiKTsgfQogICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRy
dWU7CiAKLSAgICB0eXBlZGVmIENvcmVJUEM6OkFyZ3VtZW50czE8VmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8+Jj4gUmVwbHk7CisgICAgdHlwZWRlZiBDb3JlSVBDOjpBcmd1bWVudHM8VmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+Jj4gUmVwbHk7CiAgICAgZXhwbGljaXQgR2V0UGx1Z2lucyhi
b29sIHJlZnJlc2gpCiAgICAgICAgIDogbV9hcmd1bWVudHMocmVmcmVzaCkKICAgICB7CkBAIC02
NzIsNyArNjcyLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24gewogcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxTdHJpbmc+IERlY29kZVR5cGU7
CisgICAgdHlwZWRlZiBDb3JlSVBDOjpNZXNzYWdlPFN0cmluZz4gRGVjb2RlVHlwZTsKIAogICAg
IHN0YXRpYyBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4g
bWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9CiAgICAgc3RhdGljIENvcmVJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBuYW1lKCkgeyByZXR1cm4gQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlKCJHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiIpOyB9CkBAIC02ODksNyArNjg5LDcgQEAgcHVibGljOgogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+IG1fZW5jb2RlcjsKICAg
ICB9OwogCi0gICAgdHlwZWRlZiBDb3JlSVBDOjpBcmd1bWVudHMxPENvcmVJUEM6OkNvbm5lY3Rp
b246OkhhbmRsZSY+IFJlcGx5OworICAgIHR5cGVkZWYgQ29yZUlQQzo6QXJndW1lbnRzPENvcmVJ
UEM6OkNvbm5lY3Rpb246OkhhbmRsZSY+IFJlcGx5OwogICAgIGV4cGxpY2l0IEdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKICAgICAgICAgOiBtX2Fy
Z3VtZW50cyhwbHVnaW5QYXRoKQogICAgIHsKQEAgLTcwNiw3ICs3MDYsNyBAQCBwcml2YXRlOgog
CiBjbGFzcyBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzIHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8PiBEZWNvZGVUeXBlOworICAgIHR5cGVkZWYgQ29yZUlQQzo6TWVzc2FnZTw+IERl
Y29kZVR5cGU7CiAKICAgICBzdGF0aWMgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVy
TmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQogICAgIHN0YXRpYyBDb3Jl
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIENvcmVJUEM6OlN0cmluZ1JlZmVy
ZW5jZSgiVGVzdE11bHRpcGxlQXR0cmlidXRlcyIpOyB9CkBAIC03MjMsNyArNzIzLDcgQEAgcHVi
bGljOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+IG1f
ZW5jb2RlcjsKICAgICB9OwogCi0gICAgdHlwZWRlZiBDb3JlSVBDOjpBcmd1bWVudHMwIFJlcGx5
OworICAgIHR5cGVkZWYgQ29yZUlQQzo6QXJndW1lbnRzPD4gUmVwbHk7CiAgICAgY29uc3Qgc3Rk
Ojp0dXBsZTw+IGFyZ3VtZW50cygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7CkBAIC03MzUsNyArNzM1LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgVGVzdFBhcmFtZXRl
ckF0dHJpYnV0ZXMgewogcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwg
ZG91YmxlLCBkb3VibGU+IERlY29kZVR5cGU7CisgICAgdHlwZWRlZiBDb3JlSVBDOjpNZXNzYWdl
PHVpbnQ2NF90LCBkb3VibGUsIGRvdWJsZT4gRGVjb2RlVHlwZTsKIAogICAgIHN0YXRpYyBDb3Jl
SVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpOyB9CiAgICAgc3RhdGljIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkg
eyByZXR1cm4gQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0UGFyYW1ldGVyQXR0cmlidXRl
cyIpOyB9CkBAIC03NTcsNyArNzU3LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgVGVtcGxhdGVUZXN0
IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8SGFzaE1hcDxTdHJpbmcsIHN0ZDo6
cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4+IERlY29kZVR5cGU7CisgICAgdHlwZWRlZiBDb3JlSVBD
OjpNZXNzYWdlPEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+PiBE
ZWNvZGVUeXBlOwogCiAgICAgc3RhdGljIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZl
ck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KICAgICBzdGF0aWMgQ29y
ZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBDb3JlSVBDOjpTdHJpbmdSZWZl
cmVuY2UoIlRlbXBsYXRlVGVzdCIpOyB9CkBAIC03ODAsNyArNzgwLDcgQEAgcHJpdmF0ZToKICNp
ZiBQTEFURk9STShNQUMpCiBjbGFzcyBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiB7CiBw
dWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPENvcmVJUEM6Ok1hY2hQb3J0PiBEZWNvZGVU
eXBlOworICAgIHR5cGVkZWYgQ29yZUlQQzo6TWVzc2FnZTxDb3JlSVBDOjpNYWNoUG9ydD4gRGVj
b2RlVHlwZTsKIAogICAgIHN0YXRpYyBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJO
YW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9CiAgICAgc3RhdGljIENvcmVJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gQ29yZUlQQzo6U3RyaW5nUmVmZXJl
bmNlKCJEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiIpOyB9CkBAIC04MDQsMTMgKzgwNCwx
MyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKIGNsYXNzIEludGVycHJldEtleUV2ZW50
IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDMyX3Q+IERlY29kZVR5cGU7
CisgICAgdHlwZWRlZiBDb3JlSVBDOjpNZXNzYWdlPHVpbnQzMl90PiBEZWNvZGVUeXBlOwogCiAg
ICAgc3RhdGljIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KICAgICBzdGF0aWMgQ29yZUlQQzo6U3RyaW5nUmVm
ZXJlbmNlIG5hbWUoKSB7IHJldHVybiBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkludGVycHJl
dEtleUV2ZW50Iik7IH0KICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwogCi0g
ICAgdHlwZWRlZiBDb3JlSVBDOjpBcmd1bWVudHMxPFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0Nv
bW1hbmQ+Jj4gUmVwbHk7CisgICAgdHlwZWRlZiBDb3JlSVBDOjpBcmd1bWVudHM8VmVjdG9yPFdl
YkNvcmU6OktleXByZXNzQ29tbWFuZD4mPiBSZXBseTsKICAgICBleHBsaWNpdCBJbnRlcnByZXRL
ZXlFdmVudCh1aW50MzJfdCB0eXBlKQogICAgICAgICA6IG1fYXJndW1lbnRzKHR5cGUpCiAgICAg
ewpAQCAtODI5LDcgKzgyOSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVB
VFVSRSkKIGNsYXNzIERlcHJlY2F0ZWRPcGVyYXRpb24gewogcHVibGljOgotICAgIHR5cGVkZWYg
c3RkOjp0dXBsZTxDb3JlSVBDOjpEdW1teVR5cGU+IERlY29kZVR5cGU7CisgICAgdHlwZWRlZiBD
b3JlSVBDOjpNZXNzYWdlPENvcmVJUEM6OkR1bW15VHlwZT4gRGVjb2RlVHlwZTsKIAogICAgIHN0
YXRpYyBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVz
c2FnZVJlY2VpdmVyTmFtZSgpOyB9CiAgICAgc3RhdGljIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBuYW1lKCkgeyByZXR1cm4gQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlKCJEZXByZWNhdGVkT3Bl
cmF0aW9uIik7IH0KQEAgLTg1Myw3ICs4NTMsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShFWFBF
UklNRU5UQUxfRkVBVFVSRSkKIGNsYXNzIEV4cGVyaW1lbnRhbE9wZXJhdGlvbiB7CiBwdWJsaWM6
Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPENvcmVJUEM6OkR1bW15VHlwZT4gRGVjb2RlVHlwZTsK
KyAgICB0eXBlZGVmIENvcmVJUEM6Ok1lc3NhZ2U8Q29yZUlQQzo6RHVtbXlUeXBlPiBEZWNvZGVU
eXBlOwogCiAgICAgc3RhdGljIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUo
KSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KICAgICBzdGF0aWMgQ29yZUlQQzo6
U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2Uo
IkV4cGVyaW1lbnRhbE9wZXJhdGlvbiIpOyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>