<?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>33182</bug_id>
          
          <creation_ts>2010-01-04 15:10:06 -0800</creation_ts>
          <short_desc>[V8] Move security checks for setting src to javascript url out of V8Custom</short_desc>
          <delta_ts>2010-01-05 11:06:39 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32638</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>176900</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-01-04 15:10:06 -0800</bug_when>
    <thetext>Ideally, these security checks would be in some common part of the custom bindings that all descendants of V8Element had access to.  Unfortunately, there doesn&apos;t seem to be such a place, and V8AttrCustom.cpp needs to have access to these checks as well.  Therefore, these should probably go in V8BindingSecurity (which will need to be expanded to something more than a typedef).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176926</commentid>
    <comment_count>1</comment_count>
      <attachid>45842</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-01-04 15:51:03 -0800</bug_when>
    <thetext>Created attachment 45842
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176929</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-04 15:52:55 -0800</bug_when>
    <thetext>Attachment 45842 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/ChangeLog:7:  Line contains tab character.  [whitespace/tab] [5]
WebCore/bindings/v8/V8BindingSecurity.h:68:  Could not find a newline character at the end of the file.  [whitespace/ending_newline] [5]
Total errors found: 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176933</commentid>
    <comment_count>3</comment_count>
      <attachid>45843</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-01-04 15:58:47 -0800</bug_when>
    <thetext>Created attachment 45843
patch minus style errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176935</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-04 16:03:22 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45843 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176961</commentid>
    <comment_count>5</comment_count>
      <attachid>45843</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-04 17:27:28 -0800</bug_when>
    <thetext>Comment on attachment 45843
patch minus style errors

Sorry, I think i steered you slightly wrong here.  This code can go in the generic BindingSecurity object since it&apos;s not dependent on V8:

http://trac.webkit.org/browser/trunk/WebCore/bindings/BindingSecurity.h

That way the code will be shared with JSC eventually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176996</commentid>
    <comment_count>6</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-01-04 19:15:34 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 45843 [details])
&gt; Sorry, I think i steered you slightly wrong here.  This code can go in the
&gt; generic BindingSecurity object since it&apos;s not dependent on V8:
&gt; 
&gt; http://trac.webkit.org/browser/trunk/WebCore/bindings/BindingSecurity.h
&gt; 
&gt; That way the code will be shared with JSC eventually.

That&apos;ll require a State&lt;Binding&gt; parameter then, right?  Is that ok?  I don&apos;t have a great idea of how the State is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177209</commentid>
    <comment_count>7</comment_count>
      <attachid>45902</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-01-05 10:16:33 -0800</bug_when>
    <thetext>Created attachment 45902
Functions are now in BindingSecurity.h.

I&apos;m not sure whether these functions belong in BindingSecurity.h or whether we should add BindingSecurity.cpp, so I defaulted to not adding a new file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177212</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-05 10:17:26 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45902 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177246</commentid>
    <comment_count>9</comment_count>
      <attachid>45902</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-05 11:01:26 -0800</bug_when>
    <thetext>Comment on attachment 45902
Functions are now in BindingSecurity.h.

This looks great.  Unfortunately, these functions need to be in the header because of the template parameter.

I&apos;m about to land a change that moves this file, so we&apos;re going to conflict.  I can land this if you&apos;d rather not deal with the merge conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177253</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-05 11:06:39 -0800</bug_when>
    <thetext>Committed r52812: &lt;http://trac.webkit.org/changeset/52812&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45842</attachid>
            <date>2010-01-04 15:51:03 -0800</date>
            <delta_ts>2010-01-04 15:58:47 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>14852</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTI3NjUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMTAtMDEtMDQgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgI2luY2x1ZGUgZm9yIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzE4Mi4KKworICAgICAgICAqIHNyYy9XZWJCaW5kaW5n
