<?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>61704</bug_id>
          
          <creation_ts>2011-05-29 12:40:40 -0700</creation_ts>
          <short_desc>Some heap refactoring</short_desc>
          <delta_ts>2011-05-31 15:33:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>411997</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-29 12:40:40 -0700</bug_when>
    <thetext>Some heap refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411998</commentid>
    <comment_count>1</comment_count>
      <attachid>95290</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-29 12:43:59 -0700</bug_when>
    <thetext>Created attachment 95290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412003</commentid>
    <comment_count>2</comment_count>
      <attachid>95293</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-29 12:55:26 -0700</bug_when>
    <thetext>Created attachment 95293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412004</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-29 12:55:41 -0700</bug_when>
    <thetext>Giving the Windows EWS bot another go at things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412040</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-29 14:56:57 -0700</bug_when>
    <thetext>Committed r87653: &lt;http://trac.webkit.org/changeset/87653&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412935</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2011-05-31 15:33:17 -0700</bug_when>
    <thetext>This is failing to build on the WinCairo builder.


2&gt;------ Build started: Project: JavaScriptCore, Configuration: Debug_Cairo_CFLite Win32 ------
2&gt;Performing Pre-Build Event...
2&gt;/usr/bin/bash
2&gt;Performing Pre-Link Event...
2&gt;Linking...
2&gt;   Creating library D:\Projects\BuildSlave\win-cairo-debug\build\WebKitBuild\Debug_Cairo_CFLite\lib\JavaScriptCore_debug.lib and object D:\Projects\BuildSlave\win-cairo-debug\build\WebKitBuild\Debug_Cairo_CFLite\lib\JavaScriptCore_debug.exp
2&gt;ExceptionHelpers.obj : error LNK2019: unresolved external symbol &quot;private: void * __thiscall JSC::Heap::allocateSlowCase(unsigned int)&quot; (?allocateSlowCase@Heap@JSC@@AAEPAXI@Z) referenced in function &quot;public: void * __thiscall JSC::Heap::allocate(unsigned int)&quot; (?allocate@Heap@JSC@@QAEPAXI@Z)
2&gt;NativeErrorConstructor.obj : error LNK2001: unresolved external symbol &quot;private: void * __thiscall JSC::Heap::allocateSlowCase(unsigned int)&quot; (?allocateSlowCase@Heap@JSC@@AAEPAXI@Z)
2&gt;RegExpConstructor.obj : error LNK2001: unresolved external symbol &quot;private: void * __thiscall JSC::Heap::allocateSlowCase(unsigned int)&quot; (?allocateSlowCase@Heap@JSC@@AAEPAXI@Z)
2&gt;JITArithmetic32_64.obj : error LNK2001: unresolved external symbol &quot;private: void * __thiscall JSC::Heap::allocateSlowCase(unsigned int)&quot; (?allocateSlowCase@Heap@JSC@@AAEPAXI@Z)
2&gt;ExceptionHelpers.obj : error LNK2019: unresolved external symbol &quot;private: void * __thiscall JSC::MarkedSpace::allocateFromSizeClass(struct JSC::MarkedSpace::SizeClass &amp;)&quot; (?allocateFromSizeClass@MarkedSpace@JSC@@AAEPAXAAUSizeClass@12@@Z) referenced in function &quot;public: void * __thiscall JSC::MarkedSpace::allocate(unsigned int)&quot; (?allocate@MarkedSpace@JSC@@QAEPAXI@Z)
2&gt;NativeErrorConstructor.obj : error LNK2001: unresolved external symbol &quot;private: void * __thiscall JSC::MarkedSpace::allocateFromSizeClass(struct JSC::MarkedSpace::SizeClass &amp;)&quot; (?allocateFromSizeClass@MarkedSpace@JSC@@AAEPAXAAUSizeClass@12@@Z)
2&gt;RegExpConstructor.obj : error LNK2001: unresolved external symbol &quot;private: void * __thiscall JSC::MarkedSpace::allocateFromSizeClass(struct JSC::MarkedSpace::SizeClass &amp;)&quot; (?allocateFromSizeClass@MarkedSpace@JSC@@AAEPAXAAUSizeClass@12@@Z)
2&gt;JITArithmetic32_64.obj : error LNK2001: unresolved external symbol &quot;private: void * __thiscall JSC::MarkedSpace::allocateFromSizeClass(struct JSC::MarkedSpace::SizeClass &amp;)&quot; (?allocateFromSizeClass@MarkedSpace@JSC@@AAEPAXAAUSizeClass@12@@Z)
2&gt;D:\Projects\BuildSlave\win-cairo-debug\build\WebKitBuild\Debug_Cairo_CFLite\bin\JavaScriptCore_debug.dll : fatal error LNK1120: 2 unresolved externals
2&gt;Build log was saved at &quot;file://D:\Projects\BuildSlave\win-cairo-debug\build\WebKitBuild\Debug_Cairo_CFLite\obj\JavaScriptCore\BuildLog.htm&quot;
2&gt;JavaScriptCore - 9 error(s), 0 warning(s)
3&gt;------ Build started: Project: WebCoreGenerated, Configuration: Debug_Cairo_CFLite Win32 ------


Do we need to touch a property file to force a rebuild?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95290</attachid>
            <date>2011-05-29 12:43:59 -0700</date>
            <delta_ts>2011-05-29 12:55:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61704-20110529124358.patch</filename>
            <type>text/plain</type>
            <size>16391</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODc2NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAK
KzIwMTEtMDUtMjkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21lIGhlYXAgcmVmYWN0
b3JpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYx
NzA0CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6IEV4cG9ydCEKKworICAgICAgICAq
IGhlYXAvSGVhcC5jcHA6IENPTExFQ1RfT05fRVZFUllfQUxMT0NBVElPTiBjYW4gYWN0dWFsbHkg
ZG8gc28gbm93LgorCisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOiBDaGFuZ2VkIEhlYXAgc3Vi
LW9iamVjdHMgdG8gcG9pbnQgdG8gdGhlIGhlYXAuCisKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxs
b2NhdGUpOiBDaGFuZ2VkIGlubGluZSBhbGxvY2F0aW9uIGNvZGUgdG8gb25seSBzZWxlY3QgdGhl
CisgICAgICAgIHNpemUgY2xhc3MsIHNpbmNlIHRoaXMgY2FuIGJlIG9wdGltaXplZCBvdXQgYXQg
Y29tcGlsZSB0aW1lIC0tIGV2ZXJ5dGhpbmcKKyAgICAgICAgZWxzZSBpcyBub3cgaW5saW5lZCBp
bnRvIHRoaXMgb3V0LW9mLWxpbmUgZnVuY3Rpb24uCisgICAgICAgIAorICAgICAgICBObyBuZWVk
IHRvIGR1cGxpY2F0ZSBBU1NFUlRzIG1hZGUgaW4gb3VyIGNhbGxlci4KKworICAgICAgICAqIGhl
YXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjpoZWFwKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6aXNNYXJrZWQpOgorICAgICAgICAoSlNDOjpIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6dGVzdEFuZENsZWFyTWFya2VkKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6c2V0TWFya2VkKTogQ2FsbCBkaXJlY3RseSBpbnRvIE1hcmtlZEJsb2NrIGluc3RlYWQgb2Yg
YWRkaW5nCisgICAgICAgIGEgbGF5ZXIgb2YgaW5kaXJlY3Rpb24gdGhyb3VnaCBNYXJrZWRTcGFj
ZS4KKworICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0ZSk6IFNlZSBhYm92ZS4KKworICAgICAg
ICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKToKKyAgICAgICAg
KiBoZWFwL01hcmtlZEJsb2NrLmg6IENoYW5nZWQgSGVhcCBzdWItb2JqZWN0cyB0byBwb2ludCB0
byB0aGUgaGVhcC4KKworICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuY3BwOgorICAgICAgICAo
SlNDOjpNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFj
ZTo6YWxsb2NhdGVCbG9jayk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAg
ICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxsb2NhdGUpOiBVcGRhdGVkIHRvIG1hdGNoIGNoYW5nZXMg
YWJvdmUuCisKIDIwMTEtMDUtMjggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBCVUlMRCBGSVggd2hlbiBidWlsZGluZyBvbmx5IHRoZSBpbnRlcnByZXRlcgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiA4
NzYzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNiw3ICsxMTYsNiBAQCBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4
ZWNTdGF0ZUVQTlNfCiBfX1pOM0pTQzExSlNCeXRlQXJyYXkxM3NfZGVmYXVsdEluZm9FCiBfX1pO
M0pTQzExSlNCeXRlQXJyYXkxNWNyZWF0ZVN0cnVjdHVyZUVSTlNfMTJKU0dsb2JhbERhdGFFTlNf
N0pTVmFsdWVFUEtOU185Q2xhc3NJbmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5QzFFUE5TXzlF
eGVjU3RhdGVFUE5TXzlTdHJ1Y3R1cmVFUE4zV1RGOUJ5dGVBcnJheUUKLV9fWk4zSlNDMTFNYXJr
ZWRTcGFjZTIxYWxsb2NhdGVGcm9tU2l6ZUNsYXNzRVJOUzBfOVNpemVDbGFzc0UKIF9fWk4zSlND
MTFQYXJzZXJBcmVuYTVyZXNldEV2CiBfX1pOM0pTQzExY2hlY2tTeW50YXhFUE5TXzlFeGVjU3Rh
dGVFUktOU18xMFNvdXJjZUNvZGVFCiBfX1pOM0pTQzExY3JlYXRlRXJyb3JFUE5TXzlFeGVjU3Rh
dGVFUktOU183VVN0cmluZ0UKQEAgLTIyMyw3ICsyMjIsNiBAQCBfX1pOM0pTQzM1Y3JlYXRlSW50
ZXJydXB0ZWRFeGVjdXRpb25FeGNlCiBfX1pOM0pTQzNOYU5FCiBfX1pOM0pTQzQxY29uc3RydWN0
RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2tFUE5TXzlFeGVjU3RhdGVFUE5TXzE0SlNH
bG9iYWxPYmplY3RFUktOU183QXJnTGlzdEVSS05TXzEwSWRlbnRpZmllckVSS05TXzdVU3RyaW5n
RWkKIF9fWk4zSlNDNEhlYXAxNmFjdGl2aXR5Q2FsbGJhY2tFdgotX19aTjNKU0M0SGVhcDE2YWxs
b2NhdGVTbG93Q2FzZUVtCiBfX1pOM0pTQzRIZWFwMTZvYmplY3RUeXBlQ291bnRzRXYKIF9fWk4z
SlNDNEhlYXAxN2NvbGxlY3RBbGxHYXJiYWdlRXYKIF9fWk4zSlNDNEhlYXAxN2dsb2JhbE9iamVj
dENvdW50RXYKQEAgLTIzNSw2ICsyMzMsNyBAQCBfX1pOM0pTQzRIZWFwMjZwcm90ZWN0ZWRHbG9i
YWxPYmplY3RDb3VuCiBfX1pOM0pTQzRIZWFwMjlyZXBvcnRFeHRyYU1lbW9yeUNvc3RTbG93Q2Fz
ZUVtCiBfX1pOM0pTQzRIZWFwN2Rlc3Ryb3lFdgogX19aTjNKU0M0SGVhcDdwcm90ZWN0RU5TXzdK
U1ZhbHVlRQorX19aTjNKU0M0SGVhcDhhbGxvY2F0ZUVSTlNfMTFNYXJrZWRTcGFjZTlTaXplQ2xh
c3NFCiBfX1pOM0pTQzRIZWFwOXVucHJvdGVjdEVOU183SlNWYWx1ZUUKIF9fWk4zSlNDNFlhcnIx
MVlhcnJQYXR0ZXJuQzFFUktOU183VVN0cmluZ0ViYlBQS2MKIF9fWk4zSlNDNFlhcnIxMWJ5dGVD
b21waWxlRVJOUzBfMTFZYXJyUGF0dGVybkVQTjNXVEYyMEJ1bXBQb2ludGVyQWxsb2NhdG9yRQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDg3NjMyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDcgQEAKICNpbmNsdWRlICJUcmFjaW5nLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
Ci0jZGVmaW5lIENPTExFQ1RfT05fRVZFUllfU0xPV19BTExPQ0FUSU9OIDAKKyNkZWZpbmUgQ09M
TEVDVF9PTl9FVkVSWV9BTExPQ0FUSU9OIDAKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAt
NjUsNyArNjUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFRocmVhZFN0YXRlKEpTCiAK
IEhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgIDogbV9vcGVyYXRpb25J
blByb2dyZXNzKE5vT3BlcmF0aW9uKQotICAgICwgbV9tYXJrZWRTcGFjZShnbG9iYWxEYXRhKQor
ICAgICwgbV9tYXJrZWRTcGFjZSh0aGlzKQogICAgICwgbV9tYXJrTGlzdFNldCgwKQogICAgICwg
bV9hY3Rpdml0eUNhbGxiYWNrKERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZSh0aGlz
KSkKICAgICAsIG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQpAQCAtMTMwLDIzICsxMzAsMjEgQEAg
dm9pZCBIZWFwOjpyZXBvcnRFeHRyYU1lbW9yeUNvc3RTbG93Q2FzZQogICAgIG1fZXh0cmFDb3N0
ICs9IGNvc3Q7CiB9CiAKLXZvaWQqIEhlYXA6OmFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZV90IGJ5dGVz
KQordm9pZCogSGVhcDo6YWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNz
KQogewotICAgIEFTU0VSVChnbG9iYWxEYXRhKCktPmlkZW50aWZpZXJUYWJsZSA9PSB3dGZUaHJl
YWREYXRhKCkuY3VycmVudElkZW50aWZpZXJUYWJsZSgpKTsKLSAgICBBU1NFUlQoSlNMb2NrOjps
b2NrQ291bnQoKSA+IDApOwotICAgIEFTU0VSVChKU0xvY2s6OmN1cnJlbnRUaHJlYWRJc0hvbGRp
bmdMb2NrKCkpOwotICAgIEFTU0VSVChieXRlcyA8PSBNYXJrZWRTcGFjZTo6bWF4Q2VsbFNpemUp
OwotICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOwotCi0j
aWYgQ09MTEVDVF9PTl9FVkVSWV9TTE9XX0FMTE9DQVRJT04KKyNpZiBDT0xMRUNUX09OX0VWRVJZ
X0FMTE9DQVRJT04KICAgICBjb2xsZWN0QWxsR2FyYmFnZSgpOwogICAgIEFTU0VSVChtX29wZXJh
dGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOwogI2VuZGlmCiAKKyAgICB2b2lkKiByZXN1
bHQgPSBtX21hcmtlZFNwYWNlLmFsbG9jYXRlKHNpemVDbGFzcyk7CisgICAgaWYgKHJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKwogICAgIHJlc2V0KERvTm90U3dlZXApOwogCiAgICAg
bV9vcGVyYXRpb25JblByb2dyZXNzID0gQWxsb2NhdGlvbjsKLSAgICB2b2lkKiByZXN1bHQgPSBt
X21hcmtlZFNwYWNlLmFsbG9jYXRlKGJ5dGVzKTsKKyAgICByZXN1bHQgPSBtX21hcmtlZFNwYWNl
LmFsbG9jYXRlKHNpemVDbGFzcyk7CiAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVy
YXRpb247CiAKICAgICBBU1NFUlQocmVzdWx0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgJKHJldmlzaW9uIDg3NjMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBpbmxpbmUgYm9vbCBpc0J1c3koKTsKIAogICAgICAgICB2b2lkKiBhbGxvY2F0ZShzaXpl
X3QpOworICAgICAgICB2b2lkKiBhbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CiAg
ICAgICAgIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsKIAogICAgICAgICB2b2lkIHJlcG9ydEV4
dHJhTWVtb3J5Q29zdChzaXplX3QgY29zdCk7CkBAIC0xMTIsOCArMTEzLDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEhhbmRsZVN0YWNrKiBoYW5kbGVTdGFjaygpIHsgcmV0dXJuICZtX2hh
bmRsZVN0YWNrOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9i
YWxEYXRhOwotCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0cmFDb3N0ID0gMjU2
OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJhQ29zdCA9IDEwMjQgKiAxMDI0
OwogCkBAIC0xNTUsMjQgKzE1NCwzNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJu
IG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbjsKICAgICB9CiAKKyAgICBpbmxp
bmUgSGVhcCogSGVhcDo6aGVhcChKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICByZXR1cm4g
TWFya2VkQmxvY2s6OmJsb2NrRm9yKGNlbGwpLT5oZWFwKCk7CisgICAgfQorCisgICAgaW5saW5l
IEhlYXAqIEhlYXA6OmhlYXAoSlNWYWx1ZSB2KQorICAgIHsKKyAgICAgICAgaWYgKCF2LmlzQ2Vs
bCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBoZWFwKHYuYXNDZWxs
KCkpOworICAgIH0KKwogICAgIGlubGluZSBib29sIEhlYXA6OmlzTWFya2VkKGNvbnN0IHZvaWQq
IGNlbGwpCiAgICAgewotICAgICAgICByZXR1cm4gTWFya2VkU3BhY2U6OmlzTWFya2VkKGNlbGwp
OworICAgICAgICByZXR1cm4gTWFya2VkQmxvY2s6OmJsb2NrRm9yKGNlbGwpLT5pc01hcmtlZChj
ZWxsKTsKICAgICB9CiAKICAgICBpbmxpbmUgYm9vbCBIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKGNv
bnN0IHZvaWQqIGNlbGwpCiAgICAgewotICAgICAgICByZXR1cm4gTWFya2VkU3BhY2U6OnRlc3RB
bmRTZXRNYXJrZWQoY2VsbCk7CisgICAgICAgIHJldHVybiBNYXJrZWRCbG9jazo6YmxvY2tGb3Io
Y2VsbCktPnRlc3RBbmRTZXRNYXJrZWQoY2VsbCk7CiAgICAgfQogCiAgICAgaW5saW5lIGJvb2wg
SGVhcDo6dGVzdEFuZENsZWFyTWFya2VkKGNvbnN0IHZvaWQqIGNlbGwpCiAgICAgewotICAgICAg
ICByZXR1cm4gTWFya2VkU3BhY2U6OnRlc3RBbmRDbGVhck1hcmtlZChjZWxsKTsKKyAgICAgICAg
cmV0dXJuIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+dGVzdEFuZENsZWFyTWFya2VkKGNl
bGwpOwogICAgIH0KIAogICAgIGlubGluZSB2b2lkIEhlYXA6OnNldE1hcmtlZChjb25zdCB2b2lk
KiBjZWxsKQogICAgIHsKLSAgICAgICAgTWFya2VkU3BhY2U6OnNldE1hcmtlZChjZWxsKTsKKyAg
ICAgICAgTWFya2VkQmxvY2s6OmJsb2NrRm9yKGNlbGwpLT5zZXRNYXJrZWQoY2VsbCk7CiAgICAg
fQogCiAgICAgaW5saW5lIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCosIEpT
VmFsdWUpCkBAIC0yMDIsMjYgKzIxMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSB2
b2lkKiBIZWFwOjphbGxvY2F0ZShzaXplX3QgYnl0ZXMpCiAgICAgewogICAgICAgICBBU1NFUlQo
aXNWYWxpZEFsbG9jYXRpb24oYnl0ZXMpKTsKLQotICAgICAgICBtX29wZXJhdGlvbkluUHJvZ3Jl
c3MgPSBBbGxvY2F0aW9uOwotICAgICAgICB2b2lkKiByZXN1bHQgPSBtX21hcmtlZFNwYWNlLmFs
bG9jYXRlKGJ5dGVzKTsKLSAgICAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRp
b247Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0g
ICAgICAgIHJldHVybiBhbGxvY2F0ZVNsb3dDYXNlKGJ5dGVzKTsKLSAgICB9Ci0KLSAgICBpbmxp
bmUgSGVhcCogSGVhcDo6aGVhcChKU1ZhbHVlIHYpCi0gICAgewotICAgICAgICBpZiAoIXYuaXND
ZWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIGhlYXAodi5hc0Nl
bGwoKSk7Ci0gICAgfQotCi0gICAgaW5saW5lIEhlYXAqIEhlYXA6OmhlYXAoSlNDZWxsKiBjKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIE1hcmtlZFNwYWNlOjpoZWFwKGMpOworICAgICAgICBNYXJr
ZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MgPSBtX21hcmtlZFNwYWNlLnNpemVDbGFzc0Zv
cihieXRlcyk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZShzaXplQ2xhc3MpOwogICAgIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suY3BwCShyZXZpc2lvbiA4NzYzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDEyIEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1NYXJrZWRCbG9jayogTWFya2VkQmxvY2s6OmNyZWF0ZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIHNpemVfdCBjZWxsU2l6ZSkKK01hcmtlZEJsb2NrKiBNYXJr
ZWRCbG9jazo6Y3JlYXRlKEhlYXAqIGhlYXAsIHNpemVfdCBjZWxsU2l6ZSkKIHsKICAgICBQYWdl
QWxsb2NhdGlvbkFsaWduZWQgYWxsb2NhdGlvbiA9IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZDo6YWxs
b2NhdGUoYmxvY2tTaXplLCBibG9ja1NpemUsIE9TQWxsb2NhdG9yOjpKU0dDSGVhcFBhZ2VzKTsK
ICAgICBpZiAoIXN0YXRpY19jYXN0PGJvb2w+KGFsbG9jYXRpb24pKQogICAgICAgICBDUkFTSCgp
OwotICAgIHJldHVybiBuZXcgKGFsbG9jYXRpb24uYmFzZSgpKSBNYXJrZWRCbG9jayhhbGxvY2F0
aW9uLCBnbG9iYWxEYXRhLCBjZWxsU2l6ZSk7CisgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGlvbi5i
YXNlKCkpIE1hcmtlZEJsb2NrKGFsbG9jYXRpb24sIGhlYXAsIGNlbGxTaXplKTsKIH0KIAogdm9p
ZCBNYXJrZWRCbG9jazo6ZGVzdHJveShNYXJrZWRCbG9jayogYmxvY2spCkBAIC00OCwxNyArNDgs
MTcgQEAgdm9pZCBNYXJrZWRCbG9jazo6ZGVzdHJveShNYXJrZWRCbG9jayogYgogICAgIGJsb2Nr
LT5tX2FsbG9jYXRpb24uZGVhbGxvY2F0ZSgpOwogfQogCi1NYXJrZWRCbG9jazo6TWFya2VkQmxv
Y2soY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiBhbGxvY2F0aW9uLCBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIHNpemVfdCBjZWxsU2l6ZSkKK01hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhj
b25zdCBQYWdlQWxsb2NhdGlvbkFsaWduZWQmIGFsbG9jYXRpb24sIEhlYXAqIGhlYXAsIHNpemVf
dCBjZWxsU2l6ZSkKICAgICA6IG1fbmV4dEF0b20oZmlyc3RBdG9tKCkpCiAgICAgLCBtX2FsbG9j
YXRpb24oYWxsb2NhdGlvbikKLSAgICAsIG1faGVhcCgmZ2xvYmFsRGF0YS0+aGVhcCkKKyAgICAs
IG1faGVhcChoZWFwKQogewogICAgIG1fYXRvbXNQZXJDZWxsID0gKGNlbGxTaXplICsgYXRvbVNp
emUgLSAxKSAvIGF0b21TaXplOwogICAgIG1fZW5kQXRvbSA9IGF0b21zUGVyQmxvY2sgLSBtX2F0
b21zUGVyQ2VsbCArIDE7CiAKLSAgICBTdHJ1Y3R1cmUqIGR1bW15TWFya2FibGVDZWxsU3RydWN0
dXJlID0gZ2xvYmFsRGF0YS0+ZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUuZ2V0KCk7CisgICAg
U3RydWN0dXJlKiBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZSA9IGhlYXAtPmdsb2JhbERhdGEo
KS0+ZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKQotICAgICAg
ICBuZXcgKCZhdG9tcygpW2ldKSBKU0NlbGwoKmdsb2JhbERhdGEsIGR1bW15TWFya2FibGVDZWxs
U3RydWN0dXJlLCBKU0NlbGw6OkNyZWF0aW5nRWFybHlDZWxsKTsKKyAgICAgICAgbmV3ICgmYXRv
bXMoKVtpXSkgSlNDZWxsKCpoZWFwLT5nbG9iYWxEYXRhKCksIGR1bW15TWFya2FibGVDZWxsU3Ry
dWN0dXJlLCBKU0NlbGw6OkNyZWF0aW5nRWFybHlDZWxsKTsKIH0KIAogdm9pZCBNYXJrZWRCbG9j
azo6c3dlZXAoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5o
CShyZXZpc2lvbiA4NzYzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBIZWFwOwogICAgIGNsYXNzIEpTQ2VsbDsKLSAgICBjbGFzcyBKU0dsb2JhbERh
dGE7CiAKICAgICB0eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwogCkBAIC00NCw3ICs0Myw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBh
dG9tU2l6ZSA9IHNpemVvZihkb3VibGUpOyAvLyBFbnN1cmVzIG5hdHVyYWwgYWxpZ25tZW50IGZv
ciBhbGwgYnVpbHQtaW4gdHlwZXMuCiAKLSAgICAgICAgc3RhdGljIE1hcmtlZEJsb2NrKiBjcmVh
dGUoSlNHbG9iYWxEYXRhKiwgc2l6ZV90IGNlbGxTaXplKTsKKyAgICAgICAgc3RhdGljIE1hcmtl
ZEJsb2NrKiBjcmVhdGUoSGVhcCosIHNpemVfdCBjZWxsU2l6ZSk7CiAgICAgICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koTWFya2VkQmxvY2sqKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBpc0F0b21B
bGlnbmVkKGNvbnN0IHZvaWQqKTsKQEAgLTg1LDcgKzg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgdHlwZWRlZiBjaGFyIEF0b21bYXRvbVNpemVdOwogCi0gICAgICAgIE1hcmtlZEJs
b2NrKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYsIEpTR2xvYmFsRGF0YSosIHNpemVfdCBj
ZWxsU2l6ZSk7CisgICAgICAgIE1hcmtlZEJsb2NrKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25l
ZCYsIEhlYXAqLCBzaXplX3QgY2VsbFNpemUpOwogICAgICAgICBBdG9tKiBhdG9tcygpOwogCiAg
ICAgICAgIHNpemVfdCBtX25leHRBdG9tOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24gODc2MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDYg
QEAKIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCi0j
aW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKICNpbmNsdWRlICJTY29wZUNoYWluLmgiCkBAIC0zMiwxMCArMzEsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFN0cnVjdHVyZTsKIAotTWFya2VkU3BhY2U6Ok1hcmtl
ZFNwYWNlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK01hcmtlZFNwYWNlOjpNYXJrZWRTcGFj
ZShIZWFwKiBoZWFwKQogICAgIDogbV93YXRlck1hcmsoMCkKICAgICAsIG1faGlnaFdhdGVyTWFy
aygwKQotICAgICwgbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCisgICAgLCBtX2hlYXAoaGVhcCkK
IHsKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8IHBy
ZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKQogICAgICAgICBzaXplQ2xhc3NG
b3IoY2VsbFNpemUpLmNlbGxTaXplID0gY2VsbFNpemU7CkBAIC01Niw3ICs1NSw3IEBAIHZvaWQg
TWFya2VkU3BhY2U6OmRlc3Ryb3koKQogCiBNYXJrZWRCbG9jayogTWFya2VkU3BhY2U6OmFsbG9j
YXRlQmxvY2soU2l6ZUNsYXNzJiBzaXplQ2xhc3MpCiB7Ci0gICAgTWFya2VkQmxvY2sqIGJsb2Nr
ID0gTWFya2VkQmxvY2s6OmNyZWF0ZShnbG9iYWxEYXRhKCksIHNpemVDbGFzcy5jZWxsU2l6ZSk7
CisgICAgTWFya2VkQmxvY2sqIGJsb2NrID0gTWFya2VkQmxvY2s6OmNyZWF0ZShtX2hlYXAsIHNp
emVDbGFzcy5jZWxsU2l6ZSk7CiAgICAgc2l6ZUNsYXNzLmJsb2NrTGlzdC5hcHBlbmQoYmxvY2sp
OwogICAgIHNpemVDbGFzcy5uZXh0QmxvY2sgPSBibG9jazsKICAgICBtX2Jsb2Nrcy5hZGQoYmxv
Y2spOwpAQCAtNzYsMjEgKzc1LDYgQEAgdm9pZCBNYXJrZWRTcGFjZTo6ZnJlZUJsb2NrcyhEb3Vi
bHlMaW5rZQogICAgIH0KIH0KIAotdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlRnJvbVNpemVD
bGFzcyhTaXplQ2xhc3MmIHNpemVDbGFzcykKLXsKLSAgICBmb3IgKE1hcmtlZEJsb2NrKiYgYmxv
Y2sgPSBzaXplQ2xhc3MubmV4dEJsb2NrIDsgYmxvY2s7IGJsb2NrID0gYmxvY2stPm5leHQoKSkg
ewotICAgICAgICBpZiAodm9pZCogcmVzdWx0ID0gYmxvY2stPmFsbG9jYXRlKCkpCi0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgICAgIG1fd2F0ZXJNYXJrICs9IGJsb2NrLT5jYXBh
Y2l0eSgpOwotICAgIH0KLQotICAgIGlmIChtX3dhdGVyTWFyayA8IG1faGlnaFdhdGVyTWFyaykK
LSAgICAgICAgcmV0dXJuIGFsbG9jYXRlQmxvY2soc2l6ZUNsYXNzKS0+YWxsb2NhdGUoKTsKLQot
ICAgIHJldHVybiAwOwotfQotCiB2b2lkIE1hcmtlZFNwYWNlOjpzaHJpbmsoKQogewogICAgIC8v
IFdlIHJlY29yZCBhIHRlbXBvcmFyeSBsaXN0IG9mIGVtcHRpZXMgdG8gYXZvaWQgbW9kaWZ5aW5n
IG1fYmxvY2tzIHdoaWxlIGl0ZXJhdGluZyBpdC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gODc2MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSGVhcDsKICAgICBjbGFzcyBKU0NlbGw7Ci0g
ICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKICAg
ICBjbGFzcyBNYXJrU3RhY2s7CiAgICAgY2xhc3MgV2Vha0dDSGFuZGxlOwpAQCAtNDcsMjUgKzQ2
LDI1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIE1hcmtlZFNwYWNlIHsKICAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTWFya2VkU3BhY2UpOwogICAgIHB1YmxpYzoKLSAgICAgICAg
Ly8gQ3VycmVudGx5IHB1YmxpYyBmb3IgdXNlIGluIGFzc2VydGlvbnMuCiAgICAgICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgbWF4Q2VsbFNpemUgPSAxMDI0OwogCi0gICAgICAgIHN0YXRpYyBIZWFw
KiBoZWFwKEpTQ2VsbCopOworICAgICAgICBzdHJ1Y3QgU2l6ZUNsYXNzIHsKKyAgICAgICAgICAg
IFNpemVDbGFzcygpOworICAgICAgICAgICAgdm9pZCByZXNldCgpOwogCi0gICAgICAgIHN0YXRp
YyBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgc3RhdGljIGJvb2wgdGVzdEFu
ZFNldE1hcmtlZChjb25zdCB2b2lkKik7Ci0gICAgICAgIHN0YXRpYyBib29sIHRlc3RBbmRDbGVh
ck1hcmtlZChjb25zdCB2b2lkKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHNldE1hcmtlZChjb25z
dCB2b2lkKik7CisgICAgICAgICAgICBNYXJrZWRCbG9jayogbmV4dEJsb2NrOworICAgICAgICAg
ICAgRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9jaz4gYmxvY2tMaXN0OworICAgICAgICAgICAg
c2l6ZV90IGNlbGxTaXplOworICAgICAgICB9OwogCi0gICAgICAgIE1hcmtlZFNwYWNlKEpTR2xv
YmFsRGF0YSopOworICAgICAgICBNYXJrZWRTcGFjZShIZWFwKik7CiAgICAgICAgIHZvaWQgZGVz
dHJveSgpOwogCi0gICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpOwotCiAgICAgICAg
IHNpemVfdCBoaWdoV2F0ZXJNYXJrKCk7CiAgICAgICAgIHZvaWQgc2V0SGlnaFdhdGVyTWFyayhz
aXplX3QpOwogCi0gICAgICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7CisgICAgICAgIFNpemVD
bGFzcyYgc2l6ZUNsYXNzRm9yKHNpemVfdCk7CisgICAgICAgIHZvaWQqIGFsbG9jYXRlKFNpemVD
bGFzcyYpOwogCiAgICAgICAgIHZvaWQgY2xlYXJNYXJrcygpOwogICAgICAgICB2b2lkIG1hcmtS
b290cygpOwpAQCAtOTQsMjEgKzkzLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdHlw
ZWRlZiBIYXNoU2V0PE1hcmtlZEJsb2NrKj46Oml0ZXJhdG9yIEJsb2NrSXRlcmF0b3I7CiAKLSAg
ICAgICAgc3RydWN0IFNpemVDbGFzcyB7Ci0gICAgICAgICAgICBTaXplQ2xhc3MoKTsKLSAgICAg
ICAgICAgIHZvaWQgcmVzZXQoKTsKLQotICAgICAgICAgICAgTWFya2VkQmxvY2sqIG5leHRCbG9j
azsKLSAgICAgICAgICAgIERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxvY2s+IGJsb2NrTGlzdDsK
LSAgICAgICAgICAgIHNpemVfdCBjZWxsU2l6ZTsKLSAgICAgICAgfTsKLQogICAgICAgICBNYXJr
ZWRCbG9jayogYWxsb2NhdGVCbG9jayhTaXplQ2xhc3MmKTsKICAgICAgICAgdm9pZCBmcmVlQmxv
Y2tzKERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxvY2s+Jik7CiAKLSAgICAgICAgU2l6ZUNsYXNz
JiBzaXplQ2xhc3NGb3Ioc2l6ZV90KTsKLSAgICAgICAgdm9pZCogYWxsb2NhdGVGcm9tU2l6ZUNs
YXNzKFNpemVDbGFzcyYpOwotCiAgICAgICAgIHZvaWQgY2xlYXJNYXJrcyhNYXJrZWRCbG9jayop
OwogCiAgICAgICAgIFNpemVDbGFzcyBtX3ByZWNpc2VTaXplQ2xhc3Nlc1twcmVjaXNlQ291bnRd
OwpAQCAtMTE2LDM0ICsxMDMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGFzaFNldDxN
YXJrZWRCbG9jayo+IG1fYmxvY2tzOwogICAgICAgICBzaXplX3QgbV93YXRlck1hcms7CiAgICAg
ICAgIHNpemVfdCBtX2hpZ2hXYXRlck1hcms7Ci0gICAgICAgIEpTR2xvYmFsRGF0YSogbV9nbG9i
YWxEYXRhOworICAgICAgICBIZWFwKiBtX2hlYXA7CiAgICAgfTsKIAotICAgIGlubGluZSBIZWFw
KiBNYXJrZWRTcGFjZTo6aGVhcChKU0NlbGwqIGNlbGwpCi0gICAgewotICAgICAgICByZXR1cm4g
TWFya2VkQmxvY2s6OmJsb2NrRm9yKGNlbGwpLT5oZWFwKCk7Ci0gICAgfQotCi0gICAgaW5saW5l
IGJvb2wgTWFya2VkU3BhY2U6OmlzTWFya2VkKGNvbnN0IHZvaWQqIGNlbGwpCi0gICAgewotICAg
ICAgICByZXR1cm4gTWFya2VkQmxvY2s6OmJsb2NrRm9yKGNlbGwpLT5pc01hcmtlZChjZWxsKTsK
LSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRTcGFjZTo6dGVzdEFuZFNldE1hcmtlZChj
b25zdCB2b2lkKiBjZWxsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpibG9j
a0ZvcihjZWxsKS0+dGVzdEFuZFNldE1hcmtlZChjZWxsKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUg
Ym9vbCBNYXJrZWRTcGFjZTo6dGVzdEFuZENsZWFyTWFya2VkKGNvbnN0IHZvaWQqIGNlbGwpCi0g
ICAgewotICAgICAgICByZXR1cm4gTWFya2VkQmxvY2s6OmJsb2NrRm9yKGNlbGwpLT50ZXN0QW5k
Q2xlYXJNYXJrZWQoY2VsbCk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6
OnNldE1hcmtlZChjb25zdCB2b2lkKiBjZWxsKQotICAgIHsKLSAgICAgICAgTWFya2VkQmxvY2s6
OmJsb2NrRm9yKGNlbGwpLT5zZXRNYXJrZWQoY2VsbCk7Ci0gICAgfQotCiAgICAgaW5saW5lIGJv
b2wgTWFya2VkU3BhY2U6OmNvbnRhaW5zKGNvbnN0IHZvaWQqIHgpCiAgICAgewogICAgICAgICBp
ZiAoIU1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKHgpKQpAQCAtMTYzLDExICsxMjUsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICgqaXQpLT5mb3JFYWNoKGZ1bmN0b3IpOwogICAg
IH0KIAotICAgIGlubGluZSBKU0dsb2JhbERhdGEqIE1hcmtlZFNwYWNlOjpnbG9iYWxEYXRhKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX2dsb2JhbERhdGE7Ci0gICAgfQotCiAgICAgaW5saW5l
IHNpemVfdCBNYXJrZWRTcGFjZTo6aGlnaFdhdGVyTWFyaygpCiAgICAgewogICAgICAgICByZXR1
cm4gbV9oaWdoV2F0ZXJNYXJrOwpAQCAtMTg2LDEyICsxNDMsMjEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHJldHVybiBtX2ltcHJlY2lzZVNpemVDbGFzc2VzWyhieXRlcyAtIDEpIC8gaW1w
cmVjaXNlU3RlcF07CiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxv
Y2F0ZShzaXplX3QgYnl0ZXMpCisgICAgaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0
ZShTaXplQ2xhc3MmIHNpemVDbGFzcykKICAgICB7Ci0gICAgICAgIFNpemVDbGFzcyYgc2l6ZUNs
YXNzID0gc2l6ZUNsYXNzRm9yKGJ5dGVzKTsKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlRnJvbVNp
emVDbGFzcyhzaXplQ2xhc3MpOworICAgICAgICBmb3IgKE1hcmtlZEJsb2NrKiYgYmxvY2sgPSBz
aXplQ2xhc3MubmV4dEJsb2NrIDsgYmxvY2s7IGJsb2NrID0gYmxvY2stPm5leHQoKSkgeworICAg
ICAgICAgICAgaWYgKHZvaWQqIHJlc3VsdCA9IGJsb2NrLT5hbGxvY2F0ZSgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAgICAgICAgIG1fd2F0ZXJNYXJrICs9IGJsb2Nr
LT5jYXBhY2l0eSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fd2F0ZXJNYXJrIDwgbV9o
aWdoV2F0ZXJNYXJrKQorICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlQmxvY2soc2l6ZUNsYXNz
KS0+YWxsb2NhdGUoKTsKKworICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgCisKICAgICBp
bmxpbmUgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6U2l6ZUNsYXNzKCkKICAgICAgICAgOiBuZXh0
QmxvY2soMCkKICAgICAgICAgLCBjZWxsU2l6ZSgwKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95293</attachid>
            <date>2011-05-29 12:55:26 -0700</date>
            <delta_ts>2011-05-29 14:57:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61704-20110529125525.patch</filename>
            <type>text/plain</type>
            <size>17331</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODc2NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAK
KzIwMTEtMDUtMjkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21lIGhlYXAgcmVmYWN0
b3JpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYx
NzA0CisgICAgICAgIAorICAgICAgICBTdW5TcGlkZXIgc2F5cyBubyBjaGFuZ2UuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6IEV4cG9ydCEKKworICAgICAgICAqIGhlYXAvSGVhcC5j
cHA6IENPTExFQ1RfT05fRVZFUllfQUxMT0NBVElPTiBjYW4gYWN0dWFsbHkgZG8gc28gbm93Lgor
CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOiBDaGFuZ2VkIEhlYXAgc3ViLW9iamVjdHMgdG8g
cG9pbnQgdG8gdGhlIGhlYXAuCisKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2NhdGUpOiBDaGFu
Z2VkIGlubGluZSBhbGxvY2F0aW9uIGNvZGUgdG8gb25seSBzZWxlY3QgdGhlCisgICAgICAgIHNp
emUgY2xhc3MsIHNpbmNlIHRoaXMgY2FuIGJlIG9wdGltaXplZCBvdXQgYXQgY29tcGlsZSB0aW1l
IC0tIGV2ZXJ5dGhpbmcKKyAgICAgICAgZWxzZSBpcyBub3cgaW5saW5lZCBpbnRvIHRoaXMgb3V0
LW9mLWxpbmUgZnVuY3Rpb24uCisgICAgICAgIAorICAgICAgICBObyBuZWVkIHRvIGR1cGxpY2F0
ZSBBU1NFUlRzIG1hZGUgaW4gb3VyIGNhbGxlci4KKworICAgICAgICAqIGhlYXAvSGVhcC5oOgor
ICAgICAgICAoSlNDOjpIZWFwOjpoZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNNYXJrZWQp
OgorICAgICAgICAoSlNDOjpIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6dGVzdEFuZENsZWFyTWFya2VkKToKKyAgICAgICAgKEpTQzo6SGVhcDo6c2V0TWFya2Vk
KTogQ2FsbCBkaXJlY3RseSBpbnRvIE1hcmtlZEJsb2NrIGluc3RlYWQgb2YgYWRkaW5nCisgICAg
ICAgIGEgbGF5ZXIgb2YgaW5kaXJlY3Rpb24gdGhyb3VnaCBNYXJrZWRTcGFjZS4KKworICAgICAg
ICAoSlNDOjpIZWFwOjphbGxvY2F0ZSk6IFNlZSBhYm92ZS4KKworICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKToKKyAgICAgICAgKiBoZWFwL01hcmtl
ZEJsb2NrLmg6IENoYW5nZWQgSGVhcCBzdWItb2JqZWN0cyB0byBwb2ludCB0byB0aGUgaGVhcC4K
KworICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRT
cGFjZTo6TWFya2VkU3BhY2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxsb2NhdGVC
bG9jayk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6YWxsb2NhdGUpOiBVcGRhdGVkIHRvIG1hdGNoIGNoYW5nZXMgYWJvdmUuCisKIDIw
MTEtMDUtMjggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBC
VUlMRCBGSVggd2hlbiBidWlsZGluZyBvbmx5IHRoZSBpbnRlcnByZXRlcgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiA4NzY0MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAg
LTExNiw3ICsxMTYsNiBAQCBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVQTlNf
CiBfX1pOM0pTQzExSlNCeXRlQXJyYXkxM3NfZGVmYXVsdEluZm9FCiBfX1pOM0pTQzExSlNCeXRl
QXJyYXkxNWNyZWF0ZVN0cnVjdHVyZUVSTlNfMTJKU0dsb2JhbERhdGFFTlNfN0pTVmFsdWVFUEtO
U185Q2xhc3NJbmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5QzFFUE5TXzlFeGVjU3RhdGVFUE5T
XzlTdHJ1Y3R1cmVFUE4zV1RGOUJ5dGVBcnJheUUKLV9fWk4zSlNDMTFNYXJrZWRTcGFjZTIxYWxs
b2NhdGVGcm9tU2l6ZUNsYXNzRVJOUzBfOVNpemVDbGFzc0UKIF9fWk4zSlNDMTFQYXJzZXJBcmVu
YTVyZXNldEV2CiBfX1pOM0pTQzExY2hlY2tTeW50YXhFUE5TXzlFeGVjU3RhdGVFUktOU18xMFNv
dXJjZUNvZGVFCiBfX1pOM0pTQzExY3JlYXRlRXJyb3JFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0
cmluZ0UKQEAgLTIyMyw3ICsyMjIsNiBAQCBfX1pOM0pTQzM1Y3JlYXRlSW50ZXJydXB0ZWRFeGVj
dXRpb25FeGNlCiBfX1pOM0pTQzNOYU5FCiBfX1pOM0pTQzQxY29uc3RydWN0RnVuY3Rpb25Ta2lw
cGluZ0V2YWxFbmFibGVkQ2hlY2tFUE5TXzlFeGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxPYmplY3RF
UktOU183QXJnTGlzdEVSS05TXzEwSWRlbnRpZmllckVSS05TXzdVU3RyaW5nRWkKIF9fWk4zSlND
NEhlYXAxNmFjdGl2aXR5Q2FsbGJhY2tFdgotX19aTjNKU0M0SGVhcDE2YWxsb2NhdGVTbG93Q2Fz
ZUVtCiBfX1pOM0pTQzRIZWFwMTZvYmplY3RUeXBlQ291bnRzRXYKIF9fWk4zSlNDNEhlYXAxN2Nv
bGxlY3RBbGxHYXJiYWdlRXYKIF9fWk4zSlNDNEhlYXAxN2dsb2JhbE9iamVjdENvdW50RXYKQEAg
LTIzNSw2ICsyMzMsNyBAQCBfX1pOM0pTQzRIZWFwMjZwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3Vu
CiBfX1pOM0pTQzRIZWFwMjlyZXBvcnRFeHRyYU1lbW9yeUNvc3RTbG93Q2FzZUVtCiBfX1pOM0pT
QzRIZWFwN2Rlc3Ryb3lFdgogX19aTjNKU0M0SGVhcDdwcm90ZWN0RU5TXzdKU1ZhbHVlRQorX19a
TjNKU0M0SGVhcDhhbGxvY2F0ZUVSTlNfMTFNYXJrZWRTcGFjZTlTaXplQ2xhc3NFCiBfX1pOM0pT
QzRIZWFwOXVucHJvdGVjdEVOU183SlNWYWx1ZUUKIF9fWk4zSlNDNFlhcnIxMVlhcnJQYXR0ZXJu
QzFFUktOU183VVN0cmluZ0ViYlBQS2MKIF9fWk4zSlNDNFlhcnIxMWJ5dGVDb21waWxlRVJOUzBf
MTFZYXJyUGF0dGVybkVQTjNXVEYyMEJ1bXBQb2ludGVyQWxsb2NhdG9yRQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5kZWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHJldmlz
aW9uIDg3NjQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDkgKzU3LDcgQEAgRVhQT1JUUwogICAgID9hZGRTbG93Q2FzZUBJZGVudGlmaWVyQEpTQ0BAQ0E/
QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAV1RGQEBQQVZFeGVjU3RhdGVAMkBQQVZT
dHJpbmdJbXBsQDRAQFoKICAgICA/YWRkU3RhdGljR2xvYmFsc0BKU0dsb2JhbE9iamVjdEBKU0NA
QElBRVhQQVVHbG9iYWxQcm9wZXJ0eUluZm9AMTJASEBaCiAgICAgP2FsbG9jYXRlQEhlYXBASlND
QEBRQUVQQVhJQFoKLSAgICA/YWxsb2NhdGVGcm9tU2l6ZUNsYXNzQE1hcmtlZFNwYWNlQEpTQ0BA
QUFFUEFYQUFVU2l6ZUNsYXNzQDEyQEBaCiAgICAgP2FsbG9jYXRlUHJvcGVydHlTdG9yYWdlQEpT
T2JqZWN0QEpTQ0BAUUFFWElJQFoKLSAgICA/YWxsb2NhdGVTbG93Q2FzZUBIZWFwQEpTQ0BAQUFF
UEFYSUBaCiAgICAgP2FwcGVuZEBTdHJpbmdCdWlsZGVyQFdURkBAUUFFWFBCRElAWgogICAgID9h
cHBlbmRAU3RyaW5nQnVpbGRlckBXVEZAQFFBRVhQQl9XSUBaCiAgICAgP2FzY2lpQFVTdHJpbmdA
SlNDQEBRQkU/QVZDU3RyaW5nQFdURkBAWFoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCShyZXZpc2lvbiA4NzY0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiVHJhY2lu
Zy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAotI2RlZmluZSBDT0xMRUNUX09OX0VWRVJZX1NM
T1dfQUxMT0NBVElPTiAwCisjZGVmaW5lIENPTExFQ1RfT05fRVZFUllfQUxMT0NBVElPTiAwCiAK
IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzVmFsaWRUaHJlYWRTdGF0ZShKUwogCiBIZWFwOjpIZWFwKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkKICAgICA6IG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyhOb09wZXJhdGlvbikKLSAgICAs
IG1fbWFya2VkU3BhY2UoZ2xvYmFsRGF0YSkKKyAgICAsIG1fbWFya2VkU3BhY2UodGhpcykKICAg
ICAsIG1fbWFya0xpc3RTZXQoMCkKICAgICAsIG1fYWN0aXZpdHlDYWxsYmFjayhEZWZhdWx0R0NB
Y3Rpdml0eUNhbGxiYWNrOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2dsb2JhbERhdGEoZ2xvYmFs
RGF0YSkKQEAgLTEzMCwyMyArMTMwLDIxIEBAIHZvaWQgSGVhcDo6cmVwb3J0RXh0cmFNZW1vcnlD
b3N0U2xvd0Nhc2UKICAgICBtX2V4dHJhQ29zdCArPSBjb3N0OwogfQogCi12b2lkKiBIZWFwOjph
bGxvY2F0ZVNsb3dDYXNlKHNpemVfdCBieXRlcykKK3ZvaWQqIEhlYXA6OmFsbG9jYXRlKE1hcmtl
ZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcykKIHsKLSAgICBBU1NFUlQoZ2xvYmFsRGF0YSgp
LT5pZGVudGlmaWVyVGFibGUgPT0gd3RmVGhyZWFkRGF0YSgpLmN1cnJlbnRJZGVudGlmaWVyVGFi
bGUoKSk7Ci0gICAgQVNTRVJUKEpTTG9jazo6bG9ja0NvdW50KCkgPiAwKTsKLSAgICBBU1NFUlQo
SlNMb2NrOjpjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpKTsKLSAgICBBU1NFUlQoYnl0ZXMg
PD0gTWFya2VkU3BhY2U6Om1heENlbGxTaXplKTsKLSAgICBBU1NFUlQobV9vcGVyYXRpb25JblBy
b2dyZXNzID09IE5vT3BlcmF0aW9uKTsKLQotI2lmIENPTExFQ1RfT05fRVZFUllfU0xPV19BTExP
Q0FUSU9OCisjaWYgQ09MTEVDVF9PTl9FVkVSWV9BTExPQ0FUSU9OCiAgICAgY29sbGVjdEFsbEdh
cmJhZ2UoKTsKICAgICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9u
KTsKICNlbmRpZgogCisgICAgdm9pZCogcmVzdWx0ID0gbV9tYXJrZWRTcGFjZS5hbGxvY2F0ZShz
aXplQ2xhc3MpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKICAg
ICByZXNldChEb05vdFN3ZWVwKTsKIAogICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IEFsbG9j
YXRpb247Ci0gICAgdm9pZCogcmVzdWx0ID0gbV9tYXJrZWRTcGFjZS5hbGxvY2F0ZShieXRlcyk7
CisgICAgcmVzdWx0ID0gbV9tYXJrZWRTcGFjZS5hbGxvY2F0ZShzaXplQ2xhc3MpOwogICAgIG1f
b3BlcmF0aW9uSW5Qcm9ncmVzcyA9IE5vT3BlcmF0aW9uOwogCiAgICAgQVNTRVJUKHJlc3VsdCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiA4NzY0MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNiAr
ODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW5saW5lIGJvb2wgaXNCdXN5KCk7CiAK
ICAgICAgICAgdm9pZCogYWxsb2NhdGUoc2l6ZV90KTsKKyAgICAgICAgdm9pZCogYWxsb2NhdGUo
TWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwogICAgICAgICB2b2lkIGNvbGxlY3RBbGxHYXJiYWdl
KCk7CiAKICAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc2l6ZV90IGNvc3QpOwpA
QCAtMTEyLDggKzExMyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBIYW5kbGVTdGFjayog
aGFuZGxlU3RhY2soKSB7IHJldHVybiAmbV9oYW5kbGVTdGFjazsgfQogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgZnJpZW5kIGNsYXNzIEpTR2xvYmFsRGF0YTsKLQogICAgICAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9IDI1NjsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBtYXhFeHRyYUNvc3QgPSAxMDI0ICogMTAyNDsKIApAQCAtMTU1LDI0ICsxNTQsMzYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgIT0gTm9P
cGVyYXRpb247CiAgICAgfQogCisgICAgaW5saW5lIEhlYXAqIEhlYXA6OmhlYXAoSlNDZWxsKiBj
ZWxsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+
aGVhcCgpOworICAgIH0KKworICAgIGlubGluZSBIZWFwKiBIZWFwOjpoZWFwKEpTVmFsdWUgdikK
KyAgICB7CisgICAgICAgIGlmICghdi5pc0NlbGwoKSkKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gaGVhcCh2LmFzQ2VsbCgpKTsKKyAgICB9CisKICAgICBpbmxpbmUgYm9v
bCBIZWFwOjppc01hcmtlZChjb25zdCB2b2lkKiBjZWxsKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IE1hcmtlZFNwYWNlOjppc01hcmtlZChjZWxsKTsKKyAgICAgICAgcmV0dXJuIE1hcmtlZEJsb2Nr
OjpibG9ja0ZvcihjZWxsKS0+aXNNYXJrZWQoY2VsbCk7CiAgICAgfQogCiAgICAgaW5saW5lIGJv
b2wgSGVhcDo6dGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKiBjZWxsKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIE1hcmtlZFNwYWNlOjp0ZXN0QW5kU2V0TWFya2VkKGNlbGwpOworICAgICAgICBy
ZXR1cm4gTWFya2VkQmxvY2s6OmJsb2NrRm9yKGNlbGwpLT50ZXN0QW5kU2V0TWFya2VkKGNlbGwp
OwogICAgIH0KIAogICAgIGlubGluZSBib29sIEhlYXA6OnRlc3RBbmRDbGVhck1hcmtlZChjb25z
dCB2b2lkKiBjZWxsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE1hcmtlZFNwYWNlOjp0ZXN0QW5k
Q2xlYXJNYXJrZWQoY2VsbCk7CisgICAgICAgIHJldHVybiBNYXJrZWRCbG9jazo6YmxvY2tGb3Io
Y2VsbCktPnRlc3RBbmRDbGVhck1hcmtlZChjZWxsKTsKICAgICB9CiAKICAgICBpbmxpbmUgdm9p
ZCBIZWFwOjpzZXRNYXJrZWQoY29uc3Qgdm9pZCogY2VsbCkKICAgICB7Ci0gICAgICAgIE1hcmtl
ZFNwYWNlOjpzZXRNYXJrZWQoY2VsbCk7CisgICAgICAgIE1hcmtlZEJsb2NrOjpibG9ja0Zvcihj
ZWxsKS0+c2V0TWFya2VkKGNlbGwpOwogICAgIH0KIAogICAgIGlubGluZSB2b2lkIEhlYXA6Ondy
aXRlQmFycmllcihjb25zdCBKU0NlbGwqLCBKU1ZhbHVlKQpAQCAtMjAyLDI2ICsyMTMsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCogSGVhcDo6YWxsb2NhdGUoc2l6ZV90IGJ5
dGVzKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzVmFsaWRBbGxvY2F0aW9uKGJ5dGVzKSk7Ci0K
LSAgICAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gQWxsb2NhdGlvbjsKLSAgICAgICAgdm9p
ZCogcmVzdWx0ID0gbV9tYXJrZWRTcGFjZS5hbGxvY2F0ZShieXRlcyk7Ci0gICAgICAgIG1fb3Bl
cmF0aW9uSW5Qcm9ncmVzcyA9IE5vT3BlcmF0aW9uOwotICAgICAgICBpZiAocmVzdWx0KQotICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgICAgICByZXR1cm4gYWxsb2NhdGVTbG93Q2Fz
ZShieXRlcyk7Ci0gICAgfQotCi0gICAgaW5saW5lIEhlYXAqIEhlYXA6OmhlYXAoSlNWYWx1ZSB2
KQotICAgIHsKLSAgICAgICAgaWYgKCF2LmlzQ2VsbCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIHJldHVybiBoZWFwKHYuYXNDZWxsKCkpOwotICAgIH0KLQotICAgIGlubGluZSBI
ZWFwKiBIZWFwOjpoZWFwKEpTQ2VsbCogYykKLSAgICB7Ci0gICAgICAgIHJldHVybiBNYXJrZWRT
cGFjZTo6aGVhcChjKTsKKyAgICAgICAgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNz
ID0gbV9tYXJrZWRTcGFjZS5zaXplQ2xhc3NGb3IoYnl0ZXMpOworICAgICAgICByZXR1cm4gYWxs
b2NhdGUoc2l6ZUNsYXNzKTsKICAgICB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gODc2NDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotTWFya2VkQmxv
Y2sqIE1hcmtlZEJsb2NrOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBzaXplX3Qg
Y2VsbFNpemUpCitNYXJrZWRCbG9jayogTWFya2VkQmxvY2s6OmNyZWF0ZShIZWFwKiBoZWFwLCBz
aXplX3QgY2VsbFNpemUpCiB7CiAgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkIGFsbG9jYXRpb24g
PSBQYWdlQWxsb2NhdGlvbkFsaWduZWQ6OmFsbG9jYXRlKGJsb2NrU2l6ZSwgYmxvY2tTaXplLCBP
U0FsbG9jYXRvcjo6SlNHQ0hlYXBQYWdlcyk7CiAgICAgaWYgKCFzdGF0aWNfY2FzdDxib29sPihh
bGxvY2F0aW9uKSkKICAgICAgICAgQ1JBU0goKTsKLSAgICByZXR1cm4gbmV3IChhbGxvY2F0aW9u
LmJhc2UoKSkgTWFya2VkQmxvY2soYWxsb2NhdGlvbiwgZ2xvYmFsRGF0YSwgY2VsbFNpemUpOwor
ICAgIHJldHVybiBuZXcgKGFsbG9jYXRpb24uYmFzZSgpKSBNYXJrZWRCbG9jayhhbGxvY2F0aW9u
LCBoZWFwLCBjZWxsU2l6ZSk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OmRlc3Ryb3koTWFya2Vk
QmxvY2sqIGJsb2NrKQpAQCAtNDgsMTcgKzQ4LDE3IEBAIHZvaWQgTWFya2VkQmxvY2s6OmRlc3Ry
b3koTWFya2VkQmxvY2sqIGIKICAgICBibG9jay0+bV9hbGxvY2F0aW9uLmRlYWxsb2NhdGUoKTsK
IH0KIAotTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25l
ZCYgYWxsb2NhdGlvbiwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBzaXplX3QgY2VsbFNpemUp
CitNYXJrZWRCbG9jazo6TWFya2VkQmxvY2soY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiBh
bGxvY2F0aW9uLCBIZWFwKiBoZWFwLCBzaXplX3QgY2VsbFNpemUpCiAgICAgOiBtX25leHRBdG9t
KGZpcnN0QXRvbSgpKQogICAgICwgbV9hbGxvY2F0aW9uKGFsbG9jYXRpb24pCi0gICAgLCBtX2hl
YXAoJmdsb2JhbERhdGEtPmhlYXApCisgICAgLCBtX2hlYXAoaGVhcCkKIHsKICAgICBtX2F0b21z
UGVyQ2VsbCA9IChjZWxsU2l6ZSArIGF0b21TaXplIC0gMSkgLyBhdG9tU2l6ZTsKICAgICBtX2Vu
ZEF0b20gPSBhdG9tc1BlckJsb2NrIC0gbV9hdG9tc1BlckNlbGwgKyAxOwogCi0gICAgU3RydWN0
dXJlKiBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZSA9IGdsb2JhbERhdGEtPmR1bW15TWFya2Fi
bGVDZWxsU3RydWN0dXJlLmdldCgpOworICAgIFN0cnVjdHVyZSogZHVtbXlNYXJrYWJsZUNlbGxT
dHJ1Y3R1cmUgPSBoZWFwLT5nbG9iYWxEYXRhKCktPmR1bW15TWFya2FibGVDZWxsU3RydWN0dXJl
LmdldCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsg
aSArPSBtX2F0b21zUGVyQ2VsbCkKLSAgICAgICAgbmV3ICgmYXRvbXMoKVtpXSkgSlNDZWxsKCpn
bG9iYWxEYXRhLCBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZSwgSlNDZWxsOjpDcmVhdGluZ0Vh
cmx5Q2VsbCk7CisgICAgICAgIG5ldyAoJmF0b21zKClbaV0pIEpTQ2VsbCgqaGVhcC0+Z2xvYmFs
RGF0YSgpLCBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZSwgSlNDZWxsOjpDcmVhdGluZ0Vhcmx5
Q2VsbCk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OnN3ZWVwKCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gODc2NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSGVhcDsKICAgICBjbGFzcyBK
U0NlbGw7Ci0gICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogCiAgICAgdHlwZWRlZiB1aW50cHRyX3Qg
Qml0czsKIApAQCAtNDQsNyArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbVNpemUgPSBzaXplb2YoZG91YmxlKTsgLy8g
RW5zdXJlcyBuYXR1cmFsIGFsaWdubWVudCBmb3IgYWxsIGJ1aWx0LWluIHR5cGVzLgogCi0gICAg
ICAgIHN0YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKEpTR2xvYmFsRGF0YSosIHNpemVfdCBjZWxs
U2l6ZSk7CisgICAgICAgIHN0YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKEhlYXAqLCBzaXplX3Qg
Y2VsbFNpemUpOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KE1hcmtlZEJsb2NrKik7CiAK
ICAgICAgICAgc3RhdGljIGJvb2wgaXNBdG9tQWxpZ25lZChjb25zdCB2b2lkKik7CkBAIC04NSw3
ICs4NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHR5cGVkZWYgY2hhciBBdG9tW2F0
b21TaXplXTsKIAotICAgICAgICBNYXJrZWRCbG9jayhjb25zdCBQYWdlQWxsb2NhdGlvbkFsaWdu
ZWQmLCBKU0dsb2JhbERhdGEqLCBzaXplX3QgY2VsbFNpemUpOworICAgICAgICBNYXJrZWRCbG9j
ayhjb25zdCBQYWdlQWxsb2NhdGlvbkFsaWduZWQmLCBIZWFwKiwgc2l6ZV90IGNlbGxTaXplKTsK
ICAgICAgICAgQXRvbSogYXRvbXMoKTsKIAogICAgICAgICBzaXplX3QgbV9uZXh0QXRvbTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9u
IDg3NjQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2lu
Y2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NvcGVD
aGFpbi5oIgpAQCAtMzIsMTAgKzMxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBTdHJ1
Y3R1cmU7CiAKLU1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEpCitNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKICAgICA6IG1fd2F0ZXJN
YXJrKDApCiAgICAgLCBtX2hpZ2hXYXRlck1hcmsoMCkKLSAgICAsIG1fZ2xvYmFsRGF0YShnbG9i
YWxEYXRhKQorICAgICwgbV9oZWFwKGhlYXApCiB7CiAgICAgZm9yIChzaXplX3QgY2VsbFNpemUg
PSBwcmVjaXNlU3RlcDsgY2VsbFNpemUgPCBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVj
aXNlU3RlcCkKICAgICAgICAgc2l6ZUNsYXNzRm9yKGNlbGxTaXplKS5jZWxsU2l6ZSA9IGNlbGxT
aXplOwpAQCAtNTYsNyArNTUsNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpkZXN0cm95KCkKIAogTWFy
a2VkQmxvY2sqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZUJsb2NrKFNpemVDbGFzcyYgc2l6ZUNsYXNz
KQogewotICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IE1hcmtlZEJsb2NrOjpjcmVhdGUoZ2xvYmFs
RGF0YSgpLCBzaXplQ2xhc3MuY2VsbFNpemUpOworICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IE1h
cmtlZEJsb2NrOjpjcmVhdGUobV9oZWFwLCBzaXplQ2xhc3MuY2VsbFNpemUpOwogICAgIHNpemVD
bGFzcy5ibG9ja0xpc3QuYXBwZW5kKGJsb2NrKTsKICAgICBzaXplQ2xhc3MubmV4dEJsb2NrID0g
YmxvY2s7CiAgICAgbV9ibG9ja3MuYWRkKGJsb2NrKTsKQEAgLTc2LDIxICs3NSw2IEBAIHZvaWQg
TWFya2VkU3BhY2U6OmZyZWVCbG9ja3MoRG91Ymx5TGlua2UKICAgICB9CiB9CiAKLXZvaWQqIE1h
cmtlZFNwYWNlOjphbGxvY2F0ZUZyb21TaXplQ2xhc3MoU2l6ZUNsYXNzJiBzaXplQ2xhc3MpCi17
Ci0gICAgZm9yIChNYXJrZWRCbG9jayomIGJsb2NrID0gc2l6ZUNsYXNzLm5leHRCbG9jayA7IGJs
b2NrOyBibG9jayA9IGJsb2NrLT5uZXh0KCkpIHsKLSAgICAgICAgaWYgKHZvaWQqIHJlc3VsdCA9
IGJsb2NrLT5hbGxvY2F0ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgICAg
ICBtX3dhdGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHkoKTsKLSAgICB9Ci0KLSAgICBpZiAobV93
YXRlck1hcmsgPCBtX2hpZ2hXYXRlck1hcmspCi0gICAgICAgIHJldHVybiBhbGxvY2F0ZUJsb2Nr
KHNpemVDbGFzcyktPmFsbG9jYXRlKCk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQogdm9pZCBNYXJr
ZWRTcGFjZTo6c2hyaW5rKCkKIHsKICAgICAvLyBXZSByZWNvcmQgYSB0ZW1wb3JhcnkgbGlzdCBv
ZiBlbXB0aWVzIHRvIGF2b2lkIG1vZGlmeWluZyBtX2Jsb2NrcyB3aGlsZSBpdGVyYXRpbmcgaXQu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9u
IDg3NjQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEhlYXA7CiAgICAgY2xhc3MgSlNDZWxsOwotICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBj
bGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CiAgICAgY2xhc3MgTWFya1N0YWNrOwogICAgIGNsYXNz
IFdlYWtHQ0hhbmRsZTsKQEAgLTQ3LDI1ICs0NiwyNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBNYXJrZWRTcGFjZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hcmtlZFNw
YWNlKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIC8vIEN1cnJlbnRseSBwdWJsaWMgZm9yIHVzZSBp
biBhc3NlcnRpb25zLgogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heENlbGxTaXplID0g
MTAyNDsKIAotICAgICAgICBzdGF0aWMgSGVhcCogaGVhcChKU0NlbGwqKTsKKyAgICAgICAgc3Ry
dWN0IFNpemVDbGFzcyB7CisgICAgICAgICAgICBTaXplQ2xhc3MoKTsKKyAgICAgICAgICAgIHZv
aWQgcmVzZXQoKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBpc01hcmtlZChjb25zdCB2b2lkKik7
Ci0gICAgICAgIHN0YXRpYyBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwotICAg
ICAgICBzdGF0aWMgYm9vbCB0ZXN0QW5kQ2xlYXJNYXJrZWQoY29uc3Qgdm9pZCopOwotICAgICAg
ICBzdGF0aWMgdm9pZCBzZXRNYXJrZWQoY29uc3Qgdm9pZCopOworICAgICAgICAgICAgTWFya2Vk
QmxvY2sqIG5leHRCbG9jazsKKyAgICAgICAgICAgIERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxv
Y2s+IGJsb2NrTGlzdDsKKyAgICAgICAgICAgIHNpemVfdCBjZWxsU2l6ZTsKKyAgICAgICAgfTsK
IAotICAgICAgICBNYXJrZWRTcGFjZShKU0dsb2JhbERhdGEqKTsKKyAgICAgICAgTWFya2VkU3Bh
Y2UoSGVhcCopOwogICAgICAgICB2b2lkIGRlc3Ryb3koKTsKIAotICAgICAgICBKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEoKTsKLQogICAgICAgICBzaXplX3QgaGlnaFdhdGVyTWFyaygpOwogICAg
ICAgICB2b2lkIHNldEhpZ2hXYXRlck1hcmsoc2l6ZV90KTsKIAotICAgICAgICB2b2lkKiBhbGxv
Y2F0ZShzaXplX3QpOworICAgICAgICBTaXplQ2xhc3MmIHNpemVDbGFzc0ZvcihzaXplX3QpOwor
ICAgICAgICB2b2lkKiBhbGxvY2F0ZShTaXplQ2xhc3MmKTsKIAogICAgICAgICB2b2lkIGNsZWFy
TWFya3MoKTsKICAgICAgICAgdm9pZCBtYXJrUm9vdHMoKTsKQEAgLTk0LDIxICs5Myw5IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+Ojpp
dGVyYXRvciBCbG9ja0l0ZXJhdG9yOwogCi0gICAgICAgIHN0cnVjdCBTaXplQ2xhc3MgewotICAg
ICAgICAgICAgU2l6ZUNsYXNzKCk7Ci0gICAgICAgICAgICB2b2lkIHJlc2V0KCk7Ci0KLSAgICAg
ICAgICAgIE1hcmtlZEJsb2NrKiBuZXh0QmxvY2s7Ci0gICAgICAgICAgICBEb3VibHlMaW5rZWRM
aXN0PE1hcmtlZEJsb2NrPiBibG9ja0xpc3Q7Ci0gICAgICAgICAgICBzaXplX3QgY2VsbFNpemU7
Ci0gICAgICAgIH07Ci0KICAgICAgICAgTWFya2VkQmxvY2sqIGFsbG9jYXRlQmxvY2soU2l6ZUNs
YXNzJik7CiAgICAgICAgIHZvaWQgZnJlZUJsb2NrcyhEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJs
b2NrPiYpOwogCi0gICAgICAgIFNpemVDbGFzcyYgc2l6ZUNsYXNzRm9yKHNpemVfdCk7Ci0gICAg
ICAgIHZvaWQqIGFsbG9jYXRlRnJvbVNpemVDbGFzcyhTaXplQ2xhc3MmKTsKLQogICAgICAgICB2
b2lkIGNsZWFyTWFya3MoTWFya2VkQmxvY2sqKTsKIAogICAgICAgICBTaXplQ2xhc3MgbV9wcmVj
aXNlU2l6ZUNsYXNzZXNbcHJlY2lzZUNvdW50XTsKQEAgLTExNiwzNCArMTAzLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEhhc2hTZXQ8TWFya2VkQmxvY2sqPiBtX2Jsb2NrczsKICAgICAg
ICAgc2l6ZV90IG1fd2F0ZXJNYXJrOwogICAgICAgICBzaXplX3QgbV9oaWdoV2F0ZXJNYXJrOwot
ICAgICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKKyAgICAgICAgSGVhcCogbV9oZWFw
OwogICAgIH07CiAKLSAgICBpbmxpbmUgSGVhcCogTWFya2VkU3BhY2U6OmhlYXAoSlNDZWxsKiBj
ZWxsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+
aGVhcCgpOwotICAgIH0KLQotICAgIGlubGluZSBib29sIE1hcmtlZFNwYWNlOjppc01hcmtlZChj
b25zdCB2b2lkKiBjZWxsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpibG9j
a0ZvcihjZWxsKS0+aXNNYXJrZWQoY2VsbCk7Ci0gICAgfQotCi0gICAgaW5saW5lIGJvb2wgTWFy
a2VkU3BhY2U6OnRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCogY2VsbCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCktPnRlc3RBbmRTZXRNYXJrZWQo
Y2VsbCk7Ci0gICAgfQotCi0gICAgaW5saW5lIGJvb2wgTWFya2VkU3BhY2U6OnRlc3RBbmRDbGVh
ck1hcmtlZChjb25zdCB2b2lkKiBjZWxsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE1hcmtlZEJs
b2NrOjpibG9ja0ZvcihjZWxsKS0+dGVzdEFuZENsZWFyTWFya2VkKGNlbGwpOwotICAgIH0KLQot
ICAgIGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpzZXRNYXJrZWQoY29uc3Qgdm9pZCogY2VsbCkK
LSAgICB7Ci0gICAgICAgIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+c2V0TWFya2VkKGNl
bGwpOwotICAgIH0KLQogICAgIGlubGluZSBib29sIE1hcmtlZFNwYWNlOjpjb250YWlucyhjb25z
dCB2b2lkKiB4KQogICAgIHsKICAgICAgICAgaWYgKCFNYXJrZWRCbG9jazo6aXNBdG9tQWxpZ25l
ZCh4KSkKQEAgLTE2MywxMSArMTI1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAo
Kml0KS0+Zm9yRWFjaChmdW5jdG9yKTsKICAgICB9CiAKLSAgICBpbmxpbmUgSlNHbG9iYWxEYXRh
KiBNYXJrZWRTcGFjZTo6Z2xvYmFsRGF0YSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9nbG9i
YWxEYXRhOwotICAgIH0KLQogICAgIGlubGluZSBzaXplX3QgTWFya2VkU3BhY2U6OmhpZ2hXYXRl
ck1hcmsoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1faGlnaFdhdGVyTWFyazsKQEAgLTE4Niwx
MiArMTQzLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gbV9pbXByZWNpc2VT
aXplQ2xhc3Nlc1soYnl0ZXMgLSAxKSAvIGltcHJlY2lzZVN0ZXBdOwogICAgIH0KIAotICAgIGlu
bGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQorICAgIGlubGlu
ZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGUoU2l6ZUNsYXNzJiBzaXplQ2xhc3MpCiAgICAg
ewotICAgICAgICBTaXplQ2xhc3MmIHNpemVDbGFzcyA9IHNpemVDbGFzc0ZvcihieXRlcyk7Ci0g
ICAgICAgIHJldHVybiBhbGxvY2F0ZUZyb21TaXplQ2xhc3Moc2l6ZUNsYXNzKTsKKyAgICAgICAg
Zm9yIChNYXJrZWRCbG9jayomIGJsb2NrID0gc2l6ZUNsYXNzLm5leHRCbG9jayA7IGJsb2NrOyBi
bG9jayA9IGJsb2NrLT5uZXh0KCkpIHsKKyAgICAgICAgICAgIGlmICh2b2lkKiByZXN1bHQgPSBi
bG9jay0+YWxsb2NhdGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAg
ICAgICAgICBtX3dhdGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHkoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChtX3dhdGVyTWFyayA8IG1faGlnaFdhdGVyTWFyaykKKyAgICAgICAgICAgIHJl
dHVybiBhbGxvY2F0ZUJsb2NrKHNpemVDbGFzcyktPmFsbG9jYXRlKCk7CisKKyAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQotICAgIAorCiAgICAgaW5saW5lIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6
OlNpemVDbGFzcygpCiAgICAgICAgIDogbmV4dEJsb2NrKDApCiAgICAgICAgICwgY2VsbFNpemUo
MCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>