<?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>104279</bug_id>
          
          <creation_ts>2012-12-06 11:26:26 -0800</creation_ts>
          <short_desc>[Mac] Add Build Phase to Check Headers for Inappropriate Macros (Platform.h macros)</short_desc>
          <delta_ts>2012-12-18 13:38:25 -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>Tools / Tests</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>joepeck</cc>
    
    <cc>mitz</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>785076</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2012-12-06 11:26:26 -0800</bug_when>
    <thetext>We want to ensure the headers (public and sometimes private) in the mac frameworks don&apos;t
contain &lt;wtf/Platform.h&gt; macros (PLATFORM(), ENABLE(), USE(), etc).

There are already a number of build phase scripts run in each of the projects to verify
the build products output. This would be another that checks for common macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785094</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2012-12-06 11:39:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/12692988&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785097</commentid>
    <comment_count>2</comment_count>
      <attachid>178047</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2012-12-06 11:42:15 -0800</bug_when>
    <thetext>Created attachment 178047
[PATCH] Part 1: Add script check-for-inappropriate-macros-in-external-headers

Adds another ruby script and tests. The existing check-* scripts are mostly ruby. None had tests so I added a webkitruby dir and tests to mirror webkitperl and webkitpython.

Running tests looks like:

    shell&gt; ./Tools/Scripts/test-webkitruby 
    Testing: Tools/Scripts/check-for-inappropriate-macros-in-external-headers
    PASS - test_good_fake_data
    PASS - test_bad_fake_data</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785101</commentid>
    <comment_count>3</comment_count>
      <attachid>178049</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2012-12-06 11:43:59 -0800</bug_when>
    <thetext>Created attachment 178049
[PATCH] Part 2: Run the Script as an Xcode Build Phase

Build phase in each looks like: (note we are just testing public headers right now)

&gt;    if [ &quot;${ACTION}&quot; = &quot;installhdrs&quot; ]; then
&gt;        exit 0;
&gt;    fi
&gt;
&gt;    if [ -f ../../Tools/Scripts/check-for-inappropriate-macros-in-external-headers ]; then
&gt;        ../../Tools/Scripts/check-for-inappropriate-macros-in-external-headers Headers || exit $?
&gt;    fi</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786859</commentid>
    <comment_count>4</comment_count>
      <attachid>178047</attachid>
    <who name="">mitz</who>
    <bug_when>2012-12-09 13:50:57 -0800</bug_when>
    <thetext>Comment on attachment 178047
[PATCH] Part 1: Add script check-for-inappropriate-macros-in-external-headers

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

&gt; Tools/Scripts/check-for-inappropriate-macros-in-external-headers:43
&gt; +  full_path = File.join Dir.pwd, framework, $is_shallow_bundle ? &quot;&quot; : &quot;Versions/A/&quot;, path

Can you use CONTENTS_FOLDER_PATH instead of the framework parameter and this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786860</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2012-12-09 13:57:19 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 178047 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178047&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/check-for-inappropriate-macros-in-external-headers:43
&gt; &gt; +  full_path = File.join Dir.pwd, framework, $is_shallow_bundle ? &quot;&quot; : &quot;Versions/A/&quot;, path
&gt; 
&gt; Can you use CONTENTS_FOLDER_PATH instead of the framework parameter and this?

Good idea. I&apos;ll take a look. The other Scripts/Tools/check-* scripts used this SHALLOW_BUNDLE approach, so if we can convert to a cleaner approach I&apos;ll update those as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787680</commentid>
    <comment_count>6</comment_count>
      <attachid>178049</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2012-12-10 13:38:07 -0800</bug_when>
    <thetext>Comment on attachment 178049
[PATCH] Part 2: Run the Script as an Xcode Build Phase

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790651</commentid>
    <comment_count>7</comment_count>
      <attachid>178047</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2012-12-13 09:04:39 -0800</bug_when>
    <thetext>Comment on attachment 178047
[PATCH] Part 1: Add script check-for-inappropriate-macros-in-external-headers

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

r=me, but please address Dan&apos;s comment and making sure to use the same ruby binary in test-webkitruby when running tests.

Also, I think Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/passing-expected.txt was probably renamed to pass-expected.txt, so it should be removed from the commit.

&gt; Tools/Scripts/test-webkit-scripts:31
&gt; +&quot;&quot;&quot;Run unit tests of WebKit&apos;s Perl, Ruby, and Python scripts.&quot;&quot;&quot;

Nit:  Should it be &quot;Perl, Python and Ruby scripts&quot; to keep them alphabetized?  :)

&gt; Tools/Scripts/test-webkit-scripts:80
&gt; +        print(&apos;Note: Perl, Ruby, and Python results appear separately above.&apos;)

Ditto.

