<?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>75287</bug_id>
          
          <creation_ts>2011-12-27 19:19:43 -0800</creation_ts>
          <short_desc>Add a new WTF::bind overload that takes 6 parameters</short_desc>
          <delta_ts>2011-12-28 11:16:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>darin</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>527531</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-12-27 19:19:43 -0800</bug_when>
    <thetext>Add a new WTF::bind overload that takes 6 parameters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527532</commentid>
    <comment_count>1</comment_count>
      <attachid>120627</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-12-27 19:26:55 -0800</bug_when>
    <thetext>Created attachment 120627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527535</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-27 19:29:12 -0800</bug_when>
    <thetext>Attachment 120627 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/wtf/Functional.h:284:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/JavaScriptCore/wtf/Functional.h:469:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/wtf/Functional.h:589:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527558</commentid>
    <comment_count>3</comment_count>
      <attachid>120627</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-27 22:07:12 -0800</bug_when>
    <thetext>Comment on attachment 120627
Patch

Any way we can make a macro that can do this for us?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527693</commentid>
    <comment_count>4</comment_count>
      <attachid>120681</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-28 09:28:22 -0800</bug_when>
    <thetext>Created attachment 120681
Playing with macros

I took a stab at using macros to simulate some of the variadic templating.  Let me know how awful you think it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527711</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-12-28 11:00:45 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=120681) [details]
&gt; Playing with macros
&gt; 
&gt; I took a stab at using macros to simulate some of the variadic templating.  Let me know how awful you think it is.

It&apos;s pretty awful :)

What I&apos;d like to do is have a variadic implementation in Functional.h and only use the gazillion specializations when the compiler doesn&apos;t support variadic templates. Something like

#if !COMPILER_SUPPORTS(CXX_VARIADIC_TEMPLATES)
#include &quot;Functional.cxx98.h&quot;
#else
// Real implementation
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527712</commentid>
    <comment_count>6</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-12-28 11:16:49 -0800</bug_when>
    <thetext>Committed r103771: &lt;http://trac.webkit.org/changeset/103771&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120627</attachid>
            <date>2011-12-27 19:26:55 -0800</date>
            <delta_ts>2011-12-28 10:55:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75287-20111227192701.patch</filename>
            <type>text/plain</type>
            <size>5007</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Njk5N2I1YjcyYTU1NWUwYzAwYjYzZDMxN2Q1M2FmYjNjOTg2ZjkxLi45YTBmOTY2ZTVlOTBhMzcw