cy5jcHA6CisKIDIwMTAtMDEtMDMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQmluZGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
QmluZGluZ3MuY3BwCShyZXZpc2lvbiA1Mjc2MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
QmluZGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAi
TW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5QVjhPYmplY3QuaCIgIC8vIGZvciBQcml2YXRlSWRl
bnRpZmllcgogI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nU2VjdXJpdHku
aCIKICNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5o
IgogI2luY2x1ZGUgIlY4SGVscGVycy5oIgpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyNzY1KQorKysgV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wMS0wNCAgTmF0
ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgYWxsb3dTZXR0aW5ne0ZyYW1lfVNyY1RvSmF2
YXNjcmlwdFVybCBmcm9tIFY4Q3VzdG9tIHRvIFY4QmluZGluZ1NlY3VyaXR5LgorCisJaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTgyCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9T
Y3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmdTZWN1cml0eS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlY4QmluZGluZ1NlY3VyaXR5OjphbGxvd1NldHRpbmdGcmFtZVNyY1RvSmF2
YXNjcmlwdFVybCk6IE1vdmVkIGZyb20gVjhDdXN0b21CaW5kaW5nLmNwcAorICAgICAgICAoV2Vi
Q29yZTo6VjhCaW5kaW5nU2VjdXJpdHk6OmFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTCk6
IE1vdmVkIGZyb20gVjhDdXN0b21CaW5kaW5nLmNwcAorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOEF0dHJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhBdHRyOjp2YWx1ZUFj
Y2Vzc29yU2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5k
aW5nLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmg6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4RWxlbWVudDo6c2V0QXR0cmlidXRlQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VjhFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VjhFbGVtZW50OjpzZXRBdHRyaWJ1dGVOU0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4RWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZU5TQ2FsbGJhY2spOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhIVE1MRnJhbWVFbGVtZW50OjpzcmNBY2Nlc3NvclNldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpWOEhUTUxGcmFtZUVsZW1lbnQ6OmxvY2F0aW9uQWNjZXNzb3JTZXR0ZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTElGcmFtZUVsZW1lbnQ6OnNyY0FjY2Vzc29yU2V0
dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHA6
CisKIDIwMTAtMDEtMDQgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBXaW5kb3dzIGJ1aWxkIGZpeApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCShyZXZpc2lvbiA1Mjc2MykKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkKQEAgLTEzNzksNiArMTM3OSw3
IEBACiAgICAgICAgICAiI2luY2x1ZGUgXCJjb25maWcuaFwiXG4iIC4KICAgICAgICAgICIjaW5j
bHVkZSBcIlY4UHJveHkuaFwiXG4iIC4KICAgICAgICAgICIjaW5jbHVkZSBcIlY4QmluZGluZy5o
XCJcbiIgLgorICAgICAgICAgIiNpbmNsdWRlIFwiVjhCaW5kaW5nU2VjdXJpdHkuaFwiXG5cbiIg
LgogICAgICAgICAgIiNpbmNsdWRlIFwiVjhCaW5kaW5nU3RhdGUuaFwiXG5cbiIgLgogICAgICAg
ICAgIiN1bmRlZiBMT0dcblxuIik7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nU2VjdXJpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Z1NlY3VyaXR5LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Z1NlY3VyaXR5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8qCisqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiAKKyogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyogbWV0OgorKiAKKyogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiBkaXN0cmlidXRpb24uCisqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyogCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyovCisKKyNpZm5kZWYgVjhCaW5kaW5nU2VjdXJpdHlfaAorI2RlZmluZSBWOEJp
bmRpbmdTZWN1cml0eV9oCisKKyNpbmNsdWRlICJCaW5kaW5nU2VjdXJpdHkuaCIKKyNpbmNsdWRl
ICJDU1NIZWxwZXIuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEZyYW1l
RWxlbWVudEJhc2UuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRp
bmdTdGF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFY4QmluZGluZ1NlY3Vy
aXR5IDogcHVibGljIEJpbmRpbmdTZWN1cml0eTxWOEJpbmRpbmc+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgYm9vbCBhbGxvd1NldHRpbmdGcmFtZVNyY1RvSmF2YXNjcmlwdFVybChIVE1MRnJhbWVF
bGVtZW50QmFzZSogZnJhbWUsIFN0cmluZyB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChwcm90
b2NvbElzSmF2YVNjcmlwdChkZXByZWNhdGVkUGFyc2VVUkwodmFsdWUpKSkgeworICAgICAgICAg
ICAgTm9kZSogY29udGVudERvYyA9IGZyYW1lLT5jb250ZW50RG9jdW1lbnQoKTsKKyAgICAgICAg
ICAgIGlmIChjb250ZW50RG9jICYmICFjaGVja05vZGVTZWN1cml0eShWOEJpbmRpbmdTdGF0ZTo6
T25seSgpLCBjb250ZW50RG9jKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgYWxs
b3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0VVJMKEVsZW1lbnQqIGVsZW1lbnQsIFN0cmluZyBuYW1l
LCBTdHJpbmcgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoKGVsZW1lbnQtPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjppZnJhbWVUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpm
cmFtZVRhZykpICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJzcmMiKSkKKyAgICAgICAgICAg
IHJldHVybiBhbGxvd1NldHRpbmdGcmFtZVNyY1RvSmF2YXNjcmlwdFVybChzdGF0aWNfY2FzdDxI
VE1MRnJhbWVFbGVtZW50QmFzZSo+KGVsZW1lbnQpLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICB+VjhCaW5kaW5nU2VjdXJpdHkoKTsKK307CisK
K30KKworI2VuZGlmIC8vIFY4QmluZGluZ1NlY3VyaXR5X2gKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDUyNzYzKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIlNjcmlwdFN0YXRl
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNs
dWRlICJWOEJpbmRpbmdTZWN1cml0eS5oIgogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCiAj
aW5jbHVkZSAiVjhJc29sYXRlZFdvcmxkLmgiCiAjaW5jbHVkZSAiVjhOUE9iamVjdC5oIgpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZUVs
ZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1Mjc2MykKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nU2Vj
dXJpdHkuaCIKICNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5
LmgiCiAKQEAgLTQ2LDcgKzQ3LDcgQEAKICAgICBIVE1MRnJhbWVFbGVtZW50KiBmcmFtZSA9IFY4
RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8SFRNTEZyYW1lRWxlbWVudD4oaW5m
by5Ib2xkZXIoKSk7CiAgICAgU3RyaW5nIHNyY1ZhbHVlID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51
bGxDaGVjayh2YWx1ZSk7CiAKLSAgICBpZiAoIWFsbG93U2V0dGluZ0ZyYW1lU3JjVG9KYXZhc2Ny
aXB0VXJsKGZyYW1lLCBzcmNWYWx1ZSkpCisgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6YWxs
b3dTZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoZnJhbWUsIHNyY1ZhbHVlKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgZnJhbWUtPnNldEF0dHJpYnV0ZShzcmNBdHRyLCBzcmNWYWx1ZSk7
IApAQCAtNTcsNyArNTgsNyBAQAogICAgIEhUTUxGcmFtZUVsZW1lbnQqIGZyYW1lID0gVjhET01X
cmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxIVE1MRnJhbWVFbGVtZW50PihpbmZvLkhv
bGRlcigpKTsKICAgICBTdHJpbmcgbG9jYXRpb25WYWx1ZSA9IHRvV2ViQ29yZVN0cmluZ1dpdGhO
dWxsQ2hlY2sodmFsdWUpOwogCi0gICAgaWYgKCFhbGxvd1NldHRpbmdGcmFtZVNyY1RvSmF2YXNj
cmlwdFVybChmcmFtZSwgbG9jYXRpb25WYWx1ZSkpCisgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0
eTo6YWxsb3dTZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoZnJhbWUsIGxvY2F0aW9uVmFs
dWUpKQogICAgICAgICByZXR1cm47CiAKICAgICBmcmFtZS0+c2V0TG9jYXRpb24obG9jYXRpb25W
YWx1ZSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5k
b3dDdXN0b20uY3BwCShyZXZpc2lvbiA1Mjc2MykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNp
bmNsdWRlICJWOEJpbmRpbmdTZWN1cml0eS5oIgogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgi
CiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21FdmVudExp
c3RlbmVyLmgiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJp
bmRpbmcuaAkocmV2aXNpb24gNTI3NjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsOSArNzgsNiBAQAogICAgIGNs
YXNzIFN0cmluZzsKICAgICBjbGFzcyBWOFByb3h5OwogCi0gICAgYm9vbCBhbGxvd1NldHRpbmdG
cmFtZVNyY1RvSmF2YXNjcmlwdFVybChIVE1MRnJhbWVFbGVtZW50QmFzZSosIFN0cmluZyB2YWx1
ZSk7Ci0gICAgYm9vbCBhbGxvd1NldHRpbmdTcmNUb0phdmFzY3JpcHRVUkwoRWxlbWVudCosIFN0
cmluZyBuYW1lLCBTdHJpbmcgdmFsdWUpOwotCiAgICAgY2xhc3MgVjhDdXN0b20gewogICAgIHB1
YmxpYzoKICAgICAgICAgLy8gQ29uc3RhbnRzLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1Mjc2MykKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDYgKzQyLDcgQEAKIAogI2luY2x1ZGUgIlY4QXR0ci5oIgogI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ1NlY3VyaXR5LmgiCiAjaW5jbHVkZSAiVjhDdXN0
b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCkBAIC01Niw3ICs1Nyw3IEBACiAg
ICAgU3RyaW5nIG5hbWUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CiAgICAgU3RyaW5nIHZh
bHVlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMV0pOwogCi0gICAgaWYgKCFhbGxvd1NldHRpbmdT
cmNUb0phdmFzY3JpcHRVUkwoZWxlbWVudCwgbmFtZSwgdmFsdWUpKQorICAgIGlmICghVjhCaW5k
aW5nU2VjdXJpdHk6OmFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChlbGVtZW50LCBuYW1l
LCB2YWx1ZSkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKQEAgLTc2LDcgKzc3LDcgQEAKICAgICBBdHRyKiBuZXdBdHRyID0gVjhE
T01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxBdHRyPih2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KGFyZ3NbMF0pKTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gVjhET01XcmFw
cGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxFbGVtZW50PihhcmdzLkhvbGRlcigpKTsKIAot
ICAgIGlmICghYWxsb3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0VVJMKGVsZW1lbnQsIG5ld0F0dHIt
Pm5hbWUoKSwgbmV3QXR0ci0+dmFsdWUoKSkpCisgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6
YWxsb3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0VVJMKGVsZW1lbnQsIG5ld0F0dHItPm5hbWUoKSwg
bmV3QXR0ci0+dmFsdWUoKSkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTk1LDcgKzk2LDcgQEAKICAgICBTdHJpbmcgcXVh
bGlmaWVkTmFtZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzFdKTsKICAgICBTdHJpbmcgdmFsdWUg
PSB0b1dlYkNvcmVTdHJpbmcoYXJnc1syXSk7CiAKLSAgICBpZiAoIWFsbG93U2V0dGluZ1NyY1Rv
SmF2YXNjcmlwdFVSTChlbGVtZW50LCBxdWFsaWZpZWROYW1lLCB2YWx1ZSkpCisgICAgaWYgKCFW
OEJpbmRpbmdTZWN1cml0eTo6YWxsb3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0VVJMKGVsZW1lbnQs
IHF1YWxpZmllZE5hbWUsIHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
IAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMTE1LDcgKzExNiw3IEBACiAgICAgQXR0
ciogbmV3QXR0ciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8QXR0cj4o
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSk7CiAgICAgRWxlbWVudCogZWxl
bWVudCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8RWxlbWVudD4oYXJn
cy5Ib2xkZXIoKSk7CiAKLSAgICBpZiAoIWFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChl
bGVtZW50LCBuZXdBdHRyLT5uYW1lKCksIG5ld0F0dHItPnZhbHVlKCkpKQorICAgIGlmICghVjhC
aW5kaW5nU2VjdXJpdHk6OmFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChlbGVtZW50LCBu
ZXdBdHRyLT5uYW1lKCksIG5ld0F0dHItPnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNTI3
NjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5o
IgorI2luY2x1ZGUgIlY4QmluZGluZ1NlY3VyaXR5LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nU3Rh
dGUuaCIKICNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEN1c3RvbUV2
ZW50TGlzdGVuZXIuaCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9t
QmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21CaW5kaW5nLmNwcAkocmV2aXNpb24gNTI3NjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVudEJhc2UuaCIKICNpbmNsdWRlICJMb2NhdGlv
bi5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ1NlY3VyaXR5
LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAK
QEAgLTQ5LDIzICs1MCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBhbGxvd1Nl
dHRpbmdGcmFtZVNyY1RvSmF2YXNjcmlwdFVybChIVE1MRnJhbWVFbGVtZW50QmFzZSogZnJhbWUs
IFN0cmluZyB2YWx1ZSkKLXsKLSAgICBpZiAocHJvdG9jb2xJcyhkZXByZWNhdGVkUGFyc2VVUkwo
dmFsdWUpLCAiamF2YXNjcmlwdCIpKSB7Ci0gICAgICAgIE5vZGUqIGNvbnRlbnREb2MgPSBmcmFt
ZS0+Y29udGVudERvY3VtZW50KCk7Ci0gICAgICAgIGlmIChjb250ZW50RG9jICYmICFWOEJpbmRp
bmdTZWN1cml0eTo6Y2hlY2tOb2RlU2VjdXJpdHkoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgY29u
dGVudERvYykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0
cnVlOwotfQotCi1ib29sIGFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChFbGVtZW50KiBl
bGVtZW50LCBTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKQotewotICAgIGlmICgoZWxlbWVudC0+
aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlmcmFtZVRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6OmZyYW1lVGFnKSkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNyYyIpKQot
ICAgICAgICByZXR1cm4gYWxsb3dTZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoc3RhdGlj
X2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihlbGVtZW50KSwgdmFsdWUpOwotICAgIHJldHVy
biB0cnVlOwotfQotCiAvLyAtLS0tLS0tLS0tLS0tLS0gU2VjdXJpdHkgQ2hlY2tzIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIElOREVYRURfQUNDRVNTX0NIRUNLKEhpc3RvcnkpCiB7CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF0dHJDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXR0ckN1c3RvbS5jcHAJKHJldmlzaW9u
IDUyNzYzKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdHRyQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVk
ZSAiVjhCaW5kaW5nU2VjdXJpdHkuaCIKICNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNp
bmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTQ2LDcgKzQ3LDcgQEAKICAgICBTdHJpbmcgYXR0clZh
bHVlID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayh2YWx1ZSk7CiAgICAgRWxlbWVudCog
b3duZXJFbGVtZW50ID0gaW1wLT5vd25lckVsZW1lbnQoKTsKIAotICAgIGlmIChvd25lckVsZW1l
bnQgJiYgIWFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChvd25lckVsZW1lbnQsIGltcC0+
bmFtZSgpLCBhdHRyVmFsdWUpKQorICAgIGlmIChvd25lckVsZW1lbnQgJiYgIVY4QmluZGluZ1Nl
Y3VyaXR5OjphbGxvd1NldHRpbmdTcmNUb0phdmFzY3JpcHRVUkwob3duZXJFbGVtZW50LCBpbXAt
Pm5hbWUoKSwgYXR0clZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJRnJhbWVF
bGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNTI3NjMpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2lu
Y2x1ZGUgIlY4QmluZGluZ1NlY3VyaXR5LmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCkBAIC00Niw3ICs0Nyw3IEBACiAgICAgSFRNTElGcmFt
ZUVsZW1lbnQqIGlmcmFtZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8
SFRNTElGcmFtZUVsZW1lbnQ+KGluZm8uSG9sZGVyKCkpOwogICAgIFN0cmluZyB2ID0gdG9XZWJD
b3JlU3RyaW5nV2l0aE51bGxDaGVjayh2YWx1ZSk7CiAKLSAgICBpZiAoIWFsbG93U2V0dGluZ0Zy
YW1lU3JjVG9KYXZhc2NyaXB0VXJsKGlmcmFtZSwgdikpCisgICAgaWYgKCFWOEJpbmRpbmdTZWN1
cml0eTo6YWxsb3dTZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoaWZyYW1lLCB2KSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWZyYW1lLT5zZXRBdHRyaWJ1dGUoc3JjQXR0ciwgdik7IApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCShyZXZpc2lvbiA1Mjc2MykKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAK
IAogICAgIC8vIEluc3RhbnRpYXRlIGJpbmRpbmcgdGVtcGxhdGUgY2xhc3NlcyBmb3IgVjguCiAg
ICAgY2xhc3MgVjhCaW5kaW5nIHt9OwotICAgIHR5cGVkZWYgQmluZGluZ1NlY3VyaXR5PFY4Qmlu
ZGluZz4gVjhCaW5kaW5nU2VjdXJpdHk7CiAgICAgCiAgICAgLy8gQSBoZWxwZXIgZnVuY3Rpb24g
ZXh0cmFjdCBuYXRpdmUgb2JqZWN0IHBvaW50ZXIgZnJvbSBhIERPTSB3cmFwcGVyCiAgICAgLy8g
YW5kIGNhc3QgdG8gdGhlIHNwZWNpZmllZCB0eXBlLgo=
</data>
<flag name="commit-queue"
          id="27984"
          type_id="3"
          status="-"
          setter="japhet"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45843</attachid>
            <date>2010-01-04 15:58:47 -0800</date>
            <delta_ts>2010-01-05 10:16:33 -0800</delta_ts>
            <desc>patch minus style errors</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>14831</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTI3NjUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMTAtMDEtMDQgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgI2luY2x1ZGUgZm9yIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzE4Mi4KKworICAgICAgICAqIHNyYy9XZWJCaW5kaW5n