&gt; Tools/Scripts/test-webkitruby:30
&gt; +  puts %x{ ruby &apos;#{test}&apos; }

Does using &quot;ruby&quot; here imply that you&apos;re using the same ruby executable that was used to launch this script?  If not, we should use the path the ruby binary that was used to run this script (however you grab that in ruby; maybe &quot;$0&quot;?) to make the behavior more predictable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790653</commentid>
    <comment_count>8</comment_count>
      <attachid>178047</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2012-12-13 09:06:06 -0800</bug_when>
    <thetext>Comment on attachment 178047
[PATCH] Part 1: Add script check-for-inappropriate-macros-in-external-headers

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

&gt; Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/run-test.rb:44
&gt; +  output = sanitized_output %x{ #{$tool} #{config[:paths].join(&apos; &apos;)} 2&gt;&amp;1 }
&gt; +  expected_output = File.read File.join($test_directory, config[:expected])
&gt; +  pass = output == expected_output

Also, if the test passes, I think the *-expected.txt file should have the word &quot;PASS&quot; with a newline in it (rather than just being blank).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793261</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2012-12-17 18:59:50 -0800</bug_when>
    <thetext>Looks like there are a few paths I could probably take advantage of:

    (taken from a WebCore check-* build phase)
    setenv CONTENTS_FOLDER_PATH WebCore.framework/Versions/A
    setenv PRIVATE_HEADERS_FOLDER_PATH WebCore.framework/Versions/A/PrivateHeaders
    setenv PUBLIC_HEADERS_FOLDER_PATH WebCore.framework/Versions/A/Headers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793262</commentid>
    <comment_count>10</comment_count>
      <attachid>178047</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2012-12-17 19:00:51 -0800</bug_when>
    <thetext>Comment on attachment 178047
[PATCH] Part 1: Add script check-for-inappropriate-macros-in-external-headers

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

&gt;&gt; Tools/Scripts/test-webkit-scripts:31
&gt;&gt; +&quot;&quot;&quot;Run unit tests of WebKit&apos;s Perl, Ruby, and Python scripts.&quot;&quot;&quot;
&gt; 
&gt; Nit:  Should it be &quot;Perl, Python and Ruby scripts&quot; to keep them alphabetized?  :)

Heh, sure I can do that.

&gt;&gt; Tools/Scripts/test-webkitruby:30
&gt;&gt; +  puts %x{ ruby &apos;#{test}&apos; }
&gt; 
&gt; Does using &quot;ruby&quot; here imply that you&apos;re using the same ruby executable that was used to launch this script?  If not, we should use the path the ruby binary that was used to run this script (however you grab that in ruby; maybe &quot;$0&quot;?) to make the behavior more predictable.

Good call. I have yet to find a way to determine the current ruby executable running the script, so instead I&apos;ll just drop this &quot;ruby&quot; and run the test (which will use the env ruby). This line becomes:

    puts %x{ &apos;#{test}&apos; }

&gt;&gt; Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/run-test.rb:44
&gt;&gt; +  pass = output == expected_output
&gt; 
&gt; Also, if the test passes, I think the *-expected.txt file should have the word &quot;PASS&quot; with a newline in it (rather than just being blank).

These expected files are the expected results of running the check-* script. I wouldn&apos;t expect the script to ever output PASS.

Probably a better test would be, if the exit code is 0, ensure the output is empty. If the exit code is 1, ensure the output matches some error-expected.txt file. I&apos;ll try making that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793934</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2012-12-18 12:24:22 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Looks like there are a few paths I could probably take advantage of:
&gt; 
&gt;     (taken from a WebCore check-* build phase)
&gt;     setenv CONTENTS_FOLDER_PATH WebCore.framework/Versions/A
&gt;     setenv PRIVATE_HEADERS_FOLDER_PATH WebCore.framework/Versions/A/PrivateHeaders
&gt;     setenv PUBLIC_HEADERS_FOLDER_PATH WebCore.framework/Versions/A/Headers

To address this comment I filed:
&lt;http://webkit.org/b/105336&gt; [Mac] Build Phase check-* scripts should use CONTENTS_FOLDER_PATH instead of SHALLOW_BUNDLE

Kilzer reviewed (offline) follow up fixes to the test and his earlier comments. I&apos;m doing a final test build now and then I&apos;ll land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793999</commentid>
    <comment_count>12</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2012-12-18 13:38:25 -0800</bug_when>
    <thetext>Committed r138064 and r138065:
&lt;http://trac.webkit.org/changeset/138064&gt;
&lt;http://trac.webkit.org/changeset/138065&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178047</attachid>
            <date>2012-12-06 11:42:15 -0800</date>
            <delta_ts>2012-12-17 19:00:51 -0800</delta_ts>
            <desc>[PATCH] Part 1: Add script check-for-inappropriate-macros-in-external-headers</desc>
            <filename>part-1.patch</filename>
            <type>text/plain</type>
            <size>15637</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3Y2Vi
ZmI1Li5mNDAxNmI5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMTItMDYgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBBZGQgQnVpbGQgUGhhc2UgdG8gQ2hl
Y2sgSGVhZGVycyBmb3IgSW5hcHByb3ByaWF0ZSBNYWNyb3MgKFBsYXRmb3JtLmggbWFjcm9zKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0Mjc5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgYnVp
bGQgcGhhc2Ugc2NyaXB0IHRoYXQgY2hlY2tzIGEgZnJhbWV3b3JrJ3MgaGVhZGVyIGZpbGVzIGZv
cgorICAgICAgICBQbGF0Zm9ybS5oIGFuZCBDb21waWxlci5oIG1hY3Jvcy4gQWxzbyBhZGQgc29t
ZSB0ZXN0cyBmb3IgdGhlIHNjcmlwdC4KKworICAgICAgICAqIFNjcmlwdHMvY2hlY2stZm9yLWlu
YXBwcm9wcmlhdGUtbWFjcm9zLWluLWV4dGVybmFsLWhlYWRlcnM6IEFkZGVkLgorICAgICAgICBT
Y3JpcHQgdG8gYmUgdXNlZCBpbiBidWlsZCBwaGFzZXMgdG8gY2hlY2sgZm9yIGluYXBwcm9wcmlh
dGUgbWFjcm9zIGluIGhlYWRlcnMuCisKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3Qtd2Via2l0cnVi
eTogQWRkZWQuCisgICAgICAgIFNjcmlwdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJ1biBhbGwgd2Vi
a2l0cnVieSB0ZXN0cy4KKworICAgICAgICAqIFNjcmlwdHMvdGVzdC13ZWJraXQtc2NyaXB0czoK
KyAgICAgICAgQWxzbyBydW4gdGhlIHJ1YnkgdGVzdHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHJ1YnkvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtbWFjcm9zLWluLWV4dGVybmFsLWhlYWRl
cnMtdGVzdHMvZmFrZS1kYXRhLWZhaWxpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHJ1YnkvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtbWFjcm9zLWluLWV4
dGVybmFsLWhlYWRlcnMtdGVzdHMvcGFzcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cnVieS9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1tYWNyb3MtaW4tZXh0
ZXJuYWwtaGVhZGVycy10ZXN0cy9wYXNzaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRydWJ5L2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW1hY3Jvcy1pbi1l
eHRlcm5hbC1oZWFkZXJzLXRlc3RzL3Jlc291cmNlcy9GYWtlLmZyYW1ld29yay9IZWFkZXJzL0Zh
aWwuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRydWJ5L2NoZWNrLWZvci1pbmFw
cHJvcHJpYXRlLW1hY3Jvcy1pbi1leHRlcm5hbC1oZWFkZXJzLXRlc3RzL3Jlc291cmNlcy9GYWtl
LmZyYW1ld29yay9IZWFkZXJzL1Bhc3MuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRydWJ5L2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW1hY3Jvcy1pbi1leHRlcm5hbC1oZWFkZXJz
LXRlc3RzL3J1bi10ZXN0LnJiOiBBZGRlZC4KKyAgICAgICAgVGVzdHMgZm9yIHRoZSBuZXcgc2Ny
aXB0LgorCiAyMDEyLTExLTMwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHN0YWxlIGNoZWNrIGluIGNoZWNrLWZvci13ZWJraXQtZnJhbWV3
b3JrLWluY2x1ZGUtY29uc2lzdGVuY3kKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvY2hlY2st
Zm9yLWluYXBwcm9wcmlhdGUtbWFjcm9zLWluLWV4dGVybmFsLWhlYWRlcnMgYi9Ub29scy9TY3Jp
cHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW1hY3Jvcy1pbi1leHRlcm5hbC1oZWFkZXJzCm5l
dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjdlNmMzMWYKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW1hY3Jvcy1pbi1leHRl
cm5hbC1oZWFkZXJzCkBAIC0wLDAgKzEsNzcgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUaGlzIHNjcmlwdCBjaGVja3Mg
dGhhdCB0aGUgZ2l2ZW4gaGVhZGVycyBpbiB0aGUgZnJhbWV3b3JrIGJ1aWxkIHByb2R1Y3QgZG8K
KyMgbm90IGNvbnRhaW4gUGxhdGZvcm0uaCBhbmQgQ29tcGlsZXIuaCBtYWNyb3Mgc3VjaCBhcyBQ
TEFURk9STSwgQ09NUElMRVIsIGV0Yy4KKyMgVGhpcyBpcyBtZWFudCB0byBsaW1pdCB0aGUgZXhw
b3N1cmUgb2YgdGhlIFdURiBoZWFkZXJzLCBlbnN1cmluZyB0aGF0IGlmCisjIGNsaWVudHMgaW5j
bHVkZSB0aGVzZSBoZWFkZXJzIHRoZXkgd291bGQgbm90IGFsc28gbmVlZCBXVEYncyBQbGF0Zm9y
bS5oLgorCitiYXNlX2RpcmVjdG9yeSA9IEVOVlsnVEFSR0VUX0JVSUxEX0RJUiddIG9yIHRocm93
ICJVbmFibGUgdG8gZmluZCBUQVJHRVRfQlVJTERfRElSIGluIHRoZSBlbnZpcm9ubWVudCEiCitw
cm9qZWN0X25hbWUgPSBFTlZbJ1BST0pFQ1RfTkFNRSddIG9yIHRocm93ICJVbmFibGUgdG8gZmlu
ZCBQUk9KRUNUX05BTUUgaW4gdGhlIGVudmlyb25tZW50ISIKKyRpc19zaGFsbG93X2J1bmRsZSA9
IChFTlZbJ1NIQUxMT1dfQlVORExFJ10gfHwgIk5PIikudXBjYXNlID09ICJZRVMiCisKKyRlcnJv
cl9wcmludGVkID0gZmFsc2UKKworZGVmIHByaW50X2Vycm9yKG1zZykKKyAgJGVycm9yX3ByaW50
ZWQgPSB0cnVlCisgIFNUREVSUi5wdXRzICJFUlJPUjogI3ttc2d9IgorZW5kCisKK2RlZiBmcmFt
ZXdvcmtfaGVhZGVyc19mb3JfcGF0aChmcmFtZXdvcmssIHBhdGgpCisgIGZ1bGxfcGF0aCA9IEZp
bGUuam9pbiBEaXIucHdkLCBmcmFtZXdvcmssICRpc19zaGFsbG93X2J1bmRsZSA/ICIiIDogIlZl
cnNpb25zL0EvIiwgcGF0aAorICBpZiBGaWxlLmRpcmVjdG9yeT8gZnVsbF9wYXRoCisgICAgRGly
Lmdsb2IgIiN7ZnVsbF9wYXRofS8qKi8qLmgiCisgIGVsc2lmIEZpbGUuZXhpc3RzPyBmdWxsX3Bh
dGgKKyAgICBbZnVsbF9wYXRoXQorICBlbHNlCisgICAgcHJpbnRfZXJyb3IgInBhdGggJyN7ZnVs
bF9wYXRofScgZm9yIGFyZ3VtZW50ICcje3BhdGh9JyBkb2VzIG5vdCBleGlzdC4iCisgICAgW10g
IyBSZXR1cm4gYW4gZW1wdHkgbGlzdCBzbyB3ZSBjYW4gY29udGludWUgdG8gY2hlY2sgdGhlIG90
aGVyIHBhdGhzLgorICBlbmQKK2VuZAorCitkZWYgdmVyaWZ5X21hY3Jvc19pbl9oZWFkZXIoaGVh
ZGVyKQorICBGaWxlLm9wZW4oaGVhZGVyKSBkbyB8ZmlsZXwKKyAgICBmaWxlLmVhY2hfbGluZS53
aXRoX2luZGV4IGRvIHxsaW5lLCBpbmRleHwKKyAgICAgICMgQ2hlY2sgZm9yIHRoZSBjb21tb24g
bWFjcm9zIGZyb20gUGxhdGZvcm0uaCBhbmQgQ29tcGlsZXIuaC4KKyAgICAgICMgTk9URTogTmVn
YXRpdmUgbG9va2FoZWFkICg/IWVycm9yKSBwcmV2ZW50cyBtYXRjaGluZyAiI2Vycm9yIFdlYktp
dCB3YXMgbm90IGF2YWlsYWJsZSBwcmlvciB0byBNYWMgT1MgWCAxMC4yIi4KKyAgICAgICMgTk9U
RTogTmVnYXRpdmUgbG9va2FoZWFkICg/IToyKSBwcmV2ZW50cyBtYXRjaGluZyBPUzIgaW4gbWFj
cm9zIGxpa2UgImRlZmluZWQoX19PUzJfXykiLgorICAgICAgaWYgbWF0Y2ggPSAvXlxzKiMoPyFl
cnJvcikuKj9cYihQTEFURk9STXxDUFV8SEFWRXxPUyg/ITIpfFVTRXxFTkFCTEV8Q09NUElMRVIp
Ly5tYXRjaChsaW5lKQorICAgICAgICBwcmludF9lcnJvciAiJyN7aGVhZGVyfToje2luZGV4KzF9
JyBpbmNsdWRlZCBmb3JiaWRkZW4gbWFjcm8gJyN7bWF0Y2hbMV19JyA9PiAnI3tsaW5lLmNob21w
fSciCisgICAgICBlbmQKKyAgICBlbmQKKyAgZW5kCitlbmQKKworCitEaXIuY2hkaXIgYmFzZV9k
aXJlY3RvcnkKKworZnJhbWV3b3JrID0gIiN7cHJvamVjdF9uYW1lfS5mcmFtZXdvcmsiCitBUkdW
LmVhY2ggZG8gfHBhdGh8CisgIGZyYW1ld29ya19oZWFkZXJzX2Zvcl9wYXRoKGZyYW1ld29yaywg
cGF0aCkuZWFjaCBkbyB8aGVhZGVyfAorICAgIHZlcmlmeV9tYWNyb3NfaW5faGVhZGVyKGhlYWRl
cikKKyAgZW5kCitlbmQKKworZXhpdCAxIGlmICRlcnJvcl9wcmludGVkCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0LXNjcmlwdHMgYi9Ub29scy9TY3JpcHRzL3Rlc3Qtd2Vi
a2l0LXNjcmlwdHMKaW5kZXggNzgxZThjZS4uNzU1MjAwZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2Ny
aXB0cy90ZXN0LXdlYmtpdC1zY3JpcHRzCisrKyBiL1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXQt
c2NyaXB0cwpAQCAtMjgsNyArMjgsNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAotIiIiUnVuIHVuaXQgdGVzdHMgb2YgV2ViS2l0J3MgUGVybCBhbmQgUHl0aG9uIHNjcmlwdHMu
IiIiCisiIiJSdW4gdW5pdCB0ZXN0cyBvZiBXZWJLaXQncyBQZXJsLCBSdWJ5LCBhbmQgUHl0aG9u
IHNjcmlwdHMuIiIiCiAKICMgVGhlIGRvY3N0cmluZyBhYm92ZSBpcyBwYXNzZWQgYXMgdGhlICJk
ZXNjcmlwdGlvbiIgdG8gdGhlIE9wdGlvblBhcnNlcgogIyB1c2VkIGluIHRoaXMgc2NyaXB0J3Mg
X19tYWluX18gYmxvY2suCkBAIC03MCwxMyArNzAsMTQgQEAgY2xhc3MgU2NyaXB0c1Rlc3Rlcihv
YmplY3QpOgogICAgICAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncygpCiAK
ICAgICAgICAgc2VsZi5ydW5fdGVzdF9zY3JpcHQoJ1Blcmwgc2NyaXB0cycsIHNlbGYuc2NyaXB0
X3BhdGgoJ3Rlc3Qtd2Via2l0cGVybCcpKQorICAgICAgICBzZWxmLnJ1bl90ZXN0X3NjcmlwdCgn
UnVieSBzY3JpcHRzJywgc2VsZi5zY3JpcHRfcGF0aCgndGVzdC13ZWJraXRydWJ5JykpCiAgICAg
ICAgIHNlbGYucnVuX3Rlc3Rfc2NyaXB0KCdQeXRob24gc2NyaXB0cycsIHNlbGYuc2NyaXB0X3Bh
dGgoJ3Rlc3Qtd2Via2l0cHknKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyctLWFs
bCddIGlmIG9wdGlvbnMuYWxsIGVsc2UgTm9uZSkKIAogICAgICAgICAjIEZJWE1FOiBEaXNwbGF5
IGEgY3VtdWxhdGl2ZSBpbmRpY2F0aW9uIG9mIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4KICAgICAgICAg
IyAgICAgICAgSW4gYWRkaXRpb24sIGNhbGwgc3lzLmV4aXQoKSB3aXRoIDAgb3IgMSBkZXBlbmRp
bmcgb24gdGhhdAogICAgICAgICAjICAgICAgICBjdW11bGF0aXZlIHN1Y2Nlc3Mgb3IgZmFpbHVy
ZS4KLSAgICAgICAgcHJpbnQoJ05vdGU6IFBlcmwgYW5kIFB5dGhvbiByZXN1bHRzIGFwcGVhciBz
ZXBhcmF0ZWx5IGFib3ZlLicpCisgICAgICAgIHByaW50KCdOb3RlOiBQZXJsLCBSdWJ5LCBhbmQg
UHl0aG9uIHJlc3VsdHMgYXBwZWFyIHNlcGFyYXRlbHkgYWJvdmUuJykKIAogCiBpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHJ1
YnkgYi9Ub29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cnVieQpuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwLi41ZTdiOGFjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy90
ZXN0LXdlYmtpdHJ1YnkKQEAgLTAsMCArMSwzNCBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisj
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskZXhpdF9jb2RlID0gMDsKKwor
RGlyLmNoZGlyIEZpbGUuZGlybmFtZShfX0ZJTEVfXykKK0Rpci5nbG9iKCIuL3dlYmtpdHJ1Ynkv
Ki8qLnJiIikuZWFjaCBkbyB8dGVzdHwKKyAgcHV0cyAleHsgcnVieSAnI3t0ZXN0fScgfQorICAk
ZXhpdF9jb2RlID0gMSBpZiAkPy5leGl0c3RhdHVzICE9IDAKK2VuZAorCitleGl0ICRleGl0X2Nv
ZGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9jaGVjay1mb3ItaW5hcHBy
b3ByaWF0ZS1tYWNyb3MtaW4tZXh0ZXJuYWwtaGVhZGVycy10ZXN0cy9mYWtlLWRhdGEtZmFpbGlu
Zy1leHBlY3RlZC50eHQgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvY2hlY2stZm9yLWluYXBw
cm9wcmlhdGUtbWFjcm9zLWluLWV4dGVybmFsLWhlYWRlcnMtdGVzdHMvZmFrZS1kYXRhLWZhaWxp
bmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZTk2
NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvY2hlY2stZm9y
LWluYXBwcm9wcmlhdGUtbWFjcm9zLWluLWV4dGVybmFsLWhlYWRlcnMtdGVzdHMvZmFrZS1kYXRh
LWZhaWxpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0VSUk9SOiAnLS1zdHJpcHBl
ZC0tL0Zha2UuZnJhbWV3b3JrL0hlYWRlcnMvRmFpbC5oOjInIGluY2x1ZGVkIGZvcmJpZGRlbiBt
YWNybyAnUExBVEZPUk0nID0+ICcjaWYgUExBVEZPUk0oTUFDKScKK0VSUk9SOiAnLS1zdHJpcHBl
ZC0tL0Zha2UuZnJhbWV3b3JrL0hlYWRlcnMvRmFpbC5oOjQnIGluY2x1ZGVkIGZvcmJpZGRlbiBt
YWNybyAnQ1BVJyA9PiAnI2lmIENQVShYODYpJworRVJST1I6ICctLXN0cmlwcGVkLS0vRmFrZS5m
cmFtZXdvcmsvSGVhZGVycy9GYWlsLmg6NicgaW5jbHVkZWQgZm9yYmlkZGVuIG1hY3JvICdPUycg
PT4gJyNpZiBPUyhEQVJXSU4pJworRVJST1I6ICctLXN0cmlwcGVkLS0vRmFrZS5mcmFtZXdvcmsv
SGVhZGVycy9GYWlsLmg6OCcgaW5jbHVkZWQgZm9yYmlkZGVuIG1hY3JvICdDT01QSUxFUicgPT4g
JyNpZiBDT01QSUxFUihDTEFORyknCitFUlJPUjogJy0tc3RyaXBwZWQtLS9GYWtlLmZyYW1ld29y
ay9IZWFkZXJzL0ZhaWwuaDoxMCcgaW5jbHVkZWQgZm9yYmlkZGVuIG1hY3JvICdFTkFCTEUnID0+
ICcjaWYgRU5BQkxFKEZFQVRVUkUpJworRVJST1I6ICctLXN0cmlwcGVkLS0vRmFrZS5mcmFtZXdv
cmsvSGVhZGVycy9GYWlsLmg6MTInIGluY2x1ZGVkIGZvcmJpZGRlbiBtYWNybyAnSEFWRScgPT4g
JyNpZiBIQVZFKEZFQVRVUkUpJworRVJST1I6ICctLXN0cmlwcGVkLS0vRmFrZS5mcmFtZXdvcmsv
SGVhZGVycy9GYWlsLmg6MTQnIGluY2x1ZGVkIGZvcmJpZGRlbiBtYWNybyAnVVNFJyA9PiAnI2lm
IFVTRShGRUFUVVJFKScKK0VSUk9SOiAnLS1zdHJpcHBlZC0tL0Zha2UuZnJhbWV3b3JrL0hlYWRl
cnMvRmFpbC5oOjE2JyBpbmNsdWRlZCBmb3JiaWRkZW4gbWFjcm8gJ0NPTVBJTEVSJyA9PiAnI2lm
IENPTVBJTEVSX1NVUFBPUlRTKEZFQVRVUkUpJworRVJST1I6ICctLXN0cmlwcGVkLS0vRmFrZS5m
cmFtZXdvcmsvSGVhZGVycy9GYWlsLmg6MTgnIGluY2x1ZGVkIGZvcmJpZGRlbiBtYWNybyAnQ09N
UElMRVInID0+ICcjaWYgQ09NUElMRVJfUVVJUksoRkVBVFVSRSknCitFUlJPUjogJy0tc3RyaXBw
ZWQtLS9GYWtlLmZyYW1ld29yay9IZWFkZXJzL0ZhaWwuaDoyMycgaW5jbHVkZWQgZm9yYmlkZGVu
IG1hY3JvICdQTEFURk9STScgPT4gJyAgI2lmIFBMQVRGT1JNKFgpJworRVJST1I6ICctLXN0cmlw
cGVkLS0vRmFrZS5mcmFtZXdvcmsvSGVhZGVycy9GYWlsLmg6MjgnIGluY2x1ZGVkIGZvcmJpZGRl
biBtYWNybyAnUExBVEZPUk0nID0+ICcjaWYgZGVmaW5lZChpZ25vcmVkKSAmJiBQTEFURk9STShY
KScKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9jaGVjay1mb3ItaW5hcHBy
b3ByaWF0ZS1tYWNyb3MtaW4tZXh0ZXJuYWwtaGVhZGVycy10ZXN0cy9wYXNzLWV4cGVjdGVkLnR4
dCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1tYWNy
b3MtaW4tZXh0ZXJuYWwtaGVhZGVycy10ZXN0cy9wYXNzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHJ1YnkvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtbWFjcm9zLWluLWV4dGVybmFs
LWhlYWRlcnMtdGVzdHMvcGFzc2luZy1leHBlY3RlZC50eHQgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHJ1YnkvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtbWFjcm9zLWluLWV4dGVybmFsLWhlYWRlcnMt
dGVzdHMvcGFzc2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2NoZWNr
LWZvci1pbmFwcHJvcHJpYXRlLW1hY3Jvcy1pbi1leHRlcm5hbC1oZWFkZXJzLXRlc3RzL3Jlc291
cmNlcy9GYWtlLmZyYW1ld29yay9IZWFkZXJzL0ZhaWwuaCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cnVieS9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1tYWNyb3MtaW4tZXh0ZXJuYWwtaGVhZGVycy10
ZXN0cy9yZXNvdXJjZXMvRmFrZS5mcmFtZXdvcmsvSGVhZGVycy9GYWlsLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI0MjA5MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cnVieS9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1tYWNyb3MtaW4tZXh0
ZXJuYWwtaGVhZGVycy10ZXN0cy9yZXNvdXJjZXMvRmFrZS5mcmFtZXdvcmsvSGVhZGVycy9GYWls
LmgKQEAgLTAsMCArMSwyOSBAQAorLy8gQ29tbW9uIG1hY3JvcyB0aGF0IHdlIHdhbnQgdG8gY2F0
Y2guCisjaWYgUExBVEZPUk0oTUFDKQorI2VuZGlmCisjaWYgQ1BVKFg4NikKKyNlbmRpZgorI2lm
IE9TKERBUldJTikKKyNlbmRpZgorI2lmIENPTVBJTEVSKENMQU5HKQorI2VuZGlmCisjaWYgRU5B
QkxFKEZFQVRVUkUpCisjZW5kaWYKKyNpZiBIQVZFKEZFQVRVUkUpCisjZW5kaWYKKyNpZiBVU0Uo
RkVBVFVSRSkKKyNlbmRpZgorI2lmIENPTVBJTEVSX1NVUFBPUlRTKEZFQVRVUkUpCisjZW5kaWYK
KyNpZiBDT01QSUxFUl9RVUlSSyhGRUFUVVJFKQorI2VuZGlmCisKKy8vIEluZGVudGVkLgorI2lm
IDEKKyAgI2lmIFBMQVRGT1JNKFgpCisgICNlbmRpZgorI2VuZGlmCisKKy8vIENvbmRpdGlvbmFs
cywgd2UgZG9uJ3QgZXZhbHV0ZS4gV2UganVzdCBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB0
aGUgbWFjcm8uCisjaWYgZGVmaW5lZChpZ25vcmVkKSAmJiBQTEFURk9STShYKQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvY2hlY2stZm9yLWluYXBwcm9wcmlh
dGUtbWFjcm9zLWluLWV4dGVybmFsLWhlYWRlcnMtdGVzdHMvcmVzb3VyY2VzL0Zha2UuZnJhbWV3
b3JrL0hlYWRlcnMvUGFzcy5oIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2NoZWNrLWZvci1p
bmFwcHJvcHJpYXRlLW1hY3Jvcy1pbi1leHRlcm5hbC1oZWFkZXJzLXRlc3RzL3Jlc291cmNlcy9G
YWtlLmZyYW1ld29yay9IZWFkZXJzL1Bhc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4zYThhMTVkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRy
dWJ5L2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW1hY3Jvcy1pbi1leHRlcm5hbC1oZWFkZXJzLXRl
c3RzL3Jlc291cmNlcy9GYWtlLmZyYW1ld29yay9IZWFkZXJzL1Bhc3MuaApAQCAtMCwwICsxLDYg
QEAKKy8vIEEgbWFjcm8gd29yZCBpbiBhICNlcnJvciBzaG91bGQgbm90IG1hdHRlciwgdGhhdCBp
cyBqdXN0IGEgY29pbmNpZGVuY2UuCisjZXJyb3IgUExBVEZPUk0KKworLy8gVGhlcmUgYXJlIHJl
ZmVyZW5jZXMgdG8gYSBPUzIsIGJ1dCB0aGF0IGlzIG5vdCB0aGUgT1MoKSBtYWNyby4KKyNpZiBk
ZWZpbmVkKF9fT1MyX18pIHx8IGRlZmluZWQoT1MyKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHJ1YnkvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtbWFjcm9zLWluLWV4
dGVybmFsLWhlYWRlcnMtdGVzdHMvcnVuLXRlc3QucmIgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1
YnkvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtbWFjcm9zLWluLWV4dGVybmFsLWhlYWRlcnMtdGVz
dHMvcnVuLXRlc3QucmIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMmJlNjdh
MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9jaGVjay1mb3It
aW5hcHByb3ByaWF0ZS1tYWNyb3MtaW4tZXh0ZXJuYWwtaGVhZGVycy10ZXN0cy9ydW4tdGVzdC5y
YgpAQCAtMCwwICsxLDY2IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVGVzdGluZyBUb29scy9TY3JpcHRzL2NoZWNrLWZv
ci1tYWNyb3MtaW4tZXh0ZXJuYWwtaGVhZGVycworJHRlc3RfZGlyZWN0b3J5ID0gRmlsZS5kaXJu
YW1lKF9fRklMRV9fKQorJHRvb2wgPSBGaWxlLmV4cGFuZF9wYXRoKEZpbGUuam9pbigkdGVzdF9k
aXJlY3RvcnksICcuLicsICcuLicsICdjaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1tYWNyb3MtaW4t
ZXh0ZXJuYWwtaGVhZGVycycpKQorcHV0cyAiVGVzdGluZzogVG9vbHMvU2NyaXB0cy9jaGVjay1m
b3ItaW5hcHByb3ByaWF0ZS1tYWNyb3MtaW4tZXh0ZXJuYWwtaGVhZGVycyIKKworJHdhc19mYWls
dXJlID0gZmFsc2UKKworZGVmIHNhbml0aXplZF9vdXRwdXQob3V0cHV0KQorICBsaW5lcyA9IG91
dHB1dC5zcGxpdCgiXG4iKS5tYXAgeyB8bGluZXwgbGluZS5zdWIoL1wnKC4qKT9cLyguKik/XC5m
cmFtZXdvcmsvLCAiJy0tc3RyaXBwZWQtLS9cXDIuZnJhbWV3b3JrIikgfQorICBsaW5lcy5qb2lu
KCJcbiIpICsgKGxpbmVzLmVtcHR5PyA/ICIiIDogIlxuIikKK2VuZAorCitkZWYgcnVuX3Rlc3Qo
Y29uZmlnKQorICBFTlZbJ1RBUkdFVF9CVUlMRF9ESVInXSA9IEZpbGUuam9pbigkdGVzdF9kaXJl
Y3RvcnksICdyZXNvdXJjZXMnKQorICBFTlZbJ1BST0pFQ1RfTkFNRSddID0gY29uZmlnWzpmcmFt
ZXdvcmtdCisgIEVOVlsnU0hBTExPV19CVU5ETEUnXSA9IGNvbmZpZ1s6c2hhbGxvd10gPyAnWUVT
JyA6ICdOTycKKyAgb3V0cHV0ID0gc2FuaXRpemVkX291dHB1dCAleHsgI3skdG9vbH0gI3tjb25m
aWdbOnBhdGhzXS5qb2luKCcgJyl9IDI+JjEgfQorICBleHBlY3RlZF9vdXRwdXQgPSBGaWxlLnJl
YWQgRmlsZS5qb2luKCR0ZXN0X2RpcmVjdG9yeSwgY29uZmlnWzpleHBlY3RlZF0pCisgIHBhc3Mg
PSBvdXRwdXQgPT0gZXhwZWN0ZWRfb3V0cHV0CisgIHB1dHMgIiN7cGFzcyA/ICJQQVNTIiA6ICJG
QUlMIn0gLSAje2NvbmZpZ1s6bmFtZV19IgorICAkd2FzX2ZhaWx1cmUgPSB0cnVlIGlmICFwYXNz
CitlbmQKKworWworICB7CisgICAgOm5hbWUgPT4gJ3Rlc3RfZ29vZF9mYWtlX2RhdGEnLAorICAg
IDpmcmFtZXdvcmsgPT4gJ0Zha2UnLAorICAgIDpzaGFsbG93ID0+IHRydWUsCisgICAgOnBhdGhz
ID0+IFsnSGVhZGVycy9QYXNzLmgnXSwKKyAgICA6ZXhwZWN0ZWQgPT4gJ3Bhc3MtZXhwZWN0ZWQu
dHh0JworICB9LAorICB7CisgICAgOm5hbWUgPT4gJ3Rlc3RfYmFkX2Zha2VfZGF0YScsCisgICAg
OmZyYW1ld29yayA9PiAnRmFrZScsCisgICAgOnNoYWxsb3cgPT4gdHJ1ZSwKKyAgICA6cGF0aHMg
PT4gWydIZWFkZXJzL0ZhaWwuaCddLAorICAgIDpleHBlY3RlZCA9PiAnZmFrZS1kYXRhLWZhaWxp
bmctZXhwZWN0ZWQudHh0JworICB9CitdLmVhY2ggeyB8eHwgcnVuX3Rlc3QoeCkgfQorCitleGl0
IDEgaWYgJHdhc19mYWlsdXJlCg==
</data>
<flag name="review"
          id="194423"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="194424"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178049</attachid>
            <date>2012-12-06 11:43:59 -0800</date>
            <delta_ts>2012-12-10 13:38:07 -0800</delta_ts>
            <desc>[PATCH] Part 2: Run the Script as an Xcode Build Phase</desc>
            <filename>part-2.patch</filename>
            <type>text/plain</type>
            <size>9459</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDVkNTQ3NTIuLmIyOTZmNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEyLTA2ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gQWRkIEJ1aWxkIFBoYXNl
IHRvIENoZWNrIEhlYWRlcnMgZm9yIEluYXBwcm9wcmlhdGUgTWFjcm9zIChQbGF0Zm9ybS5oIG1h
Y3JvcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NDI3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBhIGJ1aWxkIHBoYXNlIHRvIGNoZWNrIHRoZSBwdWJsaWMgSmF2YVNjcmlwdENvcmUgaGVhZGVy
cyBmb3IKKyAgICAgICAgaW5hcHByb3ByaWF0ZSBtYWNyb3MuCisKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEyLTEyLTAzICBBbGV4aXMg
TWVuYXJkICA8YWxleGlzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW01hY10gRW5hYmxlIENTUzMg
YmFja2dyb3VuZC1wb3NpdGlvbiBvZmZzZXQgYnkgZGVmYXVsdC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNjE4NjcwMy4uZGEyOTJiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTMxNjQsNiArMzE2NCw3IEBACiAJCQkJOTMyRjVCRDIwODIyQTFDNzAwNzM2OTc1
IC8qIEZyYW1ld29ya3MgKi8sCiAJCQkJNUQyOUQ4QkUwRTk4NjBCNDAwQzNEMkQwIC8qIENoZWNr
IEZvciBXZWFrIFZUYWJsZXMgYW5kIEV4dGVybmFscyAqLywKIAkJCQkzNzEzRjAxNDE0MjkwNTI0
MDAzNjM4N0YgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFt
ZXMgKi8sCisJCQkJQTU1REVBQTQxNjcwM0RGNzAwM0RCODQxIC8qIENoZWNrIEZvciBJbmFwcHJv
cHJpYXRlIE1hY3JvcyBpbiBFeHRlcm5hbCBIZWFkZXJzICovLAogCQkJKTsKIAkJCWJ1aWxkUnVs
ZXMgPSAoCiAJCQkpOwpAQCAtMzM1Niw2ICszMzU3LDIxIEBACiAJCQlzaGVsbFBhdGggPSAvYmlu
L3NoOwogCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0v
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVD
VFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBc
IiR7U1JDUk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2
YVNjcmlwdENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFr
ZSAtLW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlXCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWAgfHwgZXhpdCAxXG5cbi91c3Iv
YmluL2VudiBydWJ5IEphdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiIEphdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICR7QlVJTFRfUFJPRFVDVFNfRElSfS9K
U0NMTEludE9mZnNldHNFeHRyYWN0b3IgTExJbnRBc3NlbWJseS5oIHx8IGV4aXQgMVxuIjsKIAkJ
fTsKKwkJQTU1REVBQTQxNjcwM0RGNzAwM0RCODQxIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRl
IE1hY3JvcyBpbiBFeHRlcm5hbCBIZWFkZXJzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3Jp
cHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVz
ID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikv
JChFWEVDVVRBQkxFX1BBVEgpIiwKKwkJCSk7CisJCQluYW1lID0gIkNoZWNrIEZvciBJbmFwcHJv
cHJpYXRlIE1hY3JvcyBpbiBFeHRlcm5hbCBIZWFkZXJzIjsKKwkJCW91dHB1dFBhdGhzID0gKAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hl
bGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImlmIFsgXCIke0FDVElPTn1cIiA9
IFwiaW5zdGFsbGhkcnNcIiBdOyB0aGVuXG4gICAgZXhpdCAwO1xuZmlcblxuaWYgWyAtZiAuLi8u
Li9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW1hY3Jvcy1pbi1leHRlcm5h
bC1oZWFkZXJzIF07IHRoZW5cbiAgICAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFw
cHJvcHJpYXRlLW1hY3Jvcy1pbi1leHRlcm5hbC1oZWFkZXJzIEhlYWRlcnMgfHwgZXhpdCAkP1xu
ZmkiOworCQl9OwogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAy
MjllOTZmLi42OWY3MGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTItMDYg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBB
ZGQgQnVpbGQgUGhhc2UgdG8gQ2hlY2sgSGVhZGVycyBmb3IgSW5hcHByb3ByaWF0ZSBNYWNyb3Mg
KFBsYXRmb3JtLmggbWFjcm9zKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA0Mjc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU2V0IHRoZSBleGVjdXRhYmxlIGFzIGFuIGlucHV0IHBhdGggb24gdGhlIGNo
ZWNrLSogYnVpbGQgcGhhc2VzLgorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTItMTEtMDkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBHdWFyZCBXZWJDb3JlIFBhZ2VWaXNpYmls
aXR5IFN5bWJvbCBFeHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBlZGM0NjI0Li5lMmQ2NGEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjE0OSw2ICsy
NjE0OSw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCSk7CiAJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIk
KFRBUkdFVF9CVUlMRF9ESVIpLyQoRVhFQ1VUQUJMRV9QQVRIKSIsCiAJCQkpOwogCQkJbmFtZSA9
ICJDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBGaWxlcyBJbiBGcmFtZXdvcmsiOwogCQkJb3V0cHV0
UGF0aHMgPSAoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY4ZTY1MzEuLjYwNGVhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTItMTItMDYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KKworICAgICAgICBbTWFjXSBBZGQgQnVpbGQgUGhhc2UgdG8gQ2hlY2sgSGVhZGVycyBmb3Ig
SW5hcHByb3ByaWF0ZSBNYWNyb3MgKFBsYXRmb3JtLmggbWFjcm9zKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0Mjc5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgYnVpbGQgcGhhc2UgdG8gY2hl
Y2sgdGhlIHB1YmxpYyBXZWJLaXQgaGVhZGVycyBmb3IKKyAgICAgICAgaW5hcHByb3ByaWF0ZSBt
YWNyb3MuIEFsc28gc2V0IHRoZSBleGVjdXRhYmxlIGFzIGFuIGlucHV0CisgICAgICAgIHBhdGgg
b24gdGhlIG90aGVyIGNoZWNrLSogYnVpbGQgcGhhc2VzLgorCisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTItMTEtMzAgIFNpbW9uIEhhdXNtYW5uICA8
c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPiwgUGllcnJlIFJvc3NpICA8cGllcnJlLnJvc3NpQGRp
Z2lhLmNvbT4KIAogICAgICAgICBbUXRdIFNlcGFyYXRlIFF0IFdlYktpdCBpbnRvIFF0IFdlYktp
dCBhbmQgUXQgV2ViS2l0IFdpZGdldHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAxOWNiZDQuLmVkNjY0YTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY1MCw2ICsxNjUw
LDcgQEAKIAkJCQk1RDBENTQyMTBFOTg2MzFEMDAyOUUyMjMgLyogQ2hlY2sgRm9yIFdlYWsgVlRh
YmxlcyBhbmQgRXh0ZXJuYWxzICovLAogCQkJCTM3MTNGMDE4MTQyOTA1QjcwMDM2Mzg3RiAvKiBD
aGVjayBGb3IgSW5hcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyAqLywKIAkJCQk1
RDg4RUU2QzExNDA3REU4MDBCQzNBQkMgLyogQ2hlY2sgRm9yIEZyYW1ld29yayBJbmNsdWRlIENv
bnNpc3RlbmN5ICovLAorCQkJCUE1NURFQUE1MTY3MDNGOUYwMDNEQjg0MSAvKiBDaGVjayBGb3Ig
SW5hcHByb3ByaWF0ZSBNYWNyb3MgaW4gRXh0ZXJuYWwgSGVhZGVycyAqLywKIAkJCQk1REU2RDE4
QzBGQ0YyMzFCMDAyREUyOEMgLyogU3ltbGluayBXZWJLaXRQbHVnaW5Ib3N0IGluIHRvIHBsYWNl
ICovLAogCQkJKTsKIAkJCWJ1aWxkUnVsZXMgPSAoCkBAIC0xNzk0LDYgKzE3OTUsNyBAQAogCQkJ
ZmlsZXMgPSAoCiAJCQkpOwogCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERf
RElSKS8kKEVYRUNVVEFCTEVfUEFUSCkiLAogCQkJKTsKIAkJCW5hbWUgPSAiQ2hlY2sgRm9yIEZy
YW1ld29yayBJbmNsdWRlIENvbnNpc3RlbmN5IjsKIAkJCW91dHB1dFBhdGhzID0gKApAQCAtMTgz
Myw2ICsxODM1LDIxIEBACiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwogCQkJc2hlbGxTY3JpcHQg
PSAibG4gLXNmIFZlcnNpb25zL0N1cnJlbnQvRnJhbWV3b3JrcyBcIiRUQVJHRVRfQlVJTERfRElS
L1dlYktpdC5mcmFtZXdvcmsvRnJhbWV3b3Jrc1wiXG4iOwogCQl9OworCQlBNTVERUFBNTE2NzAz
RjlGMDAzREI4NDEgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgTWFjcm9zIGluIEV4dGVybmFs
IEhlYWRlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5w
dXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKEVYRUNVVEFCTEVfUEFUSCki
LAorCQkJKTsKKwkJCW5hbWUgPSAiQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgTWFjcm9zIGluIEV4
dGVybmFsIEhlYWRlcnMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOwor
CQkJc2hlbGxTY3JpcHQgPSAiaWYgWyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsaGRyc1wiIF07
IHRoZW5cbiAgICBleGl0IDA7XG5maVxuXG5pZiBbIC1mIC4uLy4uL1Rvb2xzL1NjcmlwdHMvY2hl
Y2stZm9yLWluYXBwcm9wcmlhdGUtbWFjcm9zLWluLWV4dGVybmFsLWhlYWRlcnMgXTsgdGhlblxu
ICAgIC4uLy4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtbWFjcm9zLWlu
LWV4dGVybmFsLWhlYWRlcnMgSGVhZGVycyB8fCBleGl0ICQ/XG5maSI7CisJCX07CiAvKiBFbmQg
UEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNl
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDZhYjM2OGYuLjUwNzZiMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMi0wNiAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEFkZCBCdWlsZCBQaGFzZSB0byBD
aGVjayBIZWFkZXJzIGZvciBJbmFwcHJvcHJpYXRlIE1hY3JvcyAoUGxhdGZvcm0uaCBtYWNyb3Mp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQyNzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBi
dWlsZCBwaGFzZSB0byBjaGVjayB0aGUgcHVibGljIFdlYktpdDIgaGVhZGVycyBmb3IKKyAgICAg
ICAgaW5hcHByb3ByaWF0ZSBtYWNyb3MuIEFsc28gc2V0IHRoZSBleGVjdXRhYmxlIGFzIGFuIGlu
cHV0CisgICAgICAgIHBhdGggb24gdGhlIG90aGVyIGNoZWNrLSogYnVpbGQgcGhhc2VzLgorCisg
ICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEyLTEyLTAz
ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFBERlBs
dWdpbjogPGVtYmVkPiBhbmQgPG9iamVjdD4gUERGcyBhZmZlY3QgdGhlaXIgcGFyZW50IGZyYW1l
J3MgcGFnZSBzY2FsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGY1ODkzYmYuLjRhYTI0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUxMDYsNiArNTEwNiw3
IEBACiAJCQkJMzcxM0YwMjMxNDI5MDYzRDAwMzYzODdGIC8qIENoZWNrIEZvciBJbmFwcHJvcHJp
YXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICovLAogCQkJCTVERjQwOEM2MTMxREQ0OTcwMDEz
MDA3MSAvKiBDaGVjayBGb3IgRnJhbWV3b3JrIEluY2x1ZGUgQ29uc2lzdGVuY3kgKi8sCiAJCQkJ
NURGNDA4RDExMzFEREJFQzAwMTMwMDcxIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIEZpbGVz
IEluIEZyYW1ld29yayAqLywKKwkJCQlBNTVERUFBNjE2NzA0MDJFMDAzREI4NDEgLyogQ2hlY2sg
Rm9yIEluYXBwcm9wcmlhdGUgTWFjcm9zIGluIEV4dGVybmFsIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJYnVpbGRSdWxlcyA9ICgKIAkJCSk7CkBAIC01MzQxLDYgKzUzNDIsNyBAQAogCQkJZmlsZXMg
PSAoCiAJCQkpOwogCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8k
KEVYRUNVVEFCTEVfUEFUSCkiLAogCQkJKTsKIAkJCW5hbWUgPSAiQ2hlY2sgRm9yIEZyYW1ld29y
ayBJbmNsdWRlIENvbnNpc3RlbmN5IjsKIAkJCW91dHB1dFBhdGhzID0gKApAQCAtNTM1NSw2ICs1
MzU3LDcgQEAKIAkJCWZpbGVzID0gKAogCQkJKTsKIAkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQo
VEFSR0VUX0JVSUxEX0RJUikvJChFWEVDVVRBQkxFX1BBVEgpIiwKIAkJCSk7CiAJCQluYW1lID0g
IkNoZWNrIEZvciBJbmFwcHJvcHJpYXRlIEZpbGVzIEluIEZyYW1ld29yayI7CiAJCQlvdXRwdXRQ
YXRocyA9ICgKQEAgLTUzNjMsNiArNTM2NiwyMSBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsK
IAkJCXNoZWxsU2NyaXB0ID0gImlmIFsgXCIke0FDVElPTn1cIiA9IFwiaW5zdGFsbGhkcnNcIiBd
OyB0aGVuXG4gICAgZXhpdCAwO1xuZmlcblxuaWYgWyAtZiAuLi8uLi9Ub29scy9TY3JpcHRzL2No
ZWNrLWZvci1pbmFwcHJvcHJpYXRlLWZpbGVzLWluLWZyYW1ld29yayBdOyB0aGVuXG4gICAgLi4v
Li4vVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1maWxlcy1pbi1mcmFtZXdv
cmsgfHwgZXhpdCAkP1xuZmlcbiI7CiAJCX07CisJCUE1NURFQUE2MTY3MDQwMkUwMDNEQjg0MSAv
KiBDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBNYWNyb3MgaW4gRXh0ZXJuYWwgSGVhZGVycyAqLyA9
IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAor
CQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoRVhFQ1VUQUJMRV9QQVRIKSIsCisJCQkpOworCQkJ
bmFtZSA9ICJDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBNYWNyb3MgaW4gRXh0ZXJuYWwgSGVhZGVy
cyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlw
dCA9ICJpZiBbIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxoZHJzXCIgXTsgdGhlblxuICAgIGV4
aXQgMDtcbmZpXG5cbmlmIFsgLWYgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHBy
b3ByaWF0ZS1tYWNyb3MtaW4tZXh0ZXJuYWwtaGVhZGVycyBdOyB0aGVuXG4gICAgLi4vLi4vVG9v
bHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1tYWNyb3MtaW4tZXh0ZXJuYWwtaGVh
ZGVycyBIZWFkZXJzIHx8IGV4aXQgJD9cbmZpIjsKKwkJfTsKIAkJQkNGRkNBOEExNjBENkRFQTAw
M0RGMzE1IC8qIEFkZCBYUENTZXJ2aWNlcyBzeW1saW5rICovID0gewogCQkJaXNhID0gUEJYU2hl
bGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
</data>
<flag name="review"
          id="194426"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="194427"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>