<?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>175322</bug_id>
          
          <creation_ts>2017-08-08 07:22:22 -0700</creation_ts>
          <short_desc>[WPE] Implement WebsiteDataStore::defaultApplicationCacheDirectory() and friends</short_desc>
          <delta_ts>2017-08-08 09:49:23 -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>WPE WebKit</component>
          <version>Other</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="Adrian Perez">aperez</reporter>
          <assigned_to name="Adrian Perez">aperez</assigned_to>
          <cc>aestes</cc>
    
    <cc>bburg</cc>
    
    <cc>beidson</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1336466</commentid>
    <comment_count>0</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-08-08 07:22:22 -0700</bug_when>
    <thetext>These are unimplemented, “APIWebsiteDataStore.cpp” has guards

  #if !PLATFORM(COCOA) &amp;&amp; !PLATFORM(GTK)

which means that WPE is using the empty implementations. I think the
best way to go about this is renaming the GTK+ port implementation to
“APIWebsiteDataStoreGLib.cpp” file. That would be used both by the GTK+
and WPE ports, with a preprocessor switch inside the file to choose
the name of the base directory being used. Something in the lines of:

  #if PLATFORM(GTK)
  # define PLATFORM_DIR_BASE &quot;webkitgtk&quot;
  #elif PLATFORM(WPE)
  # define PLATFORM_DIR_BASE &quot;wpe&quot;
  #else
  # error Invalid platform
  #endif 

and then use the definition in the functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336471</commentid>
    <comment_count>1</comment_count>
      <attachid>317568</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-08-08 07:41:06 -0700</bug_when>
    <thetext>Created attachment 317568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336474</commentid>
    <comment_count>2</comment_count>
      <attachid>317571</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-08-08 07:43:02 -0700</bug_when>
    <thetext>Created attachment 317571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336478</commentid>
    <comment_count>3</comment_count>
      <attachid>317571</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-08 08:04:24 -0700</bug_when>
    <thetext>Comment on attachment 317571
Patch

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

&gt; Source/WebKit/UIProcess/API/APIWebsiteDataStore.cpp:91
&gt; -#if !PLATFORM(COCOA) &amp;&amp; !PLATFORM(GTK)
&gt; +#if !PLATFORM(COCOA) &amp;&amp; !PLATFORM(GTK) &amp;&amp; !PLATFORM(WPE)
&gt;  WebKit::WebsiteDataStore::Configuration WebsiteDataStore::defaultDataStoreConfiguration()

This is now dead code then, I think we can just remove it.

&gt; Source/WebKit/UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:32
&gt; +# define PLATFORM_DIR_BASE &quot;webkitgtk&quot; G_DIR_SEPARATOR_S

Remove the space between # and define. I would call this BASE_DIRECTORY.

&gt; Source/WebKit/UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:55
&gt; +    return websiteDataDirectoryFileSystemRepresentation(PLATFORM_DIR_BASE &quot;databases&quot; G_DIR_SEPARATOR_S &quot;indexeddb&quot;);

This look weird now, I think it&apos;s better not to include G_DIR_SEPARATOR_S as part of BASE_DIRECTORY macro</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336486</commentid>
    <comment_count>4</comment_count>
      <attachid>317574</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-08-08 08:44:01 -0700</bug_when>
    <thetext>Created attachment 317574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336487</commentid>
    <comment_count>5</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-08-08 08:50:37 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #3)
&gt; Comment on attachment 317571 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=317571&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIWebsiteDataStore.cpp:91
&gt; &gt; -#if !PLATFORM(COCOA) &amp;&amp; !PLATFORM(GTK)
&gt; &gt; +#if !PLATFORM(COCOA) &amp;&amp; !PLATFORM(GTK) &amp;&amp; !PLATFORM(WPE)
&gt; &gt;  WebKit::WebsiteDataStore::Configuration WebsiteDataStore::defaultDataStoreConfiguration()
&gt; 
&gt; This is now dead code then, I think we can just remove it.