cy5jcHA6CisKIDIwMTAtMDEtMDMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQmluZGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
QmluZGluZ3MuY3BwCShyZXZpc2lvbiA1Mjc2MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
QmluZGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAi
TW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5QVjhPYmplY3QuaCIgIC8vIGZvciBQcml2YXRlSWRl
bnRpZmllcgogI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nU2VjdXJpdHku
aCIKICNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5o
IgogI2luY2x1ZGUgIlY4SGVscGVycy5oIgpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyNzY1KQorKysgV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wMS0wNCAgTmF0
ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgYWxsb3dTZXR0aW5ne0ZyYW1lfVNyY1RvSmF2
YXNjcmlwdFVybCBmcm9tIFY4Q3VzdG9tIHRvIFY4QmluZGluZ1NlY3VyaXR5LgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzE4MgorCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nU2VjdXJpdHkuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdTZWN1cml0eTo6YWxsb3dTZXR0aW5nRnJhbWVT
cmNUb0phdmFzY3JpcHRVcmwpOiBNb3ZlZCBmcm9tIFY4Q3VzdG9tQmluZGluZy5jcHAKKyAgICAg
ICAgKFdlYkNvcmU6OlY4QmluZGluZ1NlY3VyaXR5OjphbGxvd1NldHRpbmdTcmNUb0phdmFzY3Jp
cHRVUkwpOiBNb3ZlZCBmcm9tIFY4Q3VzdG9tQmluZGluZy5jcHAKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhBdHRyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4QXR0cjo6
dmFsdWVBY2Nlc3NvclNldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tQmluZGluZy5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmlu
ZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RWxlbWVudDo6c2V0QXR0cmlidXRlTlNDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpWOEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGVOU0NhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4SFRNTEZyYW1lRWxlbWVudDo6c3JjQWNjZXNzb3JTZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRnJhbWVFbGVtZW50Ojpsb2NhdGlvbkFjY2Vzc29yU2V0
dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSUZyYW1lRWxlbWVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxJRnJhbWVFbGVtZW50OjpzcmNBY2Nl
c3NvclNldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0
b20uY3BwOgorCiAyMDEwLTAxLTA0ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2luZG93cyBidWlsZCBmaXgKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gNTI3NjMpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xMzc5LDYg
KzEzNzksNyBAQAogICAgICAgICAgIiNpbmNsdWRlIFwiY29uZmlnLmhcIlxuIiAuCiAgICAgICAg
ICAiI2luY2x1ZGUgXCJWOFByb3h5LmhcIlxuIiAuCiAgICAgICAgICAiI2luY2x1ZGUgXCJWOEJp
bmRpbmcuaFwiXG4iIC4KKyAgICAgICAgICIjaW5jbHVkZSBcIlY4QmluZGluZ1NlY3VyaXR5Lmhc
IlxuXG4iIC4KICAgICAgICAgICIjaW5jbHVkZSBcIlY4QmluZGluZ1N0YXRlLmhcIlxuXG4iIC4K
ICAgICAgICAgICIjdW5kZWYgTE9HXG5cbiIpOwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZ1NlY3VyaXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmdTZWN1cml0eS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmdTZWN1cml0eS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisvKgorKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogCisq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoKKyogCisqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogZGlzdHJpYnV0aW9uLgor
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisqIAorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIFY4QmluZGluZ1NlY3VyaXR5X2gKKyNkZWZp
bmUgVjhCaW5kaW5nU2VjdXJpdHlfaAorCisjaW5jbHVkZSAiQmluZGluZ1NlY3VyaXR5LmgiCisj
aW5jbHVkZSAiQ1NTSGVscGVyLmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxGcmFtZUVsZW1lbnRCYXNlLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAi
VjhCaW5kaW5nU3RhdGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWOEJpbmRp
bmdTZWN1cml0eSA6IHB1YmxpYyBCaW5kaW5nU2VjdXJpdHk8VjhCaW5kaW5nPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIGJvb2wgYWxsb3dTZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoSFRN
TEZyYW1lRWxlbWVudEJhc2UqIGZyYW1lLCBTdHJpbmcgdmFsdWUpCisgICAgeworICAgICAgICBp
ZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoZGVwcmVjYXRlZFBhcnNlVVJMKHZhbHVlKSkpIHsKKyAg
ICAgICAgICAgIE5vZGUqIGNvbnRlbnREb2MgPSBmcmFtZS0+Y29udGVudERvY3VtZW50KCk7Cisg
ICAgICAgICAgICBpZiAoY29udGVudERvYyAmJiAhY2hlY2tOb2RlU2VjdXJpdHkoVjhCaW5kaW5n
U3RhdGU6Ok9ubHkoKSwgY29udGVudERvYykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBi
b29sIGFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChFbGVtZW50KiBlbGVtZW50LCBTdHJp
bmcgbmFtZSwgU3RyaW5nIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKChlbGVtZW50LT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6ZnJhbWVUYWcpKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic3JjIikpCisgICAg
ICAgICAgICByZXR1cm4gYWxsb3dTZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoc3RhdGlj
X2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihlbGVtZW50KSwgdmFsdWUpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgflY4QmluZGluZ1NlY3VyaXR5KCk7
Cit9OworCit9CisKKyNlbmRpZiAvLyBWOEJpbmRpbmdTZWN1cml0eV9oCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDUyNzYzKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdTZWN1cml0
eS5oIgogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhJc29sYXRlZFdv
cmxkLmgiCiAjaW5jbHVkZSAiVjhOUE9iamVjdC5oIgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCShyZXZp
c2lvbiA1Mjc2MykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lRWxl
bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJIVE1MRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
VjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nU2VjdXJpdHkuaCIKICNpbmNsdWRlICJW
OEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTQ2LDcgKzQ3LDcg
QEAKICAgICBIVE1MRnJhbWVFbGVtZW50KiBmcmFtZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERP
TVdyYXBwZXJUb05vZGU8SFRNTEZyYW1lRWxlbWVudD4oaW5mby5Ib2xkZXIoKSk7CiAgICAgU3Ry
aW5nIHNyY1ZhbHVlID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayh2YWx1ZSk7CiAKLSAg
ICBpZiAoIWFsbG93U2V0dGluZ0ZyYW1lU3JjVG9KYXZhc2NyaXB0VXJsKGZyYW1lLCBzcmNWYWx1
ZSkpCisgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6YWxsb3dTZXR0aW5nRnJhbWVTcmNUb0ph
dmFzY3JpcHRVcmwoZnJhbWUsIHNyY1ZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZnJh
bWUtPnNldEF0dHJpYnV0ZShzcmNBdHRyLCBzcmNWYWx1ZSk7IApAQCAtNTcsNyArNTgsNyBAQAog
ICAgIEhUTUxGcmFtZUVsZW1lbnQqIGZyYW1lID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3Jh
cHBlclRvTm9kZTxIVE1MRnJhbWVFbGVtZW50PihpbmZvLkhvbGRlcigpKTsKICAgICBTdHJpbmcg
bG9jYXRpb25WYWx1ZSA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sodmFsdWUpOwogCi0g
ICAgaWYgKCFhbGxvd1NldHRpbmdGcmFtZVNyY1RvSmF2YXNjcmlwdFVybChmcmFtZSwgbG9jYXRp
b25WYWx1ZSkpCisgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6YWxsb3dTZXR0aW5nRnJhbWVT
cmNUb0phdmFzY3JpcHRVcmwoZnJhbWUsIGxvY2F0aW9uVmFsdWUpKQogICAgICAgICByZXR1cm47
CiAKICAgICBmcmFtZS0+c2V0TG9jYXRpb24obG9jYXRpb25WYWx1ZSk7CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lv
biA1Mjc2MykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlY4RE9NV2lu
ZG93LmgiCiAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdTZWN1
cml0eS5oIgogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21C
aW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21FdmVudExpc3RlbmVyLmgiCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAkocmV2aXNpb24gNTI3
NjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAkod29y
a2luZyBjb3B5KQpAQCAtNzgsOSArNzgsNiBAQAogICAgIGNsYXNzIFN0cmluZzsKICAgICBjbGFz
cyBWOFByb3h5OwogCi0gICAgYm9vbCBhbGxvd1NldHRpbmdGcmFtZVNyY1RvSmF2YXNjcmlwdFVy
bChIVE1MRnJhbWVFbGVtZW50QmFzZSosIFN0cmluZyB2YWx1ZSk7Ci0gICAgYm9vbCBhbGxvd1Nl
dHRpbmdTcmNUb0phdmFzY3JpcHRVUkwoRWxlbWVudCosIFN0cmluZyBuYW1lLCBTdHJpbmcgdmFs
dWUpOwotCiAgICAgY2xhc3MgVjhDdXN0b20gewogICAgIHB1YmxpYzoKICAgICAgICAgLy8gQ29u
c3RhbnRzLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFbGVtZW50Q3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVsZW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiA1Mjc2MykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKIAog
I2luY2x1ZGUgIlY4QXR0ci5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4
QmluZGluZ1NlY3VyaXR5LmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiVjhQcm94eS5oIgogCkBAIC01Niw3ICs1Nyw3IEBACiAgICAgU3RyaW5nIG5hbWUgPSB0b1dl
YkNvcmVTdHJpbmcoYXJnc1swXSk7CiAgICAgU3RyaW5nIHZhbHVlID0gdG9XZWJDb3JlU3RyaW5n
KGFyZ3NbMV0pOwogCi0gICAgaWYgKCFhbGxvd1NldHRpbmdTcmNUb0phdmFzY3JpcHRVUkwoZWxl
bWVudCwgbmFtZSwgdmFsdWUpKQorICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmFsbG93U2V0
dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChlbGVtZW50LCBuYW1lLCB2YWx1ZSkpCiAgICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTc2
LDcgKzc3LDcgQEAKICAgICBBdHRyKiBuZXdBdHRyID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9N
V3JhcHBlclRvTm9kZTxBdHRyPih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0p
KTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBl
clRvTm9kZTxFbGVtZW50PihhcmdzLkhvbGRlcigpKTsKIAotICAgIGlmICghYWxsb3dTZXR0aW5n
U3JjVG9KYXZhc2NyaXB0VVJMKGVsZW1lbnQsIG5ld0F0dHItPm5hbWUoKSwgbmV3QXR0ci0+dmFs
dWUoKSkpCisgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6YWxsb3dTZXR0aW5nU3JjVG9KYXZh
c2NyaXB0VVJMKGVsZW1lbnQsIG5ld0F0dHItPm5hbWUoKSwgbmV3QXR0ci0+dmFsdWUoKSkpCiAg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKQEAgLTk1LDcgKzk2LDcgQEAKICAgICBTdHJpbmcgcXVhbGlmaWVkTmFtZSA9IHRvV2ViQ29y
ZVN0cmluZyhhcmdzWzFdKTsKICAgICBTdHJpbmcgdmFsdWUgPSB0b1dlYkNvcmVTdHJpbmcoYXJn
c1syXSk7CiAKLSAgICBpZiAoIWFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChlbGVtZW50
LCBxdWFsaWZpZWROYW1lLCB2YWx1ZSkpCisgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6YWxs
b3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0VVJMKGVsZW1lbnQsIHF1YWxpZmllZE5hbWUsIHZhbHVl
KSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwpAQCAtMTE1LDcgKzExNiw3IEBACiAgICAgQXR0ciogbmV3QXR0ciA9IFY4RE9NV3Jh
cHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8QXR0cj4odjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChhcmdzWzBdKSk7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IFY4RE9NV3JhcHBlcjo6
Y29udmVydERPTVdyYXBwZXJUb05vZGU8RWxlbWVudD4oYXJncy5Ib2xkZXIoKSk7CiAKLSAgICBp
ZiAoIWFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChlbGVtZW50LCBuZXdBdHRyLT5uYW1l
KCksIG5ld0F0dHItPnZhbHVlKCkpKQorICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmFsbG93
U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChlbGVtZW50LCBuZXdBdHRyLT5uYW1lKCksIG5ld0F0
dHItPnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExv
Y2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOExvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNTI3NjMpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NiArNDAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGlu
Z1NlY3VyaXR5LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKICNpbmNsdWRlICJWOEN1
c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEN1c3RvbUV2ZW50TGlzdGVuZXIuaCIKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmNwcAkocmV2
aXNpb24gNTI3NjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSFRNTEZy
YW1lRWxlbWVudEJhc2UuaCIKICNpbmNsdWRlICJMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ1NlY3VyaXR5LmgiCiAjaW5jbHVkZSAiVjhCaW5k
aW5nU3RhdGUuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTQ5LDIzICs1MCw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBhbGxvd1NldHRpbmdGcmFtZVNyY1RvSmF2YXNj
cmlwdFVybChIVE1MRnJhbWVFbGVtZW50QmFzZSogZnJhbWUsIFN0cmluZyB2YWx1ZSkKLXsKLSAg
ICBpZiAocHJvdG9jb2xJcyhkZXByZWNhdGVkUGFyc2VVUkwodmFsdWUpLCAiamF2YXNjcmlwdCIp
KSB7Ci0gICAgICAgIE5vZGUqIGNvbnRlbnREb2MgPSBmcmFtZS0+Y29udGVudERvY3VtZW50KCk7
Ci0gICAgICAgIGlmIChjb250ZW50RG9jICYmICFWOEJpbmRpbmdTZWN1cml0eTo6Y2hlY2tOb2Rl
U2VjdXJpdHkoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgY29udGVudERvYykpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIGFsbG93
U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChFbGVtZW50KiBlbGVtZW50LCBTdHJpbmcgbmFtZSwg
U3RyaW5nIHZhbHVlKQotewotICAgIGlmICgoZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6
OmlmcmFtZVRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmZyYW1lVGFnKSkg
JiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNyYyIpKQotICAgICAgICByZXR1cm4gYWxsb3dT
ZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVu
dEJhc2UqPihlbGVtZW50KSwgdmFsdWUpOwotICAgIHJldHVybiB0cnVlOwotfQotCiAvLyAtLS0t
LS0tLS0tLS0tLS0gU2VjdXJpdHkgQ2hlY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIElO
REVYRURfQUNDRVNTX0NIRUNLKEhpc3RvcnkpCiB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEF0dHJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QXR0ckN1c3RvbS5jcHAJKHJldmlzaW9uIDUyNzYzKQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhBdHRyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nU2VjdXJpdHku
aCIKICNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAK
QEAgLTQ2LDcgKzQ3LDcgQEAKICAgICBTdHJpbmcgYXR0clZhbHVlID0gdG9XZWJDb3JlU3RyaW5n
V2l0aE51bGxDaGVjayh2YWx1ZSk7CiAgICAgRWxlbWVudCogb3duZXJFbGVtZW50ID0gaW1wLT5v
d25lckVsZW1lbnQoKTsKIAotICAgIGlmIChvd25lckVsZW1lbnQgJiYgIWFsbG93U2V0dGluZ1Ny
Y1RvSmF2YXNjcmlwdFVSTChvd25lckVsZW1lbnQsIGltcC0+bmFtZSgpLCBhdHRyVmFsdWUpKQor
ICAgIGlmIChvd25lckVsZW1lbnQgJiYgIVY4QmluZGluZ1NlY3VyaXR5OjphbGxvd1NldHRpbmdT
cmNUb0phdmFzY3JpcHRVUkwob3duZXJFbGVtZW50LCBpbXAtPm5hbWUoKSwgYXR0clZhbHVlKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJRnJhbWVFbGVtZW50
Q3VzdG9tLmNwcAkocmV2aXNpb24gNTI3NjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ1NlY3Vy
aXR5LmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5o
IgogCkBAIC00Niw3ICs0Nyw3IEBACiAgICAgSFRNTElGcmFtZUVsZW1lbnQqIGlmcmFtZSA9IFY4
RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8SFRNTElGcmFtZUVsZW1lbnQ+KGlu
Zm8uSG9sZGVyKCkpOwogICAgIFN0cmluZyB2ID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVj
ayh2YWx1ZSk7CiAKLSAgICBpZiAoIWFsbG93U2V0dGluZ0ZyYW1lU3JjVG9KYXZhc2NyaXB0VXJs
KGlmcmFtZSwgdikpCisgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6YWxsb3dTZXR0aW5nRnJh
bWVTcmNUb0phdmFzY3JpcHRVcmwoaWZyYW1lLCB2KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWZyYW1lLT5zZXRBdHRyaWJ1dGUoc3JjQXR0ciwgdik7IApJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEJpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZy5oCShyZXZpc2lvbiA1Mjc2MykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAKIAogICAgIC8vIEluc3RhbnRpYXRl
IGJpbmRpbmcgdGVtcGxhdGUgY2xhc3NlcyBmb3IgVjguCiAgICAgY2xhc3MgVjhCaW5kaW5nIHt9
OwotICAgIHR5cGVkZWYgQmluZGluZ1NlY3VyaXR5PFY4QmluZGluZz4gVjhCaW5kaW5nU2VjdXJp
dHk7CiAgICAgCiAgICAgLy8gQSBoZWxwZXIgZnVuY3Rpb24gZXh0cmFjdCBuYXRpdmUgb2JqZWN0
IHBvaW50ZXIgZnJvbSBhIERPTSB3cmFwcGVyCiAgICAgLy8gYW5kIGNhc3QgdG8gdGhlIHNwZWNp
ZmllZCB0eXBlLgo=
</data>
<flag name="review"
          id="27985"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="27986"
          type_id="3"
          status="-"
          setter="japhet"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45902</attachid>
            <date>2010-01-05 10:16:33 -0800</date>
            <delta_ts>2010-01-05 11:01:25 -0800</delta_ts>
            <desc>Functions are now in BindingSecurity.h.</desc>
            <filename>patch2.txt</filename>
            <type>text/plain</type>
            <size>10052</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MjgwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMDEtMDUgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
