<?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>68274</bug_id>
          
          <creation_ts>2011-09-16 13:21:20 -0700</creation_ts>
          <short_desc>Rationalize JSObject::putDirect* methods</short_desc>
          <delta_ts>2011-09-16 13:32:33 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>468759</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-16 13:21:20 -0700</bug_when>
    <thetext>Delete the *Function variants.  These are overall inefficient, in the way they get the name back from the function rather than just passing it in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468761</commentid>
    <comment_count>1</comment_count>
      <attachid>107714</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-16 13:22:39 -0700</bug_when>
    <thetext>Created attachment 107714
The patch

No perf impact</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468776</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-16 13:32:33 -0700</bug_when>
    <thetext>fixed in r95318</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107714</attachid>
            <date>2011-09-16 13:22:39 -0700</date>
            <delta_ts>2011-09-16 13:24:33 -0700</delta_ts>
            <desc>The patch</desc>
            <filename>68274.patch</filename>
            <type>text/plain</type>
            <size>31213</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTUzMDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMTEtMDktMTYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIFJhdGlvbmFsaXplIEpTT2JqZWN0OjpwdXREaXJlY3QqIG1ldGhvZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4Mjc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBEZWxldGUg
dGhlICpGdW5jdGlvbiB2YXJpYW50cy4gVGhlc2UgYXJlIG92ZXJhbGwgaW5lZmZpY2llbnQsCisg
ICAgICAgIGluIHRoZSB3YXkgdGhleSBnZXQgdGhlIG5hbWUgYmFjayBmcm9tIHRoZSBmdW5jdGlv
biByYXRoZXIKKyAgICAgICAgdGhhbiBqdXN0IHBhc3NpbmcgaXQgaW4uCisKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9i
amVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlv
bik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dFdpdGhBdHRyaWJ1
dGVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZUdldHRlcik6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdCk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgICogcnVudGltZS9M
b29rdXAuY3BwOgorICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdCk6CisgICAg
ICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6bG9va3VwUHV0KToKKwogMjAx
MS0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT046IFJlcHJvZHVjaWJsZSBjcmFzaCBiZWxvdyBTbG90VmlzaXRvcjo6aGFydmVzdFdlYWtS
ZWZlcmVuY2VzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJ
KHJldmlzaW9uIDk1MjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3IEBAIF9fWk4zSlNDMTJKU0dsb2Jh
bERhdGExMmpzU3RyaW5nVlB0ckUKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExMnN0b3BTYW1wbGlu
Z0V2CiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTNzdGFydFNhbXBsaW5nRXYKIF9fWk4zSlNDMTJK
U0dsb2JhbERhdGExNGR1bXBTYW1wbGVEYXRhRVBOU185RXhlY1N0YXRlRQorX19aTjNKU0MxMkpT
R2xvYmFsRGF0YTE0anNGdW5jdGlvblZQdHJFCiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTRyZXNl
dERhdGVDYWNoZUV2CiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTRzaGFyZWRJbnN0YW5jZUV2CiBf
X1pOM0pTQzEySlNHbG9iYWxEYXRhMTVkdW1wUmVnRXhwVHJhY2VFdgpAQCAtMjQ4LDkgKzI0OSw5
IEBAIF9fWk4zSlNDNEhlYXA3ZGVzdHJveUV2CiBfX1pOM0pTQzRIZWFwN3Byb3RlY3RFTlNfN0pT
VmFsdWVFCiBfX1pOM0pTQzRIZWFwOGNhcGFjaXR5RXYKIF9fWk4zSlNDNEhlYXA5dW5wcm90ZWN0
RU5TXzdKU1ZhbHVlRQotX19aTjNKU0M0WWFycjlpbnRlcnByZXRFUE5TMF8xNUJ5dGVjb2RlUGF0
dGVybkVSS05TXzdVU3RyaW5nRWpqUGkKIF9fWk4zSlNDNFlhcnIxMVlhcnJQYXR0ZXJuQzFFUktO
U183VVN0cmluZ0ViYlBQS2MKIF9fWk4zSlNDNFlhcnIxMWJ5dGVDb21waWxlRVJOUzBfMTFZYXJy
UGF0dGVybkVQTjNXVEYyMEJ1bXBQb2ludGVyQWxsb2NhdG9yRQorX19aTjNKU0M0WWFycjlpbnRl
cnByZXRFUE5TMF8xNUJ5dGVjb2RlUGF0dGVybkVSS05TXzdVU3RyaW5nRWpqUGkKIF9fWk4zSlND
NGNhbGxFUE5TXzlFeGVjU3RhdGVFTlNfN0pTVmFsdWVFTlNfOENhbGxUeXBlRVJLTlNfOENhbGxE
YXRhRVMyX1JLTlNfN0FyZ0xpc3RFCiBfX1pOM0pTQzZKU0NlbGwxMWdldENhbGxEYXRhRVJOU184
Q2FsbERhdGFFCiBfX1pOM0pTQzZKU0NlbGwxMWdldEpTTnVtYmVyRXYKQEAgLTMxNCw4ICszMTUs
NiBAQCBfX1pOM0pTQzhKU09iamVjdDE1dW53cmFwcGVkT2JqZWN0RXYKIF9fWk4zSlNDOEpTT2Jq
ZWN0MTZnZXRQcm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFy
cmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQogX19aTjNKU0M4SlNPYmplY3QxN2RlZmluZU93blBy
b3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVz
Y3JpcHRvckViCiBfX1pOM0pTQzhKU09iamVjdDE3cHJldmVudEV4dGVuc2lvbnNFUk5TXzEySlNH
bG9iYWxEYXRhRQotX19aTjNKU0M4SlNPYmplY3QxN3B1dERpcmVjdEZ1bmN0aW9uRVBOU185RXhl
Y1N0YXRlRVBOU18xMEpTRnVuY3Rpb25FagotX19aTjNKU0M4SlNPYmplY3QxN3B1dERpcmVjdEZ1
bmN0aW9uRVBOU185RXhlY1N0YXRlRVBOU18xNkludGVybmFsRnVuY3Rpb25FagogX19aTjNKU0M4
SlNPYmplY3QxN3B1dFdpdGhBdHRyaWJ1dGVzRVBOU18xMkpTR2xvYmFsRGF0YUVSS05TXzEwSWRl
bnRpZmllckVOU183SlNWYWx1ZUVqCiBfX1pOM0pTQzhKU09iamVjdDE3cHV0V2l0aEF0dHJpYnV0
ZXNFUE5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRWpiUk5T
XzE1UHV0UHJvcGVydHlTbG90RQogX19aTjNKU0M4SlNPYmplY3QxN3B1dFdpdGhBdHRyaWJ1dGVz
RVBOU18xMkpTR2xvYmFsRGF0YUVqTlNfN0pTVmFsdWVFagpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAJKHJldmlzaW9uIDk1MjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2MiwyOSArMTYyLDM1IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVmVjdG9yPFVTdHJp
bmc+JiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9i
YWxEYXRhLCB0aGlzKTsKLSAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgp
LCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRlYnVnIiksIGZ1bmN0aW9uRGVidWcpKTsK
LSAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVy
KGdsb2JhbEV4ZWMoKSwgInByaW50IiksIGZ1bmN0aW9uUHJpbnQpKTsKLSAgICAgICAgcHV0RGly
ZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygp
LCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwg
InF1aXQiKSwgZnVuY3Rpb25RdWl0KSk7Ci0gICAgICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2Jh
bEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25T
dHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJnYyIpLCBmdW5jdGlvbkdD
KSk7CisgICAgICAgIAorICAgICAgICBhZGRGdW5jdGlvbihnbG9iYWxEYXRhLCAiZGVidWciLCBm
dW5jdGlvbkRlYnVnLCAxKTsKKyAgICAgICAgYWRkRnVuY3Rpb24oZ2xvYmFsRGF0YSwgInByaW50
IiwgZnVuY3Rpb25QcmludCwgMSk7CisgICAgICAgIGFkZEZ1bmN0aW9uKGdsb2JhbERhdGEsICJx
dWl0IiwgZnVuY3Rpb25RdWl0LCAwKTsKKyAgICAgICAgYWRkRnVuY3Rpb24oZ2xvYmFsRGF0YSwg
ImdjIiwgZnVuY3Rpb25HQywgMCk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBwdXREaXJlY3RG
dW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRo
aXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicmVs
ZWFzZUV4ZWN1dGFibGVNZW1vcnkiKSwgZnVuY3Rpb25SZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSkp
OworICAgICAgICBhZGRGdW5jdGlvbihnbG9iYWxEYXRhLCAicmVsZWFzZUV4ZWN1dGFibGVNZW1v
cnkiLCBmdW5jdGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5LCAwKTsKICNlbmRpZgotICAgICAg
ICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9i
YWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFs
RXhlYygpLCAidmVyc2lvbiIpLCBmdW5jdGlvblZlcnNpb24pKTsKLSAgICAgICAgcHV0RGlyZWN0
RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0
aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJ1
biIpLCBmdW5jdGlvblJ1bikpOwotICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0
dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAibG9hZCIpLCBmdW5jdGlvbkxvYWQp
KTsKLSAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpj
cmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlm
aWVyKGdsb2JhbEV4ZWMoKSwgImNoZWNrU3ludGF4IiksIGZ1bmN0aW9uQ2hlY2tTeW50YXgpKTsK
LSAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVy
KGdsb2JhbEV4ZWMoKSwgInJlYWRsaW5lIiksIGZ1bmN0aW9uUmVhZGxpbmUpKTsKLSAgICAgICAg
cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFs
RXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4
ZWMoKSwgInByZWNpc2VUaW1lIiksIGZ1bmN0aW9uUHJlY2lzZVRpbWUpKTsKLQorICAgICAgICBh
ZGRGdW5jdGlvbihnbG9iYWxEYXRhLCAidmVyc2lvbiIsIGZ1bmN0aW9uVmVyc2lvbiwgMSk7Cisg
ICAgICAgIGFkZEZ1bmN0aW9uKGdsb2JhbERhdGEsICJydW4iLCBmdW5jdGlvblJ1biwgMSk7Cisg
ICAgICAgIGFkZEZ1bmN0aW9uKGdsb2JhbERhdGEsICJsb2FkIiwgZnVuY3Rpb25Mb2FkLCAxKTsK
KyAgICAgICAgYWRkRnVuY3Rpb24oZ2xvYmFsRGF0YSwgImNoZWNrU3ludGF4IiwgZnVuY3Rpb25D
aGVja1N5bnRheCwgMSk7CisgICAgICAgIGFkZEZ1bmN0aW9uKGdsb2JhbERhdGEsICJyZWFkbGlu
ZSIsIGZ1bmN0aW9uUmVhZGxpbmUsIDApOworICAgICAgICBhZGRGdW5jdGlvbihnbG9iYWxEYXRh
LCAicHJlY2lzZVRpbWUiLCBmdW5jdGlvblByZWNpc2VUaW1lLCAwKTsKICNpZiBFTkFCTEUoU0FN
UExJTkdfRkxBR1MpCi0gICAgICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
MSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJzZXRTYW1wbGluZ0ZsYWdzIiksIGZ1bmN0aW9u
U2V0U2FtcGxpbmdGbGFncykpOwotICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0
dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiY2xlYXJTYW1wbGluZ0ZsYWdzIiks
IGZ1bmN0aW9uQ2xlYXJTYW1wbGluZ0ZsYWdzKSk7CisgICAgICAgIGFkZEZ1bmN0aW9uKGdsb2Jh
bERhdGEsICJzZXRTYW1wbGluZ0ZsYWdzIiwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzLCAxKTsK
KyAgICAgICAgYWRkRnVuY3Rpb24oZ2xvYmFsRGF0YSwgImNsZWFyU2FtcGxpbmdGbGFncyIsIGZ1
bmN0aW9uQ2xlYXJTYW1wbGluZ0ZsYWdzLCAxKTsKICNlbmRpZgogCiAgICAgICAgIEpTT2JqZWN0
KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsRXhlYygpKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBh
cnJheS0+cHV0KGdsb2JhbEV4ZWMoKSwgaSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBhcmd1bWVu
dHNbaV0pKTsKLSAgICAgICAgcHV0RGlyZWN0KGdsb2JhbEV4ZWMoKS0+Z2xvYmFsRGF0YSgpLCBJ
ZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CisgICAgICAgIHB1
dERpcmVjdChnbG9iYWxEYXRhLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIp
LCBhcnJheSk7CisgICAgfQorCisgICAgdm9pZCBhZGRGdW5jdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1bnNp
Z25lZCBhcmd1bWVudHMpCisgICAgeworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoZ2xv
YmFsRXhlYygpLCBuYW1lKTsKKyAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlkZW50aWZp
ZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0
dXJlKCksIGFyZ3VtZW50cywgaWRlbnRpZmllciwgZnVuY3Rpb24pKTsKICAgICB9CiB9OwogQ09N
UElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdl
cl9HbG9iYWxPYmplY3RfZmFsc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkocmV2aXNpb24gOTUyMDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUwLDExICs1MCwxNCBAQCB2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihFCiAKIHZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVy
dGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUsIEpTRnVuY3Rpb24qKiBjYWxsRnVuY3Rpb24sIEpTRnVu
Y3Rpb24qKiBhcHBseUZ1bmN0aW9uKQogewotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYywgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVu
Y3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgZnVuY3Rp
b25Qcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKKyAgICBKU0Z1bmN0aW9uKiB0b1N0cmlu
Z0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rp
b25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgZnVuY3Rpb25Q
cm90b0Z1bmNUb1N0cmluZyk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIHRvU3RyaW5nRnVu
Y3Rpb24sIERvbnRFbnVtKTsKKwogICAgICphcHBseUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDIsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5hcHBseSwgZnVuY3Rpb25Qcm90b0Z1bmNBcHBseSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCAqYXBwbHlGdW5jdGlvbiwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmFwcGx5LCAqYXBwbHlGdW5jdGlvbiwgRG9udEVudW0pOworCiAg
ICAgKmNhbGxGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbCwgZnVuY3Rp
b25Qcm90b0Z1bmNDYWxsKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMsICpjYWxsRnVuY3Rpb24sIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsLCAq
Y2FsbEZ1bmN0aW9uLCBEb250RW51bSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxGdW5jdGlvblByb3RvdHlwZShFeGVjU3RhdGUqKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNp
b24gOTUyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NCwzNCArMjU0LDM0IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0
ZShleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVT
dHJ1Y3R1cmUsICJUeXBlRXJyb3IiKSk7CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShl
eGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1
Y3R1cmUsICJVUklFcnJvciIpKTsKIAotICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAg
IG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGZ1
bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBtX2FycmF5UHJvdG90eXBlLT5wdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSk7
Ci0gICAgbV9ib29sZWFuUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCBib29sZWFuQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBtX3N0cmluZ1Byb3RvdHlwZS0+
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwgc3RyaW5nQ29uc3RydWN0b3IsIERvbnRF
bnVtKTsKLSAgICBtX251bWJlclByb3RvdHlwZS0+cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1
Y3RvciwgbnVtYmVyQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBtX2RhdGVQcm90b3R5cGUt
PnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGRhdGVDb25zdHJ1Y3RvciwgRG9udEVu
dW0pOwotICAgIG1fcmVnRXhwUHJvdG90eXBlLT5wdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVj
dG9yLCBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7Ci0gICAgZXJyb3JQcm90
b3R5cGUtPnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG1fZXJyb3JDb25zdHJ1Y3Rv
ci5nZXQoKSwgRG9udEVudW0pOwotCi0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIk9iamVjdCIpLCBvYmpl
Y3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJGdW5jdGlvbiIp
LCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIkFy
cmF5IiksIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAi
Qm9vbGVhbiIpLCBib29sZWFuQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihl
eGVjLCAiU3RyaW5nIiksIHN0cmluZ0NvbnN0cnVjdG9yLCBEb250RW51bSk7Ci0gICAgcHV0RGly
ZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZp
ZXIoZXhlYywgIk51bWJlciIpLCBudW1iZXJDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIHB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJEYXRlIiksIGRhdGVDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIHB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVu
dGlmaWVyKGV4ZWMsICJSZWdFeHAiKSwgbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVu
dW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJFcnJvciIpLCBtX2Vycm9yQ29uc3RydWN0b3IuZ2V0
KCksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiRXZhbEVycm9yIiksIG1fZXZhbEVy
cm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmFu
Z2VFcnJvciIpLCBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwotICAg
IHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsICJSZWZlcmVuY2VFcnJvciIpLCBtX3JlZmVyZW5jZUVycm9yQ29uc3Ry
dWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiU3ludGF4RXJyb3Ii
KSwgbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7Ci0gICAgcHV0RGly
ZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZp
ZXIoZXhlYywgIlR5cGVFcnJvciIpLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250
RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlVSSUVycm9yIiksIG1fVVJJRXJyb3JDb25zdHJ1
Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5jb25zdHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBtX2Z1bmN0
aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3Rv
ciwgRG9udEVudW0pOworICAgIG1fYXJyYXlQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVj
dG9yLCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgbV9ib29sZWFuUHJvdG90eXBl
LT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgYm9vbGVhbkNvbnN0cnVjdG9yLCBEb250RW51bSk7
CisgICAgbV9zdHJpbmdQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBzdHJpbmdD
b25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fbnVtYmVyUHJvdG90eXBlLT5wdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5jb25zdHJ1Y3RvciwgbnVtYmVyQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBtX2RhdGVQ
cm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBkYXRlQ29uc3RydWN0b3IsIERvbnRF
bnVtKTsKKyAgICBtX3JlZ0V4cFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG1f
cmVnRXhwQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBlcnJvclByb3RvdHlwZS0+
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVu
dW0pOworCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJPYmplY3QiKSwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElk
ZW50aWZpZXIoZXhlYywgIkZ1bmN0aW9uIiksIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElk
ZW50aWZpZXIoZXhlYywgIkFycmF5IiksIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZp
ZXIoZXhlYywgIkJvb2xlYW4iKSwgYm9vbGVhbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJTdHJpbmciKSwgc3RyaW5nQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhl
YywgIk51bWJlciIpLCBudW1iZXJDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAi
RGF0ZSIpLCBkYXRlQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlJlZ0V4cCIp
LCBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJFcnJv
ciIpLCBtX2Vycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIkV2
YWxFcnJvciIpLCBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJSYW5nZUVycm9yIiksIG1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJSZWZlcmVuY2VFcnJvciIpLCBtX3JlZmVyZW5jZUVycm9yQ29u
c3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlN5bnRheEVycm9yIiksIG1f
c3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiVHlw
ZUVycm9yIiksIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIo
ZXhlYywgIlVSSUVycm9yIiksIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0p
OwogCiAgICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ldmFsLCBnbG9iYWxGdW5jRXZhbCkpOwotICAgIHB1dERp
cmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbV9ldmFsRnVuY3Rpb24uZ2V0KCks
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ldmFsLCBtX2V2YWxGdW5jdGlvbi5nZXQoKSwg
RG9udEVudW0pOwogCiAgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsK
ICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgIk1hdGgiKSwgTWF0
aE9iamVjdDo6Y3JlYXRlKGV4ZWMsIHRoaXMsIE1hdGhPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSksCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCShyZXZpc2lvbiA5NTIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw3IEBAIHZv
aWQgSlNPYmplY3Q6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnMKIHsKICAgICBBU1NFUlQodmFs
dWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkg
PT0gSGVhcDo6aGVhcCh0aGlzKSk7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhl
Yy0+Z2xvYmFsRGF0YSgpOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKSB7CiAgICAgICAgIC8vIFNldHRpbmcgX19wcm90b19f
IHRvIGEgbm9uLW9iamVjdCwgbm9uLW51bGwgdmFsdWUgaXMgc2lsZW50bHkgaWdub3JlZCB0byBt
YXRjaCBNb3ppbGxhLgpAQCAtMTE3LDcgKzExOCw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICAgICAgCi0gICAgICAgIGlmICghc2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYy0+Z2xv
YmFsRGF0YSgpLCB2YWx1ZSkpCisgICAgICAgIGlmICghc2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hl
Y2soZ2xvYmFsRGF0YSwgdmFsdWUpKQogICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVFcnJvcihleGVjLCAiY3ljbGljIF9fcHJvdG9fXyB2YWx1ZSIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTEyNyw3ICsxMjgsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoRXhlY1N0YXRl
KiBleGVjLCBjb25zCiAgICAgZm9yIChKU09iamVjdCogb2JqID0gdGhpczsgIW9iai0+c3RydWN0
dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKTsgb2JqID0gYXNPYmplY3QocHJvdG90
eXBlKSkgewogICAgICAgICBwcm90b3R5cGUgPSBvYmotPnByb3RvdHlwZSgpOwogICAgICAgICBp
ZiAocHJvdG90eXBlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBpZiAoIXB1dERpcmVjdEludGVy
bmFsKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgdHJ1ZSwgc2xv
dCkgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGlmICghcHV0RGlyZWN0SW50
ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgdHJ1ZSwgc2xvdCwgZ2V0
SlNGdW5jdGlvbihnbG9iYWxEYXRhLCB2YWx1ZSkpICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAg
ICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJv
cGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTM1
LDE0ICsxMzYsMTQgQEAgdm9pZCBKU09iamVjdDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29ucwog
ICAgIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
OwotICAgIGlmICgobV9zdHJ1Y3R1cmUtPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkgJiYgYXR0
cmlidXRlcyAmIFJlYWRPbmx5KSB7CisgICAgaWYgKChtX3N0cnVjdHVyZS0+Z2V0KGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkgIT0gV1RGOjpub3RG
b3VuZCkgJiYgYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAgICAgIGlmIChzbG90LmlzU3Ry
aWN0TW9kZSgpKQogICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBmb3IgKEpTT2JqZWN0KiBvYmogPSB0aGlzOyA7IG9iaiA9IGFz
T2JqZWN0KHByb3RvdHlwZSkpIHsKLSAgICAgICAgaWYgKEpTVmFsdWUgZ3MgPSBvYmotPmdldERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgaWYgKEpT
VmFsdWUgZ3MgPSBvYmotPmdldERpcmVjdChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpKSB7CiAg
ICAgICAgICAgICBpZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkgewogICAgICAgICAgICAgICAgIEpT
T2JqZWN0KiBzZXR0ZXJGdW5jID0gYXNHZXR0ZXJTZXR0ZXIoZ3MpLT5zZXR0ZXIoKTsgICAgICAg
IAogICAgICAgICAgICAgICAgIGlmICghc2V0dGVyRnVuYykgewpAQCAtMTY5LDggKzE3MCw4IEBA
IHZvaWQgSlNPYmplY3Q6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnMKICAgICAgICAgaWYgKHBy
b3RvdHlwZS5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLQotICAgIGlmICgh
cHV0RGlyZWN0SW50ZXJuYWwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCAwLCB0cnVlLCBzbG90KSAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgIAorICAgIGlmICgh
cHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgdHJ1
ZSwgc2xvdCwgZ2V0SlNGdW5jdGlvbihnbG9iYWxEYXRhLCB2YWx1ZSkpICYmIHNsb3QuaXNTdHJp
Y3RNb2RlKCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgcmV0dXJuOwogfQpAQCAtMTgzLDEyICsxODQsMTMg
QEAgdm9pZCBKU09iamVjdDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaQogCiB2b2lkIEpTT2Jq
ZWN0OjpwdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgcHV0
RGlyZWN0SW50ZXJuYWwoKmdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0
ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3QpOworICAgIHB1dERpcmVjdEludGVybmFsKCpnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90
LCBnZXRKU0Z1bmN0aW9uKCpnbG9iYWxEYXRhLCB2YWx1ZSkpOwogfQogCiB2b2lkIEpTT2JqZWN0
OjpwdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykK
IHsKLSAgICBwdXREaXJlY3RJbnRlcm5hbCgqZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgYXR0cmlidXRlcyk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgcHV0RGlyZWN0
SW50ZXJuYWwoKmdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHRy
dWUsIHNsb3QsIGdldEpTRnVuY3Rpb24oKmdsb2JhbERhdGEsIHZhbHVlKSk7CiB9CiAKIHZvaWQg
SlNPYmplY3Q6OnB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQpA
QCAtMTk4LDEyICsyMDAsMTUgQEAgdm9pZCBKU09iamVjdDo6cHV0V2l0aEF0dHJpYnV0ZXMoSlNH
bG9iYQogCiB2b2lkIEpTT2JqZWN0OjpwdXRXaXRoQXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90KTsKKyAgICBKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgcHV0RGlyZWN0SW50ZXJu
YWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgY2hlY2tSZWFk
T25seSwgc2xvdCwgZ2V0SlNGdW5jdGlvbihnbG9iYWxEYXRhLCB2YWx1ZSkpOwogfQogCiB2b2lk
IEpTT2JqZWN0OjpwdXRXaXRoQXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykK
IHsKLSAgICBwdXREaXJlY3RJbnRlcm5hbChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OworICAgIEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBwdXREaXJl
Y3RJbnRlcm5hbChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCB0
cnVlLCBzbG90LCBnZXRKU0Z1bmN0aW9uKGdsb2JhbERhdGEsIHZhbHVlKSk7CiB9CiAKIHZvaWQg
SlNPYmplY3Q6OnB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQpAQCAtMzM3LDcg
KzM0Miw3IEBAIHZvaWQgSlNPYmplY3Q6OmRlZmluZUdldHRlcihFeGVjU3RhdGUqIGUKICAgICBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3Q7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJT
ZXR0ZXI6OmNyZWF0ZShleGVjKTsKLSAgICBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwgYXR0cmlidXRlcyB8IEdldHRlciwgdHJ1ZSwgc2xv
dCk7CisgICAgcHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBnZXR0
ZXJTZXR0ZXIsIGF0dHJpYnV0ZXMgfCBHZXR0ZXIsIHRydWUsIHNsb3QsIDApOwogCiAgICAgLy8g
cHV0RGlyZWN0IHdpbGwgY2hhbmdlIG91ciBTdHJ1Y3R1cmUgaWYgd2UgYWRkIGEgbmV3IHByb3Bl
cnR5LiBGb3IKICAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91Z2gsIHdlIGFsc28gbmVl
ZCB0byBjaGFuZ2Ugb3VyIFN0cnVjdHVyZQpAQCAtMzY3LDcgKzM3Miw3IEBAIHZvaWQgSlNPYmpl
Y3Q6OmRlZmluZVNldHRlcihFeGVjU3RhdGUqIGUKIAogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
OwogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUo
ZXhlYyk7Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIGdldHRlclNldHRlciwgYXR0cmlidXRlcyB8IFNldHRlciwgdHJ1ZSwgc2xvdCk7Cisg
ICAgcHV0RGlyZWN0SW50ZXJuYWwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGdl
dHRlclNldHRlciwgYXR0cmlidXRlcyB8IFNldHRlciwgdHJ1ZSwgc2xvdCwgMCk7CiAKICAgICAv
LyBwdXREaXJlY3Qgd2lsbCBjaGFuZ2Ugb3VyIFN0cnVjdHVyZSBpZiB3ZSBhZGQgYSBuZXcgcHJv
cGVydHkuIEZvcgogICAgIC8vIGdldHRlcnMgYW5kIHNldHRlcnMsIHRob3VnaCwgd2UgYWxzbyBu
ZWVkIHRvIGNoYW5nZSBvdXIgU3RydWN0dXJlCkBAIC01NjYsMjYgKzU3MSw2IEBAIHZvaWQgSlNP
YmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEKICAgICAgICAgcHV0VW5kZWZpbmVkQXRE
aXJlY3RPZmZzZXQob2Zmc2V0KTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQg
YXR0cikKLXsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50
aWZpZXIoZXhlYywgZnVuY3Rpb24tPm5hbWUoZXhlYykpLCBmdW5jdGlvbiwgYXR0cik7Ci19Ci0K
LXZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5j
dGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIpCi17Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMp
KSwgZnVuY3Rpb24sIGF0dHIpOwotfQotCi12b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSW50ZXJuYWxGdW5jdGlvbiogZnVu
Y3Rpb24sIHVuc2lnbmVkIGF0dHIpCi17Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgZnVuY3Rpb24tPm5h
bWUoZXhlYykpLCBmdW5jdGlvbiwgYXR0cik7Ci19Ci0KLXZvaWQgSlNPYmplY3Q6OnB1dERpcmVj
dEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0Z1bmN0aW9uKiBm
dW5jdGlvbiwgdW5zaWduZWQgYXR0cikKLXsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBmdW5jdGlvbi0+
bmFtZShleGVjKSksIGZ1bmN0aW9uLCBhdHRyKTsKLX0KLQogTkVWRVJfSU5MSU5FIHZvaWQgSlNP
YmplY3Q6OmZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiBzbG90LCBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbikKIHsKICAgICBpZiAoSlNPYmplY3QqIGdldHRl
ckZ1bmN0aW9uID0gYXNHZXR0ZXJTZXR0ZXIobG9jYXRpb24tPmdldCgpKS0+Z2V0dGVyKCkpIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24g
OTUyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODAsMTUgKzE4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKICAgICAgICAgYm9vbCBwdXREaXJlY3Qo
SlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKEpTR2xv
YmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiwgdW5zaWdu
ZWQgYXR0ciA9IDApOwotICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKEpTR2xvYmFsRGF0
YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiwgdW5zaWduZWQgYXR0
ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdm9pZCBw
dXREaXJlY3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0
aW9uLCB1bnNpZ25lZCBhdHRyID0gMCk7Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQgYXR0ciA9IDAp
OwotCiAgICAgICAgIHZvaWQgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRy
ID0gMCk7Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFs
dWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKLSAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rp
b24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKLSAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlvbiogZnVuY3Rpb24sIHVu
c2lnbmVkIGF0dHIgPSAwKTsKIAogICAgICAgICAvLyBGYXN0IGFjY2VzcyB0byBrbm93biBwcm9w
ZXJ0eSBvZmZzZXRzLgogICAgICAgICBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChzaXplX3Qgb2Zm
c2V0KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLmdldCgpOyB9CkBA
IC0zMDEsOCArMjkzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBi
b29sIHB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQ
dXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwqKTsKLSAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5h
bChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90Jik7Ci0g
ICAgICAgIHZvaWQgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CiAK
ICAgICAgICAgYm9vbCBpbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIApAQCAtNzE1LDYzICs3
MDUsMjkgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQotewotICAgIEFTU0VSVCh2YWx1ZSk7Ci0gICAgQVNTRVJU
KCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRo
aXMpKTsKLQotICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCBnZXRKU0Z1bmN0
aW9uKGdsb2JhbERhdGEsIHZhbHVlKSk7Ci19Ci0KLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKLXsKLSAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBmYWxzZSwgc2xvdCwgZ2V0SlNGdW5j
dGlvbihnbG9iYWxEYXRhLCB2YWx1ZSkpOwotfQotCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVh
ZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAg
IEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6
aGVhcCh0aGlzKSk7CiAKLSAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgY2hlY2tSZWFkT25seSwgc2xvdCwgMCk7
CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIGF0dHJpYnV0ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3QsIGdldEpTRnVuY3Rpb24oZ2xv
YmFsRGF0YSwgdmFsdWUpKTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdDsKLSAgICBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBhdHRyaWJ1dGVzLCBmYWxzZSwgc2xvdCwgMCk7CisgICAgcHV0RGlyZWN0SW50ZXJu
YWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgZmFsc2UsIHNs
b3QsIGdldEpTRnVuY3Rpb24oZ2xvYmFsRGF0YSwgdmFsdWUpKTsKIH0KIAogaW5saW5lIGJvb2wg
SlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewotICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCAwLCBmYWxzZSwgc2xvdCwgMCk7Ci19Ci0KLWlubGluZSB2b2lkIEpTT2JqZWN0
OjpwdXREaXJlY3RGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
Ym9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgcHV0RGly
ZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywg
Y2hlY2tSZWFkT25seSwgc2xvdCwgdmFsdWUpOwotfQotCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIpCi17Ci0gICAg
UHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0ciwgZmFsc2UsIHNsb3QsIHZhbHVlKTsKKyAgICByZXR1
cm4gcHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwg
ZmFsc2UsIHNsb3QsIGdldEpTRnVuY3Rpb24oZ2xvYmFsRGF0YSwgdmFsdWUpKTsKIH0KIAogaW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkg
PSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICBzaXplX3Qgb2Zm
c2V0ID0gbV9zdHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0
YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCAwKTsKLSAgICBpZiAoY3VycmVudENhcGFjaXR5
ICE9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICBhbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIG1fc3RydWN0
dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICBwdXREaXJlY3RPZmZzZXQoZ2xv
YmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7Ci19Ci0KLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQotewotICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0cnVjdHVyZS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1
cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCB2YWx1ZSk7CisgICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5h
ZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcywgZ2V0SlNGdW5jdGlvbihnbG9iYWxEYXRhLCB2YWx1ZSkpOwogICAgIGlmIChjdXJy
ZW50Q2FwYWNpdHkgIT0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCiAg
ICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIGN1cnJlbnRDYXBhY2l0
eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgIHB1dERpcmVj
dE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAkocmV2aXNpb24gOTUyMDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4
NCw3IEBAIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiAKICNlbmRpZgog
ICAgICAgICAgICAgZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIGVudHJ5LT5mdW5jdGlvbkxl
bmd0aCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbigpKTsKIAotICAgICAgICB0aGlz
T2JqLT5wdXREaXJlY3RGdW5jdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwg
ZnVuY3Rpb24sIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICB0aGlzT2JqLT5wdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBlbnRyeS0+YXR0
cmlidXRlcygpKTsKICAgICAgICAgbG9jYXRpb24gPSB0aGlzT2JqLT5nZXREaXJlY3RMb2NhdGlv
bihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkocmV2aXNpb24gOTUyMDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzEx
LDcgKzMxMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGlmIChlbnRyeS0+YXR0cmli
dXRlcygpICYgRnVuY3Rpb24pIHsgLy8gZnVuY3Rpb246IHB1dCBhcyBvdmVycmlkZSBwcm9wZXJ0
eQogICAgICAgICAgICAgaWYgKExJS0VMWSh2YWx1ZS5pc0NlbGwoKSkpCi0gICAgICAgICAgICAg
ICAgdGhpc09iai0+cHV0RGlyZWN0RnVuY3Rpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLmFzQ2VsbCgpKTsKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmICgh
KGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpCg==
</data>
<flag name="review"
          id="104477"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>