<?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>36830</bug_id>
          
          <creation_ts>2010-03-30 09:04:33 -0700</creation_ts>
          <short_desc>IndexedDB: Finish hooking up bindings for IndexedDatabaseRequest</short_desc>
          <delta_ts>2010-04-06 06:03:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ager</cc>
    
    <cc>dglazkov</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>206029</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-03-30 09:04:33 -0700</bug_when>
    <thetext>IndexedDB: Finish hooking up bindings for IndexedDatabaseRequest</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206030</commentid>
    <comment_count>1</comment_count>
      <attachid>52044</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-03-30 09:05:49 -0700</bug_when>
    <thetext>Created attachment 52044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206090</commentid>
    <comment_count>2</comment_count>
      <attachid>52044</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-03-30 11:33:45 -0700</bug_when>
    <thetext>Comment on attachment 52044
Patch

r+ with a nit.

&gt; +private:
&gt; +    V8CustomIDBCallbacks(v8::Local&lt;v8::Value&gt; onSuccess, v8::Local&lt;v8::Value&gt; onError, Frame* frame)
&gt; +        : m_onSuccessNull(!onSuccess-&gt;IsObject())
&gt; +        , m_onSuccess(v8::Persistent&lt;v8::Object&gt;::New(onSuccess-&gt;ToObject()))
&gt; +        , m_onErrorNull(!onError-&gt;IsObject())
&gt; +        , m_onError(v8::Persistent&lt;v8::Object&gt;::New(onError-&gt;ToObject()))
&gt; +        , m_frame(frame)
&gt; +    {
&gt; +    }
&gt; +
&gt; +    // FIXME: Should these be v8::Functions?  For some reason, VoidCallback (which this copied) uses v8::Objects.
&gt; +    bool m_onSuccessNull;
&gt; +    v8::Persistent&lt;v8::Object&gt; m_onSuccess;
&gt; +    bool m_onErrorNull;

Why do we need separate bools here?  It seems like unnecessary duplication of information to me.

&gt; +    v8::Persistent&lt;v8::Object&gt; m_onError;
&gt; +    RefPtr&lt;Frame&gt; m_frame;
&gt; +};
&gt; +
&gt; +}
&gt; +
&gt; +#endif
&gt; +
&gt; +#endif // V8CustomIDBCallbacks_h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206439</commentid>
    <comment_count>3</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-03-31 03:11:05 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 52044 [details])
&gt; r+ with a nit.
&gt; 
&gt; &gt; +private:
&gt; &gt; +    V8CustomIDBCallbacks(v8::Local&lt;v8::Value&gt; onSuccess, v8::Local&lt;v8::Value&gt; onError, Frame* frame)
&gt; &gt; +        : m_onSuccessNull(!onSuccess-&gt;IsObject())
&gt; &gt; +        , m_onSuccess(v8::Persistent&lt;v8::Object&gt;::New(onSuccess-&gt;ToObject()))
&gt; &gt; +        , m_onErrorNull(!onError-&gt;IsObject())
&gt; &gt; +        , m_onError(v8::Persistent&lt;v8::Object&gt;::New(onError-&gt;ToObject()))
&gt; &gt; +        , m_frame(frame)
&gt; &gt; +    {
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    // FIXME: Should these be v8::Functions?  For some reason, VoidCallback (which this copied) uses v8::Objects.
&gt; &gt; +    bool m_onSuccessNull;
&gt; &gt; +    v8::Persistent&lt;v8::Object&gt; m_onSuccess;
&gt; &gt; +    bool m_onErrorNull;
&gt; 
&gt; Why do we need separate bools here?  It seems like unnecessary duplication of
&gt; information to me.

How can I tell when a v8 object is valid or not?  I&apos;m sure there is some way.

Going to commit this and continue working, but I am interested in making this cleaner.

+ mads since he might know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206451</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-03-31 03:56:37 -0700</bug_when>
    <thetext>Committed r56834: &lt;http://trac.webkit.org/changeset/56834&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209006</commentid>
    <comment_count>5</comment_count>
    <who name="Mads Ager">ager</who>
    <bug_when>2010-04-06 06:03:31 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 52044 [details] [details])
