<?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>91702</bug_id>
          
          <creation_ts>2012-07-18 18:35:52 -0700</creation_ts>
          <short_desc>Files from drag and file &lt;input&gt; should use getMIMETypeForExtension to determine content type.</short_desc>
          <delta_ts>2019-02-06 09:18:26 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Daniel Cheng">dcheng</assigned_to>
          <cc>cevans</cc>
    
    <cc>fishd</cc>
    
    <cc>jianli</cc>
    
    <cc>jschuh</cc>
    
    <cc>kinuko</cc>
    
    <cc>michaeln</cc>
    
    <cc>mifenton</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>673057</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-07-18 18:35:52 -0700</bug_when>
    <thetext>In r117432, kinuko merged some code together. One path was using getMIMETypeForExtension and another was using getWellKnownMIMETypeForExtension. Using the latter causes sites like youtube.com, which filter on the content-type of the dragged file, to break since the .type attribute would be empty.

(Unrelated: wouldn&apos;t it be nice if the header file for MIMETypeRegistry described the difference between the two and what a &apos;well known&apos; MIME type is?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673155</commentid>
    <comment_count>1</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-07-18 22:00:03 -0700</bug_when>
    <thetext>Thanks for catching this!
Recalling the history, we intentionally use getWellKnownMIMETypeForExtension for files from FileSystem API (c.f. http://code.google.com/p/chromium/issues/detail?id=86108).  So probably a quick conservative fix would be to revert the merging part but have two slightly different getMIMEType code around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674148</commentid>
    <comment_count>2</comment_count>
      <attachid>153402</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-07-19 21:37:44 -0700</bug_when>
    <thetext>Created attachment 153402
Patch

Rough patch that sketches out what we need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674161</commentid>
    <comment_count>3</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-07-19 22:10:03 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=153402) [details]
&gt; Patch
&gt; 
&gt; Rough patch that sketches out what we need.

The patch looks OK in terms of just fixing the youtube upload bug. However, I am wondering what should be the right fix in order to take all scenarios into account.

We choose to use the well known MIME type for files from FileSystem. For all other types of files, do we also have the same concern and want to use the well known MIME type too? If not, I think we should let FileSystem caller pass the wellknow type as another argument to File constructor. Darin, could you please comment on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674165</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-07-19 22:14:43 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Created an attachment (id=153402) [details] [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Rough patch that sketches out what we need.
&gt; 
&gt; The patch looks OK in terms of just fixing the youtube upload bug. However, I am wondering what should be the right fix in order to take all scenarios into account.
&gt; 
&gt; We choose to use the well known MIME type for files from FileSystem. For all other types of files, do we also have the same concern and want to use the well known MIME type too? If not, I think we should let FileSystem caller pass the wellknow type as another argument to File constructor. Darin, could you please comment on this?

Kinuko mentioned that the file input element should probably be covered as well. I am currently updating my patch to reflect this, as well as updating the platform/* implementations.

Kinuko is also working on this bug from the opposite direction--she is modifying the filesystem calls to use a special File constructor/argument.

I think it&apos;s slightly safer to limit File to &apos;well-known&apos; MIME types by default and require an explicit call to allow WebKit to use the OS rather than the other way around, but I&apos;m not sure if this is a strong enough argument to prefer my patch over Kinuko&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674178</commentid>
    <comment_count>5</comment_count>
      <attachid>153415</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-07-19 22:38:24 -0700</bug_when>
    <thetext>Created attachment 153415
Patch (adds special ctor for FileSystem)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674188</commentid>
    <comment_count>6</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-07-19 22:48:39 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=153415) [details]
&gt; Patch (adds special ctor for FileSystem)

The patch that does the other way around.
My take is: if we want to call getMIMEType by default and only handle FileSystem files specifically we should just handle add a special ctor foro them. Otherwise Daniel&apos;s way might work better.

(I&apos;ll dig to see if we can add a test for this patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674236</commentid>
    <comment_count>7</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-07-19 23:43:26 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Created an attachment (id=153415) [details] [details]
&gt; &gt; Patch (adds special ctor for FileSystem)
&gt; 
&gt; The patch that does the other way around.
&gt; My take is: if we want to call getMIMEType by default and only handle FileSystem files specifically we should just handle add a special ctor foro them. Otherwise Daniel&apos;s way might work better.
&gt; 
&gt; (I&apos;ll dig to see if we can add a test for this patch)

Yes, we need to find out which case(s) we want to guard against.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674919</commentid>
    <comment_count>8</comment_count>
      <attachid>153588</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-07-20 13:40:19 -0700</bug_when>
    <thetext>Created attachment 153588
Special ctor for drag/file input</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675040</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-07-20 16:05:21 -0700</bug_when>
    <thetext>I talked to Darin and he said that the usual approach is to &apos;default to safe&apos;... but my patch is definitely bigger than Kinuko&apos;s patch and touches more places, so it may be harder to merge into Chrome 21. I&apos;m adding some security folks as well to see if they have any thoughts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675973</commentid>
    <comment_count>10</comment_count>
      <attachid>153856</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-07-23 13:48:44 -0700</bug_when>
    <thetext>Created attachment 153856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676003</commentid>
    <comment_count>11</comment_count>
      <attachid>153856</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-07-23 14:23:47 -0700</bug_when>
    <thetext>Comment on attachment 153856
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=153856&amp;action=review

&gt; Source/WebCore/fileapi/File.h:53
&gt; +    static PassRefPtr&lt;File&gt; createWithRelativePathFromUserAction(const String&amp; path, const String&amp; relativePath);

The new naming scheme seems to be a bit confusing. How about we make enum public and force the caller to select the right creator to call for most cases, sth like:
    enum FileOrigin {
        // The file is selected as a result of an user action, such as ...
        FromUserAction,
        // The file is created ...
        FromSystem
    };

    static PassRefPtr&lt;File&gt; create(FileOrigin, const String&amp; path)

    // Create a file with a name exposed to the author ...
    static PassRefPtr&lt;File&gt; createWithName(FileOrigin, const String&amp; path, const String&amp; name)

    // For deserialization.
    static PassRefPtr&lt;File&gt; create(const String&amp; path, const KURL&amp; srcURL, const String&amp; type)

#if ENABLE(DIRECTORY_UPLOAD)
    // FromUserAction is assumed.
    static PassRefPtr&lt;File&gt; createWithRelativePath(const String&amp; path, const String&amp; relativePath)
#endif

#if ENABLE(FILE_SYSTEM)
    // FromSystem is assumed.
    static PassRefPtr&lt;File&gt; createForFileSystemFile(const String&amp; name, const FileMetadata&amp; metadata)
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676233</commentid>
    <comment_count>12</comment_count>
      <attachid>153918</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-07-23 17:40:16 -0700</bug_when>
    <thetext>Created attachment 153918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676246</commentid>
    <comment_count>13</comment_count>
      <attachid>153918</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-07-23 17:49:38 -0700</bug_when>
    <thetext>Comment on attachment 153918
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=153918&amp;action=review

&gt; Source/WebCore/fileapi/File.h:47
&gt; +    static PassRefPtr&lt;File&gt; create(const String&amp; path, ContentTypeLookupPolicy policy = WellKnownContentTypes)

nit: empty line before the enum definition and the creator definition .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677049</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-07-24 11:18:00 -0700</bug_when>
    <thetext>Committed r123495: &lt;http://trac.webkit.org/changeset/123495&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503166</commentid>
    <comment_count>15</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:18:26 -0800</bug_when>
    <thetext>Mass move bugs into the DOM component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153402</attachid>
            <date>2012-07-19 21:37:44 -0700</date>
            <delta_ts>2012-07-20 13:40:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91702-20120719213740.patch</filename>
            <type>text/plain</type>
            <size>6459</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFlOWM5OGQ5OGNkZGJi
MjM5MDAwMTk2NGMyNDRlZDM3NWM1MjZkYi4uOThhMDhhMWUyMmEwODA2MmE2ZTVhOWYzMTE2MmQ2
ODdjMDhhYWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA3LTE5ICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZpbGUgc2hvdWxkIHVz
ZSBnZXRNSU1FVHlwZUZvckV4dGVuc2lvbiB3aGVuIGd1ZXNzaW5nIGNvbnRlbnQgdHlwZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNzAyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgYnJva2UgY29u
dGVudCB0eXBlIGRldGVjdGlvbiBvbiBzaXRlcyBsaWtlIFlvdXR1YmUncyBkcmFnIGFuZCBkcm9w
IHVwbG9hZGVyIHdoZW4gd2UKKyAgICAgICAgY2hhbmdlZCBhbGwgRmlsZSBjb25zdHJ1Y3RvcnMg
dG8gdXNlIGdldFdlbGxLbm93bk1JTUVUeXBlRm9yRXh0ZW5zaW9uIHJhdGhlciB0aGFuCisgICAg
ICAgIGdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uLiBUaGlzIGNoYW5nZSBhZGRzIGJhY2sgYSBzcGVj
aWFsIGNvbnN0cnVjdG9yIHRvIHVzZSBmb3IgZHJhZ2dpbmcKKyAgICAgICAgZmlsZXMgdGhhdCB1
c2VzIHRoZSBvcmlnaW5hbCBjb2RlIHBhdGggc28gd2UgY2FuIHNuaWZmIGEgd2lkZXIgdmFyaWV0
eSBvZiBNSU1FIHR5cGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFdlbGxLbm93bkNv
bnRlbnRUeXBlRnJvbUZpbGVuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmdldENvbnRlbnRUeXBl
RnJvbUZpbGVuYW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlQmxvYkRhdGFGb3JGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJsb2JEYXRhRm9y
RHJhZ2dlZEZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0
aE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aE1ldGFk
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAqIGZpbGVhcGkv
RmlsZS5oOgorICAgICAgICAoRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjcmVhdGVG
b3JEcmFnZ2luZyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVtRGF0YU9iamVjdDo6YWRkRmlsZW5h
bWUpOgorCiAyMDEyLTA3LTE4ICBTZXJnZXkgUm9ndWxlbmtvICA8cm9ndWxlbmtvQGdvb2dsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkaW5nIHBhdXNlIGljb24gZm9yIEphdmFT
Y3JpcHQgZGVidWdnaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCA1ZjhiOTNiNzgyOGQ0
MzEyZWE4MTdhMDAxZjY0MTUxNjYxNDJjMjQyLi43YTFkMmMzZmNkZmU0NmJmMDAzNDg5ODlmZWQ2
OWNkZWE3MGU1MzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgU3RyaW5nIGdldENvbnRlbnRUeXBlRnJv
bUZpbGVOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKK3N0YXRpYyBTdHJpbmcgZ2V0V2VsbEtub3du
Q29udGVudFR5cGVGcm9tRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIFN0cmlu
ZyB0eXBlOwogICAgIGludCBpbmRleCA9IG5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKQEAgLTQzLDYg
KzQzLDE1IEBAIHN0YXRpYyBTdHJpbmcgZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lKQogICAgIHJldHVybiB0eXBlOwogfQogCitzdGF0aWMgU3RyaW5nIGdldENv
bnRlbnRUeXBlRnJvbUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBTdHJpbmcg
dHlwZTsKKyAgICBpbnQgaW5kZXggPSBuYW1lLnJldmVyc2VGaW5kKCcuJyk7CisgICAgaWYgKGlu
ZGV4ICE9IC0xKQorICAgICAgICB0eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVG
b3JFeHRlbnNpb24obmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxKSk7CisgICAgcmV0dXJuIHR5cGU7
Cit9CisKIHN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVX
aXRoVHlwZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7
CiAgICAgT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKQEAg
LTUzLDE5ICs2MiwyNCBAQCBzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRh
dGFGb3JGaWxlV2l0aFR5cGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjbwogCiBzdGF0aWMgUGFzc093
blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkK
IHsKLSAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0aCwgZ2V0Q29u
dGVudFR5cGVGcm9tRmlsZU5hbWUocGF0aCkpOworICAgIHJldHVybiBjcmVhdGVCbG9iRGF0YUZv
ckZpbGVXaXRoVHlwZShwYXRoLCBnZXRXZWxsS25vd25Db250ZW50VHlwZUZyb21GaWxlbmFtZShw
YXRoKSk7Cit9CisKK3N0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZv
ckRyYWdnZWRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gY3JlYXRlQmxv
YkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0aCwgZ2V0Q29udGVudFR5cGVGcm9tRmlsZW5hbWUocGF0
aCkpOwogfQogCiBzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JG
aWxlV2l0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1O
YW1lKQogewotICAgIHJldHVybiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoVHlwZShwYXRoLCBn
ZXRDb250ZW50VHlwZUZyb21GaWxlTmFtZShmaWxlU3lzdGVtTmFtZSkpOworICAgIHJldHVybiBj
cmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoVHlwZShwYXRoLCBnZXRXZWxsS25vd25Db250ZW50VHlw
ZUZyb21GaWxlbmFtZShmaWxlU3lzdGVtTmFtZSkpOwogfQogCiAjaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQogc3RhdGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdp
dGhNZXRhZGF0YShjb25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1OYW1lLCBjb25zdCBGaWxlTWV0YWRh
dGEmIG1ldGFkYXRhKQogewogICAgIE93blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0
YTo6Y3JlYXRlKCk7Ci0gICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBlKGdldENvbnRlbnRUeXBl
RnJvbUZpbGVOYW1lKGZpbGVTeXN0ZW1OYW1lKSk7CisgICAgYmxvYkRhdGEtPnNldENvbnRlbnRU
eXBlKGdldFdlbGxLbm93bkNvbnRlbnRUeXBlRnJvbUZpbGVuYW1lKGZpbGVTeXN0ZW1OYW1lKSk7
CiAgICAgYmxvYkRhdGEtPmFwcGVuZEZpbGUobWV0YWRhdGEucGxhdGZvcm1QYXRoLCAwLCBtZXRh
ZGF0YS5sZW5ndGgsIG1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWUpOwogICAgIHJldHVybiBibG9i
RGF0YS5yZWxlYXNlKCk7CiB9CkBAIC0xMjcsNiArMTQxLDE5IEBAIEZpbGU6OkZpbGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQogfQogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorRmlsZTo6RmlsZShJc0ZvckRyYWdnaW5nVGFnLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICA6IEJsb2IoY3JlYXRl
QmxvYkRhdGFGb3JEcmFnZ2VkRmlsZShwYXRoKSwgLTEpCisgICAgLCBtX3BhdGgocGF0aCkKKyAg
ICAsIG1fbmFtZShwYXRoR2V0RmlsZU5hbWUocGF0aCkpCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQorICAgICwgbV9zbmFwc2hvdFNpemUoLTEpCisgICAgLCBtX3NuYXBzaG90TW9kaWZpY2F0aW9u
VGltZShpbnZhbGlkRmlsZVRpbWUoKSkKKyNlbmRpZgoreworfQorI2VuZGlmCisKIGRvdWJsZSBG
aWxlOjpsYXN0TW9kaWZpZWREYXRlKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoRklMRV9TWVNURU0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IGUzY2EyYTVhOGMzNzZmMmQzMzk4MDIwZTc0YjdmOWZm
MGZhY2MwZTMuLjE3NTZlMGI3ZDA2ZmQ5NjMwMzUwZGMzMTZkMGI4NzE3YWM2OWEwYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5oCkBAIC03MSw2ICs3MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRmlsZShwYXRoLCBuYW1lKSk7CiAgICAgfQogCisjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKKyAgICAvLyBDcmVhdGUgYSBmaWxlIHRoYXQgcmVwcmVzZW50cyBhIGZpbGUg
YmVpbmcgZHJhZ2dlZCBpbi4gVGhpcyBpcyBhIHNwZWNpYWwgZnVuY3Rpb24gYmVjYXVzZSBpdAor
ICAgIC8vIHVzZXMgYWxsIE1JTUUgdHlwZXMgdGhhdCBXZWJLaXQgZGV0ZWN0cyBzdXBwb3J0IGZv
ciBvbiB0aGUgT1MsIG5vdCBqdXN0IHRoZSBoYXJkY29kZWQgbGlzdC4KKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGaWxlPiBjcmVhdGVGb3JEcmFnZ2luZyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgbmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShJ
c0ZvckRyYWdnaW5nLCBwYXRoLCBuYW1lKSk7CisgICAgfQorI2VuZGlmCisKICAgICB2aXJ0dWFs
IHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRmls
ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApAQCAtODksNiArOTgsMTIgQEAgcHVibGljOgog
ICAgIHZvaWQgY2FwdHVyZVNuYXBzaG90KGxvbmcgbG9uZyYgc25hcHNob3RTaXplLCBkb3VibGUm
IHNuYXBzaG90TW9kaWZpY2F0aW9uVGltZSkgY29uc3Q7CiAKIHByaXZhdGU6CisjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKKyAgICBlbnVtIElzRm9yRHJhZ2dpbmdUYWcgeyBJc0ZvckRyYWdnaW5n
LCB9OworCisgICAgRmlsZShJc0ZvckRyYWdnaW5nVGFnLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgbmFtZSk7CisjZW5kaWYKKwogICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRo
KTsKIAogICAgIC8vIEZvciBkZXNlcmlhbGl6YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURhdGFPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmNwcAppbmRleCA1MDM4
M2I2OGVhNGFkYWNiZDJhZmFjZDJhMGFjNmJhZDA5ZDk5ZTQ2Li42MmMxN2I1MGNlMjg4OGFhMGUy
NmMzNDFjNGE5OTM0ZmNiMDk2YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9DaHJvbWl1bURhdGFPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdC5jcHAKQEAgLTIwOSw3ICsyMDksNyBA
QCBWZWN0b3I8U3RyaW5nPiBDaHJvbWl1bURhdGFPYmplY3Q6OmZpbGVuYW1lcygpIGNvbnN0CiAK
IHZvaWQgQ2hyb21pdW1EYXRhT2JqZWN0OjphZGRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKQogewotICAgIGludGVybmFsQWRkRmlsZUl0
ZW0oQ2hyb21pdW1EYXRhT2JqZWN0SXRlbTo6Y3JlYXRlRnJvbUZpbGUoRmlsZTo6Y3JlYXRlV2l0
aE5hbWUoZmlsZW5hbWUsIGRpc3BsYXlOYW1lKSkpOworICAgIGludGVybmFsQWRkRmlsZUl0ZW0o
Q2hyb21pdW1EYXRhT2JqZWN0SXRlbTo6Y3JlYXRlRnJvbUZpbGUoRmlsZTo6Y3JlYXRlRm9yRHJh
Z2dpbmcoZmlsZW5hbWUsIGRpc3BsYXlOYW1lKSkpOwogfQogCiB2b2lkIENocm9taXVtRGF0YU9i
amVjdDo6YWRkU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153415</attachid>
            <date>2012-07-19 22:38:24 -0700</date>
            <delta_ts>2012-07-23 13:48:33 -0700</delta_ts>
            <desc>Patch (adds special ctor for FileSystem)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>9803</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">Y29tbWl0IGI5ZGYwMjIxZjZjYjI2OTUwNzVmYzViZjAwZWI4ZWE5YTcwYTEyZTYKQXV0aG9yOiBL
aW51a28gWWFzdWRhIDxraW51a29AY2hyb21pdW0ub3JnPgpEYXRlOiAgIEZyaSBKdWwgMjAgMTI6
NDY6MTQgMjAxMiArMDkwMAoKICAgIGZpeGluZwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZWJhYzlhLi43ZWQx
ZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMDctMTkgIEtpbnVrbyBZYXN1
ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZpbGUgc2hvdWxkIHVzZSBnZXRN
SU1FVHlwZUZvckV4dGVuc2lvbiB3aGVuIGd1ZXNzaW5nIGNvbnRlbnQgdHlwZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNzAyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcjExNzQzMiBoYXMgYnJva2Vu
IFlvdXR1YmUgZHJhZy1hbmQtZHJvcCBiZWNhdXNlIHRoZSBjaGFuZ2UgaGFkIHdyb25nbHkgY29u
dmVydGVkIHNvbWUgZ2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oKSBjYWxsc2l0ZXMgdG8gdXNlCisg
ICAgICAgIGdldFdlbGxLbm93bk1JTUVUeXBlRm9yRXh0ZW5zaW9uKCksIHdoaWNoIG5lZWRzIHRv
IGJlIHVzZWQgZm9yIGxpbWl0ZWQgY2FzZXMgd2hlcmUgd2UgZG8gbm90IHdhbnQgdG8gbWFrZSB0
aGUgY29kZSByZWx5IG9uIHRoZSBsb2NhbCBNSU1FCisgICAgICAgIHJlcG9zaXRvcnkgKGUuZy4g
Zm9yIGZpbGVzIGZyb20gRmlsZVN5c3RlbSBBUEkpLgorCisgICAgICAgIFRoaXMgYWRkcyBhIHNw
ZWNpYWwgRmlsZSBjb25zdHJ1Y3RvciBGaWxlcyBmcm9tIEZpbGVTeXN0ZW0gQVBJLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
L0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Z2V0
V2VsbEtub3duQ29udGVudFR5cGVGcm9tRmlsZU5hbWUpOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5oOgorICAgICAgICAoRE9NRmlsZVN5c3RlbSk6
CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcDoKKyAg
ICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q29udGVudFR5
cGVGcm9tRmlsZU5hbWUpOiBDaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQmxvYkRh
dGFGb3JGaWxlV2l0aE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgor
ICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRl
Rm9yRmlsZVN5c3RlbUZpbGUpOgorICAgICAgICAoRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlOjpjcmVhdGVXaXRoTmFtZUFuZFR5cGUpOgorCiAyMDEyLTA3LTE5ICBCZW0gSm9uZXMtQmV5
ICA8YmpvbmVzYmVAYWRvYmUuY29tPgogCiAgICAgICAgIFNoYXBlLWluc2lkZSAvIHNoYXBlLW91
dHNpZGUgc2hvdWxkIHN1cHBvcnQgcGVyY2VudC1iYXNlZCBtZWFzdXJlbWVudHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmNwcAppbmRl
eCA1MGI1MTg1Li40MDZmYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAi
RmlsZVdyaXRlci5oIgogI2luY2x1ZGUgIkZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaCIKICNpbmNs
dWRlICJGaWxlV3JpdGVyQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtODYsNiArODcsMTYg
QEAgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBET01GaWxlU3lzdGVtOjpjcmVhdGVJc29sYXRl
ZEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW8KICAgICByZXR1cm4gRE9NRmlsZVN5c3RlbTo6Y3Jl
YXRlKGNvbnRleHQsIGZpbGVzeXN0ZW1OYW1lLnRvU3RyaW5nKCksIEZpbGVTeXN0ZW1UeXBlSXNv
bGF0ZWQsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByb290VVJMLnRvU3RyaW5nKCkpLCBBc3luY0Zp
bGVTeXN0ZW06OmNyZWF0ZSgpKTsKIH0KIAorU3RyaW5nIERPTUZpbGVTeXN0ZW06OmdldFdlbGxL
bm93bkNvbnRlbnRUeXBlRnJvbUZpbGVOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBT
dHJpbmcgdHlwZTsKKyAgICBpbnQgaW5kZXggPSBuYW1lLnJldmVyc2VGaW5kKCcuJyk7CisgICAg
aWYgKGluZGV4ICE9IC0xKQorICAgICAgICB0eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0V2Vs
bEtub3duTUlNRVR5cGVGb3JFeHRlbnNpb24obmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxKSk7Cisg
ICAgcmV0dXJuIHR5cGU7Cit9CisKKwogRE9NRmlsZVN5c3RlbTo6RE9NRmlsZVN5c3RlbShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0
ZW1UeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtPiBhc3luY0ZpbGVTeXN0ZW0pCiAgICAgOiBET01GaWxlU3lzdGVtQmFzZShjb250ZXh0LCBu
YW1lLCB0eXBlLCByb290VVJMLCBhc3luY0ZpbGVTeXN0ZW0pCiAgICAgLCBBY3RpdmVET01PYmpl
Y3QoY29udGV4dCwgdGhpcykKQEAgLTE2MywxMCArMTc0LDExIEBAIHB1YmxpYzoKIAogICAgICAg
ICAvLyBGb3IgcmVndWxhciBmaWxlc3lzdGVtIHR5cGVzICh0ZW1wb3Jhcnkgb3IgcGVyc2lzdGVu
dCksIHdlIHNob3VsZCBub3QgY2FjaGUgZmlsZSBtZXRhZGF0YSBhcyBpdCBjb3VsZCBjaGFuZ2Ug
RmlsZSBzZW1hbnRpY3MuCiAgICAgICAgIC8vIEZvciBvdGhlciBmaWxlc3lzdGVtIHR5cGVzICh3
aGljaCBjb3VsZCBiZSBwbGF0Zm9ybS1zcGVjaWZpYyBvbmVzKSwgdGhlcmUncyBhIGNoYW5jZSB0
aGF0IHRoZSBmaWxlcyBhcmUgb24gcmVtb3RlIGZpbGVzeXN0ZW0uIElmIHRoZSBwb3J0IGhhcyBy
ZXR1cm5lZCBtZXRhZGF0YSBqdXN0IHBhc3MgaXQgdG8gRmlsZSBjb25zdHJ1Y3RvciAoc28gd2Ug
bWF5IGNhY2hlIHRoZSBtZXRhZGF0YSkuCisgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IERPTUZp
bGVTeXN0ZW06OmdldFdlbGxLbm93bkNvbnRlbnRUeXBlRnJvbUZpbGVOYW1lKG1fbmFtZSk7CiAg
ICAgICAgIGlmIChtX2ZpbGVzeXN0ZW0tPnR5cGUoKSA9PSBGaWxlU3lzdGVtVHlwZVRlbXBvcmFy
eSB8fCBtX2ZpbGVzeXN0ZW0tPnR5cGUoKSA9PSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQpCi0g
ICAgICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZTo6Y3JlYXRlV2l0
aE5hbWUobWV0YWRhdGEucGxhdGZvcm1QYXRoLCBtX25hbWUpLmdldCgpKTsKKyAgICAgICAgICAg
IG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChGaWxlOjpjcmVhdGVXaXRoTmFtZUFuZFR5
cGUobWV0YWRhdGEucGxhdGZvcm1QYXRoLCBtX25hbWUsIG1pbWVUeXBlKS5nZXQoKSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChGaWxl
OjpjcmVhdGVGb3JGaWxlU3lzdGVtRmlsZShtX25hbWUsIG1ldGFkYXRhKS5nZXQoKSk7CisgICAg
ICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZTo6Y3JlYXRlRm9yRmls
ZVN5c3RlbUZpbGUobV9uYW1lLCBtZXRhZGF0YSwgbWltZVR5cGUpLmdldCgpKTsKIAogICAgICAg
ICBtX3N1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmgKaW5kZXggM2I0ZWUxMC4uYTNi
NjMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZp
bGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmls
ZVN5c3RlbS5oCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICAvLyBDcmVhdGVzIGEgbmV3
IGlzb2xhdGVkIGZpbGUgc3lzdGVtIGZvciB0aGUgZ2l2ZW4gZmlsZXN5c3RlbUlkLgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGNyZWF0ZUlzb2xhdGVkRmlsZVN5c3RlbShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBmaWxlc3lzdGVtSWQpOwogCisg
ICAgc3RhdGljIFN0cmluZyBnZXRXZWxsS25vd25Db250ZW50VHlwZUZyb21GaWxlTmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpOworCiAgICAgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcm9vdCgp
OwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IG1ldGhvZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcAppbmRleCBi
YzM2Y2FlLi42OTdkOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXIuaCIKICNp
bmNsdWRlICJET01GaWxlUGF0aC5oIgorI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKICNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiRmlsZS5oIgpAQCAtMTE3LDEwICsxMTgsMTEgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgLy8gRm9yIHJlZ3VsYXIgZmlsZXN5c3RlbSB0eXBlcyAodGVtcG9yYXJ5IG9yIHBlcnNp
c3RlbnQpLCB3ZSBzaG91bGQgbm90IGNhY2hlIGZpbGUgbWV0YWRhdGEgYXMgaXQgY291bGQgY2hh
bmdlIEZpbGUgc2VtYW50aWNzLgogICAgICAgICAvLyBGb3Igb3RoZXIgZmlsZXN5c3RlbSB0eXBl
cyAod2hpY2ggY291bGQgYmUgcGxhdGZvcm0tc3BlY2lmaWMgb25lcyksIHRoZXJlJ3MgYSBjaGFu
Y2UgdGhhdCB0aGUgZmlsZXMgYXJlIG9uIHJlbW90ZSBmaWxlc3lzdGVtLiBJZiB0aGUgcG9ydCBo
YXMgcmV0dXJuZWQgbWV0YWRhdGEganVzdCBwYXNzIGl0IHRvIEZpbGUgY29uc3RydWN0b3IgKHNv
IHdlIG1heSBjYWNoZSB0aGUgbWV0YWRhdGEpLgorICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBE
T01GaWxlU3lzdGVtOjpnZXRXZWxsS25vd25Db250ZW50VHlwZUZyb21GaWxlTmFtZShtX25hbWUp
OwogICAgICAgICBpZiAobV90eXBlID09IEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5IHx8IG1fdHlw
ZSA9PSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQpCi0gICAgICAgICAgICBtX3Jlc3VsdC0+bV9m
aWxlID0gRmlsZTo6Y3JlYXRlV2l0aE5hbWUobWV0YWRhdGEucGxhdGZvcm1QYXRoLCBtX25hbWUp
OworICAgICAgICAgICAgbV9yZXN1bHQtPm1fZmlsZSA9IEZpbGU6OmNyZWF0ZVdpdGhOYW1lQW5k
VHlwZShtZXRhZGF0YS5wbGF0Zm9ybVBhdGgsIG1fbmFtZSwgbWltZVR5cGUpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX3Jlc3VsdC0+bV9maWxlID0gRmlsZTo6Y3JlYXRlRm9yRmlsZVN5
c3RlbUZpbGUobV9uYW1lLCBtZXRhZGF0YSk7CisgICAgICAgICAgICBtX3Jlc3VsdC0+bV9maWxl
ID0gRmlsZTo6Y3JlYXRlRm9yRmlsZVN5c3RlbUZpbGUobV9uYW1lLCBtZXRhZGF0YSwgbWltZVR5
cGUpOwogICAgIH0KIHByaXZhdGU6CiAgICAgQ3JlYXRlRmlsZUhlbHBlcihQYXNzUmVmUHRyPENy
ZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlw
ZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggNWY4YjkzYi4uYThjZThhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0
Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIFN0cmluZyB0
eXBlOwogICAgIGludCBpbmRleCA9IG5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKICAgICBpZiAoaW5k
ZXggIT0gLTEpCi0gICAgICAgIHR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRXZWxsS25vd25N
SU1FVHlwZUZvckV4dGVuc2lvbihuYW1lLnN1YnN0cmluZyhpbmRleCArIDEpKTsKKyAgICAgICAg
dHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKG5hbWUuc3Vi
c3RyaW5nKGluZGV4ICsgMSkpOwogICAgIHJldHVybiB0eXBlOwogfQogCkBAIC02MiwxMCArNjIs
MTAgQEAgc3RhdGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdp
dGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgY28KIH0KIAogI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKLXN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRo
TWV0YWRhdGEoY29uc3QgU3RyaW5nJiBmaWxlU3lzdGVtTmFtZSwgY29uc3QgRmlsZU1ldGFkYXRh
JiBtZXRhZGF0YSkKK3N0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZv
ckZpbGVXaXRoTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgU3Ry
aW5nJiB0eXBlKQogewogICAgIE93blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0YTo6
Y3JlYXRlKCk7Ci0gICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBlKGdldENvbnRlbnRUeXBlRnJv
bUZpbGVOYW1lKGZpbGVTeXN0ZW1OYW1lKSk7CisgICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBl
KHR5cGUpOwogICAgIGJsb2JEYXRhLT5hcHBlbmRGaWxlKG1ldGFkYXRhLnBsYXRmb3JtUGF0aCwg
MCwgbWV0YWRhdGEubGVuZ3RoLCBtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lKTsKICAgICByZXR1
cm4gYmxvYkRhdGEucmVsZWFzZSgpOwogfQpAQCAtMTE3LDggKzExNywxNyBAQCBGaWxlOjpGaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lKQogfQogCiAjaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEZpbGVN
ZXRhZGF0YSYgbWV0YWRhdGEpCi0gICAgOiBCbG9iKGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhN
ZXRhZGF0YShuYW1lLCBtZXRhZGF0YSksIG1ldGFkYXRhLmxlbmd0aCkKK0ZpbGU6OkZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSkK
KyAgICA6IEJsb2IoY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0aCwgdHlwZSksIC0x
KQorICAgICwgbV9wYXRoKHBhdGgpCisgICAgLCBtX25hbWUobmFtZSkKKyAgICAsIG1fc25hcHNo
b3RTaXplKC0xKQorICAgICwgbV9zbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUoaW52YWxpZEZpbGVU
aW1lKCkpCit7Cit9CisKK0ZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBGaWxl
TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUpCisgICAgOiBCbG9iKGNyZWF0
ZUJsb2JEYXRhRm9yRmlsZVdpdGhNZXRhZGF0YShtZXRhZGF0YSwgdHlwZSksIG1ldGFkYXRhLmxl
bmd0aCkKICAgICAsIG1fcGF0aChtZXRhZGF0YS5wbGF0Zm9ybVBhdGgpCiAgICAgLCBtX25hbWUo
bmFtZSkKICAgICAsIG1fc25hcHNob3RTaXplKG1ldGFkYXRhLmxlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlLmgKaW5kZXggZTNjYTJhNS4uMjA2Mjc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKQEAgLTU3
LDkgKzU3LDE0IEBAIHB1YmxpYzoKICAgICAvLyBJZiBmaWxlc3lzdGVtIGZpbGVzIGxpdmUgaW4g
dGhlIHJlbW90ZSBmaWxlc3lzdGVtLCB0aGUgcG9ydCBtaWdodCBwYXNzIHRoZSB2YWxpZCBtZXRh
ZGF0YSAod2hvc2UgbGVuZ3RoIGZpZWxkIGlzIG5vbi1uZWdhdGl2ZSkgYW5kIGNhY2hlIGluIHRo
ZSBGaWxlIG9iamVjdC4KICAgICAvLwogICAgIC8vIE90aGVyd2lzZSBjYWxsaW5nIHNpemUoKSwg
bGFzdE1vZGlmaWVkVGltZSgpIGFuZCBzbGljZSgpIHdpbGwgc3luY2hyb25vdXNseSBxdWVyeSB0
aGUgZmlsZSBtZXRhZGF0YS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGVGb3JG
aWxlU3lzdGVtRmlsZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0
YWRhdGEpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZT4gY3JlYXRlRm9yRmlsZVN5c3RlbUZp
bGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhLCBjb25z
dCBTdHJpbmcmIHR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUo
bmFtZSwgbWV0YWRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlKG5hbWUs
IG1ldGFkYXRhLCB0eXBlKSk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZT4g
Y3JlYXRlV2l0aE5hbWVBbmRUeXBlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEZpbGUocGF0aCwgbmFtZSwgdHlwZSkpOwogICAgIH0KICNlbmRpZgogCkBAIC05Niw3ICsx
MDEsOCBAQCBwcml2YXRlOgogICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG5hbWUpOwogCiAjIGlmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBGaWxlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgRmlsZU1ldGFkYXRhJik7CisgICAgRmlsZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IEZpbGVNZXRhZGF0YSYsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB0
eXBlKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGhhcyBhIHZhbGlkIHNuYXBzaG90
IG1ldGFkYXRhIChpLmUuIG1fc25hcHNob3RTaXplID49IDApLgogICAgIGJvb2wgaGFzVmFsaWRT
bmFwc2hvdE1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwc2hvdFNpemUgPj0gMDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153588</attachid>
            <date>2012-07-20 13:40:19 -0700</date>
            <delta_ts>2012-07-23 13:48:39 -0700</delta_ts>
            <desc>Special ctor for drag/file input</desc>
            <filename>bug-91702-20120720134015.patch</filename>
            <type>text/plain</type>
            <size>12510</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFlOWM5OGQ5OGNkZGJi
MjM5MDAwMTk2NGMyNDRlZDM3NWM1MjZkYi4uMzEzYjAzZWM2NzUxNzFkMWU3NTAyNTc3OTA3YThk
NzcwNjFjMDYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA3LTIwICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZpbGUgc2hvdWxkIHVz
ZSBnZXRNSU1FVHlwZUZvckV4dGVuc2lvbiB3aGVuIGd1ZXNzaW5nIGNvbnRlbnQgdHlwZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNzAyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgYnJva2UgY29u
dGVudCB0eXBlIGRldGVjdGlvbiBvbiBzaXRlcyBsaWtlIFlvdXR1YmUncyBkcmFnIGFuZCBkcm9w
IHVwbG9hZGVyIHdoZW4gd2UKKyAgICAgICAgY2hhbmdlZCBhbGwgRmlsZSBjb25zdHJ1Y3RvcnMg
dG8gdXNlIGdldFdlbGxLbm93bk1JTUVUeXBlRm9yRXh0ZW5zaW9uIHJhdGhlciB0aGFuCisgICAg
ICAgIGdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uLiBUaGlzIGNoYW5nZSBhZGRzIGJhY2sgYSBzcGVj
aWFsIGNvbnN0cnVjdG9yIHRvIHVzZSBmb3IgZmlsZXMgaW4gYQorICAgICAgICBkcmFnIG9yIHNl
bGVjdGVkIGZyb20gYSBmaWxlIGlucHV0IGZpbGVzIHRoYXQgdXNlcyB0aGUgb3JpZ2luYWwgY29k
ZSBwYXRoIHNvIHdlIGNhbiBzbmlmZiBhCisgICAgICAgIHdpZGVyIHZhcmlldHkgb2YgTUlNRSB0
eXBlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGZpbGVh
cGkvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRXZWxsS25vd25Db250ZW50VHlwZUZy
b21GaWxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDb250ZW50VHlwZUZyb21GaWxlTmFt
ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJsb2JEYXRh
Rm9yRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCbG9iRGF0YUZvckZpbGVGcm9tVXNl
ckFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTWV0YWRhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aEZyb21Vc2Vy
QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZS5oOgorICAgICAgICAoRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjcmVh
dGVXaXRoTmFtZUZyb21Vc2VyQWN0aW9uKToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlRmlsZUxpc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWl1bURhdGFPYmplY3Q6OmFkZEZpbGVuYW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0
azo6ZmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6OmZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9DbGlwYm9hcmRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6ZmlsZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkV2luOjpmaWxlcyk6CisKIDIwMTItMDctMTggIFNlcmdleSBSb2d1bGVu
a28gIDxyb2d1bGVua29AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGRp
bmcgcGF1c2UgaWNvbiBmb3IgSmF2YVNjcmlwdCBkZWJ1Z2dpbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
Y3BwCmluZGV4IDVmOGI5M2I3ODI4ZDQzMTJlYTgxN2EwMDFmNjQxNTE2NjE0MmMyNDIuLmVkNmVi
ZmM4YjFlODFjMGQyOGQ4NDY2ODc3ZjgyYmEzMmI1YTI0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
LmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBT
dHJpbmcgZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQorc3Rh
dGljIFN0cmluZyBnZXRXZWxsS25vd25Db250ZW50VHlwZUZyb21GaWxlTmFtZShjb25zdCBTdHJp
bmcmIG5hbWUpCiB7CiAgICAgU3RyaW5nIHR5cGU7CiAgICAgaW50IGluZGV4ID0gbmFtZS5yZXZl
cnNlRmluZCgnLicpOwpAQCAtNDMsNiArNDMsMTUgQEAgc3RhdGljIFN0cmluZyBnZXRDb250ZW50
VHlwZUZyb21GaWxlTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIHR5cGU7CiB9
CiAKK3N0YXRpYyBTdHJpbmcgZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoY29uc3QgU3RyaW5n
JiBuYW1lKQoreworICAgIFN0cmluZyB0eXBlOworICAgIGludCBpbmRleCA9IG5hbWUucmV2ZXJz
ZUZpbmQoJy4nKTsKKyAgICBpZiAoaW5kZXggIT0gLTEpCisgICAgICAgIHR5cGUgPSBNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihuYW1lLnN1YnN0cmluZyhpbmRleCAr
IDEpKTsKKyAgICByZXR1cm4gdHlwZTsKK30KKwogc3RhdGljIFBhc3NPd25QdHI8QmxvYkRhdGE+
IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhUeXBlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0g
QmxvYkRhdGE6OmNyZWF0ZSgpOwpAQCAtNTMsMjggKzYyLDMzIEBAIHN0YXRpYyBQYXNzT3duUHRy
PEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoVHlwZShjb25zdCBTdHJpbmcmIHBh
dGgsIGNvCiAKIHN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIHJldHVybiBjcmVhdGVCbG9iRGF0YUZvckZp
bGVXaXRoVHlwZShwYXRoLCBnZXRXZWxsS25vd25Db250ZW50VHlwZUZyb21GaWxlTmFtZShwYXRo
KSk7Cit9CisKK3N0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZp
bGVGcm9tVXNlckFjdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7CiAgICAgcmV0dXJuIGNyZWF0
ZUJsb2JEYXRhRm9yRmlsZVdpdGhUeXBlKHBhdGgsIGdldENvbnRlbnRUeXBlRnJvbUZpbGVOYW1l
KHBhdGgpKTsKIH0KIAogc3RhdGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRh
Rm9yRmlsZVdpdGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlU3lz
dGVtTmFtZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0
aCwgZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoZmlsZVN5c3RlbU5hbWUpKTsKKyAgICByZXR1
cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0aCwgZ2V0V2VsbEtub3duQ29udGVu
dFR5cGVGcm9tRmlsZU5hbWUoZmlsZVN5c3RlbU5hbWUpKTsKIH0KIAogI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKIHN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZp
bGVXaXRoTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBmaWxlU3lzdGVtTmFtZSwgY29uc3QgRmlsZU1l
dGFkYXRhJiBtZXRhZGF0YSkKIHsKICAgICBPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxv
YkRhdGE6OmNyZWF0ZSgpOwotICAgIGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZShnZXRDb250ZW50
VHlwZUZyb21GaWxlTmFtZShmaWxlU3lzdGVtTmFtZSkpOworICAgIGJsb2JEYXRhLT5zZXRDb250
ZW50VHlwZShnZXRXZWxsS25vd25Db250ZW50VHlwZUZyb21GaWxlTmFtZShmaWxlU3lzdGVtTmFt
ZSkpOwogICAgIGJsb2JEYXRhLT5hcHBlbmRGaWxlKG1ldGFkYXRhLnBsYXRmb3JtUGF0aCwgMCwg
bWV0YWRhdGEubGVuZ3RoLCBtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lKTsKICAgICByZXR1cm4g
YmxvYkRhdGEucmVsZWFzZSgpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQ
TE9BRCkKLVBhc3NSZWZQdHI8RmlsZT4gRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKQorUGFzc1JlZlB0cjxG
aWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoRnJvbVVzZXJBY3Rpb24oY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCkKIHsKLSAgICBSZWZQdHI8Rmls
ZT4gZmlsZSA9IGFkb3B0UmVmKG5ldyBGaWxlKHBhdGgpKTsKKyAgICBSZWZQdHI8RmlsZT4gZmls
ZSA9IGFkb3B0UmVmKG5ldyBGaWxlKEZyb21Vc2VyQWN0aW9uLCBwYXRoLCBwYXRoR2V0RmlsZU5h
bWUocGF0aCkpKTsKICAgICBmaWxlLT5tX3JlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aDsKICAg
ICByZXR1cm4gZmlsZS5yZWxlYXNlKCk7CiB9CkBAIC0xMTYsNiArMTMwLDE3IEBAIEZpbGU6OkZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiB9CiAKK0ZpbGU6
OkZpbGUoRnJvbVVzZXJBY3Rpb25UYWcsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBuYW1lKQorICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZvckZpbGVGcm9tVXNlckFjdGlvbihw
YXRoKSwgLTEpCisgICAgLCBtX3BhdGgocGF0aCkKKyAgICAsIG1fbmFtZShuYW1lLmlzRW1wdHko
KSA/IHBhdGhHZXRGaWxlTmFtZShwYXRoKSA6IG5hbWUpCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQorICAgICwgbV9zbmFwc2hvdFNpemUoLTEpCisgICAgLCBtX3NuYXBzaG90TW9kaWZpY2F0aW9u
VGltZShpbnZhbGlkRmlsZVRpbWUoKSkKKyNlbmRpZgoreworfQorCiAjaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQogRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEZpbGVNZXRhZGF0
YSYgbWV0YWRhdGEpCiAgICAgOiBCbG9iKGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhNZXRhZGF0
YShuYW1lLCBtZXRhZGF0YSksIG1ldGFkYXRhLmxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5k
ZXggZTNjYTJhNWE4YzM3NmYyZDMzOTgwMjBlNzRiN2Y5ZmYwZmFjYzBlMy4uZmEyMmRhMjBiZGI3
M2FlMTMwMmFjMTg5ZTYwYTc5N2MzYjY4ODI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKQEAgLTUw
LDcgKzUwLDcgQEAgcHVibGljOgogICAgIH0KIAogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FE
KQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RmlsZT4gY3JlYXRlV2l0aFJlbGF0aXZlUGF0aEZyb21Vc2VyQWN0aW9uKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCkBAIC03MSw2ICs3MSwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRoLCBuYW1lKSk7CiAgICAgfQogCisgICAg
Ly8gQ3JlYXRlIGEgZmlsZSB0aGF0IHJlcHJlc2VudHMgYSBmaWxlIGJlaW5nIGRyYWdnZWQgaW4u
IFRoaXMgaXMgYSBzcGVjaWFsIGZ1bmN0aW9uIGJlY2F1c2UgaXQKKyAgICAvLyB1c2VzIGFsbCBN
SU1FIHR5cGVzIHRoYXQgV2ViS2l0IGRldGVjdHMgc3VwcG9ydCBmb3Igb24gdGhlIE9TLCBub3Qg
anVzdCB0aGUgaGFyZGNvZGVkIGxpc3QuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZT4gY3Jl
YXRlV2l0aE5hbWVGcm9tVXNlckFjdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShGcm9tVXNl
ckFjdGlvbiwgcGF0aCwgbmFtZSkpOworICAgIH0KKwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9u
ZyBsb25nIHNpemUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCkBAIC04OSwxMSArOTYsMTQgQEAgcHVibGljOgogICAgIHZvaWQgY2Fw
dHVyZVNuYXBzaG90KGxvbmcgbG9uZyYgc25hcHNob3RTaXplLCBkb3VibGUmIHNuYXBzaG90TW9k
aWZpY2F0aW9uVGltZSkgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgZW51bSBGcm9tVXNlckFjdGlv
blRhZyB7IEZyb21Vc2VyQWN0aW9uLCB9OworCiAgICAgRmlsZShjb25zdCBTdHJpbmcmIHBhdGgp
OwogCiAgICAgLy8gRm9yIGRlc2VyaWFsaXphdGlvbi4KICAgICBGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgS1VSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIEZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIEZpbGUoRnJvbVVz
ZXJBY3Rpb25UYWcsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAog
IyBpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgRmlsZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IEZpbGVNZXRhZGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5k
ZXggZjM5NzMzZDE1ZjFiMGE3MzQ5MmEwOGU2MmM0YTRhODU1NmQ4ZWU0Zi4uMWZiMmIzNDkwYzcx
MjA4NzYwYmEzYTlmZDMxM2FmMTA0ZTlkYjdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1
dFR5cGUuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgYm9vbCBGaWxlSW5wdXRUeXBlOjphcHBlbmRG
b3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29sIG11bHRpcGFydCkgY29uc3QKICAg
ICAvLyBJZiBubyBmaWxlbmFtZSBhdCBhbGwgaXMgZW50ZXJlZCwgcmV0dXJuIHN1Y2Nlc3NmdWwg
YnV0IGVtcHR5LgogICAgIC8vIE51bGwgd291bGQgYmUgbW9yZSBsb2dpY2FsLCBidXQgTmV0c2Nh
cGUgcG9zdHMgYW4gZW1wdHkgZmlsZS4gQXJnaC4KICAgICBpZiAoIW51bUZpbGVzKSB7Ci0gICAg
ICAgIGVuY29kaW5nLmFwcGVuZEJsb2IoZWxlbWVudCgpLT5uYW1lKCksIEZpbGU6OmNyZWF0ZSgi
IikpOworICAgICAgICBlbmNvZGluZy5hcHBlbmRCbG9iKGVsZW1lbnQoKS0+bmFtZSgpLCBGaWxl
OjpjcmVhdGVXaXRoTmFtZUZyb21Vc2VyQWN0aW9uKFN0cmluZygpLCBTdHJpbmcoKSkpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI3NywxNCArMjc3LDE0IEBAIFBhc3NSZWZQ
dHI8RmlsZUxpc3Q+IEZpbGVJbnB1dFR5cGU6OmNyZWF0ZUZpbGVMaXN0KGNvbnN0IFZlY3RvcjxG
aWxlQ2hvb3NlckZpbGVJCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsr
KSB7CiAgICAgICAgICAgICAvLyBOb3JtYWxpemUgYmFja3NsYXNoZXMgdG8gc2xhc2hlcyBiZWZv
cmUgZXhwb3NpbmcgdGhlIHJlbGF0aXZlIHBhdGggdG8gc2NyaXB0LgogICAgICAgICAgICAgU3Ry
aW5nIHJlbGF0aXZlUGF0aCA9IGZpbGVzW2ldLnBhdGguc3Vic3RyaW5nKHJvb3RMZW5ndGgpLnJl
cGxhY2UoJ1xcJywgJy8nKTsKLSAgICAgICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3Jl
YXRlV2l0aFJlbGF0aXZlUGF0aChmaWxlc1tpXS5wYXRoLCByZWxhdGl2ZVBhdGgpKTsKKyAgICAg
ICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aEZyb21V
c2VyQWN0aW9uKGZpbGVzW2ldLnBhdGgsIHJlbGF0aXZlUGF0aCkpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBmaWxlTGlzdDsKICAgICB9CiAjZW5kaWYKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgaSsrKQotICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0
ZVdpdGhOYW1lKGZpbGVzW2ldLnBhdGgsIGZpbGVzW2ldLmRpc3BsYXlOYW1lKSk7CisgICAgICAg
IGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlV2l0aE5hbWVGcm9tVXNlckFjdGlvbihmaWxl
c1tpXS5wYXRoLCBmaWxlc1tpXS5kaXNwbGF5TmFtZSkpOwogICAgIHJldHVybiBmaWxlTGlzdDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21p
dW1EYXRhT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9t
aXVtRGF0YU9iamVjdC5jcHAKaW5kZXggNTAzODNiNjhlYTRhZGFjYmQyYWZhY2QyYTBhYzZiYWQw
OWQ5OWU0Ni4uOWI3ZjI4ODNlOTRlYzZiZTZmZjRiMGQyZGUzMzAxMDExODE4YTI0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURhdGFP
YmplY3QuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gQ2hyb21pdW1EYXRh
T2JqZWN0OjpmaWxlbmFtZXMoKSBjb25zdAogCiB2b2lkIENocm9taXVtRGF0YU9iamVjdDo6YWRk
RmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSkKIHsKLSAgICBpbnRlcm5hbEFkZEZpbGVJdGVtKENocm9taXVtRGF0YU9iamVjdEl0ZW06OmNy
ZWF0ZUZyb21GaWxlKEZpbGU6OmNyZWF0ZVdpdGhOYW1lKGZpbGVuYW1lLCBkaXNwbGF5TmFtZSkp
KTsKKyAgICBpbnRlcm5hbEFkZEZpbGVJdGVtKENocm9taXVtRGF0YU9iamVjdEl0ZW06OmNyZWF0
ZUZyb21GaWxlKEZpbGU6OmNyZWF0ZVdpdGhOYW1lRnJvbVVzZXJBY3Rpb24oZmlsZW5hbWUsIGRp
c3BsYXlOYW1lKSkpOwogfQogCiB2b2lkIENocm9taXVtRGF0YU9iamVjdDo6YWRkU2hhcmVkQnVm
ZmVyKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKaW5kZXggYjIy
YWRmNGE0YTBjYzMxNjM4M2EzNjYxZjJkYThjMzExMmEyNzZmZi4uN2FiNmNhNWM3NjYxMDAwNGUw
NGU0MGY4N2YwMTk0NDQ5OTVkMjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0NsaXBib2FyZEd0ay5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBQYXNzUmVmUHRyPEZpbGVMaXN0
PiBDbGlwYm9hcmRHdGs6OmZpbGVzKCkgY29uc3QKICAgICBSZWZQdHI8RmlsZUxpc3Q+IGZpbGVM
aXN0ID0gRmlsZUxpc3Q6OmNyZWF0ZSgpOwogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxl
bmFtZXMgPSBtX2RhdGFPYmplY3QtPmZpbGVuYW1lcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZmlsZW5hbWVzLnNpemUoKTsgaSsrKQotICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZp
bGU6OmNyZWF0ZShmaWxlbmFtZXNbaV0pKTsKKyAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxl
OjpjcmVhdGVXaXRoTmFtZUZyb21Vc2VyQWN0aW9uKGZpbGVuYW1lc1tpXSwgU3RyaW5nKCkpKTsK
ICAgICByZXR1cm4gZmlsZUxpc3QucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRleCAyMGVjMmZiYTJmZjhkOGM0NTA5OTY4M2Vi
YzdhNGVjZDY1Mjk4NWRkLi44YzNjYWJiZGNiMzk5ODJhMWE3Y2IxZmYyNzYwOTA2OTFlNzAwNmM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KQEAgLTMy
MSw3ICszMjEsNyBAQCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9hcmRNYWM6OmZpbGVzKCkg
Y29uc3QKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFic29sdXRlVVJMcy5zaXplKCk7IGkr
KykgewogICAgICAgICBOU1VSTCAqYWJzb2x1dGVVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzph
YnNvbHV0ZVVSTHNbaV1dOwogICAgICAgICBBU1NFUlQoW2Fic29sdXRlVVJMIGlzRmlsZVVSTF0p
OwotICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShbYWJzb2x1dGVVUkwgcGF0
aF0pKTsKKyAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoTmFtZUZyb21V
c2VyQWN0aW9uKFthYnNvbHV0ZVVSTCBwYXRoXSwgU3RyaW5nKCkpKTsKICAgICB9CiAgICAgcmV0
dXJuIGZpbGVMaXN0LnJlbGVhc2UoKTsgLy8gV2Ugd2lsbCBhbHdheXMgcmV0dXJuIGEgRmlsZUxp
c3QsIHNvbWV0aW1lcyBlbXB0eQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvQ2xpcGJvYXJkUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJv
YXJkUXQuY3BwCmluZGV4IDhlNGM1ODAwZDdjZjkwNGJjYWRhMjBlNjE0M2M2YTE5N2QxM2NiZWQu
LjBmMDg5YmI5MTg5NzAxYjA0MDNlNTg5MWM3YzE4MzI0ZDcxYTZmNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBQYXNz
UmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9hcmRRdDo6ZmlsZXMoKSBjb25zdAogICAgICAgICBRVXJs
IHVybCA9IHVybHNbaV07CiAgICAgICAgIGlmICh1cmwuc2NoZW1lKCkgIT0gUUxhdGluMVN0cmlu
ZygiZmlsZSIpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGZpbGVMaXN0LT5hcHBl
bmQoRmlsZTo6Y3JlYXRlKHVybC50b0xvY2FsRmlsZSgpKSk7CisgICAgICAgIGZpbGVMaXN0LT5h
cHBlbmQoRmlsZTo6Y3JlYXRlV2l0aE5hbWVGcm9tVXNlckFjdGlvbih1cmwudG9Mb2NhbEZpbGUo
KSwgU3RyaW5nKCkpKTsKICAgICB9CiAKICAgICByZXR1cm4gZmlsZUxpc3QucmVsZWFzZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAppbmRleCAxMmNi
OGJmMDFlMzBkNWMxZDZlMjM3NmFmZDk4NDgzOGE3MzEyZWNhLi5iMjJhNzhkMDJjN2IzOWFiYzY0
ZWI1ODA5OGJhZjg0MzJjODk4MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmNwcApAQCAtNTYwLDcgKzU2MCw3IEBAIFBhc3NSZWZQdHI8RmlsZUxpc3Q+
IENsaXBib2FyZFdpbjo6ZmlsZXMoKSBjb25zdAogICAgICAgICBmb3IgKFVJTlQgaSA9IDA7IGkg
PCBmaWxlQ291bnQ7IGkrKykgewogICAgICAgICAgICAgaWYgKCFEcmFnUXVlcnlGaWxlVyhoZHJv
cCwgaSwgZmlsZW5hbWUsIFdURl9BUlJBWV9MRU5HVEgoZmlsZW5hbWUpKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGZpbGVzLT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihmaWxlbmFtZSkpKTsKKyAgICAgICAgICAgIGZpbGVzLT5h
cHBlbmQoRmlsZTo6Y3JlYXRlV2l0aE5hbWVGcm9tVXNlckFjdGlvbihyZWludGVycHJldF9jYXN0
PFVDaGFyKj4oZmlsZW5hbWUpLCBTdHJpbmcoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgR2xv
YmFsVW5sb2NrKG1lZGl1bS5oR2xvYmFsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153856</attachid>
            <date>2012-07-23 13:48:44 -0700</date>
            <delta_ts>2012-07-23 17:40:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91702-20120723134837.patch</filename>
            <type>text/plain</type>
            <size>12724</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzEwMzdiYTlkZjA2NDI5
MmIwMTRiNWQ2YjYxZGI0ZGRiYWQxNjEwNS4uZWM3OTc4ZDBlNGNlZDQ0YmYyNjQxOTcwYjAwOWZm
ZTk4NmY5ZDllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA3LTIwICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZpbGUgc2hvdWxkIHVz
ZSBnZXRNSU1FVHlwZUZvckV4dGVuc2lvbiB3aGVuIGd1ZXNzaW5nIGNvbnRlbnQgdHlwZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNzAyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgYnJva2UgY29u
dGVudCB0eXBlIGRldGVjdGlvbiBvbiBzaXRlcyBsaWtlIFlvdXR1YmUncyBkcmFnIGFuZCBkcm9w
IHVwbG9hZGVyIHdoZW4gd2UKKyAgICAgICAgY2hhbmdlZCBhbGwgRmlsZSBjb25zdHJ1Y3RvcnMg
dG8gdXNlIGdldFdlbGxLbm93bk1JTUVUeXBlRm9yRXh0ZW5zaW9uIHJhdGhlciB0aGFuCisgICAg
ICAgIGdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uIGZvciBzZWN1cml0eSByZWFzb25zLS13ZSBkaWRu
J3Qgd2FudCBhcmJpdHJhcnkgd2ViIHBhZ2VzIHRvIGJlIGFibGUKKyAgICAgICAgdG8gZGV0ZWN0
IHdoYXQgYXBwbGljYXRpb25zIGEgdXNlciBoYXMgaW5zdGFsbGVkLiBUaGlzIGNoYW5nZSBhZGRz
IGEgc3BlY2lhbCBjb25zdHJ1Y3RvciB0bworICAgICAgICB1c2UgZm9yIGZpbGVzIHNlbGVjdGVk
IGFzIGEgcmVzdWx0IG9mIGEgdXNlciBhY3Rpb24gdGhhdCB1c2VzIHRoZSBvcmlnaW5hbCBjb2Rl
IHBhdGguCisKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0V2VsbEtub3duQ29udGVudFR5cGVGcm9tRmlsZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVCbG9iRGF0YUZvckZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlQmxvYkRhdGFGb3JGaWxlRnJvbVVzZXJBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlQmxvYkRhdGFGb3JGaWxlV2l0aE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQmxv
YkRhdGFGb3JGaWxlV2l0aE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0
ZVdpdGhSZWxhdGl2ZVBhdGhGcm9tVXNlckFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
OjpGaWxlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaDoKKyAgICAgICAgKEZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlV2l0aE5hbWVGcm9tVXNlckFjdGlvbik6CisgICAg
ICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1
dFR5cGU6OmFwcGVuZEZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6
OmNyZWF0ZUZpbGVMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURh
dGFPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1EYXRhT2JqZWN0OjphZGRG
aWxlbmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvQ2xpcGJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkTWFjOjpmaWxl
cyk6CisgICAgICAgICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkUXQ6OmZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6ZmlsZXMpOgorCiAy
MDEyLTA3LTIzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+
CiAKICAgICAgICAgW0VGTF0gbWVkaWEvY29udHJvbHMtc3R5bGluZy5odG1sIGlzIGZhaWxpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IDVmOGI5M2I3ODI4ZDQzMTJlYTgxN2EwMDFmNjQx
NTE2NjE0MmMyNDIuLmVkNmViZmM4YjFlODFjMGQyOGQ4NDY2ODc3ZjgyYmEzMmI1YTI0NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBTdHJpbmcgZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lKQorc3RhdGljIFN0cmluZyBnZXRXZWxsS25vd25Db250ZW50VHlwZUZyb21G
aWxlTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgU3RyaW5nIHR5cGU7CiAgICAgaW50
IGluZGV4ID0gbmFtZS5yZXZlcnNlRmluZCgnLicpOwpAQCAtNDMsNiArNDMsMTUgQEAgc3RhdGlj
IFN0cmluZyBnZXRDb250ZW50VHlwZUZyb21GaWxlTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgcmV0dXJuIHR5cGU7CiB9CiAKK3N0YXRpYyBTdHJpbmcgZ2V0Q29udGVudFR5cGVGcm9tRmls
ZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIFN0cmluZyB0eXBlOworICAgIGludCBp
bmRleCA9IG5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBpZiAoaW5kZXggIT0gLTEpCisgICAg
ICAgIHR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihuYW1l
LnN1YnN0cmluZyhpbmRleCArIDEpKTsKKyAgICByZXR1cm4gdHlwZTsKK30KKwogc3RhdGljIFBh
c3NPd25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhUeXBlKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBPd25QdHI8Qmxv
YkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZSgpOwpAQCAtNTMsMjggKzYyLDMzIEBA
IHN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoVHlw
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvCiAKIHN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBj
cmVhdGVCbG9iRGF0YUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIHJldHVybiBj
cmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoVHlwZShwYXRoLCBnZXRXZWxsS25vd25Db250ZW50VHlw
ZUZyb21GaWxlTmFtZShwYXRoKSk7Cit9CisKK3N0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBj
cmVhdGVCbG9iRGF0YUZvckZpbGVGcm9tVXNlckFjdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7
CiAgICAgcmV0dXJuIGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhUeXBlKHBhdGgsIGdldENvbnRl
bnRUeXBlRnJvbUZpbGVOYW1lKHBhdGgpKTsKIH0KIAogc3RhdGljIFBhc3NPd25QdHI8QmxvYkRh
dGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBmaWxlU3lzdGVtTmFtZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFG
b3JGaWxlV2l0aFR5cGUocGF0aCwgZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoZmlsZVN5c3Rl
bU5hbWUpKTsKKyAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0aCwg
Z2V0V2VsbEtub3duQ29udGVudFR5cGVGcm9tRmlsZU5hbWUoZmlsZVN5c3RlbU5hbWUpKTsKIH0K
IAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIHN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBj
cmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBmaWxlU3lzdGVt
TmFtZSwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKICAgICBPd25QdHI8QmxvYkRh
dGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZSgpOwotICAgIGJsb2JEYXRhLT5zZXRDb250
ZW50VHlwZShnZXRDb250ZW50VHlwZUZyb21GaWxlTmFtZShmaWxlU3lzdGVtTmFtZSkpOworICAg
IGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZShnZXRXZWxsS25vd25Db250ZW50VHlwZUZyb21GaWxl
TmFtZShmaWxlU3lzdGVtTmFtZSkpOwogICAgIGJsb2JEYXRhLT5hcHBlbmRGaWxlKG1ldGFkYXRh
LnBsYXRmb3JtUGF0aCwgMCwgbWV0YWRhdGEubGVuZ3RoLCBtZXRhZGF0YS5tb2RpZmljYXRpb25U
aW1lKTsKICAgICByZXR1cm4gYmxvYkRhdGEucmVsZWFzZSgpOwogfQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKLVBhc3NSZWZQdHI8RmlsZT4gRmlsZTo6Y3JlYXRlV2l0
aFJlbGF0aXZlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQ
YXRoKQorUGFzc1JlZlB0cjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoRnJvbVVz
ZXJBY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCkK
IHsKLSAgICBSZWZQdHI8RmlsZT4gZmlsZSA9IGFkb3B0UmVmKG5ldyBGaWxlKHBhdGgpKTsKKyAg
ICBSZWZQdHI8RmlsZT4gZmlsZSA9IGFkb3B0UmVmKG5ldyBGaWxlKEZyb21Vc2VyQWN0aW9uLCBw
YXRoLCBwYXRoR2V0RmlsZU5hbWUocGF0aCkpKTsKICAgICBmaWxlLT5tX3JlbGF0aXZlUGF0aCA9
IHJlbGF0aXZlUGF0aDsKICAgICByZXR1cm4gZmlsZS5yZWxlYXNlKCk7CiB9CkBAIC0xMTYsNiAr
MTMwLDE3IEBAIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiB7CiB9CiAKK0ZpbGU6OkZpbGUoRnJvbVVzZXJBY3Rpb25UYWcsIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZvckZp
bGVGcm9tVXNlckFjdGlvbihwYXRoKSwgLTEpCisgICAgLCBtX3BhdGgocGF0aCkKKyAgICAsIG1f
bmFtZShuYW1lLmlzRW1wdHkoKSA/IHBhdGhHZXRGaWxlTmFtZShwYXRoKSA6IG5hbWUpCisjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQorICAgICwgbV9zbmFwc2hvdFNpemUoLTEpCisgICAgLCBtX3Nu
YXBzaG90TW9kaWZpY2F0aW9uVGltZShpbnZhbGlkRmlsZVRpbWUoKSkKKyNlbmRpZgoreworfQor
CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCiAgICAgOiBCbG9iKGNyZWF0ZUJsb2JEYXRh
Rm9yRmlsZVdpdGhNZXRhZGF0YShuYW1lLCBtZXRhZGF0YSksIG1ldGFkYXRhLmxlbmd0aCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmgKaW5kZXggZTNjYTJhNWE4YzM3NmYyZDMzOTgwMjBlNzRiN2Y5ZmYwZmFj
YzBlMy4uMzg0MDMxOTg2ZDdlNzBhZjNlYjAwNGJlOWVkNDQzYjAzOGI1MGE1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIH0KIAogI2lmIEVOQUJM
RShESVJFQ1RPUllfVVBMT0FEKQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZVdp
dGhSZWxhdGl2ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZl
UGF0aCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZT4gY3JlYXRlV2l0aFJlbGF0aXZlUGF0
aEZyb21Vc2VyQWN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2
ZVBhdGgpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCkBAIC03MSw2ICs3MSwx
NSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRoLCBuYW1l
KSk7CiAgICAgfQogCisgICAgLy8gQ3JlYXRlIGEgZmlsZSB0aGF0IHJlcHJlc2VudHMgYSBmaWxl
IHNlbGVjdGVkIGFzIGEgcmVzdWx0IG9mIGFuIHVzZXIgYWN0aW9uLCBzdWNoIGFzIGRyYWdnaW5n
CisgICAgLy8gaW4gb3Igc2VsZWN0aW5nIGl0IHRocm91Z2ggdGhlIGZpbGUgaW5wdXQuIFRoaXMg
aXMgYSBzcGVjaWFsIGZ1bmN0aW9uIGJlY2F1c2UgaXQgdXNlcyBhbGwKKyAgICAvLyBNSU1FIHR5
cGVzIHRoYXQgV2ViS2l0IGRldGVjdHMgc3VwcG9ydCBmb3Igb24gdGhlIE9TLiBEbyBub3QgdXNl
IHRoaXMgd2hlbiBwYXRoL25hbWUgY2Fubm90CisgICAgLy8gYmUgdHJ1c3RlZCwgc2luY2UgaXQg
Y2FuIGFsbG93IGEgaG9zdGlsZSBwYWdlIHRvIGRldGVjdCB3aGF0IGFwcHMgYW4gdXNlciBoYXMg
aW5zdGFsbGVkLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZVdpdGhOYW1lRnJv
bVVzZXJBY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUoRnJvbVVzZXJBY3Rpb24sIHBhdGgs
IG5hbWUpKTsKKyAgICB9CisKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IApAQCAtODksMTEgKzk4LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhcHR1cmVTbmFwc2hvdChs
b25nIGxvbmcmIHNuYXBzaG90U2l6ZSwgZG91YmxlJiBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUp
IGNvbnN0OwogCiBwcml2YXRlOgorICAgIGVudW0gRnJvbVVzZXJBY3Rpb25UYWcgeyBGcm9tVXNl
ckFjdGlvbiwgfTsKKwogICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIC8vIEZv
ciBkZXNlcmlhbGl6YXRpb24uCiAgICAgRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtV
UkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBGaWxlKEZyb21Vc2VyQWN0aW9uVGFnLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICMgaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQogICAgIEZpbGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBGaWxlTWV0YWRh
dGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDdhNzVlMTNjMTJk
NjNjYzdhOGJjZGUxN2RlNWU4N2Q3YzM0MjBiOWEuLjc5ZTk2YTBhYmEwOTc0YWM0YzZhODBmNTBi
OWNkMzMwNDcxMTU1NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAt
MTQ4LDcgKzE0OCw3IEBAIGJvb2wgRmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9ybURh
dGFMaXN0JiBlbmNvZGluZywgYm9vbCBtdWx0aXBhcnQpIGNvbnN0CiAgICAgLy8gSWYgbm8gZmls
ZW5hbWUgYXQgYWxsIGlzIGVudGVyZWQsIHJldHVybiBzdWNjZXNzZnVsIGJ1dCBlbXB0eS4KICAg
ICAvLyBOdWxsIHdvdWxkIGJlIG1vcmUgbG9naWNhbCwgYnV0IE5ldHNjYXBlIHBvc3RzIGFuIGVt
cHR5IGZpbGUuIEFyZ2guCiAgICAgaWYgKCFudW1GaWxlcykgewotICAgICAgICBlbmNvZGluZy5h
cHBlbmRCbG9iKGVsZW1lbnQoKS0+bmFtZSgpLCBGaWxlOjpjcmVhdGUoIiIpKTsKKyAgICAgICAg
ZW5jb2RpbmcuYXBwZW5kQmxvYihlbGVtZW50KCktPm5hbWUoKSwgRmlsZTo6Y3JlYXRlV2l0aE5h
bWVGcm9tVXNlckFjdGlvbihTdHJpbmcoKSwgU3RyaW5nKCkpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCkBAIC0yNzcsMTQgKzI3NywxNCBAQCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBG
aWxlSW5wdXRUeXBlOjpjcmVhdGVGaWxlTGlzdChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxl
SQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICAg
ICAgLy8gTm9ybWFsaXplIGJhY2tzbGFzaGVzIHRvIHNsYXNoZXMgYmVmb3JlIGV4cG9zaW5nIHRo
ZSByZWxhdGl2ZSBwYXRoIHRvIHNjcmlwdC4KICAgICAgICAgICAgIFN0cmluZyByZWxhdGl2ZVBh
dGggPSBmaWxlc1tpXS5wYXRoLnN1YnN0cmluZyhyb290TGVuZ3RoKS5yZXBsYWNlKCdcXCcsICcv
Jyk7Ci0gICAgICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2
ZVBhdGgoZmlsZXNbaV0ucGF0aCwgcmVsYXRpdmVQYXRoKSk7CisgICAgICAgICAgICBmaWxlTGlz
dC0+YXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGhGcm9tVXNlckFjdGlvbihmaWxl
c1tpXS5wYXRoLCByZWxhdGl2ZVBhdGgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmls
ZUxpc3Q7CiAgICAgfQogI2VuZGlmCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
IGkrKykKLSAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoTmFtZShmaWxl
c1tpXS5wYXRoLCBmaWxlc1tpXS5kaXNwbGF5TmFtZSkpOworICAgICAgICBmaWxlTGlzdC0+YXBw
ZW5kKEZpbGU6OmNyZWF0ZVdpdGhOYW1lRnJvbVVzZXJBY3Rpb24oZmlsZXNbaV0ucGF0aCwgZmls
ZXNbaV0uZGlzcGxheU5hbWUpKTsKICAgICByZXR1cm4gZmlsZUxpc3Q7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURhdGFPYmplY3Qu
Y3BwCmluZGV4IDUwMzgzYjY4ZWE0YWRhY2JkMmFmYWNkMmEwYWM2YmFkMDlkOTllNDYuLjliN2Yy
ODgzZTk0ZWM2YmU2ZmY0YjBkMmRlMzMwMTAxMTgxOGEyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmNwcApAQCAt
MjA5LDcgKzIwOSw3IEBAIFZlY3RvcjxTdHJpbmc+IENocm9taXVtRGF0YU9iamVjdDo6ZmlsZW5h
bWVzKCkgY29uc3QKIAogdm9pZCBDaHJvbWl1bURhdGFPYmplY3Q6OmFkZEZpbGVuYW1lKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUpCiB7Ci0gICAgaW50
ZXJuYWxBZGRGaWxlSXRlbShDaHJvbWl1bURhdGFPYmplY3RJdGVtOjpjcmVhdGVGcm9tRmlsZShG
aWxlOjpjcmVhdGVXaXRoTmFtZShmaWxlbmFtZSwgZGlzcGxheU5hbWUpKSk7CisgICAgaW50ZXJu
YWxBZGRGaWxlSXRlbShDaHJvbWl1bURhdGFPYmplY3RJdGVtOjpjcmVhdGVGcm9tRmlsZShGaWxl
OjpjcmVhdGVXaXRoTmFtZUZyb21Vc2VyQWN0aW9uKGZpbGVuYW1lLCBkaXNwbGF5TmFtZSkpKTsK
IH0KIAogdm9pZCBDaHJvbWl1bURhdGFPYmplY3Q6OmFkZFNoYXJlZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCmluZGV4IGIyMmFkZjRhNGEwY2MzMTYz
ODNhMzY2MWYyZGE4YzMxMTJhMjc2ZmYuLjdhYjZjYTVjNzY2MTAwMDRlMDRlNDBmODdmMDE5NDQ0
OTk1ZDI4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9h
cmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsu
Y3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkR3Rr
OjpmaWxlcygpIGNvbnN0CiAgICAgUmVmUHRyPEZpbGVMaXN0PiBmaWxlTGlzdCA9IEZpbGVMaXN0
OjpjcmVhdGUoKTsKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzID0gbV9kYXRh
T2JqZWN0LT5maWxlbmFtZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVuYW1l
cy5zaXplKCk7IGkrKykKLSAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUoZmls
ZW5hbWVzW2ldKSk7CisgICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlV2l0aE5h
bWVGcm9tVXNlckFjdGlvbihmaWxlbmFtZXNbaV0sIFN0cmluZygpKSk7CiAgICAgcmV0dXJuIGZp
bGVMaXN0LnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0NsaXBib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlw
Ym9hcmRNYWMubW0KaW5kZXggMjBlYzJmYmEyZmY4ZDhjNDUwOTk2ODNlYmM3YTRlY2Q2NTI5ODVk
ZC4uOGMzY2FiYmRjYjM5OTgyYTFhN2NiMWZmMjc2MDkwNjkxZTcwMDZjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCkBAIC0zMjEsNyArMzIxLDcgQEAg
UGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkTWFjOjpmaWxlcygpIGNvbnN0CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBhYnNvbHV0ZVVSTHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAg
TlNVUkwgKmFic29sdXRlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6YWJzb2x1dGVVUkxzW2ld
XTsKICAgICAgICAgQVNTRVJUKFthYnNvbHV0ZVVSTCBpc0ZpbGVVUkxdKTsKLSAgICAgICAgZmls
ZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUoW2Fic29sdXRlVVJMIHBhdGhdKSk7CisgICAgICAg
IGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlV2l0aE5hbWVGcm9tVXNlckFjdGlvbihbYWJz
b2x1dGVVUkwgcGF0aF0sIFN0cmluZygpKSk7CiAgICAgfQogICAgIHJldHVybiBmaWxlTGlzdC5y
ZWxlYXNlKCk7IC8vIFdlIHdpbGwgYWx3YXlzIHJldHVybiBhIEZpbGVMaXN0LCBzb21ldGltZXMg
ZW1wdHkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2Fy
ZFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAppbmRl
eCA4ZTRjNTgwMGQ3Y2Y5MDRiY2FkYTIwZTYxNDNjNmExOTdkMTNjYmVkLi4wZjA4OWJiOTE4OTcw
MWIwNDAzZTU4OTFjN2MxODMyNGQ3MWE2ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvQ2xpcGJvYXJkUXQuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgUGFzc1JlZlB0cjxGaWxlTGlz
dD4gQ2xpcGJvYXJkUXQ6OmZpbGVzKCkgY29uc3QKICAgICAgICAgUVVybCB1cmwgPSB1cmxzW2ld
OwogICAgICAgICBpZiAodXJsLnNjaGVtZSgpICE9IFFMYXRpbjFTdHJpbmcoImZpbGUiKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0
ZSh1cmwudG9Mb2NhbEZpbGUoKSkpOworICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNy
ZWF0ZVdpdGhOYW1lRnJvbVVzZXJBY3Rpb24odXJsLnRvTG9jYWxGaWxlKCksIFN0cmluZygpKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIGZpbGVMaXN0LnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXggMTJjYjhiZjAxZTMwZDVjMWQ2
ZTIzNzZhZmQ5ODQ4MzhhNzMxMmVjYS4uYjIyYTc4ZDAyYzdiMzlhYmM2NGViNTgwOThiYWY4NDMy
Yzg5ODEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5j
cHAKQEAgLTU2MCw3ICs1NjAsNyBAQCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9hcmRXaW46
OmZpbGVzKCkgY29uc3QKICAgICAgICAgZm9yIChVSU5UIGkgPSAwOyBpIDwgZmlsZUNvdW50OyBp
KyspIHsKICAgICAgICAgICAgIGlmICghRHJhZ1F1ZXJ5RmlsZVcoaGRyb3AsIGksIGZpbGVuYW1l
LCBXVEZfQVJSQVlfTEVOR1RIKGZpbGVuYW1lKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBmaWxlcy0+YXBwZW5kKEZpbGU6OmNyZWF0ZShyZWludGVycHJldF9jYXN0
PFVDaGFyKj4oZmlsZW5hbWUpKSk7CisgICAgICAgICAgICBmaWxlcy0+YXBwZW5kKEZpbGU6OmNy
ZWF0ZVdpdGhOYW1lRnJvbVVzZXJBY3Rpb24ocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGZpbGVu
YW1lKSwgU3RyaW5nKCkpKTsKICAgICAgICAgfQogCiAgICAgICAgIEdsb2JhbFVubG9jayhtZWRp
dW0uaEdsb2JhbCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153918</attachid>
            <date>2012-07-23 17:40:16 -0700</date>
            <delta_ts>2012-07-23 17:49:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91702-20120723174008.patch</filename>
            <type>text/plain</type>
            <size>12206</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQyMDBmOTU5MWM1NGVm
NWJlNTdkZmQ3YzUxM2FjNjE2YmMwMmY0Yi4uN2ZkNTc4YWY0Yjc1NjFkMjZmYjRhYzU3YjY5ZmMz
YTA2OGYyOTgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA3LTIzICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZpbGVzIGZyb20gZHJh
ZyBhbmQgZmlsZSA8aW5wdXQ+IHNob3VsZCB1c2UgZ2V0TUlNRVR5cGVGb3JFeHRlbnNpb24gdG8g
ZGV0ZXJtaW5lIGNvbnRlbnQgdHlwZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkxNzAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQXdoaWxlIGJhY2ssIHdlIGNoYW5nZWQgRmlsZSB0byBvbmx5IHVzZSBn
ZXRXZWxsS25vd25NSU1FVHlwZUZvckV4dGVuc2lvbiB0byBwcmV2ZW50IHdlYgorICAgICAgICBw
YWdlcyBmcm9tIGJlaW5nIGFibGUgdG8gZGV0ZWN0IHdoYXQgYXBwbGljYXRpb25zIGEgdXNlciBo
YXMgaW5zdGFsbGVkIGluZGlyZWN0bHkgdGhyb3VnaAorICAgICAgICB0aGUgTUlNRSB0eXBlcy4g
SG93ZXZlciwgc29tZSBzaXRlcyBsaWtlIFlvdVR1YmUncyBkcmFnIGFuZCBkcm9wIHVwbG9hZGVy
IHVzZSBNSU1FIHR5cGVzCisgICAgICAgIHRoYXQgYXJlbid0IGluIFdlYktpdCdzIGludGVybmFs
IGxpc3QsIHNvIHdlIHJlbGF4IHRoZSByZXN0cmljdGlvbiBmb3IgRmlsZXMgdGhhdCBvcmlnaW5h
dGUKKyAgICAgICAgZnJvbSBhbiB1c2VyIGFjdGlvbi4KKworICAgICAgICAqIGZpbGVhcGkvRmls
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDb250ZW50VHlwZUZyb21GaWxlTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVCbG9iRGF0YUZvckZpbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlQmxvYkRhdGFGb3JGaWxlV2l0aE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6
OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6RmlsZSk6
CisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6CisgICAgICAgIChGaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjcmVhdGVXaXRo
TmFtZSk6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZpbGVJbnB1dFR5cGU6OmNyZWF0ZUZpbGVMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9DaHJvbWl1bURhdGFPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21p
dW1EYXRhT2JqZWN0OjphZGRGaWxlbmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NsaXBi
b2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmZpbGVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkTWFjOjpmaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OmZpbGVzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZFdpbjo6ZmlsZXMpOgorCiAyMDEyLTA3LTIzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIzMzM5
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggNWY4YjkzYjc4MjhkNDMxMmVhODE3YTAwMWY2
NDE1MTY2MTQyYzI0Mi4uMDg3ODk1NzEwMDgzYTA2ZjFkODFhOTQxZTdjMjllMmZiZjI0YjcwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC0zNCwxMiArMzQsMTggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgU3RyaW5nIGdldENvbnRlbnRUeXBlRnJvbUZpbGVOYW1lKGNv
bnN0IFN0cmluZyYgbmFtZSkKK3N0YXRpYyBTdHJpbmcgZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5h
bWUoY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlOjpDb250ZW50VHlwZUxvb2t1cFBvbGljeSBwb2xp
Y3kpCiB7CiAgICAgU3RyaW5nIHR5cGU7CiAgICAgaW50IGluZGV4ID0gbmFtZS5yZXZlcnNlRmlu
ZCgnLicpOwotICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICAgICAgdHlwZSA9IE1JTUVUeXBlUmVn
aXN0cnk6OmdldFdlbGxLbm93bk1JTUVUeXBlRm9yRXh0ZW5zaW9uKG5hbWUuc3Vic3RyaW5nKGlu
ZGV4ICsgMSkpOworICAgIGlmIChpbmRleCAhPSAtMSkgeworICAgICAgICBpZiAocG9saWN5ID09
IEZpbGU6OldlbGxLbm93bkNvbnRlbnRUeXBlcykKKyAgICAgICAgICAgIHR5cGUgPSBNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRXZWxsS25vd25NSU1FVHlwZUZvckV4dGVuc2lvbihuYW1lLnN1YnN0cmlu
ZyhpbmRleCArIDEpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQocG9saWN5
ID09IEZpbGU6OkFsbENvbnRlbnRUeXBlcyk7CisgICAgICAgICAgICB0eXBlID0gTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24obmFtZS5zdWJzdHJpbmcoaW5kZXggKyAx
KSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKQEAgLTUxLDIxICs1
NywyMSBAQCBzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxl
V2l0aFR5cGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjbwogICAgIHJldHVybiBibG9iRGF0YS5yZWxl
YXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZv
ckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQorc3RhdGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNy
ZWF0ZUJsb2JEYXRhRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGU6OkNvbnRlbnRUeXBl
TG9va3VwUG9saWN5IHBvbGljeSkKIHsKLSAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxl
V2l0aFR5cGUocGF0aCwgZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUocGF0aCkpOworICAgIHJl
dHVybiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoVHlwZShwYXRoLCBnZXRDb250ZW50VHlwZUZy
b21GaWxlTmFtZShwYXRoLCBwb2xpY3kpKTsKIH0KIAotc3RhdGljIFBhc3NPd25QdHI8QmxvYkRh
dGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBmaWxlU3lzdGVtTmFtZSkKK3N0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBj
cmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgZmlsZVN5c3RlbU5hbWUsIEZpbGU6OkNvbnRlbnRUeXBlTG9va3VwUG9saWN5IHBvbGlj
eSkKIHsKLSAgICByZXR1cm4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0aCwgZ2V0
Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoZmlsZVN5c3RlbU5hbWUpKTsKKyAgICByZXR1cm4gY3Jl
YXRlQmxvYkRhdGFGb3JGaWxlV2l0aFR5cGUocGF0aCwgZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5h
bWUoZmlsZVN5c3RlbU5hbWUsIHBvbGljeSkpOwogfQogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQogc3RhdGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhN
ZXRhZGF0YShjb25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1OYW1lLCBjb25zdCBGaWxlTWV0YWRhdGEm
IG1ldGFkYXRhKQogewogICAgIE93blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0YTo6
Y3JlYXRlKCk7Ci0gICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBlKGdldENvbnRlbnRUeXBlRnJv
bUZpbGVOYW1lKGZpbGVTeXN0ZW1OYW1lKSk7CisgICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBl
KGdldENvbnRlbnRUeXBlRnJvbUZpbGVOYW1lKGZpbGVTeXN0ZW1OYW1lLCBGaWxlOjpXZWxsS25v
d25Db250ZW50VHlwZXMpKTsKICAgICBibG9iRGF0YS0+YXBwZW5kRmlsZShtZXRhZGF0YS5wbGF0
Zm9ybVBhdGgsIDAsIG1ldGFkYXRhLmxlbmd0aCwgbWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZSk7
CiAgICAgcmV0dXJuIGJsb2JEYXRhLnJlbGVhc2UoKTsKIH0KQEAgLTc0LDE0ICs4MCwxNCBAQCBz
dGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aE1ldGFk
YXRhKGNvbnN0IFN0cmluZyYgZmlsZQogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQogUGFz
c1JlZlB0cjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpCiB7Ci0gICAgUmVmUHRyPEZpbGU+IGZp
bGUgPSBhZG9wdFJlZihuZXcgRmlsZShwYXRoKSk7CisgICAgUmVmUHRyPEZpbGU+IGZpbGUgPSBh
ZG9wdFJlZihuZXcgRmlsZShwYXRoLCBBbGxDb250ZW50VHlwZXMpKTsKICAgICBmaWxlLT5tX3Jl
bGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aDsKICAgICByZXR1cm4gZmlsZS5yZWxlYXNlKCk7CiB9
CiAjZW5kaWYKIAotRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCi0gICAgOiBCbG9iKGNy
ZWF0ZUJsb2JEYXRhRm9yRmlsZShwYXRoKSwgLTEpCitGaWxlOjpGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgQ29udGVudFR5cGVMb29rdXBQb2xpY3kgcG9saWN5KQorICAgIDogQmxvYihjcmVhdGVC
bG9iRGF0YUZvckZpbGUocGF0aCwgcG9saWN5KSwgLTEpCiAgICAgLCBtX3BhdGgocGF0aCkKICAg
ICAsIG1fbmFtZShwYXRoR2V0RmlsZU5hbWUocGF0aCkpCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQpAQCAtMTA1LDggKzExMSw4IEBAIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAvLyBTZWUgU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcCBmb3IganMgYW5kIHY4LgogfQogCi1GaWxlOjpGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZv
ckZpbGVXaXRoTmFtZShwYXRoLCBuYW1lKSwgLTEpCitGaWxlOjpGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb250ZW50VHlwZUxvb2t1cFBvbGljeSBwb2xpY3kp
CisgICAgOiBCbG9iKGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhOYW1lKHBhdGgsIG5hbWUsIHBv
bGljeSksIC0xKQogICAgICwgbV9wYXRoKHBhdGgpCiAgICAgLCBtX25hbWUobmFtZSkKICNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IGUzY2EyYTVhOGMzNzZm
MmQzMzk4MDIwZTc0YjdmOWZmMGZhY2MwZTMuLmRhOTEzMGRmODFmZDg1YmE2M2RlM2I2YzRiNjVm
MTdhNzYyZjFmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCkBAIC0zOCw5ICszOCwxNSBAQCBjbGFz
cyBLVVJMOwogCiBjbGFzcyBGaWxlIDogcHVibGljIEJsb2IgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCisgICAgLy8gQWxs
Q29udGVudFR5cGVzIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgZnVsbCBwYXRoL25hbWUg
YXJlIHRydXN0ZWQ7IG90aGVyd2lzZSwgaXQgY291bGQKKyAgICAvLyBhbGxvdyBhcmJpdHJhcnkg
cGFnZXMgdG8gZGV0ZXJtaW5lIHdoYXQgYXBwbGljYXRpb25zIGFuIHVzZXIgaGFzIGluc3RhbGxl
ZC4KKyAgICBlbnVtIENvbnRlbnRUeXBlTG9va3VwUG9saWN5IHsKKyAgICAgICAgV2VsbEtub3du
Q29udGVudFR5cGVzLAorICAgICAgICBBbGxDb250ZW50VHlwZXMsCisgICAgfTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBDb250ZW50VHlw
ZUxvb2t1cFBvbGljeSBwb2xpY3kgPSBXZWxsS25vd25Db250ZW50VHlwZXMpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUocGF0aCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEZpbGUocGF0aCwgcG9saWN5KSk7CiAgICAgfQogCiAgICAgLy8gRm9yIGRlc2Vy
aWFsaXphdGlvbi4KQEAgLTY0LDExICs3MCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8v
IENyZWF0ZSBhIGZpbGUgd2l0aCBhIG5hbWUgZXhwb3NlZCB0byB0aGUgYXV0aG9yICh2aWEgRmls
ZS5uYW1lIGFuZCBhc3NvY2lhdGVkIERPTSBwcm9wZXJ0aWVzKSB0aGF0IGRpZmZlcnMgZnJvbSB0
aGUgb25lIHByb3ZpZGVkIGluIHRoZSBwYXRoLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+
IGNyZWF0ZVdpdGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZVdpdGhOYW1lKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb250ZW50VHlwZUxvb2t1cFBvbGljeSBwb2xpY3kg
PSBXZWxsS25vd25Db250ZW50VHlwZXMpCiAgICAgewogICAgICAgICBpZiAobmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUocGF0aCkpOwotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUocGF0aCwgbmFtZSkpOworICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHBhdGgsIHBvbGljeSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEZpbGUocGF0aCwgbmFtZSwgcG9saWN5KSk7CiAgICAgfQogCiAgICAgdmlydHVh
bCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0OwpAQCAtODksMTEgKzk1LDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIGNhcHR1cmVTbmFwc2hvdChsb25nIGxvbmcmIHNuYXBzaG90U2l6ZSwg
ZG91YmxlJiBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUpIGNvbnN0OwogCiBwcml2YXRlOgotICAg
IEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
Q29udGVudFR5cGVMb29rdXBQb2xpY3kpOwogCiAgICAgLy8gRm9yIGRlc2VyaWFsaXphdGlvbi4K
ICAgICBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgS1VSTCYgc3JjVVJMLCBjb25zdCBT
dHJpbmcmIHR5cGUpOwotICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IG5hbWUpOworICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUs
IENvbnRlbnRUeXBlTG9va3VwUG9saWN5KTsKIAogIyBpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAg
ICAgRmlsZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEZpbGVNZXRhZGF0YSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggN2E3NWUxM2MxMmQ2M2NjN2E4YmNkZTE3
ZGU1ZTg3ZDdjMzQyMGI5YS4uZDA4ZmUyNDUxNjNlZmQ4NjNiMDVlYzQxZGUyNTE4YzYyYmIwOTRm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0yODQsNyArMjg0LDcg
QEAgUGFzc1JlZlB0cjxGaWxlTGlzdD4gRmlsZUlucHV0VHlwZTo6Y3JlYXRlRmlsZUxpc3QoY29u
c3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUkKICNlbmRpZgogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyBpKyspCi0gICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRl
V2l0aE5hbWUoZmlsZXNbaV0ucGF0aCwgZmlsZXNbaV0uZGlzcGxheU5hbWUpKTsKKyAgICAgICAg
ZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoTmFtZShmaWxlc1tpXS5wYXRoLCBmaWxl
c1tpXS5kaXNwbGF5TmFtZSwgRmlsZTo6QWxsQ29udGVudFR5cGVzKSk7CiAgICAgcmV0dXJuIGZp
bGVMaXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9DaHJvbWl1bURhdGFPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2hyb21pdW1EYXRhT2JqZWN0LmNwcAppbmRleCA1MDM4M2I2OGVhNGFkYWNiZDJhZmFjZDJh
MGFjNmJhZDA5ZDk5ZTQ2Li5lYzdlZWJlNjM2ODZjOGU4NGEzNjUyODkwNTI0YzYwYTY0Nzk4Mzgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURh
dGFPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9t
aXVtRGF0YU9iamVjdC5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBWZWN0b3I8U3RyaW5nPiBDaHJv
bWl1bURhdGFPYmplY3Q6OmZpbGVuYW1lcygpIGNvbnN0CiAKIHZvaWQgQ2hyb21pdW1EYXRhT2Jq
ZWN0OjphZGRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lKQogewotICAgIGludGVybmFsQWRkRmlsZUl0ZW0oQ2hyb21pdW1EYXRhT2JqZWN0
SXRlbTo6Y3JlYXRlRnJvbUZpbGUoRmlsZTo6Y3JlYXRlV2l0aE5hbWUoZmlsZW5hbWUsIGRpc3Bs
YXlOYW1lKSkpOworICAgIGludGVybmFsQWRkRmlsZUl0ZW0oQ2hyb21pdW1EYXRhT2JqZWN0SXRl
bTo6Y3JlYXRlRnJvbUZpbGUoRmlsZTo6Y3JlYXRlV2l0aE5hbWUoZmlsZW5hbWUsIGRpc3BsYXlO
YW1lLCBGaWxlOjpBbGxDb250ZW50VHlwZXMpKSk7CiB9CiAKIHZvaWQgQ2hyb21pdW1EYXRhT2Jq
ZWN0OjphZGRTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0NsaXBib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJk
R3RrLmNwcAppbmRleCBiMjJhZGY0YTRhMGNjMzE2MzgzYTM2NjFmMmRhOGMzMTEyYTI3NmZmLi44
OTExMjZkNWI1NTQ3OGZlMTcwNzE4MmRkYWI1ZmQzN2RmYTA4MTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIFBh
c3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZEd0azo6ZmlsZXMoKSBjb25zdAogICAgIFJlZlB0
cjxGaWxlTGlzdD4gZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGZpbGVuYW1lcyA9IG1fZGF0YU9iamVjdC0+ZmlsZW5hbWVzKCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlbmFtZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgIGZp
bGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKGZpbGVuYW1lc1tpXSkpOworICAgICAgICBmaWxl
TGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShmaWxlbmFtZXNbaV0sIEZpbGU6OkFsbENvbnRlbnRU
eXBlcykpOwogICAgIHJldHVybiBmaWxlTGlzdC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCmluZGV4IDIwZWMyZmJhMmZmOGQ4YzQ1
MDk5NjgzZWJjN2E0ZWNkNjUyOTg1ZGQuLjcwMDRkMjNiMDY1YmM2M2JlZWI2MDBlMGVmNGRjM2Ey
Yzc1NzgzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9h
cmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5t
bQpAQCAtMzIxLDcgKzMyMSw3IEBAIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZE1hYzo6
ZmlsZXMoKSBjb25zdAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWJzb2x1dGVVUkxzLnNp
emUoKTsgaSsrKSB7CiAgICAgICAgIE5TVVJMICphYnNvbHV0ZVVSTCA9IFtOU1VSTCBVUkxXaXRo
U3RyaW5nOmFic29sdXRlVVJMc1tpXV07CiAgICAgICAgIEFTU0VSVChbYWJzb2x1dGVVUkwgaXNG
aWxlVVJMXSk7Ci0gICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKFthYnNvbHV0
ZVVSTCBwYXRoXSkpOworICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShbYWJz
b2x1dGVVUkwgcGF0aF0sIEZpbGU6OkFsbENvbnRlbnRUeXBlcykpOwogICAgIH0KICAgICByZXR1
cm4gZmlsZUxpc3QucmVsZWFzZSgpOyAvLyBXZSB3aWxsIGFsd2F5cyByZXR1cm4gYSBGaWxlTGlz
dCwgc29tZXRpbWVzIGVtcHR5CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9DbGlwYm9hcmRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9h
cmRRdC5jcHAKaW5kZXggOGU0YzU4MDBkN2NmOTA0YmNhZGEyMGU2MTQzYzZhMTk3ZDEzY2JlZC4u
OGVkYmJlMzg0MjRkNmEwYjBjMDlkNzlhNTU1OTQxZDczMjk4ODkzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIFBhc3NS
ZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZFF0OjpmaWxlcygpIGNvbnN0CiAgICAgICAgIFFVcmwg
dXJsID0gdXJsc1tpXTsKICAgICAgICAgaWYgKHVybC5zY2hlbWUoKSAhPSBRTGF0aW4xU3RyaW5n
KCJmaWxlIikpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZmlsZUxpc3QtPmFwcGVu
ZChGaWxlOjpjcmVhdGUodXJsLnRvTG9jYWxGaWxlKCkpKTsKKyAgICAgICAgZmlsZUxpc3QtPmFw
cGVuZChGaWxlOjpjcmVhdGUodXJsLnRvTG9jYWxGaWxlKCksIEZpbGU6OkFsbENvbnRlbnRUeXBl
cykpOwogICAgIH0KIAogICAgIHJldHVybiBmaWxlTGlzdC5yZWxlYXNlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCmluZGV4IDEyY2I4YmYwMWUzMGQ1
YzFkNmUyMzc2YWZkOTg0ODM4YTczMTJlY2EuLmQxYzEzODZhMTQ1MjA0YzM4ZTE4MWJkNzVhMjhi
MjhjOTA1Mzc1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRX
aW4uY3BwCkBAIC01NjAsNyArNTYwLDcgQEAgUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJk
V2luOjpmaWxlcygpIGNvbnN0CiAgICAgICAgIGZvciAoVUlOVCBpID0gMDsgaSA8IGZpbGVDb3Vu
dDsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoIURyYWdRdWVyeUZpbGVXKGhkcm9wLCBpLCBmaWxl
bmFtZSwgV1RGX0FSUkFZX0xFTkdUSChmaWxlbmFtZSkpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgZmlsZXMtPmFwcGVuZChGaWxlOjpjcmVhdGUocmVpbnRlcnByZXRf
Y2FzdDxVQ2hhcio+KGZpbGVuYW1lKSkpOworICAgICAgICAgICAgZmlsZXMtPmFwcGVuZChGaWxl
OjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGZpbGVuYW1lKSwgRmlsZTo6QWxsQ29u
dGVudFR5cGVzKSk7CiAgICAgICAgIH0KIAogICAgICAgICBHbG9iYWxVbmxvY2sobWVkaXVtLmhH
bG9iYWwpOwo=
</data>
<flag name="review"
          id="162997"
          type_id="1"
          status="+"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>