NTc5NGJhYjk3ODMxNGYwYjVmMjIzMWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNCBAQAogMjAxMS0xMi0yNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCisgICAgICAgIEFkZCBhIG5ldyBXVEY6OmJpbmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyA2
IHBhcmFtZXRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc1Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3dGYvRnVuY3Rpb25hbC5oOgorCisyMDExLTEyLTI3ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CisKICAgICAgICAgTWlzYyBmaXhlcyBhbmQgY2xlYW51cHMgaW4g
RnVuY3Rpb25hbC5oCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NTI4MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Z1bmN0
aW9uYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRnVuY3Rpb25hbC5oCmluZGV4IDEw
ODc2ZjdlYjJiODdmNzZhODdhYzczNzNlNGU4NTg2ODVkZWJmMjUuLjEzZDY3OTJkZTE3ZjBjNGI4
NGFhMGI5YTQ2MzMxYjI0NzBmNTFiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvRnVuY3Rpb25hbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRnVuY3Rp
b25hbC5oCkBAIC0yMzQsNiArMjM0LDI2IEBAIHByaXZhdGU6CiAgICAgUiAoQzo6Km1fZnVuY3Rp
b24pKFAxLCBQMiwgUDMsIFA0KTsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1l
IEMsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0
eXBlbmFtZSBQNT4KK2NsYXNzIEZ1bmN0aW9uV3JhcHBlcjxSIChDOjoqKShQMSwgUDIsIFAzLCBQ
NCwgUDUpPiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxDPjo6
dmFsdWU7CisKKyAgICBleHBsaWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9uKShQ
MSwgUDIsIFAzLCBQNCwgUDUpKQorICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAg
eworICAgIH0KKworICAgIFIgb3BlcmF0b3IoKShDKiBjLCBQMSBwMSwgUDIgcDIsIFAzIHAzLCBQ
NCBwNCwgUDUgcDUpCisgICAgeworICAgICAgICByZXR1cm4gKGMtPiptX2Z1bmN0aW9uKShwMSwg
cDIsIHAzLCBwNCwgcDUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSIChDOjoqbV9mdW5jdGlv
bikoUDEsIFAyLCBQMywgUDQsIFA1KTsKK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGJvb2wg
c2hvdWxkUmVmQW5kRGVyZWY+IHN0cnVjdCBSZWZBbmREZXJlZiB7CiAgICAgc3RhdGljIHZvaWQg
cmVmKFQpIHsgfQogICAgIHN0YXRpYyB2b2lkIGRlcmVmKFQpIHsgfQpAQCAtMjYxLDcgKzI4MSw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBQYXJhbVN0b3JhZ2VUcmFpdHM8UGFzc1Jl
ZlB0cjxUPiA+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBQYXJhbVN0b3JhZ2VUcmFp
dHM8UmVmUHRyPFQ+ID4gewogICAgIHR5cGVkZWYgUmVmUHRyPFQ+IFN0b3JhZ2VUeXBlOwogCi0g
ICAgc3RhdGljIFN0b3JhZ2VUeXBlIHdyYXAoUmVmUHRyPFQ+IHZhbHVlKSB7IHJldHVybiB2YWx1
ZS5yZWxlYXNlKCk7ICB9CisgICAgc3RhdGljIFN0b3JhZ2VUeXBlIHdyYXAoUmVmUHRyPFQ+IHZh
bHVlKSB7IHJldHVybiB2YWx1ZS5yZWxlYXNlKCk7IH0KICAgICBzdGF0aWMgVCogdW53cmFwKGNv
bnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCk7IH0KIH07CiAKQEAg
LTQ0NSw2ICs0NjUsNDEgQEAgcHJpdmF0ZToKICAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFp
dHM8UDU+OjpTdG9yYWdlVHlwZSBtX3A1OwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rp
b25XcmFwcGVyLCB0eXBlbmFtZSBSLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1l
IFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIFA2PgorY2xhc3MgQm91bmRG
dW5jdGlvbkltcGw8RnVuY3Rpb25XcmFwcGVyLCBSIChQMSwgUDIsIFAzLCBQNCwgUDUsIFA2KT4g
OiBwdWJsaWMgRnVuY3Rpb25JbXBsPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlw
ZSAoKT4geworcHVibGljOgorICAgIEJvdW5kRnVuY3Rpb25JbXBsKEZ1bmN0aW9uV3JhcHBlciBm
dW5jdGlvbldyYXBwZXIsIGNvbnN0IFAxJiBwMSwgY29uc3QgUDImIHAyLCBjb25zdCBQMyYgcDMs
IGNvbnN0IFA0JiBwNCwgY29uc3QgUDUmIHA1LCBjb25zdCBQNiYgcDYpCisgICAgICAgIDogbV9m
dW5jdGlvbldyYXBwZXIoZnVuY3Rpb25XcmFwcGVyKQorICAgICAgICAsIG1fcDEoUGFyYW1TdG9y
YWdlVHJhaXRzPFAxPjo6d3JhcChwMSkpCisgICAgICAgICwgbV9wMihQYXJhbVN0b3JhZ2VUcmFp
dHM8UDI+Ojp3cmFwKHAyKSkKKyAgICAgICAgLCBtX3AzKFBhcmFtU3RvcmFnZVRyYWl0czxQMz46
OndyYXAocDMpKQorICAgICAgICAsIG1fcDQoUGFyYW1TdG9yYWdlVHJhaXRzPFA0Pjo6d3JhcChw
NCkpCisgICAgICAgICwgbV9wNShQYXJhbVN0b3JhZ2VUcmFpdHM8UDU+Ojp3cmFwKHA1KSkKKyAg
ICAgICAgLCBtX3A2KFBhcmFtU3RvcmFnZVRyYWl0czxQNj46OndyYXAocDYpKQorICAgIHsKKyAg
ICAgICAgUmVmQW5kRGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJh
bWV0ZXI+OjpyZWYobV9wMSk7CisgICAgfQorCisgICAgfkJvdW5kRnVuY3Rpb25JbXBsKCkKKyAg
ICB7CisgICAgICAgIFJlZkFuZERlcmVmPFAxLCBGdW5jdGlvbldyYXBwZXI6OnNob3VsZFJlZkZp
cnN0UGFyYW1ldGVyPjo6ZGVyZWYobV9wMSk7CisgICAgfQorCisgICAgdmlydHVhbCB0eXBlbmFt
ZSBGdW5jdGlvbldyYXBwZXI6OlJlc3VsdFR5cGUgb3BlcmF0b3IoKSgpCisgICAgeworICAgICAg
ICByZXR1cm4gbV9mdW5jdGlvbldyYXBwZXIoUGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6dW53cmFw
KG1fcDEpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDI+Ojp1bndyYXAobV9wMiksIFBhcmFtU3RvcmFn
ZVRyYWl0czxQMz46OnVud3JhcChtX3AzKSwgUGFyYW1TdG9yYWdlVHJhaXRzPFA0Pjo6dW53cmFw
KG1fcDQpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDU+Ojp1bndyYXAobV9wNSksIFBhcmFtU3RvcmFn
ZVRyYWl0czxQNj46OnVud3JhcChtX3A2KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEZ1bmN0
aW9uV3JhcHBlciBtX2Z1bmN0aW9uV3JhcHBlcjsKKyAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VU
cmFpdHM8UDE+OjpTdG9yYWdlVHlwZSBtX3AxOworICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRy
YWl0czxQMj46OlN0b3JhZ2VUeXBlIG1fcDI7CisgICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJh
aXRzPFAzPjo6U3RvcmFnZVR5cGUgbV9wMzsKKyAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFp
dHM8UDQ+OjpTdG9yYWdlVHlwZSBtX3A0OworICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0
czxQNT46OlN0b3JhZ2VUeXBlIG1fcDU7CisgICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRz
PFA2Pjo6U3RvcmFnZVR5cGUgbV9wNjsKK307CisKIGNsYXNzIEZ1bmN0aW9uQmFzZSB7CiBwdWJs
aWM6CiAgICAgYm9vbCBpc051bGwoKSBjb25zdApAQCAtNTMwLDYgKzU4NSwxMiBAQCBGdW5jdGlv
bjx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoKT4g
YmluZChGdW5jdGlvblR5cAogICAgIHJldHVybiBGdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldy
YXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVu
Y3Rpb25JbXBsPEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlv
bldyYXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoQTEsIEEyLCBBMywgQTQsIEE1KT4o
RnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT4oZnVuY3Rpb24pLCBhMSwgYTIsIGEzLCBhNCwg
YTUpKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgQTEs
IHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1LCB0eXBl
bmFtZSBBNj4KK0Z1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+
OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwgY29uc3QgQTEmIGEx
LCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LCBjb25zdCBBNSYgYTUs
IGNvbnN0IEE2JiBhNikKK3sKKyAgICByZXR1cm4gRnVuY3Rpb248dHlwZW5hbWUgRnVuY3Rpb25X
cmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+KGFkb3B0UmVmKG5ldyBCb3VuZEZ1
bmN0aW9uSW1wbDxGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPiwgdHlwZW5hbWUgRnVuY3Rp
b25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKEExLCBBMiwgQTMsIEE0LCBBNSwg
QTYpPihGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPihmdW5jdGlvbiksIGExLCBhMiwgYTMs
IGE0LCBhNSwgYTYpKSk7Cit9CisKIH0KIAogdXNpbmcgV1RGOjpGdW5jdGlvbjsK
</data>
<flag name="review"
          id="120931"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="120999"
          type_id="3"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120681</attachid>
            <date>2011-12-28 09:28:22 -0800</date>
            <delta_ts>2011-12-28 09:28:22 -0800</delta_ts>
            <desc>Playing with macros</desc>
            <filename>fun.diff</filename>
            <type>text/plain</type>
            <size>19475</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRnVuY3Rpb25hbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRnVuY3Rpb25hbC5oCShyZXZpc2lvbiAxMDM3
NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Z1bmN0aW9uYWwuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNiArMzgsMzIgQEAgbmFtZXNwYWNlIFdURiB7CiAvLyBUaGUgaW1wbGVtZW50
YXRpb24gaXMgY3VycmVudGx5IHZlcnkgc2ltcGxlLCBidXQgdGhlIGdvYWwgaXMgdG8gcmVwbGFj
ZSBXb3JrSXRlbSBpbiBXZWJLaXQyIGFuZCBtYWtlIGl0IGVhc2llciB0bwogLy8gcGFja2FnZSB1
cCBhbmQgaW52b2tlIGZ1bmN0aW9uIGNhbGxzIGluc2lkZSBXZWJDb3JlLgogCisKKy8vIFNvbWUg
aGVscGVyIG1hY3JvcyB0byBoZWxwIHNpbXVsYXRlIHZhcmlhZGljIHRlbXBsYXRlcy4KKworI2Rl
ZmluZSBDT01NQSgpICwKKyNkZWZpbmUgTk9fQ09NTUEoKSAKKworI2RlZmluZSBDT05DQVQoeCwg
aSkgeCMjaQorI2RlZmluZSBQQVJBTUVURVJTX1dJVEhfTkFNRVMoeCwgaSkgUCMjaSBwIyNpCisj
ZGVmaW5lIENPTlNUX1BBUkFNRVRFUlNfV0lUSF9OQU1FUyh4LCBpKSBjb25zdCBQIyNpJiBwIyNp
CisKKyNkZWZpbmUgQlVJTEQwKHgsIGxlYWRpbmdDb21tYSwgY29tbWEsIGJ1aWxkZXIpCisjZGVm
aW5lIEJVSUxEMSh4LCBsZWFkaW5nQ29tbWEsIGNvbW1hLCBidWlsZGVyKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVhZGluZ0NvbW1hKCkgIGJ1aWxkZXIoeCwgMSkK
KyNkZWZpbmUgQlVJTEQyKHgsIGxlYWRpbmdDb21tYSwgY29tbWEsIGJ1aWxkZXIpIEJVSUxEMSh4
LCBsZWFkaW5nQ29tbWEsIGNvbW1hLCBidWlsZGVyKSBjb21tYSgpICAgICAgICAgYnVpbGRlcih4
LCAyKQorI2RlZmluZSBCVUlMRDMoeCwgbGVhZGluZ0NvbW1hLCBjb21tYSwgYnVpbGRlcikgQlVJ
TEQyKHgsIGxlYWRpbmdDb21tYSwgY29tbWEsIGJ1aWxkZXIpIGNvbW1hKCkgICAgICAgICBidWls
ZGVyKHgsIDMpCisjZGVmaW5lIEJVSUxENCh4LCBsZWFkaW5nQ29tbWEsIGNvbW1hLCBidWlsZGVy
KSBCVUlMRDMoeCwgbGVhZGluZ0NvbW1hLCBjb21tYSwgYnVpbGRlcikgY29tbWEoKSAgICAgICAg
IGJ1aWxkZXIoeCwgNCkKKyNkZWZpbmUgQlVJTEQ1KHgsIGxlYWRpbmdDb21tYSwgY29tbWEsIGJ1
aWxkZXIpIEJVSUxENCh4LCBsZWFkaW5nQ29tbWEsIGNvbW1hLCBidWlsZGVyKSBjb21tYSgpICAg
ICAgICAgYnVpbGRlcih4LCA1KQorI2RlZmluZSBCVUlMRDYoeCwgbGVhZGluZ0NvbW1hLCBjb21t
YSwgYnVpbGRlcikgQlVJTEQ1KHgsIGxlYWRpbmdDb21tYSwgY29tbWEsIGJ1aWxkZXIpIGNvbW1h
KCkgICAgICAgICBidWlsZGVyKHgsIDYpCisjZGVmaW5lIEJVSUxENyh4LCBsZWFkaW5nQ29tbWEs
IGNvbW1hLCBidWlsZGVyKSBCVUlMRDYoeCwgbGVhZGluZ0NvbW1hLCBjb21tYSwgYnVpbGRlcikg
Y29tbWEoKSAgICAgICAgIGJ1aWxkZXIoeCwgNykKKyNkZWZpbmUgQlVJTEQ4KHgsIGxlYWRpbmdD
b21tYSwgY29tbWEsIGJ1aWxkZXIpIEJVSUxENyh4LCBsZWFkaW5nQ29tbWEsIGNvbW1hLCBidWls
ZGVyKSBjb21tYSgpICAgICAgICAgYnVpbGRlcih4LCA4KQorI2RlZmluZSBCVUlMRDkoeCwgbGVh
ZGluZ0NvbW1hLCBjb21tYSwgYnVpbGRlcikgQlVJTEQ4KHgsIGxlYWRpbmdDb21tYSwgY29tbWEs
IGJ1aWxkZXIpIGNvbW1hKCkgICAgICAgICBidWlsZGVyKHgsIDkpCisKKyNkZWZpbmUgQlVJTERf
TElTVCh4LCBpLCBidWlsZGVyKSBCVUlMRCMjaSh4LCBOT19DT01NQSwgQ09NTUEsIGJ1aWxkZXIp
CisjZGVmaW5lIEJVSUxEX0xJU1RfV0lUSF9MRUFESU5HX0NPTU1BKHgsIGksIGJ1aWxkZXIpIEJV
SUxEIyNpKHgsIENPTU1BLCBDT01NQSwgYnVpbGRlcikKKyNkZWZpbmUgQlVJTERfU0VUKHgsIGks
IGJ1aWxkZXIpIEJVSUxEIyNpKHgsIE5PX0NPTU1BLCBOT19DT01NQSwgYnVpbGRlcikKKworCiAv
LyBIZWxwZXIgY2xhc3MgdGVtcGxhdGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiB0eXBl
IGhhcyByZWYgYW5kIGRlcmVmIG1lbWJlciBmdW5jdGlvbnMKIC8vIHdpdGggdGhlIHJpZ2h0IHR5
cGUgc2lnbmF0dXJlLgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTc0LDE2NSArMTAwLDY3IEBA
IHB1YmxpYzoKIHRlbXBsYXRlPHR5cGVuYW1lPgogY2xhc3MgRnVuY3Rpb25XcmFwcGVyOwogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBSPgotY2xhc3MgRnVuY3Rpb25XcmFwcGVyPFIgKCopKCk+IHsKLXB1
YmxpYzoKLSAgICB0eXBlZGVmIFIgUmVzdWx0VHlwZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBz
aG91bGRSZWZGaXJzdFBhcmFtZXRlciA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRnVuY3Rpb25X
cmFwcGVyKFIgKCpmdW5jdGlvbikoKSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fZnVuY3Rpb24oKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUiAoKm1fZnVuY3Rpb24pKCk7
Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBQMT4KLWNsYXNzIEZ1bmN0aW9u
V3JhcHBlcjxSICgqKShQMSk+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFIgUmVzdWx0VHlwZTsK
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBhcmFtZXRlciA9IGZhbHNlOwot
Ci0gICAgZXhwbGljaXQgRnVuY3Rpb25XcmFwcGVyKFIgKCpmdW5jdGlvbikoUDEpKQotICAgICAg
ICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCi0gICAgewotICAgIH0KLQotICAgIFIgb3BlcmF0b3Io
KShQMSBwMSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9uKHAxKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgUiAoKm1fZnVuY3Rpb24pKFAxKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIFIsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMj4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxS
ICgqKShQMSwgUDIpPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBmYWxzZTsKLQotICAg
IGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihSICgqZnVuY3Rpb24pKFAxLCBQMikpCi0gICAgICAg
IDogbV9mdW5jdGlvbihmdW5jdGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigp
KFAxIHAxLCBQMiBwMikKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9uKHAxLCBwMik7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFIgKCptX2Z1bmN0aW9uKShQMSwgUDIpOwotfTsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQz4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxS
IChDOjoqKSgpPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxD
Pjo6dmFsdWU7Ci0KLSAgICBleHBsaWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9u
KSgpKQotICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCi0gICAgewotICAgIH0KLQotICAg
IFIgb3BlcmF0b3IoKShDKiBjKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChjLT4qbV9mdW5jdGlv
bikoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKCk7Ci19Owot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMT4KLWNsYXNzIEZ1
bmN0aW9uV3JhcHBlcjxSIChDOjoqKShQMSk+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFIgUmVz
dWx0VHlwZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBhcmFtZXRlciA9
IEhhc1JlZkFuZERlcmVmPEM+Ojp2YWx1ZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBl
cihSIChDOjoqZnVuY3Rpb24pKFAxKSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoQyogYywgUDEgcDEpCi0gICAgewotICAg
ICAgICByZXR1cm4gKGMtPiptX2Z1bmN0aW9uKShwMSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IFIgKEM6OiptX2Z1bmN0aW9uKShQMSk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBl
bmFtZSBDLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDI+Ci1jbGFzcyBGdW5jdGlvbldyYXBwZXI8
UiAoQzo6KikoUDEsIFAyKT4gewotcHVibGljOgotICAgIHR5cGVkZWYgUiBSZXN1bHRUeXBlOwot
ICAgIHN0YXRpYyBjb25zdCBib29sIHNob3VsZFJlZkZpcnN0UGFyYW1ldGVyID0gSGFzUmVmQW5k
RGVyZWY8Qz46OnZhbHVlOwotCi0gICAgZXhwbGljaXQgRnVuY3Rpb25XcmFwcGVyKFIgKEM6Oipm
dW5jdGlvbikoUDEsIFAyKSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsK
LSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoQyogYywgUDEgcDEsIFAyIHAyKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIChjLT4qbV9mdW5jdGlvbikocDEsIHAyKTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKFAxLCBQMik7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzPgot
Y2xhc3MgRnVuY3Rpb25XcmFwcGVyPFIgKEM6OiopKFAxLCBQMiwgUDMpPiB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkUmVm
Rmlyc3RQYXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxDPjo6dmFsdWU7Ci0KLSAgICBleHBsaWNp
dCBGdW5jdGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9uKShQMSwgUDIsIFAzKSkKLSAgICAgICAg
OiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCko
QyogYywgUDEgcDEsIFAyIHAyLCBQMyBwMykKLSAgICB7Ci0gICAgICAgIHJldHVybiAoYy0+Km1f
ZnVuY3Rpb24pKHAxLCBwMiwgcDMpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSIChDOjoqbV9m
dW5jdGlvbikoUDEsIFAyLCBQMyk7Ci19OworI2RlZmluZSBGVU5DVElPTl9XUkFQUEVSX0JVSUxE
RVIobnVtYmVyT2ZQYXJhbWV0ZXJzKSBcCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUiBCVUlMRF9M
SVNUX1dJVEhfTEVBRElOR19DT01NQSh0eXBlbmFtZSBQLCBudW1iZXJPZlBhcmFtZXRlcnMsIENP
TkNBVCk+IFwKKyAgICBjbGFzcyBGdW5jdGlvbldyYXBwZXI8UiAoKikoQlVJTERfTElTVChQLCBu
dW1iZXJPZlBhcmFtZXRlcnMsIENPTkNBVCkpPiB7IFwKKyAgICBwdWJsaWM6IFwKKyAgICAgICAg
dHlwZWRlZiBSIFJlc3VsdFR5cGU7IFwKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxk
UmVmRmlyc3RQYXJhbWV0ZXIgPSBmYWxzZTsgXAorICAgICAgICBcCisgICAgICAgIGV4cGxpY2l0
IEZ1bmN0aW9uV3JhcHBlcihSICgqZnVuY3Rpb24pKEJVSUxEX0xJU1QoUCwgbnVtYmVyT2ZQYXJh
bWV0ZXJzLCBDT05DQVQpKSkgXAorICAgICAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKSBc
CisgICAgICAgIHsgXAorICAgICAgICB9IFwKKyAgICAgICAgXAorICAgICAgICBSIG9wZXJhdG9y
KCkoQlVJTERfTElTVChQLCBudW1iZXJPZlBhcmFtZXRlcnMsIFBBUkFNRVRFUlNfV0lUSF9OQU1F
UykpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihCVUlMRF9M
SVNUKHAsIG51bWJlck9mUGFyYW1ldGVycywgQ09OQ0FUKSk7IFwKKyAgICAgICAgfSBcCisgICAg
ICAgIFwKKyAgICBwcml2YXRlOiBcCisgICAgICAgIFIgKCptX2Z1bmN0aW9uKShCVUlMRF9MSVNU
KFAsIG51bWJlck9mUGFyYW1ldGVycywgQ09OQ0FUKSk7IFwKKyAgICB9OwogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1l
IFAzLCB0eXBlbmFtZSBQND4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxSIChDOjoqKShQMSwgUDIs
IFAzLCBQNCk+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFIgUmVzdWx0VHlwZTsKLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBhcmFtZXRlciA9IEhhc1JlZkFuZERlcmVmPEM+
Ojp2YWx1ZTsKKyNkZWZpbmUgTUVNQkVSX0ZVTkNUSU9OX1dSQVBQRVJfQlVJTERFUihudW1iZXJP
ZlBhcmFtZXRlcnMpIFwKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBDIEJVSUxE
X0xJU1RfV0lUSF9MRUFESU5HX0NPTU1BKHR5cGVuYW1lIFAsIG51bWJlck9mUGFyYW1ldGVycywg
Q09OQ0FUKT4gXAorICAgIGNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxSIChDOjoqKShCVUlMRF9MSVNU
KFAsIG51bWJlck9mUGFyYW1ldGVycywgQ09OQ0FUKSk+IHsgXAorICAgIHB1YmxpYzogXAorICAg
ICAgICB0eXBlZGVmIFIgUmVzdWx0VHlwZTsgXAorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBz
aG91bGRSZWZGaXJzdFBhcmFtZXRlciA9IEhhc1JlZkFuZERlcmVmPEM+Ojp2YWx1ZTsgXAorICAg
ICAgICBcCisgICAgICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihSIChDOjoqZnVuY3Rpb24p
KEJVSUxEX0xJU1QoUCwgbnVtYmVyT2ZQYXJhbWV0ZXJzLCBDT05DQVQpKSkgXAorICAgICAgICAg
ICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKSBcCisgICAgICAgIHsgXAorICAgICAgICB9IFwKKyAg
ICAgICAgXAorICAgICAgICBSIG9wZXJhdG9yKCkoQyogYyBCVUlMRF9MSVNUX1dJVEhfTEVBRElO
R19DT01NQShQLCBudW1iZXJPZlBhcmFtZXRlcnMsIFBBUkFNRVRFUlNfV0lUSF9OQU1FUykpIFwK
KyAgICAgICAgeyBcCisgICAgICAgICAgICByZXR1cm4gKGMtPiptX2Z1bmN0aW9uKShCVUlMRF9M
SVNUKHAsIG51bWJlck9mUGFyYW1ldGVycywgQ09OQ0FUKSk7IFwKKyAgICAgICAgfSBcCisgICAg
ICAgIFwKKyAgICBwcml2YXRlOiBcCisgICAgICAgIFIgKEM6OiptX2Z1bmN0aW9uKShCVUlMRF9M
SVNUKFAsIG51bWJlck9mUGFyYW1ldGVycywgQ09OQ0FUKSk7IFwKKyAgICB9OwogCi0gICAgZXhw
bGljaXQgRnVuY3Rpb25XcmFwcGVyKFIgKEM6OipmdW5jdGlvbikoUDEsIFAyLCBQMywgUDQpKQot
ICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCi0gICAgewotICAgIH0KIAotICAgIFIgb3Bl
cmF0b3IoKShDKiBjLCBQMSBwMSwgUDIgcDIsIFAzIHAzLCBQNCBwNCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiAoYy0+Km1fZnVuY3Rpb24pKHAxLCBwMiwgcDMsIHA0KTsKLSAgICB9CitGVU5DVElP
Tl9XUkFQUEVSX0JVSUxERVIoMCkKK0ZVTkNUSU9OX1dSQVBQRVJfQlVJTERFUigxKQorRlVOQ1RJ
T05fV1JBUFBFUl9CVUlMREVSKDIpCitGVU5DVElPTl9XUkFQUEVSX0JVSUxERVIoMykKK0ZVTkNU
SU9OX1dSQVBQRVJfQlVJTERFUig0KQorRlVOQ1RJT05fV1JBUFBFUl9CVUlMREVSKDUpCitGVU5D
VElPTl9XUkFQUEVSX0JVSUxERVIoNikKKyN1bmRlZiBGVU5DVElPTl9XUkFQUEVSX0JVSUxERVIK
KworTUVNQkVSX0ZVTkNUSU9OX1dSQVBQRVJfQlVJTERFUigwKQorTUVNQkVSX0ZVTkNUSU9OX1dS
QVBQRVJfQlVJTERFUigxKQorTUVNQkVSX0ZVTkNUSU9OX1dSQVBQRVJfQlVJTERFUigyKQorTUVN
QkVSX0ZVTkNUSU9OX1dSQVBQRVJfQlVJTERFUigzKQorTUVNQkVSX0ZVTkNUSU9OX1dSQVBQRVJf
QlVJTERFUig0KQorTUVNQkVSX0ZVTkNUSU9OX1dSQVBQRVJfQlVJTERFUig1KQorTUVNQkVSX0ZV
TkNUSU9OX1dSQVBQRVJfQlVJTERFUig2KQorI3VuZGVmIE1FTUJFUl9GVU5DVElPTl9XUkFQUEVS
X0JVSUxERVIKIAotcHJpdmF0ZToKLSAgICBSIChDOjoqbV9mdW5jdGlvbikoUDEsIFAyLCBQMywg
UDQpOwotfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgYm9vbCBzaG91bGRSZWZBbmREZXJlZj4g
c3RydWN0IFJlZkFuZERlcmVmIHsKICAgICBzdGF0aWMgdm9pZCByZWYoVCkgeyB9CkBAIC0yOTks
MTUxICsyMjcsNDcgQEAgcHJpdmF0ZToKICAgICBGdW5jdGlvbldyYXBwZXIgbV9mdW5jdGlvbldy
YXBwZXI7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXIsIHR5cGVuYW1l
IFIsIHR5cGVuYW1lIFAxPgotY2xhc3MgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFwcGVy
LCBSIChQMSk+IDogcHVibGljIEZ1bmN0aW9uSW1wbDx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI6
OlJlc3VsdFR5cGUgKCk+IHsKLQotcHVibGljOgotICAgIEJvdW5kRnVuY3Rpb25JbXBsKEZ1bmN0
aW9uV3JhcHBlciBmdW5jdGlvbldyYXBwZXIsIGNvbnN0IFAxJiBwMSkKLSAgICAgICAgOiBtX2Z1
bmN0aW9uV3JhcHBlcihmdW5jdGlvbldyYXBwZXIpCi0gICAgICAgICwgbV9wMShQYXJhbVN0b3Jh
Z2VUcmFpdHM8UDE+Ojp3cmFwKHAxKSkKLSAgICB7Ci0gICAgICAgIFJlZkFuZERlcmVmPFAxLCBG
dW5jdGlvbldyYXBwZXI6OnNob3VsZFJlZkZpcnN0UGFyYW1ldGVyPjo6cmVmKG1fcDEpOwotICAg
IH0KLQotICAgIH5Cb3VuZEZ1bmN0aW9uSW1wbCgpCi0gICAgewotICAgICAgICBSZWZBbmREZXJl
ZjxQMSwgRnVuY3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJzdFBhcmFtZXRlcj46OmRlcmVmKG1f
cDEpOwotICAgIH0KIAotICAgIHZpcnR1YWwgUiBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2Z1bmN0aW9uV3JhcHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAo
bV9wMSkpOwotICAgIH0KKy8vIFNwZWNpYWwgY2FzZSBidWlsZGVycy4KKyNkZWZpbmUgSU5JVElB
TElaRVJfTElTVCh4LCBpKSAsIG1fcCMjaShQYXJhbVN0b3JhZ2VUcmFpdHM8UCMjaT46OndyYXAo
cCMjaSkpCisjZGVmaW5lIFBBUkFNRVRFUlNfSU5fRlVOQ1RJT05fQ0FMTCh4LCBpKSBQYXJhbVN0
b3JhZ2VUcmFpdHM8UCMjaT46OnVud3JhcChtX3AjI2kpCisjZGVmaW5lIE1FTUJFUl9WQVJJQUJM
RVMoeCwgaSkgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFAjI2k+OjpTdG9yYWdlVHlwZSBt
X3AjI2k7CisKKyNkZWZpbmUgQk9VTkRfRlVOQ1RJT05fSU1QTF9CVUlMREVSKG51bWJlck9mUGFy
YW1ldGVycykgXAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlciwgdHlwZW5h
bWUgUiBCVUlMRF9MSVNUX1dJVEhfTEVBRElOR19DT01NQSh0eXBlbmFtZSBQLCBudW1iZXJPZlBh
cmFtZXRlcnMsIENPTkNBVCk+IFwKKyAgICBjbGFzcyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5jdGlv
bldyYXBwZXIsIFIgKEJVSUxEX0xJU1QoUCwgbnVtYmVyT2ZQYXJhbWV0ZXJzLCBDT05DQVQpKT4g
OiBwdWJsaWMgRnVuY3Rpb25JbXBsPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlw
ZSAoKT4geyBcCisgICAgcHVibGljOiBcCisgICAgICAgIEJvdW5kRnVuY3Rpb25JbXBsKEZ1bmN0
aW9uV3JhcHBlciBmdW5jdGlvbldyYXBwZXIgQlVJTERfTElTVF9XSVRIX0xFQURJTkdfQ09NTUEo
UCwgbnVtYmVyT2ZQYXJhbWV0ZXJzLCBDT05TVF9QQVJBTUVURVJTX1dJVEhfTkFNRVMpKSBcCisg
ICAgICAgICAgICA6IG1fZnVuY3Rpb25XcmFwcGVyKGZ1bmN0aW9uV3JhcHBlcikgXAorICAgICAg
ICAgICAgQlVJTERfU0VUKFAsIG51bWJlck9mUGFyYW1ldGVycywgSU5JVElBTElaRVJfTElTVCkg
XAorICAgICAgICB7IFwKKyAgICAgICAgICAgIFJlZkFuZERlcmVmPFAxLCBGdW5jdGlvbldyYXBw
ZXI6OnNob3VsZFJlZkZpcnN0UGFyYW1ldGVyPjo6cmVmKG1fcDEpOyBcCisgICAgICAgIH0gXAor
ICAgICAgICBcCisgICAgICAgIH5Cb3VuZEZ1bmN0aW9uSW1wbCgpIFwKKyAgICAgICAgeyBcCisg
ICAgICAgICAgICBSZWZBbmREZXJlZjxQMSwgRnVuY3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJz
dFBhcmFtZXRlcj46OmRlcmVmKG1fcDEpOyBcCisgICAgICAgIH0gXAorICAgICAgICBcCisgICAg
ICAgIHZpcnR1YWwgdHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyOjpSZXN1bHRUeXBlIG9wZXJhdG9y
KCkoKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgcmV0dXJuIG1fZnVuY3Rpb25XcmFwcGVy
KEJVSUxEX0xJU1QoUCwgbnVtYmVyT2ZQYXJhbWV0ZXJzLCBQQVJBTUVURVJTX0lOX0ZVTkNUSU9O
X0NBTEwpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgXAorICAgIHByaXZhdGU6IFwKKyAgICAg
ICAgRnVuY3Rpb25XcmFwcGVyIG1fZnVuY3Rpb25XcmFwcGVyOyBcCisgICAgICAgIEJVSUxEX1NF
VChQLCBudW1iZXJPZlBhcmFtZXRlcnMsIE1FTUJFUl9WQVJJQUJMRVMpIFwKKyAgICB9OyBcCisK
KworQk9VTkRfRlVOQ1RJT05fSU1QTF9CVUlMREVSKDEpCitCT1VORF9GVU5DVElPTl9JTVBMX0JV
SUxERVIoMikKK0JPVU5EX0ZVTkNUSU9OX0lNUExfQlVJTERFUigzKQorQk9VTkRfRlVOQ1RJT05f
SU1QTF9CVUlMREVSKDQpCitCT1VORF9GVU5DVElPTl9JTVBMX0JVSUxERVIoNSkKK0JPVU5EX0ZV
TkNUSU9OX0lNUExfQlVJTERFUig2KQorI3VuZGVmIEJPVU5EX0ZVTkNUSU9OX0lNUExfQlVJTERF
UgogCi1wcml2YXRlOgotICAgIEZ1bmN0aW9uV3JhcHBlciBtX2Z1bmN0aW9uV3JhcHBlcjsKLSAg
ICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+OjpTdG9yYWdlVHlwZSBtX3AxOwotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyLCB0eXBlbmFtZSBSLCB0eXBlbmFt
ZSBQMSwgdHlwZW5hbWUgUDI+Ci1jbGFzcyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5jdGlvbldyYXBw
ZXIsIFIgKFAxLCBQMik+IDogcHVibGljIEZ1bmN0aW9uSW1wbDx0eXBlbmFtZSBGdW5jdGlvbldy
YXBwZXI6OlJlc3VsdFR5cGUgKCk+IHsKLXB1YmxpYzoKLSAgICBCb3VuZEZ1bmN0aW9uSW1wbChG
dW5jdGlvbldyYXBwZXIgZnVuY3Rpb25XcmFwcGVyLCBjb25zdCBQMSYgcDEsIGNvbnN0IFAyJiBw
MikKLSAgICAgICAgOiBtX2Z1bmN0aW9uV3JhcHBlcihmdW5jdGlvbldyYXBwZXIpCi0gICAgICAg
ICwgbV9wMShQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp3cmFwKHAxKSkKLSAgICAgICAgLCBtX3Ay
KFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OndyYXAocDIpKQotICAgIHsKLSAgICAgICAgUmVmQW5k
RGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+OjpyZWYo
bV9wMSk7Ci0gICAgfQotICAgIAotICAgIH5Cb3VuZEZ1bmN0aW9uSW1wbCgpCi0gICAgewotICAg
ICAgICBSZWZBbmREZXJlZjxQMSwgRnVuY3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJzdFBhcmFt
ZXRlcj46OmRlcmVmKG1fcDEpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdHlwZW5hbWUgRnVuY3Rp
b25XcmFwcGVyOjpSZXN1bHRUeXBlIG9wZXJhdG9yKCkoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fZnVuY3Rpb25XcmFwcGVyKFBhcmFtU3RvcmFnZVRyYWl0czxQMT46OnVud3JhcChtX3AxKSwg
UGFyYW1TdG9yYWdlVHJhaXRzPFAyPjo6dW53cmFwKG1fcDIpKTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgRnVuY3Rpb25XcmFwcGVyIG1fZnVuY3Rpb25XcmFwcGVyOwotICAgIHR5cGVuYW1lIFBh
cmFtU3RvcmFnZVRyYWl0czxQMT46OlN0b3JhZ2VUeXBlIG1fcDE7Ci0gICAgdHlwZW5hbWUgUGFy
YW1TdG9yYWdlVHJhaXRzPFAyPjo6U3RvcmFnZVR5cGUgbV9wMjsKLX07Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0aW9uV3JhcHBlciwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1l
IFAyLCB0eXBlbmFtZSBQMz4KLWNsYXNzIEJvdW5kRnVuY3Rpb25JbXBsPEZ1bmN0aW9uV3JhcHBl
ciwgUiAoUDEsIFAyLCBQMyk+IDogcHVibGljIEZ1bmN0aW9uSW1wbDx0eXBlbmFtZSBGdW5jdGlv
bldyYXBwZXI6OlJlc3VsdFR5cGUgKCk+IHsKLXB1YmxpYzoKLSAgICBCb3VuZEZ1bmN0aW9uSW1w
bChGdW5jdGlvbldyYXBwZXIgZnVuY3Rpb25XcmFwcGVyLCBjb25zdCBQMSYgcDEsIGNvbnN0IFAy
JiBwMiwgY29uc3QgUDMmIHAzKQotICAgICAgICA6IG1fZnVuY3Rpb25XcmFwcGVyKGZ1bmN0aW9u
V3JhcHBlcikKLSAgICAgICAgLCBtX3AxKFBhcmFtU3RvcmFnZVRyYWl0czxQMT46OndyYXAocDEp
KQotICAgICAgICAsIG1fcDIoUGFyYW1TdG9yYWdlVHJhaXRzPFAyPjo6d3JhcChwMikpCi0gICAg
ICAgICwgbV9wMyhQYXJhbVN0b3JhZ2VUcmFpdHM8UDM+Ojp3cmFwKHAzKSkKLSAgICB7Ci0gICAg
ICAgIFJlZkFuZERlcmVmPFAxLCBGdW5jdGlvbldyYXBwZXI6OnNob3VsZFJlZkZpcnN0UGFyYW1l
dGVyPjo6cmVmKG1fcDEpOwotICAgIH0KLSAgICAKLSAgICB+Qm91bmRGdW5jdGlvbkltcGwoKQot
ICAgIHsKLSAgICAgICAgUmVmQW5kRGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVm
Rmlyc3RQYXJhbWV0ZXI+OjpkZXJlZihtX3AxKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVu
YW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2Z1bmN0aW9uV3JhcHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndy
YXAobV9wMSksIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OnVud3JhcChtX3AyKSwgUGFyYW1TdG9y
YWdlVHJhaXRzPFAzPjo6dW53cmFwKG1fcDMpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRnVu
Y3Rpb25XcmFwcGVyIG1fZnVuY3Rpb25XcmFwcGVyOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFn
ZVRyYWl0czxQMT46OlN0b3JhZ2VUeXBlIG1fcDE7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdl
VHJhaXRzPFAyPjo6U3RvcmFnZVR5cGUgbV9wMjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VU
cmFpdHM8UDM+OjpTdG9yYWdlVHlwZSBtX3AzOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rpb25XcmFwcGVyLCB0eXBlbmFtZSBSLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVu
YW1lIFAzLCB0eXBlbmFtZSBQND4KLWNsYXNzIEJvdW5kRnVuY3Rpb25JbXBsPEZ1bmN0aW9uV3Jh
cHBlciwgUiAoUDEsIFAyLCBQMywgUDQpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGw8dHlwZW5hbWUg
RnVuY3Rpb25XcmFwcGVyOjpSZXN1bHRUeXBlICgpPiB7Ci1wdWJsaWM6Ci0gICAgQm91bmRGdW5j
dGlvbkltcGwoRnVuY3Rpb25XcmFwcGVyIGZ1bmN0aW9uV3JhcHBlciwgY29uc3QgUDEmIHAxLCBj
b25zdCBQMiYgcDIsIGNvbnN0IFAzJiBwMywgY29uc3QgUDQmIHA0KQotICAgICAgICA6IG1fZnVu
Y3Rpb25XcmFwcGVyKGZ1bmN0aW9uV3JhcHBlcikKLSAgICAgICAgLCBtX3AxKFBhcmFtU3RvcmFn
ZVRyYWl0czxQMT46OndyYXAocDEpKQotICAgICAgICAsIG1fcDIoUGFyYW1TdG9yYWdlVHJhaXRz
PFAyPjo6d3JhcChwMikpCi0gICAgICAgICwgbV9wMyhQYXJhbVN0b3JhZ2VUcmFpdHM8UDM+Ojp3
cmFwKHAzKSkKLSAgICAgICAgLCBtX3A0KFBhcmFtU3RvcmFnZVRyYWl0czxQND46OndyYXAocDQp
KQotICAgIHsKLSAgICAgICAgUmVmQW5kRGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxk
UmVmRmlyc3RQYXJhbWV0ZXI+OjpyZWYobV9wMSk7Ci0gICAgfQotICAgIAotICAgIH5Cb3VuZEZ1
bmN0aW9uSW1wbCgpCi0gICAgewotICAgICAgICBSZWZBbmREZXJlZjxQMSwgRnVuY3Rpb25XcmFw
cGVyOjpzaG91bGRSZWZGaXJzdFBhcmFtZXRlcj46OmRlcmVmKG1fcDEpOwotICAgIH0KLQotICAg
IHZpcnR1YWwgdHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyOjpSZXN1bHRUeXBlIG9wZXJhdG9yKCko
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZnVuY3Rpb25XcmFwcGVyKFBhcmFtU3RvcmFnZVRy
YWl0czxQMT46OnVud3JhcChtX3AxKSwgUGFyYW1TdG9yYWdlVHJhaXRzPFAyPjo6dW53cmFwKG1f
cDIpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDM+Ojp1bndyYXAobV9wMyksIFBhcmFtU3RvcmFnZVRy
YWl0czxQND46OnVud3JhcChtX3A0KSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZ1bmN0aW9u
V3JhcHBlciBtX2Z1bmN0aW9uV3JhcHBlcjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFp
dHM8UDE+OjpTdG9yYWdlVHlwZSBtX3AxOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0
czxQMj46OlN0b3JhZ2VUeXBlIG1fcDI7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRz
PFAzPjo6U3RvcmFnZVR5cGUgbV9wMzsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8
UDQ+OjpTdG9yYWdlVHlwZSBtX3A0OwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25X
cmFwcGVyLCB0eXBlbmFtZSBSLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAz
LCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDU+Ci1jbGFzcyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5j
dGlvbldyYXBwZXIsIFIgKFAxLCBQMiwgUDMsIFA0LCBQNSk+IDogcHVibGljIEZ1bmN0aW9uSW1w
bDx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI6OlJlc3VsdFR5cGUgKCk+IHsKLXB1YmxpYzoKLSAg
ICBCb3VuZEZ1bmN0aW9uSW1wbChGdW5jdGlvbldyYXBwZXIgZnVuY3Rpb25XcmFwcGVyLCBjb25z
dCBQMSYgcDEsIGNvbnN0IFAyJiBwMiwgY29uc3QgUDMmIHAzLCBjb25zdCBQNCYgcDQsIGNvbnN0
IFA1JiBwNSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uV3JhcHBlcihmdW5jdGlvbldyYXBwZXIpCi0g
ICAgICAgICwgbV9wMShQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp3cmFwKHAxKSkKLSAgICAgICAg
LCBtX3AyKFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OndyYXAocDIpKQotICAgICAgICAsIG1fcDMo
UGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6d3JhcChwMykpCi0gICAgICAgICwgbV9wNChQYXJhbVN0
b3JhZ2VUcmFpdHM8UDQ+Ojp3cmFwKHA0KSkKLSAgICAgICAgLCBtX3A1KFBhcmFtU3RvcmFnZVRy
YWl0czxQNT46OndyYXAocDUpKQotICAgIHsKLSAgICAgICAgUmVmQW5kRGVyZWY8UDEsIEZ1bmN0
aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+OjpyZWYobV9wMSk7Ci0gICAgfQot
ICAgIAotICAgIH5Cb3VuZEZ1bmN0aW9uSW1wbCgpCi0gICAgewotICAgICAgICBSZWZBbmREZXJl
ZjxQMSwgRnVuY3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJzdFBhcmFtZXRlcj46OmRlcmVmKG1f
cDEpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyOjpSZXN1
bHRUeXBlIG9wZXJhdG9yKCkoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZnVuY3Rpb25XcmFw
cGVyKFBhcmFtU3RvcmFnZVRyYWl0czxQMT46OnVud3JhcChtX3AxKSwgUGFyYW1TdG9yYWdlVHJh
aXRzPFAyPjo6dW53cmFwKG1fcDIpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDM+Ojp1bndyYXAobV9w
MyksIFBhcmFtU3RvcmFnZVRyYWl0czxQND46OnVud3JhcChtX3A0KSwgUGFyYW1TdG9yYWdlVHJh
aXRzPFA1Pjo6dW53cmFwKG1fcDUpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRnVuY3Rpb25X
cmFwcGVyIG1fZnVuY3Rpb25XcmFwcGVyOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0
czxQMT46OlN0b3JhZ2VUeXBlIG1fcDE7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRz
PFAyPjo6U3RvcmFnZVR5cGUgbV9wMjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8
UDM+OjpTdG9yYWdlVHlwZSBtX3AzOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQ
ND46OlN0b3JhZ2VUeXBlIG1fcDQ7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFA1
Pjo6U3RvcmFnZVR5cGUgbV9wNTsKLX07CiAKIGNsYXNzIEZ1bmN0aW9uQmFzZSB7CiBwdWJsaWM6
CkBAIC00OTQsNDEgKzMxOCwyMyBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rpb25UeXBlPgotRnVuY3Rpb248dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyPEZ1
bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+IGJpbmQoRnVuY3Rpb25UeXBlIGZ1bmN0aW9uKQot
ewotICAgIHJldHVybiBGdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25U
eXBlPjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVuY3Rpb25JbXBsPEZ1bmN0
aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rp
b25UeXBlPjo6UmVzdWx0VHlwZSAoKT4oRnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT4oZnVu
Y3Rpb24pKSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1l
IEExPgotRnVuY3Rpb248dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJl
c3VsdFR5cGUgKCk+IGJpbmQoRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLCBjb25zdCBBMSYgYTEpCi17
Ci0gICAgcmV0dXJuIEZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5
cGU+OjpSZXN1bHRUeXBlICgpPihhZG9wdFJlZihuZXcgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rp
b25XcmFwcGVyPEZ1bmN0aW9uVHlwZT4sIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlv
blR5cGU+OjpSZXN1bHRUeXBlIChBMSk+KEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+KGZ1
bmN0aW9uKSwgYTEpKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlw
ZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotRnVuY3Rpb248dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVy
PEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+IGJpbmQoRnVuY3Rpb25UeXBlIGZ1bmN0aW9u
LCBjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMikKLXsKLSAgICByZXR1cm4gRnVuY3Rpb248dHlw
ZW5hbWUgRnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+KGFkb3B0
UmVmKG5ldyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPiwg
dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKEExLCBB
Mik+KEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+KGZ1bmN0aW9uKSwgYTEsIGEyKSkpOwot
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEExLCB0eXBlbmFt
ZSBBMiwgdHlwZW5hbWUgQTM+Ci1GdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVu
Y3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoKT4gYmluZChGdW5jdGlvblR5cGUgZnVuY3Rpb24sIGNv
bnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMpCi17Ci0gICAgcmV0dXJuIEZ1
bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBl
ICgpPihhZG9wdFJlZihuZXcgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFwcGVyPEZ1bmN0
aW9uVHlwZT4sIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRU
eXBlIChBMSwgQTIsIEEzKT4oRnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT4oZnVuY3Rpb24p
LCBhMSwgYTIsIGEzKSkpOwotfQorI2RlZmluZSBCSU5EX0JVSUxERVIobnVtYmVyT2ZQYXJhbWV0
ZXJzKSBcCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlIEJVSUxEX0xJU1RfV0lU
SF9MRUFESU5HX0NPTU1BKHR5cGVuYW1lIFAsIG51bWJlck9mUGFyYW1ldGVycywgQ09OQ0FUKT4g
XAorICAgIEZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpS
ZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiBCVUlMRF9MSVNUX1dJVEhf
TEVBRElOR19DT01NQShQLCBudW1iZXJPZlBhcmFtZXRlcnMsIENPTlNUX1BBUkFNRVRFUlNfV0lU
SF9OQU1FUykpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIEZ1bmN0aW9uPHR5cGVuYW1lIEZ1
bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPihhZG9wdFJlZihuZXcg
Qm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT4sIHR5cGVuYW1l
IEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlIChCVUlMRF9MSVNUKFAs
IG51bWJlck9mUGFyYW1ldGVycywgQ09OQ0FUKSk+KEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5
cGU+KGZ1bmN0aW9uKSBCVUlMRF9MSVNUX1dJVEhfTEVBRElOR19DT01NQShwLCBudW1iZXJPZlBh
cmFtZXRlcnMsIENPTkNBVCkpKSk7IFwKKyAgICB9IFwKKworQklORF9CVUlMREVSKDApCitCSU5E
X0JVSUxERVIoMSkKK0JJTkRfQlVJTERFUigyKQorQklORF9CVUlMREVSKDMpCitCSU5EX0JVSUxE
RVIoNCkKK0JJTkRfQlVJTERFUig1KQorQklORF9CVUlMREVSKDYpCiAKLXRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywg
dHlwZW5hbWUgQTQ+Ci1GdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25U
eXBlPjo6UmVzdWx0VHlwZSAoKT4gYmluZChGdW5jdGlvblR5cGUgZnVuY3Rpb24sIGNvbnN0IEEx
JiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBhNCkKLXsKLSAgICBy
ZXR1cm4gRnVuY3Rpb248dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJl
c3VsdFR5cGUgKCk+KGFkb3B0UmVmKG5ldyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5jdGlvbldyYXBw
ZXI8RnVuY3Rpb25UeXBlPiwgdHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46
OlJlc3VsdFR5cGUgKEExLCBBMiwgQTMsIEE0KT4oRnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlw
ZT4oZnVuY3Rpb24pLCBhMSwgYTIsIGEzLCBhNCkpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBl
bmFtZSBBNCwgdHlwZW5hbWUgQTU+Ci1GdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8
RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoKT4gYmluZChGdW5jdGlvblR5cGUgZnVuY3Rpb24s
IGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBhNCwg
Y29uc3QgQTUmIGE1KQotewotICAgIHJldHVybiBGdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldy
YXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVu
Y3Rpb25JbXBsPEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlv
bldyYXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoQTEsIEEyLCBBMywgQTQsIEE1KT4o
RnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT4oZnVuY3Rpb24pLCBhMSwgYTIsIGEzLCBhNCwg
YTUpKSk7Ci19CisjdW5kZWYgQklORF9CVUlMREVSCiAKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>