&gt; &gt; r+ with a nit.
&gt; &gt; 
&gt; &gt; &gt; +private:
&gt; &gt; &gt; +    V8CustomIDBCallbacks(v8::Local&lt;v8::Value&gt; onSuccess, v8::Local&lt;v8::Value&gt; onError, Frame* frame)
&gt; &gt; &gt; +        : m_onSuccessNull(!onSuccess-&gt;IsObject())
&gt; &gt; &gt; +        , m_onSuccess(v8::Persistent&lt;v8::Object&gt;::New(onSuccess-&gt;ToObject()))
&gt; &gt; &gt; +        , m_onErrorNull(!onError-&gt;IsObject())
&gt; &gt; &gt; +        , m_onError(v8::Persistent&lt;v8::Object&gt;::New(onError-&gt;ToObject()))
&gt; &gt; &gt; +        , m_frame(frame)
&gt; &gt; &gt; +    {
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +
&gt; &gt; &gt; +    // FIXME: Should these be v8::Functions?  For some reason, VoidCallback (which this copied) uses v8::Objects.
&gt; &gt; &gt; +    bool m_onSuccessNull;
&gt; &gt; &gt; +    v8::Persistent&lt;v8::Object&gt; m_onSuccess;
&gt; &gt; &gt; +    bool m_onErrorNull;
&gt; &gt; 
&gt; &gt; Why do we need separate bools here?  It seems like unnecessary duplication of
&gt; &gt; information to me.
&gt; 
&gt; How can I tell when a v8 object is valid or not?  I&apos;m sure there is some way.
&gt; 
&gt; Going to commit this and continue working, but I am interested in making this
&gt; cleaner.
&gt; 
&gt; + mads since he might know.

Sorry for the late reply, was on vacation.

You could leave the two persistent handles m_onSuccess and m_onError empty if the arguments are not objects. Disposing empty handles is valid and your check would be m_onSuccess.IsEmpty() instead of testing the boolean flag. Also, if the arguments are objects, you do not need to call ToObject() you can use handle cast instead (but it doesn&apos;t really matter since the ToObject call will essentially do that in this case).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52044</attachid>
            <date>2010-03-30 09:05:49 -0700</date>
            <delta_ts>2010-03-30 11:33:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36830-20100330170547.patch</filename>
            <type>text/plain</type>
            <size>18176</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzI1NTZjMi4uNzg3YjIxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wMy0zMCAgSmVyZW15IE9ybG93
ICA8am9ybG93QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbmRleGVkREI6IEZpbmlzaCBob29raW5nIHVwIGJpbmRpbmdzIGZv
ciBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNjgzMAorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQor
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbUlEQkNhbGxiYWNrLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q3VzdG9tSURCQ2FsbGJhY2tzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VjhD
dXN0b21JREJDYWxsYmFja3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEN1c3RvbUlE
QkNhbGxiYWNrczo6flY4Q3VzdG9tSURCQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
Q3VzdG9tSURCQ2FsbGJhY2tzOjpvblN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6VjhDdXN0
b21JREJDYWxsYmFja3M6Om9uRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VjhDdXN0b21JREJD
YWxsYmFja3M6OlY4Q3VzdG9tSURCQ2FsbGJhY2tzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhJbmRleGVkRGF0YWJhc2VSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4SW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6b3BlbkNhbGxiYWNrKToKKyAgICAgICAgKiBz
dG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VSZXF1ZXN0OjpJREJEYXRhYmFzZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VSZXF1ZXN0Ojp+SURCRGF0YWJhc2VSZXF1ZXN0KToKKyAgICAgICAgKiBz
dG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIHN0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpvcGVu
KToKKyAgICAgICAgKiBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaDoKKwogMjAxMC0w
My0yOSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDUwOWVkODEuLmVkNzJlZTIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02OTYs
NyArNjk2LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDU1NTdHlsZURl
Y2xhcmF0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q1NTU3R5bGVTaGVldEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOENTU1ZhbHVlQ3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q3VzdG9tQ2FsbGJhY2suaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q3VzdG9tSURCQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbUV2ZW50TGlzdGVuZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21FdmVudExpc3RlbmVyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEN1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwJywKQEAgLTMyNzAsNiArMzI3MCw3IEBA
CiAgICAgICAgICAgICAnc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAnLAogICAgICAgICAgICAgJ3N0
b3JhZ2UvSURCRGF0YWJhc2VFcnJvci5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkRhdGFi
YXNlRXhjZXB0aW9uLmgnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0
LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaCcsCiAgICAg
ICAgICAgICAnc3RvcmFnZS9JbmRleGVkRGF0YWJhc2UuY3BwJywKICAgICAgICAgICAgICdzdG9y
YWdlL0luZGV4ZWREYXRhYmFzZS5oJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tSURCQ2FsbGJhY2suaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q3VzdG9tSURCQ2FsbGJhY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU0
YmZmMy4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUlE
QkNhbGxiYWNrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBWOEN1c3Rv
bUlEQkNhbGxiYWNrX2gKLSNkZWZpbmUgVjhDdXN0b21JREJDYWxsYmFja19oCi0KLSNpbmNsdWRl
ICJGcmFtZS5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tVm9pZENhbGxiYWNrLmgiCi0jaW5jbHVkZSA8
djguaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi0jaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gRklYTUU6IE1heWJlIHNwbGl0IGNv
bW1vbiBwYXJ0cyBpbnRvIGEgYmFzZSBjbGFzcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDYWxsYmFj
a1R5cGU+Ci1jbGFzcyBWOEN1c3RvbUlEQkNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8VjhD
dXN0b21JREJDYWxsYmFjazxDYWxsYmFja1R5cGU+ID4gewotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFY4Q3VzdG9tSURCQ2FsbGJhY2s+IGNyZWF0ZSh2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgRnJhbWUqIGZyYW1lKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHZhbHVlLT5Jc09i
amVjdCgpKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOEN1c3RvbUlEQkNhbGxiYWNr
KHZhbHVlLT5Ub09iamVjdCgpLCBmcmFtZSkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgflY4Q3Vz
dG9tSURCQ2FsbGJhY2soKQotICAgIHsKLSAgICAgICAgbV9jYWxsYmFjay5EaXNwb3NlKCk7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KENhbGxiYWNrVHlwZSogcmVzdWx0
KQotICAgIHsKLSAgICAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgICAgICB2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChtX2ZyYW1l
LmdldCgpKTsKLSAgICAgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKLSAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsKLSAgICAgICAgICAgIHRvVjgocmVz
dWx0KQotICAgICAgICB9OwotICAgICAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1l
KTsKLSAgICAgICAgYm9vbCBjYWxsYmFja1JldHVyblZhbHVlID0gZmFsc2U7Ci0gICAgICAgIC8v
IEZJWE1FOiBEbyB3ZSBjYXJlIGlmIHRoaXMgdGhpbmcgcmV0dXJucyB0cnVlIChpLmUuIGl0IHJh
aXNlZCBhbiBleGNlcHRpb24pPwotICAgICAgICBpbnZva2VDYWxsYmFjayhtX2NhbGxiYWNrLCAx
LCBhcmd2LCBjYWxsYmFja1JldHVyblZhbHVlKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVjhD
dXN0b21JREJDYWxsYmFjayh2ODo6TG9jYWw8djg6Ok9iamVjdD5jYWxsYmFjaywgRnJhbWUqIGZy
YW1lKQotICAgICAgICA6IG1fY2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5l
dyhjYWxsYmFjaykpLAotICAgICAgICAgIG1fZnJhbWUoZnJhbWUpCi0gICAgewotICAgIH0KLQot
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fY2FsbGJhY2s7Ci0gICAgUmVmUHRyPEZy
YW1lPiBtX2ZyYW1lOwotfTsKLQotfQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIFY4Q3VzdG9tSURC
Q2FsbGJhY2tfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21JREJDYWxsYmFja3MuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tSURC
Q2FsbGJhY2tzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNlYWMyNAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tSURC
Q2FsbGJhY2tzLmgKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFY4Q3VzdG9tSURCQ2FsbGJhY2tz
X2gKKyNkZWZpbmUgVjhDdXN0b21JREJDYWxsYmFja3NfaAorCisjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiVjhDdXN0b21Wb2lkQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJWOElEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlIDx2OC5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBGSVhNRTogTWF5YmUgc3BsaXQgY29tbW9u
IHBhcnRzIGludG8gYSBiYXNlIGNsYXNzLgordGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdFR5cGUs
IHR5cGVuYW1lIFJlc3VsdFdyYXBwZXJUeXBlPgorY2xhc3MgVjhDdXN0b21JREJDYWxsYmFja3Mg
OiBwdWJsaWMgSURCQ2FsbGJhY2tzPFJlc3VsdFR5cGU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxWOEN1c3RvbUlEQkNhbGxiYWNrcz4gY3JlYXRlKHY4OjpMb2NhbDx2ODo6VmFs
dWU+IG9uU3VjY2Vzcywgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gb25FcnJvciwgRnJhbWUqIGZyYW1l
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOEN1c3RvbUlEQkNhbGxiYWNr
cyhvblN1Y2Nlc3MsIG9uRXJyb3IsIGZyYW1lKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+VjhD
dXN0b21JREJDYWxsYmFja3MoKQorICAgIHsKKyAgICAgICAgbV9vblN1Y2Nlc3MuRGlzcG9zZSgp
OworICAgICAgICBtX29uRXJyb3IuRGlzcG9zZSgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxSZXN1bHRUeXBlPiByZXN1bHQpCisgICAgeworICAgICAg
ICBpZiAobV9vblN1Y2Nlc3NOdWxsKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2ODo6
SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNvbnRleHQgPSBWOFByb3h5Ojpjb250ZXh0KG1fZnJhbWUuZ2V0KCkpOworICAgICAgICBpZiAo
Y29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdjg6OkNv
bnRleHQ6OlNjb3BlIHNjb3BlKGNvbnRleHQpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gYXJndltdID0geworICAgICAgICAgICAgdG9WOChSZXN1bHRXcmFwcGVyVHlwZTo6Y3JlYXRl
KHJlc3VsdCkpCisgICAgICAgIH07CisgICAgICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdG9yKG1f
ZnJhbWUpOworICAgICAgICBib29sIGNhbGxiYWNrUmV0dXJuVmFsdWUgPSBmYWxzZTsKKyAgICAg
ICAgLy8gRklYTUU6IERvIHdlIGNhcmUgaWYgdGhpcyB0aGluZyByZXR1cm5zIHRydWUgKGkuZS4g
aXQgcmFpc2VkIGFuIGV4Y2VwdGlvbik/CisgICAgICAgIGludm9rZUNhbGxiYWNrKG1fb25TdWNj
ZXNzLCAxLCBhcmd2LCBjYWxsYmFja1JldHVyblZhbHVlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgb25FcnJvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yKQorICAgIHsK
KyAgICAgICAgaWYgKG1fb25FcnJvck51bGwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gY29udGV4dCA9IFY4UHJveHk6OmNvbnRleHQobV9mcmFtZS5nZXQoKSk7CisgICAgICAg
IGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2
ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBhcmd2W10gPSB7CisgICAgICAgICAgICB0b1Y4KGVycm9yKQorICAgICAgICB9Owor
ICAgICAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKKyAgICAgICAgYm9vbCBj
YWxsYmFja1JldHVyblZhbHVlID0gZmFsc2U7CisgICAgICAgIC8vIEZJWE1FOiBEbyB3ZSBjYXJl
IGlmIHRoaXMgdGhpbmcgcmV0dXJucyB0cnVlIChpLmUuIGl0IHJhaXNlZCBhbiBleGNlcHRpb24p
PworICAgICAgICBpbnZva2VDYWxsYmFjayhtX29uRXJyb3IsIDEsIGFyZ3YsIGNhbGxiYWNrUmV0
dXJuVmFsdWUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWOEN1c3RvbUlEQkNhbGxiYWNrcyh2
ODo6TG9jYWw8djg6OlZhbHVlPiBvblN1Y2Nlc3MsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IG9uRXJy
b3IsIEZyYW1lKiBmcmFtZSkKKyAgICAgICAgOiBtX29uU3VjY2Vzc051bGwoIW9uU3VjY2Vzcy0+
SXNPYmplY3QoKSkKKyAgICAgICAgLCBtX29uU3VjY2Vzcyh2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0Pjo6TmV3KG9uU3VjY2Vzcy0+VG9PYmplY3QoKSkpCisgICAgICAgICwgbV9vbkVycm9yTnVs
bCghb25FcnJvci0+SXNPYmplY3QoKSkKKyAgICAgICAgLCBtX29uRXJyb3Iodjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD46Ok5ldyhvbkVycm9yLT5Ub09iamVjdCgpKSkKKyAgICAgICAgLCBtX2Zy
YW1lKGZyYW1lKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoZXNlIGJl
IHY4OjpGdW5jdGlvbnM/ICBGb3Igc29tZSByZWFzb24sIFZvaWRDYWxsYmFjayAod2hpY2ggdGhp
cyBjb3BpZWQpIHVzZXMgdjg6Ok9iamVjdHMuCisgICAgYm9vbCBtX29uU3VjY2Vzc051bGw7Cisg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gbV9vblN1Y2Nlc3M7CisgICAgYm9vbCBtX29u
RXJyb3JOdWxsOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fb25FcnJvcjsKKyAg
ICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYgLy8g
VjhDdXN0b21JREJDYWxsYmFja3NfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhJbmRleGVkRGF0YWJhc2VSZXF1ZXN0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SW5kZXhlZERhdGFiYXNlUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggN2Fl
ZDk0MS4uZTg0OGQ4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bmRleGVkRGF0YWJhc2VSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEluZGV4ZWREYXRhYmFzZVJlcXVlc3RDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3
IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNl
UmVxdWVzdC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tSURC
Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJWOEN1c3RvbUlEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUg
IlY4SURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIlY4SURCRGF0YWJhc2VSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiVjhQcm94eS5oIgpAQCAtNTUsMjkgKzU1LDI3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEluZGV4ZWREYXRhYmFzZVJlcXVlc3Q6Om9wZW5DYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyICYmICFhcmdzWzJdLT5Jc1VuZGVm
aW5lZCgpICYmICFhcmdzWzJdLT5Jc051bGwoKSkKICAgICAgICAgbW9kaWZ5RGF0YWJhc2UgPSBh
cmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6OnJl
dHJpZXZlRnJhbWVGb3JDdXJyZW50Q29udGV4dCgpOwotCi0gICAgUmVmUHRyPFY4Q3VzdG9tSURC
Q2FsbGJhY2s8SURCRGF0YWJhc2VFcnJvcj4gPiBvbmVycm9yOworICAgIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IG9uRXJyb3I7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gb25TdWNjZXNzOwogICAg
IGlmIChhcmdzLkxlbmd0aCgpID4gMyAmJiAhYXJnc1szXS0+SXNVbmRlZmluZWQoKSAmJiAhYXJn
c1szXS0+SXNOdWxsKCkpIHsKICAgICAgICAgaWYgKCFhcmdzWzNdLT5Jc09iamVjdCgpKQogICAg
ICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIm9uZXJyb3IgY2FsbGJhY2sgd2FzIG5vdCB0aGUg
cHJvcGVyIHR5cGUiKTsKLSAgICAgICAgaWYgKGZyYW1lKQotICAgICAgICAgICAgb25lcnJvciA9
IFY4Q3VzdG9tSURCQ2FsbGJhY2s8SURCRGF0YWJhc2VFcnJvcj46OmNyZWF0ZShhcmdzWzNdLCBm
cmFtZSk7CisgICAgICAgIG9uRXJyb3IgPSBhcmdzWzNdOwogICAgIH0KLQotICAgIFJlZlB0cjxW
OEN1c3RvbUlEQkNhbGxiYWNrPElEQkRhdGFiYXNlUmVxdWVzdD4gPiBvbnN1Y2Nlc3M7CiAgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPiA0ICYmICFhcmdzWzRdLT5Jc1VuZGVmaW5lZCgpICYmICFhcmdz
WzRdLT5Jc051bGwoKSkgewogICAgICAgICBpZiAoIWFyZ3NbNF0tPklzT2JqZWN0KCkpCiAgICAg
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigib25zdWNjZXNzIGNhbGxiYWNrIHdhcyBub3QgdGhl
IHByb3BlciB0eXBlIik7Ci0gICAgICAgIGlmIChmcmFtZSkKLSAgICAgICAgICAgIG9uc3VjY2Vz
cyA9IFY4Q3VzdG9tSURCQ2FsbGJhY2s8SURCRGF0YWJhc2VSZXF1ZXN0Pjo6Y3JlYXRlKGFyZ3Nb
NF0sIGZyYW1lKTsKKyAgICAgICAgb25TdWNjZXNzID0gYXJnc1s0XTsKICAgICB9Ci0KLSAgICBp
ZiAoIW9uZXJyb3IgJiYgIW9uc3VjY2VzcykKKyAgICBpZiAoIW9uRXJyb3ItPklzT2JqZWN0KCkg
JiYgIW9uU3VjY2Vzcy0+SXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5l
aXRoZXIgdGhlIG9uZXJyb3Igbm9yIHRoZSBvbnN1Y2Nlc3MgY2FsbGJhY2tzIHdlcmUgc2V0LiIp
OwogCisgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckN1cnJlbnRD
b250ZXh0KCk7CisgICAgUmVmUHRyPFY4Q3VzdG9tSURCQ2FsbGJhY2tzPElEQkRhdGFiYXNlLCBJ
REJEYXRhYmFzZVJlcXVlc3Q+ID4gY2FsbGJhY2tzID0KKyAgICAgICAgVjhDdXN0b21JREJDYWxs
YmFja3M8SURCRGF0YWJhc2UsIElEQkRhdGFiYXNlUmVxdWVzdD46OmNyZWF0ZShvblN1Y2Nlc3Ms
IG9uRXJyb3IsIGZyYW1lKTsKKwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcC0+
b3BlbihuYW1lLCBkZXNjcmlwdGlvbiwgbW9kaWZ5RGF0YWJhc2UsIGVjKTsKKyAgICBpbXAtPm9w
ZW4obmFtZSwgZGVzY3JpcHRpb24sIG1vZGlmeURhdGFiYXNlLCBlYywgY2FsbGJhY2tzKTsKICAg
ICBpZiAoZWMpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKICAgICByZXR1cm4gdjg6
OkhhbmRsZTx2ODo6VmFsdWU+KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2VSZXF1ZXN0LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZTA1NTQKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmNwcApAQCAtMCwwICsx
LDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlUmVxdWVz
dC5oIgorCisjaW5jbHVkZSAiSW5kZXhlZERhdGFiYXNlLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJREJEYXRhYmFzZVJlcXVlc3Q6
OklEQkRhdGFiYXNlUmVxdWVzdChQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSkK
KyAgICA6IG1faWRiRGF0YWJhc2UoaWRiRGF0YWJhc2UpCit7Cit9CisKK0lEQkRhdGFiYXNlUmVx
dWVzdDo6fklEQkRhdGFiYXNlUmVxdWVzdCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmggYi9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VSZXF1ZXN0LmgKaW5kZXggMjNmNWExMS4uYzAyN2I2YSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZVJlcXVlc3QuaApAQCAtMjgsMTkgKzI4LDMxIEBACiAjaWZuZGVmIElEQkRhdGFi
YXNlUmVxdWVzdF9oCiAjZGVmaW5lIElEQkRhdGFiYXNlUmVxdWVzdF9oCiAKKyNpbmNsdWRlICJJ
REJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIElEQlJlcXVlc3Q7Ci0KIGNsYXNzIElEQkRhdGFiYXNlUmVxdWVz
dCA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkRhdGFiYXNlUmVxdWVzdD4gewogcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlUmVxdWVzdD4gY3JlYXRlKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJREJEYXRhYmFzZVJlcXVlc3QoaWRiRGF0YWJhc2UpKTsKKyAgICB9CisgICAgfklEQkRh
dGFiYXNlUmVxdWVzdCgpOworCiAgICAgLy8gRklYTUU6IFdyaXRlLgotICAgIElEQlJlcXVlc3Qq
IHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50KSB7IH0KKworcHJpdmF0ZToKKyAgICBJREJEYXRhYmFzZVJlcXVlc3QoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZT4pOworCisgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBtX2lkYkRhdGFiYXNl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9y
YWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWRE
YXRhYmFzZVJlcXVlc3QuY3BwCmluZGV4IGYwOWU1ZGQuLmI0YjdhOTggMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL3N0
b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLworCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5oIgogCkBAIC00NSw5ICs0Niw5IEBAIElu
ZGV4ZWREYXRhYmFzZVJlcXVlc3Q6On5JbmRleGVkRGF0YWJhc2VSZXF1ZXN0KCkKIHsKIH0KIAot
dm9pZCBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgYm9vbCBtb2RpZnlEYXRhYmFzZSwgRXhjZXB0aW9uQ29k
ZSYgZXhjZXB0aW9uKQordm9pZCBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgYm9vbCBtb2RpZnlEYXRhYmFz
ZSwgRXhjZXB0aW9uQ29kZSYgZXhjZXB0aW9uLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGluaXRpYXRlIGEg
cmVxdWVzdC4KKyAgICBtX2luZGV4ZWREYXRhYmFzZS0+b3BlbihuYW1lLCBkZXNjcmlwdGlvbiwg
bW9kaWZ5RGF0YWJhc2UsIGV4Y2VwdGlvbiwgY2FsbGJhY2tzKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJl
cXVlc3QuaCBiL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmgKaW5kZXgg
N2E4OTZlNi4uOTUwY2I3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRh
YmFzZVJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVz
dC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjZGVmaW5lIEluZGV4ZWREYXRhYmFzZVJlcXVlc3RfaAog
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkluZGV4ZWREYXRhYmFzZS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDksNyArNTAsNyBAQCBwdWJsaWM6
CiAgICAgfQogICAgIH5JbmRleGVkRGF0YWJhc2VSZXF1ZXN0KCk7CiAKLSAgICB2b2lkIG9wZW4o
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBib29sIG1vZGlm
eURhdGFiYXNlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgYm9vbCBtb2RpZnlEYXRhYmFzZSwgRXhj
ZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcyk7
CiAKICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpIHsgbV9mcmFtZSA9IDA7IH0KIAo=
</data>
<flag name="review"
          id="35437"
          type_id="1"
          status="+"
          setter="japhet"
    />
          </attachment>
      

    </bug>

</bugzilla>