b3ZlIGFsbG93U2V0dGluZ3tGcmFtZX1TcmNUb0phdmFzY3JpcHRVcmwgZnJvbSBWOEN1c3RvbSB0
byBCaW5kaW5nU2VjdXJpdHkgYW5kCisgICAgICAgIHJlbW92ZSB0aGUgdjgtc3BlY2lmaWMgcGll
Y2VzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MzE4MgorCisgICAgICAgICogYmluZGluZ3MvQmluZGluZ1NlY3VyaXR5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjo6OmFsbG93U2V0dGluZ0ZyYW1lU3JjVG9KYXZhc2NyaXB0VXJsKTogTW92ZWQgZnJv
bSBWOEN1c3RvbUJpbmRpbmcuY3BwLgorICAgICAgICAoV2ViQ29yZTo6OjphbGxvd1NldHRpbmdT
cmNUb0phdmFzY3JpcHRVUkwpOiBNb3ZlZCBmcm9tIFY4Q3VzdG9tQmluZGluZy5jcHAuCisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXR0ckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOEF0dHI6OnZhbHVlQWNjZXNzb3JTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbUJpbmRpbmcuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhFbGVt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RWxlbWVudDo6c2V0QXR0cmlidXRl
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2Rl
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhFbGVtZW50OjpzZXRBdHRyaWJ1dGVOU0Nh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZU5T
Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZUVsZW1l
bnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRnJhbWVFbGVtZW50OjpzcmNB
Y2Nlc3NvclNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxGcmFtZUVsZW1lbnQ6Omxv
Y2F0aW9uQWNjZXNzb3JTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTElGcmFt
ZUVsZW1lbnQ6OnNyY0FjY2Vzc29yU2V0dGVyKToKKwogMjAxMC0wMS0wNSAgWW9uZyBMaSAgPHlv
bGlAcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9CaW5kaW5nU2VjdXJpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL0JpbmRpbmdTZWN1cml0eS5oCShyZXZpc2lvbiA1MjgwMSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvQmluZGluZ1NlY3VyaXR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDEwIEBA
CiAjZGVmaW5lIEJpbmRpbmdTZWN1cml0eV9oCiAKICNpbmNsdWRlICJCaW5kaW5nU2VjdXJpdHlC
YXNlLmgiCisjaW5jbHVkZSAiQ1NTSGVscGVyLmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkdlbmVyaWNCaW5kaW5nLmgiCisjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVudEJhc2Uu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MSw2ICs1NCw5IEBACiAgICAgLy8gY3Vy
cmVudCBzZWN1cml0eSBjb250ZXh0LgogICAgIHN0YXRpYyBib29sIGNoZWNrTm9kZVNlY3VyaXR5
KFN0YXRlPEJpbmRpbmc+KiwgTm9kZSogdGFyZ2V0KTsKIAorICAgIHN0YXRpYyBib29sIGFsbG93
U2V0dGluZ0ZyYW1lU3JjVG9KYXZhc2NyaXB0VXJsKFN0YXRlPEJpbmRpbmc+KiwgSFRNTEZyYW1l
RWxlbWVudEJhc2UqLCBTdHJpbmcgdmFsdWUpOworICAgIHN0YXRpYyBib29sIGFsbG93U2V0dGlu
Z1NyY1RvSmF2YXNjcmlwdFVSTChTdGF0ZTxCaW5kaW5nPiosIEVsZW1lbnQqLCBTdHJpbmcgbmFt
ZSwgU3RyaW5nIHZhbHVlKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBCaW5kaW5nU2VjdXJp
dHkoKSB7fQogICAgIH5CaW5kaW5nU2VjdXJpdHkoKTsKQEAgLTEwMiw2ICsxMDgsMjUgQEAKICAg
ICByZXR1cm4gY2FuQWNjZXNzRnJhbWUoc3RhdGUsIHRhcmdldCwgdHJ1ZSk7CiB9CiAKK3RlbXBs
YXRlIDxjbGFzcyBCaW5kaW5nPgorYm9vbCBCaW5kaW5nU2VjdXJpdHk8QmluZGluZz46OmFsbG93
U2V0dGluZ0ZyYW1lU3JjVG9KYXZhc2NyaXB0VXJsKFN0YXRlPEJpbmRpbmc+KiBzdGF0ZSwgSFRN
TEZyYW1lRWxlbWVudEJhc2UqIGZyYW1lLCBTdHJpbmcgdmFsdWUpCit7CisgICAgaWYgKHByb3Rv
Y29sSXNKYXZhU2NyaXB0KGRlcHJlY2F0ZWRQYXJzZVVSTCh2YWx1ZSkpKSB7CisgICAgICAgIE5v
ZGUqIGNvbnRlbnREb2MgPSBmcmFtZS0+Y29udGVudERvY3VtZW50KCk7CisgICAgICAgIGlmIChj
b250ZW50RG9jICYmICFjaGVja05vZGVTZWN1cml0eShzdGF0ZSwgY29udGVudERvYykpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCit0ZW1w
bGF0ZSA8Y2xhc3MgQmluZGluZz4KK2Jvb2wgQmluZGluZ1NlY3VyaXR5PEJpbmRpbmc+OjphbGxv
d1NldHRpbmdTcmNUb0phdmFzY3JpcHRVUkwoU3RhdGU8QmluZGluZz4qIHN0YXRlLCBFbGVtZW50
KiBlbGVtZW50LCBTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKQoreworICAgIGlmICgoZWxlbWVu
dC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlmcmFtZVRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFt
ZShIVE1MTmFtZXM6OmZyYW1lVGFnKSkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNyYyIp
KQorICAgICAgICByZXR1cm4gYWxsb3dTZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoc3Rh
dGUsIHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlKj4oZWxlbWVudCksIHZhbHVlKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQorCiAjZW5kaWYgLy8gQmluZGluZ1NlY3VyaXR5X2gK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lRWxlbWVudEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJh
bWVFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNTI4MDEpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGlu
Z1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94
eS5oIgogCkBAIC00Niw3ICs0Nyw3IEBACiAgICAgSFRNTEZyYW1lRWxlbWVudCogZnJhbWUgPSBW
OERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPEhUTUxGcmFtZUVsZW1lbnQ+KGlu
Zm8uSG9sZGVyKCkpOwogICAgIFN0cmluZyBzcmNWYWx1ZSA9IHRvV2ViQ29yZVN0cmluZ1dpdGhO
dWxsQ2hlY2sodmFsdWUpOwogCi0gICAgaWYgKCFhbGxvd1NldHRpbmdGcmFtZVNyY1RvSmF2YXNj
cmlwdFVybChmcmFtZSwgc3JjVmFsdWUpKQorICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmFs
bG93U2V0dGluZ0ZyYW1lU3JjVG9KYXZhc2NyaXB0VXJsKFY4QmluZGluZ1N0YXRlOjpPbmx5KCks
IGZyYW1lLCBzcmNWYWx1ZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZyYW1lLT5zZXRBdHRy
aWJ1dGUoc3JjQXR0ciwgc3JjVmFsdWUpOyAKQEAgLTU3LDcgKzU4LDcgQEAKICAgICBIVE1MRnJh
bWVFbGVtZW50KiBmcmFtZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8
SFRNTEZyYW1lRWxlbWVudD4oaW5mby5Ib2xkZXIoKSk7CiAgICAgU3RyaW5nIGxvY2F0aW9uVmFs
dWUgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKHZhbHVlKTsKIAotICAgIGlmICghYWxs
b3dTZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoZnJhbWUsIGxvY2F0aW9uVmFsdWUpKQor
ICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmFsbG93U2V0dGluZ0ZyYW1lU3JjVG9KYXZhc2Ny
aXB0VXJsKFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGZyYW1lLCBsb2NhdGlvblZhbHVlKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgZnJhbWUtPnNldExvY2F0aW9uKGxvY2F0aW9uVmFsdWUpOwpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgJKHJl
dmlzaW9uIDUyODAxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5k
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDkgKzc4LDYgQEAKICAgICBjbGFzcyBTdHJpbmc7
CiAgICAgY2xhc3MgVjhQcm94eTsKIAotICAgIGJvb2wgYWxsb3dTZXR0aW5nRnJhbWVTcmNUb0ph
dmFzY3JpcHRVcmwoSFRNTEZyYW1lRWxlbWVudEJhc2UqLCBTdHJpbmcgdmFsdWUpOwotICAgIGJv
b2wgYWxsb3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0VVJMKEVsZW1lbnQqLCBTdHJpbmcgbmFtZSwg
U3RyaW5nIHZhbHVlKTsKLQogICAgIGNsYXNzIFY4Q3VzdG9tIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIC8vIENvbnN0YW50cy4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxl
bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNTI4MDEpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBACiAKICNpbmNsdWRlICJWOEF0dHIuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNp
bmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgog
I2luY2x1ZGUgIlY4UHJveHkuaCIKIApAQCAtNTYsNyArNTcsNyBAQAogICAgIFN0cmluZyBuYW1l
ID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogICAgIFN0cmluZyB2YWx1ZSA9IHRvV2ViQ29y
ZVN0cmluZyhhcmdzWzFdKTsKIAotICAgIGlmICghYWxsb3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0
VVJMKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSkKKyAgICBpZiAoIVY4QmluZGluZ1NlY3VyaXR5Ojph
bGxvd1NldHRpbmdTcmNUb0phdmFzY3JpcHRVUkwoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgZWxl
bWVudCwgbmFtZSwgdmFsdWUpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC03Niw3ICs3Nyw3IEBACiAgICAgQXR0ciogbmV3
QXR0ciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8QXR0cj4odjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSk7CiAgICAgRWxlbWVudCogZWxlbWVudCA9
IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8RWxlbWVudD4oYXJncy5Ib2xk
ZXIoKSk7CiAKLSAgICBpZiAoIWFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChlbGVtZW50
LCBuZXdBdHRyLT5uYW1lKCksIG5ld0F0dHItPnZhbHVlKCkpKQorICAgIGlmICghVjhCaW5kaW5n
U2VjdXJpdHk6OmFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChWOEJpbmRpbmdTdGF0ZTo6
T25seSgpLCBlbGVtZW50LCBuZXdBdHRyLT5uYW1lKCksIG5ld0F0dHItPnZhbHVlKCkpKQogICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CkBAIC05NSw3ICs5Niw3IEBACiAgICAgU3RyaW5nIHF1YWxpZmllZE5hbWUgPSB0b1dlYkNvcmVT
dHJpbmcoYXJnc1sxXSk7CiAgICAgU3RyaW5nIHZhbHVlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3Nb
Ml0pOwogCi0gICAgaWYgKCFhbGxvd1NldHRpbmdTcmNUb0phdmFzY3JpcHRVUkwoZWxlbWVudCwg
cXVhbGlmaWVkTmFtZSwgdmFsdWUpKQorICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmFsbG93
U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBlbGVtZW50
LCBxdWFsaWZpZWROYW1lLCB2YWx1ZSkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTExNSw3ICsxMTYsNyBAQAogICAgIEF0
dHIqIG5ld0F0dHIgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPEF0dHI+
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOwogICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPEVsZW1lbnQ+KGFy
Z3MuSG9sZGVyKCkpOwogCi0gICAgaWYgKCFhbGxvd1NldHRpbmdTcmNUb0phdmFzY3JpcHRVUkwo
ZWxlbWVudCwgbmV3QXR0ci0+bmFtZSgpLCBuZXdBdHRyLT52YWx1ZSgpKSkKKyAgICBpZiAoIVY4
QmluZGluZ1NlY3VyaXR5OjphbGxvd1NldHRpbmdTcmNUb0phdmFzY3JpcHRVUkwoVjhCaW5kaW5n
U3RhdGU6Ok9ubHkoKSwgZWxlbWVudCwgbmV3QXR0ci0+bmFtZSgpLCBuZXdBdHRyLT52YWx1ZSgp
KSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJp
bmRpbmcuY3BwCShyZXZpc2lvbiA1MjgwMSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q3VzdG9tQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDIzICs0OSw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBhbGxvd1NldHRpbmdGcmFtZVNyY1RvSmF2YXNj
cmlwdFVybChIVE1MRnJhbWVFbGVtZW50QmFzZSogZnJhbWUsIFN0cmluZyB2YWx1ZSkKLXsKLSAg
ICBpZiAocHJvdG9jb2xJcyhkZXByZWNhdGVkUGFyc2VVUkwodmFsdWUpLCAiamF2YXNjcmlwdCIp
KSB7Ci0gICAgICAgIE5vZGUqIGNvbnRlbnREb2MgPSBmcmFtZS0+Y29udGVudERvY3VtZW50KCk7
Ci0gICAgICAgIGlmIChjb250ZW50RG9jICYmICFWOEJpbmRpbmdTZWN1cml0eTo6Y2hlY2tOb2Rl
U2VjdXJpdHkoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgY29udGVudERvYykpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIGFsbG93
U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChFbGVtZW50KiBlbGVtZW50LCBTdHJpbmcgbmFtZSwg
U3RyaW5nIHZhbHVlKQotewotICAgIGlmICgoZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6
OmlmcmFtZVRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmZyYW1lVGFnKSkg
JiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNyYyIpKQotICAgICAgICByZXR1cm4gYWxsb3dT
ZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVu
dEJhc2UqPihlbGVtZW50KSwgdmFsdWUpOwotICAgIHJldHVybiB0cnVlOwotfQotCiAvLyAtLS0t
LS0tLS0tLS0tLS0gU2VjdXJpdHkgQ2hlY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIElO
REVYRURfQUNDRVNTX0NIRUNLKEhpc3RvcnkpCiB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEF0dHJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QXR0ckN1c3RvbS5jcHAJKHJldmlzaW9uIDUyODAxKQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhBdHRyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIK
ICNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKQEAg
LTQ2LDcgKzQ3LDcgQEAKICAgICBTdHJpbmcgYXR0clZhbHVlID0gdG9XZWJDb3JlU3RyaW5nV2l0
aE51bGxDaGVjayh2YWx1ZSk7CiAgICAgRWxlbWVudCogb3duZXJFbGVtZW50ID0gaW1wLT5vd25l
ckVsZW1lbnQoKTsKIAotICAgIGlmIChvd25lckVsZW1lbnQgJiYgIWFsbG93U2V0dGluZ1NyY1Rv
SmF2YXNjcmlwdFVSTChvd25lckVsZW1lbnQsIGltcC0+bmFtZSgpLCBhdHRyVmFsdWUpKQorICAg
IGlmIChvd25lckVsZW1lbnQgJiYgIVY4QmluZGluZ1NlY3VyaXR5OjphbGxvd1NldHRpbmdTcmNU
b0phdmFzY3JpcHRVUkwoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgb3duZXJFbGVtZW50LCBpbXAt
Pm5hbWUoKSwgYXR0clZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJRnJhbWVF
bGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNTI4MDEpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2lu
Y2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAj
aW5jbHVkZSAiVjhQcm94eS5oIgogCkBAIC00Niw3ICs0Nyw3IEBACiAgICAgSFRNTElGcmFtZUVs
ZW1lbnQqIGlmcmFtZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8SFRN
TElGcmFtZUVsZW1lbnQ+KGluZm8uSG9sZGVyKCkpOwogICAgIFN0cmluZyB2ID0gdG9XZWJDb3Jl
U3RyaW5nV2l0aE51bGxDaGVjayh2YWx1ZSk7CiAKLSAgICBpZiAoIWFsbG93U2V0dGluZ0ZyYW1l
U3JjVG9KYXZhc2NyaXB0VXJsKGlmcmFtZSwgdikpCisgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0
eTo6YWxsb3dTZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoVjhCaW5kaW5nU3RhdGU6Ok9u
bHkoKSwgaWZyYW1lLCB2KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWZyYW1lLT5zZXRBdHRy
aWJ1dGUoc3JjQXR0ciwgdik7IAo=
</data>
<flag name="review"
          id="28060"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="28061"
          type_id="3"
          status="-"
          setter="japhet"
    />
          </attachment>
      

    </bug>

</bugzilla>