I think you are right, the new version of the patch also removes it.

At some point later on probably we would want to implement the missing
“WebsiteDataStore::defaultMediaCacheDirectory()” (that&apos;s bug #156369),
or is it unused in the GTK+ and WPE ports?

&gt; &gt; Source/WebKit/UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:32
&gt; &gt; +# define PLATFORM_DIR_BASE &quot;webkitgtk&quot; G_DIR_SEPARATOR_S
&gt; 
&gt; Remove the space between # and define. I would call this BASE_DIRECTORY.

Done.
 
&gt; &gt; Source/WebKit/UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:55
&gt; &gt; +    return websiteDataDirectoryFileSystemRepresentation(PLATFORM_DIR_BASE &quot;databases&quot; G_DIR_SEPARATOR_S &quot;indexeddb&quot;);
&gt; 
&gt; This look weird now, I think it&apos;s better not to include G_DIR_SEPARATOR_S as
&gt; part of BASE_DIRECTORY macro

This is changed in the updated patch, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336489</commentid>
    <comment_count>6</comment_count>
      <attachid>317574</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-08 08:53:42 -0700</bug_when>
    <thetext>Comment on attachment 317574
Patch

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

&gt; Source/WebKit/ChangeLog:22
&gt; +2017-08-08  Adrian Perez de Castro  &lt;aperez@igalia.com&gt;

Double changelog.

&gt; Source/WebKit/UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:37
&gt; +#else
&gt; +#error Invalid platform
&gt; +#endif

forgot to say before, sorry, but don&apos;t do this, it will fail to compile anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336513</commentid>
    <comment_count>7</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-08-08 09:49:23 -0700</bug_when>
    <thetext>Committed r220408: &lt;http://trac.webkit.org/changeset/220408&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317568</attachid>
            <date>2017-08-08 07:41:06 -0700</date>
            <delta_ts>2017-08-08 07:42:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175322-20170808174104.patch</filename>
            <type>text/plain</type>
            <size>1663</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZhNmNjODkxZTk0M2MwNGJi
YWI0OGU1OWI3YTY4ZTk4NzZlOWIyYTcuLjcwOWZkOGU0MGY0ZjYxMzFkMjg5NjM1NmY3ODJlMmMy
ZmRhY2E5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTctMDgtMDggIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBJbXBs
ZW1lbnQgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KSBhbmQgZnJpZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc1MzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBtYWtlcyBXUEUgdXNlIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uIGFzIHRoZSBH
VEsrIHBvcnQsIHdpdGggYSBwcmVwcm9jZXNzb3Igc3dpdGNoIHRvIGNob29zZSB0aGUgbmFtZSBv
ZgorICAgICAgICB0aGUgYmFzZSBkaXJlY3RvcnkgaW5zaWRlIHRoZSB1c2VyIFhERyBjYWNoZSBk
aXJlY3RvcnkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogQWRkIEFQSVdlYnNpdGVE
YXRhU3RvcmVHTGliLmNwcCB0byB0aGUgYnVpbGQgc291cmNlcyBhbmQgcmVtb3ZlIEFQSVdlYnNp
dGVEYXRhU3RvcmVHdGsuY3BwLgorICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOiBBZGQgQVBJ
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIHRvIHRoZSBidWlsdCBzb3VyY2VzLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvQVBJV2Vic2l0ZURhdGFTdG9yZUd0ay5jcHAu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOgorCiAyMDE3LTA4LTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBXZWIgQXV0b21hdGlvbjogc2V0VXNlcklucHV0Rm9yQ3Vy
cmVudEphdmFTY3JpcHRQcm9tcHQgc2hvdWxkIGZhaWwgaWYgY3VycmVudCBkaWFsb2cgaXMgbm90
IGEgcHJvbXB0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317571</attachid>
            <date>2017-08-08 07:43:02 -0700</date>
            <delta_ts>2017-08-08 08:43:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175322-20170808174300.patch</filename>
            <type>text/plain</type>
            <size>12881</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZhNmNjODkxZTk0M2MwNGJi
YWI0OGU1OWI3YTY4ZTk4NzZlOWIyYTcuLjcwOWZkOGU0MGY0ZjYxMzFkMjg5NjM1NmY3ODJlMmMy
ZmRhY2E5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTctMDgtMDggIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBJbXBs
ZW1lbnQgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KSBhbmQgZnJpZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc1MzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBtYWtlcyBXUEUgdXNlIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uIGFzIHRoZSBH
VEsrIHBvcnQsIHdpdGggYSBwcmVwcm9jZXNzb3Igc3dpdGNoIHRvIGNob29zZSB0aGUgbmFtZSBv
ZgorICAgICAgICB0aGUgYmFzZSBkaXJlY3RvcnkgaW5zaWRlIHRoZSB1c2VyIFhERyBjYWNoZSBk
aXJlY3RvcnkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogQWRkIEFQSVdlYnNpdGVE
YXRhU3RvcmVHTGliLmNwcCB0byB0aGUgYnVpbGQgc291cmNlcyBhbmQgcmVtb3ZlIEFQSVdlYnNp
dGVEYXRhU3RvcmVHdGsuY3BwLgorICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOiBBZGQgQVBJ
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIHRvIHRoZSBidWlsdCBzb3VyY2VzLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvQVBJV2Vic2l0ZURhdGFTdG9yZUd0ay5jcHAu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOgorCiAyMDE3LTA4LTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBXZWIgQXV0b21hdGlvbjogc2V0VXNlcklucHV0Rm9yQ3Vy
cmVudEphdmFTY3JpcHRQcm9tcHQgc2hvdWxkIGZhaWwgaWYgY3VycmVudCBkaWFsb2cgaXMgbm90
IGEgcHJvbXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAyNTk0OTg4M2IyYjY2ZWNkZmVj
MjJiZmFjYjQxMDA5NmJmOWI0NGM2Li5lOWRkMWI4OTAwNDQ1NDNlZjY2MDliNGJhMWU1MTJiZWVk
MzYxZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTExNiw2ICsxMTYsNyBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVGV4dENo
ZWNrZXJHdGsuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3BwCiAKKyAgICBV
SVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXBwbGljYXRpb25JbmZvLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRo
ZW50aWNhdGlvblJlcXVlc3QuY3BwCkBAIC0xNzIsNyArMTczLDYgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFu
YWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2luZG93UHJvcGVydGllcy5j
cHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL0FQSVdlYnNpdGVEYXRhU3RvcmVHdGsuY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCiAgICAgVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0Q29sb3JDaG9vc2VyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggNDE5
ZGNlYjQxOTQ0ZGRiZWMxMDA5MDQyNTlkZWZlMWJmYWE3MWVhZS4uMTk5ZjBjNTVlZmE3NDI3ZTg1
NDdjNjZiNGZiOGMzMzlhNmQyMDg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xMzEs
NiArMTMxLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3Mv
QVBJL0Mvd3BlL1dLVmlldy5jcHAKIAorICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRl
RGF0YVN0b3JlR0xpYi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3BwCiAgICAg
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcApp
bmRleCA0ZThjYTFiZGU5MDZmYTBiNDMzNGZkNDE0ZjNkZWNhOWQwZDE0NTZmLi4zZWZiODJkY2Zh
MTEwNWY4YmFjMTRlMmQwZjEwNmYyOWRkMWEyNjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC04Nyw3ICs4Nyw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQo
Ym9vbCBlbmFibGVkKQogICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLSNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFQ
TEFURk9STShHVEspCisjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oR1RLKSAmJiAh
UExBVEZPUk0oV1BFKQogV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKIHsKICAgICAv
LyBGSVhNRTogRmlsbCBldmVyeXRoaW5nIGluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZhMzM3ZDA5M2NmYzJlYjBiZWE2MGY1NmY3ODU5YTliNDFmNTRjN2QKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0
YVN0b3JlR0xpYi5jcHAKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CisKKyNpZiBQTEFURk9STShHVEspCisjIGRlZmluZSBQTEFURk9STV9ESVJfQkFTRSAi
d2Via2l0Z3RrIiBHX0RJUl9TRVBBUkFUT1JfUworI2VsaWYgUExBVEZPUk0oV1BFKQorIyBkZWZp
bmUgUExBVEZPUk1fRElSX0JBU0UgIndwZSIgR19ESVJfU0VQQVJBVE9SX1MKKyNlbHNlCisjIGVy
cm9yIEludmFsaWQgcGxhdGZvcm0KKyNlbmRpZgorCituYW1lc3BhY2UgQVBJIHsKKworU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKK3sK
KyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oUExBVEZP
Uk1fRElSX0JBU0UgImFwcGxpY2F0aW9ucyIpOworfQorCisvLyBGSVhNRTogVGhlIG90aGVyIGRp
cmVjdG9yaWVzIGluIHRoaXMgZmlsZSBhcmUgc2hhcmVkIGJldHdlZW4gYWxsIGFwcGxpY2F0aW9u
cyB1c2luZyBXZWJLaXRHVEsrLgorLy8gV2h5IGlzIG9ubHkgdGhpcyBkaXJlY3RvcnkgbmFtZXNw
YWNlZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24/CitTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0
X3ByZ25hbWUoKSksICJXZWJLaXRDYWNoZSIpKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFBMQVRGT1JNX0RJUl9C
QVNFICJkYXRhYmFzZXMiIEdfRElSX1NFUEFSQVRPUl9TICJpbmRleGVkZGIiKTsKK30KKworU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQorewor
ICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihQ
TEFURk9STV9ESVJfQkFTRSAibG9jYWxzdG9yYWdlIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJu
IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFBMQVRGT1JNX0RJ
Ul9CQVNFICJtZWRpYWtleXMiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFBMQVRGT1JNX0RJUl9CQVNFICJkYXRhYmFz
ZXMiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oUExBVEZPUk1fRElSX0JBU0UgIlJlc291cmNlTG9hZFN0
YXRpc3RpY3MiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sK
KyAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSks
IGRpcmVjdG9yeU5hbWUpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnlOYW1lKQoreworICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
V2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2Rh
dGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKK30KKworV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1
cmF0aW9uKCkKK3sKKyAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbjsKKworICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSA9IGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJh
dGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7CisKKyAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVs
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkgPSBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgY29uZmln
dXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkgPSBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworCisg
ICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Cit9CisKK30gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9BUElXZWJzaXRlRGF0YVN0b3Jl
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvQVBJV2Vic2l0ZURhdGFT
dG9yZUd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYzk5ZmIxNTUzMGUw
NzYxZjg3MzFmNzMzODNhNmE0YmQzMzU3MWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9BUElXZWJz
aXRlRGF0YVN0b3JlR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLQotU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1
cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIndlYmtpdGd0ayIgR19E
SVJfU0VQQVJBVE9SX1MgImFwcGxpY2F0aW9ucyIpOwotfQotCi0vLyBGSVhNRTogVGhlIG90aGVy
IGRpcmVjdG9yaWVzIGluIHRoaXMgZmlsZSBhcmUgc2hhcmVkIGJldHdlZW4gYWxsIGFwcGxpY2F0
aW9ucyB1c2luZyBXZWJLaXRHVEsrLgotLy8gV2h5IGlzIG9ubHkgdGhpcyBkaXJlY3RvcnkgbmFt
ZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24/Ci1TdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hl
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdf
Z2V0X3ByZ25hbWUoKSksICJXZWJLaXRDYWNoZSIpKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJu
IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJ3ZWJraXRndGsi
IEdfRElSX1NFUEFSQVRPUl9TICJkYXRhYmFzZXMiIEdfRElSX1NFUEFSQVRPUl9TICJpbmRleGVk
ZGIiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbigid2Via2l0Z3RrIiBHX0RJUl9TRVBBUkFUT1JfUyAibG9jYWxzdG9yYWdl
Iik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKCJ3ZWJraXRndGsiIEdfRElSX1NFUEFSQVRPUl9TICJtZWRpYWtleXMi
KTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJ3ZWJraXRndGsiIEdfRElSX1NFUEFSQVRPUl9TICJkYXRhYmFzZXMiKTsK
LX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIndlYmtpdGd0ayIgR19ESVJfU0VQQVJBVE9SX1MgIlJlc291cmNl
TG9hZFN0YXRpc3RpY3MiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFt
ZSkKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNv
cmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9k
aXIoKSksIGRpcmVjdG9yeU5hbWUpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnlOYW1lKQotewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91
c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKLX0KLQotV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVD
b25maWd1cmF0aW9uKCkKLXsKLSAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbjsKLQotICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSA9IGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29u
ZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0TmV0d29ya0NhY2hlRGly
ZWN0b3J5KCk7Ci0KLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0g
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAg
Y29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgp
OwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317574</attachid>
            <date>2017-08-08 08:44:01 -0700</date>
            <delta_ts>2017-08-08 08:53:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175322-20170808184359.patch</filename>
            <type>text/plain</type>
            <size>15268</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZhNmNjODkxZTk0M2MwNGJi
YWI0OGU1OWI3YTY4ZTk4NzZlOWIyYTcuLmEwOTZmMDE0ODk3ZDc3MjA5NmU4N2QwZWE4ZTEzZDY4
OTczZGJkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTctMDgtMDggIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBJbXBs
ZW1lbnQgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KSBhbmQgZnJpZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc1MzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBtYWtlcyBXUEUgdXNlIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uIGFzIHRoZSBH
VEsrIHBvcnQsIHdpdGggYSBwcmVwcm9jZXNzb3Igc3dpdGNoIHRvIGNob29zZSB0aGUgbmFtZSBv
ZgorICAgICAgICB0aGUgYmFzZSBkaXJlY3RvcnkgaW5zaWRlIHRoZSB1c2VyIFhERyBjYWNoZSBk
aXJlY3RvcnkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogQWRkIEFQSVdlYnNpdGVE
YXRhU3RvcmVHTGliLmNwcCB0byB0aGUgYnVpbGQgc291cmNlcyBhbmQgcmVtb3ZlIEFQSVdlYnNp
dGVEYXRhU3RvcmVHdGsuY3BwLgorICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOiBBZGQgQVBJ
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIHRvIHRoZSBidWlsdCBzb3VyY2VzLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6IFJlbW92ZSBub3cgZGVhZCBj
b2RlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xp
Yi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0FQSVdl
YnNpdGVEYXRhU3RvcmVHdGsuY3BwLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChB
UEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSk6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KToKKworMjAxNy0wOC0wOCAgQWRyaWFuIFBl
cmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdIEltcGxl
bWVudCBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
IGFuZCBmcmllbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzUzMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIG1ha2VzIFdQRSB1c2UgdGhlIHNhbWUgaW1wbGVtZW50YXRpb24gYXMgdGhlIEdU
SysgcG9ydCwgd2l0aCBhIHByZXByb2Nlc3NvciBzd2l0Y2ggdG8gY2hvb3NlIHRoZSBuYW1lIG9m
CisgICAgICAgIHRoZSBiYXNlIGRpcmVjdG9yeSBpbnNpZGUgdGhlIHVzZXIgWERHIGNhY2hlIGRp
cmVjdG9yeS4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBBZGQgQVBJV2Vic2l0ZURh
dGFTdG9yZUdMaWIuY3BwIHRvIHRoZSBidWlsZCBzb3VyY2VzIGFuZCByZW1vdmUgQVBJV2Vic2l0
ZURhdGFTdG9yZUd0ay5jcHAuCisgICAgICAgICogUGxhdGZvcm1XUEUuY21ha2U6IEFkZCBBUElX
ZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAgdG8gdGhlIGJ1aWx0IHNvdXJjZXMuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9BUElXZWJzaXRlRGF0YVN0b3JlR3RrLmNwcC4K
KyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkpOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAg
ICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSk6CisKIDIwMTctMDgtMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBzZXRVc2VySW5wdXRGb3JDdXJy
ZW50SmF2YVNjcmlwdFByb21wdCBzaG91bGQgZmFpbCBpZiBjdXJyZW50IGRpYWxvZyBpcyBub3Qg
YSBwcm9tcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDI1OTQ5ODgzYjJiNjZlY2RmZWMy
MmJmYWNiNDEwMDk2YmY5YjQ0YzYuLmU5ZGQxYjg5MDA0NDU0M2VmNjYwOWI0YmExZTUxMmJlZWQz
NjFkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTE2LDYgKzExNiw3IEBAIGxpc3Qo
QVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hl
Y2tlckd0ay5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAKIAorICAgIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKICAgICBVSVByb2Nl
c3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBcHBsaWNhdGlvbkluZm8uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhl
bnRpY2F0aW9uUmVxdWVzdC5jcHAKQEAgLTE3Miw3ICsxNzMsNiBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmNw
cAogCi0gICAgVUlQcm9jZXNzL0FQSS9ndGsvQVBJV2Vic2l0ZURhdGFTdG9yZUd0ay5jcHAKICAg
ICBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb2xvckNob29zZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA0MTlk
Y2ViNDE5NDRkZGJlYzEwMDkwNDI1OWRlZmUxYmZhYTcxZWFlLi4xOTlmMGM1NWVmYTc0MjdlODU0
N2M2NmI0ZmI4YzMzOWE2ZDIwODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
V1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTEzMSw2
ICsxMzEsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9B
UEkvQy93cGUvV0tWaWV3LmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVE
YXRhU3RvcmVHTGliLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEFwcGxpY2F0aW9uSW5mby5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCmlu
ZGV4IDRlOGNhMWJkZTkwNmZhMGI0MzM0ZmQ0MTRmM2RlY2E5ZDBkMTQ1NmYuLjBkYjVkZDkyYzU0
YWZhYmExMzUxYWYwZmE5OTA1YzdkOGFlMmEzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTg3LDY1ICs4Nyw2IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQo
Ym9vbCBlbmFibGVkKQogICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLSNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFQ
TEFURk9STShHVEspCi1XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQotewotICAgIC8v
IEZJWE1FOiBGaWxsIGV2ZXJ5dGhpbmcgaW4uCi0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0KLSAgICByZXR1cm4gY29uZmlndXJhdGlv
bjsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IElt
cGxlbWVudC4KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50LgotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgLy8gRklYTUU6IElt
cGxlbWVudC4KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50LgotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBGSVhNRTog
SW1wbGVtZW50LgotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBGSVhN
RTogSW1wbGVtZW50LgotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgLy8g
RklYTUU6IEltcGxlbWVudC4KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCi17
Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLSNl
bmRpZgotICAgIAogI2lmICFQTEFURk9STShDT0NPQSkKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzdkYjA3NGU4YzlmOTMzZDU3YWZjZmRmZmVmNGI4MmY4NmIzZGY3NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNp
dGVEYXRhU3RvcmVHTGliLmNwcApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE3IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KKworI2lmIFBMQVRGT1JNKEdUSykKKyNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkg
IndlYmtpdGd0ayIKKyNlbGlmIFBMQVRGT1JNKFdQRSkKKyNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkg
IndwZSIKKyNlbHNlCisjZXJyb3IgSW52YWxpZCBwbGF0Zm9ybQorI2VuZGlmCisKK25hbWVzcGFj
ZSBBUEkgeworCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiYXBwbGljYXRpb25z
Iik7Cit9CisKKy8vIEZJWE1FOiBUaGUgb3RoZXIgZGlyZWN0b3JpZXMgaW4gdGhpcyBmaWxlIGFy
ZSBzaGFyZWQgYmV0d2VlbiBhbGwgYXBwbGljYXRpb25zIHVzaW5nIFdlYktpdEdUSysuCisvLyBX
aHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3BhY2VkIHRvIGEgcGFydGljdWxhciBhcHBs
aWNhdGlvbj8KK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGly
ZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hl
IikpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFi
YXNlcyIgR19ESVJfU0VQQVJBVE9SX1MgImluZGV4ZWRkYiIpOworfQorCitTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJu
IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNU
T1JZIEdfRElSX1NFUEFSQVRPUl9TICJsb2NhbHN0b3JhZ2UiKTsKK30KKworU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICBy
ZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9E
SVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgIm1lZGlha2V5cyIpOworfQorCitTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICBy
ZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9E
SVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIpOworfQorCitTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQor
eworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHJl
dHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0
b3J5TmFtZSk7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUp
Cit7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3Jl
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9kaXIo
KSksIGRpcmVjdG9yeU5hbWUpOworfQorCitXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZp
Z3VyYXRpb24gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24o
KQoreworICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uOworCisgICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0g
ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLm5l
dHdvcmtDYWNoZURpcmVjdG9yeSA9IGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKKwor
ICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBkZWZhdWx0V2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVj
dG9yeSA9IGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9u
Lm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eSA9IGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CisKKyAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0FQSVdlYnNpdGVEYXRhU3RvcmVHdGsuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9BUElXZWJzaXRlRGF0YVN0b3JlR3Rr
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJjOTlmYjE1NTMwZTA3NjFmODcz
MWY3MzM4M2E2YTRiZDMzNTcxZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0FQSVdlYnNpdGVEYXRh
U3RvcmVHdGsuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotCi0jaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNo
ZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigid2Via2l0Z3RrIiBHX0RJUl9TRVBB
UkFUT1JfUyAiYXBwbGljYXRpb25zIik7Ci19Ci0KLS8vIEZJWE1FOiBUaGUgb3RoZXIgZGlyZWN0
b3JpZXMgaW4gdGhpcyBmaWxlIGFyZSBzaGFyZWQgYmV0d2VlbiBhbGwgYXBwbGljYXRpb25zIHVz
aW5nIFdlYktpdEdUSysuCi0vLyBXaHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3BhY2Vk
IHRvIGEgcGFydGljdWxhciBhcHBsaWNhdGlvbj8KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJn
bmFtZSgpKSwgIldlYktpdENhY2hlIikpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0
ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIndlYmtpdGd0ayIgR19ESVJf
U0VQQVJBVE9SX1MgImRhdGFiYXNlcyIgR19ESVJfU0VQQVJBVE9SX1MgImluZGV4ZWRkYiIpOwot
fQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9y
eSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKCJ3ZWJraXRndGsiIEdfRElSX1NFUEFSQVRPUl9TICJsb2NhbHN0b3JhZ2UiKTsKLX0K
LQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oIndlYmtpdGd0ayIgR19ESVJfU0VQQVJBVE9SX1MgIm1lZGlha2V5cyIpOwotfQot
Ci1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIndlYmtpdGd0ayIgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIpOwotfQotCi1T
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbigid2Via2l0Z3RrIiBHX0RJUl9TRVBBUkFUT1JfUyAiUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQotewot
ICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwg
ZGlyZWN0b3J5TmFtZSk7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0
YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChX
ZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0
YV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwotfQotCi1XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OkNvbmZpZ3VyYXRpb24gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKQotewotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uOwotCi0gICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5ID0gZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSA9IGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
KTsKLQotICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBkZWZhdWx0
V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFn
ZURpcmVjdG9yeSA9IGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1
cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSA9IGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7Ci0KLSAg
ICByZXR1cm4gY29uZmlndXJhdGlvbjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVBJCg==
</data>
<flag name="review"
          id="338110"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="338111"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>